




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
23摘 要随着计算机技术的发展,特别是计算机网络技术与数据库技术的发展,人们的生活与工作方式已发生了很大的改观。网络技术的应用使得计算机之间通信、信息共享成为可能,而数据库技术的应用则为人们提供了数据存储、信息检索、信息分析等功能,从而使得工作更高效地进行。因此本次课程设计的课题是学生成绩管理系统,本文介绍课程设计课题的基本要求,详细介绍本次课程设计系统中的各种功能及流程图,以及对各种功能的有其详细的源程序代码,同时本文提供了完整的源程序代码,并展示了系统中各种功能的使用和运行效果。最后给出了在用c语言程序设计编程过程中的总结,其中包含作者对本程序的独特设计,作者的设计收获、设计中遇到的困难和问题,以及作者对设计题目及功能的改进意见,英文摘要,查阅的参考文献等方面的内容。关键词:网络技术;数据库;c语言目 录1本课程的作用和目的2 课程的基本要求3设计整体规划及方案4功能分析及设计任务5流程图6各功能的运行过程及结果7讨论及进一步研究建议8课程设计心得9源程序abstract参考文献1本课程的作用和目的为综合应用c语言程序设计理论知识、进一步提高学生综合解决问题、协调工作的能力和良好的软件开发习惯,特安排本实验内容。希望通过该实习能够进一步激发学生的学习热情,培养学生初步编程的能力,为后续的学习和发展奠定基础。2.课程基本要求基本要求:(1)能按学期、按班级完成对学生成绩的录入。(2)能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序(3)能查询学生成绩,不及格科目及学生名单(4)能按班级输出学生的成绩单(5)能按学号删除学生纪录,成绩等。(6)将学生的学号、姓名及各门课程的成绩等信息保存于外部存储器的文件中。创新要求:在基本要求达到后,可进行创新设计。信息描述:录入学生成绩信息(包括学生学号、姓名、各门课程的成绩等)。3.设计整体规划及方案整个程序的设计是通过对每一个功能的设计,然后,再对每一个功能的程序进行模块化,从而形成一个完整的学生成绩管理系统。在对于给定问题进行透彻的了解和详细的分析的基础上,把问题分解成若干个按顺序执行的逻辑部分。每个子任务如果仍很复杂,还可以再分解为若干个子任务,如此逐层分解。4.功能分析及设计任务能按学期、按班级完成对学生成绩的录入、修改。能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序。能查询学生成绩,不及格科目及学生名单。将学生的学号、姓名及各门课程的成绩等信息保存于外部存储器的文件中能按班级输出学生的成绩单。系统以菜单方式工作。5.流程图开始主界面显示所有学生信息修改学生记录删除学生记录按姓名查询学生记录按平均成绩排序按班级查询按学期查询增加学生记录显示不及格学生信息结束6. 各功能的运行过程及结果1号功能显示所有学生信息2号功能修改学生记录3号功能删除学生记录4号功能按姓名查询学生记录5号功能按平均成绩排序6号功能按班级查询7号功能按学期查询8号功能增加学生记录9号功能显示不及格学生信息7. 讨论及进一步研究建议由于对c语言的系统编程还不是很熟悉,这个学生信息管理程序仍有不足之处和要改进的地方。在这里进行讨论。不足之处有:1.1、由于程序运行窗口尺寸不够大,输入的数据长度有要求,不能够输入的太长否则就会输出结果排列不整齐甚至无法输出数据。1.2、结构体中的班级只能输入整形变量。如果把班级定义为字符数组的话,暂时找不到办法不通过键盘输入,直接给结构体中的字符数组赋值。1.3、排序方法是采用冒泡排序法,对平均值进行排序。不过一旦选择排序,会把文件中的全部结构体进行排序,然后根据用户输入选择,按班级或学期显示出来。如果只按班级或学期进行排序的话,要对文件中的结构体进行筛选,这样就不能使用冒泡排序法,暂时还想不出其他方法。8.课程设计心得大二时我们学习了c这一编程语言,但我们感觉学的很浅薄,平时都只能编一些比较小的程序,对一些比较大的程序都无从下手。这次课程设计花了三天,通过和同学的讨论要与不断地尝试,让我们学到了不少的知识,开拓了视野。回顾这次课程设计,至今我们收获慨颇多,自从拿到题目到完成整个编程,从理论到实践,在整整三天的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论和知识是远远不够的,只有把所学的理论知识与实际相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考能力。在我们小组有解决不了的问题时,我们会主动查阅相关的资料,或向其他同学询问,这不仅丰富了我们的知识,还增进了我们同学之间的友谊。为了增大信息的安全性,需要用文件来存储信息,由于我们在上课时不注重对文件的运用,所以在这方面有较大的困难。我们先将书本认认真真地看了一遍,又做了一下课后习题来验证和增进自己的理解,终于,经过我们的不懈努力,我们小组的程序有了突破,成功地实现了用文件来保存并查看学生的信息。通过这次课程设计,我们发现了自己的不足之处,对以前所学的知识理解得不够深刻,掌握得不够牢固,比如说结构体、文件等等,这次课程设计,让我们重新温习了c语言的相关知识,并且也让我们对c语言编程的印象有了很大改观,发现c语言也可以完成这么实用的程序。这次课程设计让我们对c语言温故而知新,也大大提高我们小组对c语言编程的兴趣和信心。9.源程序#include #include #include /*定义学生结构体*/struct studentchar id20;char name20;int cla;int term;float mark1;float mark2;float mark3;float average;float sum;/*声明学生数组及学生数量*/struct student students1000;int num=0;/*求平均值*/float avg(struct student stu)return (stu.mark1+stu.mark2+stu.mark3)/3;/求总分float sum(struct student stu)return (stu.mark1+stu.mark2+stu.mark3);/找出不及格学生void nopass()printf(-不及格学生信息-n);printf(%6s%10s%10s%8s%8s%8s%8s%10s%10sn,学号,姓名, 班级,学期,成绩,成绩,成绩,总分,平均成绩);for (int i=0;inum;i+)if(studentsi.mark160|studentsi.mark260|studentsi.mark360)printf(%6s%10s%10d%8.2d%8.2f%8.2f%8.2f%10.2f%10.2fn,studentsi.id,studentsi.name,studentsi.cla,studentsi.term,studentsi.mark1,studentsi.mark2,studentsi.mark3,studentsi.sum,studentsi.average);/通过学期查询void termserch()int term;printf(请输入要查询的学期:);scanf(%d,&term);getchar();printf(%6s%10s%10s%8s%8s%8s%8s%10s%10sn,学号,姓名, 班级,学期,成绩,成绩,成绩,总分,平均成绩);printf(-n);for (int i=0;inum;i+)if(studentsi.term=term)printf(%6s%10s%10d%8.2d%8.2f%8.2f%8.2f%10.2f%10.2fn,studentsi.id,studentsi.name,studentsi.cla,studentsi.term,studentsi.mark1,studentsi.mark2,studentsi.mark3,studentsi.sum,studentsi.average);/*按平均值排序*/void student_sortbyaverage()int i,j;struct student tmp;for (i=0;inum;i+)for (j=1;jnum-i;j+)if (studentsj-1.averagestudentsj.average)tmp=studentsj-1;studentsj-1=studentsj;studentsj=tmp;/通过班级查询void classserch() student_sortbyaverage();int cla;printf(请输入要查询的班级:);scanf(%d,&cla);getchar();printf(%6s%10s%10s%8s%8s%8s%8s%10s%10sn,学号,姓名, 班级,学期,成绩,成绩,成绩,总分,平均成绩);printf(-n);for (int i=0;inum;i+)if(studentsi.cla=cla)printf(%6s%10s%10d%8.2d%8.2f%8.2f%8.2f%10.2f%10.2fn,studentsi.id,studentsi.name,studentsi.cla,studentsi.term,studentsi.mark1,studentsi.mark2,studentsi.mark3,studentsi.sum,studentsi.average);/*通过学号返回数组下标*/int student_searchbyindex(char id)int i;for (i=0;inum;i+)if (strcmp(studentsi.id,id)=0)return i;return -1;/*通过姓名返回数组下标*/int student_searchbyname(char name)int i;for (i=0;inum;i+)if (strcmp(studentsi.name,name)=0)return i;return -1;/*显示单条学生记录*/void student_displaysingle(int index)printf(%6s%10s%10s%8s%8s%8s%8s%10s%10sn,学号,姓名, 班级,学期,成绩,成绩,成绩,总分,平均成绩);printf(-n);printf(%6s%10s%10d%8.2d%8.2f%8.2f%8.2f%10.2f%10.2fn,studentsindex.id,studentsindex.name,studentsindex.cla,studentsindex.term,studentsindex.mark1,studentsindex.mark2,studentsindex.mark3,studentsindex.sum,studentsindex.average);/*插入学生信息*/void student_insert()int cla;int flag=0,term;int count=1;while(1)if(count=1)count-;printf(请输入学期:);scanf(%d,&term);getchar();printf(请输入班级:);scanf(%d,&cla);getchar();studentsnum.cla=cla;studentsnum.term=term;printf(请输入学号:);scanf(%s,&studentsnum.id);getchar();printf(请输入姓名:);scanf(%s,&studentsnum.name);getchar();printf(请输入成绩:); scanf(%f,&studentsnum.mark1);getchar();printf(请输入成绩:);scanf(%f,&studentsnum.mark2);getchar();printf(请输入成绩:);scanf(%f,&studentsnum.mark3);getchar();studentsnum.average=avg(studentsnum);studentsnum.sum=sum(studentsnum);num+;printf(是否继续?(y/n);if (getchar()=n)break;/*修改学生信息*/void student_modify()/float mark1,mark2,mark3;while(1)char id20;int index;printf(请输入要修改的学生的学号:);scanf(%s,&id);getchar();index=student_searchbyindex(id);if (index=-1)printf(学生不存在!n);elseprintf(你要修改的学生信息为:n);student_displaysingle(index);printf(- 请输入新值-n);printf(请输入学号:);scanf(%s,&studentsindex.id);getchar();printf(请输入姓名:);scanf(%s,&studentsindex.name);getchar();printf(请输入班级:);scanf(%d,&studentsindex.cla);getchar();printf(请输入学期:);scanf(%d,&studentsindex.term);getchar();printf(请输入成绩:);scanf(%f,&studentsindex.mark1);getchar();printf(请输入成绩:);scanf(%f,&studentsindex.mark2);getchar();printf(请输入成绩:);scanf(%f,&studentsindex.mark3);getchar();studentsindex.average=avg(studentsindex);printf(是否继续?(y/n);if (getchar()=n)break;/*删除学生信息*/void student_delete()int i;while(1)char id20;int index;printf(请输入要删除的学生的学号:);scanf(%s,&id);getchar();index=student_searchbyindex(id);if (index=-1)printf(学生不存在!n);elseprintf(你要删除的学生信息为:n);student_displaysingle(index);printf(是否真的要删除?(y/n);if (getchar()=y)for (i=index;inum-1;i+)studentsi=studentsi+1;num-;getchar();printf(是否继续?(y/n);if (getchar()=n)break;/*按姓名查询*/void student_select()while(1)char name20;int index;printf(请输入要查询的学生的姓名:);scanf(%s,&name);getchar();index=student_searchbyname(name);if (index=-1)printf(学生不存在!n);elseprintf(你要查询的学生信息为:n);student_displaysingle(index);printf(是否继续?(y/n);if (getchar()=n)break;/*显示学生信息*/void student_display()int i;printf(%6s%10s%10s%8s%8s%8s%8s%10s%10sn,学号,姓名, 班级,学期,成绩,成绩,成绩,总分,平均成绩);printf(-n);for (i=0;inum;i+)printf(%6s%10s%10d%8.2d%8.2f%8.2f%8.2f%10.2f%10.2fn,studentsi.id,studentsi.name,studentsi.cla,studentsi.term,studentsi.mark1,studentsi.mark2,studentsi.mark3,studentsi.sum,studentsi.average);/*将学生信息从文件读出*/void io_readinfo()file *fp;int i;if (fp=fopen(database.txt,rb)=null)printf(不能打开文件!n);return;if (fread(&num,sizeof(int),1,fp)!=1)num=-1;elsefor(i=0;inum;i+)fread(&studentsi,sizeof(struct student),1,fp);fclose(fp);/*将学生信息写入文件*/void io_writeinfo()file *fp;int i;if (fp=fopen(database.txt,wb)=null)printf(不能打开文件!n);return;if (fwrite(&num,sizeof(int),1,fp)!=1)printf(写入文件错误!n);for (i=0;inum;i+)if (fwrite(&studentsi,sizeof(struct student),1,fp)!=1)printf(写入文件错误!n); fclose(fp);/*主程序*/void main()int choice;io_readinfo();while(1)/*主菜单*/printf(n- 学生成绩管理系统-n);printf(1. 显示所有学生信息n);printf(2. 修改学生记录n);printf(3. 删除学生记录n);printf(4. 按姓名查询学生记录n);printf(5. 按平均成绩排序n);printf(6. 按班级查询n);printf(7. 按学期查询n);printf(8. 增加学生记录n);printf(9. 显示不及格学生信息n);printf(10. 退出n);printf(请选择(1-10):);scanf(%d,&choice);getchar();switch(choice)case 1:student_display();break;case 2:student_modify();break;case 3:student_delete();break;case 4:student_select();break;case 5:student_sortbyaverage();student_display();break;case 6:classserch();break;case 7:termserch();break;case 8:student_insert();break;case 9:nopass();break;case 10:exit(0);break;io_writeinfo();abstractthe subject of this design is student score management system. with the development of computer technology, especially the development of computer network technology and database technology, peoples life and work style has changed a lot. the application of network technology makes it possible to communicate and share information between computers, and the application of database technology provides people with functions of data storage, information retrieval a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 回迁合同协议书
- 经营承包合同协议书
- 协议书与合同不符
- 合同借款协议书
- 工伤合同协议书
- 服务协议书和合同有什么区别
- 产权合同协议书
- 房合同协议书范本
- 主播解除合同终止协议书
- 香蕉转让合同协议书
- 粤教科技版科学六年级下册第14课《生物生存的环境》教学课件
- 高考语文作文素材:《典籍里的中国》课件33张
- 隧道施工安全教育培训
- 2022年道路交通安全防汛工作应急预案
- (完整)《神经病学》考试题库及答案
- 边坡支护之锚杆施工技术ppt版(共35页)
- 黄芩常见的病虫害症状及防治措施
- 思政课社会实践报告1500字6篇
- GB∕T 25119-2021 轨道交通 机车车辆电子装置
- 电池PCBA规格书
- 机械加工切削全参数推荐表
评论
0/150
提交评论