学生信息管理系统C语言.docx
《学生信息管理系统C语言.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统C语言.docx(14页珍藏版)》请在冰点文库上搜索。
学生信息管理系统C语言
学生信息管理系统
摘要
由于学校规模进一步扩大,学生人数逐年上升,学生信息的管理也变得越来越复杂。为此,切实有效的把学生信息管理系统引入学校教务管理中,对于促进学校管理制度和提高学校教学质量有着显著意义。
本程序的设计可方便学校对学生的信息进行批量管理,在程序设计中为了方便编辑,我们进行了简单的设计,程序分为五大模块,可进行如下简单的操作:
输入学生信息(姓名,学号,年龄,性别),显示学生原始信息,显示学生简明信息(姓名,年龄),删除学生简明信息,退出系统;用户根据系统提示对学生进行信息管理,如果用户有更大的需求,我们可通过对程序继续添改满足要求。
本系统布局合理,结构分明,在程序设计中在程序设计中,每个模块由各成员分块完成,最后组成了一个完整的程序,并根据模块制定所需的功能,详细介绍了系统各个模块与功能的实现原理,最后总结开发阶段与测试阶段所遇到的问题与解决方法,本系统完成了基本所需功能,界面友好,操作简单。同时程序设计中借鉴了一些书本上的程序设计思想,在设计中也会有考虑不周的地方,但本次实训充分锻炼了我们动手,动脑,自学,查资料,独立实践的能力,很好的将本学期课本上的理论知识和实际有机的结合起来,,使我们的C语言编程系统有了很大的提高,经过一周的努力,本程序功能成功实现。
本程序应用起来比较方便快捷,适合初学者浏览使用。
关键字:
学生信息系统管理结构体数组结构体数组指针switch语句
第1章引言
1.1课程设计目的
本课程设计的目的就是通过一次集中的强化训练使学生能够及时巩固已学知识,加深对程序设计中理论和基本知识的理解,促进理论与实践的结合,从而进一步提高程序设计能力,同时对程序设计有如下要求:
●建立学生信息的结构体。
●学生信息的输入、删除、输出等。
●对学生信息按姓名删除。
●学生信息综合运用结构体,数组,指针文件等,对该设计题目进行设计与实现等。
●将程序保存到工程文件夹里并提交程序。
●程序的条理性与实用性决定了程序的好坏,程序的设计思维方法要求具有创新与实用性。
●培养同学团结合作能力与工作协调分工能力。
1.2操作系统功能概述
由于本学院的学生越来越多,信息量越来越大,于是需要有一个专门存放学生信息的系统,我们用自己学过的知识制作了这个学生信息管理系统,这个系统提供了一个管理的学生基本信息的基本功能,方便使用易于操作。
用户可以根据主菜单进行以下操作:
1)输入数据要求:
首先,打开主菜单界面。
根据提示,选择1.输入数据。
然后,点击回车键,进入输入界面,在该界面下输入一个或多个学生信息。
2)显示原始数据:
在输入数据后,输入2,敲击回车键,即可进入显示数据界面,在该界面下,会显示所有输入的数据的信息(学号、姓名、性别、年龄)。
3)显示简明数据:
输入数字3,敲击回车键,即可进入简明数据界面,再该界面下,会显示输入的所有学生姓名和年龄两项,可以简要了解和对比学生信息。
4)删除数据:
输入数据后可直接选择4,敲击回车进入删除界面,也可以在观看显示数据或简明数据后进入该界面对需要删除的学生信息进行删除。
删除操作:
输入需要删除的学生的姓名,敲击回车后即可。
5)退出操作界面:
在输入、查询、简明或主菜单界面下输入5,然后按任意键即可跳出。
在删除数据界面下,先输入0,敲击回车后退出删除界面,再输入5,然后按任意键跳出即可。
第2章学生信息系统的设计
2.1功能需求分析
根据学生信息管理的需要,建立一个“学生信息管理系统”,以方便对学生信息的各项管理操作。
开发目的如下:
1.对学生信息进行录入;2.显示学生原始信息(即显示学生信息的学号,姓名,性别,年龄);3.根据学生的姓名来删除该学生的信息(即只显示学生信息的姓名,年龄);4.删除并显示删除后的学生信息;5.退出系统。
2.2系统运行环境要求
2.2.1硬件要求
●处理器Intel奔腾166MX或更高
●内存32M以上
●硬盘空间1G以上
●显卡SVGA显示适配器
2.2.2软件要求
●操作系统windowsXP
●VisalC++6.0
第3章概要设计
3.1总体功能框架
如图3-1所示:
图3-1总体功能框架
3.2函数调用关系
如图3-2所示:
图3-2函数调用关系
3.3设计流程图
如图3-3所示:
图3-3设计流程图
第4章详细设计思路
4.1准备阶段:
(1)结构体数组:
structstudent1
{charnum[10];
charname[20];
charsex[3];
intage;
}stu1[10];
structstudent2
{charname[20];
intage;
}stu2[10];
(2)函数类型及功能:
voidmain(),voidreading(),voiddisplay(),voiddel(),voidshortdisplay();voidmain函数对后面的函数通过switch语句进行调用。
(3)结构指针:
函数display/shortdisplay函数的原型设计为:
voiddisplay(structstudent/student1*p);
(4)数组指针:
char*c[….],指针变量指向学生的学号,姓名,性别,年龄。
4.2主要功能的实现阶段
(1)界面循环显示的的实现的问题:
1)界面循环内容:
1.输入原始数据
2.显示原始数据
3.简明数据
4删除简明数据
5.Goodbye!
input1-5:
2)问题分析:
定义voidmain()函数,1定义为voidreading(),2定义为voiddisply(),3定义为voidshortdiplay(),4定义为voiddel(),intk,k为1-5之间的数,利用switch语句,实现main函数对其他函数的调用,do…while语句实现上述界面的循环出现。
3)步骤:
do{输出界面显示内容}→用户输入1-5之间的数字→switch语句进行调用→while语句对输入数字进行判断→不成立则显示输入错误。
(2)学生信息的输入问题(以十个学生为例):
1)输入形式:
请输入学生学号姓名性别年龄:
请输入学号:
请输入姓名:
请输入性别:
请输入年龄:
2)问题分析:
定义包含上述信息的结构体数组:
structstudent{charnum[10];Charname[10];charsex[3];intage;}stu[10];并用for语句输入每个结构体成员的地址。
(3)学生原始信息的显示问题(以二维数组的形式显示输入信息):
1)显示样本:
学号姓名性别年龄
01孔朋朋男18
02徐慧君女18
…………
2)问题分析:
定义一个指针数组char*4={"学号","姓名","性别","年龄"};输出此数组printf("\n%8d%8s%8s%8d\n",ch[0],ch[1],ch[2],ch[3]),并用for语句循环输出学生信息,可以利用结构体数组指针structstudent1*p指向输出的信息,
printf("%8d%8s%8s%8d\n",p->num,p->name,p->sex,p->age)。
(4)对学生简明信息删除的实现问题:
1)要求未被删除的信息仍以二维表的形式显示
2)问题分析:
利用gets函数输入学生的姓名,利用for语句和strcmp让输入的姓名1-10号同学逐个比较,if(strcmp(c,stu2[i].name)==0),则进行删除此学生的信息。
注意删除学生的信息即用后一位学生的信息覆盖前一位的学生的信息:
{strcpy(stu2[j].name,stu2[j+1].name);stu2[j].age=stu2[j+1].age;}
第5章结果与分析
5.1调式结果
1.输入学生信息
运行结果如图5-1:
图5-1输入学生信息
2.显示学生原始数据
运行结果如图5-2:
图5-2显示学生原始数据
3.显示学生简明数据
运行结果如图5-3:
:
图5-3显示简明数据
4.删除学生简明数据
运行结果如图5-4:
图5-4删除学生简明数据
5.退出程序
运行结果如图5-5:
图5-5退出程序
5.2错误分析
1)关系运算符的使用错误
例如:
Strcpy(stu2[i].name=stu1[i].name);
应该为strcpy(stu2[i].name,stu1[i].name);
因为是对字符串的复制,不能用赋值号“=”。
2)在编写程序的过程中有时对应该有花括号的复合语句,忘记加花括号,属于粗心所致。
而且有时会少些分号,或定义数组中的中括号导致整个程序不能运行。
这些都属于编写中的细节问题,查出问题的同时也提高了编者的编程能力。
3)switch语句的各分支中漏写break语句。
例如:
switch(k)
{case1:
reading();
case2:
display();
………};
上述语句是希望输入不同的k值,得到不同的函数调用,但无break语句结果将一次全部输出.Case只起标号的作用,而不起判断的作用,因此在执行第一个函数语句后接着执行第二三四五个函数调用。
4)在调式运行第四步删除学生信息的时候出现数据可以删除,但显示的时候行数却不少,而是用0代替所删除的数据,经过一番检查后是因为编写程序是在删除数据与现实函数中间的n忘记写成n-1的形式。
导致行数不能减少。
原来的程序:
char*ch[2]={"姓名","年龄"};
structstudent2*p;
printf("\n%10s%10s\n",ch[0],ch[1]);
for(p=stu2;pprintf("\n%10s%10d\n",p->name,p->age);
printf("\n");
修改后的程序:
char*ch[2]={"姓名","年龄"};
structstudent2*p;
printf("\n%10s%10s\n",ch[0],ch[1]);
n=n-1;
for(p=stu2;pprintf("\n%10s%10d\n",p->name,p->age);
printf("\n");
结束语:
经过短短几天的实训,我们不断的对程序的改进与调试,最终完成了预期的目的。
而这次计算机实训是初学C语言程序以来第一次编写这么长的程序,尽管这样的程序在C中是最简单的。
诚然,程序要求不太高,但中间涉及到很多细节问题,通过这次实训我们也明白了自己在学习中的不足:
平时要认真对待问题,要编程,多把课本知识与实际问题相结合。
这次实训我们分工合作,出现问题及时查找资料,互相交流成果,也得到了老师和同学的帮助,经过这个小小的编程设计我们对本学期的学习内容有了很全面的总结,同时对本课题产生了很高的兴趣。
这次的程序设计,虽然不是什么太大工程,但于我们而言收获还是很大的,几天的实训我们忙的不可开交,程序中有我们每个人的汗水,也承载了我们的期望,而程序的最终实现也是对我们努力的肯定。
我们学到的不仅仅是知识,也懂得了合作的重要,辛苦的同时也得到了快乐。
最后希望此程序能够给读者带来帮助,这也是我们希望看到的。
参考文献:
[1]《C程序设计》(第三版)谭浩强编著北京:
清华大学出版社2005年7月
[2]《VisualC++程序设计》刘维富编著上海:
华东理工大学出版社2005年2月
[3]《C++程序设计》谭浩强编著北京:
清华大学出版社2004年5月
[4]《C语言程序设计教程》谭浩强,唐永炎编著北京:
高等教育出版社1992年6月
[5]《C程序设计题解与上机指导》谭浩强编著北京:
清华大学出版社1999年7月