运动会积分系统(C语言)
- 格式:doc
- 大小:325.50 KB
- 文档页数:21
运动会分数统计系统Ø 设计内容1. 任务:参加运动会有n个学校,学校编号为1~n。
比赛分成m个男子项目,和w个女子项目。
项目编号为1~m,女子为m+1~w。
不同的项目取前5名或前3明积分;取前5名的积分为:7、5、3、2、1,前3名的积分分别为:5、3、2;哪些项目取前5名或前3名由学生自己决定。
(m<=20,n<=20)。
2. 功能要求:1) 可以输入各个项目的前3名或前5名的成绩;名的成绩;2) 能统计各个学校总分;能统计各个学校总分;3) 可以按学校编号、学校总分、男女团体总分排序输出;可以按学校编号、学校总分、男女团体总分排序输出;4) 可以按学校编号查询学校某个项目的情况;可以按学校编号查询学校某个项目的情况;5) 可以按项目编号查询取得前3或前5名的学校。
名的学校。
Ø 设计思路1. 系统结构设计图运动会SportsMeeting东华University交大University……比赛项目集合SportEvents 项目1 Event项目2 Event…………复旦University运动会分数统计系统结构设计图2. 思路分析1) 从上面的结构设计图来看,隐含地给出了第一个约束条件:每个参赛学校均参加所有的比赛项目。
然而这种设计思路并不符合实际情况,因为每个学校有权利选择参加或不参加某个比赛项目。
加某个比赛项目。
2) 首先,在上述结构图中,比赛项目Event 是最小的数据存储基本单元。
比赛项目集合SportEvents 可以理解为Event 数组,包含了所有的比赛项目。
根据约束,只要有学校University 参加运动会,此学校就包含了一个SportEvents 集合,即为每个学校分配自己的项目成绩单。
有n 个学校报名参加了运动会SportsMee ng ,大会的工作人员根据比赛项目结果统计各个学校的成绩。
赛项目结果统计各个学校的成绩。
因此,因此,这种设计结构有3层包含关系,层包含关系,但是每一部分但是每一部分相互独立,耦合性弱。
运动会分数统计系统课程设计报告数据结构院系:专业:班级:学号:姓名:教师:时间:一、问题描述1、功能任务:参加运动会有n个学校,学校编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。
(m<=20,n<=20),按要求实现相应的数据输入、查询、计分等功能。
2、数据建议输入学校的名称,运动项目的名称等,其余信息学生自行设计;输出形式:有合理的提示,各学校分数为整形;数据的存储结构自行设计。
建议运动会的相关数据要存储在数据文件中。
3、操作1)可以输入各个项目的前三名或前五名的成绩;2)能统计各学校总分,3)可以按学校编号或名称、学校总分、男女团体总分排序输出;4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
4、要求提供系统菜单,界面友好,提示信息完整。
二、系统分析及设计1、需求分析根据运动会分数统计系统的问题分析及设计要求,可以将此系统分为四个模块:信息统计模块、信息输出模块、信息查询模块、信息调用模块。
其系统功能结构图如图所示。
(1)、信息统计模块实现信息的输入、统计、存档。
(2)、信息输出模块实现信息的输出。
(3)、信息查询模块实现信息的查询。
(4)、信息调用模块实现信息的调用,即从文件中读出信息并输出。
2、概要设计此系统采用顺序存储结构存储,定义了一个结构体数组存放参赛学校的信息。
之所以采用顺序存储结构,是因为用它来实现信息的存储、查询比较方便,节省时间,效率高,而且也方便把信息写入文件以及读取文件。
(1)、结构体定义如下:①、定义运动项目数据类型,用于存放运动项目的信息,包括项目名称、项目编号、用户自己定义的取前3名还是前5名的积分、名次、分数。
typedef struct{char proname[10]; //项目名称int pronum; //项目编号int top; //取前3名或前5名积分,由用户自己定义int range[5]; //名次int mark[5]; //分数}Pronode; //项目结点类型定义②、定义学校数据类型,用于存放参赛学校的信息,包括学校名称、学校编号、学校总分、男子团体总分、女子团体总分以及项目数组。
综合软件设计报告运动会计分系统学号:200890610126姓名:张庆龙时间:2011年4月26日一.需求分析1问题描述运动会分数统计系统参加运动会有n个系,系编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。
(m<=20,n<=20)2.基本要求:(1).可以输入各个项目的前三名或前五名的成绩;(2).能统计各系总分,(3).可以按系编号、系总分、男女团体总分排序输出;(4).可以按系编号查询系某个项目的情况;可以按项目编号查询取得前三或前五名的系。
3.测试数据《1》输入:1进入添加系的界面,根据提示,再输入:汽车系。
再输入:8,成功添加了一个系。
再输入:2进入运动项目添加界面,根据提示,再输入:跳高;1;0;1;2;3。
之后输入0。
再次进入系统界面。
《2》输入:3查看输出结果。
《3》:输入:4查看输出结果。
《4》:输入:5查看输出结果。
《5》:输入:6查看输出结果。
《6》:输入:7根据提示输入项目编号:2。
查看输出结果。
《7》:输入:8根据提示输入系编号:3。
查看输出结果。
二、概要设计1.数据结构<1>系:名称,编号,男子团体总分,女子固体总分。
<2>运动项目:项目编号,名称,男子项目,女子项目,前三名,前五名,第一名系的编号,第二名系的编号,第三名系的编号,第四名系的编号,第五名系的编号。
2.程序模块及之间的调用关系三、详细设计1、数据类型定义(1)系的定义:typedef struct Department //系的结构{char name[20]; //系的名称int number; //系的编号int boy; //男子团体总分int girl; //女子团体总分Department *next; }Department;(2)运动项目定义:typedef struct Sport //运动项目结构{char name[20]; //运动项目名称int isboy; //0为女项目,1为男项目int is3; //0为取前五名,1为取前五名int number; //项目编号int first; //第一名系的编号int second; //第二名系的编号int third; //第三名系的编号int fourth; //第四名系的编号int fifth; //第五名系的编号Sport *next;}Sport;、2、函数之间的调用关系(1)系调用图department_adddepartment_Order<1>Department department_searchdepartment_addmarkdepartment_showdepartment_isexistdepartment_outputdepartment_readdepartment_writedepartment_getlongsport_isexistsport_addsport_getlongsport_write<2>Sport sport_readsport_outputsport_search3、算法设计主要算法的设计思想:本程序主要是使用链表来实现操作。
c语言表示积分积分是微积分的重要概念之一,用于求函数在某个区间上的总量或者累积变化量。
在C语言中,我们可以使用不同的方法来实现积分的计算。
一、定积分的计算方法定积分是指在某个区间上求函数与x轴之间的面积,可以用面积与区间长度的乘积来表示。
在C语言中,可以通过数值积分方法来近似计算定积分。
1.矩形法:矩形法是一种最简单的数值积分方法,它将区间划分为多个小矩形,然后用矩形面积的和来近似表示函数的总面积。
具体步骤如下:a.将区间[a, b]等分为n个小区间,每个小区间的宽度为h=(b-a)/n。
b.在每个小区间的右边选择一个点xi(i=0,1,2,...,n-1),计算出该点对应的函数值f(xi)。
c.将每个小矩形的面积f(xi)*h累加起来,得到总面积。
2.梯形法:梯形法是另一种常用的数值积分方法,它将区间划分为多个小梯形,然后用梯形面积的和来近似表示函数的总面积。
具体步骤如下:a.将区间[a, b]等分为n个小区间,每个小区间的宽度为h=(b-a)/n。
b.在每个小区间的两个端点上计算函数值,得到f(xi)和f(xi+1)。
c.将每个小梯形的面积[(f(xi)+f(xi+1))/2]*h累加起来,得到总面积。
二、代码示例下面是使用C语言实现上述两种数值积分方法的代码示例:1.矩形法代码示例:```c#include <stdio.h>double f(double x) {//定义被积函数return x*x;}double integral_rectangle(double a, double b, int n) { //计算矩形法近似积分double h = (b - a) / n;double sum = 0.0;for (int i = 0; i < n; i++) {double x = a + i * h;sum += f(x);}return sum * h;}int main() {double a = 0.0; //积分下限double b = 1.0; //积分上限int n = 100; //小区间个数double result = integral_rectangle(a, b, n); printf("矩形法求积分的结果为:%lf\n", result); return 0;}```2.梯形法代码示例:```c#include <stdio.h>double f(double x) {//定义被积函数return x*x;}double integral_trapezoid(double a, double b, int n) { //计算梯形法近似积分double h = (b - a) / n;double sum = 0.0;for (int i = 0; i < n; i++) {double x1 = a + i * h;double x2 = a + (i+1) * h;sum += (f(x1) + f(x2)) / 2;}return sum * h;}int main() {double a = 0.0; //积分下限double b = 1.0; //积分上限int n = 100; //小区间个数double result = integral_trapezoid(a, b, n);printf("梯形法求积分的结果为:%lf\n", result);return 0;}```三、总结以上是使用C语言实现数值积分的两种方法,定积分是微积分中的重要概念,可以通过数值积分方法来近似计算定积分的值。
c语言简单积分程序以下是一个使用C语言实现的简单积分程序,它采用数值积分方法计算给定函数在指定区间上的积分。
本示例使用辛普森公式(Simpson's rule)进行积分计算。
```c#include <stdio.h>#include <math.h>double simpson_integration(double a, double b, double (*f)(double), int n) {double h = (b - a) / n;double sum = f(a) + f(b);for (int i = 1; i <= n; i += 2) {sum += 4 * f(a + i * h);}for (int i = 2; i <= n - 1; i += 2) {sum += 2 * f(a + i * h);}return (h / 3) * sum;}double example_function(double x) {return x * x * x;}int main() {double a = 0;double b = 2;int n = 100;double result = simpson_integration(a, b, example_function, n);printf("积分结果: %lf\n", result);return 0;}```在这个例子中,我们定义了一个名为`simpson_integration`的函数,它接受四个参数:积分区间的起点和终点,一个函数指针(用于计算积分),以及一个整数(用于指定积分节点数)。
该函数使用辛普森公式计算积分结果。
`example_function`是一个示例函数,用于演示积分计算。
在这个例子中,我们要计算函数`f(x) = x * x * x`在区间[0, 2]上的积分。
目录杨顺民题目 ...................................................................................................................................................题目1:年历显示 ........................................................................................................................................题目2:小学生测验 ....................................................................................................................................题目3 运动会比赛计分系统 ......................................................................................................................题目4:学生学籍管理系统(限2人) ........................................................................................................题目5:排班系统 ........................................................................................................................................题目6:通讯录程序设计(限2人) ............................................................................................................题目8:机房收费管理系统(限2人) ........................................................................................................题目9:班级成绩管理系统(限2人) ........................................................................................................题目10:机房机位预定系统(限2人) ......................................................................................................题目11:班级档案管理系统(限2人) ......................................................................................................题目12:职工工资管理系统 (限2人) ....................................................................................................题目13:工资纳税系统 ..............................................................................................................................题目14:歌手比赛系统 ..............................................................................................................................题目15:用英文单词模拟数学计算 ..........................................................................................................题目16:C语言关键字中英翻译机 ...........................................................................................................题目17:用C语言设计一个简单的计算器,要求能够对输入的数 ......................................................题目18:计算24游戏 ................................................................................................................................题目19:输入盘子数 ..................................................................................................................................题目20:多项式加法的实现 ......................................................................................................................题目21:实现带有括号的四则运算 ..........................................................................................................题目22:线性方程组求解 ..........................................................................................................................题目23:大整数的四则运算 ......................................................................................................................题目25:四边形计算 ..................................................................................................................................题目26:设计一个模拟时间条的程序 ......................................................................................................题目27:文件加密 ......................................................................................................................................题目28:猜数游戏(掌握程序结构及随机函数应用) ..........................................................................题目29:字符串处理函数 ..........................................................................................................................题目30:进制转换 ......................................................................................................................................题目31:判断一个数是否是数组中的成员(用二分法查找) ..............................................................题目32:位数大小排序(掌握数值排序算法) ......................................................................................题目33:请编写函数fun ...........................................................................................................................题目34:矩阵乘法(数值求解算法) ......................................................................................................题目35:求所有不超过200的N值 ..........................................................................................................题目36:插入后自动排序(掌握用穷举法进行比较、交换) ..............................................................题目37:用梯形法求定积分(数值求解算法) ......................................................................................题目38:一个奇异的三位数(穷举算法) ..................................................................................................题目39:回文数的形成 ..............................................................................................................................题目40:人机猜数游戏 ..............................................................................................................................题目41:条件编译 ......................................................................................................................................题目42:输出九九乘法口诀 ......................................................................................................................输出九九乘法口决表(循环结构的应用,表的格式自己设定) ...............................................................题目43:设计函数 ......................................................................................................................................题目44:统计符号 ......................................................................................................................................尹四清题目 ...................................................................................................................................................李玉蓉题目 ...................................................................................................................................................题目2:排班系统 ........................................................................................................................................题目4:个人图书管理系统 ........................................................................................................................题目5:数组元素的插入与逆置 ................................................................................................................题目要求: ...................................................................................................................................................把一个整数插入到按由小到大排列的数组中,插入后仍然保持由小到大的顺序排列,并将得到的数组逆置成由大到小排序。
南京邮电大学通达学院2019/2020学年第1学期《Windows编程》课程大作业报告课题代号(单选)□课题1 □课题2 □课题3 □课题4课题名称:_____________________________________________________ 小组成员人数(单选)□1人□2人□3人□4人学号___________________姓名________________________课题完成时间:___________________________________================以下部分为教师填写区,请勿填写================= 成绩评定:软件基本功能_______ 软件提高功能______ 软件部分成绩________文档结构___________ 文档撰写__________ 文档部分成绩________总成绩_____________备注__________________________________________________________运动会分数统计一、课题内容和要求课题名称:运动会分数统计内容和要求:参加运动会有n个学校,学校编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。
(m<=20,n<=20)。
二、需求分析可以输入各个项目的前三名或前五名的成绩;能统计各学校总分;可以按学校编号、学校总分、男女团体总分排序输出;可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
实现以下几个功能:1.添加学生2.统计信息3.按学校编号查询学校某个项目的情况4.可以按项目编号查询取得前三或前五名的学校5.显示学校信息6.显示项目信息7.删除保存在本地的文件8.保存数据文件9.显示所有项目的名次信息10.退出系统三、概要设计项目信息表结构typedef struct xm_table{int item;// 项目编号char name[20];//项目名称int count; //该项目得分人的数量}XM_TABLE;学生信息表结构struct STUDENT{char name[20]; //姓名int score; //得分成绩int range; //得分名次int item; //得分项目int sex; //性别};参赛学校信息结构typedef struct SchoolStruct{int count; //计算实际运动员个数int serial; //学校编号char Name[20];//学校名称int menscore; //男子团体总分int womenscore;//女子团体总分int totalscore; //团体总分int jifeng; //学校积分struct STUDENT students[10]; //参赛运动员struct SchoolStruct *next; //下一个参赛学校}SCHOOLSTRUCT;统计信息结构typedef struct TongJi{int fs;//分数SCHOOLSTRUCT *psch;//学校地址struct STUDENT *pstu;//学生信息地址}TONGJI;1.添加学生功能2.统计信息功能3. 按学校编号查询学校某个项目的情况4.可以按项目编号查询取得前三或前五名的学校5.显示学校信息6.显示项目9.显示项目名次10.退出系统四、详细设计程序分为10个大模块:添加学生,统计信息,按学校编号查询学校某个项目的情况,可以按项目编号查询取得前三或前五名的学校,显示学校信息,显示项目信息,删除文件,保存文件,显示项目名次,退出系统。
引言概述:运动会管理系统(二)是一个以提高运动会组织效率和管理水平为目标的软件系统。
该系统可实现报名管理、比赛安排、成绩统计和奖项颁发等功能,为运动会的组织者提供了便捷的操作和全面的数据支持。
通过合理的系统设计和功能打造,可以提高运动会组织的整体效果,提升参与者的参与度和满意度。
正文内容:一、系统报名管理1.1 学生信息管理:系统可以存储学生的基本信息,包括姓名、年龄、性别、所属学校等。
同时,系统还可以记录学生的比赛项目和参赛意愿,方便组织者进行参赛安排。
1.2 报名流程管理:系统可以制定并管理运动会的报名流程,包括报名时间、报名规则等。
参与者可以通过系统进行在线报名,实现报名过程的快捷和自动化。
1.3 报名费用管理:系统可以记录参赛者的报名费用,并进行费用的统计和管理。
组织者可以通过系统生成费用报表,方便财务管理和结算。
二、比赛安排管理2.1 比赛项目管理:系统可以建立比赛项目的数据库,包括项目名称、参赛人数、比赛时间等信息。
组织者可以根据实际情况灵活调整比赛项目安排。
2.2 比赛场地分配:系统可以根据比赛项目和参赛者数量进行场地分配,确保比赛进程的顺利进行。
组织者可以通过系统实时监控场地使用情况,及时进行调整。
2.3 裁判人员安排:系统可以记录裁判人员的信息,包括姓名、专业领域等。
在比赛安排过程中,组织者可以通过系统自动分配裁判,保证比赛的公正性和公平性。
三、成绩统计管理3.1 成绩录入:系统可以记录比赛成绩,包括每位参赛者的成绩及相应的奖项。
组织者可以通过系统进行成绩的录入和修改,确保数据的准确性。
3.2 成绩排名:系统可以根据比赛成绩进行排名,根据规则自动确定获奖者。
组织者可以通过系统进行排名结果的查看和调整,确保排名的准确性和公正性。
3.3 成绩统计报表:系统可以生成成绩统计报表,包括参赛者的成绩、排名、奖项等信息。
组织者可以通过系统方便地进行成绩数据的分析和汇总。
四、奖项颁发管理4.1 奖项设置:系统可以设置不同比赛项目的奖项类别和数量。
c语言编写simulink中的积分环节程序概述:Simulink是一种基于图形化建模的工具,可用于设计、模拟和实现控制系统。
在Simulink中,可以使用C语言编写积分环节的程序。
积分环节是控制系统中重要的组成部分,用于对输入信号进行积分运算。
本文将介绍如何使用C语言编写Simulink中的积分环节程序。
1.了解Simulink积分环节在Simulink中,积分环节可以通过积分模块来实现。
积分模块可以将输入信号进行积分,并输出积分结果。
积分模块的参数可以设置积分的初始条件、积分的方法(如欧拉法或梯形法)等。
2.创建Simulink模型首先,在Simulink中创建一个新的模型。
可以使用Simulink中的积分模块,也可以使用常规的数学运算模块来模拟积分环节。
3.使用积分模块在Simulink模型中,可以通过在系统中拖动积分模块来创建积分环节。
选择合适的积分模块,并将其连接到输入信号上。
可以根据需要调整积分模块的参数,比如初始条件、积分方法等。
4.使用数学运算模块另一种实现积分环节的方法是使用数学运算模块来模拟积分操作。
在Simulink模型中,可以使用积分运算的数学运算模块,如累加器模块或微分器模块。
根据数学原理,可以通过设置合适的参数和运算方法,实现对输入信号的积分操作。
5.编写C语言代码对于使用数学运算模块实现的积分环节,可以编写C语言代码来实现模型的功能。
在编写C语言代码时,可以使用Simulink提供的C语言代码自动生成功能,以便简化代码的编写。
6.生成模型代码完成C语言代码的编写后,可以使用Simulink提供的代码生成功能,将Simulink模型转换为可执行的C代码。
生成的C代码可以直接在嵌入式系统中运行,以实现对输入信号的积分操作。
总结:本文介绍了如何使用C语言编写Simulink中的积分环节程序。
在Simulink中,可以使用积分模块或数学运算模块来实现积分操作。
通过设置合适的参数和运算方法,可以实现对输入信号的积分运算。
.程序设计报告(2014 / 2015 学年第 2 学期)题目:运动会积分系统专业组长学号姓名组员学号姓名指导教师指导单位日期运动会积分系统一、课题内容和要求学生运动会成绩数据库系统记录某校运动会上全部运动项目,各系获得的分数及排名的情况,包括50、100、200,400,1500米,跳高,跳远,标枪,铅球铁饼等。
请设计一个积分系统,方便学校对比赛成绩进行统计管理。
二、需求分析运动会积分系统的功能框架图如图1所示。
图1 功能框架图管理员:1)以管理员身份登录,预先设定参加运动会的系院数目,男子项目数女子项目数,(每项目取前三名,分别为10,5,2分)2)管理员凭密码进入录入成绩状态,填写比赛结果,输入各项目获奖运动员的信息,但录入完成后不得修改成绩。
可以按各系院编号输出总分;按总分排序;按男团体总分排序;按系院编号查询;按项目编号查询;按女团体总分排序。
3)审核各院系提交的复核申请,予以批准后修改成绩。
普通用户:1)普通用户可以查询各个比赛成绩,生成团体总分报表,查看参赛院系的成绩和各比赛项目最终名次等。
2)允许提交复核申请,提请管理员修改成绩。
三、概要设计1 主要结构体typedef struct node1{int record; /*项目成绩*/struct node1 *next; /*链域*/}Schools;typedef struct {int item; /*项目编号*/Schools *firstschool; /*链域指向链表中第一个结点*/}ITEM;typedef struct {int z; /* 项目总数*/ITEM a[MAX];}ALLitems;typedef struct node2 {int item; /*该院系获奖的项目*/int record; /*项目成绩*/struct node2 *next; /*链域*/}Items;typedef struct {int school; /*院系编号*/int score; /*院系总分*/int boys; /*男团体总分*/int girls; /*女团体总分*/Items *firstitem; /*链域指向链表中第一个获奖项目的结点*/typedef struct { int n; /* 院系总数 */SCHNode b[MAX];}ALLNode; ALLitems *g1; ALLNode *g2; 2 主要函数流程图图2登录函数图3主函数流程四、源程序代码#include <stdio.h>#include<stdlib.h>#include <string.h> #include <io.h>//#include <conio.h> /*屏幕操作函数*/ #define MAX 50 //#define NULL 0 struct user { char user_Name[6]; char user_Pass[6];}stu[1] = { "admin", "admin" };//初始化用户名和对应密码 void print_Passwd(void ) { int i = 0;//当前账号标记 int flag1 = 0;//登录成功标记 int flag = 0;//密码正确标记 char p[6];//临时用户名 char s[6];//临时密码 char num = 0;//密码次数 char temp;//登录后改密码 printf("请输入登录名:\n"); scanf("%s", p); if (strcmp(stu[i].user_Name, p) == 0) { flag = 1; } if (1 == flag) { printf("请输入密码:\n"); scanf("%s", s); }{printf("没有此用户:\n");exit(0);}while (strcmp(stu[i].user_Pass, s) != 0){printf("密码错误!\n");printf("请重新输入密码:\n");scanf("%s", s);}printf("登录成功!\n");printf("注:你是管理员!\n");}typedef struct node1{int school; /*院系编号*/int record; /*项目成绩*/struct node1 *next; /*链域*/}Schools;typedef struct {int item; /*项目编号*/Schools *firstschool; /*链域指向链表中第一个结点*/}ITEM;typedef struct {int z; /* 项目总数*/ITEM a[MAX];}ALLitems;typedef struct node2 {int item; /*该院系获奖的项目*/int record; /*项目成绩*/struct node2 *next; /*链域*/}Items;typedef struct {int school; /*院系编号*/int score; /*院系总分*/int boys; /*男团体总分*/int girls; /*女团体总分*/Items *firstitem; /*链域指向链表中第一个获奖项目的结点*/ }SCHNode;typedef struct {int n; /* 院系总数*/SCHNode b[MAX];ALLitems *g1;ALLNode *g2;void funct1(ALLitems *g1, ALLNode *g2){Schools *p1;Items *p2;int i = 1, j, k, m, w, h, x;p1 = (Schools *)malloc(sizeof(Schools));p2 = (Items *)malloc(sizeof(Items));if (!p1 || !p2)exit(1);printf("\n ******输入各个项目信息******\n\n");printf(" 输入男子项目总数m:");scanf("%d", &m);if (m < 0 || m>20){printf(" 输入有误,m是20以内的整数,请重新输入:");scanf("%d", &m);}printf(" 输入女子项目总数w:");scanf("%d", &w);if (w < 0 || w>20){printf(" 输入有误,w是20以内的整数,请重新输入:");scanf("%d", &w);}printf(" 输入参加运动会的院系总数n:");scanf("%d", &g2->n);if (g2->n < 0 || g2->n>20){printf(" 输入有误,n是20以内的整数,请重新输入:");scanf("%d", &g2->n);}g1->z = m + w;printf(" 则项目编号为男子1-%d,女子%d-%d", m, m + 1, g1->z);printf("\n\n ****记录运动会成绩****");printf("\n\n (输入0标志结束)\n");printf("\t项目1:50米、项目2:100米、项目3:200米、项目4:400米、项目5:1500米、\n");printf("\t项目6:跳高、项目7:跳远、项目8:标枪、项目9:铅球、项目10:铁饼\n");for (k = 1; k <= g1->z; k++){g1->a[k].firstschool = NULL;}for (k = 1; k <= g2->n; k++){g2->b[k].school = k;g2->b[k].firstitem = 0;g2->b[k].score = 0;g2->b[k].boys = 0;g2->b[k].girls = 0;}g2->b[0].score = 0;g2->b[0].boys = 0;g2->b[0].girls = 0;while (i != 0){printf("\n 项目:");scanf("%d", &i);if (i != 0){printf(" 请输入前三名:\n");h = 3;do{printf(" 第%d名:院系(院系编号为数字)", h);scanf("%d", &x);p1 = (Schools *)malloc(sizeof(Schools));p1->school = x;p2 = (Items *)malloc(sizeof(Items));p2->item = i;if (h == 3) p2->record = p1->record = 2;if (h == 2) p2->record = p1->record = 5;if (h == 1) p2->record = p1->record = 10;p1->next = g1->a[i].firstschool;g1->a[i].firstschool = p1;p2->next = g2->b[x].firstitem;g2->b[x].firstitem = p2;g2->b[x].score = g2->b[x].score + p2->record; /* 累计总分*/if (i <= m) g2->b[x].boys = g2->b[x].boys + p2->record; /* 累计男团体总分*/else g2->b[x].girls = g2->b[x].girls + p2->record; /* 累计女团体总分*/h--;} while (x != 0 && h != 0);}}}{FILE *fp1, *fp2;fp1 = (FILE *)malloc(sizeof(FILE));fp2 = (FILE *)malloc(sizeof(FILE));if ((fp1 = fopen("sports1", "wb")) == NULL){printf("cannot open file.\n");return;}if (fwrite(g1, sizeof(ALLitems), 1, fp1) != 1)printf("file write error.\n");fclose(fp1);if ((fp2 = fopen("sports2", "wb")) == NULL){printf("cannot open file.\n");return;}if (fwrite(g2, sizeof(ALLNode), 1, fp2) != 1)printf("file write error.\n");fclose(fp2);}void funct2(ALLNode *g2) /* 输出各院系总分*/{int k;printf("\n\n ****** 输出各院系总分******\n");printf(" 院系编号\t 总分\n");for (k = 1; k <= g2->n; k++)printf(" %d\t\t\t %d\n", k, g2->b[k].score);printf("\n");system("pause");printf(" 按任意键返回主菜单......");getchar();}void funct3(ALLNode *g2) /* 按院系编号排序输出*/ {int k;Items *p2;p2 = (Items *)malloc(sizeof(Items));printf("\n\n ****** 按院系编号排序输出******\n");printf(" 院系编号\t\t\t获奖情况\n");scanf("%d", &k);for (k = 1; k <= g2->n; k++){printf("\t\t\t%d\t", k);p2 = g2->b[k].firstitem;while (p2 != NULL){printf("\t\t项目%d:得%d分", p2->item, p2->record);p2 = p2->next;}printf("\n");}printf("\n");system("pause");printf("按任意键返回主菜单......");getchar();}void funct4(ALLNode *g2) /* 按院系总分排序输出*/ {int i, j, k;Items *p2;printf("\n\n ****** 按院系总分排序输出******\n");printf(" 院系编号\t\t总分\n");scanf("%d", &k);//printf("输入要查询的项目编号:");for (i = 2; i <= g2->n; i++){printf("%d\t", k);p2 = g2->b[k].firstitem;while (p2 != NULL){printf("%d \t\t%d\n", g2->b[k].school, g2->b[k].score);p2 = p2->next;}printf("\n");g2->b[0].score = g2->b[i].score;g2->b[0].boys = g2->b[i].boys;g2->b[0].girls = g2->b[i].girls;g2->b[0].school = g2->b[i].school;j = i - 1;while (g2->b[0].score<g2->b[j].score&&j>0){g2->b[j + 1].score = g2->b[j].score;g2->b[j + 1].boys = g2->b[j].boys;g2->b[j + 1].girls = g2->b[j].girls;g2->b[j + 1].school = g2->b[j].school;j--;}g2->b[j + 1].score = g2->b[0].score;g2->b[j + 1].boys = g2->b[0].boys;g2->b[j + 1].girls = g2->b[0].girls;g2->b[j + 1].school = g2->b[0].school;}for (k = 1; k <= g2->n; k++)printf("%d \t\t%d\n", g2->b[k].school, g2->b[k].score);system("pause");printf("按任意键返回主菜单......");getchar();}void funct5(ALLNode *g2) /* 按男团体总分排序输出*/ {int i, j, k;Items *p2;p2 = (Items *)malloc(sizeof(Items));printf("\n\n ****** 按男团体总分排序输出******\n");printf("院系编号\t\t男团体总分\n");scanf("%d", &k);//printf("输入要查询的院系编号:");for (i = 2; i <= g2->n; i++){printf("%d\t", k);p2 = g2->b[k].firstitem;while (p2 != NULL){printf("%d\t\t %d\n", g2->b[k].school, g2->b[k].boys);p2 = p2->next;}printf("\n");g2->b[0].score = g2->b[i].score;g2->b[0].boys = g2->b[i].boys;g2->b[0].girls = g2->b[i].girls;g2->b[0].school = g2->b[i].school;j = i - 1;while (g2->b[0].boys<g2->b[j].boys&&j>0){g2->b[j + 1].score = g2->b[j].score;g2->b[j + 1].boys = g2->b[j].boys;g2->b[j + 1].girls = g2->b[j].girls;g2->b[j + 1].school = g2->b[j].school;j--;}g2->b[j + 1].score = g2->b[0].score;g2->b[j + 1].girls = g2->b[0].girls;g2->b[j + 1].school = g2->b[0].school;}for (k = 1; k <= g2->n; k++)printf("%d\t\t %d\n", g2->b[k].school, g2->b[k].boys);system("pause"); // 暂停等待printf("按任意键返回主菜单......");getchar();}void funct6(ALLNode *g2) /* 按女团体总分排序输出*/ {int i, j, k;Items *p2;p2 = (Items *)malloc(sizeof(Items));printf("\n\n ****** 按女团体总分排序输出******\n");printf("院系编号\t\t女团体总分\n");scanf("%d", &k);// printf("输入要查询的项目编号:");for (i = 2; i <= g2->n; i++){printf("%d\t", k);p2 = g2->b[k].firstitem;while (p2 != NULL){printf("%d\t\t %d\n", g2->b[k].school, g2->b[k].girls);p2 = p2->next;}printf("\n");g2->b[0].score = g2->b[i].score;g2->b[0].boys = g2->b[i].boys;g2->b[0].girls = g2->b[i].girls;g2->b[0].school = g2->b[i].school;j = i - 1;while (g2->b[0].girls<g2->b[j].girls&&j>0){g2->b[j + 1].score = g2->b[j].score;g2->b[j + 1].boys = g2->b[j].boys;g2->b[j + 1].girls = g2->b[j].girls;g2->b[j + 1].school = g2->b[j].school;j--;}g2->b[j + 1].boys = g2->b[0].boys;g2->b[j + 1].girls = g2->b[0].girls;g2->b[j + 1].school = g2->b[0].school;}for (k = 1; k <= g2->n; k++)printf("%d\t\t %d\n", g2->b[k].school, g2->b[k].girls);system("pause");printf("按任意键返回主菜单......");getchar();}void funct7(ALLNode *g2) /* 按院系编号查询院系某个项目情况*/{int i, j;Items *p2;printf("\n ****** 按院系编号查询院系某个项目情况******\n");printf(" 输入要查询的院系编号:");scanf("%d", &i);printf("\t项目1:50米、项目2:100米、项目3:200米、项目4:400米、项目5:1500米、\n");printf("\t项目6:跳高、项目7:跳远、项目8:标枪、项目9:铅球、项目10:铁饼\n");printf(" 输入要查询的项目编号:");scanf("%d", &j);p2 = g2->b[i].firstitem;while (p2 != NULL){if (p2->item == j)printf(" 院系编号:%d\t项目%d:得%d分\n", i, p2->item, p2->record);p2 = p2->next;}printf("\n");system("pause");printf(" 按任意键返回主菜单......");getchar();}void funct8(ALLitems *g1) /* 按项目编号查询取得名次的院系*/{int i;Schools *p1;printf("\n*** 按项目编号查询取得名次的院系***\n");printf("输入要查询的项目编号:");scanf("%d", &i);printf("项目编号\t\t\t取得名次的院系\n");printf("%d\t", i);p1 = g1->a[i].firstschool;while (p1 != NULL){printf(" 学校%d:得%d分", p1->school, p1->record);p1 = p1->next;}printf("\n\n");system("pause");printf("按任意键返回主菜单......");getchar();}void main(){int temp;printf("管理员请按1,普通用户请按2\n");scanf("%d", &temp);if (1 == temp){int t;void print_Passwd(void);while (1){print_Passwd();break;}g2 = (ALLNode*)malloc(sizeof(ALLNode));g1 = (ALLitems*)malloc(sizeof(ALLitems));if (!g2 || !g1)exit(1);//textcolor(WHITE);//textbackground(BLUE);//clrscr();system("cls");for (;;){printf("\t\t* * * * * * * * * * * * * * * * * * * * * * *\n");printf("\t\t 运动会分数统计系统\n");printf("\t\t* * * * * * * * * * * * * * * * * * * * * * *\n");printf("\t\t* 1.输入各个项目成绩并存储文件*\t \n");printf("\t\t* 2.统计各院系总分*\t \n");printf("\t\t* 3.按院系编号排序输出*\t \n");printf("\t\t* 4.按院系总分排序输出*\t \n");printf("\t\t* 5.按男团体总分排序输出*\t \n");printf("\t\t* 6.按女团体总分排序输出*\t \n");printf("\t\t* 7.按院系编号查询院系某个项目情况*\t \n");printf("\t\t* 8.按项目编号查询取得名次的院系*\n");printf("\t\t* 0.退出*\n");printf("\t\t* * * * * * * * * * * * * * * * * * * * * * *\n");printf("\t\t \n");printf("\t\t \n");printf("\t\t \n");printf("\t\t 请选择(0-8):");loop1:scanf("%d", &t);system("cls");switch (t){case 1:funct1(g1, g2); save(); break;case 2:funct2(g2); break;case 3:funct3(g2); break;case 4:funct4(g2); break;case 5:funct5(g2); break;case 6:funct6(g2); break;case 7:funct7(g2); break;case 8:funct8(g1); break;case 0:exit(0);default:{ printf("输入有误,请重新选择:");goto loop1; }}//clrscr();system("cls");}}else{int u;g2 = (ALLNode*)malloc(sizeof(ALLNode));g1 = (ALLitems*)malloc(sizeof(ALLitems));if (!g2 || !g1)exit(1);//textcolor(WHITE);//textbackground(BLUE);//clrscr();system("cls");for (;;){printf("\t\t* * * * * * * * * * * * * * * * * * * * * * *\n");printf("\t\t 运动会分数统计系统\n");printf("\t\t* * * * * * * * * * * * * * * * * * * * * * *\n");printf("\t\t* 1.统计各院系总分*\t \n");printf("\t\t* 2.按院系编号排序输出*\t \n");printf("\t\t* 3.按院系总分排序输出*\t \n");printf("\t\t* 4.按院系编号查询学校某个项目情况*\t \n");printf("\t\t* 5.按项目编号查询取得名次的院系*\n");printf("\t\t* 0.退出*\n");printf("\t\t* * * * * * * * * * * * * * * * * * * * * * *\n");printf("\t\t \n");printf("\t\t \n");printf("\t\t \n");printf("\t\t 请选择(0-5):");loop2:scanf("%d", &u);system("cls");switch (u){case 1:funct2(g2); break;case 2:funct3(g2); break;case 3:funct4(g2); break;case 4:funct7(g2); break;case 5:funct8(g1); break;case 0:exit(0);default:{ printf("输入有误,请重新选择:");goto loop2; }}//clrscr();system("cls");}}}五、测试数据及其结果分析图一登录界面图二管理员界面图三普通用户界面图四输入信息图五男团体总分排序图六查询院系某个项目结果分析(1)进入管理员界面需要正确输入密码,普通用户不需要输入密码,但管理员界面的功能更多(2)输入信息时项目和院系编号必须输入数字且不能超过预先设定的项目总数和院系总数(3)总分排序和团体总分排序要先输入项目编号,进行查询和排序时也需要输入正确的院系编号和项目编号六、调试过程中的问题(1)运行时出现runtime check failure #2或runtime check failure#3说明有变量越界.或有变量没有初始化,需要扩大变量范围或给变量赋值(2)调试时出现乱码或程序终止则很有可能输入了错误的数据类型,需要重启程序并正确输入数据类型(3)选择普通用户后无法显示菜单界面只有光标但输入数字可以选择功能,问题是system(”cls”)函数放在了选择之前导致了清屏(4)结构体定义时缺最后的分号,struct node1{ } 应改为struct node1{ };(5)在定义字符串变量时要指定数据长度七、课程设计总结经过一个星期的C语言上机实验我学到了很多,也对C语言的特点和用法有了进一步的了解和体会,C语言与其他语言相比有着独有的特点,主要体现在以下几个方面:1. 简洁紧凑、灵活方便、2. 运算符丰富、3. 数据结构丰富、4.C语法限制不太严格、程序设计自由度大、5.C语言适用范围大,可移植性好。