C语言课程设计运动会成绩管理系统.docx
- 文档编号:12746744
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:14
- 大小:18.11KB
C语言课程设计运动会成绩管理系统.docx
《C语言课程设计运动会成绩管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计运动会成绩管理系统.docx(14页珍藏版)》请在冰点文库上搜索。
C语言课程设计运动会成绩管理系统
课程设计任务书
题目:
运动会成绩管理系统
一、课程设计时间
共计1周,20学时。
二、课程设计内容
用C语言编写软件完成以下任务:
1录入运动员信息;
2按项目查询运动员成绩;
3按系排名(参照运动员的总成绩)。
三、课程设计要求
1.程序质量:
✧贯彻结构化的程序设计思想。
✧用户界面友好,功能明确,操作方便。
✧用户界面中的菜单至少应包括“运动员信息录入”、“按项目查询运动员信息”、“按系排名”、“退出”4项。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2.课程设计说明书:
课程结束后,上交课程设计说明书和源程序。
课程设计说明书的格式和内容参见提供的模板。
四、指导教师和学生签字
指导教师:
________学生签名:
________
五、说明书成绩
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为3个模块,每一个模块对应一个函数。
在这些函数当中,添加学生数据函数,按系排名(参照学生总成绩)函数,按项目查询学生成绩函数的实现严格按照题目的要求。
主函数及菜单函数控制程序的整体运行。
1.添加学生数据函数主要实现程序最初运行时学生数据的录入以及其后的运行中学生数据的追加功能;
2.按系排名(参照学生总成绩)函数按照题目的具体要求实现的是参照不同院系的学生的总成绩给出院系的排名;
3.按项目查询函数允许按照项目名称对学生的各项成绩进行查询;
除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
每一个学生记录都包含学号、姓名、系别,以及赛跑比赛、跳远比赛、跳高比赛三门成绩,在程序当中,将学生记录类型定义为结构体类型,添加以及追加的学生信息直接写入定义的结构体中,其它函数每次对学生记录的访问,其数据来源都是该结构体,这样做不但可以保证学生数据的一致性,而且可以对学生数据进行永久保存,保证每次运行程序都可以采用原来的数据。
二、程序流程图
1.程序总体结构图
当1
真输入值n=1?
假
添加学真n=2?
假
生成绩
函数按系排真n=3?
假
add()名函数
sort()按项目查询函数退出
query()
图1程序总体结构图
2.具体功能框图
(1)添加学生数据函数add
输入添加学生数两n
循环变量i=1
当i<=n时
输入学号、姓名、系别和三门成绩
学生信息输入结构体中返回
i++
输出学生学号、姓名、系别和三门成绩
图2添加学生数据函数
(2)按系排名(参照学生总成绩)函数sort
循环变量n=1
当n<=N时
j=1
当j<=N-1时
真第j学生总分<第j+1学生总分假
交换两个学生信息j++j++
i++
结构体数据更新
i=1
当i<=N时
输出系别排名情况
i++
图3按系别排名
(3)按项目查询函数query
输入数字a(1~3)
1(代表赛跑)2代表(跳远)3(代表跳高)else
循环变量i=1
当i<=N时错误
i++
输出所选数字所代表的项目(赛跑或
跳远或跳高)的单项成绩
三、核心技术的实现说明及相应程序段
本程序主要由三个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其它函数来实现要求的所有功能。
在这些函数当中,添加学生数据函数、按系排名函数和按项目查询函数是程序中较为核心的部分,下面分别进行说明。
1.添加数据函数
当执行学生成绩录入功能时,所录入的数据被储存程序开头所定义的结构体中,并且各种数据被保存其中,方便以后其他的功能函数调用。
具体的程序段如下:
intn,i;
printf("请输入要添加的学生数量,按回车键确认:
");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("\n请输入第%d个学生的学号、姓名,系别,用空格分开,并按回车键确认:
\n",i);
scanf("%s%s%s",stu[i].num,stu[i].name,stu[i].xibie);
printf("\n请输入第%d个学生的赛跑比赛、跳远比赛、跳高比赛,用空格分开,并按回车键确认:
\n",i);
scanf("%f%f%f",&stu[i].race,&stu[i].jump,&stu[i].high);
printf("%s%s%s%f%f%f\n",stu[i].num,stu[i].name,stu[i].xibie,stu[i].race,stu[i].jump,stu[i].high);
}
2.按系排名函数(参照学生总成绩)
对于按系的排名采用的排序算法是冒泡法排序,其中总成绩的求得是在排序的过程中实现的,整个排序过程在结构体数组stu中实现,由于排序算法涉及到两个数组元素的信息交换,因此还需要定义一个中间变量来协助。
排序函数使学生数据的排列顺序发生了变化,因此也需要对结构体进行更新。
此外,对于系别排序后名次的确定,仅在结果输出时予以显示。
具体的程序段如下:
inti,j;
printf("*********************按系成绩排序结果如下**********************************\n\n");
printf("名次系别总成绩\n");
printf("*************************************************************************\n");
for(i=1;i<=N;i++)
for(j=1;j<=N-i;j++)
{
if(stu[j].race+stu[j].jump+stu[j].high { temp=stu[j]; stu[j]=stu[j+1]; stu[j+1]=temp; } } for(i=1;i<=N;i++) printf("\n%d%12s%11.2f\n",i,stu[i].xibie,stu[i].race+stu[i].jump+stu[i].high);} 3.按项目进行运动员成绩查询 当执行按项目进行运动员成绩查询时,整个查询过程是在结构体数组stu中实现的。 在此函数中,为了方便起见,用1代表赛跑比赛,2代表跳远比赛,3代表跳高比赛,输入数字后,用if语句进行判断,输出各个学生该项目的成绩。 具体的程序段如下: inti,a; printf("请输入1,2或3,1代表赛跑成绩,2代跳远成绩,3代表跳高成绩"); scanf("%d",&a); if(a==1) { printf("*********************按项目查询结果如下**********************************\n\n"); printf("名次学号姓名系别赛跑\n");printf("*************************************************************************\n"); for(i=1;i<=N;i++) { printf("\n%d%12s%12s%11s%11.2f\n",i,stu[i].num,stu[i].name,stu[i].xibie,stu[i].race); } getch(); } if(a==2) { printf("*********************按项目查询结果如下**********************************\n\n"); printf("名次学号姓名系别跳远\n"); printf("*************************************************************************\n"); for(i=1;i<=N;i++){printf("\n%d%12s%11s%11s%11.2f\n",i,stu[i].num,stu[i].name,stu[i].xibie,stu[i].jump); } getch(); } if(a==3) { printf("*********************按项目查询结果如下**********************************\n\n"); printf("名次学号姓名系别跳高\n");printf("*************************************************************************\n"); for(i=1;i<=N;i++) { printf("\n%d%12s%11s%11s%11.2f\n",i,stu[i].num,stu[i].name,stu[i].xibie,stu[i].high); } getch(); } 四、课设总结 程序的编写基本上符合任务要求。 在本次计算机课程设计中,虽然遇到了不少的问题,但通过与王老师和同学的不断交流,问题还是慢慢地得到解决。 在这一周的时间里,我学会了更好地分析问题、解决问题,和与同学进行沟通,交换思想。 五、参考文献 1谭浩强.C程序设计.北京: 清华大学出版社,2005 2刘成等.C语言程序设计实验指导与习题集.北京: 中国铁道出版社,2006 六、源程序 #include #include #include #include"conio.h" #defineN20 structstudent {charnum[20]; charname[10]; charxibie[10]; floatrace; floatjump; floathigh; }stu[N],temp; voidmenu(); voidadd(); voidsort(); voidquery(); voidmain() { intn; while (1) { menu(); printf("\n请输入您要选择的操作序号,按回车键确认: "); scanf("%d",&n); switch(n) { case1: add();break; case2: sort();break; case3: query();break; case4: exit(0); default: printf("输入错误,请输入列表中存在的序号! \n"); } } } voidmenu() { printf("*************************运动员成绩管理系统************************"); printf("\n1添加学生数据"); printf("\n2按系排名"); printf("\n3按项目查询"); printf("\n4退出"); } voidadd()/*添加学生信息*/ { intn,i; printf("请输入要添加的学生数量,按回车键确认: "); scanf("%d",&n); for(i=1;i<=n;i++) { printf("\n请输入第%d个学生的学号、姓名,系别,用空格分开,并按回车键确认: \n",i); scanf("%s%s%s",stu[i].num,stu[i].name,stu[i].xibie); printf("\n请输入第%d个学生的赛跑比赛、跳远比赛、跳高比赛,用空格分开,并按回车键确认: \n",i); scanf("%f%f%f",&stu[i].race,&stu[i].jump,&stu[i].high); printf("%s%s%s%f%f%f\n",stu[i].num,stu[i].name,stu[i].xibie,stu[i].race,stu[i].jump,stu[i].high); } } voidsort() {inti,j; printf("*********************按系成绩排序结果如下**********************************\n\n"); printf("名次系别总成绩\n"); printf("*************************************************************************\n"); for(i=1;i<=N;i++) for(j=1;j<=N-i;j++) { if(stu[j].race+stu[j].jump+stu[j].high { temp=stu[j]; stu[j]=stu[j+1]; stu[j+1]=temp; } } for(i=1;i<=N;i++) printf("\n%d%12s%11.2f\n",i,stu[i].xibie,stu[i].race+stu[i].jump+stu[i].high); } voidquery() { inti,a; printf("请输入1,2或3,1代表赛跑成绩,2代跳远成绩,3代表跳高成绩"); scanf("%d",&a); if(a==1) { printf("*********************按项目查询结果如下**********************************\n\n"); printf("名次学号姓名系别赛跑\n"); printf("*************************************************************************\n"); for(i=1;i<=N;i++) { printf("\n%d%12s%12s%11s%11.2f\n",i,stu[i].num,stu[i].name,stu[i].xibie,stu[i].race); } getch(); } if(a==2) { printf("*********************按项目查询结果如下**********************************\n\n"); printf("名次学号姓名系别跳远\n"); printf("*************************************************************************\n"); for(i=1;i<=N;i++) { printf("\n%d%12s%11s%11s%11.2f\n",i,stu[i].num,stu[i].name,stu[i].xibie,stu[i].jump); } getch(); } if(a==3) { printf("*********************按项目查询结果如下**********************************\n\n"); printf("名次学号姓名系别跳高\n"); printf("*************************************************************************\n"); for(i=1;i<=N;i++) { printf("\n%d%12s%11s%11s%11.2f\n",i,stu[i].num,stu[i].name,stu[i].xibie,stu[i].high); } getch(); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 运动会 成绩管理系统