C语言课程设计运动会成绩管理系统.wps资料文档下载
- 文档编号:1450428
- 上传时间:2023-04-30
- 格式:WPS
- 页数:19
- 大小:97KB
C语言课程设计运动会成绩管理系统.wps资料文档下载
《C语言课程设计运动会成绩管理系统.wps资料文档下载》由会员分享,可在线阅读,更多相关《C语言课程设计运动会成绩管理系统.wps资料文档下载(19页珍藏版)》请在冰点文库上搜索。
在这些函数当中,添加运动员数据函数,删除数据函数,某项成绩排序函数的实现严格按照题目的要求,而更改数据函数和显示函数属于附加功能。
读取文件函数和保存信息函数对其它函数的实现起辅助作用,主函数及菜单函数控制程序的整体运行。
1.添加运动员数据函数主要实现程序最初运行时运动员数据的录入以及其后的运行中学生数据的追加功能;
2.删除运动员数据函数实现的功能是按照号码对运动员的数据记录进行删除;
3.排序函数按照题目的具体要求实现的是某项成绩的递减排序以及名次显示,其中总成绩相同者名次相同;
4.更改数据函数可以实现对运动员的各项信息进行修改;
5.显示函数实现的是显示目前所有的有效运动员记录信息。
除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执1行。
每一个运动员记录都包含号码、姓名,以及百米赛跑、三级跳和撑杆跳三门成绩,在程序当中,将运动员记录类型定义为结构体类型,添加以及追加的运动员信息直接写入E盘的student.txt文件中,其它函数每次对运动员记录的访问,其数据来源都是student.txt文件,这样做不但可以保证运动员数据的一致性,而且可以对运动员数据进行永久保存,保证每次运行程序都可以采用原来的数据。
二、程序流程图二、程序流程图1.程序总体结构图2当1真输入值n=1?
假真n=2?
假真n=3?
假真n=4?
假真n=5?
假真?
假添加运动员信息函数add()显示运动员信息函数show()删除函数del()更新函数change()百米排序函数sort()三级跳排序sort()n=7?
真假撑杆跳排序退出函数Sort()图1程序总体结构图2.排序功能框图排序函数sort3当jn-1-i时j+循环变量i=0第j个运动员成绩第j+1个运动员成绩真假交换两个运动员信息j+i+当in-1时i=0当in时输出运动员信息和排名情况i+n=reads(stu)调用更新文件函数save(stu,n)j=0成绩排序三、核心技术的实现说明及相应程序段三、核心技术的实现说明及相应程序段本程序主要由10个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其它函数来实现要求的所有功能。
在这些函数当中,添加学生数据函数、删除数据函数和排序函数是程序中较为核心的部分,下面分别进行说明。
1.添加数据函数4添加数据分为两种情况,其一是在运动员文件(student.txt)不存在的情况下,首先由程序创建一个新文件,并将录入的运动员信息写入该文件当中;
其二是在运动员文件(student.txt)已经存在的情况下,此时文件以追加的方式打开,这样才可以保证以前已经存在的数据不丢失。
具体的程序段如下:
FILE*fp;
intn,i;
structstudentstu;
if(fp=fopen(e:
student.txt,a)=NULL)/如果文件已经存在,可以追加学生信息如果文件已经存在,可以追加学生信息if(fp=fopen(e:
student.txt,w)=NULL)/文件不存在时,创建新文件,输入学生信息文件不存在时,创建新文件,输入学生信息printf(文件打开失败!
文件打开失败!
n);
return;
printf(请输入要添加的运动员数量,按回车键确认:
请输入要添加的运动员数量,按回车键确认:
);
scanf(%d,&
for(i=1;
i=n;
i+)printf(n请输入第请输入第%d个运动员的号码、姓名,用空格分开,并按回车键确认:
个运动员的号码、姓名,用空格分开,并按回车键确认:
n,i);
scanf(%s%s,stu.num,stu.name);
printf(n请输入第请输入第%d个运动员的百米赛跑、三级跳和撑杆跳三项成绩,用空格分开,并按回车键确认:
个运动员的百米赛跑、三级跳和撑杆跳三项成绩,用空格分开,并按回车键确认:
scanf(%f%f%f,&
stu.baimi,&
stu.sanjitiao,&
stu.chenggantiao);
5fprintf(fp,%s%s%f%f%fn,stu.num,stu.name,stu.baimi,stu.sanjitiao,stu.chenggantiao);
fclose(fp);
2.删除数据函数该函数的核心内容是删除算法以及最终对源文件的更新。
该函数执行时,首先调用reads函数将文件中的运动员信息读入数组当中,并由用户输入待删除运动员的号码,而后按照该号码进行查找,如果文件中存在该运动员的数据,则采用删除算法删除,否则输出运动员信息不存在的提示信息。
对运动员信息的具体删除算法是在结构体数组中实现的,当运动员的信息被找到后,位于数组中该学生后面的运动员记录依次向前移动一个元素的位置,这些操作完成后,要删除运动员信息就被后面的数组元素覆盖掉了,也就实现了删除。
在数组中删除运动员信息后,还要将更改后的信息重新写回文件当中,以保证数据的一致性。
具体程序段如下:
structstudentstuN;
charnumber20;
intn,i,j;
n=reads(stu);
printf(n请输入要删除信息运动员号码,按回车键确认:
scanf(%s,number);
for(i=0;
i=n)printf(没有找到该运动员信息!
elsefor(j=i+1;
jn;
j+)stuj-1=stuj;
save(stu,n-1);
printf(删除成功!
3.总分排序函数对于某项的排序采用的排序算法是冒泡法排序,整个排序过程在结构体数组stu中实现,由于排序算法涉及到两个数组元素的信息交换,因此还需要定义一个中间变量来协助。
排序函数使运动员数据的排列顺序发生了变化,因此也需要对源文件进行更新。
此外,对于运动员排序后名次的确定,仅在结果输出时予以显示,并未将名次信息写入源文件。
具体的程序段如下(由于各项成绩排序函数相同,所以只给出百米赛跑排名程序):
voidsort()/按百米赛跑成绩排名structstudentstuN,temp;
inti,j,n;
7for(i=0;
in-1;
i+)for(j=0;
jn-1;
j+)if(stuj.baimistuj+1.baimi)temp=stuj;
stuj=stuj+1;
stuj+1=temp;
save(stu,n);
j=1;
printf(*百米赛跑成绩排序结果如下*nn);
printf(名次号码姓名百米赛跑成绩n);
printf(*n);
in;
i+)/输出结果并排名if(stui.baimi=stui+1.baimi)printf(n%3d%12s%11s%11.2f%11.2f%11.2f%11.2fn,j,stui.num,stui.name,stui.baimi,stui.baimi);
elseprintf(n%3d%12s%11s%11.2f%11.2f%11.2f%11.2fn,j+,stui.num,stui.name,stui.baimi,stui.baimi);
getch();
四、课设总结四、课设总结这是大学以来的第一次上课程设计,感受很多,收获也很多。
其中最重要的是做什么事都要自己动手,动脑。
不要依赖同学,8只有这样才能增长自己的知识,同时也对C语言有了进一步的了解和认识,以前许多不懂得地方,通过这次课设都懂了。
在做程序时,很是费脑筋,幸亏有老师的参考程序,给了不少的帮助,使得课程设计顺利的完成。
五、源程序五、源程序#include#include#includeconio.h#defineN20structstudentcharnum20;
charname10;
floatbaimi;
floatsanjitiao;
floatchenggantiao;
voidmenu();
intreads(structstudentstuN);
voidsave(structstudentstuN,intn);
voidadd();
voiddel();
voidsort();
voidkeep();
voidsheep();
voidquery();
voidshow();
voidchange();
voidmain()intn;
while
(1)9menu();
printf(n请输入您要选择的操作序号,按回车键确认:
switch(n)case1:
add();
break;
case2:
show();
case3:
del();
case4:
change();
case5:
sort();
case6:
keep();
case7:
sheep();
case8:
exit(0);
default:
printf(输入错误,请输入列表中存在的序号!
voidmenu()printf(*运动员成绩管理系统*);
printf(nO(_)O1添加运动员数据O(_)O);
printf(nO(_)O2显示运动员数据O(_)O);
printf(nO(_)O3删除运动员数据O(_)O);
printf(nO(_)O4更改运动员数据O(_)O);
printf(nO(_)O5百米成绩排序O(_)O);
printf(nO(_)O6三级跳成绩排序O(_)O);
printf(nO(_)O7撑杆跳成绩排序10O(_)O);
printf(nO(_)O8退出O(_)O);
printf(n(_)(_)(_)(_)(_)(_)(_);
intreads(structstudentstuN)/读取运动员文件中的内容FILE*fp;
inti=0;
student.txt,r)=NULL)printf(文件打开失败!
return0;
elsefor(i=0;
!
feof(fp);
i+)fscanf(fp,%s%s%f%f%fn,stui.num,stui.name,&
stui.baimi,&
stui.sanjitiao,&
stui.chenggantiao);
returni;
voidsave(structstudentstuN,intn)/运动员信息改变后更新文件FILE*fp;
student.txt,w)=NULL)printf(文件打开失败!
else11for(i=0;
i+)fprintf(fp,%s%s%f%f%fn,stui.num,stui.name,stui.baimi,stui.sanjitiao,stui.chenggantiao);
voidadd()/*添加运动员信息*/FILE*fp;
student.txt,a)=NULL)/如果文件已经存在,可以追加学生信息if(fp=fopen(e:
student.txt,w)=NULL)/文件不存在时,创建新文件,输入学生信息printf(文件打开失败!
i+)printf(n请输入第%d个运动员的号码、姓名,用空格分开,并按回车键确认:
printf(n请输入第%d个运动员的百米赛跑、三级跳和撑杆跳三项成绩,用空格分开,并按回车键确认:
fprintf(fp,%s%s%f%f%fn,stu.num,stu.name,stu.baimi,stu.sanjitiao,stu.chenggantiao);
12voidshow()/运动员信息显示函数structstudentstuN;
inti,n;
printf(*所有的学生信息如下*nn);
printf(序号号码姓名百米赛跑三级跳撑杆跳n);
i+)printf(n%3d%12s%11s%11.2f%12.2f%11.2fn,i+1,stui.num,stui.name,stui.baimi,stui.sanjitiao,stui.chenggantiao);
voiddel()/*运动员信息删除函数*/structstudentstuN;
13printf(删除成功!
voidchange()/学生信息更改structstudentstuN;
printf(n请输入要更改信息的学生学号,按回车键确认:
i=n)printf(无此学生信息!
printf(n请输入更改后学生的号码,姓名,百米赛跑、三级跳、撑杆跳三门成绩,按回车键确认:
scanf(%s%s%f%f%f,stui.num,stui.name,&
printf(*百米赛跑成绩排序结果如下*nn);
14printf(名次号码姓名百米赛跑成绩n);
voidkeep()/按三级跳成绩排名structstudentstuN,temp;
j+)if(stuj.sanjitiaostuj+1.sanjitiao)temp=stuj;
printf(*三级跳成绩排序结果如下*nn);
printf(名次号码姓名三级跳成绩n);
i+)/输出结果并排名15if(stui.sanjitiao=stui+1.sanjitiao)printf(n%3d%12s%11s%11.2f%11.2f%11.2f%11.2fn,j,stui.num,stui.name,stui.sanjitiao,stui.sanjitiao);
elseprintf(n%3d%12s%11s%11.2f%11.2f%11.2f%11.2fn,j+,stui.num,stui.name,stui.sanjitiao,stui.sanjitiao);
voidsheep()/按三级跳成绩排名structstudentstuN,temp;
j+)if(stuj.chenggantiaostuj+1.chenggantiao)temp=stuj;
printf(*撑杆跳成绩排序结果如下*nn);
i+)/输出结果并排名if(stui.chenggantiao=stui+1.chenggantiao)printf(n%3d%12s%11s%11.2f%11.2f%11.2f%11.2fn,j,stui.num,stui.name,stui.chenggantiao,stui.chenggantiao);
elseprintf(n%3d%12s%11s%11.2f%11.2f%11.2f%11.2fn,j+,stui.num,stui.name,stui.ch16enggantiao,stui.chenggantiao);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 运动会 成绩管理系统