版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、高级语言程序设计课程设计报告姓 名: 熊丹 学 号: 11058224 专 业: 电子信息科学与技术 实 验 室: 2602 设计时间: 2012 年 07月 09日 2012 年 07 月 11 日评定成绩: 指导教师: 朱智林 目 录一、课程设计的目的3二、设计的内容与要求3三、总体设计3四、详细设计4五、调试与测试15六、课程设计的总结17在本次的课程设计中,我主要负责搜集相关资料,和罗丹丹一起修改了程序,调试了程序中的几处错误,程序在运行过程中还是比较顺利的,并没有出现什么无法解决的的问题。对于流程图我主要负责的有:输入数据函数、显示数据函数、插入数据函数、删除数据函数、查找数据函数。
2、此外负责了课程设计报告的撰写。一、 课程设计的目的1. 巩固和加深学生对C语言课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力二设计的内容与要求学生纪录用文件存储,因而要提供文件的输入输出操作;要实现插入一个新的学生纪录,因而要提供文件的插入操作;要实现学生纪录得修改和删除,以及登记成绩和修改成绩,因而要提供文件纪录的修改和删除操作;要浏览全班成绩,故要提供显示操作;计算学生总成绩需要提供简单的统计操作;要按学号排序输出全班成绩表,因而要提供排序操作;另外要提供键盘式选
3、择菜单以实现功能选择。三 总体设计(1)整个成绩管理系统设计分为11个模块:1.录入学员信息2.显示学员信息3.成绩排序信息4.添加学员信息5.删除学员信息6.修改学员信息7.查询学员信息8.从文件读入学员信息9.删除文件中学员信息10.保存学员信息11.退出(2)算法描诉(此程序中所包含的函数)1.主函数main():定义学生结构体数组,调用录入,统计等函数对成绩表进行处理。2.输入数据函数input():输入学生姓名,性别,学号,成绩1,成绩2,成绩3以及成绩的排序,平均值和总和。3.排序函数sort():对总成绩进行排序,按有多到少的顺序。4.显示数据函数display():显示各个学生
4、的总成绩5.插入数据函数insert():插入新的同学的成绩,需要输入新同学的姓名,学好,性别。6.删除数据函数del():由于各种原因,删除某些同学的成绩,这也需要这位同学的姓名,学好,性别。7.平均值函数average():求各个同学总成绩的平均值。8.查询数据函数find():查找某位同学的成绩,同样需要这位同学的姓名,学号,性别。9.保存数据函数save():再一次打开界面是,仍有上次所找的讯息。10.读出数据函数read():可以读到所有的信息。11.删除文件函数del_file():删除某个文件的函数,这需要知道该文件的路径。12.修改文件函数modify():修改文件中的信息,这
5、同样需要文件的路径。四详细设计数据的组织描述(比如主要的变量类型,结构体等等),模块之间的参数设计(接口设计,模块的功能说明),系统控制流程图,各个模块的流程图,采用的算法数据结构采用结构体,设计学生纪录结构体:struct student int no; /学号 char name20;/姓名 char sex4;/性别 float score1;/成绩1 float score2;/成绩2 float score3;/成绩3 float sort;/排序成绩 float ave;/平均分 float sum;/总分;(1)主函数输出提示菜单:插入学生纪录 修改学生纪录 删除学生纪录 登记成
6、绩修改成绩 浏览学生纪录 查看总成绩 查看成绩表(2)数据插入模块 采用追加的方式把学生成绩信息写入学生成绩信息文件。(3)数据修改模块通过菜单选择修改学生纪录,打开该文件,从文件中读一条记录,判断是否要修改,如果是,则修改后重新写入文件;否则直接重新写入文件,读下一条记录。(4)数据删除模块通过菜单选择删除学生纪录,打开该文件,从文件中读一条记录,判断是否要删除,如果是,则舍弃;否则重新写入文件,读下一条记录。(5)成绩登记模块 类似数据修改模块,只是修改字段为各个科目的成绩。(6)成绩修改模块 参考数据修改模块。(7)数据浏览模块 读取学生成绩信息文件,显示输出。(8)成绩统计模块 从学生
7、成绩信息文件中读取一个学生纪录,计算该学生的总成绩(简单的成绩相加),输出,然后读取下一条纪录。(9)成绩表查看模块建立结构体数组Struct SR record; /学生纪录 Float total; /总成绩stuN;从学生成绩信息文件中读取各个纪录,total中存放计算得到的总成绩。然后采用排序算法(冒泡、插入、选择等)对数组按照总成绩进行排序。最后顺序输出。int i=0char chi=i+1输入学生学号输入学生姓名输入学生性别输入学生成绩1输入学生成绩2input函数输入学生成绩3是否继续 Y输入Nch=getchar()结束sort函数 i=1i=n-1? ? Min=si,j=
8、i+1jn? Sji?temp=siSi=sminSmin=tempi=i+1display函数int I,char as输出stui学号姓名性别成绩1成绩2成绩3平均值i=0inow_no&0 N Yi+as=getchar()while(!as) Ysystem(“cls”)结束char ch输入新学生的信息 stunow_no.no输入学生姓名输入学生性别输入学生学号输入学生成绩1输入学生成绩2输入学生成绩3insert函数now_no=now_no+1是否继续输入Y Nch=getch()while(ch=n&ch!=N) Y结束del函数unsigned long
9、inumint i=0输入要删除学生的学号输入in? 否 是输出平均成绩 结束average函数find函数int ichar str20,as输入要查询的学生姓名getsstri=0in? 否 是保存成功,关闭文件保存失败!退出该功能,返回主菜单,继续选择 read函数i=0输入要读入的文件路径是否能打开文件?否 是 输入成绩1,成绩2,成绩3总成绩=成绩1+成绩2+成绩3平均成绩=总成绩/3读出学生的基本信息:姓名,性别,学号,成绩1,成绩2,成绩3,平均成绩。i=i+1in? 否 是保存的在文件中的所有信息已经读入,关闭文件找不到文件!退出该功能,返回主菜单,继续选择 结束删除文件函数流
10、程图 打开文件显示出来文件中的所用信息保存的在文件中的所有信息已经删除退出该功能,返回主菜单,继续选择。按要求输入要删除的文件路径修改文件函数流程图输入要修改的学生姓名得到该生的学号,性别,成绩1,成绩2,成绩3.按要求修改得到新的学生信息退出该功能,返回主菜单,继续选择。五调试与测试调试1.在编程当中,由于要输入大量的程序,所以经常出现很多不让人注意的小错误。例如大小写 int写成Int(因为是在word中写的,会自动将字母大写)2.关系运算符和赋值运算符总是用错,而这种错误也总是被忽略。3.有时候会忘记加分号或是在不该加的地方加上了分号。不过这种情况还是比较容易被发现的。4.有时候大括号也
11、会忘加,尤其是在if语句和for语句中。5.最重要的是函数的应用,函数应该应用得当,否则程序会出现很大的错误,尤其是在如此庞大的程序中。测试开始界面菜单六课程设计的总结通过这个课程设计,我们更加牢固的掌握了书本上的知识。并对于以前不熟悉的知识有了更加深刻的了解。在完成此次课程设计的过程中,虽然有些疲劳和困倦,但带给我很多的收获。C语言已经学了一个学期了,有许多知识都存在似懂非懂的现象,这种现象通过实际的上机操作,已经减少了许多。很多程序理论上说得过去,但真正上机了却会发现行不通。所以说无论做什么事空有理论而不去实践都收获不到真正的果实。说实话,我这个程序在所有程序当中算是简单的,所包含的知识也
12、就是调用函数和结构体,当中穿插了一些排序算法,总体来说结构还是很清晰的,由各个模块小模块组成了一个管理系统。但过程中也是遇到了不少的麻烦,很多地方都想不到或是想不全的。所以说对待任何事情我们都不容小觑,一件自己没做过的事谁都不能说你就一定能做好了。输入和调试程序的过程是相当枯燥的,但构思和完善程序的过程还是比较有趣的,无论怎样,当你完成了一个程序时,还是相当有成就感的。此次任务的完成,也体现出同学之间的团结精神。实践是检验真理的唯一标准。没有实践,就不会发现和深刻体会它的真实所在。只有通过检验的真理,在自己的心里,才会认可它的真实性。面向对象程序设计的完成,使我们懂得了真理的重要性,理论和实际
13、的相结合,才能真正把握所学和所掌握的知识。同时培养了我们的团队精神,使我我们懂得了团队的重要性。在今后的学习工作中我们将会更好的发挥团队精神。 总的来说,C语言还是十分有趣的,可以通过人为的设计而让电脑来辅助性的做一些机械的东西。在今后的学习过程中,我也加更加认真地学习C语言,希望能在今后设计出一个属于自己的程序。参考书目:(五号,宋体加粗)1 谭浩强,C语言程序设计(第四版)M,清华大学出版社,2008年(要求:五号字,宋体,单倍行距。按作者、书名、出版社、出版时间格式逐一列出,中间用逗号格开)附录: 程序清单#include #include /*清屏*/ #include /*显示目录*
14、/ #include #define MAX 1000 void input(); /*输入数据函数*/ void sort();/*排序数据函数*/ void display();/*显示数据函数*/ void insert(); /*插入数据函数*/ void del(); /*删除数据函数*/ void average(); /*平均值函数*/ void find();/*查找数据函数*/ void save(); /*保存数据函数*/ void read(); /*读出数据函数*/ void del_file(); /*删除文件函数*/ void modify(); /*修改文件函数*
15、/ int now_no=0; struct student int no; char name20; char sex4; float score1; float score2; float score3; float sort; float ave; float sum; ; struct student stuMAX,*p; void main()/*主函数*/ int as; char ch; do printf(nnnntt_O(_)O_); start: printf(nnnnntt -你好 欢迎使用学生成绩管理系统!-n); printf(“nnntttt编程者: 熊丹 罗丹丹t
16、ttttnn”); printf(nnnntt *按任意键继续*); ch=getch(); while(!ch); system(cls); /*一下为功能选择模块*/ do printf(ntttt1.录入学员信息ntttt2.显示学员信息ntttt3.成绩排序信息ntttt4.添加学员信息ntttt5.删除学员信息ntttt6.修改学员信息ntttt7.查询学员信息ntttt8.从文件读入学员信息ntttt9.删除文件中学员信息ntttt10.保存学员信息ntttt11.退出n); printf(tttt选择功能选项(输入所选功能前的数字):); fflush(stdin); /*可用可
17、不用,用于清除缓存防止下次用scanf输入是出现错误*/ scanf(%d,&as); switch(as) case 1:system(cls); input(); break; case 2:system(cls); display(); break; case 3:system(cls); sort(); break; case 4:system(cls); insert(); break; case 5:system(cls); del(); break; case 6:system(cls); modify(); break; case 7:system(cls); find();
18、break; case 8:system(cls); read(); break; case 9:system(cls); del_file(); break; case 10:system(cls); save(); break; case 11:system(exit); exit(0); default:system(cls); goto start; while(1);/*while(1),1表示真,所以while(1)表示永远循环下去, */ /*至此功能选择结束*/ void input()/*原始数据录入模块*/ int i=0; char ch; do printf(tttt1
19、.录入学员信息n输入第%d个学生的信息n,i+1); printf(n输入学生学号:); scanf(%u,&stui.no); fflush(stdin); printf(n输入学生姓名:); fflush(stdin); gets(); printf(n输入学生性别:); fflush(stdin); gets(stui.sex); printf(n输入学生成绩1:); scanf(%f,&stui.score1); printf(n输入学生成绩2:); fflush(stdin); scanf(%f,&stui.score2); printf(n输入学生成绩3:); f
20、flush(stdin); scanf(%f,&stui.score3); printf(nn); i+; now_no=i; printf(是否继续输入?(Y/N); fflush(stdin); ch=getch(); system(cls); while(ch!=n&ch!=N); system(cls); void sort()/*排序数据函数*/ struct student temp; int i,j; average(); for(i=1;inow_no;i+) for(j=1;j=now_no-i;j+) if(stuj-1.avestuj.ave) temp=stuj; st
21、uj=stuj-1; stuj-1=temp; printf(排序以完成进入功能2可进行显示n); system(pause); system(cls); void sort1()/*排序数据函数*/ struct student temp; int i,j; for(i=1;inow_no;i+) for(j=1;j=now_no-i;j+) if(stuj-1.score1stuj.score1) temp=stuj; stuj=stuj-1; stuj-1=temp; void sort2()/*排序数据函数*/ struct student temp; int i,j; for(i=1
22、;inow_no;i+) for(j=1;j=now_no-i;j+) if(stuj-1.score2stuj.score2) temp=stuj; stuj=stuj-1; stuj-1=temp; void sort3()/*排序数据函数*/ struct student temp; int i,j; for(i=1;inow_no;i+) for(j=1;j=now_no-i;j+) if(stuj-1.score3stuj.score3) temp=stuj; stuj=stuj-1; stuj-1=temp; void display()/*显示数据函数*/ int i; char
23、 as; average(); do printf(ttt班级学生信息列表n); printf(t学号tt姓名t性别t成绩1t成绩2t成绩3t平均值n); for(i=0;inow_no&0;i+) printf(t%ut%st%st%.2ft%.2ft%.2ft%.2fn,stui.no,,stui.sex,stui.score1,stui.score2,stui.score3,stui.ave); printf(tt按任意键返回主菜单.); fflush(stdin); as=getch(); while(!as); system(cls); void
24、insert()/*插入数据函数*/ char ch; do printf(ntt输入新插入学生信息n); printf(n输入学生学号:); scanf(%u,&stunow_no.no); fflush(stdin); printf(n输入学生姓名:); fflush(stdin); gets(stunow_); printf(n输入学生性别:); fflush(stdin); gets(stunow_no.sex); printf(n输入学生成绩1:); fflush(stdin); scanf(%f,&stunow_no.score1); printf(n输入学生成绩2:
25、); fflush(stdin); scanf(%f,&stunow_no.score2); printf(n输入学生成绩3:); fflush(stdin); scanf(%f,&stunow_no.score3); printf(nn); now_no=now_no+1; sort(); printf(是否继续输入?(Y/N); fflush(stdin); ch=getch(); system(cls); while(ch!=n&ch!=N); void del()/*删除数据函数*/ unsigned long inum; int i; printf(输入要删除学生的学号:); ffl
26、ush(stdin); scanf(%u,&inum); for(i=0;inow_no;i+) if(stui.no=inum) if(i=now_no)now_no-=1; else stui=stunow_no-1; now_no-=1; sort(); break; system(cls); void save()/*保存数据函数*/ FILE *fp; int i; char filepath20; printf(输入要保存的文件路径:); fflush(stdin); gets(filepath); if(fp=fopen(filepath,w)=NULL) printf(n保存失
27、败!); exit(0); for(i=0;inow_no;i+) stui.sum=stui.score1+stui.score2+stui.score3; stui.ave=stui.sum/3; fprintf(fp,t%ut%st%st%.2ft%.2ft%.2ft%.2fn,stui.no,,stui.sex,stui.score1,stui.score2,stui.score3,stui.ave); fclose(fp); printf(学生信息已保存在%s中!n,filepath); system(pause); system(cls); void find()
28、/*查询函数*/ int i; char str20,as; do printf(输入要查询的学生姓名:); fflush(stdin); gets(str); for(i=0;inow_no;i+) if(!strcmp(,str) printf(t学号tt姓名t性别t成绩1t成绩2t成绩3t平均值n); printf(t%ut%st%st%.2ft%.2ft%.2ft%.2fn,stui.no,,stui.sex,stui.score1,stui.score2,stui.score3,stui.ave); printf(tt按任意键返回主菜单.); ff
29、lush(stdin); as=getch(); while(!as); system(cls); void average()/*求平均数*/ int i; for(i=0;inow_no;i+) stui.sum=stui.score1+stui.score2+stui.score3; stui.ave=stui.sum/3; void modify()/*修改数据函数*/ int i; char str20; printf(输入要修改的学生姓名:); fflush(stdin); gets(str); for(i=0;inow_no;i+) if(!strcmp(,str) system(cl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年湖北省武汉市东西湖区九年级(下)月考英语试卷(含答案)
- 江苏徐州市2026年中考英语靶向诀胜卷(二)(含答案)
- 初中八年级道德与法治《绘梦蓝图:职业理想探寻与社会角色初建》教学设计
- 芭蕾舞剧《鱼美人》选曲《水草舞》教学设计(初中音乐九年级全一册)
- 初中八年级历史《从“天国梦”到“资政新篇”-农民抗争与时代局限》导学案
- 初中八年级历史下册 第12课《民族大团结》教学设计
- 八年级英语上册Unit6人与自然:综合技能与学习策略整合教学设计
- 本科临床医学专业:临床挑战案例整合教学设计
- 八年级道德与法治上册第二课《个人礼仪》复习导学案
- 初中八年级历史与社会《西方古典文明的奠基:古希腊与古罗马》教学设计
- 义务教育数学课程标准(2022年版)练习题及答案
- 97G329-8建筑抗震结构详图(钢筋砼柱单层厂房)图集
- 省级行业产教融合共同体申报书、申报书、参与建设证明
- JJG 241-2002精密杯形和U形液体压力计
- T-SHNA 0003-2023 消化内镜诊疗前消化道准备
- DB21-T 2819-2017岩土工程勘察报告编制规范
- 幼儿教育学心理学复习资料
- JGT266-2011 泡沫混凝土标准规范
- (完整版)医疗器械网络交易服务第三方平台质量管理文件
- 深圳市社会保险定点医疗机构医疗服务协议书共207课件
- 脐灸专业知识课件
评论
0/150
提交评论