C语言课设之校级运动会管理系统.docx
《C语言课设之校级运动会管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课设之校级运动会管理系统.docx(24页珍藏版)》请在冰豆网上搜索。
C语言课设之校级运动会管理系统
.
C 程序设计实习报告
校际运动会管理系统
一、题目要求
(1)信息初始化
输入:
N─参赛学校总数,M─男子竞赛项目数, W─女子竞赛项目数;
各项目名次取法有如下几种:
错误!
未找到引用源。
取前 5 名:
第一名得分 7,第二名得分 5,第三名得分 3,第四名得
分 2,第五名得分 1;
② 取前 3 名:
第一名得分 5,第二名得分 3,第三名得分 2;
③ 用户自定义:
各名次权值由用户指定。
(2)提醒用户填写比赛结果,输入各项目获奖运动员信息。
(3)所有信息记录完毕后,用户可以查询各个学校的比赛成绩,生成团体总分报表,察看参赛学
校信息和比赛项目信息等。
二.总体设计
分析整个系统,根据以上的需求分析及题目要求,可将整个系统的设计分为以下五个模块:
信
息输入、录入比赛结果、查询信息、退出.
1. 总的模块图Saveathele () 保存运动员信
InformationSaveschool ()保存学校信息
Saveprogram ()保存项目信息
Savescore() 比赛结果录入
Main
Ttzf () 查询团体总分
.
.
Search ( )Csxx ()查询参赛学校信息
Bsxm ()查询团体总分
Exi t(0)
图 1 整体模块图
三、详细设计
1.主函数
主函数一般设计的较为简洁,只提供输入、功能处理和输出部分的函数调用。
其中各功能模块
用菜单式选择。
另外菜单部分也可以写成函数。
[流程图]
显示一系列功能选项
输入n,判断n是否是1-4N
Y
根据n的值调用各功能模块函数
图2主函数流程图
[程序]
void main()
{
Word 专业资料
.
menu();
}
void menu()
{
int n,w1;
do
{
puts("\t\t***^__^Welcome to load sports system!
^__^***\n");
puts("\t\t************************MENU*************************\n");
puts("\t\t********1.Enter the information**************\n");
puts("\t\t********2.Score比赛结果录入**************\n");
puts("\t\t********3.Search**************\n");
puts("\t\t********4.Exit**************\n");
puts("\t\t******************************************************\n");
printf("Choice your number(1-4):
[ ]\b\b");
scanf("%d",&n);
if (n<1||n>4)
{
w1=1;
getchar();
}
else w1=0;
Word 专业资料
.
}
while (w1==1);
switch(n)
{case 1:
Information();break; //输入信息
case 2:
savescore();break;//比赛结果录入
case 3:
Search();break;//查询模块
case 4:
exit(0);
}
}
2. 各功能模块设计
(1)信息输入模块
一是参赛学校信息,二是参赛运动员信息,三是比赛项目信息,分别输入并保存
信息输入
读入、显示参赛学校读入、显示运动员读入比赛项目
图3信息输入模块流程图
void Information()
{
Word 专业资料
.
int n,w ;
do {
puts("\n\n\n");
puts("\t\t***^__^Welcome to load 信息录入 system!
^__^***\n");
puts("\t\t*************************MENU*************************\n");
puts("\t\t********1.saveathlete**********\n");
puts("\t\t********2.saveschool**********\n");
puts("\t\t********3.saveprogram()**********\n");
puts("\t\t********4.back**********\n");
puts("\t\t***************************************\n");
printf("Choic your number(1-4):
[ ]\b\b");
scanf("%d",&n);
if (n<1||n>4)
{
w=1;
getchar();
}
else w=0;
}
while (w==1);
switch(n)
{
Word 专业资料
.
case 1 :
saveathlete(); break;// 保存运动员信息子函数
case 2 :
saveschool(); break;//保存学校信息子函数
case 3 :
saveprogram();break;//保存项目比赛信息子函数
case 4 :
exit(0);
}
}
(2)结果录入模块
录入运动员比赛得分
分析计算各学校总分
图 4比赛结果录入模块流程图
(3)查询信息模块
[分析]
查询信息模块提供按不同式查询各种信息机返回功能,其中各功能模块用菜单式选择。
菜单部
分也可写成函数。
查询信息模块
查询学校查询运动员查询项目返回主菜单
图 6查询信息模块流程图
Word 专业资料
.
定义结构体指针 UNI*next
输入学校名字
判断输入名字与结构体中学校名
是否相同
N
指针变量值向下一组数据
图 8 查询学校名流程图
Y
调用输出函数
1.结果
各模块界面图如图:
(1) 主菜单函数
Word 专业资料
.
(2) 信息录入模块
(3) 查询子菜单
(4) 按学校名字查询信息
Word 专业资料
.
(5)按项目查询项目信息
(5) 查询团体总分
Word 专业资料
.
程序代码:
#include
#include
#include
#include
#define SIZE 9
#define N3
#define WM3
void bsxm();
void csxx();
void Information();
int main();
void menu();
void printf_back();
void saveathlete();
void saveprogram();
void saveschool();
void savescore();
void Search();
void ttzf();
int i;
FILE *fp1,*fp2,*fp3,*fp4;
struct athlete//定义运动员信息
{
char univ[5];
char name[8];
char prog[15];
char mingci[5];
int score;
}at[SIZE];
struct xuexiao//定义学校信息
{
char univ[5];
char prog[15];
int num_athlete;
}xx[N];
struct program//定义项目信息
Word 专业资料
.
{
char prog[5];
int quming;
char ath1[5];
char ath2[5];
char univ1[5];
char univ2[5];
}pro[WM];
struct zongfen//定义学校得分信息
{
char univ[5];
char prog1[5];
char prog2[5];
char prog3[5];
int score1;
int score2;
int score3;
int total_score;
}zf[N];
void Information()
{
int n,w ;
do {
puts("\n\n\n");
puts("\t\t***^__^欢迎进入信息录入系统^__^***\n");
puts("\t\t*************************菜单*************************\n");
puts("\t\t********1.运动员**********\n");
puts("\t\t********2.学校**********\n");
puts("\t\t********3.项目信息**********\n");
puts("\t\t********4.返回**********\n");
puts("\t\t***************************************\n");
printf("请选择(1-4):
[ ]\b\b");
scanf("%d",&n);
if (n<1||n>4)
{
w=1;
getchar();
}
else w=0;
}
while (w==1);
switch(n)
{
case 1 :
saveathlete(); break;// 保存运动员信息子函数
Word 专业资料
.
case 2 :
saveschool(); break;//保存学校信息子函数
case 3 :
saveprogram();break;//保存项目比赛信息子函数
case 4 :
exit(0);
}
}
void saveathlete()//保存运动员信息子函数
{
printf("\n 请输入各项目获奖运动员的信息:
");
for(i=0;i{
printf("\n 请输入第%d 个运动员的信息:
\n",i+1);
printf("姓名:
");
scanf("%s",at[i].name);
printf("学校:
");
scanf("%s",at[i].univ);
printf("参赛项目:
");
scanf("%s",at[i].prog);
printf("名次:
");
scanf("%s",at[i].mingci);
printf("得分:
");
scanf("%d",&at[i].score);
}
fp1=fopen("ath","w");
for(i=0;i{
if(fwrite(&at[i],sizeof(struct athlete),1,fp1)!
=1)
printf("File write error!
\n");
}
fclose(fp1);
fp1=fopen("运动员","r");
printf("\n 现在各运动员的信息如下:
\n\n");
printf("姓名学校项目名次
for(i=0;i{
Word 专业资料
得分\n");
.
fread(&at[i],sizeof(struct athlete),1,fp1);
printf("%-10s%-10s%-18s%-10s%d\n",at[i].name,at[i].univ,at[i].prog,at[i].mingci,at[i].score);
}
fclose(fp1);
printf_back();
}
void saveschool()//保存学校信息子函数
{
printf("\n 请输入各参赛学校的信息:
");
for(i=0;i{
printf("\n 请输入第%d 个学校的信息:
\n",i+1);
printf("学校:
");
scanf("%s",xx[i].univ);
printf("参赛的项目:
");
scanf("%s",xx[i].prog);
printf("参赛者数:
");
scanf("%d",&xx[i].num_athlete);
}
fp3=fopen("学校","w");
for(i=0;i{
if(fwrite(&xx[i],sizeof(struct xuexiao),1,fp3)!
=1)
printf("File write error!
\n");
}
fclose(fp3);
printf_back();
}
void saveprogram()//保存项目比赛信息子函数
{
printf("\n 请输入关于比赛项目的信息:
");
for(i=0;i{
printf("\n 请输入第%d 项比赛的信息:
\n",i+1);
printf("项目:
");
scanf("%s",pro[i].prog);
Word 专业资料
.
printf("取分情况:
");
scanf("%d",&pro[i].quming);
printf("参赛者 1:
");
scanf("%s",pro[i].ath1);
printf("所属学校:
");
scanf("%s",pro[i].univ1);
printf("参赛者 2:
");
scanf("%s",pro[i].ath2);
printf("所属学校:
");
scanf("%s",pro[i].univ2);
}
fp4=fopen("pr","w");
for(i=0;i{
if(fwrite(&pro[i],sizeof(struct program),1,fp4)!
=1)
printf("File write error!
\n");
}
fclose(fp4);
printf_back();
}
void savescore()//保存学校得分情况子函数
{
printf("N-参赛学校总数,M-男子竞赛项目数,W-女子竞赛项目数。
\n");
printf("W.100-女子一百米比赛,M.100-男子一百米,M.200-男子两百米。
\n");
printf("\n 各项名次得分权值如下:
\n");
printf("取前三名:
第一名 5 分第二名 3 分第三名 2 分\n");
printf("\n 请输入各学校的得分情况:
");
for(i=0;i{
printf("\n 请输入第%d 个学校的得分情况:
\n",i+1);
printf("学校:
");
scanf("%s",zf[i].univ);
printf("参赛项目 1:
");
Word 专业资料
.
scanf("%s",zf[i].prog1);
printf("得分:
");
scanf("%d",&zf[i].score1);
printf("参赛项目 2:
");
scanf("%s",zf[i].prog2);
printf("得分:
");
scanf("%d",&zf[i].score2);
printf("参赛项目 3:
");
scanf("%s",zf[i].prog3);
printf("得分:
");
scanf("%d",&zf[i].score3);
zf[i].total_score=zf[i].score1+zf[i].score2+zf[i].score3;
}
fp2=fopen("zfen","w");
for(i=0;i{
if(fwrite(&zf[i],sizeof(struct zongfen),1,fp2)!
=1)
printf("File write error!
\n");
}
fclose(fp2);
printf_back();
}
void Search()
{
int n,w2;
do
{
puts("\t\t***^__^欢迎进入搜索系统!
^__^***\n");
puts("\t\t******************菜单******************\n");
puts("\t\t********1.查看团体总分 **************\n");//查看团体总分
puts("\t\t********2.查看参赛学校信息*********\n");//查看参赛学校信息!
puts("\t\t********3.查看比赛项目信息 **********\n");//查看比赛项目信息!
puts("\t\t********4.退出**************\n");//退出
puts("\t\t***************************************\n");
Word 专业资料
.
printf("请选择(1-4):
[ ]\b\b");
scanf("%d",&n);
if (n<1||n>4)
{
w2=1;
getchar();
}
else w2=0;
}
while (w2==1);
switch(n)
{case 1:
ttzf();break;
case 2:
csxx();break;
case 3:
bsxm();break;
case 4:
exit(0);break;
default:
printf("未进行任操作!
");
}
}
void ttzf()//查看学校团体总分子函数
{
fp2=fopen("总分","r");
printf("\n 各学校的团体总分情况如下:
\n\n");
printf("学校参赛项目总分\n");
for(i=0;i{
fread(&zf[i],sizeof(struct zongfen),1,fp2);
printf("%-8s%s,%s,%-12s%-12d\n",zf[i].univ,zf[i].prog1,zf[i].prog2,zf[i].prog3,zf[i].total_score);
}
fclose(fp2);
printf_back();
}
void csxx()//查看参赛学校信息子函数
{
fp3=fopen("xxiao","r");
printf("\n 各参赛学校的情况如下:
\n\n");
printf("学校参赛项目参赛者数\n");
for(i=0;i{
fread(&xx[i],sizeof(struct xuexiao),1,fp3);
Word 专业资料
.
printf("%-8s%-20s%-12d\n",xx[i].univ,xx[i].prog,xx[i].num_athlete);
}
fclose(fp3);
printf_back();
}
void bsxm()//查看比赛项目子函数
{
fp4=fopen("pr","r");
printf("\n 各比赛项目的信息如下:
\n\n");
printf("项目取分情况参赛者 1所属学校参赛者 2所属学校\n");
for(i=0;i{
fread(&pro[i],sizeof(struct program),1,fp4);
printf("%-12s%-10d%-10s%-12s%-10s%-12s\n",pro[i].prog,pro[i].quming,pro[i].ath1,pro[i].univ1,p
ro[i].ath2,pro[i].univ2);
}
fclose(fp4);
printf_back();
}
int main()
{
menu();
}
void menu()
{
int n,w1;
do
{
puts("\t\t********^__^欢迎进入运动会系统^__^**********\n");
puts("\t\t***********************菜单***************************\n");
puts("\t\t******************1.录入信息 ***********************\n");
puts("\t\t******************2.成绩比赛结果录入*********\n");
puts("\t\t******************3.查询**************************\n");
puts("\t\t******************4.退出**************************\n");
puts("\t\t******************************************************\n");
printf("请选择(1-4):
[ ]\b\b");
scanf("%d",&n);
Word 专业资料
.
if (n<1||n>4)
{
w1=1;
getchar();
}
else w1=0;
}
while (w1==1);
switch(n)
{case 1:
Information();break; //输入信息
case 2:
savescore();break;//比赛结果录入
case 3:
Search();break;//查询模块
case 4:
exit(0);
}
}
//公共函数
void print