学生宿舍管理系统 c语言.docx
《学生宿舍管理系统 c语言.docx》由会员分享,可在线阅读,更多相关《学生宿舍管理系统 c语言.docx(13页珍藏版)》请在冰豆网上搜索。
学生宿舍管理系统c语言
学号
2015-2016学年第二学期
1508010106
《高级语言程序设计》
课程设计报告
题目:
学生宿舍管理系统
专业:
计算机科学与技术
班级:
15计科
(1)班
姓名:
高梅锦
指导教师:
陈广宏
成绩:
计算机学院
2016年4月25日
1设计内容及要求1
1.1课程设计内容1
1.2课程设计要求1
2概要设计2
2.1设计思路2
2.2程序基本结构框架图3
3设计过程或程序代码4
3.1主要程序代码及解释4
4设计结果与分析11
4.1程序运行结果11
5参考文献16
6总结16
1课程设计内容及要求
1.1课程设计内容
通过本次课程设计,强化上级动手能力,在理论和实践的基础上进一步巩固《C语言程序设计》课程的学习内容。
掌握软件设计的基本方法。
?
熟悉C语言的基本内容从而掌握C语言的基本知识以及了解C语言的基本编写及运行。
了解程序的分模块编写并对程序的每个模块进行详细的设计并且能理解一般C语言编写的程序。
掌握书写程序设计说明文档的能力。
?
熟悉C程序设计的开发环境及C程序的调试过程。
1.2设计要求
分析课程设计题目的要求。
写出详细设计说明。
编写程序代码,调试程序使其能正确运行。
设计完成的软件要便于操作和使用。
设计完成后提交课程设计报告。
2设计概要
2.1设计思路
我设计的是“学生宿舍管理系统”,主要是针对住宿学生个人信息的管理,适用对象主要是学校,以方便学校对住宿学生的管理。
包括学生的姓名、学号、等等。
在编写过程中主要运用C语言的基本知识有:
数据类型(整形、实型、字符型、数组、结构等);运算类型(算数运算、逻辑运算、自增自减运算、赋值运算等等);程序结构(顺序结构、分支结构、循环结构);大程序的功能分解方法(即函数的调用与使用)等。
2.2程序基本结构框架图
学生宿舍管理程序基本结构框架图
3设计过程或程序代码
3.1主要程序代码及解释
#include
#include
#include
intINDEX[32];
structSTUDENT
{
intid,age,classroom,bednum,f;
charname[21];
}students[32];
voidpage_title(char*menu_item)
{
system("cls");
printf("***********学生管理系统*********\n\n%s\n\n",menu_item);
}
voidreturn_confirm(void)
{
printf("\n**********按任意键返回*********\n");
getch();
}
voidstudent_new(void)
{
intn;
page_title("录入学生宿舍基本信息");
for(n=0;n<32;n++)
if(students[n].id==0)
break;
printf("学号:
");
scanf("%d",&students[n].id);
printf("姓名:
");
scanf("%s",&students[n].name);
printf("年龄:
");
scanf("%d",&students[n].age);
printf("寝室号:
");
scanf("%d",&students[n].classroom);
return_confirm();
}
intsearch_id(void)
{
intn,i;
printf("请输入学生学号:
");
scanf("%d",&i);
for(n=0;n<32;n++)
{
if(students[n].id==i&&students[n].id!
=0)
{
printf("学号:
%d\n",students[n].id);
printf("姓名:
%s\n",students[n].name);
printf("年龄:
%d\n",students[n].age);
printf("寝室号:
%d\n",students[n].classroom);
returnn;
}
}
printf("\n输入错误或学号不存在.\n");
return-1;
}
voidstudent_del(void)
{
intn;
page_title("注销学生宿舍基本信息");
if((n=search_id())!
=-1)students[n].id=0;
printf("\n!
该学生宿舍信息已注销.\n");
return_confirm();
}
voidstudent_edit(void)
{
intn;
page_title("编辑学生宿舍基本信息");
if((n=search_id())!
=-1)
{
printf("\n请重新输入新信息:
\n学号:
");
scanf("%d",&students[n].id);
printf("姓名:
");
scanf("%s",&students[n].name);
printf("年龄:
");
scanf("%d",&students[n].age);
printf("寝室号:
");
scanf("%d",&students[n].classroom);
printf("床位号:
");
scanf("&d",&students[n].bednum);
}
return_confirm();
}
voidscore_input(void)
{
ints,n,t;
page_title("录入学生宿舍详细信息");
printf("\n请用数字键选择输入信息项目>>>>\n
(1)身份证号
(2)寝室号(3)床位号\n");
scanf("%d",&s);
for(n=0;n<32;n++)
{
if(students[n].id!
=0)
{
printf("学号:
%d姓名:
%s宿舍详细信息:
",students[n].id,students[n].name);
scanf("%d",&t);
switch(s)
{
case1:
students[n].f=t;break;
case2:
students[n].classroom=t;break;
case3:
students[n].bednum=t;break;
}
}
}
return_confirm();
}
voidscore_edit(void)
{
intn;
page_title("修改学生宿舍详细信息>>>>>");
if((n=search_id())!
=-1)
{
printf("学号:
%d寝室号:
%d床位号:
%d\n",students[n].id,students[n].classroom,students[n].bednum);
printf("\n请重新输入成绩:
\n\n身份证号:
");
scanf("%d",&students[n].f);
printf("寝室号:
");
scanf("%s",&students[n].classroom);
printf("床位号:
");
scanf("%d",&students[n].bednum);
}
return_confirm();
}
voidsort_it(charnn)
{
intn,m,p,x,t[32];
for(n=0;n<32;n++)
{
switch(nn)
{
case'1':
t[n]=students[n].id;break;
case'2':
t[n]=students[n].f;break;
case'3':
t[n]=students[n].classroom;break;
case'4':
t[n]=students[n].bednum;break;
case'5':
t[n]=students[n].f+students[n].classroom+students[n].bednum;break;
}
}
for(n=0;n<32;n++)
{
x=0;
p=-1;
for(m=0;m<32;m++)
{
if(t[m]>x)
{
x=t[m];
p=m;
}
}
t[p]=-1;
INDEX[n]=p;
}
}
voidbrowser(void)
{
intn,x;
chark;
sort_it('1');
while
(1)
{
page_title("浏览学生宿舍信息>>>>>\n");
printf("按数字键选择排序方式或按(0)返回\n\n");
printf("学号*************姓名*******年龄****身份证号*****寝室号***床位号\t\n");
for(n=0;n<32;n++)
{
if(INDEX[n]!
=-1)
{
x=INDEX[n];
printf("%d\t%s\t",students[x].id,students[x].name);
printf("%d\t%d\t",students[x].age,students[x].f);
printf("%d\t%d\t",students[x].classroom,students[x].bednum);
printf("%d\n",students[x].f+students[x].classroom+students[x].bednum);
}
}
k=getch();
if(k<'6'&&k>'0')sort_it(k);
elseif(k=='0')break;
elsecontinue;
}
}
voidmain(void)
{charh;
menu:
page_title("************操作选单**************");
printf("请用数字键选择操作:
\n\n");
printf("***************************************\n");
printf("\t1、录入学生宿舍基本信息\n\t2、修改学生宿舍基本信息\n");
printf("\t3、注销学生宿舍基本信息\n\t4、录入学生宿舍详细信息\n\t5、修改学生宿舍信息\n");
printf("\t6、浏览学生宿舍信息\n\t0、退出学生宿舍系统\n");
printf("***************************************\n");
printf("请输入你要进行操作的数字(0-9):
%c");
scanf("%c",&h);
switch(h)
{
case'1':
student_new();break;
case'2':
student_edit();break;
case'3':
student_del();break;
case'4':
score_input();break;
case'5':
score_edit();break;
case'6':
browser();break;
case'0':
exit(0);}
gotomenu;
}
4设计结果与分析
4.1程序运行结果
程序主页
(图1)
录入学生宿舍基本信息测试结果
(图2)
修改学生宿舍基本信息测试结果
(图3)
修改后浏览效果
(图4)
注销学生宿舍基本信息
注销失败
(图5)
成功注销
(图6)
录入学生宿舍详细
(图7)
退出程序
(图8)
5参考文献
1.严蔚敏,吴伟民.《数据结构题集(C语言版)》.清华大学出版社.
2.谭浩强.《c语言程序设计》.清华大学出版社.
6总结
每个程序可解决一个或一类问题,要想编好程序,要知道每个特定的语句段所针对的问题,由于有的问题比较复杂,要分成不同的函数,再用main函数或其它函数组合起来,形成一个完整的程序。
简单游明白的程序在检查的时候会省去额外的时间,但是,编出程序之前必须看很多的程序,所以,我们应该多看程序。
在实验过程中,由于输入的代码有误,经常出错,有可能是标点符号的问题,有可能是单词拼写错误。
对于长且复杂的程序段,最好模块化处理,一般都分为好几个函数,提高效率,如果都写在一起,一旦出错,很难找出来,程序出错了,我们应该找到合适的方法调试,可以分别在每个函数中写上输出语句,如果该语句执行了且执行结果和预想的结果一致,则说明该函数及函数以上部分没问题,则可以查找下面的语句是否有问题,一个字母不同也可以使结果不同,所以敲代码的时候,要做到尽量的细心,只有这样,才能使后面的调试变得不复杂。