1、课设报告目录一、需求分析 2二、概要设计 3三、详细设计 5四、调试分析 15五、用户手册 15六、测试数据 16七、附录 17一、 需求分析1. 声明程序所需要的存放学校各系、学生运动会成绩、学生信息数据的结构体,以便程序函数对数据的处理和操作。2. 编写程序运行所需要的增加、修改、排序、查找、保存函数,主菜单、主函数以实现题目要求。3. 用户需要输入已经获得的数据进入程序,然后在主菜单中选择自己需要的操作,数据最大可达对50个学院的成绩进行处理。4. 程序执行的命令:(1) 输入已获得的数据(2) 选择需要进行的操作(3) 输出需要的结果二、 概要设计1、 声明所需要保存数据的结构体typ
2、edef struct /*collegestruct*/ char name10; int num;College;typedef struct /*scorestruct*/College ColMaxnum;struct int male; int female;scoreMaxnumMaxnum;int m,n,b,g;Score;typedef struct /*itemstruct*/ int score; char name20;item;2、 编写解决问题函数void Push(Score *p); 增加数据函数void Correct(Score *p); 修改数据函数voi
3、d Sort(Score *p); 总成绩排序函数void Malesort(Score *p); 男团体成绩排序函数void Femalesort(Score *p); 女团体成绩排序函数void Colsearch(Score *p); 按院系查找函数void Itemsearch(Score *p); 按项目查找函数int save(Score *p); 程序文件操作函数void Mainmenu(Score *p); 主菜单void main(); 主函数三、详细设计1、结构体数据模块 typedef struct /*collegestruct*/ char name10;学院名字变
4、量 int num;学院编号变量College;typedef struct /*scorestruct*/ College ColMaxnum; struct int male; int female; scoreMaxnumMaxnum; int m,n,b,g;Score;typedef struct /*itemstruct*/ int score;成绩变量 char name20;项目变量item;1、 各个函数内容增加数据函数void Push(Score *p) int flag,i,j,f,b=0,g=0; printf(please put in flag and numbe
5、r:n); scanf(%d %d,&flag,&f);flag=0表示增加了新院系,f表示增加个数 if(flag=0) printf(new college name scoren); for(i=p-m+1;im+f;i+)m表示院系个数 for(j=1;jn;j+)n表示院系编号个数 scanf(%d%d,&p-scoreij.male,&p-scoreij.female); printf(new college name and num:n); for(i=p-m+1;im+f;i+) scanf(%s %d,p-Coli.name,&p-Coli.num); p-m+=f; if(
6、flag=1) printf(new item scoren); for(j=p-n ;jn+f;j+) for(i=0;im;i+) scanf(%d %d,&p-scoreij.male,&p-scoreij.female); if(p-scoreij.male!=-1)b+;b表示男生的成绩个数 if(p-scoreij.female!=-1)g+;g表示女生成绩个数 p-n+=f; p-b+=b; p-g+=g; save(p); Mainmenu(p);2、 修改数据函数void Correct(Score *p) /*xiugaiscore*/ int i,j,sex,f; pri
7、ntf(college num,xiangmu num:n); scanf(%d %d,&i,&j); printf(xiugai scoren); scanf(%d,&f); printf(0manscoren1womanscoren);输入0表示修改男生成绩1表示修改女生成绩 scanf(%d,&sex); if(sex=0)p-scoreij.male=f; if(sex=1)p-scoreij.female=f; save(p); Mainmenu(p);3、 总分排序void Sort(Score *p) /*nameallscore*/ int i,j; item aMaxnum,
8、t; for(i=1;im;i+) ai.score=0; strcpy(ai.name,p-Coli.name); for(j=1;jn;j+) if(p-scoreij.male!=0)ai.score+=p-scoreij.male; if(p-scoreij.female!=0)ai.score+=p-scoreij.female; for(i=1;im-1;i+) for(j=i+1;jm;j+) if(ai.scoreaj.score) t.score=aj.score;strcpy(t.name,aj.name); aj.score=ai.score;strcpy(aj.name
9、,ai.name); ai.score=t.score;strcpy(ai.name,t.name); 对不满足条件的数据交换数据和学院名称得到从大到小顺序的数据 for(i=1;im;i+) printf(%s:%10dn,ai.name,ai.score); Mainmenu(p);4、 男生成绩排序void Malesort(Score *p) /*manpaiming*/ int i,j; item aMaxnum,t; for(i=1;im;i+) ai.score=0; strcpy(ai.name,p-Coli.name); for(j=1;jn;j+) if(p-scoreij
10、.male!=-1) ai.score+=p-scoreij.male; for(i=1;im-1;i+) for(j=i+1;jm;j+) if(ai.scoreaj.score) t.score=aj.score;strcpy(t.name,aj.name); aj.score=ai.score;strcpy(aj.name,ai.name); ai.score=t.score;strcpy(ai.name,t.name); for(i=1;im;i+) printf(%s:%10dn,ai.name,ai.score); Mainmenu(p);5、 女生成绩排序void Females
11、ort(Score *p) /*jisuan*/ int i,j; item aMaxnum,t; for(i=1;im;i+) ai.score=0; strcpy(ai.name,p-Coli.name); for(j=1;jn;j+) if(p-scoreij.female!=-1)ai.score+=p-scoreij.female; for(i=1;im-1;i+) for(j=i+1;jm;j+) if(ai.scoreaj.score) t.score=aj.score;strcpy(t.name,aj.name); aj.score=ai.score;strcpy(ai.nam
12、e,aj.name); ai.score=t.score;strcpy(ai.name,t.name); for(i=1;im;i+) printf(%s:%10dn,ai.name,ai.score); Mainmenu(p);6、 按学院查询void Colsearch(Score *p) /*allnamescore*/ int i,j;printf(college name num:n); scanf(%d,&i); for(j=1;jn;j+) printf(man%dscore%10d woman%dscore%10d,i,p-scoreij.male,i,p-scoreij.fe
13、male); Mainmenu(p);7、 按项目查询void Itemsearch(Score *p) /*chazhaoscore*/ int i,j; printf(xiang mu num:n); scanf(%d,&i); for(j=1;jm;j+) printf(man%dscore%10d women%d score%10d,i,p-scoreji.male,i,p-scoreji.female); Mainmenu(p);8、 保存数据int save(Score *p) int i,j,a=1; FILE *fp; fp=fopen(C:information.txt,w)
14、;打开文件 fprintf(fp,college name num xiangmu man score woman scoren); for(i=1;im;i+&a+) for(j=1;jn;j+) fprintf(fp,%d%d,p-scoreij.male,p-scoreij.female); printf(college name%5s college number%d man item%d score%d woman item%d score %dt,p-Coli.name,p-Coli.num,i,p-scoreij.male,i,p-scoreij.female); fprintf
15、(fp,%3s %10d %10d %10d %10dn,p-Coli.name,p-Coli.num,j,p-scoreij.male,p-scoreij.female); fprintf(fp,name:%s num:%s man%d score:%d woman%d score:%d,p-Coli.name,p-Coli.num,j,p-scoreij.male,j,p-scoreij.female); fclose(fp);关闭文件9、 主菜单void Mainmenu(Score *p) int ch,exit=1; printf(n menu n); printf(0.exit n
16、); printf(1.Push scoren); printf(2.Correct scoren); printf(3.Sort scoren); printf(4.Malesort n); printf(5.Femalesort n); printf(6.Colsearch n); printf(7.Itemsearch n); printf(8.save n); printf(n menu n); while(exit!=0)停止条件 printf(please choose:(0-8) n); scanf(%d,&ch); switch(ch) case 0: exit=0;break
17、; case 1:Push(p);break; case 2:Correct(p);break; case 3:Sort(p);break; case 4:Malesort(p);break; case 5:Femalesort(p);break; case 6:Colsearch(p);break; case 7:Itemsearch(p);break; case 8:save(p);break; default: printf(put in the wrong number!); 10、 主函数void main() Score *p; int t; int i,j; p=(Score *
18、)malloc(sizeof(Score); if(p) printf(enter colleges,items,man,woman:n); scanf(%d %d %d %d,&p-m,&p-n,&p-b,&p-g); printf(input college name and number:n); for(t=1;tm;t+) scanf(%s%d,p-Colt.name,&p-Colt.num); printf(input college each item score:n); for(i=1;im;i+) for(j=1;jn;j+) scanf(%d%d,&p-scoreij.mal
19、e,&p-scoreij.female); Mainmenu(p);11、 函数的调用关系反映了程序的层次结构 主函数菜单函数其他子函数菜单函数用主函数接收数据调用菜单函数循环使用代码解决问题。 三、 调试分析1、开始写好了所有的处理问题的子函数但是没办法解决怎么连接起来的问题,最后参考了机房别的类似程序用菜单函数跟主函数组合调用子函数完成程序。2、对程序的数据接收记得不是很清楚一输入错误就没办法继续使用跳不出程序,后面记住了数据顺序就没有问题。3、程序缺少文件操作的读取功能,找了一些资料还是没办法解决结构体数据的读取程序。五、用户手册 本程序的运行环境为DOS操作系统,执行文件为ydh.ex
20、e; 进入演示程序后,即显示对话形式的提示操作过程,如:要求输入院系名称和学院编号输入院系名称和学院编号输入各个项目的成绩:输入完毕选择需要的操作得到结果在菜单函数输入0结束程序六、测试数据 打印已经输入的数据: 对成绩进行排序:七、附录 源代码#include#include#include#define Maxnum 50typedef struct /*collegestruct*/ char name10; int num;College;typedef struct /*scorestruct*/ College ColMaxnum; struct int male; int fem
21、ale; scoreMaxnumMaxnum; int m,n,b,g;Score;typedef struct /*itemstruct*/ int score; char name20;item;void Mainmenu(Score *p); /*mainmenu*/void Push(Score *p) int flag,i,j,f,b=0,g=0; printf(please put in flag and number:n); scanf(%d %d,&flag,&f); if(flag=0) printf(new college name scoren); for(i=p-m+1
22、;im+f;i+) for(j=1;jn;j+) scanf(%d%d,&p-scoreij.male,&p-scoreij.female); printf(new college name and num:n); for(i=p-m+1;im+f;i+) scanf(%s %d,p-Coli.name,&p-Coli.num); p-m+=f; if(flag=1) printf(new item scoren); for(j=p-n ;jn+f;j+) for(i=0;im;i+) scanf(%d %d,&p-scoreij.male,&p-scoreij.female); if(p-s
23、coreij.male!=-1)b+; if(p-scoreij.female!=-1)g+; p-n+=f; p-b+=b; p-g+=g; save(p); Mainmenu(p);void Correct(Score *p) /*xiugaiscore*/ int i,j,sex,f; printf(college num,xiangmu num:n); scanf(%d %d,&i,&j); printf(xiugai scoren); scanf(%d,&f); printf(0manscoren 1womanscoren); scanf(%d,&sex); if(sex=0)p-s
24、coreij.male=f; if(sex=1)p-scoreij.female=f; save(p); Mainmenu(p);void Sort(Score *p) /*nameallscore*/ int i,j; item aMaxnum,t; for(i=1;im;i+) ai.score=0; strcpy(ai.name,p-Coli.name); for(j=1;jn;j+) if(p-scoreij.male!=0)ai.score+=p-scoreij.male; if(p-scoreij.female!=0)ai.score+=p-scoreij.female; for(
25、i=1;im-1;i+) for(j=i+1;jm;j+) if(ai.scoreaj.score) t.score=aj.score;strcpy(t.name,aj.name); aj.score=ai.score;strcpy(aj.name,ai.name); ai.score=t.score;strcpy(ai.name,t.name); for(i=1;im;i+) printf(%s:%10dn,ai.name,ai.score); Mainmenu(p);void Malesort(Score *p) /*manpaiming*/ int i,j; item aMaxnum,t; for(i=1;im;i+) ai.score=0; strcpy(ai.name,p-Coli.name); for(j=1;jn;j+) if(p-scoreij.male!=-1) ai.score+=p-scoreij.male; for(i=1;im-1;i+) for(j=i+1;jm;j+) if(ai.scoreaj.score) t.score=aj.score;strcpy(t.name,aj.name); aj.score=ai.score;strcpy(aj.name,ai.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1