运动会分数统计系统c语言,运动会分数统计系统

《运动会分数统计系统》由会员分享,可在线阅读,更多相关《运动会分数统计系统(18页珍藏版)》请在人人文库网上搜索。

1、运动会分数统计系统罗慧明1、 需求分析为了简便地对运动会的报名、成绩的录入和统计,本组设计开发了本系统,以解决需求。当然,本系统只是一个较为简单的系统,仍然存在着一些操作上以及显示上的问题,本组将在以后的学习中进行完善。问题描述:参加运动会有n个学校,学校编号为1n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1m,女子m+1m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m#include#include #include #define n 2/学校数目 #define m 1/。

2、男子项目数目 #define w 1/女子项目数目#define null 0typedef struct int itemnum; /项目编号int top; /取名次的数目int range5; /名次int mark5; /分数itemnode; /定义项目结点的类型typedef structint schoolnum; /学校编号int score; /学校总分int mscore; /男团体总分int wscore; /女团体总分itemnode cm+w; /项目数组headnode;/定义头结点类型headnode hn;/定义一个头结点数组void inputinformat。

3、ion() /输入信息,建立系统int i,j,k,s;for(i=0;in)printf(错误:这个学校没有参加此次运动会!nnn);elseprintf(要查询的项目编号:);scanf(%d,&j);if(jm+w|j=0)printf(此次运动会没有这个项目nnn);/学校编号超出范围,则输出警告else printf(这个项目取前 %d名,该学校的成绩如下:n, h0.cj-1.top);for(k=0;km+w|s=0)printf(此次运动会不包括这个项目.nnn);/项目编号超出范围则输出警告elseprintf(该项目取前 %d名,取得名次的学校n,h0.cs-1.top);。

4、for(i=0; im+w|s=0)printf(此次运动会不包括这个项目.nnn);想在每次查询结束想返回主菜单进行其它项时,应在main( )函数中调用其它函数时再调用main( )函数,如:switch(choice) case 1: inputinformation();writedata();readdata();main();case 2: output();main();case 3: inquiry();main();case 4: readdata();main();程序出现语法错误,发现是输入名次信息的地方忘带地址符&,或是程序不完整,只写了一个大括号。如:printf(*。

5、名次:);scanf(%d,&hi.cj.ranges);2. 调试分析:(1).函数调用。函数调用是语言中一块十分重要部分,它可以把一个程序分成若干部分,然后进行配置,所以这块内容对我们很重要。(2).对结构体的不熟练。刚开始对结构体不太了解,使调试程序时费了我不少的时间。结构体的嵌套使我很费力气,通过长时间的运用,终于可以得心应手。结构体在我的实习中站了很大的比重,我也很重视它。通过与线性表,循环等的有机搭配,我完成了实习任务。(3).循环的问题。这是我很苦恼,大量的循环语句的应用,分析。使我很头疼,循环是计算机语言中很重要的部分,什么程序也离不开循环,这个问题的解决使我有了坚实的基础。对。

6、多层循环的应用也有了深刻的理解。3.调试结果:(1)首先运行文件运动会统计分数系统(2) 输入信息:程序首先赋初值,定义学校的个数为2,男生项目为1,女生项目为1。输入1得到进入输入信息模块。按回车键可得到学校的得分信息和按编号获得的所以信息。(3)输出信息:输入2进入输出信息模块,该模块分四项: 按学校编号输出: 按学校总分输出: 按男团总分输出: 按女团总分输出: 输入2返回输出信息模块,输入0返回主菜单。(4)查询信息:输入3进入信息查询模块: 按学校编号查询 按项目编号查询 输入错误信息时给出提示: 输入2继续查询,输入0返回主菜单4、总结(1).调试中所遇到的较重要问题的回顾:1) 。

7、提出问题:所有输入输出内容只能在一屏内显示,学过c语言,就知道”n”是换行,”f”是换屏的,可是在这里就是无法实现。解决问题: 输入clrscr();2)提出问题:设置选项,供用户输入选择时,当按任意键时都会跳入下一步操作,或者直接退出系统。分析问题:在供用户选择时,提供了几个选项,就写几个case语句,但是当用户输入的并不是这几个数字时,系统就不能做出正确判断。解决问题:修改case语句,添加default语句提示出错,要求重新输入;Default: clrscr(); /*清屏*/printf(输入错误,请重新选择); 3)提出问题:当同一项目中有同一学校的两个人时,便不能正确输出或者输出。

8、相同人名。分析问题:由于同时有两个相同学校编号的人存在,系统在输出时,不能确定那个是正确的,或者用后来的覆盖以前的。解决问题:用for函数实现从开始到结尾的遍历。(2).算法的效率及改进设想时间复杂度的计算:数据初始录入中学校为O(b),项目为O(c),成绩的录入为O(a),统计函数调入内存函数为O(a+b+c),学校成绩统计为O(a+2)*b),项目统计为O(a+1)*c),按学校编号、按学校总成绩、男团和女团输出函数为O(b2/2),查询某校某项目函数为O(c*b*5/2),查询某项目的信息为O(5*b*c/2)。在整个设计过程中本组在存储方面曾存在一定的分歧,后根据大家对以后的操作的分析采用现在的存储结构。在调用方面本组负责本块的人员先前采用递归的方法而出现了许多错误,经过大家的讨论决定采用现在的dowhile语句。改进设想:因大部分显示均是以学校为单位,所以将以由有关人的各种信息为集合的结构改为以由有关学校的各种信息为集合的结构。在这次调试过程中遇到过一些问题,但经过我们不懈努力,解决了大部分。比如说在运用数据结构排序的时候,方法的选择上,总是想用时间复杂度小的算法,但结果出了问题,最后还是用了我们熟悉的选择排序。

  • 0
    点赞
  • 1
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值