数据结构运动会分数系统Word格式文档下载.docx

上传人:b****1 文档编号:3631786 上传时间:2023-05-02 格式:DOCX 页数:26 大小:94.91KB
下载 相关 举报
数据结构运动会分数系统Word格式文档下载.docx_第1页
第1页 / 共26页
数据结构运动会分数系统Word格式文档下载.docx_第2页
第2页 / 共26页
数据结构运动会分数系统Word格式文档下载.docx_第3页
第3页 / 共26页
数据结构运动会分数系统Word格式文档下载.docx_第4页
第4页 / 共26页
数据结构运动会分数系统Word格式文档下载.docx_第5页
第5页 / 共26页
数据结构运动会分数系统Word格式文档下载.docx_第6页
第6页 / 共26页
数据结构运动会分数系统Word格式文档下载.docx_第7页
第7页 / 共26页
数据结构运动会分数系统Word格式文档下载.docx_第8页
第8页 / 共26页
数据结构运动会分数系统Word格式文档下载.docx_第9页
第9页 / 共26页
数据结构运动会分数系统Word格式文档下载.docx_第10页
第10页 / 共26页
数据结构运动会分数系统Word格式文档下载.docx_第11页
第11页 / 共26页
数据结构运动会分数系统Word格式文档下载.docx_第12页
第12页 / 共26页
数据结构运动会分数系统Word格式文档下载.docx_第13页
第13页 / 共26页
数据结构运动会分数系统Word格式文档下载.docx_第14页
第14页 / 共26页
数据结构运动会分数系统Word格式文档下载.docx_第15页
第15页 / 共26页
数据结构运动会分数系统Word格式文档下载.docx_第16页
第16页 / 共26页
数据结构运动会分数系统Word格式文档下载.docx_第17页
第17页 / 共26页
数据结构运动会分数系统Word格式文档下载.docx_第18页
第18页 / 共26页
数据结构运动会分数系统Word格式文档下载.docx_第19页
第19页 / 共26页
数据结构运动会分数系统Word格式文档下载.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据结构运动会分数系统Word格式文档下载.docx

《数据结构运动会分数系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据结构运动会分数系统Word格式文档下载.docx(26页珍藏版)》请在冰点文库上搜索。

数据结构运动会分数系统Word格式文档下载.docx

structmatch//项目

{

intmatchnum;

//项目编号

intrank[3];

//名次

}mat[Max];

structschool//学校

intschoolnum;

//学校编号

inttotal;

//学校总分

intboytotal;

//男团总分

intgirltotal;

//女团总分

structmatchmat[Max];

}sch[Max];

2系统设计

2.1主要算法的设计思想

本程序主要是使用顺序表来实现操作。

一个运动会包括运动项目和参加运动会

学校。

因此构造顺序表match,school。

为了操作的方便,设计了一个总目录,

择相应序号进入各个操作,并有错误提示,每完成一个操作程序会提示选择返

目录或退出程序,对于总分的排序使用了冒泡排序。

还有用文件来存储调用。

为了使整个程序界面看起,更加惬意,又添加了背景和字体颜色设置的程序语句。

每个操作前都有操作指南

易于使用。

2.2总体设计关系图

funct0退出

funct1计算总分

funct2按学校编号排序

funct3按学校总分排序

funct4按男团总分排序

funct5按女团总分排序

funct6按学校编号查询学校某个项目情况

funct7按项目编号查询取得名次的学校

readdata从文件直接调用查看信息

input输入数据

welcom

main

xunhuan

2.3各功能模块的设计

2.3.1主函数main()

voidmain()

system("

Color1e"

);

//改变背景,前景色

welcom();

xunhuan();

}

首先是从welcom欢迎开始,然后进入xunhuan进行各种功能调用。

2.3.2输入信息、计算

totaljisuan

input

2.3.3排序

对学校总分、团体总分排序

2.3.4查询

通过学校编号、项目编号进行查询

2.3.5文件

通过对writedata()readdata()调用完成对文件存储与调用

3系统测试

1.欢迎界面

9.按项目编号查询取得名次的学校

10.从文件直接调用查看信息

出现问题:

在最初写时候用for(i=0;

i<

N;

i++)

{

printf("

******学校编号:

"

fread(&

k,sizeof(int),1,report);

printf("

%d\n"

k);

}会出现只能读取一个学校信息。

之后改进读取结构体,但仍在从文件中读取时总有随机数出现;

通过仔细检查、与同学讨论才发现是调用的结构与存储的结构不对:

for(i=0;

sch1[i],sizeof(int),1,report);

改正:

fread(&

sch1[i],sizeof(school),1,report

4总结和分工

1.总结:

课程设计是培养我们的综合能力,从设计总体结构流程、具体算法设计、调试程序等全方面考核。

在一开始写完程序后调试,有许多问题出现。

再一一检查后发现,许多小问题出现:

语句后没有分号、没有大括号、小括号等问题。

还有就是在文件存储调用方面因忘记上学期的知识,总是有问题,特别是在从文件中读取时总有随机数出现;

通过看书、与同学讨论才发现是调用的结构与存储的结构不对,经过改正后终于正确输出。

5参考文献

[1]谭浩强.程序设计

[2]严蔚敏,吴伟民.数据结构.[M]清华大学出版社,2005.

6附录

#include<

stdio.h>

#include<

process.h>

conio.h>

voidwelcom()/*开始界面,欢迎使用*/

printf("

\t***^_^^_^^_^^_^^_^^_^^_^^_^^_^^_^^_^^_^^_^^_^***\n\n"

欢迎使用运动会分数统计系统\n\n"

\t***^_^^_^^_^^_^^_^^_^^_^^_^^_^^_^^_^^_^^_^^_^***\n\n"

\n\n\n\t\t按任意键进入系统..."

getch();

cls"

voidmulu(){

\t\t************系统目录****************\n"

//目录

\t\t************************************\n"

\t\t*1.输入学校、编号信息*\t\n"

\t\t*2.统计各学校总分*\t\n"

\t\t*3.按学校编号排序输出*\t\n"

\t\t*4.按学校总分排序输出*\t\n"

\t\t*5.按男团体总分排序输出*\t\n"

\t\t*6.按女团体总分排序输出*\t\n"

\t\t*7.按学校编号查询学校某个项目情况*\t\n"

\t\t*8.按项目编号查询取得名次的学校*\t\n"

\t\t*9.从文件直接调用查看信息*\t\n"

\t\t*0.退出*\t\n"

voidfunct0()//退出系统

\n\t\t*******谢谢使用!

*******\n"

exit(0);

voidtotaljisuan()

inti,k,b;

for(i=0;

for(k=0,b=0;

k<

bm+gm;

k++)

b=sch[i].mat[k].rank[0]*5+sch[i].mat[k].rank[1]*3+sch[i].mat[k].rank[2]*2;

sch[i].total=sch[i].total+b;

if(k<

bm)

sch[i].boytotal=sch[i].boytotal+b;

if(k>

=bm)

sch[i].girltotal=sch[i].girltotal+b;

}

voidinput()//输入成绩

{

inti,j,k;

intq;

*********输入成绩**********\n"

###输入说明:

\n"

1.学校编号为1--%d;

项目编号为1--%d(1-%d为男子项目,%d-%d为女子项目).\n"

N,bm+gm,bm,bm+1,bm+gm);

2.成绩只能是'

0'

或'

1'

\n('

表示没获得该项目的该名次,'

表示获得了该项目的该名次.以'

Tab'

键前进。

)\n"

N);

输入学校个数,男团体个数,女团体个数\n"

scanf("

%d,%d,%d"

&

N,&

bm,&

gm);

i++)//初始化分数

{

sch[i].total=0;

sch[i].boytotal=0;

sch[i].girltotal=0;

for(k=0;

{

sch[i].mat[k].rank[0]=0;

sch[i].mat[k].rank[1]=0;

sch[i].mat[k].rank[2]=0;

sch[i].mat[k].matchnum=k+1;

}

******请输入学校编号:

"

loop3:

scanf("

%d"

sch[i].schoolnum);

if(sch[i].schoolnum<

0||sch[i].schoolnum>

N)

输入错误(只能是1-%d)请重新输入:

gotoloop3;

项目编号"

for(k=0;

%d"

sch[i].mat[k].matchnum);

for(j=0;

j<

3;

j++)

{

loop:

第(%d)名:

j+1);

sch[i].mat[k].rank[j]);

if(sch[i].mat[k].rank[j]!

=0&

&

sch[i].mat[k].rank[j]!

=1)

输入错误,请重新输入,成绩只能是'

gotoloop;

}totaljisuan();

##########0:

退出;

1:

返回目录。

****请选择:

loop2:

q);

if(q==0)funct0();

if(q==1)xunhuan();

else{

printf("

输入错误(只能是0或1),请重新输入:

gotoloop2;

voidfunct1()//统计各学校总分

{inti,q;

**********统计各学校总分**********\n"

**学校编号**\t\t\t\t**总分**\n"

\t%d\t\t\t\t%d\n"

sch[i].schoolnum,sch[i].total);

voidfunct2()//按学校编号排序

structschoolsch1;

inti,j,q;

N-1;

j++)

N-j-1;

if(sch[i].schoolnum>

sch[i+1].schoolnum)

sch1=sch[i];

sch[i]=sch[i+1];

sch[i+1]=sch1;

**********按学校编号排序**********\n"

voidfunct3()//按学校总分排序

if(sch[i].total<

sch[i+1].total)

**********按学校总分排序**********\n"

voidfunct4()//按男团体总分排序

if(sch[i].boytotal<

sch[i+1].boytotal)

**********按男团体总分排序**********\n"

**学校编号**\t\t**男团体总分**\n"

sch[i].schoolnum,sch[i].boytotal);

else{

voidfunct5()//按女团体总分排序

if(sch[i].girltotal<

sch[i+1].girltotal)

**********按女团体总分排序**********\n"

**学校编号**\t\t**女团体总分**\n"

sch[i].schoolnum,sch[i].girltotal);

voidfunct6()//按学校编号查询学校某个项目情况

inti,n,m,q;

**********按学校编号查询学校某个项目情况**********\n"

loop1:

*******请输入所要查询的学校编号:

n);

if(n>

!

输入错误,请重新输入!

gotoloop1;

*******请输入所要查询的项目编号:

m);

if(n==sch[i].schoolnum)

{

学校编号:

%d项目编号:

%d\n"

n,m);

if(sch[i].mat[m-1].rank[0]==1)

printf("

第一名(获得)"

if(sch[i].mat[m-1].rank[1]==1)

第二名(获得)"

if(sch[i].mat[m-1].rank[2]==1)

第三名(获得)"

elseif(sch[i].mat[m-1].rank[0]!

=1&

sch[i].mat[m-1].rank[1]!

sch[i].mat[m-1].rank[2]!

本校该项目未进入前三名"

返回目录;

2:

返回上一级。

if(q==2)gotoloop1;

输入错误,请重新输入:

voidfunct7()//按项目编号查询取得名次的学校

inti,t,q;

**********按项目编号查询取得名次的学校**********\n"

*****请输入所要查询的项目编号:

);

t);

项目编号:

t);

if(sch[i].mat[t-1].rank[0]==1)

学校%d获得第一名:

\n"

sch[i].schoolnum);

if(sch[i].mat[t-1].rank[1]==1)

学校%d获得第二名:

if(sch[i].mat[t-1].rank[2]==1)

学校%d获得第三名:

输入错误,请重新输入:

voidwritedata()//把数据存储在文件中

FILE*report;

inti;

if((report=fopen("

sportsdata.dat"

"

wb"

))==NULL)

不能打开文件\n"

exit

(1);

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

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2