课设报告.docx
- 文档编号:4047468
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:21
- 大小:52.48KB
课设报告.docx
《课设报告.docx》由会员分享,可在线阅读,更多相关《课设报告.docx(21页珍藏版)》请在冰豆网上搜索。
课设报告
目录
一、需求分析2
二、概要设计3
三、详细设计5
四、调试分析15
五、用户手册15
六、测试数据16
七、附录17
一、需求分析
1.声明程序所需要的存放学校各系、学生运动会成绩、学生信息数据的结构体,以便程序函数对数据的处理和操作。
2.编写程序运行所需要的增加、修改、排序、查找、保存函数,主菜单、主函数以实现题目要求。
3.用户需要输入已经获得的数据进入程序,然后在主菜单中选择自己需要的操作,数据最大可达对50个学院的成绩进行处理。
4.程序执行的命令:
(1)输入已获得的数据
(2)选择需要进行的操作
(3)输出需要的结果
二、概要设计
1、声明所需要保存数据的结构体
typedefstruct/*collegestruct*/
{
charname[10];
intnum;
}College;
typedefstruct/*scorestruct*/
{
CollegeCol[Maxnum];
struct
{
intmale;
intfemale;
}score[Maxnum][Maxnum];
intm,n,b,g;
}Score;
typedefstruct/*itemstruct*/
{
intscore;
charname[20];
}item;
2、编写解决问题函数
voidPush(Score*p);增加数据函数
voidCorrect(Score*p);修改数据函数
voidSort(Score*p);总成绩排序函数
voidMalesort(Score*p);男团体成绩排序函数
voidFemalesort(Score*p);女团体成绩排序函数
voidColsearch(Score*p);按院系查找函数
voidItemsearch(Score*p);按项目查找函数
intsave(Score*p);程序文件操作函数
voidMainmenu(Score*p);主菜单
voidmain();主函数
三、详细设计
1、结构体数据模块
typedefstruct/*collegestruct*/
{
charname[10];学院名字变量
intnum;学院编号变量
}College;
typedefstruct/*scorestruct*/
{
CollegeCol[Maxnum];
struct
{
intmale;
intfemale;
}score[Maxnum][Maxnum];
intm,n,b,g;
}Score;
typedefstruct/*itemstruct*/
{
intscore;成绩变量
charname[20];项目变量
}item;
1、各个函数内容
增加数据函数
voidPush(Score*p)
{
intflag,i,j,f,b=0,g=0;
printf("pleaseputinflagandnumber:
\n");
scanf("%d%d",&flag,&f);flag==0表示增加了新院系,f表示增加个数
if(flag==0)
{
printf("newcollegenamescore\n");
for(i=p->m+1;i<=p->m+f;i++)m表示院系个数
for(j=1;j<=p->n;j++)n表示院系编号个数
scanf("%d%d",&p->score[i][j].male,&p->score[i][j].female);
printf("newcollegenameandnum:
\n");
for(i=p->m+1;i<=p->m+f;i++)
scanf("%s%d",p->Col[i].name,&p->Col[i].num);
p->m+=f;
}
if(flag==1)
{
printf("newitemscore\n");
for(j=p->n;j
{
for(i=0;i
scanf("%d%d",&p->score[i][j].male,&p->score[i][j].female);
if(p->score[i][j].male!
=-1)b++;b表示男生的成绩个数
if(p->score[i][j].female!
=-1)g++;g表示女生成绩个数
}
p->n+=f;
p->b+=b;
p->g+=g;
}
save(p);
Mainmenu(p);
}
2、修改数据函数
voidCorrect(Score*p)/*xiugaiscore*/
{
inti,j,sex,f;
printf("collegenum,xiangmunum:
\n");
scanf("%d%d",&i,&j);
printf("xiugaiscore\n");
scanf("%d",&f);
printf("0manscore\n1womanscore\n");输入0表示修改男生成绩1表示修改女生成绩
scanf("%d",&sex);
if(sex==0)p->score[i][j].male=f;
if(sex==1)p->score[i][j].female=f;
save(p);
Mainmenu(p);
}
3、总分排序
voidSort(Score*p)/*nameallscore*/
{
inti,j;
itema[Maxnum],t;
for(i=1;i<=p->m;i++)
{
a[i].score=0;
strcpy(a[i].name,p->Col[i].name);
for(j=1;j<=p->n;j++)
{
if(p->score[i][j].male!
=0)a[i].score+=p->score[i][j].male;
if(p->score[i][j].female!
=0)a[i].score+=p->score[i][j].female;
}
}
for(i=1;i<=p->m-1;i++)
for(j=i+1;j<=p->m;j++)
if(a[i].score { t.score=a[j].score;strcpy(t.name,a[j].name); a[j].score=a[i].score;strcpy(a[j].name,a[i].name); a[i].score=t.score;strcpy(a[i].name,t.name); }对不满足条件的数据交换数据和学院名称得到从大到小顺序的数据 for(i=1;i<=p->m;i++) printf("%s: %10d\n",a[i].name,a[i].score); Mainmenu(p); } 4、男生成绩排序 voidMalesort(Score*p)/*manpaiming*/ { inti,j; itema[Maxnum],t; for(i=1;i<=p->m;i++) { a[i].score=0; strcpy(a[i].name,p->Col[i].name); for(j=1;j<=p->n;j++) { if(p->score[i][j].male! =-1)a[i].score+=p->score[i][j].male; } } for(i=1;i<=p->m-1;i++) for(j=i+1;j<=p->m;j++) if(a[i].score { t.score=a[j].score;strcpy(t.name,a[j].name); a[j].score=a[i].score;strcpy(a[j].name,a[i].name); a[i].score=t.score;strcpy(a[i].name,t.name); } for(i=1;i<=p->m;i++) printf("%s: %10d\n",a[i].name,a[i].score); Mainmenu(p); } 5、女生成绩排序 voidFemalesort(Score*p)/*jisuan*/ { inti,j; itema[Maxnum],t; for(i=1;i<=p->m;i++) { a[i].score=0; strcpy(a[i].name,p->Col[i].name); for(j=1;j<=p->n;j++) { if(p->score[i][j].female! =-1)a[i].score+=p->score[i][j].female; } } for(i=1;i<=p->m-1;i++) for(j=i+1;j<=p->m;j++) if(a[i].score { t.score=a[j].score;strcpy(t.name,a[j].name); a[j].score=a[i].score;strcpy(a[i].name,a[j].name); a[i].score=t.score;strcpy(a[i].name,t.name); } for(i=1;i<=p->m;i++) printf("%s: %10d\n",a[i].name,a[i].score); Mainmenu(p); } 6、按学院查询 voidColsearch(Score*p)/*allnamescore*/ { inti,j; printf("collegenamenum: \n"); scanf("%d",&i); for(j=1;j<=p->n;j++) { printf("man%dscore%10dwoman%dscore%10d",i,p->score[i][j].male,i,p->score[i][j].female); } Mainmenu(p); } 7、按项目查询 voidItemsearch(Score*p)/*chazhaoscore*/ { inti,j; printf("xiangmunum: \n"); scanf("%d",&i); for(j=1;j<=p->m;j++) { printf("man%dscore%10dwomen%dscore%10d",i,p->score[j][i].male,i,p->score[j][i].female); } Mainmenu(p); } 8、保存数据 intsave(Score*p) {inti,j,a=1; FILE*fp; fp=fopen("C: \\information.txt","w");打开文件 fprintf(fp,"collegenamenumxiangmumanscorewomanscore\n"); for(i=1;i<=p->m;i++&&a++) for(j=1;j<=p->n;j++) { fprintf(fp,"%d%d",p->score[i][j].male,p->score[i][j].female); printf("collegename%5scollegenumber%dmanitem%dscore%dwomanitem%dscore%d\t",p->Col[i].name,p->Col[i].num,i,p->score[i][j].male,i,p->score[i][j].female); fprintf(fp,"%3s%10d%10d%10d%10d\n",p->Col[i].name,p->Col[i].num,j,p->score[i][j].male,p->score[i][j].female); fprintf(fp,"name: %snum: %sman%dscore: %dwoman%dscore: %d",p->Col[i].name,p->Col[i].num,j,p->score[i][j].male,j,p->score[i][j].female); } fclose(fp);关闭文件 } 9、主菜单 voidMainmenu(Score*p) { intch,exit=1; printf("\nmenu\n"); printf("0.exit\n"); printf("1.Pushscore\n"); printf("2.Correctscore\n"); printf("3.Sortscore\n"); printf("4.Malesort\n"); printf("5.Femalesort\n"); printf("6.Colsearch\n"); printf("7.Itemsearch\n"); printf("8.save\n"); printf("\nmenu\n"); while(exit! =0)停止条件 {printf("pleasechoose: (0--8)\n"); scanf("%d",&ch); switch(ch) { case0: exit=0;break; case1: Push(p);break; case2: Correct(p);break; case3: Sort(p);break; case4: Malesort(p);break; case5: Femalesort(p);break; case6: Colsearch(p);break; case7: Itemsearch(p);break; case8: save(p);break; default: printf("putinthewrongnumber! "); } } } 10、主函数 voidmain() { Score*p; intt; inti,j; p=(Score*)malloc(sizeof(Score)); if(p) { printf("entercolleges,items,man,woman: \n"); scanf("%d%d%d%d",&p->m,&p->n,&p->b,&p->g); } printf("inputcollegenameandnumber: \n"); for(t=1;t<=p->m;t++) scanf("%s%d",p->Col[t].name,&p->Col[t].num); printf("inputcollegeeachitemscore: \n"); for(i=1;i<=p->m;i++) for(j=1;j<=p->n;j++) scanf("%d%d",&p->score[i][j].male,&p->score[i][j].female); Mainmenu(p); } 11、函数的调用关系反映了程序的层次结构 主函数——>菜单函数——>其他子函数——>菜单函数 用主函数接收数据调用菜单函数循环使用代码解决问题。 三、调试分析 1、开始写好了所有的处理问题的子函数但是没办法解决怎么连接起来的问题,最后参考了机房别的类似程序用菜单函数跟主函数组合调用子函数完成程序。 2、对程序的数据接收记得不是很清楚一输入错误就没办法继续使用跳不出程序,后面记住了数据顺序就没有问题。 3、程序缺少文件操作的读取功能,找了一些资料还是没办法解决结构体数据的读取程序。 五、用户手册 ⒈本程序的运行环境为DOS操作系统,执行文件为ydh.exe; ⒉进入演示程序后,即显示对话形式的提示操作过程, 如: 要求输入院系名称和学院编号 输入院系名称和学院编号 输入各个项目的成绩: 输入完毕选择需要的操作得到结果 在菜单函数输入0结束程序 六、测试数据 打印已经输入的数据: 对成绩进行排序: 七、附录 源代码 #include #include #include #defineMaxnum50 typedefstruct/*collegestruct*/ { charname[10]; intnum; }College; typedefstruct/*scorestruct*/ { CollegeCol[Maxnum]; struct { intmale; intfemale; }score[Maxnum][Maxnum]; intm,n,b,g; }Score; typedefstruct/*itemstruct*/ { intscore; charname[20]; }item; voidMainmenu(Score*p);/*mainmenu*/ voidPush(Score*p) { intflag,i,j,f,b=0,g=0; printf("pleaseputinflagandnumber: \n"); scanf("%d%d",&flag,&f); if(flag==0) { printf("newcollegenamescore\n"); for(i=p->m+1;i<=p->m+f;i++) for(j=1;j<=p->n;j++) scanf("%d%d",&p->score[i][j].male,&p->score[i][j].female); printf("newcollegenameandnum: \n"); for(i=p->m+1;i<=p->m+f;i++) scanf("%s%d",p->Col[i].name,&p->Col[i].num); p->m+=f; } if(flag==1) { printf("newitemscore\n"); for(j=p->n;j { for(i=0;i scanf("%d%d",&p->score[i][j].male,&p->score[i][j].female); if(p->score[i][j].male! =-1)b++; if(p->score[i][j].female! =-1)g++; } p->n+=f; p->b+=b; p->g+=g; } save(p); Mainmenu(p); } voidCorrect(Score*p)/*xiugaiscore*/ { inti,j,sex,f; printf("collegenum,xiangmunum: \n"); scanf("%d%d",&i,&j); printf("xiugaiscore\n"); scanf("%d",&f); printf("0manscore\n" "1womanscore\n"); scanf("%d",&sex); if(sex==0)p->score[i][j].male=f; if(sex==1)p->score[i][j].female=f; save(p); Mainmenu(p); } voidSort(Score*p)/*nameallscore*/ { inti,j; itema[Maxnum],t; for(i=1;i<=p->m;i++) { a[i].score=0; strcpy(a[i].name,p->Col[i].name); for(j=1;j<=p->n;j++) { if(p->score[i][j].male! =0)a[i].score+=p->score[i][j].male; if(p->score[i][j].female! =0)a[i].score+=p->score[i][j].female; } } for(i=1;i<=p->m-1;i++) for(j=i+1;j<=p->m;j++) if(a[i].score { t.score=a[j].score;strcpy(t.name,a[j].name); a[j].score=a[i].score;strcpy(a[j].name,a[i].name); a[i].score=t.score;strcpy(a[i].name,t.name); } for(i=1;i<=p->m;i++) printf("%s: %10d\n",a[i].name,a[i].score); Mainmenu(p); } voidMalesort(Score*p)/*manpaiming*/ { inti,j; itema[Maxnum],t; for(i=1;i<=p->m;i++) { a[i].score=0; strcpy(a[i].name,p->Col[i].name); for(j=1;j<=p->n;j++) { if(p->score[i][j].male! =-1)a[i].score+=p->score[i][j].male; } } for(i=1;i<=p->m-1;i++) for(j=i+1;j<=p->m;j++) if(a[i].score { t.score=a[j].score;strcpy(t.name,a[j].name); a[j].score=a[i].score;strcpy(a[j].name,a[i].
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)