数据结构课程设计-运动会

数据结构结业课程设计--运动会计分系统

/*  参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20) 
  【基本要求】 
  (1)可以输入各个项目的前三名或前五名的成绩; 
  (2)能统计各学校总分, 
  (3)可以按学校编号或名称、学校总分、男女团体总分排序输出; 
  (4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。 
  (5)存储结构自选,但要求运动会的相关数据存入并能随时查询  
  (6)规定:输入数据形式和范围:可以输入学校的名称,运动项目的名称 
  (7)输出形式:有中文提示,各学校分数为整形 

(8)界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。*/  


直接上代码:

# include <stdio.h>
# include <stdlib.h>
# define N 12             //大学和项目名称的长度=汉字个数*sizeof(char)
# define M 20             //大学的数量
# define Q 20             //项目的数量
# define H 5               //调整每一行输出的学校或项目数量 现在一行输出5个
# define MIN(a,b) (a)<(b)?(a):(b)
const char wenjian[]="out.bin";//文件名
typedef struct link
{
    int gram[3][Q];       //每一个项目gram[0]存男生,gram[1]存女生,gram[2]存这个学校中男女在此项目上的总分
    int sum[3];
} AA,*Aa;
typedef struct HEAD
{
    int b[4];                     //b[0-3]依次为(学校个数,项目个数,男生项目个数,女生项目个数
    char xuexiao[M][N+1];  //M个学校的名称
    int sex[M];                 //sex[i]//录入性别,0为男,1为女
    struct link spot[M];   //接上M个学校的信息
    char xiangmu[Q][N+1]; //Q个项目的名称
    int  power[Q];           //每一个项目都有选择前三名或前五名的机会 POW存 3 或者 5
    int cun[Q][5];            //M个项目的学校编号排名1--3 或者 1--5
} HEAD;
char sex[][3]= {"男","女"};
int power[][5]= {
  {5,3,2,0,0},{7,5,3,2,1}}; //积分
char ss[][5]= {"男团","女团","学校"};

int gainchar(char A[],int min,int max);   //输入字符串的字节范围[min,max]
int gainint(int *p,int a,int b);//输入int *p直至满足[a,b]输入结束,并返回*p的位数
int BF(char a[],char b[]);//BF算法 a为主串,b为被检验的串`返回b在a中的第一个下标 若无返回0
void record(char school[][N+1],char game[][N+1],int b[],HEAD *temp);//记录数据最重要的一个函数,a为项目数组,b为记录,c为学校,Temp结构体
int jiemian();//用户显示界面
int jianyan(char b[],int T);//检验b[]是否符合实际,T=0检验当前字符串是否全为汉字 T=1检验学校,T=2检验比赛 检验符合返回0
void xuanzepai(HEAD *temp,int select);//选择排序
/*下面是检查用的数组 用在jianyan 函数中*/
char key[][3]= {"!","。","?","《","》",",","{","}","(",")","¥","‘","’",":",";","—","”","“","、","·","~","\0"};
char school[][5]= {"大学","学院","华侨","校区","政法","管理","经济","科学","理工","科技","技术","职业","师范","中国","海洋","石油","分区","分校","建筑"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值