数据结构实验运动会分数统计实验报告

更新时间:2024-03-07 17:21:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验报告

题目:运动会分数统计

班级:14电子商务平台建设班 完成日期:2015.10.10 学号:20141103468 姓名: 孙少辉 学号:20141103421 姓名: 杨德龙 学号:20141103407 姓名: 柴益新 一:需求分析

参加运动会的n个学校编号为1~n。比赛分成m个男子项目和w个女子项目,项目编号分别为1~m和m+1~m+w。有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。 【基本要求】

产生各学校的成绩单,内容包括各校所取得的每项成绩的项目号、名次(成绩)、姓名和得分 ;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分。

结于n=4,m=3,w=2,编号为奇数的项目取前五名,编号为公里数的项目取前三名,设计一组实例数据。 【项目约束】

可以假设n≤20,m≤30,w≤20,姓名长度不超过20个字符。每个项目结束时,将其编号、类型符(区分取前五名还是前三名)输入,

并按名次顺序输入运动员姓名、校名(和成绩)。 二:概要设计

采用结构体二维数组存储方式产生各学校的成绩单,内容包括各校所取得的每项成绩的项目号、名次(成绩)、姓名和得分 ;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分。 三:详细设计 1:数据结构的定义 元素类型、变量、指针类型

(1) 项目数据表:运动会开始前必须详细制定本次运动会所需的参

赛项目为接下来报名、场地的准备提供依据。本数据表根据要求设计存储每个项目的编号、名称、要取的名次以及各个名次对应的学校的编号,在初始输入时仅输入项目编号、名称及要取的名次,而各名次对应的学校编号将由系统自动统计。这也有利于以后项目情况的查询。

3.1结构体 结构体名 数据类型 数据名 char int char School int char int int int 3.2子函数 出口参数 name[20] schoolnum projectmane[50][20] projectscouer[50] 备注 学校名称 学校编号 项目编号及名称 项目得分 projectstudentmane[50][20] 获奖学生姓名 sum menscouer womenscouer 团体总分 男子总分 女子总分 函数名 入口参数 功能介绍 main() 实现学校输入 项目输入 调用主页面 welcome() 选择各类操作以转至其他页面 input() 输入项目编号及名称 1.判断所输项目是取前choose() int j,char s[20] int g; 三或前五 2.返回经判断后的项目的编号与名称 three() int j,char j 1.按名次判断得分,按项

s[20] 目编号判断男女得分 2.返回经判断后的项目的编号 1.按名次判断得分,按项five() int j,char s[20] j 目编号判断男女得分 2.返回经判断后的项目的编号 按规定顺序查询n个output() 学校中某一学校的得分信息 按规定顺序产生团体sumput() 总分报表 goodbye() 弹出退出界面并退出程序

3:函数调用关系

Main() welcome() input() output() sumput() Goodbye()

四:调试分析

在调试的过程中,我们发现了在查询成绩功能是只能按照各个学校的编号进行查询选手,学校的成绩信息,查询功能有待健壮完善。 五:用户使用说明

(1) 首先运行文件运动会统计分数系统 (2) 输入信息:

1.输入学校数量→2.输入各个学校名称→3.男子运动项目数量→4.女子运

动项目数量。

敲下回车后进入welcome界面中

进入1数据输入→输入运动会项目名称→输入该项目的打分规则→依次录入学校的排名情况

(2) 输出信息:

3

(3) 查询信息:

按任意键返回主页面,输入

2

进行信息查询

查询结束后按任意键返回主界面输入4退出系统如下图所示

源代码 /**

***项目名称:运动会统计系统

***设计者:杨德龙,柴益新,孙少辉 ***时 间:2015.10.16

***实现目标:1.产生各学校的成绩单,内容包括各校所取得的每项成绩的项目号、名次(成绩)、姓名和得分 ;

2.产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分。 *** *** *** ***/

#include #include #include #include /*

*n个学校编号为1~n

*m个男子项目,编号为1~m

*w个女子项目,编号为m+1~m+w */

int n,m,w; /*

*学校信息结构体

* 目的:1.按此结构体存贮数据

* 2.产生各学校的成绩单,内容包括各校所取得的每项成绩的项目号、名次(成绩)、姓名和得分 ; */

struct school {

char name[20]; //学校名称 int schoolnum; //学校编号

char projectmane[50][20]; //项目编号及名称 int projectscouer[50]; //项目得分

char projectstudentmane[50][20]; //获奖学生姓名 int sum; //团体总分

int menscouer; //男子总分 int womenscouer; //女子总分 }num[20]; /*

*主函数

*目的:1.实现学校输入 * 2.项目输入 */

int main() {

int i,j;

void welcome();//调用主界面

printf(\请输入学校数量\\n\ scanf(\

//输入学校名称,并初始化数据 for(i=1;i<=n;i++) {

printf(\请输入第%d学校的名称:\ scanf(\

num[i].schoolnum=i; //学校编号初始 num[i].menscouer=0; //男子团体分初始 num[i].womenscouer=0; //女子团体分初始 num[i].sum=0; //团体总分初始 for(j=1;j<=50;j++) //各项目得分初始 num[i].projectscouer[j]=0; }

printf(\请输入男子项目个数:\ scanf(\

printf(\请输入女子项目个数:\ scanf(\ welcome(); return 0; } /*

*主界面函数:

*目的:选择各类操作以转至其他页面 */

void welcome() {

system(\ int n;

void input(); void output(); void sumput(); void goodbye();

//读取这个welcome界面并显示 FILE *welcome;

welcome=fopen(\新建文件夹//welcome.txt\ char s[60];

while(fgets(s,60,welcome)) printf(\ printf(\

//选择进入子页面

while(scanf(\ {

if(n==1)

input(); //调用输入函数 else if(n==2)

output(); //调用输出函数 else if(n==3)

sumput();//调用求和函数 else if(n==4)

goodbye();//调用退出函数 else

printf(\输入有误,请重新输入:\\n\输入错误提示 } } /*

*数据输入函数:

*目的:选择各类操作以转至其他页面 */

void input() {

void welcome(); int j,k;

int choose(int j,char s[20]);

char s[20];

for(j=1;j<=w+m;j++) {

printf(\请输入第%d个项目名称:\ scanf(\ for(k=1;k<=n;k++)

strcpy(num[k].projectmane[j],s);//输入项目名称(将所输入的数组拷贝至项目组中)

j=choose(j,s);//调用项目类型选择函数 }

welcome(); } /*

*项目类型选择函数(3或5名)

*目的:1.判断所输项目是取前三或前五 2.返回经判断后的项目的编号与名称 */

int choose(int j,char s[20]) {

int l; int g;

int three(int j,char s[20]); int five(int j,char s[20]);

//输入3,5分别调用不同的函数来判断

printf(\请选择此项目取前五还是前三(3或5):\ while(scanf(\ {

if(l==3) {

g=three(j,s); return g; }

else if(l==5) {

g=five(j,s); return g; } else

printf(\输入错误,请重新输入:\ } }

/*

*取前3的项目函数

*目的:1.按名次判断得分,按项目编号判断男女得分 2.返回经判断后的项目的编号 */

int three(int j,char s[20]) {

//输入前三名获奖者信息,输入次序为学校编号加获奖者姓名 int p,b;

for(p=1;p<=3;p++) {

printf(\请输入第%d名的校编号:\ scanf(\

printf(\请输入获奖者姓名:\

scanf(\ //第一名得分为5 if(p==1) {

num[b].projectscouer[j]=num[b].projectscouer[j]+5; num[b].sum=num[b].sum+5; if(j>m)

num[b].womenscouer=num[b].womenscouer+5;//从第m个开始为女子项目得分 else

num[b].menscouer=num[b].menscouer+5;//前m个为男子项目得分 }

//第二名得分为3 else if(p==2) {

num[b].projectscouer[j]=num[b].projectscouer[j]+3; num[b].sum=num[b].sum+3; if(j>m)

num[b].womenscouer=num[b].womenscouer+3; else

num[b].menscouer=num[b].menscouer+3; }

//第三名得分为2 else if(p==3) {

num[b].projectscouer[j]=num[b].projectscouer[j]+2; num[b].sum=num[b].sum+2; if(j>m)

num[b].womenscouer=num[b].womenscouer+2; else

num[b].menscouer=num[b].menscouer+2; } }

return j; } /*

*取前5的项目函数

*目的:1.按名次判断得分,按项目编号判断男女得分 2.返回经判断后的项目的编号 */

int five(int j,char s[20]) {

int p,b;

//输入前五名获奖者信息,输入次序为学校编号加获奖者姓名 for(p=1;p<=5;p++) {

printf(\请输入第%d名的校编号:\ scanf(\

printf(\请输入获奖者姓名:\

scanf(\ //第一名得分为7 if(p==1) {

num[b].projectscouer[j]=num[b].projectscouer[j]+7; num[b].sum=num[b].sum+7; if(j>m)

num[b].womenscouer=num[b].womenscouer+7; else

num[b].menscouer=num[b].menscouer+7; }

//第二名得分为5 else if(p==2) {

num[b].projectscouer[j]=num[b].projectscouer[j]+5; num[b].sum=num[b].sum+5; if(j>m)

num[b].womenscouer=num[b].womenscouer+5; else

num[b].menscouer=num[b].menscouer+5; }

//第三名得分为3 else if(p==3)

{

num[b].projectscouer[j]=num[b].projectscouer[j]+3; num[b].sum=num[b].sum+3; if(j>m)

num[b].womenscouer=num[b].womenscouer+3; else

num[b].menscouer=num[b].menscouer+3; }

//第四名得分为2 else if(p==4) {

num[b].projectscouer[j]=num[b].projectscouer[j]+2; num[b].sum=num[b].sum+2; if(j>m)

num[b].womenscouer=num[b].womenscouer+2; else

num[b].menscouer=num[b].menscouer+2; }

//第四名得分为1 else if(p==5) {

num[b].projectscouer[j]=num[b].projectscouer[j]+1; num[b].sum=num[b].sum+1; if(j>m)

num[b].womenscouer=num[b].womenscouer+1; else

num[b].menscouer=num[b].menscouer+1; } }

return j; } /*

*选择输出函数:

*目的:按规定顺序查询n个学校中某一学校的得分信息 */

void output() {

system(\ int t,i;

void welcome();

printf(\请输入要查询的学校编号:\ while(scanf(\ {

//保证所输序号为0 ~ n

if(t>0 && t<=n) {

for(i=1;i<=w+m;i++)

printf(\学校编号:%d 学校名称:%s 项目编号:%d 项目名称:%s 项目得分:%d 获奖者:%s\\n\

num[t].name,i,num[t].projectmane[i],num[t].projectscouer[i],num[t].projectstudentmane[i]); system(\ welcome(); } else

printf(\输入错误,请重新输入:\ } } /*

*总体输出函数

*目的:按规定顺序产生团体总分报表 */

void sumput() {

system(\ void welcome(); int i;

for(i=1;i<=n;i++) {

printf(\学校编号:%d 学校名称:%s 团体总分:%d 男子总分:%d 女子总分:%d\\n\ouer); }

system(\ welcome(); } /*

*退出页面

*目的:弹出退出界面并退出程序 */

void goodbye() {

system(\ printf(\谢谢使用!!\\n\ printf(\祝你生活愉快!!\\n\

exit(0); //结束 }

本文来源:https://www.bwwdw.com/article/20ga.html

Top