您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > C语言程序设计报告-学生成绩管理系统
学生成绩管理系统1《c语言课程设计》程序设计说明书院系:信息系专业班级:计算机二班学号:140713041学生姓名:董丁锐指导教师:刘红梅学生成绩管理系统2内容摘要摘要:本次课程设计的课题是学生成绩管理系统,本文介绍课程设计课题的选题意义,说明了本系统提供的主要功能,对设计思路、功能模块、流程图、功能模块、中心算法进行了详细的说明,并画出流程框图。本文提供了完整的源程序代码,并展示了系统使用和运行效果。最后给出了在小学期高级语言程序设计过程中的总结,其中包含本程序独特设计,作者的设计收获、设计中遇到的困难和问题,以及作者对设计题目及功能的改进意见,查阅的参考文献等方面的内容。索引关键字关键词:源程序代码,学生成绩管理,流程框图学生成绩管理系统3内容目录1题目要求------------------------------------41.1内容要求--------------------------------------------------41.2设计要求--------------------------------------------------42设计思想------------------------------------53功能模块及流程图----------------------------54数据结构------------------------------------75中心算法代码说明----------------------------76系统实现------------------------------------86.1程序代码-------------------------------------------------86.2系统使用-------------------------------------------------216.3运行效果说明---------------------------------------------217总结---------------------------------------248致谢词-------------------------------------259参考文献-----------------------------------25学生成绩管理系统4.正文1题目要求1.1内容要求要求能够实现输入记录、查询记录、更新记录、统计记录、输出记录等功能。1.输入记录。对每个学生的学号、姓名、班级、数学、英语、计算机成绩进行输入并存储,在程序的运行过程中,数据的存储可以采用结构体数组或者链表,但是最终应该存储在文件中。2.维护记录。能够实现添加、删除、修改学生记录,但是一定要将最终数据存储到文件中。3.查询记录。根据班级、学号、科目等查询学生的成绩。如果查询时学生数据并没有读入到结构体数组或者链表中,则应该先从文件中读出数据并存储在结构体数组或者链表中,然后在结构体数组或者链表中查询满足条件的数据。4.统计记录。完成对各门功课最高分和不及格人数的统计。1.2设计要求①各级菜单及功能间必须建立必要的联系,要定义参照完整性规则。②使用二进制文件方式存储数据。③要求有菜单界面,结果显示时应达到界面友好。④将完成的全部内容连编成一个.exe文件。。学生成绩管理系统52设计思想1.在设计时考虑以下几个方面:操作简单。因为使用者多为非计算机专业人员,所以该系统要求设计的界面美观,操作方便。要充分考软件界面友好和操作方便,便愈使用人员快速上手。易于维护。一个软件的好坏,关键在于产品的可靠,稳定,便于维护。2.开发语言的选择针对世界上流行的大量软件和开发工具,经过认真分析其优缺点,结合目前的软硬件开发环境,选用微软WINDOWS平台下的VisualC++作为软件开发工具。选用工具有几下几方面优点:1C语言简洁、紧凑、使用方便、灵活。有32个关键字。C语言程序比其他许多高级语言简练,源程序短,因此输入程序时工作量小。2运算符丰富。3数据类型丰富,具有现代语言的各种数据结构。4C语言是完全模块化和结构化的语言。用函数作为程序的模块单位,便于实现程序的模块化。5语法限制不太严格,程序设计自由度大。6生成目标代码质量高,程序执行效率高。7用C语言编写的程序可移植性好。综上所述,VisualC++可以满足学生成绩管理的要求,所以用来开发学生成绩管理系统是非常合适的。3功能模块及流程图学生成绩管理系统6学生成绩管理系统对学校加强学生基本情况及学生成绩管理有着重要的作用。为了能使该系统具有更为广泛的功能:应该将该系统细分为学生操作系统、教师操作系统、教务处操作系统,以满足不同身份的人的需求。总体来说,该系统应分为输入模块、维护模块、查询模块以及统计模块。由于本软件为学校中多个身份的人的定制开发的。我们经过反复论证,最终确定了学生成绩管理系统的设计方案,主要流程图如下所示:系统主菜单学生操作教师操作教务处操作查询功能录入功能删除功能修改功能查询功能查询功能统计功能统计功能按班级按学号按科目按班级按学号按科目按班级按学号按科目数学英语计算机数学英语计算机数学英语计算机学生成绩管理系统7通过系统主菜单,可以使学校中不同身份的人选择不同的操作系统,从而合理的使用不同的功能。4数据结构结构体:程序设计中用到的结构体类型:学生信息结构体类型:structstudent{intnum;charnam[20];charclas[20];floatmath;floatenglish;floatcomputer;}stu[SIZE];5中心算法代码说明说明1.voidsave(){FILE*fp;intj;if((fp=fopen(stu_list,wb))==NULL){printf(cannotopenfile\n);return;}for(j=0;jSIZE;j++)if(fwrite(&stu[j],sizeof(structstudent),1,fp)!=1)printf(filewriteerror\n);fclose(fp);}以上代码将数据存入文件中,操作起来避免了直接对内存进行操作,可对文件进行操作。2.for(i=0;iSIZE;i++)学生成绩管理系统8for(j=0;jSIZE-i;j++){if(stu[i].mathstu[i+1].math){t=stu[i].math;stu[i].math=stu[i+1].math;stu[i+1].math=t;}}for(j=0,i=0;iSIZE;i++){if(stu[i].math60)j=j+1;}统计函数中使用起泡法排序再统计的方法6.系统实现6.1程序代码代码如下:#includestdio.h#includestring.h#defineSIZE34structstudent{intnum;charnam[20];charclas[20];floatmath;floatenglish;floatcomputer;}stu[SIZE];voidsave()/*将数据储存于文件*/{FILE*fp;intj;if((fp=fopen(stu_list,wb))==NULL)学生成绩管理系统9{printf(cannotopenfile\n);return;}for(j=0;jSIZE;j++)if(fwrite(&stu[j],sizeof(structstudent),1,fp)!=1)printf(filewriteerror\n);fclose(fp);}search(intn)/*查询学号函数*/{intj;for(j=0;jSIZE;j++)if(n==stu[j].num)returnj;/*将j的值返回,通过search带回调用处*/if(jSIZE)return-1;}voidfunction1()/*添加记录*/{voidxt2();inti;chark;printf(****************************添加学生信息********************************\n);for(i=0;iSIZE;i++){printf(请输入该生学号:\n);scanf(%d,&stu[i].num);printf(请输入该生姓名:\n);scanf(%s,&stu[i].nam);printf(请输入该生所在班级:\n);scanf(%s,&stu[i].clas);printf(请输入该生数学成绩:\n);scanf(%f,&stu[i].math);printf(请输入该生英语成绩:\n);scanf(%f,&stu[i].english);学生成绩管理系统10printf(请输入该生计算机成绩:\n);scanf(%f,&stu[i].computer);getchar();printf(完成本次操作!!!\n);printf(是否返回上一菜单?y/n:\n);k=getchar();if(k=='n')continue;/*判断*/elsebreak;}save();xt2();}voidfunction2()/*删除学生记录*/{voidxt2();inti,j;chara,k;printf(****************************删除学生信息******************************\n);printf(请输入要删除学生的学号:\n);scanf(%d,&i);j=search(i);if(j==-1){loop:printf(该学生不存在,请重新输入!\n);printf(输入0退出\n);for(j=0;jSIZE;j++){if(j==-1)gotoloop;elsebreak;}}else{for(i=0;iSIZE;i++){printf(原数据为:\n);学生成绩管理系统11printf(学号%d,姓名%s,班级%s,数学成绩%4.1f,英语成绩%4.1f,计算机成绩%4.1f\n,stu[j].num,stu[j].nam,stu[j].clas,stu[j].math,stu[j].english,stu[j].computer);stu[j].num=0;stu[j].nam[20]=0;stu[j].clas[20]=0;stu[j].math=0;stu[j].english=0;stu[j].computer=0;printf(删除结果为\n);printf(学号%d,姓名%s,班级%s,数学成绩%4.1f,英语成绩%4.1f,计算机成绩%4.1f\n,stu[j].num,stu[j].nam,stu[j].clas,stu[j].math,stu[j].english,stu[j].computer);save();printf(完成本次操作!!!\n);k=getchar();if(k=='y')continue;/*判断*/elsebreak;}}printf(是否返回主菜单y/n:\n);scanf(%c,&a);if(a=='y')xt2();elsefunction2();}voidfunction3()/*修改*/{charname[20],phy[10];voidxt2();printf(请输入要修改的学生姓名:);scanf(%s,name);printf(\n);inti;floatt;for(i=0;iSIZE;i++)学生成绩管理系统12change:if(strcmp(stu[i].nam,name)==0){printf(请输入要修改的科目:);scanf(%s,phy);if(strcmp(math,phy)==0){printf(输入成绩:);scanf(%f,&t);stu[i].math=t;printf(成绩为:%4.2f\n,stu[i].math);}elseif(strcmp(eng
本文标题:C语言程序设计报告-学生成绩管理系统
链接地址:https://www.777doc.com/doc-2403739 .html