C语言课程设计校际运动会管理系统地大版最简洁.docx

上传人:b****6 文档编号:5026620 上传时间:2022-12-12 格式:DOCX 页数:18 大小:144.13KB
下载 相关 举报
C语言课程设计校际运动会管理系统地大版最简洁.docx_第1页
第1页 / 共18页
C语言课程设计校际运动会管理系统地大版最简洁.docx_第2页
第2页 / 共18页
C语言课程设计校际运动会管理系统地大版最简洁.docx_第3页
第3页 / 共18页
C语言课程设计校际运动会管理系统地大版最简洁.docx_第4页
第4页 / 共18页
C语言课程设计校际运动会管理系统地大版最简洁.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

C语言课程设计校际运动会管理系统地大版最简洁.docx

《C语言课程设计校际运动会管理系统地大版最简洁.docx》由会员分享,可在线阅读,更多相关《C语言课程设计校际运动会管理系统地大版最简洁.docx(18页珍藏版)》请在冰豆网上搜索。

C语言课程设计校际运动会管理系统地大版最简洁.docx

C语言课程设计校际运动会管理系统地大版最简洁

 

中国地质大学

本科生课程论文封面

课程名称C语言课程设计

教师姓名。

本科生姓名,,

本科生学号。

本科生专业。

所在院系资源学院

类别:

本科生

日期:

 

课程设计评语

对课程论文的评语:

平时成绩:

课程论文成绩:

总成绩:

评阅人签名:

注:

1、无评阅人签名成绩无效;

2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;

3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。

课程论文题目

1.校际运动会管理系统

一、题目要求

(1)信息初始化

输入:

N─参赛学校总数,M─男子竞赛项目数,W─女子竞赛项目数;

各项目名次取法有如下几种:

取前5名:

第一名得分7,第二名得分5,第三名得分3,第四名得分2,第五名得分1;

取前3名:

第一名得分5,第二名得分3,第三名得分2;

用户自定义:

各名次权值由用户指定。

(2)提醒用户填写比赛结果,输入各项目获奖运动员信息。

(3)所有信息记录完毕后,用户可以查询各个学校的比赛成绩,生成团体总分报表,察看参赛学校信息和比赛项目信息等。

2.程序设计思路

根据题目要求应提供键盘式菜单实现功能选择,还应提供信息的输入操作,由于在程序中提供查询功能所以应有显示、查找等操作。

根据上面的需求分析,可以将这个系统的设计分为1、信息输入模块2、比赛结果录入模块3、查询模块。

具体校际运动会管理系统分为信息的输入、结果的输入、学校各个项目的得分的查寻、总体报表的生成。

3.功能模块图

(每个功能模块都标注函数名称,如右图)

 

 

4.数据结构设计

数据结构采用结构体的形式,包括学校、项目、运动员三个结构体。

比如学校结构体成员

#include

#include

#include

#defineA100

inty=0,f=0,j,W,M,N,p[15],q[15];

structstudent

{charshool[20];

charname[20];

charitem[20];

charsex;

intmingci;

intmark;

}stu[A];

structitem

{charname[20];

charsex;

intmark;

}it[A];

structshool

{charname[20];

charitem[20];

intmark;

}sho[A]

{

5.算法设计

1.主函数一般设计的较为简洁,只提供输入、功能处理和输出部分的函数调用。

其中各功能模块用菜单方式选择。

另外菜单部分也可以写成函数。

[程序]

voidmain()

{voidmenu();

menu();

}

voidmenu()

{

voidestablish(),enter(),search();

intw1,n;

do{

puts("\t\t*****************MENU********************");

puts("\n\n\t\t1.输入信息\n");

puts("\t\t2.输入比赛结果\n");

puts("\t\t3.查询比赛信息\n");

puts("\t\t4.退出\n");

puts("\n\t\t*****************************************");

puts("\n\n请选择:

");

scanf("%d",&n);}while(0);

switch(n)

{case1:

establish();break;

case2:

enter();break;

case3:

search();break;

case4:

exit(0);

}

}各功能模块设计

(1)信息输入模块

一是参赛学校信息,二是参赛运动员信息,三是比赛项目信息,分别输入并保存

voidestablish()

{voidzidingyi();

inth,r;externN,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).第一名七分,第二名五分,第三名三分,第四名五分,第五名一分.");

printf("\n\n\t2).第一名五分,第二名三分,第三名一分.");

printf("\n\n\t3).由您自己定义.");

printf("\n\n请输入编号(1--3):

");

scanf("%d",&h);

switch(h)

{case1:

j=1;break;

case2:

j=2;break;

case3:

zidingyi();

}

printf("设置成功\n按任意键会菜单");scanf("%d",&r);

menu();

}

(2)结果录入模块

voidenter()

{

intt,r,i=0;externj,y;charF,M;

voidmark(intj,inti);

do

{

printf("\n请输入运动员的名字:

");scanf("%s",&stu[i].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",&t);

if(t==2)break;

i++;

}while(t==1);f=1;

printf("输入成功\n请按任意键退出");scanf("%d",&r);

menu();

}

(3)查询信息模块

[分析]

查询信息模块提供按不同方式查询各种信息机返回功能,其中各功能模块用菜单方式选择。

菜单部分也可写成函数。

6.程序代码

#include

#include

#include

#defineA100

inty=0,f=0,j,W,M,N,p[15],q[15];

structstudent

{charshool[20];

charname[20];

charitem[20];

charsex;

intmingci;

intmark;

}stu[A];

structitem

{charname[20];

charsex;

intmark;

}it[A];

structshool

{charname[20];

charitem[20];

intmark;

}sho[A];

voidmain()

{voidmenu();

menu();

}

voidmenu()

{

voidestablish(),enter(),search();

intw1,n;

do{

puts("\t\t*****************MENU********************");

puts("\n\n\t\t1.输入信息\n");

puts("\t\t2.输入比赛结果\n");

puts("\t\t3.查询比赛信息\n");

puts("\t\t4.退出\n");

puts("\n\t\t*****************************************");

puts("\n\n请选择:

");

scanf("%d",&n);}while(0);

switch(n)

{case1:

establish();break;

case2:

enter();break;

case3:

search();break;

case4:

exit(0);

}

}

voidestablish()

{voidzidingyi();

inth,r;externN,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).第一名七分,第二名五分,第三名三分,第四名五分,第五名一分.");

printf("\n\n\t2).第一名五分,第二名三分,第三名一分.");

printf("\n\n\t3).由您自己定义.");

printf("\n\n请输入编号(1--3):

");

scanf("%d",&h);

switch(h)

{case1:

j=1;break;

case2:

j=2;break;

case3:

zidingyi();

}

printf("设置成功\n按任意键会菜单");scanf("%d",&r);

menu();

}

voidenter()

{

intt,r,i=0;externj,y;charF,M;

voidmark(intj,inti);

do

{

printf("\n请输入运动员的名字:

");scanf("%s",&stu[i].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",&t);

if(t==2)break;

i++;

}while(t==1);f=1;

printf("输入成功\n请按任意键退出");scanf("%d",&r);

menu();

}

voidsearch()

{intr;voidsearch_school(),search_item();

inte;charc;externf;

if(f==0)

{printf("请先输入数据\n输入任意键退出..\n");

scanf("%s",&c);

menu();

}

loop:

printf("\n请选择检索类型:

\n\t1).以学校检索\n\t2).以项目检索\n\t3).退出\t");

scanf("%d",&e);

switch(e)

{case1:

search_school();{printf("输入成功\n请按任意键退出");scanf("%d",&r);

menu();}

case2:

search_item();{printf("输入成功\n请按任意键退出");scanf("%d",&r);

menu();}

case3:

menu();

}

}

voidsearch_school()

{voidprintf_one(),printf_face(),printf_sum();

intx,sum=0,w=0;

structstudents;

printf("\n请输入你要检索的学校名字:

");

scanf("%s",&s.shool);

printf_face();

for(x=0;x

if(strcmp(s.shool,stu[x].shool)==0)

{sum+=stu[x].mark;

printf_one(x);w=1;

}

printf_sum(sum);

if(w==0)

{printf("\n\n*不存在此学校,请重新输入");search_school();}

}

voidsearch_item()

{voidprintf_one(),printf_face(),printf_sum();

intx,sum=0,w=0;

structstudents;

printf("\n请输入你要检索的项目名:

");

scanf("%s",&s.item);

printf_face();

for(x=0;x

if(strcmp(s.item,stu[x].item)==0)

{sum+=stu[x].mark;

printf_one(x);w=1;

}

printf_sum(sum);

if(w==0)

{printf("\n\n*不存在此项目,请重新输入");search_item();}

}

voidmark(intj,inti)

{intg;externp[15],q[15];

if(j==1)

{if(stu[i].mingci==1)stu[i].mark=7;

elseif(stu[i].mingci==2)stu[i].mark=5;

elseif(stu[i].mingci==3)stu[i].mark=3;

elseif(stu[i].mingci==4)stu[i].mark=2;

elseif(stu[i].mingci==5)stu[i].mark=1;

}

if(j==2)

{if(stu[i].mingci==1)stu[i].mark=5;

elseif(stu[i].mingci==2)stu[i].mark=3;

elseif(stu[i].mingci==3)stu[i].mark=1;

}

if(j==3)

{for(g=0;g<15;g++)if(stu[i].mingci==p[g])stu[i].mark=q[g];}

}

voidzidingyi()

{staticintp[15],q[15],a,b,j;

for(a=0;a<15;a++)

{printf("\n请输入要定义的名次:

");scanf("%d",&p[a]);

printf("\n请输入该名次的分值:

");scanf("%d",&q[a]);

loop:

printf("\n你还要继续定义吗?

1).Yes\t2).No");scanf("%d",&b);

if(b==2)break;

if(b!

=1)gotoloop;

}

j=3;

}

voidprintf_one(intx)

{printf("\n%-20s%-20s%-20s%-5c%-9d%-5d",stu[x].shool,stu[x].name,stu[x].item,stu[x].sex,stu[x].mingci,stu[x].mark);

}

voidprintf_sum(intsum)

{printf("\n\n总分数是:

\t%d",sum);

printf("\n学校总数是:

\t%d",N);

printf("\n项目总数是:

\t%d\n",W+M);

}

voidprintf_face()

{printf("\n\n学校名运动员名项目性别名次分数");

}}

}

7.程序运行结果【

(1)主菜单函数

(2)信息录入模块

(3)查询子菜单

(4)按学校名字查询信息

(5)按项目查询项目信息

8.编程中遇到的困难及解决方法

在学习C语言时,最初使用的是Microsoftvisual6++计算机编程软件,但我们是使用C++SourseFile编一个.c程序。

而老师则要求我们使用工程的MFCAppWizadexe编程。

这是c++里的知识。

尽管当时听老师讲c++与C语言有许多共同之处,但我们还是无从下手。

后来老师把程序发该我们,让我们用.C的编程就好多了。

在编程的过程中,经常会在语句结束时少“;”或者把中文输入的引号输入文件,很难发现错误所在。

在编程题时也出现了一些编译中的问题。

例如,在开始未加头文件#include导致有许多未定义的errors;在输入字符串时用到“%S”,使功能无法输出。

由于原来题目要求较少,题目较简单,在编译时,我先按照题目要求将它编写好,之后又给它添加了很多功能。

在帮同学修改程序的过程中,也遇到过一个问题。

在头文件后定义了子函数,可是之后忘了编写子函数,在纠错时,有的是不会发现错误的,但是连接过程中就会报告出错。

我觉得在以后的编程过程中,最好用什么函数写什么函数,后者在写完一个子函数后再在头文件底下声明。

9.总结心得及良好建议

C语言实习基本上由老师引导,自己很多都靠自学,不明白的问老师,自学能力得到了很大的培养。

在实习过程中,我感觉到一点,程序是不能一气呵成的。

至少一气呵成的程序不会尽善尽美。

程序编写要一步一步的完成。

首先,对于要编的程序要有一个总体思路。

要明确想要什么。

只要把思路理清楚了,程序就好编写了。

把程序分割成几个块,即多个函数,一块一块的编写。

然后将分散的函数用另外的函数连接起来或者用main函数连接。

到这一步,程序也就初步编成了,之后便是调试,检查错误。

最后我觉得还可以对于已经编写好的程序进行一些修改添加,使它更加人性化。

优化程序的阶段是很重要的。

10.致谢

在C语言的实习过程中,让我巩固了C语言的基础知识,以前从来没有这样编过完整的程序,实习让我有这样的一个机会,自己独立编写程序。

我觉得自己说学的东西不多,但是可以将它们运用出来。

在实习过程中,首先我要感谢我的老师,一个是带我走进C语言大门的曹老师,因为她,我开始喜欢C语言,把所学知识掌握牢固。

同时,在这次实习中,樊老师对我的帮助对我最难忘。

题目本身是很简单的,在老师的教学风格影响下,我在编写完最初程序后,有自己添加了很多功能。

在此,我要感谢她。

最后,我还要感谢给我帮助的同学,在一些程序问题上,我和同学交流经验,学到了很多在书本上学不到的东西。

总之,我真诚的感谢在这次实习中给过我帮助的人!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

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

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