免费预览已结束,剩余19页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课 程 设 计 报 告课程名称 C语言程序设计 课题名称 班级成绩管理系统 专 业 机械设计 班 级 1083班 学 号 201013090303 姓 名 陈 玲 珑 指导教师 王 颖 2011年 9 月15 日湖南工程学院课 程 设 计 任 务 书课程名称 C语言程序设计 课 题 班级成绩管理系统 专业班级 机械设计1083 学生姓名 陈玲珑 学 号 201013090303 指导老师 王 颖 审 批 任务书下达日期 2011 年 9 月5日任务完成日期 2011 年 9 月 15 日目录一 引言. 1二 总体设计. 1三 详细设计. 3四 问题分析及设计体会. 11五 参考书目. 12六 附录. 12一、设计内容与设计要求1 设计内容:班级成绩管理系统设计涉及的知识点:掌握并熟练运用C语言的基本数据类型与各种表达式,程序的流程控制语句; 掌握数组的基本概念。熟练掌握一维数组、二维数组的应用、掌握字符数组与字符串的关系以及字符串的简单处理。掌握函数的定义,函数的返回值,函数的调用,函数的形式参数和实际参数之间的关系;掌握变量的作用域与生存期,了解函数的作用域。掌握结构的概念,结构类型的定义,结构变量的定义和初始化,结构成员的表示,结构的赋值含义,结构与指针、函数的关系。掌握文件、文件类型指针的基本概念,熟练掌握文件的打开与关闭以及文件的建立、读写等有关操作。2 设计要求:1) 用C语言实现系统;利用结构体数组实现班级成绩的数据结构设计;系统的各个功能模块要求用函数的形式实现;应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观。2) 建立一个班级学生成绩数据库,文件名为bjcjk.txt,并从该文件中读取数据;3) 班级成绩管理系统应能提供以下功能:(1)主菜单界面设计。通过提示用户输入一个数字选项,调用相应的功能函数。(2)成绩显示:完成班级全部学生成绩的显示;(3)成绩录入:完成新增一个学生的成绩记录,并重新计算学生的平均成绩;(4)成绩修改:按学号修改一个学生的学习成绩,并重新计算学生的平均成绩;(5)成绩排序:按学生平均成绩进行排序;(6)成绩统计: 统计并显示每门课程的平均成绩; 统计并显示超过某门课程平均分的人数以及学生记录;4) 说明:(1) 要求将修改后的数据写入到一个新的数据文件nwejck.txt中。(2) 对系统有兴趣的同学可以在实现基本要求的基础上,完善系统的其它功能。5) 班级成绩管理系统采用一个结构体数组,学生成绩数据库结构如下:int xh /*学号*/char name10 /*姓名*/int yy /*英语*/int mat /*数学*/int jsj /*计算机*/int wl /*物理*/int zf /*总分*/ 注意:学号不重复,且数据库应有10条或以上的记录。6) 要求:1 要求每个学生必须独立思考,认真并按时完成本课程设计所包含的所有内容;2 要求学生必须按照课程设计报告的完整格式说明设计内容,设计任务分析过程和算法,给出程序流程图和全部源程序;3 设计报告的完整格式应包括以下部分的内容: 设计总体思路; 程序及各个模块说明; 总体模块框图; 各个程序模块说明; 程序流程图; 程序清单; 课程设计总结与体会(不少于400字)。4 上机时要求必到,设计完成,必须演示程序,答辩并提交设计报告。二、进度安排第 2 周 星期一 14:0018:00 星期三 8:0012:00 星期五 14:0018:30附:课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。 正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。正文总字数要求在5000字以上(不含程序原代码)。 一:引言1.1 编写目的 编写班级成绩管理系统主要是为为方便我们能够更好的管理班级学生各项信息。并且能够很轻松的查找、修改、删除我们需要学生的所有信息,并按一定要求显示信息,按成绩的总分,均值由高到低进行排序。二总体设计2.1主要功能主要实现学生各项信息的长久保存,浏览记录、修改记录、删除记录、查询记录、追加记录、排序和统计记录。 班级成绩管理系统提供以下功能:a、 成绩录入b、 成绩显示c、 成绩保存d、 成绩排序e、 成绩修改(要求先输入密码)f、 成绩统计(1) 显示每门课程成绩最高的学生的基本信息(2) 显示每门课程的平均成绩(3) 显示超过某门课程平均成绩的学生人数g、 退出系统3、执行一个具体的功能之后,程序将重新显示菜单。4、将学生成绩保存到文件中。2.1 各个模块(1)本程序是由七个基本模块够成。其中主模块是由系统函数够建而成,其重要功能是显示出主菜单,由用户做出选择。用户每选择除退出外的菜单都能返回系统函数。系统模块图如下: 主函数主界面查询功能排序功能显示功能删除功能追加功能修改功能统计功能(2)模块说明主界面 main() 提供用户选择界面显示模块 Disp() 显示用户学生的所有信息追加模块 Appe() 用来添加学生信息修改模块 Modi() 修改学生记录里面的某项信息删除模块 Dele() 删除学生记录的某条信息查询模块 Query() 查询学生记录的某条信息排序模块 Sort() 按总分的高低排序统计模块 Statistics 高于单课成绩的平均分数的显示、打印退出模块 Quit() 安全退出并保存信息三详细设计3.1 主函数的流程图退出系统信息安全退出并保存结束开始FILE *fp调用 Re_file()Main menuSwitch(choice)修改信息查询信息排序信息统计信息87653421显示信息追加信息删除信息调用Wr_file()3.2 各个模块的运行步骤及运行界面 主菜单选择界面1按1选择显示功能2按2进入追加功能:输入相应的信息后:添加后显示如下:3按3进入修改功能:输入要修改的学生的学号和姓名:(如下修改刚添加的学生的信息)然后选择要修改的项目:(如下按3把英语成绩改成82)修改后显示如下:如果输入的学号或姓名有错误的话就会提示:can not find the information! (修改和删除模块也一样)输入错误信息显示如下:4按4进入删除功能:(删除刚添加的学生的信息)删除后显示如下:5按5进入查询功能:(如下001号peng 的信息)查询后显示如下:6按6进入排序功能:7统按7进入统计功能:(显示单科平均分以及超过平均分的学生的学号姓名和此科成绩并显示超过平均分的学生的个数)8按8选择退出程序:四问题分析与设计体会(1) 问题及解决的办法 在调试过程中我们也遇到过不少的错误,警告等,有些错误多达二十多个,改得头都是晕的,有时就想放弃了,但是在老师的帮助下,我慢慢的将程序调好,这都归功于老师的帮助。有时我们在调试的时候无意间多打了一个空格或者是无意间删了一个字符,导致程序很多的错误,还有就是在建库的时候不能出错,一但出了一点错就得重新输入。所以,希望以后程序设计者一定要注意这点,一定要小心,三思而后行。还有就是程序本身存在很多不足,有待改进。比如修改模块,一次只能改一项数据。(2) 设计体会在这次c语言课程设计的实习中,我不但深刻地认识到了理论知识的重要性,更懂的了要理论联系实际,学会学以致用 。因为平时在这方面没有过多的关注,平时学的一点理论知识也很有限所以在实习过程中也遇到了不少问题,但在我和同学的讨论下都得到了解决,同时也使我颇有收获,当然我程序能完成来于老师的指导有方。当然当中很多模块都是借鉴的,但毕竟我还初在出学阶段,要成为高手还有很长的一段路要走,但通过这次实习,我了解到程序也不想想象中的那么复杂,只要花功夫就会有收获,其实很多知识在课堂上老师都已经讲过,但我就是缺少了那一份灵动,所以除了要有扎实的基本功外,那一点点小聪明还是必要的。总之为了能够顺利通过,我努力查阅了很多资料,也请教了老师,这一周很快就过去了,但这一周过的很愉快,我巩固了很多东西,收获不少。五. 参考书目 (1)杨路明.C程序设计.北京邮电大学出版社.2006.6 (2)谭浩强.C程序设计(第三版).清华大学出版社,2007.2六附件:#include stdio.h#include string.hint N=0;struct stu int xh; /*学号*/ char name10; /*姓名*/ int yy; /*英语*/ int mat; /*数学*/ int jsj; /*计算机*/ int wl; /*物理*/ int zf; /*总分*/ float jz; /* 均值*/ float tj4; /*统计*/ s20;void Re_file() FILE *fp; fp=fopen(g:pl2bjcjk.txt,r); while( fscanf(fp,%dn%sn%dn%dn%dn%dn%dn,&sN.xh,sN.name,&sN.yy,&sN.mat,&sN.jsj,&sN.wl,&sN.zf)!=EOF) N+; fclose(fp); void Wr_file()int i; FILE *fp; fp=fopen(g:pl2nwejck.txt,w); for(i=0;iN;i+) fprintf(fp,%dn%sn%dn%dn%dn%dn%dn,si.xh,,si.yy,si.mat,si.jsj,si.wl,si.zf); fclose(fp);void Disp() /*显示模块*/ int i; clrscr();printf(n xh name yy mat jsj wl zf n);printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *); for(i=0;iN;i+) printf(n %5d %-7s %-3d %-3d %-3d %-3d %-3d,si.xh,,si.yy,si.mat,si.jsj,si.wl,si.zf);void Appe() /*追加模块*/printf(input:n xh name yy mat jsj wl zfn); scanf(%d%s%d%d%d%d%d,&sN.xh,sN.name,&sN.yy,&sN.mat,&sN.jsj,&sN.wl,&sN.zf); printf(nn%5d %-7s %-3d %-3d %-3d %-3d %-3d,sN.xh,sN.name,sN.yy,sN.mat,sN.jsj,sN.wl,sN.zf); N=N+1;void Modi() /*修改模块*/int i,t,k; char ch10; printf(input one xh and name n); printf(xh:); scanf(%d,&k); printf(nname:); scanf(%s,ch); for(i=0;iN;i+) if(k=si.xh)&(strcmp(ch,)=0) break; if(i=N) printf(can not find information!n);else printf(n xh name yy mat jsj wl zf n); printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *); printf(nn %5d %-7s %-3d %-3d %-3d %-3d %-3d,si.xh,,si.yy,si.mat,si.jsj,si.wl,si.zf); printf(nninput information 1-xh 2-name 3-yy 4-mat 5-jsj 6-wl 7-zfn); printf(t=); scanf(%d,&t); switch(t) case 1:printf(input new xh=);scanf(%d,&si.xh);break; case 2:printf(input new name=);scanf(%s,);break; case 3:printf(input new yy=);scanf(%d,&si.yy);break; case 4:printf(input new mat=);scanf(%d,&si.mat);break; case 5:printf(input new jsj=);scanf(%d,&si.jsj);break; case 6:printf(input new wl=);scanf(%d,&si.wl);break; case 7:printf(input new zf=);scanf(%d,&si.zf);break; ;Disp(); void Dele() /*删除模块*/ int i,k; char ch10; printf(input one xh and name n); printf(xh:); scanf(%d,&k); printf(nname:); scanf(%s,ch); for(i=0;iN;i+) if(k=si.xh)&(strcmp(ch,)=0) break; if(i=N) printf(can not find information!n); else for(;iN-1;i+) si=si+1;N=N-1;Disp();void Query() /*查询模块*/ int i,t; char ch10; printf(input xh:); scanf(%d,&t); printf(input name:); scanf(%s,ch); for(i=0;iN;i+) if(t=si.xh)&(strcmp(ch,)=0) break; if(i=N) printf(can not find information!n); else printf(n%5d %-7s %-3d %-3d %-3d %-3d %-3d ,si.xh,,si.yy,si.mat,si.jsj,si.wl,si.zf);void Sort() /*排序*/ struct stu s1;int i,j;for(i=0;iN;i+)si.zf=si.yy+si.mat+si.jsj+si.wl;si.jz=si.zf/4.0; for(i=0;iN-1;i+ ) for(j=i+1;jN;j+) if(si.jzsj.jz) s1=si;si=sj;sj=s1; void Statistics() /*统计模块*/ int i,t=0; float tj4=0; for(i=0;iN;i+) tj0+=si.yy; tj1+=si.mat;tj2+=si.jsj;tj3+=si.wl; tj0=tj0/i;tj1=tj1/i;tj2=tj2/i;tj3=tj3/i; printf( average yy=%.1ft average mat=%.1fn average jsj=%.1ft average wl=%.1fn,tj0,tj1,tj2,tj3); for(i=0;iN;i+) if(tj0si.yy) t+;printf( xh:%d name:%s yy:%d,si.xh,,si.yy);if(t)%2=0) printf(n); printf(nabove average yy:%dn,t);t=0; for(i=0;iN;i+) if(tj1si.mat) t+;printf( xh:%d name:%s mat:%d,si.xh,,si.mat);if(t)%2=0) printf(n); printf(nabove average mat:%dn,t);t=0; for(i=0;iN;i+) if(tj2si.jsj) t+;printf( xh:%d name:%s jsj:%d,si.xh,,si.jsj);if(t)%2=0) printf(n); printf(nabove average jsj:%dn,t);t=0; for(i=0;iN;i+) if(tj3si.wl) t+;printf( xh:%d name:%s wl:%d,si.xh,,si.wl);if(t)%2=0) printf(n); printf(nabove average wl:%d,t); void Quit() /*退出*/ printf( * Than
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产品运营考试题及答案
- 2025年大学《量子信息科学-信息论基础》考试备考题库及答案解析
- CNC编程工程师面试题及答案
- 2025年大学《环境科学-全球环境问题》考试参考题库及答案解析
- PHP开发秋招面试题及答案
- 2025年大学《火灾勘查-火灾痕迹鉴定》考试备考试题及答案解析
- 202X年六年级一班毕业班家长会家校共育新苗
- 2025中学教师秋招题目及答案
- 人教版 (新课标)选修32 电动势教案设计
- 2025年大学《林产化工-林产化工清洁生产与环保》考试备考题库及答案解析
- 新能源汽车电力电子技术全套教学课件
- Emily-Dickinson艾米丽-迪金森
- 急性胰腺炎(普外科)
- 读书分享交流会《全球通史》课件
- 国家开放大学汉语言文学本科“现代汉语专题”形成性考核04任务参考答案
- 人教版(2019)选择性必修第二册Unit 1 Science and Scientists Workbook Expanding Your World 课件
- 中学学校安全管理制度汇编
- 前置胎盘临床诊断与处理指南
- 过程能力分析报告(图表)
- 叉车工劳动合同
- 篮球活动策划书(5篇)
评论
0/150
提交评论