版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告课程名称《数据结构》课题名称_学生成绩管理系统专业计算机科学与技术专业班级计算机学号姓名***指导教师***2023年12月9日前言设计课题八三十:学生成绩管理系统一、问题描述:现有学生成绩信息文件1〔1.txt〕,内容如下姓名学号语文数学英语张明明01677882李成友02789188张辉灿03688256王露04564577陈东明05673847….......…学生成绩信息文件2〔2.txt〕,内容如下:姓名学号语文数学英语陈果31576882李华明32889068张明东33484256李明国34504587陈道亮35475877….试编写一管理系统,要求如下:1)实现对两个文件数据进行合并,生成新文件3.txt2)抽取出三科成绩中有补考的学生并保存在一个新文件4.txt3)对合并后的文件3.txt中的数据按总分降序排序(至少采用两种排序方法实现)4)输入一个学生姓名后,能查找到此学生的信息并输出结果(至少采用两种查找方法实现)5)要求使用结构体,链或数组等实现上述要求.二、功能要求:1、实现对两个文件数据进行合并,生成新文件3.txt。2、本系统显示这样的菜单:请选择系统功能项:0.退出1.显示学生信息2.显示按学号排序后的学生信息3.显示按总分排序后的学生信息4.按学号查学生各科分数和总分5.按姓名查学生各科分数和总分6.抽取出三科成绩中有补考的学生并保存三、算法提示:数据结构:结构体类型数组数据库结构:下表构成该系统的根本数据库。姓名学号语文数学英语Charintintintint四、测试数据:学生人数N=10五、其它:对该系统有兴趣的同学可以在实现上述根本功能后,完善系统的其它功能。目录绪论第一节课程背景第二节本文所做工作需求分析总体设计详细设计测试使用说明总结附录A源代码附录B参考资料第一章绪论学生成绩管理系统是一个教育单位不可缺少的局部,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。学生档案管理系统是典型的信息管理系统(MIS),经过分析如此情况,我们用code#blocks开发工具,利用其提供的各种面向对象的开发工具和功能强大的SQL(结构化查询语言)。第一节课程背景在我国,各大中小学校的各类信息管理系统并非一个新的课题,但也有的学校根本就没有信息任何管理系统,所有的工作几乎还是手工操作来完成。计算机技术在日新月异的开展,但是有的很多学校,特别是在西部贫困地区,学校的种类管理都依然由手工操作来完成,这十分落后,效率极低,本钱很大,而且极异出错。随着社会的开展,信息化是社会进程的必然趋势,学校管理只有只有快,准,精才能发挥其价值。所以机器代替人力是必然的历史开展趋势,只有领导的重视和支持才能从人工操作改为计算机的自动化系统。人工操作必将被计算机代替。有些学校虽使用了计算机,甚至管理系统,但是仍然存在很多问题,问题一日不解决,效率就一日提不上去。第二节本文所做工作本系统是将现代化的计算机技术和传统的教学、教务工作相结合,按照学院的工作流程设计完成的。为了使系统在学院的管理中发挥更大的作用,实现工作过程的计算机化,提高工作效率和工作质量,现提出如下的系统开发目标:〔1〕系统管理员进入学生成绩管理系统学生档案管理的主要功能是:实现添加学生的根本信息、修改学生的根本信息、查询学生的根本信息、删除学生的根本信息等根本功能。〔2〕系统管理员进入学生成绩管理系统学生成绩管理的主要功能是:实现学生成绩的录入、学生成绩的修改与保存等根本功能。〔3〕系统管理员进行学生成绩管理系统查询与统计的主要功能是:实现根据某个学生的根本信息查询他的成绩,还可以根据学生成绩的上下进行排序等根本功能。1.1编写目的本需求的编写目的在于研究学生成绩管理系统软件的开发途径和应用方法。1.2背景及范围本工程的名称:学生成绩管理系统。本软件根本上能具体化、合理化的管理学生的学籍档案,用结构化的思维方式去了解计算机的根本工作原理和高级程序设计语言。1.3功能主要功能:学生成绩录入、学生信息和成绩修改、查询成绩。第二章系统需求分析可以使用户录入学生信息,并在系统中显示出来,还能对录入的信息进行保存,当需要时还可以对信息进行修改和删除,还能分别用学号、姓名、性别、年龄对学生信息进行查询,用户进入系统需要输入密码。第三章总体设计structstudent:一个结构体类型,他能存放姓名、学号、语文、数学、英语等成绩等不同类型数据组成的组合型的数据结构。voidmain():主函数。FILE*fp:定义一个指向文件的指针变量fp.fp=fopen("学生成绩","w+"):将fopen函数的返回值赋给指针变量fp,或者说,fp指向了学生信息这个文件。如果文件不存在,那么建立一个新的文本文件。Fscanf,fprintf:用格式化的方式读写文件。Strcmp:字符串比拟函数。Strcpy:字符串复制函数。程序中还用到当型循环、swith分支语句、if语句等。system("cls");:清屏函数,使界面更简洁。第四章系统调试系统主界面显示学生信息显示按学号排序后的学生信息〔按升序〕显示按总分排序后的学生信息按学号查学生各科分数和总分按姓名查学生各科分数和总分抽取出三科成绩中有补考的学生并保存第五章使用说明利用结构体函数类型,使函数显得没那么繁琐,利用文件指针,输入的信息将保存在文件中,以便下次查询和修改,使用“w+〞方式读写文件,当指定那个文件不存在时,将建立一个文件,不会出现出错信息。利用fscanf和fprintf实现对文件的读写。缺乏之处:录入的信息没能保存,每次便已运行需要重新输入数据,对所学的东西没有合理结合。第七章总结当刚开始听到要课程设计时,心里有点怕怕的,因为毕竟刚接触c语言,虽说也学到了一些皮毛,但当听到要自己去编写程序时,才发现自己不会的不懂的还多着呢,要编写一个程序还是有一些困难的,当真的让我去编写程序时,真的是有点怕怕的感觉。刚入学时,听到要学习c语言时,我是非常的感兴趣,也非常快乐,因为那游戏、软件都要用c语言来实现,我想探究一下那到底是怎么实现的,能到达那样的效果,所以刚开始我很有激情,每节课我都认真听讲,虽然刚开始听起来有点困难,但是我相信功夫不负有心人,我知道课堂上的知识是不够的,所以我利用课下时间,积极搜寻与之相关的信息,去图书馆借阅相关资料和习题,来增长自己的知识。当程序写完了,我终于可以松口气了,经过一个思考,查资料,写源程序,上机调试.现在终于告一段落了.看到自己的劳动成果,心中不免有些惊喜,没想到自己还能独立完成初次的课程设计,虽然不敢说这个程序都是我一个人写的,但其中大局部都是我的成果,另外我还参考了别人的意见,对自己的程序进行修改和完善。这种课程设计对我们是非常有好处的,对C这门程序语言的掌握却有非常大的作用.从开始对题目的分析,就注定摆在我这样一个对C了解不多的新手面前的是一段艰难的旅程.但最终很庆幸的是我居然能够坚持下来,而且完成了设计工作.C语言是很难学的,这也许是因人而异,但对我来说确实是一个障碍。如今要自己完成一个课程设计,无疑是对自己的一个挑战.先是上网查找有关的资料,分析题目所需的数据,要用到哪些函数等等,星期二上网初步调试,将函数用些结构和语句连接起来,做这个工作时,又将书本翻阅了一遍,重新获得许多东西。如带参函数的特点,以及一些语句的运用及特点等等。将工作分配到每块是我完成这个设计的主要方法,然而将每块都完成看起来比拟轻松,但实际操作起来却是比拟麻烦的.由于平时对C知识的积累较为匮乏,(这可能是最主要的原因了),所以操作起来真是寸步难行,没方法,只有拿出课本找到相应的知识点,临阵磨枪.费了一番功夫,再上机调试时就是最痛苦的时候了,错误一大堆,要一个一个的修改。经过几翻调试修改之后终于可以执行了,那时还兴奋了好长时间呢!然而执行出来的结果是不令人满意的,界面不美观不说,最重要的是输入太烦琐,而且受到的限制太多,如只能以某种方式输入,且个数受限制。于是又发费了大量时间去修改,终于比拟满意了,但也到了星期五了,也就是辩论的时间。辩论的时候我才发现还有好多知识是我不会的,老师问了我一些问题,我答复出来的却不多,我体会到我还要很努力的学习,在C的学习上我还有很长的一段路要走。今天不管怎样把这个设计作出来是件很快乐的事情,不过能够把这个设计顺利完成要归功于我的指导老师,帮了我很多忙,也让我发现了我有好多欠缺的地方,真的很感谢你们,谢谢!不管怎么说,我还是完成了这个设计.虽说累了点,但我想这对我们进一步掌握C,并为下学期的C二级考试是有很大的帮助的.能够编出程序,其实本身就是对自己的一种肯定,是对自己前面一段时间学习C综合水平的一个检阅.当然完成后的兴喜,只有经历过了才能体会到,而我体会到了.C语言课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术开展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的的东西,同时不仅可以稳固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会效劳,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的缺乏之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比方说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温故。这次课程设计我最要感谢的就是我们的几位指导老师,老师们每天都不辞劳苦为我们效劳,不管我们有什么问题,他们都耐心的为我们解答,我们有什么错误他们都积极给我们指正出来,虽然有时也批评一下,但这对我们是有很大帮助的,有这么多优秀的指导老师,我想我以后的学习会更上一层楼。附录A源代码#include<stdio.h>#include<stdlib.h>#include<string.h>#include<stdbool.h>#include<math.h>#include<conio.h>#defineeps1;typedefstruct{charname[50];intnum;intChinese;intMath;intEnglish;intsum;}Node;Nodestudent[1000];intn;chartext[50];intcmp(constvoid*a,constvoid*b){return(*(Node*)b).sum>(*(Node*)a).sum?1:-1;}intcmpnum(constvoid*a,constvoid*b){return(*(Node*)a).num>(*(Node*)b).num?1:-1;}voidshowstudent(){inti; printf("\t姓名\t学号\t语文\t数学\t英语\t总分\n"); for(i=0;i<n;i++) { printf("\t%s\t%d\t%d\t%d\t%d\t%d\n",student[i].name,student[i].num,student[i].Chinese,student[i].Math,student[i].English,student[i].sum); }getch();menu();}voidsortnum(){inti,j,k; chara[55]; for(i=0;i<n;i++) { for(j=0;j<n-i-1;j++) { if(student[j].num>student[j+1].num) { k=student[j].num; student[j].num=student[j+1].num; student[j+1].num=k; k=student[j].Chinese; student[j].Chinese=student[j+1].Chinese; student[j+1].Chinese=k; k=student[j].Math; student[j].Math=student[j+1].Math; student[j+1].Math=k; k=student[j].English; student[j].English=student[j+1].English; student[j+1].English=k; k=student[j].sum; student[j].sum=student[j+1].sum; student[j+1].sum=k; strcpy(a,student[j].name); strcpy(student[j].name,student[j+1].name); strcpy(student[j+1].name,a); } } } showstudent();getch();menu();}voidsortsum(){qsort(student,n,sizeof(Node),cmp);showstudent();getch();menu();}voidsearchnum(intnumber){intmin=0,max=n-1,mid;boolescape=false;qsort(student,n,sizeof(Node),cmpnum);while(min<=max){mid=(min+max)/2;if(student[mid].num>number){max=mid-eps;}elseif(student[mid].num<number){min=mid+eps;}else{escape=true;printf("\t姓名\t学号\t语文\t数学\t英语\t总分\n");printf("\t%s\t%d\t%d\t%d\t%d\t%d\n",student[mid].name,student[mid].num,student[mid].Chinese,student[mid].Math,student[mid].English,student[mid].sum);break;}}if(!escape){printf("\t查无此人");}getch();menu();}voidsearchname(){inti; for(i=0;i<n;i++) { if(strcmp(text,student[i].name)==0) { printf("\t姓名\t学号\t语文\t数学\t英语\t总分\n");printf("\t%s\t%d\t%d\t%d\t%d\t%d\n",student[i].name,student[i].num,student[i].Chinese,student[i].Math,student[i].English,student[i].sum); break; } } if(i>=n) { printf("\t查无此人\n"); }getch();menu();}voidsave(){FILE*fp; fp=fopen("4.txt","w"); inti; fprintf(fp,"\t姓名\t学号\t语文\t数学\t英语\t总分\n"); for(i=0;i<n;i++) { if(student[i].Chinese<60||student[i].Math<60||student[i].English<60) { printf("\t%s\t%d\t%d\t%d\t%d\n",student[i].name,student[i].num,student[i].Chinese,student[i].Math,student[i].English); fprintf(fp,"\t%s\t%d\t%d\t%d\t%d\n",student[i].name,student[i].num,student[i].Chinese,student[i].Math,student[i].English); } } printf("\n"); printf("┏━━━━┓\n");printf("┃保存成功┃\n");printf("┗━━━━┛\n");getch();menu();}voidmenu(){intchoice;system("cls");printf("菜单\n");printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");printf("┃0.退出┃\n");printf("┃1.显示学生信息┃\n");printf("┃2.显示按学号排序后的学生信息┃\n");printf("┃3.显示按总分排序后的学生信息┃\n");printf("┃4.按学号查学生各科分数和总分┃\n");printf("┃5.按姓名查学生各科分数和总分┃\n");printf("┃6.抽取出三科成绩中有补考的学生并保存┃\n");printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");printf("选择代码〔0,1,2,3,4,5,6〕:");scanf("%d",&choice);switch(choice){case0:{system("cls");printf("谢谢使用!\n");exit(0);}case1:{system("cls");showstudent();}case2:{system("cls");sortnum();}case3:{system("cls");sortsum();}case4:{system("cls");intnum;printf("\t请输入要查找学生的学号:");scanf("%d",&num);searchnum(num);}case5:{system("cls");printf("\t请输入要查找学生的姓名:");scanf("%s",text);searchname();}case6:{system("cls");
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论