课设报告.docx

上传人:b****5 文档编号:4047468 上传时间:2022-11-27 格式:DOCX 页数:21 大小:52.48KB
下载 相关 举报
课设报告.docx_第1页
第1页 / 共21页
课设报告.docx_第2页
第2页 / 共21页
课设报告.docx_第3页
第3页 / 共21页
课设报告.docx_第4页
第4页 / 共21页
课设报告.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

课设报告.docx

《课设报告.docx》由会员分享,可在线阅读,更多相关《课设报告.docx(21页珍藏版)》请在冰豆网上搜索。

课设报告.docx

课设报告

目录

一、需求分析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;jn+f;j++)

{

for(i=0;im;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;jn+f;j++)

{

for(i=0;im;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].

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1