学生信息管理系统15387_第1页
学生信息管理系统15387_第2页
学生信息管理系统15387_第3页
学生信息管理系统15387_第4页
学生信息管理系统15387_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一。设计目的:课程设计内容:1。问题描述学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,Email 等.设计以学生信息管理系统,使之能提供以下功能:(1).系统以菜单方式工作;(2)。学生信息录入功能(学生信息用文件保存)-输入;(3).学生信息浏览功能-输出;(4).查询,排序功能算法:a。按学号查询;b。按姓名查询。(5).学生信息的删除与修改.2。功能要求A界面比较美观;B有一定的容错能力。3.函数功能描述输入部分通过键盘输入多位学生的学生信息。学生的信息包含有:学生姓名、性别、学号、出生年月、年龄等.此次做的学生管理系统是利用链表而完成的程序,故第一部分想要实现建立链表、输

2、出部分输出当前已存储的学生信息、更新部分删除 删除用户指定的学生信息 ,这部分的功能是输入学生的学号,找到其在链表中存储的结点处,并将这整个结点删除,再把该结点的前驱结点和后驱节点连接,来实现这个学生信息的删除。修改 修改用户指定的学生信息 ,这部分是利用输入学生的学号,来找到存储该学生信息的结点,通过该结点的链域来修改其中的值域,来实现对学生信息的修改.、查询部分按名字查询 输出用户查询的学生信息,这部分是利用输入学生的姓名,来找到存储该学生信息的结点,输出该结点的值域中的内容,来实现对学生信息的查询功能。按学号查询 输出用户查询的学生信息,同上,只是查询条件为学号 .4。要求与限制条件。各

3、模块间通过菜单切换和调用.主函数通过调用菜单函数实现对各功能模块的调用,各功能模块间根据需要可相互调用。.程序能够保证各模块功能的独立和数据共享.不使用全局变量则能保证函数之间的独立性,利用形参与实参之间的数值传递来实现数据共享.二。总体设计:录入数据break选择2输出界面选择操作选择9读取文件执行freeall()退出系统选择1帮助说明Break结束选择3增加数据Break选择4选择5修改数据增加数据BreakBreak选择6删除数据Break选择7选择8显示数据保存数据BreakBreak输出:无效选项Break结束主界面选择录入学生信息输入学生信息正确 错误 正确 不录入学生信息录入学

4、生信息结束查找利用函数找到相关结点是否存在该学生信息输出该结点的值域的内容查询完毕该学生不存在修改调用函数查找到相关结点地址修改相关结点的值域是否存在该学生信息修改完毕三。详细设计:输入模块void insert() /插入函数*/int i=n,j,flag;printf(”请输入待增加的学生数:n");scanf(”d”,m);do flag=1;while(flag)flag=0;printf(”请输入第 %d 个学生的学号:n”,i+1);scanf(”%s",stui.code);for(j=0;j<i;j+)if(strcmp(stui。code,stuj

5、。code)=0)printf("已有该学号,请检查后重新录入!n”);flag=1;break; /如有重复立即退出该层循环,提高判断速度/printf("请输入第 d 个学生的姓名:n",i+1);scanf("s",);printf("请输入第 d 个学生的年龄:n”,i+1);scanf(”d”,stui.age);printf(”请输入第 %d 个学生的性别:n”,i+1);scanf(”%s”,stui.sex);printf("请输入第 %d 个学生的出生年月:(格式:年。月)n”,i+1);

6、scanf(”s",stui.time);printf("请输入第 d 个学生的地址:n”,i+1);scanf("s",stui.add);printf(”请输入第 d 个学生的电话:n”,i+1);scanf("s”,stui。tel);printf(”请输入第 %d 个学生的Email:n”,i+1);scanf(”%s”,stui。mail);if(flag=0) i=i;i+;while(in+m);n+=m;printf("录入完毕!nn”);sort();查找模块void seek() /查找/int i,item,fl

7、ag;char s121; /* 以姓名和学号最长长度+1为准 */printf(”-n”);printf("-1。按学号查询-n");printf(”-2.按姓名查询-n”);printf(”-3.退出本菜单n”);printf(”-n”);while(1)printf(”请选择子菜单编号:");scanf(”d”,item);flag=0;switch(item)case 1:printf(”请输入要查询的学生的学号:n");scanf(”%s”,s1);for(i=0;in;i+)if(strcmp(stui。code,s1)=0)flag=1;p

8、rintf(”学生学号学生姓名年龄性别出生年月地址电话 Emailn”);printf(”-n”);printf("6s 7s 6d 5s %9s 8s 10s 14sn",stui。code,,stui。age,stui。sex,stui。time,stui。add,stui。tel,stui。mail);if(flag=0)printf(”该学号不存在!n”); break;case 2:printf(”请输入要查询的学生的姓名:n");scanf(”s",s1);for(i=0;in;i+)if(strcmp(,

9、s1)=0)flag=1;printf("学生学号学生姓名年龄性别出生年月地址电话 Emailn");printf("-n”);printf(”6s %7s 6d %5s %9s %8s 10s %14sn",stui。code,,stui.age,stui.sex,stui.time,stui。add,stui。tel,stui。mail);if(flag=0)printf(”该姓名不存在!n"); break;case 3:return;default:printf(”请在13之间选择n");修改模块void m

10、odify() /修改信息*/int i,item,num;char sex13,s1LEN+1,s2LEN+1; /* 以姓名和学号最长长度+1为准 /printf(”请输入要要修改的学生的学号:n”);scanf("%s”,s1);for(i=0;in;i+)if(strcmp(stui.code,s1)=0) /比较字符串是否相等*/num=i;printf("-n”);printf("1。修改姓名n”);printf(”2.修改年龄n");printf("3。修改性别n");printf(”4.修改出生年月n”);printf

11、(”5.修改地址n");printf("6。修改电话号码n");printf(”7。修改E-mail地址n”);printf("8。退出本菜单n”);printf(”-n");while(1)printf("请选择子菜单编号:”);scanf("d”,item);switch(item)case 1:printf("请输入新的姓名:n”);scanf(”%s”,s2);strcpy(,s2); break;case 2:printf(”请输入新的年龄:n”);scanf(”%d",s

12、tunum.age);break;case 3:printf(”请输入新的性别:n”);scanf("s”,sex1);strcpy(stunum.sex,sex1); break;case 4:printf(”请输入新的出生年月:n");scanf(”%s",s2);strcpy(stunum。time,s2); break;case 5:printf(”请输入新的地址:n”);scanf(”s”,s2);strcpy(stunum。add,s2); break;case 6:printf(”请输入新的电话号码:n”);scanf("%s",

13、s2);strcpy(stunum。tel,s2); break;case 7:printf(”请输入新的Email地址:n”);scanf("s”,s2);strcpy(stunum。mail,s2);break;case 8:return;default:printf(”请在18之间选择n”);四。调试:A先编译程序B再连接程序 生成目标C运行程序1调试中的主要问题调试中主要出现的问题:经常遇到程序执行到某部分就不运行,而编译和链接都成功,说明程序设计上有些问题,语法等并未出错,这时就要去再行考虑设计的程序哪部分考虑不周全。因为这次使用链表来设计程序,就牵扯到形参和实参的问题。曾

14、经因为考虑不周全,在自定义函数前的基类出错,导致相关的值未改变,这里就要考虑好形参和实参的问题。刚开始没有那个初始化函数,程序运行后没有输入任何数据就试得去执行显示功能,结果显示的是一些乱码!加入初始化函数后,这种现象也随之消失。在没有输入任何信息的情况下,不能执行查询、修改、删除、统计、排序功能 . 有时候,忘记定义就直接调用,使得出错。我这时候才真正体会到了一致性的重要。检查程序很多遍但却始终不知道输入的数据有错,很令人头疼。2程序的不足和改进之处因为用链表来设计一个程序,较复杂,最后没来得及,设计相关的文件存储来实现将数据保存,以致每次运行程序都要重新输入新的数据改进之处:可以再考虑编写

15、一个函数,这个函数的功能是将数据写入文件中并保存。五。测试结果:程序运行:主界面:输入信息显示查询修改删除六。结束语:回想学习C语言 的过程中,既有快乐又有烦恼。从领到书的那一刻,我就很郁闷,C 语言到底事学什么的,有什么用。刚开始上课时,还在迷茫这门课程是用来做什么的.不过,这些感受都是在对这门课程不了解的情况下产生的。后来慢慢的接触多了,听老师讲的多了,了解多了,渐渐的产生了兴趣。尤其是学到语句和函数时,上机操作程序,经过编译,调试和运行后,出现界面,当时觉得很好奇,想真正的学好这门课程。通过一个学期的学习,我掌握了基本知识。期末,被通知要进行课程设计.当时有点懵,感觉学的东西很少,很零散

16、,不知该怎么练到一起,就要课程设计,是不是太难为我们了。通过两周的自学,第二周结束的时候,我感觉自己收获挺大的,从一开始的迷茫,不知道从何下手到把程序中的几个模块编写出来,心里挺开心的.但是,我们又不得不再次陷入困境。在整个程序的编写过程中。最难的就是修改和删除这两个模块,这也是我们要解决的重点问题.开始编写修改和删除时,很头疼,去向其他人寻求帮助,在别人的帮助和提示下,我编完了修改程序,但编译时老出错,修改后的内容将文本内的信息全部覆盖了。困难之时,我们组的其他人,帮助了我,完成了修改和删除.这样的话,整个程序基本上全部完成了,就剩下完善工作了。我们组写了两个程序,最后,两个程序相互组合,互

17、补,大功告成虽然设计时完成了,但是我觉得其中还是由一些不足之处:1。 警告句。程序中缺少一些警告句,例如:“是否真的删除(y/n)?"。2。 重名的情况.由于考虑的不周全,没有设计遇到重名的情况该怎么处理。整个程序完成了,还有很多不完善的地方,希望自己以后办事的时候要认真,仔细,考虑周全。短短的几周课程设计结束了,但是这段时间里,我又学到了更多C 知识,如:对象数组,string类,文件流等,同时我也被提醒以后办事的时候要认真,仔细,考虑周全。,也看到了团队精神和互帮互助的重要性.这一点会让我终生受益.通过这次的课程设计,我觉得自己肚子里的墨水多了,收获也挺大的,这几周过的挺充实!

18、七。源程序清单:#includestdio。h/I/O函数/#includestdlib.h>/其它说明/includestring.h>/字符串函数/define BUFLEN 100 / 缓冲区最大字符数 /#define LEN 15 / 学号和姓名最大字符数,实际请更改 /define N 100 / 最大学生人数,实际请更改/struct record /*结构体*/char codeLEN+1; /* 学号 /char nameLEN+1; / 姓名 /int age; / 年龄 /char sex3; /* 性别 /char timeLEN+1; / 出生年月 */c

19、har add30; / 家庭地址 /char telLEN+1; /* 电话号码 /char mail30; / 电子邮件地址 /stuN;int k=1,n,m; /* 定义全局变量 */void readfile();/ 声明函数 */void seek();void modify();void insert();voiddel();void display();void save();void menu(); int main()while(k)menu();system("pause");return 0;void help() / 帮助*/printf(”n1。

20、欢迎使用系统帮助!n”);printf(”n2。进入系统后,先刷新学生信息,再查询;n");printf("n3。按照菜单提示键入数字代号;n”);printf(”n4。增加学生信息后,切记保存按8;n");printf(”n5。谢谢您的使用!n”);void readfile()/ 建立信息 /char*p=”student。txt”;FILE fp;int i=0;if (fp=fopen(”student.txt”,"r”)=NULL)printf("Open file %s error! Strike any key to exit!”

21、,p);system(”pause");exit(0);while(fscanf(fp,”s %sd%s s s %s s",stui。code,,stui。age,stui.sex,stui.time,stui.add,stui。tel,stui。mail)=8)i+;i=i;fclose(fp);n=i;printf(”录入完毕!n");void seek() /查找*/int i,item,flag;char s121; / 以姓名和学号最长长度+1为准 */printf(”-n");printf(”-1。按学号查询-n"

22、;);printf(”2。按姓名查询-n”);printf("-3。退出本菜单-n”);printf(”-n”);while(1)printf(”请选择子菜单编号:");scanf(”d",&item);flag=0;switch(item)case 1:printf(”请输入要查询的学生的学号:n");scanf(”s",s1);for(i=0;i<n;i+)if(strcmp(stui。code,s1)=0)flag=1;printf(”学生学号学生姓名年龄性别出生年月地址电话 Emailn”);printf(”-n"

23、;);printf(”6s 7s %6d 5s %9s %8s 10s 14sn",stui.code,,stui.age,stui.sex,stui。time,stui.add,stui.tel,stui。mail);if(flag=0)printf("该学号不存在!n”); break;case 2:printf("请输入要查询的学生的姓名:n”);scanf(”s”,s1);for(i=0;i<n;i+)if(strcmp(,s1)=0)flag=1;printf(”学生学号学生姓名年龄性别出生年月地址电话 Emai

24、ln”);printf("-n”);printf(”6s 7s 6d %5s %9s 8s 10s 14sn”,stui。code,,stui。age,stui。sex,stui。time,stui。add,stui。tel,stui。mail);if(flag=0)printf(”该姓名不存在!n”); break;case 3:return;default:printf("请在13之间选择n”);void modify() /修改信息*/int i,item,num;char sex13,s1LEN+1,s2LEN+1; / 以姓名和学号最长长度+1为

25、准 /printf(”请输入要要修改的学生的学号:n”);scanf(”s”,s1);for(i=0;in;i+)if(strcmp(stui.code,s1)=0) /*比较字符串是否相等*/num=i;printf("-n");printf("1.修改姓名n");printf(”2。修改年龄n");printf(”3。修改性别n”);printf(”4。修改出生年月n”);printf(”5。修改地址n”);printf(”6.修改电话号码n");printf("7。修改Email地址n");printf(&q

26、uot;8。退出本菜单n”);printf(”-n");while(1)printf(”请选择子菜单编号:”);scanf(”d”,item);switch(item)case 1:printf(”请输入新的姓名:n”);scanf(”%s”,s2);strcpy(,s2); break;case 2:printf(”请输入新的年龄:n”);scanf(”d",stunum。age);break;case 3:printf(”请输入新的性别:n");scanf("%s”,sex1);strcpy(stunum。sex,sex1);

27、break;case 4:printf("请输入新的出生年月:n”);scanf(”s”,s2);strcpy(stunum.time,s2); break;case 5:printf("请输入新的地址:n");scanf(”s”,s2);strcpy(stunum.add,s2); break;case 6:printf(”请输入新的电话号码:n");scanf(”s”,s2);strcpy(stunum.tel,s2); break;case 7:printf(”请输入新的Email地址:n”);scanf(”s”,s2);strcpy(stunum

28、。mail,s2); break;case 8:return;default:printf("请在18之间选择n”);void sort()/按学号排序/int i,j,p,*q,s;char temp10;for(i=0;in1;i+)for(j=n-1;ji;j)if(strcmp(stuj1.code,stuj。code)0)strcpy(temp,stuj-1.code);strcpy(stuj1。code,stuj.code);strcpy(stuj。code,temp);strcpy(temp,);strcpy(,

29、);strcpy(,temp);strcpy(temp,stuj-1。sex);strcpy(stuj-1。sex,stuj。sex);strcpy(stuj。sex,temp);strcpy(temp,stuj-1.time);strcpy(stuj-1.time,stuj.time);strcpy(stuj。time,temp);strcpy(temp,stuj1.add);strcpy(stuj-1。add,stuj。add);strcpy(stuj.add,temp);strcpy(temp,stuj-1.tel);strcpy(stuj1。tel,stuj.tel)

30、;strcpy(stuj.tel,temp);strcpy(temp,stuj-1。mail);strcpy(stuj-1。mail,stuj。mail);strcpy(stuj。mail,temp); p=&stuj-1.age; q=stuj。age; s=q;q=*p;*p=s;void insert() /*插入函数/int i=n,j,flag;printf("请输入待增加的学生数:n”);scanf("d”,&m);do flag=1;while(flag)flag=0;printf(”请输入第 d 个学生的学号:n”,i+1);scanf(”s

31、”,stui.code);for(j=0;ji;j+)if(strcmp(stui。code,stuj。code)=0)printf(”已有该学号,请检查后重新录入!n");flag=1;break; /如有重复立即退出该层循环,提高判断速度/printf("请输入第 d 个学生的姓名:n”,i+1);scanf(”s",);printf(”请输入第 %d 个学生的年龄:n”,i+1);scanf(”%d",&stui。age);printf(”请输入第 d 个学生的性别:n”,i+1);scanf(”%s”,stui。sex)

32、;printf(”请输入第 d 个学生的出生年月:(格式:年.月)n",i+1);scanf("s”,stui。time);printf(”请输入第 %d 个学生的地址:n”,i+1);scanf(”s",stui。add);printf(”请输入第 d 个学生的电话:n",i+1);scanf(”s”,stui。tel);printf(”请输入第 d 个学生的E-mail:n”,i+1);scanf("s”,stui。mail);if(flag=0) i=i;i+;while(in+m);n+=m;printf(”录入完毕!nn”);sort

33、();void del() / 删除信息 /int i,j,flag=0;char s1LEN+1;printf(”请输入要删除学生的学号:n”);scanf(”%s",s1);for(i=0;in;i+)if(strcmp(stui.code,s1)=0) flag=1;for(j=i;jn1;j+)stuj=stuj+1;if(flag=0)printf("该学号不存在!n”);if(flag=1)printf("删除成功,显示结果请选择菜单6n");n;void display() /* 显示信息 */int i;printf("所有学生的信息为:n”);printf(”学生学号学生姓名年龄性别出生年月地址电话 Emailn");printf(”-n");for(i=0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论