200504061272高考分数统计系统.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《200504061272高考分数统计系统.doc》由会员分享,可在线阅读,更多相关《200504061272高考分数统计系统.doc(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、沈 阳 航 空 工 业 学 院 课程设计学 号 200504061272班 级 5406108 姓 名 郭桂良 指导教师 尹 航 2007年7月16日沈阳航空工业学院课程设计任务书机械与汽车学院 机械电子专业 5406108班 学号200504061272一、课程设计题目:高考分数统计系统二、课程设计工作自2007年7月9日起至2007年7月15日止三、课程设计内容:运用所学的C语言知识,编制和调试程序,具有如下功能:(1)添加考生成绩(2)查询考生成绩(3)采用折半插入算法按总分降序排列(算法参考任意一本C语言版数据结构教材)(4)自己再加两项功能注:考生信息至少应包括姓名,考号,4门课成绩
2、,总分几项信息,考生信息保存在student.dat文件中。四、课程设计要求:程序质量:l 采用模块化程序设计方法;在程序界面,以菜单的形式调用各功能函数;程序可读性强,界面友好;输出形式尽量美观。l 用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。l 用户界面中的菜单至少应包括“输入数据”、“查询”、“排序”、“退出”4项。l 代码应适当缩进,并给出必要的注释,以增强程序的可读性。课程设计说明书:课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:l 封面l 课程设计任务书l 目录l 需求分析(分析题目的要求)l 程序流程图(总体流程图和主要功能模块流程图)l 核心技术的
3、实现说明及相应程序段l 个人总结l 参考资料l 源程序及适当的注释指导教师:_ 学生签名:_沈 阳 航 院 设 计 用 纸目录一、需求分析1二、程序流程图2三、核心技术的实现说明及相应程序段8四、个人总结14五、参考文献15六、源程序1523一、需求分析经过对程序设计题目的分析可知,整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数,他们的功能分别是:添加考生数据函数(add),成绩查询函数(seek),排序函数(halfinsert),删除数据函数(delete)和更新考生数据函数(change)。在这些函数当中,前三个函数的实现严格按照题目的要求,而后面的两个函数属于附加功能。
4、1、添加考生数据函数 主要实现程序最初运行时考生数据的录入以及其后的运行中考生数据的追加功能;2、删除考生数据函数 实现的功能是按照考号对考生的数据记录进行删除;3、排序函数 按照题目的具体要求实现的是总成绩的递减排序以及名次显示,其中总成绩相同者名次相同;4、成绩查询函数 允许按照考号对考生的各科成绩进行查询;5、更改数据函数 可以实现对考生记录中除考号以外的信息进行修改; 除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。每一个考生记录都包含考号、姓名,以及英语、语文、数学、综合四门成绩和总成绩,在程序当中,将考生记录类型定义为
5、结构体类型,添加以及追加的考生信息直接写入E盘的student.dat文件中,其他函数每次对考生记录的访问,其数据来源都是student.dat文件,这样做不但可以保证考生数据的一致性,而且可以对考生数据进行永久保存,保证每次运行程序都可以采用原来的数据。二、程序流程图1、程序总体结构图当(1)真 输入值 n=1? 假 n=2 ? 真 假添加 真 n=3? 假数据 成绩 真 n=4? 假函数 删除 add() 查询 更新 真 n=5? 假 del() 数据 排序 退出 图1程序总体结构图2、具体功能框图(1)添加考生数据函数add 读写方式打开E盘student.dat文件不成功? 真 假写方
6、式打开E盘 追加学生的数量 nstudent.dat文件 不成功? 假 从文件中读出学生记录赋给j真 文件位置指针重回开头rewind输出文件 输入录入学生 打开失败 数量 学生记录总数 n+j写入文件 将n值写入 文件位置指针定位在结尾fseek文件 循环变量i=1 循环变量i=1 当i=n时return 输入考号 当i=n时姓名和四门 课成绩以及 输入考号,姓名和四门课成绩总成绩 以及总成绩学生信息写 学生信息写入文件i+入文件i+ 关闭文件图2 添加考生数据函数(2)读取考生数据reads开始读方式打开E盘student.date文件不成功?循环变量i0读出记录总数,赋给参数*nin*i
7、+读出一条学生记录到形参数组元素stui关闭文件结束returnYNNY图3读取学生数据(3)删除考生记录函数delreads(stu,&n);循环变量i=0; 输入待删除的考生考号ber假i+当in-1时stui与number相等?真break;输出该考生记录不存在!记录写回文件i+关闭文件return;当i=n-2打开文件失败!i=0写方式打开student.dat不成功?假真数组元素依次前移 j+当j=n?真假j=i+1(4)按总分排序函数sort(4)排序函数sort图4删除考生记录函数(4)按总分排序函数halfinsert变量i,j,n,low,high,mid;reads(stu
8、,&n)当i=n时当low=high时当temp2.sum=hign+1将stuj的信息写入到stuj+1中 将temp2的信息写到 stuhigh+1真 写方式打开student.dat不成功 假 记录n总数写入文件 i=0 打开文件失败!当in写入文件并输出,输出是显示名次i+ 关闭文件 return 图5总分排序函数三、核心技术的实现说明及相应程序段本程序主要由六个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。在这些函数当中,添加数据函数、删除数据函数和排序函数是程序中较为核心的部分,下面分别进行说明。1、添加数据函数 添加数据分为两种情况,其一是在
9、考生文件(student.dat)不存在的情况下,首先由程序创建一个新文件,并将录入的考生信息写入该文件当中;其二是在考生文件(student.dat)已经存在的情况下,此时文件要以读写方式或追加的方式打开,这样才可以保证以前已经存在的数据不丢失。具体的程序段如下:if(fp=fopen(e:student.dat,rb+)!=NULL) /*读写方式打开文件*/ j=getw(fp); rewind(fp); /*文件位置指针返回文件开头*/ printf(请输入要添加的学生数量,按回车键确认:); scanf(%d,&n); putw(j+n,fp); fseek(fp,0L,2); fo
10、r(i=1;i=n;i+) printf( qing shu ru yao tian jia de kao sheng shu liang ,an hui che jian que ren :); /*输入考号数量*/ scanf(%d,&n); putw(j+n,fp); /*将j+n写到fp所指的文件中*/ fseek(fp,0L,2); /* fseek(文件指针,位移量,起始点) */ for(i=1;i=n;i+) printf(n qing shu ru di %d ge kao sheng de kao hao,xing ming ,yong kong ge fen kai bi
11、ng an hui che jian que ren : n ,i); scanf(%s%s,stu.num,stu.name); /*输入考号,姓名*/ printf(n qing shu ru di %d ge kao sheng de ying yu,yu wen shu xue he zong he 4 men cheng ji yi ji zong fen ,yong kong ge fen kai bing an hui che jian que ren: n,i); scanf(%f%f%f%f%f,&stu.english,&stu.chinese,&stu.math,&stu
12、.zonghe,&stu.sum); /*输入各科成绩*/ fwrite(&stu,sizeof(struct student),1,fp); /* 将指定的内容写入文件(可安全用于二进制文件)*/ else if(fp=fopen(e:student.dat,wb)!=NULL) printf( qing shu ru yao tian jia de kao sheng de shu liang ,an hui che jian que ren: ); /*输入考号数量*/ scanf(%d,&n); putw(n,fp); for(i=1;i=n;i+) printf(n qing shu
13、 di %d ge kao sheng de kao hao,xing ming ,yong kong ge fen kai bing an hui che jian qur ren : n,i); /*输入考号,姓名*/ scanf(%s%s,stu.num,stu.name); printf(n qing shu ru di %d ge kao sheng de yingyu ,yu wen shu xue he zong he 4 men cheng ji yi ji zong fen ,yong kong ge fen kai bing an hui che jian que ren
14、: n,i ); scanf(%f%f%f%f%f,&stu.english,&stu.chinese,&stu.math,&stu.zonghe,&stu.sum); /*输入各科成绩*/ fwrite(&stu,sizeof(struct student),1,fp); fclose(fp);2、删除数据函数该函数的核心内容是删除算法以及最终对源文件的更新。该函数执行时,首先调用reads函数将文件中的考生信息读入数组当中,并由用户输入待删除考生的学号,而后按照该考号进行查找,如果文件中存在该考生的数据,则采用删除算法删除,否则输出考生信息不存在的提示信息。对考生信息的具体删除算法是在结构
15、体数组中实现的,当考生的信息被找到后,位于数组中该考生后面的考生记录依次向前移动一个元素的位置,这些操作完成后,要删除的考生信息就被后面的数组元素覆盖掉了,也就实现了删除。在数组中删除考生信息后,还要将更改后的信息重新写回文件当中,以保证数据的一致性。具体程序段如下:void del() /*信息删除函数*/struct student stuN; char number20; FILE *fp; int n,i,j;reads(stu,&n); printf(n qing shu ru yao shan chu xin xi de kao sheng kao hao ,an hui che
16、jian que ren : ); getchar(); scanf(%s,number); for(i=0;i=n) printf( mei you zhao dao gai kao sheng xin xi ! n); return; elsefor(j=i+1;jn;j+) /*左移,覆盖待删除的考生记录*/ strcpy(stuj-1.num,stuj.num); /*把stuj.num指向的字符串复制到stuj-1.num中*/ strcpy(stuj-1.name,stuj.name); stuj-1.english=stuj.english; stuj-1.chinese=stu
17、j.chinese; stuj-1.math=stuj.math; stuj-1.zonghe=stuj.zonghe; stuj-1.sum=stuj.sum; if(fp=fopen(e:student.dat,wb)=NULL) printf(wen jian da kai shi bai !); return; else /*重新写回文件当中*/ putw(n-1,fp); for(i=0;in-1;i+) fwrite(&stui,sizeof(struct student),1,fp); fclose(fp); printf(shan chu cheng gong !n);3、总分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 200504061272 高考 分数 统计 系统
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内