学生运动会成绩数据库.docx
- 文档编号:23635222
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:40
- 大小:540.21KB
学生运动会成绩数据库.docx
《学生运动会成绩数据库.docx》由会员分享,可在线阅读,更多相关《学生运动会成绩数据库.docx(40页珍藏版)》请在冰豆网上搜索。
学生运动会成绩数据库
滁州学院
课程设计报告
课程名称:
数据结构课程设计报告
设计题目:
学生运动会成绩数据库
系别:
计算机科学与技术系
专业:
计算机科学与技术专业
组别:
第三组
起止日期:
2011年5月20日~2011年6月20日
指导教师:
杨斌
计算机科学与技术系二○○九年制
课程设计题目
学生运动会成绩数据库
组长
李通
学号
2010211104
班级
计科101
系别
计算机科学与技术系
专业
计算机科学与技术专业
组员
冯婷婷、黄华、蒋陆陆
指导教师
杨斌
课程设计目的
深入理解数据结构的基本理论,掌握数据存储结构的设计方法,掌握数据结构基于的各种操作的实现方法
课程设计所需环境
MicrosoftVisualC++6.0
课程设计任务要求
用数据结构的基本理论和数据存储的设计方法完成一个实际应用问题,在完成程序设计的同时能够写出比较规范的设计报告
课程设计工作进度计划
序号
起止日期
工作内容
分工情况
1
2011/5/24
--2011/6/1
Push()、Delete()、Change()
添加删除修改要稍微详细描述下功能
李通完成
2
2011/5/24
--2011/5/28
Addupscore()、Sort()
合计排序
黄华完成
3
2011/5/24
--2011/5/29
Malesort()、Femalesort()
男生排序女生排序
蒋陆陆完成
4
2011/5/24
--2011/5/29
Acasearch()、Itemsearch()
按系部查找按项目查找
冯婷婷完成
5
20115/24
--2011/5/30
main()、Mainmenu()
主函数主菜单
朱路平完成
6
2011/6/2
--2011/6/15
课程设计报告
冯婷婷完成:
引言与需求分析
蒋璐璐完成:
概要设计
黄华完成:
调试与操作说明
李通完成:
课程设计总结与体会
朱路平完成:
实验报告其余部分
指导教师签字:
年月日
教研室审核意见:
教研室主任签字:
年月日
课程设计任务书
目录
⒈引言1
⒉需求分析1
2.1问题描述1
2.2设计思路2
2.3运行环境及开发工具2
⒊概要设计2
3.1流程图2
3.2主要数据结构3
3.3函数及其实现的功能3
⒋详细设计4
4.1程序代码4
⒌调试与操作说明14
5.1操作说明14
5.2运行结果14
⒍课程设计总结与体会20
6.1总结20
6.2收获与体会21
⒎致谢21
⒏参考文献21
课程设计的主要内容
⒈引言
《数据结构》主要介绍一些最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行简单的分析和讨论。
数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。
⒉需求分析
2.1问题描述
题目:
学生运动会成绩数据库
功能:
学生运动会成绩数据库系统记录某校运动会上全部运动项目,各系获得的分数及排名的情况,包括50、100、200,400,1500米,跳高,跳远,标枪,铅球铁饼等。
进入系统后可以输入和修改某个项目的结果情况,可以按各系院编号输出总分;按总分排序;按男团体总分排序;按系院编号查询;按项目编号查询;按女团体总分排序。
分步实施:
1)初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;
2)完成最低要求:
建立一个文件,包括某个系,5个项目的得分情况,能对文件中地信息进行扩充(追加),修改和删除;
3)进一步要求:
完成对多个系,多个项目的得分排序,以及完成系统查询功能。
有兴趣的同学可以自己扩充系统功能。
键盘输入:
系院数目,男子项目数女子项目数,(每项目取前三名,分别为10,5,2分)
要求:
1)界面友好,函数功能要划分好
2)总体设计应画流程图
3)程序要加必要的注释
4)要提供程序测试方案
5)程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。
2.2设计思路
表1系部项目信息表
50
100
1500
跳高
跳远
男子
女子
男子
女子
男子
女子
男子
女子
男子
女子
计算机系
数学系
经管系
如上图所示,即是为学生运动会所列出的表格,根据此表格即可定义Academy和Score两个结构体,定义且完成数据的输入操作后再对其进行添加系、添加项目、更改数据、查询总分、按总分男子团体总分和女子团体总分分别查询排名等操作即可。
2.3运行环境及开发工具
运行环境MicrosoftVisualC++6.0;开发工具C/C++
⒊概要设计
3.1流程图
图3.1程序总流程图
3.2主要数据结构
结构原型由上表所示,建立包含系名称和编号的代表系的结构体Academy、代表整个表格的Score结构体和交换变量结构体change。
具体数据结构定义如下:
typedefstruct//定义系结构体,包括系名和该系的编号
{
charname[20];
intnum;
}Academy;
typedefstruct
{
AcademyAca[Maxnum];
struct
{
intmale;
intfemale;
}score[Maxnum][Maxnum];
intm,n,b,g;//m、n、b、g分别代表系数目、项目数目、男子项目数和女子项目数。
}Score;
typedefstruct//定义一个交换变量结构体
{
intscore;
charname[20];
}change;
name[20]和num分别为系名称和编号,score[Maxnum][Maxnum]为表格中的数值,m、n、b、g分别代表系数目、项目数目、男子项目数和女子项目数。
3.3函数及其实现的功能
程序中除了main主函数外还包括九个函数(即实现九种功能)和将这九种功能集成在一起的功能函数Mainmenu。
这九个函数分别为:
1、Push(Score*p)
功能:
在定义好的学生运动会数据库中添加新的系或者项目,并为新添加的系或项目输入成绩数据。
操作:
输入标示符flag和要添加的数目f,若flag为0,则再输入系名称、编号以及成绩数据;若flag为1,则再输入每个系在新项目中的成绩数据。
2、Change(Score*p)
功能:
更改某一个系目的分数。
操作:
输入要更改系项目的系编号、项目编号、男子或女子选项和更改后的分数。
3、Addupscore(Score*p)
功能:
核算各个系的总分。
操作:
按系编号输出核算后的结果。
4、Sort(Score*p)
功能:
核算各个系的总分,并按分数高低进行排名。
操作:
按排名先后输出系总分。
5、Malesort(Score*p)
功能:
核算各个系的男子项目总分,并按分数高低进行排名。
操作:
按排名先后输出系男子项目总分。
6、Femalesort(Score*p)
功能:
核算各个系的女子项目总分,并按分数高低进行排名。
操作:
按排名先后输出系女子项目总分。
7、Acasearch(Score*p)
功能:
查找特定系所有项目的分数。
操作:
输入待查找的系编号,并输出该系所有项目的分数。
8、Itemsearch(Score*p)
功能:
查找特定项目的所有系分数。
操作:
输入待查找的项目编号,并输出该项目所有系的分数。
9、Delete(Score*p)
功能:
删除某个系
操作:
输入该系的编号,删除该系
⒋详细设计
4.1程序代码
#include
#include
#include
#include
#include
#defineMaxnum50
typedefstruct//定义系结构体,包括系名和该系的编号
{
charname[20];
intnum;
}Academy;
typedefstruct
{
AcademyAca[Maxnum];
struct
{
intmale;
intfemale;
}score[Maxnum][Maxnum];
intm,n,b,g;//m、n、b、g分别代表系数目、项目数目、男子项目数和女子项目数。
}Score;
typedefstruct
{
intscore;
charname[20];
}change;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
voidMainmenu(Score*p);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
voidPush(Score*p)//在定义好的学生运动会数据库中添加新的系部或者项目,并为新添加的系部或项目输入成绩数据
{
charch;
charm[10];
intflag,i,j,n;
FILE*fp;
printf("添加新的系部,请输入flag=0:
");
scanf("%d",&flag);
if(flag==0)
{
if((fp=fopen("fp.txt","a"))==NULL)//以追加方式打开文本文档
{
printf("Fileopenerror!
");
exit(0);
}
printf("输入系部编号:
");
cin>>n;
printf("输入系部名称:
");
cin>>m;
printf("输入各项目男女分数:
");
for(j=0;j
{
scanf("%d%d",&p->score[i][j].male,&p->score[i][j].female);
}
printf("\n");
fprintf(fp,"\n");
fprintf(fp,"%d%s",n,m);
for(j=0;j
fprintf(fp,"%4d%4d",p->score[i][j].male,p->score[i][j].female);
if(fclose(fp))
{
printf("Can'tclosethefile!
");
exit(0);
}
if((fp=fopen("fp.txt","r"))==NULL)
{
printf("Fileopenerror!
");
exit(0);
}
while(!
feof(fp))//判断读写位置指针是否指向文件尾
{
ch=fgetc(fp);//从磁盘文件读入一个字符到ch
putchar(ch);
}
if(fclose(fp))
{
printf("Can'tclosethefile!
");
exit(0);
}
p->m++;
}
Mainmenu(p);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
voidDelete(Score*p)//删除某个系
{inti,j,f;
charch;
AcademyAca[Maxnum];
FILE*fp;
if((fp=fopen("fp.txt","r"))==NULL)
{
printf("Fileopenerror!
");
exit(0);
}
for(i=0;i
{
fscanf(fp,"%d%s",&Aca[i].num,Aca[i].name);
for(j=0;j
{
fscanf(fp,"%d%d",&p->score[i][j].male,&p->score[i][j].female);
}
}
if(fclose(fp))
{
printf("Can'tclosethefile!
");
exit(0);
}
printf("请选择要删除的系部序号:
");
scanf("%d",&f);
printf("\n");
for(intk=f;k
{
Aca[k].num=Aca[k+1].num;
strcpy(Aca[k].name,Aca[k+1].name);
for(j=0;j
{
p->score[k][j].male=p->score[k+1][j].male;
p->score[k][j].female=p->score[k+1][j].female;
}
}
p->m--;
if((fp=fopen("fp.txt","w+"))==NULL)//建立新文本文档进行读/写
{
printf("Fileopenerror!
");
exit(0);
}
for(i=0;i
{
fprintf(fp,"%3d%5s",Aca[i].num,Aca[i].name);
for(j=0;j
fprintf(fp,"%4d%4d",p->score[i][j].male,p->score[i][j].female);
fprintf(fp,"\n");
}
if(fclose(fp))
{
printf("Can'tclosethefile!
");
exit(0);
}
if((fp=fopen("fp.txt","r"))==NULL)
{
printf("Fileopenerror!
");
exit(0);
}
while(!
feof(fp))
{
ch=fgetc(fp);
putchar(ch);
}
if(fclose(fp))
{
printf("Can'tclosethefile!
");
exit(0);
}
Mainmenu(p);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
voidChange(Score*p)//更改某一个系部项目的分数。
{
inti,j,sex,f;
FILE*fp;
charch;
AcademyAca[Maxnum];
if((fp=fopen("fp.txt","r"))==NULL)
{
printf("Fileopenerror!
");
exit(0);
}
for(i=0;i
{
fscanf(fp,"%d%s",&Aca[i].num,Aca[i].name);
for(j=0;j
{
fscanf(fp,"%d%d",&p->score[i][j].male,&p->score[i][j].female);
}
}
printf("sex为0时代表男生,为1时代表女生\n");
printf("Pleaseputintheacademynum,theitemnum,maleorfemaleandthescore:
");
scanf("%d%d%d%d",&i,&j,&sex,&f);
printf("\n");
if(sex==0)
p->score[i][j].male=f;
if(sex==1)
p->score[i][j].female=f;
if(fclose(fp))
{
printf("Can'tclosethefile!
");
exit(0);
}
if((fp=fopen("fp.txt","w+"))==NULL)
{
printf("Fileopenerror!
");
exit(0);
}
for(i=0;i
{
fprintf(fp,"%3d%5s",Aca[i].num,Aca[i].name);
for(j=0;j
fprintf(fp,"%4d%4d",p->score[i][j].male,p->score[i][j].female);
fprintf(fp,"\n");
}
if(fclose(fp))
{
printf("Can'tclosethefile!
");
exit(0);
}
if((fp=fopen("fp.txt","r"))==NULL)
{
printf("Fileopenerror!
");
exit(0);
}
while(!
feof(fp))
{
ch=fgetc(fp);
putchar(ch);
}
if(fclose(fp))
{
printf("Can'tclosethefile!
");
exit(0);
}
Mainmenu(p);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
voidAddupscore(Score*p)//核算各个系部的总分
{
inti,j,f=0;
FILE*fp;
Academy*y;
y=(Academy*)malloc(sizeof(Academy));
if((fp=fopen("fp.txt","r"))==NULL)
{
printf("Fileopenerror!
");
exit(0);
}
for(i=0;i
{
fscanf(fp,"%d%s",&y->num,y->name);
printf("%d%8s总分:
",y->num,y->name);
for(j=0;j
{
fscanf(fp,"%d%d",&p->score[i][j].male,&p->score[i][j].female);
if(p->score[i][j].male!
=-1)
f+=p->score[i][j].male;
if(p->score[i][j].female!
=-1)
f+=p->score[i][j].female;
}
printf("%2d\n",f);
f=0;
printf("\n");
}
if(fclose(fp))
{
printf("Can'tclosethefile!
");
exit(0);
}
Mainmenu(p);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
voidSort(Score*p)//核算各个系部的总分,并按分数高低进行排名。
{
inti,j;
changea[Maxnum],t;//定义一个数组存储一个系的系名和总分
inth[12];
FILE*fp;
Academy*y;
y=(Academy*)malloc(sizeof(Academy));
for(i=0;i
h[i]=i+1;
if((fp=fopen("fp.txt","r"))==NULL)
{
printf("Fileopenerror!
");
exit(0);
}
for(i=0;i
{
fscanf(fp,"%d%s",&y->num,y->name);
a[i].score=0;
strcpy(a[i].name,y->na
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 运动会 成绩 数据库
![提示](https://static.bdocx.com/images/bang_tan.gif)