数据结构课程设计运动会分数统计(运动会成绩统计系统)

本文目录
运动会成绩统计系统
数据结构课程设计
一.需求分析
1问题描述
运动会分数统计
参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1~m,女子m+1~m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些项目取前五名或前三名由学生自己设定。(m《=20,n《=20)
2. 基本要求:
1) 可以输入各个项目的前三名或前五名的成绩;
2) 能统计各学校总分;
3) 可以按学校编号、学校总分、男女团体总分排序输出;
4) 可以按学校编号查询学校某个项目的情况;
5) 可以按项目编号查询取得前三或前五名的学校。
3.测试数据
1)首先进入成绩录入界面,先输入学校编号1,再输入学校1各个项目成绩0或1(‘0’表示没获得该项目的该名次,‘1’表示获得了该项目的该名次);
然后再输入第二个学校编号2,再输入成绩;当输入其他的学校编号和成绩会提示错误输入,重新输入。
2)然后进入总目录,输入 :1 统计各学校总分并输出;
3)输入:2 按学校编号排序输出;
4)输入:3 按学校总分排序输出;
5)输入:4 按男团体总分排序输出;
6)输入: 5 按女团体总分排序输出;
7) 输入:6 按学校编号查询学校某个项目情况;
8)输入:7 按项目编号查询取得名次的学校;
9)输入:0 退出系统;
10)输入其他数据会提示错误输入,重新输入。
二、概要设计
1 结构体
运动项目
{ 项目编号 ;名次;};
学校
{ 学校编号销举;项目;团体总分;男团体总分;女团体总分;};
2 主程序(main)
包括登陆欢迎程序,分数录入程序,查询程序,退出程序
3 程序模块机之间的调用关系
流程图
三、详细设计
1、宏定义:
#define N 2
#define bm 4
#define gm 3
2、数据类型定义
(1)运动项目的定义:
struct match
{
int matchnum;
int rank;
}mat;
(2)学校的定义:
struct school
{
int schoolnum;
struct match mat;
int total;
int boytotal;
int girltotal;
}sch;
3、函数之间的调用关系
4、算法设计
主要算法的设计思想:
本程序主要是使用顺序表来实现操作。一个运动会包括运动项目和参加运动会的学校。因此构造顺序表match,school。为了操作的方便,设计了一个总目录,选择相应序号进入各个操作,并有错误提示,每完成一个操作程序会提示选择返回目录或退出程序,对于总分的排序使用了冒泡排序。为了使整个程序界面看起来更加惬意,又添加了背景和字体颜色设置的程序语句。每个操作前都有操作指南,易于使用。
四、调试分析
1、由渗答于刚开始程序比较简单,虽能运行,但处理错误的能力很低,后来经过反复的添加修改,使程丛斗慧序能处理了错误,提高了健壮性。
2、开始编时由于不太规范,编译出错后由于程序长,很难找到错误,后来规范了格式,错误容易找到了,以后编程要规范。
3、算法的时空分析
线性表使用的是顺序结构,各种算法的时间复杂度相对比较合理
4、本程序相对来说比较容易看明白,其中涉及到的一些函数相对来说比较容易。通过调试,运行,基本上达到了要求,但还存在一些缺点。如:不够人性化等。
五、测试结果
《1》数据输入(输入成绩如图)
输入:
请输入学校编号:1
项目编号1234567
第《1》名: 1 0 0 1 1 0 0
第《2》名: 1 1 1 0 0 1 0
第《3》名: 0 0 0 0 1 1 1
请输入学校编号: 2
项目编号 1 2 3 4 5 6 7
第《1》名: 0 1 1 0 0 1 1
第《2》名: 0 0 0 1 1 0 1
第《3》名: 1 1 1 1 0 0 0
输入成绩后出现总目录(下图);
(1)输入:1
输出:
(2)输入:1 返回总目录,再输入:2
输出:
(3)输入:1 返回总目录,再输入:3
输出:
(4)输入:1 返回总目录,再输入:4
输出:
(5)输入:1 返回总目录,再输入:5
输出:
(6)输入:1 返回总目录,再输入:6,学校编号输入:1,项目编号输入:5
输出:
(7)输入:2,返回上一级,再输入学校编号:2,项目编号:1
输出:
(8)输入:1,返回总目录;再输入:7,输入项目编号:7
输出:
(9)如果输入提示外的数字,例如输入:4
则输出错误提示:
(10)输入:0
输出:
六、用户手册
1、运行环境
Windows,VC++6.0
2、用户界面
3、操作过程
(1)用户进入运动会分数统计系统程序欢迎界面
(2)录入成绩,先输入要输入的学校编号,1或2;再输入对应学校的1-7项目的成绩(成绩用0或1:‘0’表示没获得该项目的该名次,‘1’表示获得了该项目的该名次)当成绩录入错误时会有错误提示。
(3)进入总目录,按提示,输入0--7中的一个数;
输入:0 则推出系统;
输入:1 统计各学校总分并输出;然后选择‘0’或‘1’(‘0’表示退出系统,‘1’表示返回总目录);
输入:2 按学校编号排序输出;然后选择‘0’或‘1’(‘0’表示退出系统,‘1’表示返回总目录);
输入:3 按学校总分排序输出;然后选择‘0’或‘1’(‘0’表示退出系统,‘1’表示返回总目录);
输入:4 按男团体总分排序输出;然后选择‘0’或‘1’(‘0’表示退出系统,‘1’表示返回总目录);
输入:5 按女团体总分排序输出;然后选择‘0’或‘1’(‘0’表示退出系统,‘1’表示返回总目录);
输入:6 按学校编号查询学校某个项目编号;选择学校编号1或2;然后选择项目编号1--7;输出项目成绩;然后选择0或1或2(‘0’表示退出系统,‘1’表示返回总目录,‘2’表示返回上一级);
输入:7 按项目编号查询取得名次的学校;选择项目编号1--7;输出成绩;然后选择0或1或2(‘0’表示退出系统,‘1’表示返回总目录,‘2’表示返回上一级);
七、参考文献
(1)《C程序设计》(第三版) 谭浩强 著 清华大学出版社
(2)《数据结构》(C语言版)作者:严蔚敏,吴伟民 出版社:清华大学出版社
(3)《数据结构题集》(C语言版)作者:严蔚敏,吴伟民 出版社:清华大学出版社
八、附录
1、源程序
#include《stdio.h》
#include《process.h》
#define N 2 //学校个数
#define bm 4 //男团体个数
#define gm 3 //女团体个数
void xuanze();
void xunhuan();
struct match //项目
{
int matchnum;
int rank;
}mat;
struct school //学校
{
int schoolnum;
struct match mat;
int total;
int boytotal;
int girltotal;
}sch;
void huanyingni() /*开始界面,欢迎使用*/
{
printf("\n\n 东华大学信息科学与技术学院电气0910班 周涛涛\n\n\n");
printf("\t***^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^***\n\n");
printf(" 欢迎使用运动会分数统计系统\n\n");
printf("\t***^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^***\n\n ");
}
void input() //输入成绩
{
int i,j,k;
for(i=0;i《N;i++) //初始化分数
{
sch.total=0;
sch.boytotal=0;
sch.girltotal=0;
for(k=0;k《bm+gm;k++)
{
sch=0;
sch=0;
sch=0;
sch.matchnum=k+1;
}
}
printf("*********输入成绩**********\n");
printf("###输入说明:\n");
printf(" 1.学校编号为1--%d; 项目编号为1--%d (1-%d为男子项目,%d-%d为女子项目).\n",N,bm+gm,bm,bm+1,bm+gm);
printf(" 2. 成绩只能是‘0’或‘1’\n(‘0’表示没获得该项目的该名次,‘1’表示获得了该项目的该名次.以’Tab’键前进。)\n",N);
for(i=0;i《N;i++)
{
printf("******请输入学校编号: ");
loop3:scanf("%d",&sch.schoolnum);
if(sch.schoolnum》N)
{
printf("输入错误(只能是1-%d)请重新输入:",N);
goto loop3;
}
printf("项目编号");
for(k=0;k《bm+gm;k++)
printf("%d",sch.matchnum);
printf("\n");
for(j=0;j《3;j++)
{
loop: printf("第(%d)名:",j+1);
for(k=0;k《bm+gm;k++)
scanf("%d",&sch);
for(k=0;k《bm+gm;k++)
if(sch!=1)
{
printf("输入错误,请重新输入,成绩只能是‘0’或‘1’\n");
goto loop;
}
}
}
}
void totaljisuan()
{
int i,k,b;
for(i=0;i《N;i++)
for(k=0,b=0;k《bm+gm;k++)
{
b=sch*2;
sch.total+b;
if(k《bm)
sch.boytotal+b;
if(k》=bm)
sch.girltotal+b;
}
}
void mulu(){
printf("\n\n **系统目录**\n"); //目录
printf("\t\t ************************************\n");
printf("\t\t* 1.统计各学校总分 *\t \n");
printf("\t\t* 2.按学校编号排序输出 *\t \n");
printf("\t\t* 3.按学校总分排序输出 *\t \n");
printf("\t\t* 4.按男团体总分排序输出 *\t \n");
printf("\t\t* 5.按女团体总分排序输出 *\t \n");
printf("\t\t* 6.按学校编号查询学校某个项目情况 *\t \n");
printf("\t\t* 7.按项目编号查询取得名次的学校 *\t \n");
printf("\t\t* 0.退出 *\t \n");
printf("\t\t ************************************\n");
}
void funct0() //退出系统
{
printf("\n\t\t******* 谢谢使用! *******\n");
printf("\n\t\t******* 谢谢使用! *******\n");
exit(0);
}
void funct1() //统计各学校总分
{ int i,q;
printf("**********统计各学校总分**********\n");
printf("**学校编号**\t\t\t\t**总分**\n");
for(i=0;i《N;i++)
printf("\t%d\t\t\t\t%d\n",sch.total);
printf("\n");printf("\n");
printf("########## 0:退出;1:返回目录。\n");
printf("****请选择: ");
loop2:scanf("%d",&q);
if(q==0) funct0();
if(q==1) xunhuan();
else {
printf("输入错误(只能是0或1),请重新输入:");
goto loop2;
}
}
void funct2() //按学校编号排序
{
struct school sch1;
int i,j,q;
for(j=0;j《N-1;j++)
for(i=0;i《N-j-1;i++)
if(sch.schoolnum)
{
sch1=sch;
sch;
sch=sch1;
}
printf("**********按学校编号排序**********\n");
printf("**学校编号**\t\t\t\t**总分**\n");
for(i=0;i《N;i++)
printf("\t%d\t\t\t\t%d\n",sch.total);
printf("\n");printf("\n");
printf("########## 0:退出;1:返回目录。\n");
printf("****请选择: ");
loop2:scanf("%d",&q);
if(q==0) funct0();
if(q==1) xunhuan();
else {
printf("输入错误(只能是0或1),请重新输入:");
goto loop2;
}
}
void funct3() //按学校总分排序
{
struct school sch1;
int i,j,q;
for(j=0;j《N-1;j++)
for(i=0;i《N-j-1;i++)
if(sch.total)
{
sch1=sch;
sch;
sch=sch1;
}
printf("**********按学校总分排序**********\n");
printf("**学校编号**\t\t\t\t**总分**\n");
for(i=0;i《N;i++)
printf("\t%d\t\t\t\t%d\n",sch.total);
printf("\n");printf("\n");
printf("########## 0:退出;1:返回目录。\n");
printf("****请选择: ");
loop2:scanf("%d",&q);
if(q==0) funct0();
if(q==1) xunhuan();
else {
printf("输入错误(只能是0或1),请重新输入:");
goto loop2;
}
}
void funct4() //按男团体总分排序
{
struct school sch1;
int i,j,q;
for(j=0;j《N-1;j++)
for(i=0;i《N-j-1;i++)
if(sch.boytotal)
{
sch1=sch;
sch;
sch=sch1;
}
printf("**********按男团体总分排序**********\n");
printf(" **学校编号**\t\t**总分**\n");
for(i=0;i《N;i++)
printf("\t%d\t\t\t\t%d\n",sch.boytotal);
printf("\n");printf("\n");
printf("########## 0:退出;1:返回目录。\n");
printf("****请选择: ");
loop2:scanf("%d",&q);
if(q==0) funct0();
if(q==1) xunhuan();
else {
printf("输入错误(只能是0或1),请重新输入:");
goto loop2;
}
}
void funct5() //按女团体总分排序
{
struct school sch1;
int i,j,q;
for(j=0;j《N-1;j++)
for(i=0;i《N-j-1;i++)
if(sch.girltotal)
{
sch1=sch;
sch;
sch=sch1;
}
printf("**********按女团体总分排序**********\n");
printf(" **学校编号**\t\t**总分**\n");
for(i=0;i《N;i++)
printf("\t%d\t\t\t\t%d\n",sch.girltotal);
printf("\n");printf("\n");
printf("########## 0:退出;1:返回目录。\n");
printf("****请选择: ");
loop2:scanf("%d",&q);
if(q==0) funct0();
if(q==1) xunhuan();
else {
printf("输入错误(只能是0或1),请重新输入:");
goto loop2;
}
}
void funct6() //按学校编号查询学校某个项目情况
{
int i,n,m,q;
printf("**********按学校编号查询学校某个项目情况**********\n");
loop1:printf("*******请输入所要查询的学校编号: ");
scanf("%d",&n);
if(n!=1&&n!=2)
{
printf("!!!!!输入错误,学校编号只能是“0”或“1”,请重新输入!!!!\n");
goto loop1;
}
printf("*******请输入所要查询的项目编号: ");
scanf("%d",&m);
for(i=0;i《N;i++)
if(n==sch.schoolnum)
{
printf("学校编号: %d 项目编号: %d\n",n,m);
if(sch==1)
printf("第一名(获得) ");
if(sch==1)
printf("第二名(获得) ");
if(sch==1)
printf("第三名(获得) ");
else
printf("本校该项目未进入前三名");
}
printf("\n");printf("\n");
printf("########## 0:退出;1:返回目录;2:返回上一级。\n");
printf("****请选择: ");
loop2:scanf("%d",&q);
if(q==1) xunhuan();
if(q==0) funct0();
if(q==2) goto loop1;
else {
printf("输入错误(只能是0或1或2),请重新输入:");
goto loop2;
}
}
void funct7() //按项目编号查询取得名次的学校
{
int i,t,q;
printf("**********按项目编号查询取得名次的学校**********\n");
loop1: printf("*****请输入所要查询的项目编号: ") ;
scanf("%d",&t);
printf("项目编号:%d\n",t) ;
for(i=0;i《N;i++)
{
if(sch==1)
printf("获得第一名的学校编号是:%d \n",sch.schoolnum);
if(sch==1)
printf("获得第二名的学校编号是:%d \n",sch.schoolnum);
if(sch==1)
printf("获得第三名的学校编号是:%d \n",sch.schoolnum);
}
printf("\n");printf("\n");
printf("########## 0:退出;1:返回目录;2:返回上一级。\n");
printf("****请选择: ");
loop2:scanf("%d",&q);
if(q==1) xunhuan();
if(q==0) funct0();
if(q==2) goto loop1;
else {
printf("输入错误(只能是0或1或2),请重新输入:");
goto loop2;
}
}
void xunhuan() //返回目录
{
int t;
mulu();
printf("\t\t请选择(输入0--7)序号:\t");
scanf("%d",&t);
while(t!=0&&t!=1&&t!=2&&t!=3&&t!=4&&t!=5&&t!=6&&t!=7)
{
printf("输入有误,请重新选择:");
scanf("%d",&t);
}
switch(t)
{
case 0:funct0();break;
case 1:funct1();break;
case 2:funct2();break;
case 3:funct3();break;
case 4:funct4();break;
case 5:funct5();break;
case 6:funct6();break;
case 7:funct7();break;
}
}
void main()
{
system("Color 1e"); //改变背景,前景色
huanyingni();
input();
totaljisuan();
xunhuan();
}
九、课程设计体会
本次课程设计检验了我的实践能力,感觉自己还有许多东西要学习,并不仅限于课本上的知识,实践才是真理,在学习中实践,实践中去学习。学习的路很长。
再有要多问,几个人共同讨论会有意想不到的效果
c语言程序设计题实验报告高分
车票系统,与你的第2题要求略有不同,你自己修改吧
#include《stdio.h》
#include《stdlib.h》
#include《dos.h》
#include《含尺time.h》
#include《conio.h》
#include《string.h》
const int MAX=20;
const int N=50;
const int MAXFILENAME=100;
enum {FALSE,TRUE};
struct time
{
int hour;
int minutes;
};
struct ticket
{
int SerialNumber;
struct time SetOut;
char DeparturePoint;
char TerminalPoint;
float LastTime;
int FixNumber;
int FixedNumber;
}car;
int RecordNumber;
int FLAG=FALSE;
/**********************************************/
int ShowMessage(void); //载入原始数据
void mainmenu(void); //主菜单
void InsertMessage(void); /升卜/录入班次信息
void SearchMenu(void); //查询路线子菜单
void SearchByNumber(void); //按班次号查询
void SearchByAddress(void); //按终点站查询
void TicketManagement(void); //车票售出与退回
void TicketOrder(void); //售票
void TicketDelete(void); //退票
void exit(void); //退出该系吵老穗统
/********************************************/
int main(void)
{
RecordNumber=ShowMessage();
if(1)
do{
mainmenu();
}while(FLAG==FALSE);
return 0;
}
void mainmenu(void)
{
system("color 1f");
system("mode con: cols=140 lines=130");
char functionNumber;
printf(" 车票管理系统\n\n");
printf(" 制作:hmm182007\n");
printf(" 日期:2007/11/25/19:57\n");
printf("============================================================================\n");
printf(" 1.录入班次信息\t\n");
printf(" 2.浏览班次信息\t\n");
printf(" 3.查询行车路线\t\n");
printf(" 4.售票与退票系统\t\n");
printf(" 5.退出该系统\t\n");
printf("============================================================================\n");
printf("请选择你所需要的功能:");
scanf("%c",&functionNumber);
switch(functionNumber)
{
case ’1’:
{
InsertMessage();
printf("\n按任意键回主菜单......\n");
getchar();
getchar();
}
break;
case ’2’:
{
ShowMessage();
printf("\n按任意键回主菜单......\n");
getchar();
getchar();
}
break;
case ’3’:
{
SearchMenu();
printf("\n按任意键回主菜单......\n");
getchar();
getchar();
}
break;
case ’4’:
{
TicketManagement();
getchar();
getchar();
}
break;
case ’5’:FLAG=TRUE;exit();break;
default:
{
printf("输入错误,请确保你的输入为1--5.\n");
printf("按任意键回主菜单......\n");
getchar();
getchar();
}
}//switch ends
FLAG=FALSE;
}
void InsertMessage(void)
{
FILE *fp;
char filename;
int i;
printf("请输入文件名或者文件路径名:");
scanf("%s",filename);
if((fp=fopen(filename,"r"))==NULL)
{
printf("文件%s不可读,请确认文件%s存在或者文件路径正确.\n\n",filename,filename);
mainmenu();
}
for(i=RecordNumber;!feof(fp)&&!ferror(fp);i++)
{
fscanf(fp,"%d%d%d",&car.SetOut.minutes);
fscanf(fp,"%s%s%f%d%d",&car.FixedNumber);
}
int count=i;
printf("班次\t发车时间\t起点\t终点\t行车时间(小时)\t额定载量\t已定票人数\n");
for(i=0;i《count;i++)
{
printf("%d\t%d:%d\t\t",car.SetOut.minutes);
printf("%s\t%s\t\t%.1f\t %d\t\t%d\n",car.FixedNumber);
}
fclose(fp);
}
int ShowMessage(void)
{
int i;
FILE *fp;
if((fp=fopen("add.txt","r"))==NULL)
{
printf("读取数据失败,请检查文件add.txt是否存在.\n");
exit(-1);
}
for(i=0;!feof(fp)&&!ferror(fp);i++)
{
fscanf(fp,"%d%d%d",&car.SetOut.minutes);
fscanf(fp,"%s%s%f%d%d",&car.FixedNumber);
}
int count=i;
printf("班次\t发车时间\t起点\t终点\t行车时间(小时)\t额定载量\t已定票人数\n");
for(i=0;i《count;i++)
{
printf("%d\t%d:%d\t\t",car.SetOut.minutes);
printf("%s\t%s\t\t%.1f\t %d\t\t%d\n",car.FixedNumber);
}
return count;
}
void SearchMenu(void)
{
system("color 1f");
system("mode con: cols=140 lines=130");
char functionNumber;
printf(" 查询子菜单\n");
printf("============================================================================\n");
printf(" 1.按班次号查询\t\n");
printf(" 2.按终点站查询\t\n");
printf(" 3.返回主菜单\t\n");
printf("============================================================================\n");
printf("请选择你所需要的功能:");
scanf("%*c%c",&functionNumber);
switch(functionNumber)
{
case ’1’:SearchByNumber();break;
case ’2’:SearchByAddress();break;
case ’3’:
getchar();
mainmenu();
break;
default:
printf("输入错误,请确保你的输入为1--3.\n");
printf("按任意键回查询子菜单......\n");
getchar();
getchar();
SearchMenu();
}
}
void SearchByNumber(void)
{
int SearchNumber;
printf("请输入要查询的班次号:");
scanf("%d",&SearchNumber);
printf("班次\t发车时间\t起点\t终点\t行车时间(小时)\t额定载量\t已定票人数\n");
printf("%d\t%d:%d\t\t",car.SetOut.minutes);
printf("%s\t%s\t\t%.1f\t %d\t\t%d\n",car.FixedNumber);
}
void SearchByAddress(void)
{
int i;
char Address;
printf("请输入终点站的名称:");
scanf("%s",&Address);
printf("班次\t发车时间\t起点\t终点\t行车时间(小时)\t额定载量\t已定票人数\n");
for(i=0;i《RecordNumber;i++)
{
//对比终点站记录,找到并输出
if((strcmp(Address,car.TerminalPoint))==0)
{
printf("%d\t%d:%d\t\t",car.SetOut.minutes);
printf("%s\t%s\t\t%.1f\t %d\t\t%d\n",car.FixedNumber);
}
}
}
void TicketManagement(void)
{
char functionNumber;
system("color 1f");
system("mode con: cols=140 lines=130");
printf(" 订票与退票菜单\n");
printf("============================================================================\n");
printf(" 1.订票\t\n");
printf(" 2.退票\t\n");
printf(" 3.返回主菜单.\n");
printf("============================================================================\n");
printf("选择你需要的功能:");
scanf("%*c%c",&functionNumber);
switch(functionNumber)
{
case ’1’:
{
TicketOrder();
//getchar();
//getchar();
}
break;
case ’2’:TicketDelete();break;
case ’3’:
{
getchar();
mainmenu();
}
break;
default:
{
printf("输入错误,请确保你的输入为1--3.\n");
printf("按任意键回主菜单......\n");
getchar();
getchar();
mainmenu();
}
}
}
void TicketOrder(void)
{
int i;
printf("请输入要订购的车票的班次:");
scanf("%d",&i);
if(i《0||i》RecordNumber)
{
printf("对不起,今天没有这趟车,请明天再来,谢谢使用!\n");
printf("按任意键回主菜单......\n");
getchar();//getchar();
TicketManagement();
}
time_t tval;
struct tm *now;
tval = time(NULL);
now = localtime(&tval);
if((now-》tm_hour==car.SetOut.hour))
{
if(car.FixNumber)
{
car.FixedNumber++;
printf("你的订票成功,请按时上车,谢谢使用!\n");
}
else printf("对不起,今天的这趟车的票已卖完,请明天再来,谢谢合作!\n");
}
else printf("对不起,今天的这趟车已发出,请明天再来,谢谢合作!\n");
printf("班次\t发车时间\t起点\t终点\t行车时间(小时)\t额定载量\t已定票人数\n");
printf("%d\t%d:%d\t\t",car.SetOut.minutes);
printf("%s\t%s\t\t%.1f\t %d\t\t%d\n",car.FixedNumber);
//printf("按任意键回主菜单......\n");
//getchar();getchar();
}
void TicketDelete(void)
{
int i;
printf("请输入要退购的车票的班次:");
scanf("%d",&i);
if(i《0||i》RecordNumber)
{
printf("对不起,今天没有这趟车,无法完成退票.谢谢使用!\n");
getchar();
//getchar();
TicketManagement();
getchar();
}
time_t tval;
struct tm *now;
tval = time(NULL);
now = localtime(&tval);
if((now-》tm_hour==car.SetOut.hour))
{
if(car.FixedNumber》=1)
{
car.FixedNumber--;
printf("退订车票成功,谢谢使用!\n");
}
else printf("对不起,今天的这趟车的票尚未卖出,无法完成退票!\n");
}
else printf("对不起,今天的这趟车已发出,无法完成退票!\n");
printf("班次\t发车时间\t起点\t终点\t行车时间(小时)\t额定载量\t已定票人数\n");
printf("%d\t%d:%d\t\t",car.SetOut.minutes);
printf("%s\t%s\t\t%.1f\t %d\t\t%d\n",car.FixedNumber);
getchar();//getchar();
}
void exit(void)
{
printf("\n\n*********************谢谢使用本系统,欢迎下次继续使用***********************\n");
exit(0);
}
用数据结构(C语言)编写运动会分数统计程序
#include 《stdio.h》
#include 《stdlib.h》
#include 《string.h》
#include 《io.h》
#include 《conio.h》 /*屏幕操作函数*/
#define MAX 50
typedef struct node1{
int school; /*学校编号*/
int record; /*项目成绩*/
struct node1 *next; /*链域*/
}Schools;
typedef struct {
int item; /*项目编号*/
Schools *firstschool; /*链域指向链表中第一个结点*/
}ITEM;
typedef struct {
int z; /* 项目总数 */
ITEM a;
}ALLitems;
typedef struct node2 {
int item; /*该学校获奖的项目*/
int record; /*项目成绩*/
struct node2 *next; /*链域*/
}Items;
typedef struct {
int school; /*学校编号*/
int score; /*学校总分*/
int boys; /*男团体总分*/
int girls; /*女团体总分*/
Items *firstitem; /*链域指向链表中第一个获奖项目的结点*/
}SCHNode;
typedef struct {
int n; /* 学校总数 */
SCHNode b;
}ALLNode;
ALLitems *g1;
ALLNode *g2;
void funct1(ALLitems *g1,ALLNode *g2)
{
Schools *p1;
Items *p2;
int i,j,k,m,w,h,x;
p1=(Schools *)malloc(sizeof(Schools));
p2=(Items *)malloc(sizeof(Items));
if(!p1||!p2)
exit(1);
printf("\n ******输入各个项目信息 ****** 13 \n\n");
printf(" 输入男子项目总数m:"); scanf("%d",&m);
if(m《0||m》大戚20)
{
printf(" 输入有误,m是20以内的整数,请重新输入:"); scanf("%d",&m);
}
printf(" 输入女子项目总数w:"); scanf("%d",&w);
if(w《0||w》20)
{
printf(" 输入有误,w是20以内的整数,请重新输入:"); scanf("%d",&w);
}
printf(" 输入参加运动会的学校总数n:"); scanf("%d",&g2-》n);
if(g2-》n《0||g2-》n》20)
{
printf(" 输入有误,n是20以内的整数,请重新输入:"); scanf("%d",&g2-》n);
}
g1-》z=m+w;
printf(" 则项目编号为男子1-%d,女子%d-%d",m,m+1,g1-》z);
printf("\n\n ****记录运动会成绩****");
printf("\n\n (输入0标志结束)\n");
for(k=1;k《=g1-》z;k++)
{
g1-》a.item=k;
g1-》a.firstschool=NULL;
}
for(k=1;k《=g2-》n;k++)
{
g2-》b.school=k;
g2-》b.firstitem=0;
g2-》b.score=0;
g2-》b.boys=0;
g2-》b.girls=0;
}
g2-》b.score=0;
g2-》b.boys=0;
g2-》b.girls=0;
while(i!=0)
{
printf("神仿颂\n 项目:");
scanf("%d",&i);
if(i!=0)
{
printf(" 1.前三名游郑 2.前五名\n");
printf(" 请选择:");
scanf("%d",&j);
if(j!=1&&j!=2)
{
printf(" 输入有误,请重新选择:");
scanf("%d",&j);
}
if(j==1)
{
h=3;
do{ printf(" 第%d名:学校(学校编号为数字)",h); scanf("%d",&x);
p1=(Schools *)malloc(sizeof(Schools));
p1-》school=x;
p2=(Items *)malloc(sizeof(Items));
p2-》item=i;
if(h==3) p2-》record=p1-》record=2;
if(h==2) p2-》record=p1-》record=3;
if(h==1) p2-》record=p1-》record=5;
p1-》next=g1-》a.firstschool;
g1-》a.firstschool=p1;
p2-》next=g2-》b.firstitem;
g2-》b.firstitem=p2;
g2-》b.score+p2-》record; /* 累计总分 */
if(i《=m) g2-》b.boys+p2-》record; /* 累计男团体总分 */
else
g2-》b.girls+p2-》record; /* 累计女团体总分 */
h--;
}while(x!=0&&h!=0);
}
if(j==2)
{
h=5;
do{
printf(" 第%d名:学校(学校编号为数字)",h);
scanf("%d",&x);
p1=(Schools *)malloc(sizeof(Schools));
p1-》school=x;
p2=(Items *)malloc(sizeof(Items));
p2-》item=i;
if(h==5) p2-》record=p1-》record=1;
if(h==4) p2-》record=p1-》record=2;
if(h==3) p2-》record=p1-》record=3;
if(h==2) p2-》record=p1-》record=5;
if(h==1) p2-》record=p1-》record=7;
p1-》next=g1-》a.firstschool;
g1-》a.firstschool=p1;
p2-》next=g2-》b.firstitem;
g2-》b.firstitem=p2;
g2-》b.score+p2-》record; /* 累计总分 */
if(i《=m) g2-》b.girls+p2-》record; /* 累计女团体总分 */ h--;
}while(x!=0&&h!=0);
}
}
}
}
void save()
{
FILE *fp1,*fp2;
fp1=(FILE *)malloc(sizeof(FILE));
fp2=(FILE *)malloc(sizeof(FILE));
if((fp1=fopen("sports1","wb"))==NULL)
{
printf("cannot open file.\n");
return;
}
if(fwrite(g1,sizeof(ALLitems),1,fp1)!=1)
printf("file write error.\n");
fclose(fp1);
if((fp2=fopen("sports2","wb"))==NULL)
{ printf("cannot open file.\n");
return;
}
if(fwrite(g2,sizeof(ALLNode),1,fp2)!=1)
printf("file write error.\n");
fclose(fp2);
}
void funct2(ALLNode *g2) /* 输出各学校总分 */
{
int k;
printf("\n\n ****** 输出各学校总分 ******\n");
printf(" 学校编号\t 总分 \n");
for(k=1;k《=g2-》n;k++)
printf(" %d\t\t\t %d\n",k,g2-》b.score);
printf("\n");
system("pause");
printf(" 按任意键返回主菜单......");
getchar();
}
void funct3(ALLNode *g2) /* 按学校编号排序输出 */
{
int k;
Items *p2;
p2=(Items *)malloc(sizeof(Items));
printf("\n\n ****** 按学校编号排序输出 ******\n");
printf(" 学校编号\t\t\t获奖情况 \n");
scanf("%d",&k);
for(k=1;k《=g2-》n;k++)
{
printf("\t\t\t\t\t\t%d\t",k);
p2=g2-》b.firstitem;
while(p2!=NULL)
{
printf("项目%d:得%d分 ",p2-》item,p2-》record);
p2=p2-》next;
}
printf("\n");
}
printf("\n");
system("pause");
printf("按任意键返回主菜单......");
getchar();
}
void funct4(ALLNode *g2) /* 按学校总分排序输出 */
{
int i,j,k;
Items *p2;
printf("\n\n ****** 按学校总分排序输出 ******\n");
printf(" 学校编号\t\t总分 \n");
scanf("%d",&k);
//printf("输入要查询的项目编号:");
for(i=2;i《=g2-》n;i++)
{
printf("%d\t",k);
p2=g2-》b.firstitem;
while(p2!=NULL)
{
printf("%d \t\t%d\n",g2-》b.score);
p2=p2-》next;
}
printf("\n");
g2-》b.score;
g2-》b.boys;
g2-》b.girls;
g2-》b.school;
j=i-1;
while(g2-》b.score&&j》0)
{
g2-》b.score;
g2-》b.boys;
g2-》b.girls;
g2-》b.school;
j--;
}
g2-》b.score;
g2-》b.boys;
g2-》b.girls;
g2-》b.school;
}
for(k=1;k《=g2-》n;k++)
printf("%d \t\t%d\n",g2-》b.score);
system("pause");
printf("按任意键返回主菜单......");
getchar();
}
void funct5(ALLNode *g2) /* 按男团体总分排序输出 */
{
int i,j,k;
Items *p2;
p2=(Items *)malloc(sizeof(Items));
printf("\n\n ****** 按男团体总分排序输出 ******\n");
printf("学校编号\t\t男团体总分 \n");
scanf("%d",&k);
//printf("输入要查询的学校编号:");
for(i=2;i《=g2-》n;i++)
{
printf("%d\t",k);
p2=g2-》b.firstitem;
while(p2!=NULL)
{ printf("%d\t\t %d\n",g2-》b.boys);
p2=p2-》next;
}
printf("\n"); g2-》b.score;
g2-》b.boys;
g2-》b.girls;
g2-》b.school;
j=i-1;
while(g2-》b.boys&&j》0)
{
g2-》b.score;
g2-》b.boys;
g2-》b.girls;
g2-》b.school;
j--;
}
g2-》b.score;
g2-》b.boys;
g2-》b.girls;
g2-》b.school;
}
for(k=1;k《=g2-》n;k++)
printf("%d\t\t %d\n",g2-》b.boys);
system("pause"); // 暂停等待
printf("按任意键返回主菜单......");
getchar();
}
void funct6(ALLNode *g2) /* 按女团体总分排序输出 */
{
int i,j,k;
Items *p2;
p2=(Items *)malloc(sizeof(Items));
printf("\n\n ****** 按女团体总分排序输出 ******\n");
printf("学校编号\t\t女团体总分 \n");
scanf("%d",&k);// printf("输入要查询的项目编号:");
for(i=2;i《=g2-》n;i++)
{
printf("%d\t",k);
p2=g2-》b.firstitem;
while(p2!=NULL)
{ printf("%d\t\t %d\n",g2-》b.girls);
p2=p2-》next;
}
printf("\n");
g2-》b.score;
g2-》b.boys;
g2-》b.girls;
g2-》b.school;
j=i-1;
while(g2-》b.girls&&j》0)
{ g2-》b.score;
g2-》b.boys;
g2-》b.girls;
g2-》b.school;
j--;
}
g2-》b.score;
g2-》b.boys;
g2-》b.girls;
g2-》b.school;
}
for(k=1;k《=g2-》n;k++)
printf("%d\t\t %d\n",g2-》b.girls);
system("pause");
printf("按任意键返回主菜单......");
getchar();
}
void funct7(ALLNode *g2) /* 按学校编号查询学校某个项目情况 */
{
int i,j;
Items *p2;
printf("\n ****** 按学校编号查询学校某个项目情况 ******\n");
printf(" 输入要查询的学校编号:");
scanf("%d",&i);
printf(" 输入要查询的项目编号:");
scanf("%d",&j);
p2=g2-》b.firstitem;
while(p2!=NULL)
{
if(p2-》item==j)
printf(" 学校编号:%d\t项目%d:得%d分\n",i,p2-》item,p2-》record); p2=p2-》next;
}
printf("\n");
system("pause");
printf(" 按任意键返回主菜单......");
getchar();
}
void funct8(ALLitems *g1) /* 按项目编号查询取得名次的学校 */
{
int i;
Schools *p1;
printf("\n*** 按项目编号查询取得名次的学校 ***\n");
printf("输入要查询的项目编号:");
scanf("%d",&i);
printf("项目编号\t\t\t取得名次的学校\n");
printf("%d\t",i);
p1=g1-》a.firstschool;
while(p1!=NULL)
{ printf(" 学校%d:得%d分 ",p1-》school,p1-》record);
p1=p1-》next;
}
printf("\n\n");
system("pause");
printf("按任意键返回主菜单......");
getchar();
}
void main()
{
int t;
g2=(ALLNode*)malloc(sizeof(ALLNode));
g1=(ALLitems*)malloc(sizeof(ALLitems));
if(!g2||!g1)
exit(1);
system("cls");
for(;;)
{
printf("\t\t* * * * * * * * * * * * * * * * * * * * * * *\n");
printf("\t\t 运动会分数统计系统 \n");
printf("\t\t* * * * * * * * * * * * * * * * * * * * * * *\n");
printf("\t\t* 1.输入各个项目成绩并存储文件 *\t \n");
printf("\t\t* 2.统计各学校总分 *\t \n");
printf("\t\t* 3.按学校编号排序输出 *\t \n");
printf("\t\t* 4.按学校总分排序输出 *\t \n");
printf("\t\t* 5.按男团体总分排序输出 *\t \n");
printf("\t\t* 6.按女团体总分排序输出 *\t \n");
printf("\t\t* 7.按学校编号查询学校某个项目情况 *\t \n");
printf("\t\t* 8.按项目编号查询取得名次的学校 *\n");
printf("\t\t* 0.退出 *\n");
printf("\t\t* * * * * * * * * * * * * * * * * * * * * * *\n");
printf("\t\t \n"); printf("\t\t \n"); printf("\t\t \n"); printf("\t\t 请选择(0-8):");
loop:scanf("%d",&t);
system("cls");
switch(t)
{
case 1:funct1(g1,g2);save();break;
case 2:funct2(g2);break;
case 3:funct3(g2);break;
case 4:funct4(g2);break;
case 5:funct5(g2);break;
case 6:funct6(g2);break;
case 7:funct7(g2);break;
case 8:funct8(g1);break;
case 0:exit(0);
default:{ printf("输入有误,请重新选择:");
goto loop;}
}//clrscr();
system("cls");
}
}
C语言课程设计 要求编写一段程序 题目是《运动会分数统计系统》
#include《iostream.h》
#include《iomanip.h》毁贺陪
#include《string.h》
#include《fstream.h》
#include《stdlib.h》
#include《ctype.h》
#include《stdio.h》
#include《conio.h》
typedef struct Department //系的结构
{
char name; //系的名称
int number; //系的编号
int boy; //男子团体总分
int girl; //女子团体总分
Department *next; }Department;
typedef struct Sport //运动项目结构
{
char name; //运动项目名称
int isboy; //0为女项目,1为男项目
int is3; //0为取前五名,1为取前五名
int number; //项目编号
int first; //第一名系的编号
int second; //第二名系的编号
int third; //第三名系的编号
int fourth; //第四名系的编纤蠢号
int fifth; //第五名系的编号
Sport *next;
}Sport;
int getint(int a) //字符转换成数字
{
return (int)(a-’0’);
}
Department * head1;
//-------启动画面函数----------
void Cover()
{ system("color 1b");
char line={"程序读取中 请耐心等待..."};
char bar={"...."};
int i,j,k=0,x=0,y=0;
for(i=0;i《=strlen(line)/2;)
{
system("cls");
for(j=0;j《9;j++) //改变行坐标
cout《《endl;
for(j=0;j《(75-strlen(line))/2;j++) //改变列坐标
cout《《" ";
for(j=1;j《=i;j++) //进度显示器
cout《《"●";
for(x=strlen(line)/2;x》i;x--)
cout《《"○";
if(k==4)
i++;
cout《《endl;
for(j=0;j《(75-strlen(line))/2;j++) //行坐标定位
cout《《" ";
cout《《line; //输出线条
cout《《endl;
for(j=0;j《(65-strlen(bar))/2;j++)
cout《《" ";
cout《《(i+7)*5《《"% Loading";
cout.write(bar,k);
cout《《endl;
for(j=0;j《10;j++)
cout《《endl;
for(j=0;j《24;j++)
cout《《" ";
cout《《"程序设计员5080906 石行"《《endl;
for(j=0;j《24;j++)
cout《《" ";
for(j=0;j《=18;j++)
cout《《"—";
cout《《endl;
for(j=0;j《10000000;j++);//延时效果
k++;
if(k》4)
k=0;
}
}
void department_add() //添加系
{
Department * p;
int mark=0;
p=new Department;
cout《《"请输入系的名称:";
cin》》p-》name;
char c;
while (mark!=1)
{
cout《《"请输拍旦入系的编号:";
cin》》c;
if (!isdigit(c))//是否为数字
{
cout《《"数据非法"《《endl;
}
else
{
mark=1;
p-》number=c;
}
}
p-》boy=0;
p-》girl=0;
p-》next=head1-》next;
head1-》next=p;
cout《《"成功添加了一个系"《《endl;
}
int department_getlong(Department *first)//得到链表长度
{
int i=0;
while (first-》next!=NULL)
{
i++;
first=first-》next;
}
return i;
}
void department_write()//将系数据写入文本
{
Department * p;
p=head1;
p=p-》next;
ofstream outfile("Department.txt",ios::out);
outfile《《department_getlong(p)+1《《" ";
while (p!=NULL)
{
outfile《《p-》name《《" "《《p-》number《《" "《《p-》boy《《" "《《p-》girl《《" ";
p=p-》next;
}
outfile.close();
cout《《"Write Success!"《《endl;
}
void department_read()//从文本读入系数据
{
int i;
ifstream infile ("Department.txt",ios::in);
infile》》i;
while(i》0)
{
Department * p;
p=new Department;
infile》》p-》name》》p-》number》》p-》boy》》p-》girl;
p-》next=head1-》next;
head1-》next=p;
i--;
}
cout《《"Department Data Read Success!"《《endl;
}
void department_output(Department *p)//输出系
{
cout《《" 系名 编号 男团总分 女团总分 总分\t\n";
while(p)
{
cout《《p-》name《《" \t"《《getint(p-》number)《《"\t"《《p-》boy《《"\t"《《p-》girl《《"\t "《《(p-》girl+p-》boy)《《endl;
p=p-》next;
}
}
int department_isexist(int a)//检验系是否存在
{
int b=0;
Department *p;
p=head1;
p=p-》next;
while(p)
{
if(p-》number==a)
{
return 1;
}
p=p-》next;
}
return 0;
}
void department_show(int a)//输出所有系
{
Department *p;
p=head1;
p=p-》next;
while(p)
{
if(p-》number==a)
{
cout《《p-》name《《" ";
return;
}
p=p-》next;
}
cout《《" 无 ";
}
void department_search(int a)//按编号搜索系
{
Department *p;
p=head1;
p=p-》next;
while(p)
{
if(p-》number==a)
{
cout《《"系名:"《《p-》name《《" "《《"男子团体总分:"《《p-》boy《《" "《《"女子团体总分:"《《p-》girl《《" "《《"总分:"《《(p-》boy+p-》girl)《《" ";
return;
}
p=p-》next;
}
cout《《"无此编号";
}
void department_addmark(int a,int b,int c)//a为分数,b为系编号,c=1表示男,c=0表示女
{
Department *p;
p=head1;
p=p-》next;
while(p)
{
if(p-》number==b)
{
if(c==’1’)
{
p-》boy=p-》boy+a;
}
else
{
p-》girl=p-》girl+a;
}
}
p=p-》next;
}
}
void department_order(Department *temp,int type) //type=0按总分,type=1按男总分,type=2按女总分,
{
Department *p,*q,*small,*temp1;
temp1=new Department;
temp1-》next=NULL;
p=temp;
while(p)
{
small=p;
q=p-》next;
while(q)
{
switch(type)
{
case 0:
if((q-》boy+q-》girl)《(small-》girl+small-》boy))
{
small=q;
}
break;
case 1:
if(q-》boy《small-》boy)
{
small=q;
}
break;
case 2:
if(q-》girl《small-》girl)
{
small=q;
}
break;
default:
cout《《"error"《《endl;
}
if(small!=p)
{
temp1-》boy=p-》boy;
p-》boy=small-》boy;
small-》boy=temp1-》boy;
temp1-》girl=p-》girl;
p-》girl=small-》girl;
small-》girl=temp1-》girl;
strcpy(temp1-》name,p-》name);
strcpy(p-》name,small-》name);
strcpy(small-》name,temp1-》name);
temp1-》number=p-》number;
p-》number=small-》number;
small-》number=temp1-》number; //将系的名字互换
}
q=q-》next;
}
p=p-》next;
}
}
Sport * head2;
int sport_isexist(int a) //检查运动项目(编号)是否已经存在
{
int b=0;
Sport *p;
p=head2;
p=p-》next;
while(p)
{
if(p-》number==a)
{
return 1;
}
p=p-》next;
}
return 0;
}
void sport_add() //添加项目
{
Sport * p;
int mark=0;
p=new Sport;
cout《《"请输入项目名称:";
cin》》p-》name;
char c;
while (mark!=1)
{
cout《《"请输入项目编号:";
cin》》c;
if (!isdigit(c))
{
cout《《"数据非法"《《endl;
}
else
{
if(sport_isexist(c))
{
cout《《"该编号已存在"《《endl;
}
else
{
mark=1;
p-》number=c;
}
}
}
mark=0;
while (mark!=1)
{
cout《《"请输入项目类型(0为女子项目,1为男子项目):";
cin》》c;
p-》isboy=(int)(c-’0’);//字符转换成数字
if (!isdigit(c))
{
cout《《"数据非法"《《endl;
}
else if(p-》isboy《0||p-》isboy》1)
{
cout《《"数据非法"《《endl;
}
else
{
mark=1;
p-》isboy=c;
}
}
mark=0;
while (mark!=1)
{
cout《《"请输入项目名次情况(0为取前3名,1为取前5名):";
cin》》c;
p-》is3=(int)(c-’0’);
if (!isdigit(c))
{
cout《《"数据非法"《《endl;
}
else if(p-》is3《0||p-》is3》1)
{
cout《《"数据非法"《《endl;
}
else
{
mark=1;
p-》is3=c;
}
}
mark=0;
while (mark!=1)
{
cout《《"请输入第一名的系的编号:";
cin》》c;
if (!isdigit(c))
{
cout《《"数据非法"《《endl;
}
else
{
if(!department_isexist(c))
{
cout《《"该系不存在,请先添加";
}
else
{
mark=1;
p-》first=c;
if(p-》is3==’0’)
department_addmark(5,c,p-》isboy);
else
department_addmark(7,c,p-》isboy);
}
}
}
mark=0;
while (mark!=1)
{
cout《《"请输入第二名的系的编号:";
cin》》c;
if (!isdigit(c))
{
cout《《"数据非法"《《endl;
}
else
{
if(!department_isexist(c))
{
cout《《"该系不存在,请先添加";
}
else
{
mark=1;
p-》second=c;
if(p-》is3==’0’)
department_addmark(3,c,p-》isboy);
else
department_addmark(5,c,p-》isboy);
}
}
}
mark=0;
while (mark!=1)
{
cout《《"请输入第三名的系的编号:";
cin》》c;
if (!isdigit(c))
{
cout《《"数据非法"《《endl;
}
else
{
if(!department_isexist(c))
{
cout《《"该系不存在,请先添加";
}
else
{
mark=1;
p-》third=c;
if(p-》is3==’0’)
department_addmark(2,c,p-》isboy);
else
department_addmark(3,c,p-》isboy);
}
}
}
mark=0;
if(p-》is3==’1’)
{
while (mark!=1)
{
cout《《"请输入第四名的系的编号:";
cin》》c;
if (!isdigit(c))
{
cout《《"数据非法"《《endl;
}
else
{
if(!department_isexist(c))
{
cout《《"该系不存在,请先添加";
}
else
{
mark=1;
p-》fourth=c;
department_addmark(2,c,p-》isboy);
}
}
}
mark=0;
while (mark!=1)
{
cout《《"请输入第五名的系的编号:";
cin》》c;
if (!isdigit(c))
{
cout《《"数据非法"《《endl;
}
else
{
if(!department_isexist(c))
{
cout《《"该系不存在,请先添加"《《endl;
}
else
{
mark=1;
p-》fifth=c;
department_addmark(1,c,p-》isboy);
}
}
}
}
else
{
p-》fourth=’0’;
p-》fifth=’0’;
}
p-》next=head2-》next;
head2-》next=p;
cout《《"成功添加了一个运动项目"《《endl;
}
int sport_getlong(Sport *first) //得到项目链表长度
{
int i=0;
while (first-》next!=NULL)
{
i++;
first=first-》next;
}
return i;
}
void sport_write() //将项目数据写入文本文档
{
Sport * p;
p=head2;
p=p-》next;
ofstream outfile("Sport.txt",ios::out);
outfile《《sport_getlong(p)+1《《" ";
while (p!=NULL)
{
outfile《《p-》name《《" "《《p-》number《《" "《《p-》isboy《《" "《《p-》is3《《" "《《p-》first《《" "《《p-》second《《" "《《p-》third《《" "《《p-》fourth《《" "《《p-》fifth《《" ";
p=p-》next;
}
outfile.close();
cout《《"Write Success!"《《endl;
}
void sport_read() //从文本读取项目数据
{
int i;
ifstream infile ("Sport.txt",ios::in);
infile》》i;
while(i》0)
{
Sport * p;
p=new Sport;
infile》》p-》name》》p-》number》》p-》isboy》》p-》is3》》p-》first》》p-》second》》p-》third》》p-》fourth》》p-》fifth;
p-》next=head2-》next;
head2-》next=p;
i--;
}
cout《《"Sport Data Read Success!"《《endl;
}
void sport_output(Sport *p) //输出项目的情况
{
cout《《"name "《《"\t"《《"Num"《《" "《《"B/G"《《" "《《" 3/5"《《" "《《" first"《《" "《《"second"《《" "《《"third"《《" "《《"fourth"《《" "《《"fifth"《《" "《《endl;
while(p)
{
cout《《 p-》name 《《"\t" 《《" " 《《getint(p-》number)《《" " 《《 getint(p-》isboy)《《" " 《《getint(p-》is3)《《" "《《" ";
department_show(p-》first);
department_show(p-》second);
department_show(p-》third);
department_show(p-》fourth);
department_show(p-》fifth);
//printf("\n");
p=p-》next;
cout《《"\n";
}
cout《《endl;
}
void sport_search(int a) //搜索项目
{
Sport *p;
p=head2;
p=p-》next;
while(p)
{
if(p-》number==a)
{
cout《《"项目名:"《《p-》name《《endl《《"项目类型:";
if(p-》isboy==1)
{
cout《《"男子项目";
}
else
{
cout《《"女子项目";
}
cout《《endl《《"第一名:";
department_show(p-》first);
cout《《endl《《"第二名:";
department_show(p-》second);
cout《《endl《《"第三名:";
department_show(p-》third);
cout《《endl《《"第四名:";
department_show(p-》fourth);
cout《《endl《《"第五名:";
department_show(p-》fifth);
return;
}
p=p-》next;
}
cout《《"无此编号";
}
void main() //运动会程序主函数
{
Cover();
system("color 2b"); //改变背景,前景色
head1=new Department;
head1-》next=NULL;
head2=new Sport;
head2-》next=NULL;
//school_add();
sport_read();
department_read();
//sport_add();
Department * p1;
Sport * p2;
p1=head1;
p1=p1-》next;
p2=head2;
p2=p2-》next;
char choose;
char temp;
//string ch=" ";
int a=1;
while(a!=0)
{
cout《《endl;
cout《《" .oO欢迎使用运动会分数统计系统Oo. "《《endl;
cout《《" **********************************************************"《《endl;
cout《《" * *"《《endl;
cout《《" * 1.输入系别; 2.输入运动项目 *"《《endl;
cout《《" * *"《《endl;
cout《《" * 3.按系别编号输出总分; 4.按总分排序; *"《《endl;
cout《《" * *"《《endl;
cout《《" * 5.按男团体总分排序; 6.按女团体总分排序; *"《《endl;
cout《《" * *"《《endl;
cout《《" * 7.按项目编号查询; 8.按系别编号查询; *"《《endl;
cout《《" * *"《《endl;
cout《《" * 0.退出 *"《《endl;
cout《《" * *"《《endl;
cout《《" * 提示:需先输入系别后才能输入运动项目 *"《《endl;
cout《《" * *"《《endl;
cout《《" **********************************************************"《《endl;
cout《《" 请选择:";
//cin》》ch;
//choose=int(ch)-’0’; //处理异常状态
cin》》choose;
if (!isdigit(choose))
{
system("cls");
cout《《"操作非法1"《《endl;
}
else
{
switch(getint(choose))
{
case 1:
system("cls");
department_add();
break;
case 2:
system("cls");
cout《《"当前项目:"《《endl;
sport_output(p2);
cout《《"当前系:"《《endl;
department_output(p1);
sport_add();
break;
case 3:
system("cls");
department_output(p1);
break;
case 4:
system("cls");
department_order(p1,0);
department_output(p1);
break;
case 5:
system("cls");
department_order(p1,1);
department_output(p1);
break;
case 6:
system("cls");
department_order(p1,2);
department_output(p1);
break;
case 7:
system("cls");
cout《《"请输入项目编号:";
cin》》temp;
sport_search(temp);
break;
case 8:
system("cls");
cout《《"请输入系的编号:";
cin》》temp;
department_search(temp);
break;
case 0:
system("cls");
a=0;
break;
default:
system("cls");
cout《《"操作非法\n";
}
}
}
department_write();
sport_write();
system("exit");
}
数据结构 运动会分数统计
这个单纯的数据库就可以搞定了吧
你自己把相应的表建好,导入测试数据然后
那些要求都很容易就可以实现查询出来的啊。
比如有2个表。学生信息stuinfor和分数信息scoinfor,结构为
stuinfor
学校名 schname varchar2(20)
学生姓名 stuname varchar2(20)
性别 sex char(2) check in (’男’or’女’)
参赛编号 stid number 主键
scoinfor
参赛编号 scid number 表stuinfor主键stid的外键
项目名 itemname varchar2(20)
名次 orderid number
成绩 grade number
1).可以输入各个项目的前三名或前五名的成绩
那么你就弄个按钮,可以输分数和项目名称,然后点击提交就实现
insert into scoinfor (scid,item,orderid,grade) values (参赛编号,项目名,名次,成绩)就OK了。
2).能统计各学校总分
有5个名次的项目
select itemname from scoinfor group by itemname where count(orderid) =5;
有3个埋简名次的项目
select itemname from scoinfor group by itemname where count(orderid) =3;
view C,连接两表
select schname,stid,itemname,orderid from stuinfor,scoinfor where stid = scid;
执行查询语句岩斗
select AA+BB as SUMscore from
(select sum(decode(C.orderid,1,5,2,3,3,2)) as ID5 from C where C.itemname in (select itemname from scoinfor group by itemname where count(orderid) =5) group by C.schname) AA join
(select sum(decode(C.orderid,1,7,2,5,3,3,4,2,5,1)) as ID3 from C where C.itemname in (select itemname from scoinfor group by itemname where count(orderid) =3) group by C.schname) BB
on AA.schname = BB.schname;
就能得到各个学校的总分了,然后再显示出来就OK。
至于后面弯枣裤的别的需求,就是分解为很多个小查询,然后再绑定不同的值,再简单加减乘除就可以得出来了。上面的查询有点复杂,当然也可以分解,再计算。

更多文章:
androidapp源码免费下载(如何实现APK的反编译得到APK的源码)
2026年9月22日 18:00
service pack 3(操作系统版本升级(SP) Service Pack 3当中的“Service Pack 3”是什么意思)
2026年9月22日 10:20
html代码怎么写大佬教程(html网页的题来个大佬,写代码,题目在图上)
2026年9月22日 10:10
结构体内又一个struct(c++ 在结构体中再嵌入一个结构体如何调用)
2026年9月22日 09:40
cocos creator中文(cocoscreator和cocoscreator3d的区别)
2026年9月22日 02:30






