目 录
第章 绪 1
11 运动会分数统计系统背景 1
12 运动会分数统计系统务目标 1
第二章 运动会分数统计系统需求分析 2
21 功需求 2
22 功模块 2
23 数求 3
24 性求 3
第三章 系统开发工具关键技术 4
31 系统开发工具 4
311 CodeBlocks 4
32 关键技术 4
321 C语言 4
322 数组 4
323 链表 4
第四章 运动会分数统计系统实现 5
41 数结构设计 5
42 结构定义 5
43 系统界面实现 6
431 菜单窗口 6
432 输入项目成绩存储文件 6
433 统计学校总分 8
434 学校编号排序输出 8
435 学校总分排序输出 8
436 男团体总分排序输出 9
437 女团体总分排序输出 9
438 学校编号查询学校某项目情况 10
439 项目编号查询取名次学校 10
第五章 结束语 11
51 课程设计总结 11
52 致谢 11
参考文献 12
附录 13
第章 绪
11 运动会分数统计系统背景
信息技术已深入类工作生活天计算机软件广泛应越越政府企业业务纳入计算机软件系统
着社会进步体育事业发展提高运动会成绩统计准确减少设计者工作量开发系统
12 运动会分数统计系统务目标
务:参加运动会n学校学校编号1……n赛分成m男子项目w女子项目项目编号男子1……m女子m+1……m+w项目取前前三名积分前三名积分分:532(mw<20n<10)
目标:
1输入项目前三名前五名成绩
2统计学校总分
3学校编号学校总分男女团体总分排序输出
4学校编号查询学校某项目情况项目编号查询取前三前五名学校
规定:输入数形式范围:20整数(果做更输入学校名称运动项目名称)
第二章 运动会分数统计系统需求分析
21功需求
运动会分数统计方案适合采结构体数组实现系统功应实现部分:赛成绩输入赛成绩输出查询赛成绩调统计结果
22功模块
根分析整系统划分4功模块分执行求中功该系统分赛成绩输入赛成绩输出查询赛成绩调统计结果赛成绩输出模块四子模块分:学校编号输出模块学校总分输出模块安南员总分输出模块女团总分输出模块查询赛成绩模块分学校编号查询模块河岸项目编号查询两子模块
功模块图图21示
图21功模块图
(1) 赛成绩输入模块:赛成绩输入模块分:创建信息部分该部分需输入学校编号项目编号取名次名次算法部分排序结果
(2) 赛成绩输出模块:输入数输出赛菜单选择输出相应数
(3) 查询赛成绩模块:查询赛结果菜单查询方式子菜单查询需数
(4) 调统计结果:输入学校运动会成绩排序输出
23数需求
需输入学校编号项目编号取名次名次
24性需求
程序运行期间避免运行量数时会出错够短时间运行结果稳定输出需系统达安全性性高稳定性强处理数迅速等特点
第三章 系统开发工具关键技术
31 系统开发工具
311 CodeBlocks
CodeBlocks开放源码全功跨CC++集成开发环境CodeBlocks开放源码软件CodeBlocks纯粹C++语言开发完成蓍名图形界面库wxWidgets(262 unicode)版追求完美C++程序员必忍受Eclipse缓慢必忍受VSNET庞高昂价格
32 关键技术
321 C语言
C语言种计算机程序设计语言具高级语言特点具汇编语言特点美国贝尔研究DMRitchie1972年推出1978C语言已先移植中微型机作工作系统设计语言编写系统应程序作应程序设计语言编写赖计算机硬件应程序应范围广泛具备强数处理力仅仅软件开发类科研需C语言适编写系统软件三维二维图形动画具体应单片机嵌入式系统开发
322 数组
数组程序设计中处理方便具相类型干变量序形式组织起种形式序排列类数元素集合称数组C语言中 数组属构造数类型数组分解数组元素数组元素基数类型构造类型数组元素类型数组分数值数组字符数组指针数组结构数组等种类
323 链表
链表(Linked list)种常见基础数结构种线性表会线性序存储数节点里存节点指针(Pointer)必须序存储链表插入时候达O(1)复杂度种线性表序表快查找节点者访问特定编号节点需O(n)时间序表相应时间复杂度分O(logn)O(1)
链表结构克服数组链表需预先知道数缺点链表结构充分利计算机存空间实现灵活存动态理链表失数组机读取优点时链表增加结点指针域空间开销较
链表种编程语言中实现LispScheme样语言建数类型中包含链表存取操作程序语言面象语言CC++Java易变工具生成链表
第四章 运动会分数统计系统实现
41数结构设计
学校存储结构链表
Prev school1 next
头结点
Prev school() next
…………
……
中
school类:
class schoolpublic athlete *学校*
{ ……
public
int item *学校获奖数*
int school *学校编号*
int boys *男团体总分*
int girls *女团体总分*
int score *学校总分*
athlete ath[MaxSize] *获奖运动员信息数组包括分数名次项目*
school *prev前指针
school *next 指针
}
中部分函数:
添加操作add(school* &head)
查询操作checkFunc(school *headint &n)
文件保存save(school *head)
总分快速排序tquicksort(vector
总分基数排序 tbaseSort(vector
42结构体定义
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]
}ALLNode
43 系统界面实现
431菜单窗口
图41
432 输入项目成绩存储文件
请选择(0~8):1进入输入项目成绩存储文件
图42
1输入男子项目总数m1 2输入男子项目总数m1 3输入参加运动会学校总数3
图43
输入 项目:1 请选择1(1前三名2前五名)
第3名:学校<学校编号数字>3
第2名:学校<学校编号数字>2
第1名:学校<学校编号数字>1
项目:2 请选择1(1前三名2前五名)
第3名:学校<学校编号数字>1
第2名:学校<学校编号数字>2
第1名:学校<学校编号数字>3
项目:3 请选择1(1前三名2前五名)
第3名:学校<学校编号数字>1
第2名:学校<学校编号数字>3
第1名:学校<学校编号数字>2
图44
然输入项目:0 返回菜单页面
图45
433 统计学校总分
请选择(0~8):2进入统计学校总分
图46
434 学校编号排序输出
意键继续 返回菜单界面 请选择(0~8):3
图47
435 学校总分排序输出
意键继续 返回菜单界面 请选择(0~8):4
图48
436 男团体总分排序输出
意键继续 返回菜单界面 请选择(0~8):5
图49
437 女团体总分排序输出
意键继续 返回菜单界面 请选择(0~8):6
图410
438 学校编号查询学校某项目情
意键继续 返回菜单界面 请选择(0~8):7
图411
439 项目编号查询取名次学校
意键继续 返回菜单界面 请选择(0~8):8
图412
第五章 结束语
51 课程设计总结
次课程设计明确解知识点掌握较知识点运够熟练通次课程设计学会综合运理知识分析解决实际问题力养成严谨科学态度良程序设计惯实现知识智初步转化学会遵循软件开发程基规范运结构化程序设计方法课程设计题目求组成员完成设计编写调试测试应程序编写文档务
52 致谢
设计完成导师李菁老师细心指导进行次设计遇问题时老师辞辛苦讲解设计利进行设计选题资料搜集直设计修改整程中花费郭老师宝贵时间精力导师表示衷心感谢导师严谨治学态度开拓进取精神高度责心学生受益终生
感谢帮助位学时设计中起探讨问题指出设计误区时发现问题设计利进行没帮助样利结稿表示深深谢意
参考文献:
[1] 严蔚敏 吴伟民著数结构(C语言版)[M]北京:清华学出版社 19974
[2] 苏红 陈惠鹏等著C语言学实教程(第2版)[M]北京电子工业出版社
[3] 苏红 陈惠鹏等著C语言学实教程学指导(第2版)电子工业出版社
附录
详细代码:
#include
#include
#include
#include
#include
#define MAX 50
#define NULL 0
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]
}ALLNode
ALLitems *g1
ALLNode *g2
void funct1(ALLitems *g1ALLNode *g2)
{
Schools *p1
Items *p2
int ijkmwhx
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( 输入误m20整数请重新输入)
scanf(d&m)
}
printf( 输入女子项目总数w)
scanf(d&w)
if(w<0||w>20)
{
printf( 输入误w20整数请重新输入)
scanf(d&w)
}
printf( 输入参加运动会学校总数n)
scanf(d&g2>n)
if(g2>n<0||g2>n>20)
{
printf( 输入误n20整数请重新输入)
scanf(d&g2>n)
}
g1>zm+w
printf( 项目编号男子1d女子ddmm+1g1>z)
printf(\n\n ****记录运动会成绩****)
printf(\n\n (输入0标志结束)\n)
for(k1k
{
g1>a[k]itemk
g1>a[k]firstschoolNULL
}
for(k1k
{
g2>b[k]schoolk
g2>b[k]firstitem0
g2>b[k]score0
g2>b[k]boys0
g2>b[k]girls0
}
g2>b[0]score0
g2>b[0]boys0
g2>b[0]girls0
while(i0)
{
printf(\n 项目)
scanf(d&i)
if(i0)
{
printf( 1前三名 2前五名\n)
printf( 请选择)
scanf(d&j)
if(j1&&j2)
{
printf( 输入误请重新选择)
scanf(d&j)
}
if(j1)
{
h3
do{ printf( 第d名学校(学校编号数字)h)
scanf(d&x)
p1(Schools *)malloc(sizeof(Schools))
p1>schoolx
p2(Items *)malloc(sizeof(Items))
p2>itemi
if(h3) p2>recordp1>record2
if(h2) p2>recordp1>record3
if(h1) p2>recordp1>record5
p1>nextg1>a[i]firstschool
g1>a[i]firstschoolp1
p2>nextg2>b[x]firstitem
g2>b[x]firstitemp2
g2>b[x]scoreg2>b[x]score+p2>record * 累计总分 *
if(i
else g2>b[x]girlsg2>b[x]girls+p2>record * 累计女团体总分 *
h
}while(x0&&h0)
}
if(j2)
{
h5
do{
printf( 第d名学校(学校编号数字)h)
scanf(d&x)
p1(Schools *)malloc(sizeof(Schools))
p1>schoolx
p2(Items *)malloc(sizeof(Items))
p2>itemi
if(h5) p2>recordp1>record1
if(h4) p2>recordp1>record2
if(h3) p2>recordp1>record3
if(h2) p2>recordp1>record5
if(h1) p2>recordp1>record7
p1>nextg1>a[i]firstschool
g1>a[i]firstschoolp1
p2>nextg2>b[x]firstitem
g2>b[x]firstitemp2
g2>b[x]scoreg2>b[x]score+p2>record * 累计总分 *
if(i
else g2>b[x]girlsg2>b[x]girls+p2>record * 累计女团体总分 *
h
}while(x0&&h0)
}
}
}
}
void save()
{
FILE *fp1*fp2
fp1(FILE *)malloc(sizeof(FILE))
fp2(FILE *)malloc(sizeof(FILE))
if((fp1fopen(sports1wb))NULL)
{
printf(cannot open file\n)
return
}
if(fwrite(g1sizeof(ALLitems)1fp1)1)
printf(file write error\n)
fclose(fp1)
if((fp2fopen(sports2wb))NULL)
{ printf(cannot open file\n)
return
}
if(fwrite(g2sizeof(ALLNode)1fp2)1)
printf(file write error\n)
fclose(fp2)
}
void funct2(ALLNode *g2) * 输出学校总分 *
{
int k
printf(\n\n ****** 输出学校总分 ******\n)
printf( 学校编号\t 总分 \n)
for(k1k
printf( d\t\t\t d\nkg2>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(k1k
{
printf(\t\t\t\t\t\td\tk)
p2g2>b[k]firstitem
while(p2NULL)
{
printf(项目dd分 p2>itemp2>record)
p2p2>next
}
printf(\n)
}
printf(\n)
system(pause)
printf(意键返回菜单)
getchar()
}
void funct4(ALLNode *g2) * 学校总分排序输出 *
{
int ijk
Items *p2
printf(\n\n ****** 学校总分排序输出 ******\n)
printf( 学校编号\t\t总分 \n)
scanf(d&k)
printf(输入查询项目编号)
for(i2i
{
printf(d\tk)
p2g2>b[k]firstitem
while(p2NULL)
{
printf(d \t\td\ng2>b[k]schoolg2>b[k]score)
p2p2>next
}
printf(\n)
g2>b[0]scoreg2>b[i]score
g2>b[0]boysg2>b[i]boys
g2>b[0]girlsg2>b[i]girls
g2>b[0]schoolg2>b[i]school
ji1
while(g2>b[0]score
{
g2>b[j+1]scoreg2>b[j]score
g2>b[j+1]boysg2>b[j]boys
g2>b[j+1]girlsg2>b[j]girls
g2>b[j+1]schoolg2>b[j]school
j
}
g2>b[j+1]scoreg2>b[0]score
g2>b[j+1]boysg2>b[0]boys
g2>b[j+1]girlsg2>b[0]girls
g2>b[j+1]schoolg2>b[0]school
}
for(k1k
printf(d \t\td\ng2>b[k]schoolg2>b[k]score)
system(pause)
printf(意键返回菜单)
getchar()
}
void funct5(ALLNode *g2) * 男团体总分排序输出 *
{
int ijk
Items *p2
p2(Items *)malloc(sizeof(Items))
printf(\n\n ****** 男团体总分排序输出 ******\n)
printf(学校编号\t\t男团体总分 \n)
scanf(d&k)
printf(输入查询学校编号)
for(i2i
{
printf(d\tk)
p2g2>b[k]firstitem
while(p2NULL)
{ printf(d\t\t d\ng2>b[k]schoolg2>b[k]boys)
p2p2>next
}
printf(\n)
g2>b[0]scoreg2>b[i]score
g2>b[0]boysg2>b[i]boys
g2>b[0]girlsg2>b[i]girls
g2>b[0]schoolg2>b[i]school
ji1
while(g2>b[0]boys
{
g2>b[j+1]scoreg2>b[j]score
g2>b[j+1]boysg2>b[j]boys
g2>b[j+1]girlsg2>b[j]girls
g2>b[j+1]schoolg2>b[j]school
j
}
g2>b[j+1]scoreg2>b[0]score
g2>b[j+1]boysg2>b[0]boys
g2>b[j+1]girlsg2>b[0]girls
g2>b[j+1]schoolg2>b[0]school
}
for(k1k
printf(d\t\t d\ng2>b[k]schoolg2>b[k]boys)
system(pause) 暂停等
printf(意键返回菜单)
getchar()
}
void funct6(ALLNode *g2) * 女团体总分排序输出 *
{
int ijk
Items *p2
p2(Items *)malloc(sizeof(Items))
printf(\n\n ****** 女团体总分排序输出 ******\n)
printf(学校编号\t\t女团体总分 \n)
scanf(d&k)
printf(输入查询项目编号)
for(i2i
{
printf(d\tk)
p2g2>b[k]firstitem
while(p2NULL)
{ printf(d\t\t d\ng2>b[k]schoolg2>b[k]girls)
p2p2>next
}
printf(\n)
g2>b[0]scoreg2>b[i]score
g2>b[0]boysg2>b[i]boys
g2>b[0]girlsg2>b[i]girls
g2>b[0]schoolg2>b[i]school
ji1
while(g2>b[0]girls
{ g2>b[j+1]scoreg2>b[j]score
g2>b[j+1]boysg2>b[j]boys
g2>b[j+1]girlsg2>b[j]girls
g2>b[j+1]schoolg2>b[j]school
j
}
g2>b[j+1]scoreg2>b[0]score
g2>b[j+1]boysg2>b[0]boys
g2>b[j+1]girlsg2>b[0]girls
g2>b[j+1]schoolg2>b[0]school
}
for(k1k
printf(d\t\t d\ng2>b[k]schoolg2>b[k]girls)
system(pause)
printf(意键返回菜单)
getchar()
}
void funct7(ALLNode *g2) * 学校编号查询学校某项目情况 *
{
int ij
Items *p2
printf(\n ****** 学校编号查询学校某项目情况 ******\n)
printf( 输入查询学校编号)
scanf(d&i)
printf( 输入查询项目编号)
scanf(d&j)
p2g2>b[i]firstitem
while(p2NULL)
{
if(p2>itemj)
printf( 学校编号d\t项目dd分\nip2>itemp2>record)
p2p2>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\ti)
p1g1>a[i]firstschool
while(p1NULL)
{ printf( 学校dd分 p1>schoolp1>record)
p1p1>next
}
printf(\n\n)
system(pause)
printf(意键返回菜单)
getchar()
}
void main()
{
int t
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 请选择(08))
loopscanf(d&t)
system(cls)
switch(t)
{
case 1funct1(g1g2)save()break
case 2funct2(g2)break
case 3funct3(g2)break
case 4funct4(g2)break
case 5funct5(g2)break
case 6funct6(g2)break
case 7funct7(g2)break
case 8funct8(g1)break
case 0exit(0)
default{ printf(输入误请重新选择)
goto loop}
}clrscr()
system(cls)
}
}
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档