C语言课程设计学生成绩管理系统1.doc

上传人:仙人指路1688 文档编号:2384810 上传时间:2023-02-17 格式:DOC 页数:22 大小:273KB
返回 下载 相关 举报
C语言课程设计学生成绩管理系统1.doc_第1页
第1页 / 共22页
C语言课程设计学生成绩管理系统1.doc_第2页
第2页 / 共22页
C语言课程设计学生成绩管理系统1.doc_第3页
第3页 / 共22页
C语言课程设计学生成绩管理系统1.doc_第4页
第4页 / 共22页
C语言课程设计学生成绩管理系统1.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《C语言课程设计学生成绩管理系统1.doc》由会员分享,可在线阅读,更多相关《C语言课程设计学生成绩管理系统1.doc(22页珍藏版)》请在三一办公上搜索。

1、郑州轻工业学院实 训 报 告实训名称: 学生成绩管理系统 姓 名: 院 系: 国际教育学院 专业班级: 电子商务10-3 学 号: 指导教师: 成 绩: 时间: 2011 年 6 月 27 日至 2011 年 7 月 1 日郑 州 轻 工 业 学 院课 程 设 计 任 务 书题目 学生成绩管理系统 专业班级 电子商务 10-3 学号 541012030317 姓名 主要内容、基本要求、主要参考资料等:主要内容和基本要求:强化C语言中数组及外部文件的内容,独立设计学生成绩管理系统,并编程实现以下功能:1、整个系统均用C语言实现;2、利用二维数组来实现学生成绩管理系统的数据结构设计;3、系统具有输

2、入、显示、查询、删除、排序、保存、读取等基本功能;4、系统的各个功能模块都用函数的形式来实现;5、要求能将学生成绩信息保存在文件中。6、要求能将学生成绩信息从文件中读取出来并进行相关处理。工作计划:1. 布置设计题目,讲解要求和说明 2011.6.27 2. 确定设计任务,确定具体的功能,熟悉相关知识2011.6.273. 按功能需求确定程序的主要模块 2011.6.27 4. 编程实现程序的功能 2011.6.27 2011.6.285. 调试并完善程序2011.6.28 2011.6.296. 撰写课程设计报告2011.6.28 - 2011.6.307. 提交课程设计报告并验收软件 20

3、11.7.1参考资料:1.谭浩强,C程序设计(第3版),清华大学出版社, 2005.23.甘勇,C语言程序设计,中国水利水电出版社,2011.22.谭明金,俞海英,C语言程序设计实例精粹,电子工业出版社,2007.1完成期限:2011年7月1日星期五 指导教师签名: 课程负责人签名: 年 月 日目录目录一、 分析系统功能,绘制系统功能结构框架图41.1 分析系统功能41.2 结构框架图2二、 程序代码以及界面形式22.1 程序代码如下132.2 界面形式7三、 使用说明7四、 日志五、 心得体会19六、 参考文献20七、 流程图八、 鸣谢一、分析系统功能,绘制系统功能结构框架图1.1、 分析系

4、统功能(1) 用户进入主菜单后,就会在看到,菜单选项中添加有系统的各项功能,进入的应的选项就可进行相应的操作.其主要功能有:1、 输入学生成绩2、 成绩排序3、 查询学生成绩 4、 添加学生成绩5、 显示当前成绩 6、 保存当前成绩7、 退出此系统 (2) 用户选择所需操作的选项,进入相应的操作界面,在这里用户就可开始进行操作。1.2、 结构框架图保存当前成绩显示当前成绩添加学生成绩主 菜 单查询学生成绩成绩排序输入学生成绩二、 程序代码以及界面形式#include #include #include #define LEN sizeof(Student)typedef struct stud

5、entint num;char name20;int score4;int sum;struct student *next;Student;int n;Student *cin(void); Student *sort_1(Student *head,int); void sort_2(Student *head);void print(Student *head);Student *sort_all(Student *head);void find(Student *head);void save(Student *head);Student *add_new(Student *head)

6、;Student *cin()int flag; Student *head,*p1,*p2;n=0;head=(Student *)malloc(LEN);p2=head;printf(n请输入第%d名学生的学号,学号为0表示结束输入:,n+1); scanf(%d,&flag);while(getchar()!=n);for(;flag;) n+; p1=(Student *)malloc(LEN); p1-num=flag; printf(请输入第%d名学生的姓名:,n); scanf(%s,p1-name); printf(请输入第%d名学生的语文成绩:,n); scanf(%d,&p

7、1-score0); printf(请输入第%d名学生的数学成绩:,n); scanf(%d,&p1-score1); printf(请输入第%d名学生的英语成绩:,n); scanf(%d,&p1-score2); printf(请输入第%d名学生的计算机成绩:,n); scanf(%d,&p1-score3); p1-sum=p1-score0+p1-score1+p1-score2+p1-score3; p2-next=p1; p2=p1; printf(n请输入第%d名学生的学号,没有此学生则输入0表示结束:,n+1); scanf(%d,&flag); p2-next=NULL;pr

8、intf(nn);return head;Student *sort_all(Student *head)int choose;for(;) printf( |*欢迎使用成绩管理系统*|n);printf( | 请输入选项编号(0-3): |n);printf( |*|n);printf( | 1-按学生学号排序 |n);printf( | 2-按学生总分排序 |n);printf( | 3-显示当前学生成绩 |n);printf( | 0-退出排序系统 |n);printf( |*Thank you !*|n); printf(请输入你要执行的操作:); scanf(%d,&choose);

9、 while(getchar()!=n); switch(choose) case 1: case 2:head=sort_1(head,choose);break; case 3:print(head);break; case 0:return head; default: printf(nn请输入0-3之间的数:nn);break; Student *sort_1(Student *head,int choose)Student *p1,*p2=head-next,*pm,*px;Student mid;if (!p2) return head;for(p1=p2;p1-next!=NUL

10、L;p1=p1-next) pm=p1; for(p2=p1-next;p2!=NULL;p2=p2-next) switch(choose) case 1:if (pm-nump2-num) pm=p2;break; case 2:if (pm-sumsum) pm=p2;break; if (pm!=p1) mid=*pm; *pm=*p1; *p1=mid; px=pm-next; pm-next=p1-next; p1-next=px; printf(n排序后的成绩表为:n);print(head); return head;void find(Student *head)Studen

11、t *p;int choose,fnum;char tem20;if (n=0) printf(n当前系统没有任何学生数据!n );return;for(;) printf(1 按学号查询 ; 0 我不查询了。nn); printf(请选择:); scanf(%d,&choose); while(getchar()!=n); if (choose=1) printf(n请输入你要查询的学生的学号,输入0退出学号查询:); scanf(%d,&fnum); for(;fnum;) for(p=head-next;p!=NULL&p-num!=fnum;p=p-next); if (!p) pri

12、ntf(nn找不到你要查询的学号,请重新输入,输入0表示结束:); scanf(%d,&fnum); else if (p-num=fnum) printf(n学号为%d学生的数据为:n,p-num); printf(学号t姓名t语文成绩 数学成绩 英语成绩 计算机 成绩总分n); printf(%dt%st %d %d %d %d %d n,p-num, p-name,p-score0,p-score1,p-score2,p-score3, p-sum); printf(nn请输入你还要查询的学生的学号,输入0返回上层); scanf(%d,&fnum); else printf(输入1 或

13、者 0 进行查询n);break; Student *add_new(Student *head)Student *p;int flag; printf(nn请输入你要新加入学生的学号,学号为0表示结束输入:); scanf(%d,&flag);while(getchar()!=n);for(;flag;) p=(Student *)malloc(LEN); p-num=flag; printf(请输入新加入学生的姓名:,n); scanf(%s,p-name); printf(请输入新加入学生的语文成绩:,n); scanf(%d,&p-score0); printf(请输入新加入学生的数学

14、成绩:,n); scanf(%d,&p-score1); printf(请输入新加入学生的英语成绩:,n); scanf(%d,&p-score2); printf(请输入第%d名学生的计算机成绩:,n); scanf(%d,&p-score3); p-sum=p-score0+p-score1+p-score2+p-score3; p-next=head-next; head-next=p; n+; printf(n请输入还要加入学生的学号,没有此学生则输入0表示结束:); scanf(%d,&flag); head=sort_1(head,1);printf(加入后的成绩表为:n);pri

15、nt(head); return head; void print(Student *head)Student *p=head-next;if (!p) printf(nn此系统目前没有任何学生数据!nnn);return;printf(此系统目前共计学生%d名:n,n); printf(*学生成绩统计一览*n);printf(学号t姓名t语文成绩 数学成绩 英语成绩 计算机成绩 总分n);for(;p;p=p-next)printf(%dt%st %d %d %d %d %dn, p-num,p-name, p-score0,p-score1,p-score2,p-score3, p-sum

16、=p-score0+p-score1+p-score2+p-score3); printf(*Thank you !*n);void save(Student *head) FILE *fp; Student *p=head-next; char outfile10; printf(请输入保存文件的文件名,例如 c:f1te.txt:n); scanf(%s,outfile); if(fp=fopen(outfile,wb)=NULL) printf(不能打开文件n); exit(1); printf(n正在保存.n); while(p!=NULL) fwrite(p,sizeof(Stude

17、nt),1,fp); p=p-next; fclose(fp); printf(-保存成功!-n);int main()Student *head;int choose,i;head=(Student *)malloc(LEN);head-next=NULL; for(;) printf( |*欢迎使用学籍管理系统*|n);printf( | 请输入选项编号(0-5): |n);printf( |*|n);printf( | 1-输入学生成绩 |n);printf( | 2-成绩排序 |n);printf( | 3-查询学生成绩 |n);printf( | 4-添加学生成绩 |n);print

18、f( | 5-显示当前成绩 |n);printf( | 6-保存当前成绩 |n);printf( | 0-退出此系统 |n);printf( |*电子商务10-3*石兴威!*|n);printf( |*Thank you !*|n); printf(n请输入你要执行的操作:); scanf(%d,&choose); while(getchar()!=n); switch(choose) case 1:printf(确定输入数据请按 1 nn); scanf(%d,&i); if (i=1) head=cin();print(head);break; else printf(n你做出别的选择,当

19、作放弃建立!n); break; case 2:head=sort_all(head);break; case 3:find(head);break; case 4:head=add_new(head); case 5:print(head);break; case 6:save(head);break; case 0:system(pause);return 0; default: printf(nn您的输入有误!请重新输入:nn);break; 2.1程序代码如下2.2、界面形式三、 使用说明学生学籍管理系统是针对学生信息的管理,主要功能是添加学生成绩、输入学生成绩、查询学生成绩、学生成绩

20、排序、修改学生成绩、保存成绩。(1)进入主菜单,列出各项功能用户打开程序 (2)输入1进入录入界面,用户即可录入信息, (2)在主菜单中,输入2,则会进入排序界面, (3)、在主菜单中,输入3,则会进入查询界面,输入要查的学生的学号即可查询到信息。 (4)输入4 ,会进入添加学生成绩界面。(5)、在主菜单中,输入5,进入显示学生成绩界面(6)、在主菜单中,输入6,则会进入保存当前成绩,自动进行保存。四、日志 6月27 星期一 从今天起,正式开始做课程设计了。但坐到电脑前想开始做时,却不懂如何开始写起,都感到有点陌生了。因为前一阵一直在忙于各科的考试,好久没碰C语言了,都开始有生疏感了。但还是试

21、着在电脑上编了下,光要写个主函数还很吃力,更头痛的吃力的结果还换来了很多错误,本想编译下,试试的,结果错误警告一大堆。鉴于此,我还是决定先把书再好好看下,“工欲善其事,必先利其器”嘛! 6月28期二 昨天看了一天的书,又加上今天看的,可却连一半还没看完。我是按部就班的顺序往下看的,但因为书的前半部分大多是基础知识,因此在晚上上课时依旧不知如何编写。折腾了一晚上,想编写要调用的函数的,试着编了好多,但都是些到处是错误的程序,根本没法用。而且编的时候还是发现自己好多东西都忘记了,因此觉得还是得接着去看书,没辙,还是先把书吃透,把基本程理论再实践吧! 6月29 星期三 今天又是啃了一天的书,本还想去

22、机房试试的呢,结果都没来得及去,刚够把书看完。今天重点把数组、函数和文件部分看了下。晚上上机的时候在机器上试了下,并为我的主函数编了个结构体数组,用来存录入的信息。同时今晚在调试主函数时发现我的主函数没有清屏的功能,所有工作都在同一屏幕上。问了同学,为里面加了个清屏的语句,但要加这语句得另加个头文件,问为什么要加这头文件,他也不懂,只知道就是这样规定的,并且这些规定都是得记住的。还是学得不够多,得慢慢充实自己! 6月30 星期四 下午C语言考试,复习了一上午,丁点课程设计也没碰。等下午考完试直奔机房,编写了两小时,只给我的程序加了个添加了个“录入学生信息”的函数。在做时候碰到了不少的问题。主要

23、是我的程序一次只能录入一个学生信息,好不容易加了个可以继续录入的语句,可又碰到了新的问题。当我录入学生信息的前三项后,就直接进入“是否继续录入”。我怀疑是有肯能在定义数组长度时定义太大了,当我把它缩小后再编译、连接、运行时居然成功了,可我现在还没确定到底时什么原因。又碰到新问题了。我把其他要调用的函数也加进去了,但是在用的时候发现加进去的那些函数都不能用,就一添加函数在运行时是正常的,而其他的进入是可以,但在执行的时候,它就会出来警告,说不能被读。自己找,也请同学帮忙找了,但都没找出毛病。碰这问题实在是难办,因为不能执行,我也就不知道这些函数在这里运行是否会正常,也就不知道是否需要改动。 关于

24、“警告”的问题到现在还没解决,有点心烦意乱了,改了下程序,可问题又多了。在“查找”项里也出现了问题,在查找时候即使是查找一个人,它却也会每次都会把所查找的人给找出后,接着又会把其他人的信息以“查无此人”显示出来。反复检查下发现好像是算法的问题。是在循环里的时候出了错,它自己不停了,非得把所有的运行一遍在停。在我加了停止条件后问题总算是得到解决了。可“警告的问题今天还是没解决。警告”的问题困扰好久了,真是头痛,都快被它给崩溃了。今天上课时,我又检查和调试了下,可还是没找到问题在哪儿。自己是搞不定了,只能是请教老师了。虽然向老师去请教的人很多,但还是被我逮到机会了,让老师帮我看了下,检查发现原来是

25、在调用函数和主函数中所定义的类型产生了差异。将被掉函数里的改过来后问题久解决。五、心得体会两周的课程过起来其实也是很快的。这是我第一次做课程设计,起初还没做的时候觉得很快自己就将得编一个较大的程序,将会很有意思。带着最初的好奇心,新鲜感就这样开始了第一天的编程,结果是大失所望。做课程设计并不是自己想象中的那样有意思,而是很枯燥,很乏味的。也没想象中的那样简单,并不是像我们平时上C语言课时,每次编的那些小程序,没那么简单。我们现在要做的就是将我们平时学的,做的那些小程序都合理的凑到一块儿来。而把这些小程序都加到一块儿来,并不是随意的将它们放到一个程序中就完事的,而是必须得合理,且得顾及到各个方面

26、。正是由于编程的纷繁复杂,且结构的严谨,因此编程的过程中到处是困难和问题。它考验的不仅是我们的平时用功程度,以及我们对所学知识的熟练掌握程度、应用的灵活程度,它还考验我们的毅力。在刚开始的几天时,由于前一阵忙于各科的考试,C语言已经好久没碰了,所学的知识都有点遗忘了,在编写时处处碰壁,一直会停顿翻书,编得自己都开始心烦意乱了,实在是编不下去了,于是索性就停了三天去看书,先把书给吃透。并在后期的程序调试中也碰到不少的问题,好多问题自己反复检查了几遍都没查出,但在老师的帮助下还是一下就查出了。并不是这些问题多难,而是不够心细。因此做课程设计、编程时,它还考验并锻炼我们的心细程度。经过这次的课程设计

27、的实践,我受益颇多,不仅是对我掌握知识、灵活运用知识的一次考验和锻炼,也是对我生活态度的一次锻炼,让我学会心细和拥有毅力,更具信心和恒心,碰到困难不再退缩,而是坚强面对。六、参考文献1谭浩强编著C程序设计北京:清华大学出版社,19912谭浩强编著C程序设计题解与上机指导北京:清华大学出版社,19923潭浩田淑清编著PASCAL语言程序设计第二版北京:高等教育出版社,19984Herbert Schildt 著戴健鹏译 C语言大全第二版北京:电子工业出版社八 致 谢在此我向在此次课程设计时对我进行指导的老师,还有帮助我的同学们。这个软件的实现固然需要自身的努力,当然也离不开同学们的帮助与讲解。缺少这些也许我的程序就无法调试完成。谢谢老师和同学们的帮助与讲解。 签名: 日期:2011年7月1日cin sortallsort-1 findadd new printsave main

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号