语
言
课
程
设
计
学 校 运 动 会
理系统
代码误运行
专业:网络工程
班级:
报告:
指导老师:
报告日期:2014年X月X号
需求分析
1 问题描述:
建立运动员信息系统包括运动员裁判员运动信息成绩理运动员信息编号姓名身份信息(教师学生)参加赛项目等裁判员信息编号姓名身份信息(教师学生)裁判项目运动会信息包含赛项目信息时间安排裁判信息赛成绩等
2功求:
(1)种运动信息需利文件形式进行存储
(2)输入功:键盘文件中次性输入条信息
(3)输出功:运动员裁判员赛信息印输出显示
(4)查找功:根运动员裁判员等查找出需赛信息
(5)增加删修改功:完成运动员信息种更新
(6)统计功:完成类赛信息统计功例某项赛名词排名运动员积分成绩统计等
二 总体设计
1 学校运动会理系统系统进行模块化分析
学校运动会理系统
统计功
查找功
增加删修改功
输出功
输入功
输出全部赛项目
输出单项赛信息
赛信息模块
姓名删运动员信息
搜索姓名修改运动员信息
搜索号码修改运动员信息
姓名查找运动员信息
号码查找运动员信息
增加运动员信息
输出全部运动员信息
学生功模块
姓名查询裁判员信息
裁判员功模块
输出全部裁判员信息
学校运动会理系统
三 详细设计
程序包含main函数外包含20函数:menu()menu2()reads(struct athletes ath[N]) reads1(struct referee ref[N])reads2(struct All_the_events sport[N]) save(struct athletes ath[N]int n) show_athletes()how_referee()add()According_to_the_number_to_find_players_information ()According_to_the_name_to_find_players_information ()According_to_the_number_to_Modify_the_players_information ()According_to_the_name_to_Modify_the_players_information ()According_to_the_name_to_delete_the_players_information ()According_to_the_name_to_find_referee_information ()show_all_events () Output_on_a_single_information () sort()keep() sheep()
外定义三结构体类型:struct athletesstruct refereestruct All_the_events
函数名
功
入口
出口
调关系
menu()
输出菜单选项
该函数形参
printf()输出信息返回值
main()中反复调
menu2()
输出输出单项赛信息菜单选项
该函数形参
printf()输出信息返回值
main()中反复调
reads(struct athletes ath[N])
读取运动员文件中容
形参结构体struct athletes ath[N]
return i
需运动员数时调
reads1(struct referee ref[N])
读取裁判员取文件中容
形参结构体struct referee ref[N]
return i
需裁判员数时调
reads2(struct All_the_events sport[N])
读取全部赛项目文件中容
形参结构体struct All_the_events sport[N]
return i
需全部赛项目数时调
save(struct athletes ath[N]int n)
运动员信息改变更新文件
形参结构体struct athletes ath[N] int n
运动员信息存入文件返回值
文件需保存时调
show_athletes()
输出全部运动员信息
该函数形参
printf()输出信息返回值
main()中反复调
add()
增加运动员信息
该函数形参
printf()输出信息返回值
main()中反复调
According_to_the_number_to_find_players_information ()
号码查找运动员信息
该函数形参
printf()输出信息返回值
main()中反复调
According_to_the_name_to_find_players_information ()
姓名查找运动员信息
该函数形参
printf()输出信息返回值
main()中反复调
According_to_the_number_to_Modify_the_players_information ()
搜索号码修改运动员信息
该函数形参
printf()输出信息返回值
main()中反复调
According_to_the_name_to_Modify_the_players_information ()
搜索姓名修改运动员信息
该函数形参
printf()输出信息返回值
main()中反复调
According_to_the_name_to_delete_the_players_information ()
姓名删该运动员信息
该函数形参
main()中反复调
show_referee()
输出全部裁判员信息
该函数形参
printf()输出信息返回值
main()中反复调
According_to_the_name_to_find_referee_information ()
姓名查找裁判员信息
该函数形参
printf()输出信息返回值
main()中反复调
show_all_events ()
输出输出全部赛项目
该函数形参
printf()输出信息返回值
main()中反复调
Output_on_a_single_information ()
输出单项赛信息
该函数形参
printf()输出信息返回值
main()中反复调
sort()
百米赛跑成绩排名
该函数形参
printf()输出信息返回值
main()中反复调
keep()
三级跳成绩排名
该函数形参
printf()输出信息返回值
main()中反复调
sheep()
撑杆跳成绩排名
该函数形参
printf()输出信息返回值
main()中反复调
四 调试测试
1测试目:测试出调函数存数调错误分步调试程中检查出语句错误检查程序程中量做出定更改已达程序更加简洁目
2测试方法:调函数进行分步调试运行成功根运行结果源程序做出相应更改
3测试错误:a 搜索号码修改运动员信息时发现文件删 b 三级跳成绩排名时发现数面数覆盖 c等等
4解决措施:a没找方法耶b结构体 struct All_the_events中 char place[10]改成char place[20]
五测试结果
1 输出菜单
2 增加运动员信息
3输出全部运动员信息
4号码查找运动员信息
5姓名查找运动员信息
6输出全部裁判员信息
7姓名查询裁判员信息
8输出全部赛项目
9输出单项赛信息
6户手册:
进入输出菜单选项界面>般开选择操作2先增加运动员信息>根户需求选择操作>选择操作13退出系统
7附录(源代码)
#include
#include
#include
#include
#define N 20
struct athletes
{
char num[20]
char name[10]
char Identity_information [10]
float baimi
float sanjitiao
float chenggantiao
}
struct referee
{
char num[20]
char name[10]
char Identity_information [10]
char baimi[10]
char sanjitiao[10]
char chenggantiao[10]
}
struct All_the_events
{
char sport_name[10]
char time[20]
char referee[10]
char place[20]
}
void menu() 输出菜单选项
void menu2() 输出输出单项赛信息菜单选项
int reads(struct athletes ath[N]) 读取运动员文件中容
int reads1(struct referee ref[N]) 读裁判员取文件中容
int reads2(struct All_the_events sport[N]) 读取全部赛项目文件中容
void save(struct athletes ath[N]int n) 运动员信息改变更新文件
void show_athletes() 输出全部运动员信息
void show_referee() 输出全部裁判员信息
void add()增加运动员信息
void According_to_the_number_to_find_players_information () 号码查找运动员信息
void According_to_the_name_to_find_players_information () 姓名查找运动员信息
void According_to_the_number_to_Modify_the_players_information () 搜索号码修改运动员信息
void According_to_the_name_to_Modify_the_players_information () 搜索号码姓名修改运动员信息
void According_to_the_name_to_delete_the_players_information () 姓名删该运动员信息
void According_to_the_name_to_find_referee_information () 姓名查找裁判员信息
void show_all_events () 输出输出全部赛项目
void Output_on_a_single_information ()输出单项赛信息
void sort() 百米赛跑成绩排名
void keep() 三级跳成绩排名
void sheep() 撑杆跳成绩排名
void main()
{
int n
while(1)
{
menu()
printf(\n 请输入您选择操作序号回车键确认:)
scanf(d&n)
switch(n)
{
case 1 show_athletes()break
case 2 add()break
case 3 According_to_the_number_to_find_players_information ()break
case 4 According_to_the_name_to_find_players_information ()break
case 5 According_to_the_number_to_Modify_the_players_information ()break
case 6 According_to_the_name_to_Modify_the_players_information ()break
case 7 According_to_the_name_to_delete_the_players_information ()break
case 9 show_referee()break
case 10According_to_the_name_to_find_referee_information ()break
case 11show_all_events () break
case 12Output_on_a_single_information ()break
case 13 exit(0)
default
printf(输入错误请输入列表中存序号\n )
}
}
}
void menu() 输出菜单选项
{
printf( *════════* \n)
printf( ════════╣*运动会理系统* ╠═════\n)
printf( ║ *════════* ║\n)
printf( ║ 1输出全部运动员信息 ║\n)
printf( ║ ║\n)
printf( ║ 2增加运动员信息 ║\n)
printf( ║ ║\n)
printf( ║ 3号码查找运动员信息 ║\n)
printf( ║ ║\n)
printf( ║ 4姓名查找运动员信息 ║\n)
printf( ║ ║\n)
printf( ║ 5搜索号码修改运动员信息 ║\n)
printf( ║ ║\n)
printf( ║ 6搜索姓名修改运动员信息 ║\n)
printf( ║ ║\n)
printf( ║ 7姓名删运动员信息 ║\n)
printf( ║ ║\n)
printf( ║ 8运动员积分排名 ║\n)
printf( ║ ║\n)
printf( ║ 9输出全部裁判员信息 ║\n)
printf( ║ ║\n)
printf( ║ 10姓名查询裁判员信息 ║\n)
printf( ║ ║\n)
printf( ║ 11输出全部赛项目 ║\n)
printf( ║ ║\n)
printf( ║ 12输出单项赛信息 ║\n)
printf( ║ ║\n)
printf( ║ 13退出系统 ║\n)
printf( ═══════════════════════\n)
}
void menu2() 输出输出单项赛信息菜单选项
{
printf( *════════* \n)
printf( ════════╣* 单项赛信息 *╠═════\n)
printf( ║ *════════* ║\n)
printf( ║ 1百米赛跑 ║\n)
printf( ║ ║\n)
printf( ║ 2三级跳 ║\n)
printf( ║ ║\n)
printf( ║ 3撑杆跳 ║\n)
printf( ║ ║\n)
printf( ║ 4退出系统 ║\n)
printf( ═══════════════════════\n)
}
int reads(struct athletes ath[N]) 读取运动员文件中容
{
FILE *fp
int i0
if((fpfopen(f\\程序设计\\athletestxtr))NULL)
{
printf(文件开失败\n)
return 0
}
else
{
for(i0feof(fp)i++)
fscanf(fps s s f f f\nath[i]numath[i]nameath[i]Identity_information&ath[i]baimi&ath[i]sanjitiao&ath[i]chenggantiao)
}
fclose(fp)
return i
}
int reads1(struct referee ref[N]) 读取裁判员取文件中容
{
FILE *fp
int i0
if((fpfopen(f\\程序设计\\refereetxtr))NULL)
{
printf(文件开失败\n)
return 0
}
else
{
for(i0feof(fp)i++)
fscanf(fps s s s s s\nref[i]numref[i]nameref[i]Identity_informationref[i]baimiref[i]sanjitiaoref[i]chenggantiao)
}
fclose(fp)
return i
}
int reads2(struct All_the_events sport[N]) 读取全部赛项目文件中容
{
FILE *fp
int i0
if((fpfopen(f\\程序设计\\All_the_eventstxtr))NULL)
{
printf(文件开失败\n)
return 0
}
else
{
for(i0feof(fp)i++)
fscanf(fps s s s\nsport[i]sport_namesport[i]timesport[i]refereesport[i]place)
}
fclose(fp)
return i
}
void save(struct athletes ath[N]int n) 运动员信息改变更新文件
{
FILE *fp
int i0
if((fpfopen(f\\程序设计\\athletestxtw))NULL)
{
printf(文件开失败\n)
return
}
else
{
for(i0i
}
fclose(fp)
}
void show_athletes() 输出全部运动员信息
{
struct athletes ath[N]
int in
nreads(ath)
printf(*****************************学生信息***************************\n\n)
printf( 序号 号码 姓名 身份 百米赛跑(s) 三级跳(m) 撑杆跳(m) \n)
printf(**************************************************************************\n)
for(i0i
getch()
}
void add()增加运动员信息
{
FILE *fp
int ni
struct athletes ath
if((fpfopen(f\\程序设计\\athletestxta))NULL) 果文件已存追加学生信息
{
if((fpfopen(f\\程序设计\\athletestxtw))NULL) 文件存时创建新文件输入学生信息
{
printf(文件开失败\n)
return
}
}
printf(请输入添加运动员数量回车键确认:)
scanf(d&n)
for(i1i
printf(\n请输入第d运动员号码姓名身份空格分开回车键确认:\ni)
scanf(sssathnumathnameathIdentity_information)
printf(\n请输入第d运动员百米赛跑(单位s)三级跳(单位m)撑杆跳(单位m)三项成绩空格分开没参加项目0表示回车键确认:\ni)
scanf(fff&athbaimi&athsanjitiao&athchenggantiao)
fprintf(fps s s f f f\nathnumathnameathIdentity_informationathbaimiathsanjitiaoathchenggantiao)
}
fclose(fp)
}
void According_to_the_number_to_find_players_information () 号码查找运动员信息
{
struct athletes ath[N]
int ni
char number[20]
printf(\n请输入查找运动员号码回车键确认:)
scanf(snumber)
nreads(ath)
for(i0i
break
if(i>n)
{
printf(学生信息)
return
}
printf(\n现输出该运动员号码姓名身份百米赛跑三级跳撑杆跳三门成绩回车键确认:\n)
printf( 序号 号码 姓名 身份 百米赛跑 三级跳 撑杆跳 \n)
printf(*************************************************************\n)
printf(\n3d12s11s11s112f122f112f\ni+1ath[i]numath[i]nameath[i]Identity_informationath[i]baimiath[i]sanjitiaoath[i]chenggantiao)
}
void According_to_the_name_to_find_players_information () 姓名查找运动员信息
{
struct athletes ath[N]
int ni
char name[20]
printf(\n请输入查找运动员姓名回车键确认:)
scanf(sname)
nreads(ath)
for(i0i
break
if(i>n)
{
printf(学生信息)
return
}
printf(\n现输出该运动员号码姓名身份百米赛跑三级跳撑杆跳三门成绩回车键确认:\n)
printf( 序号 号码 姓名 身份 百米赛跑 三级跳 撑杆跳 \n)
printf(*************************************************************\n)
printf(\n3d12s11s11s112f122f112f\ni+1ath[i]numath[i]nameath[i]Identity_informationath[i]baimiath[i]sanjitiaoath[i]chenggantiao)
}
void According_to_the_number_to_Modify_the_players_information () 搜索号码修改运动员信息
{
struct athletes ath[N]
int ni
char number[20]
printf(\n请输入更改信息运动员号码回车键确认:)
scanf(snumber)
nreads(ath)
for(i0i
break
if(i>n)
{
printf(运动员信息)
return
}
printf(\n请输入更改运动员号码姓名身份百米赛跑三级跳撑杆跳三门成绩回车键确认:\n)
scanf(sssfffath[i]numath[i]nameath[i]Identity_information&ath[i]baimi&ath[i]sanjitiao&ath[i]chenggantiao)
save(athn)
}
void According_to_the_name_to_Modify_the_players_information () 搜索姓名修改运动员信息
{
struct athletes ath[N]
int ni
char name[20]
printf(\n请输入更改信息运动员姓名回车键确认:)
scanf(sname)
nreads(ath)
for(i0i
break
if(i>n)
{
printf(运动员信息)
return
}
printf(\n请输入更改运动员号码姓名身份百米赛跑(单位s)三级跳(单位m)撑杆跳(单位m)三项成绩空格分开没参加项目0表示回车键确认:\n)
scanf(sssfffath[i]numath[i]nameath[i]Identity_information&ath[i]baimi&ath[i]sanjitiao&ath[i]chenggantiao)
save(athn)
}
void According_to_the_name_to_delete_the_players_information () 姓名删该运动员信息
{
struct athletes ath[N]
char name[20]
int nij
nreads(ath)
printf(\n请输入删信息运动员姓名回车键确认:)
scanf(sname)
for(i0i
break
if(i>n)
{
printf(没找该运动员信息\n)
return
}
else
{
for(ji+1j
}
save(athn1)
printf(删成功\n)
}
void show_referee() 输出全部裁判员信息
{
struct referee ref[N]
int in
nreads1(ref)
printf(*********************裁判员信息**********************\n\n)
printf( 序号 号码 姓名 身份 百米赛跑 三级跳 撑杆跳 \n)
printf(*************************************************************\n)
for(i0i
getch()
}
void According_to_the_name_to_find_referee_information () 姓名查找裁判员信息
{
struct referee ref[N]
int ni
char name[20]
printf(\n请输入查找裁判员姓名回车键确认:)
scanf(sname)
nreads1(ref)
for(i0i
break
if(i>n)
{
printf(裁判员信息)
return
}
printf(*********************现输出该裁判员信息******************\n\n)
printf( 序号 号码 姓名 身份 百米赛跑 三级跳 撑杆跳 \n)
printf(*************************************************************\n)
printf(\n3d8s8s8s10s8s8s\ni+1ref[i]numref[i]nameref[i]Identity_informationref[i]baimiref[i]sanjitiaoref[i]chenggantiao)
}
void show_all_events () 输出输出全部赛项目
{
struct All_the_events sport[N]
int in
nreads2(sport)
printf(*********************输出全部赛项目**********************\n\n)
printf( 序号 赛项目 赛时间 裁判员 赛点\n)
printf(***********************************************************\n)
for(i0i
getch()
}
void Output_on_a_single_information ()输出单项赛信息
{
int n
while(1)
{
menu2()
printf(\n 请输入您选择操作序号回车键确认:)
scanf(d&n)
switch(n)
{
case 1 sort()break
case 2 keep()break
case 3 sheep()break
case 4 exit(0)
default
printf(输入错误请输入列表中存序号\n )
}
}
}
void sort() 百米赛跑成绩排名
{
struct athletes ath[N]temp
int ijn
nreads(ath)
for(i0i
if(ath[j]baimi>ath[j+1]baimi)
{
tempath[j]
ath[j]ath[j+1]
ath[j+1]temp
}
}
save(athn)
j1
printf(*********************百米赛跑成绩排序结果******************\n\n)
printf( 名次 号码 姓名 身份 百米赛跑(s)\n)
printf(*************************************************************\n)
for(i0i
if(ath[i]baimiath[i+1]baimi)
printf(\n3d12s11s11s112f\njath[i]numath[i]nameath[i]Identity_informationath[i]baimi )
else
printf(\n3d12s11s11s112f\nj++ath[i]numath[i]nameath[i]Identity_informationath[i]baimi )
}
getch()
}
void keep() 三级跳成绩排名
{
struct athletes ath[N]temp
int ijn
nreads(ath)
for(i0i
if(ath[j]sanjitiao
tempath[j]
ath[j]ath[j+1]
ath[j+1]temp
}
}
save(athn)
j1
printf(*********************三级跳成绩排序结果******************\n\n)
printf( 名次 号码 姓名 身份 三级跳(m)\n)
printf(***************************************************************\n)
for(i0i
if(ath[i]sanjitiaoath[i+1]sanjitiao)
printf(\n3d12s11s11s112f\njath[i]numath[i]nameath[i]Identity_informationath[i]sanjitiao )
else
printf(\n3d12s11s11s112f\nj++ath[i]numath[i]nameath[i]Identity_informationath[i]sanjitiao )
}
getch()
}
void sheep() 撑杆跳成绩排名
{
struct athletes ath[N]temp
int ijn
nreads(ath)
for(i0i
if(ath[j]chenggantiao
tempath[j]
ath[j]ath[j+1]
ath[j+1]temp
}
}
save(athn)
j1
printf(*********************撑杆跳成绩排序结果******************\n\n)
printf( 名次 号码 姓名 身份 撑杆跳(m)\n)
printf(***************************************************************\n)
for(i0i
if(ath[i]chenggantiaoath[i+1]chenggantiao)
printf(\n3d12s11s11s112f\njath[i]numath[i]nameath[i]Identity_informationath[i]chenggantiao )
else
printf(\n3d12s11s11s112f\nj++ath[i]numath[i]nameath[i]Identity_informationath[i]chenggantiao )
}
getch()
}
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档