《C语言课程设计报告模版.doc》由会员分享,可在线阅读,更多相关《C语言课程设计报告模版.doc(18页珍藏版)》请在三一办公上搜索。
1、湖南科技大学课程设计报告设计题目 运动会分数统计程序的设计 院 系: 专业班级: 学 号: 学生姓名: 指导教师: 2010年12月30日目录1叙述21.1功能要求21.2程序描述21.3主要模块描述31.4功能结构41.5流程图101.6采用的算法162课程设计总结173附录(参考文献)181.1 功能要求基本要求:1) 输入各个项目的前三名或前五名的成绩;2) 能统计各学校的总分;3) 可以按学校编号、学校总分输出、男女团体总分输出4) 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五的学校拓展功能:可以输入学校名称,运动项目的名称1.2 程序描述本程序通过建立结构体
2、然后对学校数及名称、男女项目数及其所取名次、项目名及其对应学校编号录入,然后根据所要的输出方式进行排序输出。1.3 主要模块描述int main()SchEnter(); /学校录入ProjectEnter(); /项目录入MarkEnter(); /成绩录入MenuSelect(); /菜单选择return 0;void MenuSelect() switch(z) case 1:RuajData();break; / 学校编号排序输出 case 2:TotalSort(1);break; / 学校总分排序输出 case 3:BoySort();break; /学校男生总分排序输出 case
3、 4:GirlSort();break; /学校女生总分排序输出 case 5:NoQuery();break; / 查询某个学校成绩 case 6:SchQuery();break; / 查询某个项目成绩 case 7:SaveData();break;/退出保存1.4 功能结构该程序应具有的功能有输入,计算,排序,查看成绩,保存退出。主函数学校录入项目录入成绩录入菜单选择学校编号排序退出保存查询某个项目成绩查询某个学校成绩学校女生总分排序学校男生总分排序男总分学校总分排序1:输入(1)功能描述:实现学校数和学校名、男女项目数和项目名以及成绩取前五的项目编号的录入,以及成绩的初始化和计算。
4、(2)设计说明:为了使入字母程序不产生错误使用了atoi函数,为了使屏幕简洁化使用了清屏函数system(cls)。(3)操作说明:输入学校数目、男女项目数都得在1-20之间,成绩取前五的编号不得大于男女项目数的总和,学校名称、项目名称、成绩取前五的编号不得重复。学校录入的效果图如下如果输入的学校数目不是1-20则会提示出错,假如输入的学校名重复则会提醒你与第几个重复并要求重新输入。其效果图如下:项目录入效果图如下:如果输入的男女项目数不是1-20则会提示出错,假如输入名次取前五的编号及项目名称重复则会提醒你与第几个重复并要求重新输入。其效果图如下:成绩录入效果图如下:如果输入数字不在1-w+
5、m(这里w,m分别取3)之间则会提示你出错,要求你重新输入;效果图如下:2菜单选择(1)功能说明:给出功能选项(2)设计说明:使用了switch()函数,进行选项选择,为了使入字母程序不产生错误使用了atoi函数。(3)操作说明:这里只有7个功能,所以我们只能选择1-7之间的选项。其效果图如下:假如输入的不是1-7;则会提示出错,效果图如下:学校编号排序输出 功能说明:按编号排列顺序输出其效果图如下:学校总分排序功能说明:按总分排列顺序输出其效果图如下:学校男生总分排序功能说明:按学校男生总分排列顺序输出其效果图如下:学校女生总分排序功能说明:按学校女生总分排列顺序输出其效果图如下:查询某个学
6、校的成绩功能说明:根据所选的编号输出学校成绩。设计说明:通过比较找到所选编号数据然后输出,为了使入字母程序不产生错误使用了atoi函数。操作说明:编号数要在1-n之间,否则会提示出错。其效果图如下:如果输入的编号不是1-n则会提示你输入错误:查询某个项目的成绩功能说明:根据所选的项目编号输出项目名,及其获得名次的学校。设计说明:通过比较找到所选编号数据然后输出,为了使入字母程序不产生错误使用了atoi函数。操作说明:编号数要在1-w+m之间,否则会提示出错。其效果图如下:如果输入的编号不是1-w+m则会提示你输入错误:退出保存功能说明:fout.open()函数生成一个txt文档然后按总分排序
7、读入成绩。设计说明:通过fout.open()函数生成一个txt文档,然后按总分排序将数据读入这个txt文档,如果选择退出,会执行exit(0)。操作说明:输入y退出,其他返回主菜单。其效果图如下:1.5 流程图主模块:开始学校输入项目输入成绩录入 主菜单 i学校编号排序输出 校录入学校总分排序分排序目录入学校男生总分排序排序绩录入学校女生总分排序查询某个学校成绩查询某个项目成绩保存退出 Y/Ni=1i=2i=3i=4i=5i=6i=7YN学校输入;i=1;开始1=n=20YN输入name判断与前面的名称是否相同i+;in数据初始化 结束NYNY输入n项目输入:i=1;开始输入m,w1=m=2
8、01=w=20YN输入name判断与前面的名称是否相同i+;iw+mNYNY是否有成绩取前五的项目输入编号编号是否正确确前五的项目是否输入完结束YNYNYN成绩录入:开始i=1;j=1;判断是否为成绩取前五的项目Y输入学校编号X;j=5;输入学校编号X;1=x=n;Proi.snumj=x;schx.score+=integralj-1;if(i=m)schx.male+=integralj-1;else schx.female+=integralj-1;j+;Proi.snumj=x;schx.score+=Integralj-1;if(i=m)schx.male+=Integralj-1;
9、else schx.female+=Integralj-1;j+;j=3;i+;j=1;i=w+m;1=xschj.numt=schi;schi=schj;schj=t;j+;j=n;i+;i=n;i=1;print(i);i+;i=n;结束YYYNNN1.6 采用的算法因为我们要进行排序,所以我们会用到线性表。typedef struct int num; /学校的编号 string name; /学校名称 int score; /学校总分 int male; /男子总分 int female; /女子总分sch21;学校的编号排序Status Arrange() for(i=1;in;i+
10、) for(j=i;j=n;j+)if(schi. num schj. num) schischj;/Arrange学校总分排序Status Arrange() for(i=1;in;i+) for(j=i;j=n;j+)if(schi. score schj. score) schischj;/Arrange学校男子总分排序Status Arrange() for(i=1;in;i+) for(j=i;j=n;j+)if(schi. male schj. male) schischj;/Arrange学校女子总分排序Status Arrange() for(i=1;in;i+) for(j=
11、i;j=n;j+)if(schi. female schj. female) schischj;/Arrange这些算法的时间复杂度都是f(n)。2 课程设计总结在这个程序当中用到的函数有system(cls):作用使屏幕整洁;atoi:把字符转化成数字,解决输入数字的地方输入字目程序出错;switch:实现功能选择,exit:退出函数;fout.open():实现文档保存。改进设想:可以增加运动员及其编号,和其每个运动员所拿到的积分数进行排名。所遇问题1:输入重复的学校、项目名称以及前五的编号时程序无法识别。解决方法:输入的编号先跟前面的比较看是否重复,如果重复就提示与哪个重复。所遇问题2:输入数字处输入字母会程序出错解决方法:使用atoi函数进行转换。备注:这里调试所用学校数:6分别为:1.中南大学2.湖南大学3湖南师范大学4湘潭大学5长沙理工大学6湖南科技大学男女项目数: 3 3项目分别为:1.男子跑步2.男子跳远3.男子跳高4.女子跑步5.女子跳远6.女子跳高成绩取前五的项目有:1 43 附录(参考文献)参考文献:1严蔚敏. 数据结构(C语言版) . 北京:清华大学出版社, 2007 2蒋清明. C语言程序设计.人民邮电出版社