1、 中 国 地 质 大 学 本科生课程论文封面 课程名称 C语言课程设计 老师姓名 。。 本科生姓名 ,, 本科生学号 。。 本科生专业 。。 所在院系 资源学院 类别: 本科生 日期: 。。。 课程设计评语 对课程论文评语: 平时成绩: 课程论文成绩: 总 成 绩: 评阅人署名: 注:1、无评阅人署名成绩无效; 2、必需用钢笔或圆珠笔批阅,用铅笔阅
2、卷无效; 3、如有平时成绩,必需在上面评分表中标出,并计算入总成绩。 目 录 课程设计评语 2 目 录 3 1.课程论文题目 4 2.程序设计思绪 4 3.功效模块图 4 4.数据结构设计 6 5.算法设计 7 6.程序代码 10 7.程序运行结果 15 8.编程中碰到困难及处理方法 17 9.总结心得及良好提议 18 10.致谢 18 课程论文题目 1.校际运动会管理系统 一、题目要求 (1)信息初始化 输入:N─参赛学校总数,M─男
3、子竞赛项目数, W─女子竞赛项目数; 各项目名次取法有以下多个: 取前5名:第一名得分 7,第二名得分5,第三名得分3,第四名得分2,第五名得分1; 取前3名:第一名得分5,第二名得分3,第三名得分2; 用户自定义:各名次权值由用户指定。 (2)提醒用户填写比赛结果,输入各项目获奖运动员信息。 (3)全部信息统计完成后,用户能够查询各个学校比赛成绩,生成团体总分报表,察看参赛学校信息和比赛项目信息等。 2.程序设计思绪 依据题目要求应提供键盘式菜单实现功效选择,还应提供信息输入操作,因为在程序中提供查询功效所以应有显示、查找等操作。依据上面需求分析,能够将这个系统
4、设计分为1、信息输入模块 2、比赛结果录入模块 3、查询模块。具体校际运动会管理系统分为 信息输入、结果输入、学校各个项目标得分查寻、总体报表生成。 3.功效模块图 (每个功效模块全部标注函数名称,如右图) 学校总数 男生项目数 信息输入 女生项目数 比赛结果录入 主函数 以学校检索 检索 以项目检索 以运动员检索 退出 4.数据结构设计 数据结构采取结构体形式,包含学校、项目、运动
5、员三个结构体。比如学校结构体组员
#include
6、mark; }it[A]; struct shool { char name[20]; char item[20]; int mark; }sho[A] { 5.算法设计 1.主函数通常设计较为简练,只提供输入、功效处理和输出部分函数调用。其中各功效模块用菜单方法选择。另外菜单部分也能够写成函数。 显示一系列功效选项 输入n,判定n是否是1-4 N 依据n值调用各功效模块函数 图2 主函数步骤图 Y [程序] void main() {void menu(); menu(); } void menu()
7、 { void establish(),enter(),search(); int w1,n; do{ puts("\t\t*****************MENU********************"); puts("\n\n\t\t 1.输入信息\n"); puts("\t\t 2.输入比赛结果\n"); puts("\t\t 3.查询比赛信息\n"); puts("\t\t 4.退出\n"); puts("\n\t\t*********************************
8、"); puts("\n\n请选择:"); scanf("%d",&n);}while(0); switch(n) { case 1:establish();break; case 2:enter();break; case 3:search();break; case 4:exit(0); } }各功效模块设计 (1) 信息输入模块 一是参赛学校信息,二是参赛运动员信息,三是比赛项目信息,分别输入并保留 信息输入 读入、显示参赛学校 读入、显示运动员 读入比赛项目 图3 信息输
9、入模块步骤图 void establish() { void zidingyi(); int h,r; extern N,M,W; y=1; printf("\n请输入学校数量:"); scanf("%d",&N); printf("\n请输入男运动员数量:"); scanf("%d",&M); printf("\n请输入女运动员数量"); scanf("%d",&W); printf("\n有三种权值取法,请选择:"); printf("\n\n\t1).第一名七分,第二名五分,第
10、三名三分,第四名五分,第五名一分."); printf("\n\n\t2).第一名五分,第二名三分,第三名一分."); printf("\n\n\t3).由您自己定义."); printf("\n\n请输入编号(1--3):"); scanf("%d",&h); switch(h) {case 1:j=1;break; case 2:j=2;break; case 3:zidingyi(); } printf("设置成功\n按任意键会菜单");scanf("%d",&r); menu(); }
11、 (2) 结果录入模块 录入运动员比赛得分 图4 比赛结果录入模块步骤图 分析计算各学校总分 void enter() { int t,r,i=0;extern j,y;char F,M; void mark(int j,int i); do { printf("\n请输入运动员名字:");scanf("%s",&stu[i].name); printf("\n请输入运动员学校:");scanf("%s",&stu[i].shool); printf("\n请输入运动员项
12、目:");scanf("%s",&stu[i].item); printf("\n请输入运动员性别(m\w):\t");scanf("%s",&stu[i].sex); printf("\n请输入名次:");scanf("%d",&stu[i].mingci); mark(j,i); loop_2:printf("\n\n继续输入码?\t1).Yes\t2).No\t"); scanf("%d",&t); if(t==2)break; i++; }while(t==1);f=1; printf("输入成功\n请按任意键
13、退出");scanf("%d",&r);
menu();
}
(3)查询信息模块
[分析]
查询信息模块提供按不一样方法查询多种信息机返回功效,其中各功效模块用菜单方法选择。菜单部分也可写成函数。
6.程序代码
#include
14、0]; char sex; int mingci; int mark; }stu[A]; struct item { char name[20]; char sex; int mark; }it[A]; struct shool { char name[20]; char item[20]; int mark; }sho[A]; void main() {void menu(); menu(); } void menu() { void establish(),enter(),sea
15、rch(); int w1,n; do{ puts("\t\t*****************MENU********************"); puts("\n\n\t\t 1.输入信息\n"); puts("\t\t 2.输入比赛结果\n"); puts("\t\t 3.查询比赛信息\n"); puts("\t\t 4.退出\n"); puts("\n\t\t*****************************************"); puts("\n\n请选择:");
16、 scanf("%d",&n);}while(0); switch(n) { case 1:establish();break; case 2:enter();break; case 3:search();break; case 4:exit(0); } } void establish() { void zidingyi(); int h,r; extern N,M,W; y=1; printf("\n请输入学校数量:"); scanf("%d",&N);
17、 printf("\n请输入男运动员数量:"); scanf("%d",&M); printf("\n请输入女运动员数量"); scanf("%d",&W); printf("\n有三种权值取法,请选择:"); printf("\n\n\t1).第一名七分,第二名五分,第三名三分,第四名五分,第五名一分."); printf("\n\n\t2).第一名五分,第二名三分,第三名一分."); printf("\n\n\t3).由您自己定义."); printf("\n\n请输入编号(1--3):"); scanf("%d",&
18、h); switch(h) {case 1:j=1;break; case 2:j=2;break; case 3:zidingyi(); } printf("设置成功\n按任意键会菜单");scanf("%d",&r); menu(); } void enter() { int t,r,i=0;extern j,y;char F,M; void mark(int j,int i); do { printf("\n请输入运动员名字:");scanf("%s",&stu[i].
19、name); printf("\n请输入运动员学校:");scanf("%s",&stu[i].shool); printf("\n请输入运动员项目:");scanf("%s",&stu[i].item); printf("\n请输入运动员性别(m\w):\t");scanf("%s",&stu[i].sex); printf("\n请输入名次:");scanf("%d",&stu[i].mingci); mark(j,i); loop_2:printf("\n\n继续输入码?\t1).Yes\t2).No\t"); scanf("%d",
20、t); if(t==2)break; i++; }while(t==1);f=1; printf("输入成功\n请按任意键退出");scanf("%d",&r); menu(); } void search() { int r; void search_school(),search_item(); int e;char c;extern f; if(f==0) { printf("请先输入数据\n输入任意键退出..\n "); scanf("%s",&c); menu();
21、 } loop:printf("\n请选择检索类型:\n\t1).以学校检索\n\t2).以项目检索\n\t3).退出\t"); scanf("%d",&e); switch(e) { case 1:search_school();{printf("输入成功\n请按任意键退出");scanf("%d",&r); menu();} case 2:search_item();{printf("输入成功\n请按任意键退出");scanf("%d",&r); menu();} case 3:menu(); }
22、
}
void search_school()
{ void printf_one(),printf_face(),printf_sum();
int x,sum=0,w=0;
struct student s;
printf("\n请输入你要检索学校名字:");
scanf("%s",&s.shool);
printf_face();
for(x=0;x 23、ntf_one(x);w=1;
}
printf_sum(sum);
if(w==0)
{printf("\n\n*不存在此学校,请重新输入");search_school();}
}
void search_item()
{ void printf_one(),printf_face(),printf_sum();
int x,sum=0,w=0;
struct student s;
printf("\n请输入你要检索项目名:");
scanf("%s",&s.item);






