C语言课程设计
院系:地球科学学院 姓名: 朱 琳 学号:20131001095 班号:011136
指导教师: 陈小岛
日期:2015年12 月
一、 课程论文题目
校际运动会管理系统
(1) 信息初始化 输入:N——参赛学校总数;M——男子竞赛项目数;W——女子竞赛项目数。 各名次取法有如下几种: ①取前5名:第1名得7分,第2名得5分,第3名得3分,第4名得2分,第5名得1分。 ②取前3名:第1名得5分;第2名得3分;第3名得2分。 ③用户自定义:各名次权值由用户指定。
(2)提醒用户填写比赛结果,输入各项目获奖运动员的信息。
(3)所有信息记录完毕后,用户可以查询各个学校的比赛成绩,生成团体总分报表,查看参赛学校信息和比赛项目信息等。
二、 设计思路
根据程序所要实现的功能,可将程序设计为三个模块:信息输入模块,比赛结果录入模块和查询模块。
校级运动会管理系统 信息输入 比赛结果录入 查询 学校总数N 男子项目M 女子项目W 获奖运动员个数 按学校查询 按项目查询 姓名 学校 竞赛项目 性别 名次 三、 详细设计
主函数
主函数一般设计的比较简洁,只提供输入,处理和输出部分的函数调用。其中功能模块用菜单方式选择。
N 显示一系列功能选项 n>0&&n<9 Y 根据n的值调用各功能模块函数
[程序] main() {
menu(); /*menu 是菜单函数*/ }
菜单函数程序如下: menu()
{ int w1,n; do {
puts(\ puts(\输入信息\\n\ puts(\输入比赛结果\\n\ puts(\查询信息\\n\ puts(\退出\\n\
puts(\ puts(\输入所需执行数字:\ scanf(\
if(n<1||n>3) /*对选择的数字进行判断*/ {
w1=1;
getchar(); }
else w1=0; }
while(w1==1); switch(n) {
case 1:establish();break; /*信息系统建立模块*/ case 2:enter();break; /*比赛结果输入模块*/ case 3:search();break; /*查询模块*/ case 4:exit(0); /*退出*/ } }
各个模块的设计 [信息输入] [数据结构]
数据结构采用结构体的形式,包括学校、项目、运动员三个结构体。比如学校结构体成员包括学校校名、竞赛项目、得分;项目结构体成员包括项目名、权值。 struct student {
char shool[20]; char name[20];
char item[20]; char sex;
int position; int mark;
}stu[A]; /*stu[A]中每个数组元素对应一个参赛选手*/
struct item {
char name[20]; char sex; int mark;
}it[A]; /*it[A]中每个数组元素对应一个项目*/
struct shool {
char name[20]; char item[20]; int mark;
}sho[A]; /* sho[A]每个数组元素对应一个学校;*/
[信息输入模块]
根据题意把与运动员的学校、名字、项目、性别、名次、分数作为结构体成员,如果要存放若干个运动员的信息就用结构体数组。见stu[A],其中A为运动员个数。
提醒用户 输入运动员学校、姓名、项目、性别 输入运动员名次并选择权值模式 前5名:第1名得7分,第2名得5分,第3名得3分,第4名得2分,第5名得1分 取前3名:第1名得5分;第2名得3分;第3名得2分 用户自定义:各名次权值由用户指定 返回主函数
/******************输入模块*****************/
establish() { int h,r; extern N,M,W; y=1; printf(\参赛学校总数:\ scanf(\ printf(\男子竞赛项目总数:\ scanf(\ printf(\女子竞赛项目总数:\ scanf(\
printf(\请选择以下各名次分值:\ /*选择计分模式*/ printf(\ printf(\ printf(\自定义\
loop: printf(\选择数字(1--3):\ scanf(\ if(h>0&&h<4) switch(h) /*调用switch结构*/ {
case 1:j=1;break; case 2:j=2;break; case 3:define_mark(); } }
else goto loop; /*调用goto结构*/ printf(\完成!\\n输入任意键+Enter 返回菜单..\ /*返回主函数*/ scanf(\menu();
[结果录入模块]
该模块的功能是输入男女运动员的成绩,并由用户选择或定义各名次的分数。