已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机工程学院课程设计说明书课程名称:C语言课程设计设计项目:学生成绩管理学生姓名: 学 号:专 业:计算机科学与技术班 级:二零一四年级二班指导老师:2015年3月一、 任务与具体要求具体任务是制作一个学生信成绩管理系统,能够对学生的各科成绩进行统计和处理,可以方便学校老师和领导对 成绩进行了解。1) 学生信息界面美观、简洁;2) 能够对信息进行查询;3) 具有增、删、改信息的功能;4) 能够对学生的成绩进行从高到低排序;5) 可以保存信息到磁盘文件;二、 设计说明书包括的内容 1、问题概述 P22、需求分析 P23、系统概要设计 P24、系统的详细设计 P35、系统测试及调试 P126、用户手册 P147、总结 P148、参考文献 P159、附录 P15三、 应完成的图纸 学生信息管理系统初始化检查录入学生信息模块显示学生信息模块查询不及格学生信息模块成绩排序信息查询信息模块统计学生信息模块删除学生信息模块选择性退出四、 评语及成绩 指导老师(签字): 年 月 日课程设计报告目录1、问题概述 P2 2、需求分析 P23、系统概要设计 P24、系统的详细设计 P35、系统测试及调试 P126、用户手册 P147、总结 P148、参考文献 P159、附录 P151、 问题概述制作一个学生成绩信息管理系统,能够对学生的学号、姓名和各科成绩进行统计、处理和更新,并且可以方便学校老师和领导对学生成绩进行整体分析。2、 需求分析问题的范围:学生成绩信息管理;功能需求:方便准确性能需求:3、 系统概要设计:1)系统的主要功能:该系统要完成的设计目标及任务是对学生的信息进行统计、处理和更新,并方便学校老师和领导对学生成绩进行整体分析。2)系统模块功能结构 学生信息管理系统初始化检查录入学生信息模块显示学生信息模块查询不及格学生信息模块成绩排序信息查询信息模块统计学生信息模块删除学生信息模块退出3)运行环境要求 本程序所适用的计算机系统软硬件环境要求为:硬件环境:Pentium 500以上 内存:256M软件环境:Windous XP以上4、系统的详细设计 1)4-1-1录入学生信息模块 void putin()int n,i=0;char ch;read_km();doprintf(tttt录入学员信息n输入第%d个学员的信息n,i+1);printf(n输入学生编号:);scanf(%s,stui.no);printf(n输入学员姓名:);scanf(%s,stui.std_name);printf(n输入课程%s的分数:,);scanf(%f,&stui.km0.score);printf(n输入课程%s的分数:,);scanf(%f,&stui.km1.score);printf(n输入课程%s的分数:,);scanf(%f,&stui.km2.score);stui.save=1;printf(nn);i+;n=i;printf(是否继续输入?(Y/N);fflush(stdin);ch=getch();system(cls);while(ch!=n&ch!=N);system(cls);if(nu=0)nu=n;Save();elsenu=n+nu;Save_add(n);4-1-2查询学生信息模块void find()int j,i=0;int c=0;char search10=0;char as;if(nu=0)printf(学生信息为零!请录入.);return 0;chushi();read();doprintf(输入要查询课程名称:);scanf(%s,search);for(j=0;jmax;j+)if(!strcmp(,search)c=1;printf(n该课程不及格学生姓名:n);for(i=0;inu;i+)if(stui.kmj.score60)printf(%sn,stui.std_name);if(c=0)printf(无此课程!);printf(ntt按任意键返回主菜单);fflush(stdin);as=getch();while(!as);system(cls);4-1-3删除学生信息模块void shanchu()FILE*p;char Y,y;char ch ;if(p=fopen(c:chengji.txt,r)=NULL)printf(您还没有输入过学生信息!n);printf(tt按任意键返回主菜单);elseprintf(您是否需要删除所有录入的学生信息?nn);scanf(%c,&ch); while(ch=Y|ch=y);p=fopen(c:chengji.txt,w);fflush(stdin);scanf(%c,&ch);if(ch!=0)system(cls);4-1-4成绩排序信息查询模块int sort()struct student temp;int i,j;char s;if(nu=0)printf(学生信息为零!请录入.);return 0;chushi();read();for(i=1;inu;i+)for(j=1;j=nu-i;j+)if(stuj-1.avestuj.ave)temp=stuj;stuj=stuj-1;stuj-1=temp;doprintf(学生成绩信息:nn);for(i=0;inu;i+)printf(学号:%s 姓名:%s 平均成绩:%2.1fnn,stui.no,stui.std_name,stui.ave);printf(tt按任意键返回主菜单);fflush(stdin);s=getch();while(!s);system(cls);4-1-5统计信息模块void tongji()int j,m,z,i=0;char s;if(nu=0)printf(学生信息为零!请录入.);return 0;chushi();read();for(z=0;zmax;z+)m=stui.kmz.score;j=0;printf(%s 最高分: ,);for(i=0;inu;i+)if(mstui.kmz.score)m=stui.kmz.score;j=i;printf(%st,stuj.std_name);j=0;i=0;m=stui.kmz.score;printf(%s 最低分: ,);for(i=0;istui.kmz.score)m=stui.kmz.score;j=i;printf(%st,stuj.std_name);m=0;j=0;i=0;printf(%s 平均分: ,);for(i=0;inu;i+)m=m+stui.kmz.score;printf(%dn,m/nu);m=0;i=0;printf(%s 分数低于的60人数: ,);for(i=0;inu;i+)if(stui.kmz.score60)m+;printf(%dt,m);m=0;j=0;i=0;printf(%s 分数高于60的人数: ,);for(i=0;i60)m+;printf(%dnn,m);doprintf(tt按任意键返回主菜单);fflush(stdin);s=getch();while(!s);system(cls);4-1-6显示学员信息模块int putout()int i;char s;if(nu=0)printf(ttt没有检测到已经录入的学生信息!请选择1录入.);return 0;read();doprintf(学生成绩信息:nn);for(i=0;inu;i+)printf(学号:%s 姓名:%sn%s分数:%2.1ft%s分数:%2.1ft%s分数:%2.1fn平均分数:%2.1ft总成绩:%2.1fnn,stui.no,stui.std_name,,stui.km0.score,,stui.km1.score,,stui.km2.score,stui.ave,stui.sum);printf(tt按任意键返回主菜单);fflush(stdin);s=getch();while(!s);system(cls);2)描述各种算法录入学生信息模块:打开指定文件并读取数据,向指定的磁盘文件写入信息。显示学生信息模块:显示所有学生信息,若没录入学生信息,则显示“没有检测到已经录入的学生信息!请选择1录入.”。查询不及格学生信息模块:读取所有学生信息(并不显示), 输入一门课程,显示不及格学生姓名以及分数。删除学生信息模块:读取所有学生信息(并不显示),删除所有学生信息,输入Y删除成功后显示“执行操作后将自动返回菜单”学生成绩排名模块:读取所有学生信息(并不显示),将学生成绩两两比较,并将排好序的内容重新写入指定的磁盘文件中,保存成功后显示“save successfully!”。统计模块: 读取所有学生信息(并不显示),并统计当前记录条数,即为学生人数,统计结束后显示“按任意键返回主菜单.”。5、 系统测试及调试1) 实际测试数据:查询学生信息模块:1,(输出该学号学生的信息); 临界值m,“can not find the student .”删除学生信息模块:1,(删除该学号学生的信息);学生成绩排名模块:在主页面中选择该模块所代表的数字编码,进入页面后显示所有学生的成绩排名;统计模块: 在主页面中选择该模块所代表的数字编码,进入页面后显示当前学生人数2) 实际运行结果及分析:3) 显示学生信息模块:1,(显示学员信息);临界值m,“没有检测到已经录入的学生信息.”删除学生信息模块:1,(删除所有学生的信息);学生成绩排名模块:在主页面中选择该模块所代表的数字编码,进入页面后显示所有学生的成绩排名;学生人数统计模块:在主页面中选择该模块所代表的数字编码,进入页面后显示当前学生人数;显示学生信息模块:1,(显示该学号学生的信息)4) 系统测试结论:系统运行正常,可以实现对学生信息的管理,方便学校老师和领导对学生成绩的整体分析。、截图实例6、用户手册:录入学生信息模块:打开指定文件并读取数据,向指定的磁盘文件写入信息。查询学生信息模块:读取所有学生信息(并不显示),输入所查找的学生学号,查找到后按照指定的格式输出;若该生不存在,则显示“can not find the student!”。删除学生信息模块:读取所有学生信息(并不显示),输入所要删除的学生学号,查找到后判断是否要删除,“是”输入“Y”或“y”,即可进行删除,删除成功后显示“delete successfully!”修改学生信息模块:读取所有学生信息(并不显示),输入要修改的学生学号,查找到后判断是否要修改,“是”输入“Y”或”y”,即可进行修改,修改成功后显示“modify successfully!”。插入学生信息模块:读取所有学生信息(并不显示),选择要插入的位置(即在那个学生的学号后面),设置好位置录入新学生的信息,然后将该学生的星系写入到磁盘文件中,插入成功后显示“insert successfully!”学生成绩排名模块:读取所有学生信息(并不显示),将学生成绩两两比较,并将排好序的内容重新写入指定的磁盘文件中,保存成功后显示“save successfully!”。学生人数统计模块:读取所有学生信息(并不显示),并统计当前记录条数,即为学生人数,统计结束后显示“there are ?students.”。显示学生信息模块:读取所有学生信息(并不显示),输入要查找的学生学号,查找到后判断是否显示,“是”输入“Y”或“y”,此后按照指定的格式输出学生信息。7、总结:本次C语言课程设计非常有意义,它锻炼了我们解决实际问题的能力。我们小组尝试着由自己完成整个系统,在设计的过程里也遇到了很多麻烦,但是通过查询参考书和网络,一个个疑难迎刃而解。通过这次实践课,不只是强化了我们C语言编程的能力,更重要的是使我们学会了一种工作方法,学会了如何规划、组织、设计、实施项目,从整体到局部,从局部又到整体。此外,在设计流程图和编制报告的过程里也学了不少东西,学会了用制作流程图,学会了组织报告等等。8、参考文献C语言项目案例分析 清华大学出版社、C语言程序设计教程(第二版) 中国铁道出版社C语言程序设计 电子工业出版社9、附录#include#include#include #include#define MAX 80#define max 3int nu=0;struct classnamechar name20;float score;struct studentchar no20;char std_name20;struct classname kmmax;float ave;float sum;int save;struct student stuMAX,*p;void chushi()int i,j;for(i=0;iMAX;i+)for(j=0;j20;j+)stui.noj=NULL;stui.std_namej=NULL;j=NULL;stui.kmj.score=0;stui.ave=0;stui.sum=0;stui.save=0;void av()int i;for(i=0;inu;i+)stui.sum=stui.km1.score+stui.km2.score+stui.km3.score;stui.ave=stui.sum/3;void first_check()FILE *p;struct classname frist_checkmax;if (p=fopen(c:classname.txt,r)=NULL)printf(您好,欢迎使用学生成绩管理系统nn因为您是第一次使用,请依次输入科目名称(三科)nn);p=fopen(c:classname.txt,w);printf(输入课程1名称并以回车结束:);scanf(%s,frist_);fprintf(p,%sn,frist_);printf(输入课程2名称并以回车结束:);scanf(%s,frist_);fprintf(p,%sn,frist_);printf(输入课程3名称并以回车结束:);scanf(%s,frist_);fprintf(p,%sn,frist_);system(cls);fclose(p);void save_nu()FILE *p;p=fopen(c:renshu.txt,w);fprintf(p,%dn,nu);fclose(p);void Save_add(int n)FILE * p;int i;p= fopen(c:chengji.txt,at);if (p = NULL)printf(文件不存在!n);exit(0);save_nu();for (i = 0;in;i+)if(stui.save=1)stui.sum=stui.km1.score+stui.km2.score+stui.km3.score;stui.ave=stui.sum/3;fprintf(p,%s %s %2.1f %2.1f %2.1f %2.1f %2.1f n,stui.no,stui.std_name,stui.km0.score,stui.km1.score,stui.km2.score,stui.ave,stui.sum);fclose(p);void Save()FILE * p;int i;p= fopen(c:chengji.txt,w);if (p = NULL)printf(文件不存在!n);exit(0);save_nu();for (i = 0;inu;i+)if(stui.save=1)av();fprintf(p,%s %s %2.1f %2.1f %2.1f %2.1f %2.1f n,stui.no,stui.std_name,stui.km0.score,stui.km1.score,stui.km2.score,stui.ave,stui.sum);fclose(p);int read_nu()FILE *p;char ch,s10=0;int i=0;p=fopen(c:renshu.txt,r);if(p=NULL)save_nu();return 0;ch=fgetc(p);while(ch!=n)si=ch;ch=fgetc(p);i+;nu=atoi(s);fclose(p);return 0;int read_km()FILE *p;int i,j=0;char s20=0;chushi();p=fopen(c:classname.txt,r);if(p=NULL)printf(ERROR read_km);return 0;fgets(s,20,p);while(strlen(s)!=0)for(i=0;istrlen(s);i+)if(si=10)si=0;break;for(i=0;i=nu;i+)strcpy(,s);for(i=0;i20;i+)si=0;j+;fgets(s,20,p);void read()FILE *p;int i,j,n,k,z=0;char s50=0;char o10=0;p=fopen(c:chengji.txt,r);if(p=NULL)printf(ERROR_read);chushi();read_km();fgets(s,50,p);while(strlen(s)!=0)j=0;for(i=0;i50;i+)if(si!=n)n=0;while(j=0)if(si!= )stuz.non=si;n+;i+;elsebreak;while(j=1)if(si!= )stuz.std_namen=si;n+;i+;elsebreak;while(j=2)if(si!= )on=si;n+;i+;elsestuz.km0.score=atoi(o);break;while(j=3)if(si!= )on=si;n+;i+;elsestuz.km1.score=atoi(o);break;while(j=4)if(si!= )on=si;n+;i+;elsestuz.km2.score=atoi(o);break;while(j=5)if(si!= )on=si;n+;i+;elsestuz.ave=atoi(o);break;while(j=6)if(si!= )on=si;n+;i+;elsestuz.sum=atoi(o);break;for(k=0;k10;k+)ok=0;elsebreak;j+;for(i=0;i50;i+)si=0;fgets(s,50,p);z+;void putin()int n,i=0;char ch;read_km();doprintf(tttt录入学员信息n输入第%d个学员的信息n,i+1);printf(n输入学生编号:);scanf(%s,stui.no);printf(n输入学员姓名:);scanf(%s,stui.std_name);printf(n输入课程%s的分数:,);scanf(%f,&stui.km0.score);printf(n输入课程%s的分数:,);scanf(%f,&stui.km1.score);printf(n输入课程%s的分数:,);scanf(%f,&stui.km2.score);stui.save=1;printf(nn);i+;n=i;printf(是否继续输入?(Y/N);fflush(stdin);ch=getch();system(cls);while(ch!=n&ch!=N);system(cls);if(nu=0)nu=n;Save();elsenu=n+nu;Save_add(n);int putout()int i;char s;if(nu=0)printf(ttt没有检测到已经录入的学生信息!请选择1录入.);return 0;read();doprintf(学生成绩信息:nn);for(i=0;inu;i+)printf(学号:%s 姓名:%sn%s分数:%2.1ft%s分数:%2.1ft%s分数:%2.1fn平均分数:%2.1ft总成绩:%2.1fnn,stui.no,stui.std_name,,stui.km0.score,,stui.km1.score,,stui.km2.score,stui.ave,stui.sum);printf(tt按任意键返回主菜单);fflush(stdin);s=getch();while(!s);system(cls);int sort()struct student temp;int i,j;char s;if(nu=0)printf(学生信息为零!请录入.);return 0;chushi();read();for(i=1;inu;i+)for(j=1;j=nu-i;j+)if(stuj-1.avestuj.ave)temp=stuj;stuj=stuj-1;stuj-1=temp;doprintf(学生成绩信息:nn);for(i=0;inu;i+)printf(学号:%s 姓名:%s 平均成绩:%2.1fnn,stui.no,stui.std_name,stui.ave);printf(tt按任意键返回主菜单);fflush(stdin);s=getch();while(!s);system(cls);void find()int j,i=0;int c=0;char search10=0;char as;if(nu=0)printf(学生信息为零!请录入.);return 0;chushi();read();doprintf(输入要查询课程名称:);scanf(%s,search);for(j=0;jmax;j+)if(!strcmp(,search)c=1;printf(n该课程不及格学生姓名:n);for(i=0;inu;i+)if(stui.kmj.score60)printf(%sn,stui.std_name);if(c=0)printf(无此课程!);printf(ntt按任意键返回主菜单);fflush(stdin);as=getch();while(!as);system(cls);void tongji()int j,m,z,i=0;char s;if(nu=0)printf(学生信息为零!请录入.);return 0;chushi();read();for(z=0;zmax;z+)m=stui.kmz.score;j=0;printf(%s 最高分: ,);for(i=0;inu;i+)if(mstui.kmz.score)m=stui.kmz.score;j=i;printf(%st,stuj.std_name);j=0;i=0;m=stui.kmz.score;printf(%s 最低分: ,);for(i=0;istui.kmz.score)m=stui.kmz.score;j=i;printf(%st,stuj.std_name);m=0;j=0;i=0;printf(%s 平均分: ,);for(i=0;inu;i+)m=m+stui.kmz
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 40816.3-2025工业炉及相关工艺设备能量平衡测试及能效计算方法第3部分:间歇式熔铝炉
- 2024年咸宁辅警招聘考试真题含答案详解(综合卷)
- 2024年兰州辅警招聘考试真题及一套参考答案详解
- 2024年东莞辅警协警招聘考试备考题库附答案详解(夺分金卷)
- 2024年大连辅警协警招聘考试真题附答案详解(夺分金卷)
- 2023年聊城辅警招聘考试题库附答案详解(突破训练)
- 2024年大足县辅警招聘考试题库及答案详解(各地真题)
- 2024年台州辅警招聘考试真题含答案详解(达标题)
- 2024年厦门辅警协警招聘考试真题及答案详解(网校专用)
- 2023年赣州辅警协警招聘考试真题附答案详解(a卷)
- 2025年军队文职人员招聘考试题库附答案(满分必刷)
- 2025赤峰翁牛特旗公立医院招聘29名员额备案制工作人员考试笔试备考试题及答案解析
- 2025高中政治主观题答题模板
- 2025贵州天健福康医养供应链有限责任公司招聘劳动合同制人员18人实施考试参考试题及答案解析
- 2025下半年厦门市总工会招聘工会专干和集体协商指导员50人考试参考题库及答案解析
- 2025年中小学教师职称评定答辩题(附答案)
- 自制小水车课件
- 工会集体协商课件
- 国开2025年《行政领导学》形考作业1-4答案
- 【MOOC答案】《中国文化传承与科技创新》(北京邮电大学)中国慕课章节作业网课答案
- NB-T 10560-2021 风力发电机组技术监督规程
评论
0/150
提交评论