ImageVerifierCode 换一换
格式:WPS , 页数:19 ,大小:97KB ,
资源ID:230270      下载积分:15 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/230270.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言课程设计运动会成绩管理系统.wps)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言课程设计运动会成绩管理系统.wps

1、0课 程 设 计 任 务 书课 程 设 计 任 务 书 题目:运动会成绩管理系统(1)题目:运动会成绩管理系统(1)一、课程设计时间一、课程设计时间共计 1 周,20 学时。二、课程设计内容二、课程设计内容用 C 语言编写软件完成以下任务:1 录入运动员信息;2 按所参加的项目添加成绩;3 某一项目按成绩排名。三、课程设计要求三、课程设计要求1.程序质量:贯彻结构化的程序设计思想。用户界面友好,功能明确,操作方便。用户界面中的菜单至少应包括“运动员信息录入”、“按项目添加成绩”、“按成绩排名(某一项目)”、“退出”4 项。代码应适当缩进,并给出必要的注释,以增强程序的可读性。2.课程设计说明书

2、:课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。四、指导教师和学生签字四、指导教师和学生签字指导教师:指导教师:_ 学生签名:学生签名:_五、说明书成绩五、说明书成绩目目 录录一、需求分析一、需求分析.1二、程序流程图二、程序流程图.2三、核心技术的实现说明及相应程序段三、核心技术的实现说明及相应程序段.4四、课设总结四、课设总结.8五、源程序五、源程序.90一、需求分析一、需求分析经过对程序设计题目的分析可知,整个程序的设计实现大致分为十一个模块,每一个模块对应一个函数。在这些函数当中,添加运动员数据函数,删除数据函数,某项成绩排序函数的实现严格按照题目的

3、要求,而更改数据函数和显示函数属于附加功能。读取文件函数和保存信息函数对其它函数的实现起辅助作用,主函数及菜单函数控制程序的整体运行。1.添加运动员数据函数 主要实现程序最初运行时运动员数据的录入以及其后的运行中学生数据的追加功能;2.删除运动员数据函数 实现的功能是按照号码对运动员的数据记录进行删除;3.排序函数 按照题目的具体要求实现的是某项成绩的递减排序以及名次显示,其中总成绩相同者名次相同;4.更改数据函数 可以实现对运动员的各项信息进行修改;5.显示函数 实现的是显示目前所有的有效运动员记录信息。除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并

4、根据需要终止程序的执1行。每一个运动员记录都包含号码、姓名,以及百米赛跑、三级跳和撑杆跳三门成绩,在程序当中,将运动员记录类型定义为结构体类型,添加以及追加的运动员信息直接写入 E 盘的 student.txt文件中,其它函数每次对运动员记录的访问,其数据来源都是student.txt 文件,这样做不但可以保证运动员数据的一致性,而且可以对运动员数据进行永久保存,保证每次运行程序都可以采用原来的数据。二、程序流程图二、程序流程图1.程序总体结构图2 当 1 真 输入值 n=1?假 真 n=2?假真n=3?假 真 n=4?假 真n=5?假真?假 添 加运 动员 信息 函数add()显示运动员信息

5、函数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 个自定义函数和一个主函数组成,其中主函数以菜

6、单的形式调用其它函数来实现要求的所有功能。在这些函数当中,添加学生数据函数、删除数据函数和排序函数是程序中较为核心的部分,下面分别进行说明。1.添加数据函数4添加数据分为两种情况,其一是在运动员文件(student.txt)不存在的情况下,首先由程序创建一个新文件,并将录入的运动员信息写入该文件当中;其二是在运动员文件(student.txt)已经存在的情况下,此时文件以追加的方式打开,这样才可以保证以前已经存在的数据不丢失。具体的程序段如下:FILE*fp;int n,i;struct student stu;if(fp=fopen(e:student.txt,a)=NULL)/如果文件已经

7、存在,可以追加学生信息如果文件已经存在,可以追加学生信息 if(fp=fopen(e:student.txt,w)=NULL)/文件不存在时,创建新文件,输入学生信息文件不存在时,创建新文件,输入学生信息 printf(文件打开失败!文件打开失败!n);return;printf(请输入要添加的运动员数量,按回车键确认:请输入要添加的运动员数量,按回车键确认:);scanf(%d,&n);for(i=1;i=n;i+)printf(n 请输入第请输入第%d 个运动员的号码、姓名,用空格分开,并按回车键确认:个运动员的号码、姓名,用空格分开,并按回车键确认:n,i);scanf(%s%s,stu

8、.num,stu.name);printf(n 请输入第请输入第%d 个运动员的百米赛跑、三级跳和撑杆跳三项成绩,用空格分开,并按回车键确认:个运动员的百米赛跑、三级跳和撑杆跳三项成绩,用空格分开,并按回车键确认:n,i);scanf(%f%f%f,&stu.baimi,&stu.sanjitiao,&stu.chenggantiao);5 fprintf(fp,%s%s%f%f%fn,stu.num,stu.name,stu.baimi,stu.sanjitiao,stu.chenggantiao);fclose(fp);2.删除数据函数该函数的核心内容是删除算法以及最终对源文件的更新。该函

9、数执行时,首先调用 reads 函数将文件中的运动员信息读入数组当中,并由用户输入待删除运动员的号码,而后按照该号码进行查找,如果文件中存在该运动员的数据,则采用删除算法删除,否则输出运动员信息不存在的提示信息。对运动员信息的具体删除算法是在结构体数组中实现的,当运动员的信息被找到后,位于数组中该学生后面的运动员记录依次向前移动一个元素的位置,这些操作完成后,要删除运动员信息就被后面的数组元素覆盖掉了,也就实现了删除。在数组中删除运动员信息后,还要将更改后的信息重新写回文件当中,以保证数据的一致性。具体程序段如下:struct student stuN;char number20;int n,

10、i,j;n=reads(stu);printf(n 请输入要删除信息运动员号码,按回车键确认:);scanf(%s,number);for(i=0;i=n)printf(没有找到该运动员信息!n);return;else for(j=i+1;jn;j+)stuj-1=stuj;save(stu,n-1);printf(删除成功!n);3.总分排序函数对于某项的排序采用的排序算法是冒泡法排序,整个排序过程在结构体数组 stu 中实现,由于排序算法涉及到两个数组元素的信息交换,因此还需要定义一个中间变量来协助。排序函数使运动员数据的排列顺序发生了变化,因此也需要对源文件进行更新。此外,对于运动员排

11、序后名次的确定,仅在结果输出时予以显示,并未将名次信息写入源文件。具体的程序段如下(由于各项成绩排序函数相同,所以只给出百米赛跑排名程序):void sort()/按百米赛跑成绩排名struct student stuN,temp;int i,j,n;n=reads(stu);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);

12、printf(*n);for(i=0;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);else printf(n%3d%12s%11s%11.2f%11.2f%11.2f%11.2fn,j+,stui.num,stui.name,stui.baimi,stui.baimi);getch();四、课设总结四、课设总结这是大学以来的第一次上课程设计,感受很多,收获也很多。其中最重要的是做

13、什么事都要自己动手,动脑。不要依赖同学,8只有这样才能增长自己的知识,同时也对 C 语言有了进一步的了解和认识,以前许多不懂得地方,通过这次课设都懂了。在做程序时,很是费脑筋,幸亏有老师的参考程序,给了不少的帮助,使得课程设计顺利的完成。五、源程序五、源程序#include#include#includeconio.h#define N 20struct studentchar num20;char name10;float baimi;float sanjitiao;float chenggantiao;void menu();int reads(struct student stuN);v

14、oid save(struct student stuN,int n);void add();void del();void sort();void keep();void sheep();void query();void show();void change();void main()int n;while(1)9 menu();printf(n 请输入您要选择的操作序号,按回车键确认:);scanf(%d,&n);switch(n)case 1:add();break;case 2:show();break;case 3:del();break;case 4:change();break

15、;case 5:sort();break;case 6:keep();break;case 7:sheep();break;case 8:exit(0);default:printf(输入错误,请输入列表中存在的序号!n);void menu()printf(*运 动 员 成 绩 管 理 系 统*);printf(n O(_ )O 1 添 加 运 动 员 数 据 O(_)O);printf(n O(_ )O 2 显 示 运 动 员 数 据 O(_)O);printf(n O(_ )O 3 删 除 运 动 员 数 据 O(_)O);printf(n O(_ )O 4 更 改 运 动 员 数 据

16、O(_)O);printf(n O(_ )O 5 百 米 成 绩 排 序 O(_)O);printf(n O(_ )O 6 三 级 跳 成 绩 排 序 O(_)O);printf(n O(_ )O 7 撑 杆 跳 成 绩 排 序 10O(_)O);printf(n O(_ )O 8 退 出 O(_)O);printf(n (_)(_)(_)(_)(_)(_)(_);int reads(struct student stuN)/读取运动员文件中的内容 FILE*fp;int i=0;if(fp=fopen(e:student.txt,r)=NULL)printf(文件打开失败!n);return 0;else for(i=0;!feof(fp);i+)fscanf(fp,%s%s%f%f%fn,stui.num,stui.name,&stui.baimi,&stui.sanjitiao,&stui.chenggantiao);fclose(fp);return i;void save(struct student stuN,int n)/运动员信息改变后更新文件 FILE*fp;int

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1