数据结构课程设计运动会数据管理系统doc.docx
- 文档编号:7343576
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:30
- 大小:94.64KB
数据结构课程设计运动会数据管理系统doc.docx
《数据结构课程设计运动会数据管理系统doc.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计运动会数据管理系统doc.docx(30页珍藏版)》请在冰豆网上搜索。
数据结构课程设计运动会数据管理系统doc
数据结构
课程设计报告
设计题目:
运动会数据库系统
专业软件工程
班级软件091班
学生郑泽奇
学号3090921013
指导教师周红芳/李兵
起止时间2011-7-4至2011-7-8
2011年春季学期
课设任务
本次数据结构课程设计的主题是学生利用所学的数据结构知识编写程序。
作品为学生本人亲自设计制作,不能由他人代替,严禁抄袭他人作品,一经发现将取消本次教学实习的成绩。
作品应附上word文档格式的说明,包括设计理念、作品特点、作品自评及个人小节,并指明所用的工作平台和工具软件。
文件名均使用英文名或拼音(小写)。
评语(教师填写)
一、具体任务
数据结构课程设计任务书0
题目:
学生运动会成绩数据库
功能:
学生运动会成绩数据库系统记录某校运动会上全部运动项目,各系获得的分数及排名的情况,包括50、100、200,400,1500米,跳高,跳远,标枪,铅球铁饼等。
进入系统后可以输入和修改某个项目的结果情况,可以按各系院编号输出总分;按总分排序;按男团体总分排序;按系院编号查询;按项目编号查询;按女团体总分排序。
分步实施:
1)初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;
2)完成最低要求:
建立一个文件,包括某个系,5个项目的得分情况,能对文件中的信息进行扩充(追加),修改和删除;
3)进一步要求:
完成对多个系,多个项目的得分排序,以及完成系统查询功能。
有兴趣的同学可以自己扩充系统功能。
键盘输入:
系院数目,男子项目数女子项目数,(每项目取前三名,分别为10,5,2分)
要求:
1)界面友好,函数功能要划分好
2)总体设计应画一流程图
3)程序要加必要的注释
4)要提供程序测试方案
5)程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。
二、软件环境
MicrosoftVisualC++6.0
三、算法设计思想及流程图
图1系统流程图
图2输入流程图
图3修改流程图
四、源代码
/*运动会成绩数据库系统
*编写日期:
2011/7/4
*作者:
郑泽奇
*/
#include
#include
usingnamespacestd;
//学生
typedefstruct{
charsex;
chardepartment[10];
intscore;
}Student;
//项目排名
typedefstructeventRank{
charevent[10];
Studentfirst;
Studentsecond;
Studentthird;
structeventRank*next;
}EventRankNode,*EventRankLink;
//院系排名
typedefstructdepartmentRank{
chardepartment[10];
intscore;
structdepartmentRank*next;
}DepartmentRankNode,*DepartmentRankLink;
//各种子函数
voidinitSystem(int&,
int&,
int&,
EventRankLink&,
EventRankLink&,
DepartmentRankLink&,
DepartmentRankLink&,
DepartmentRankLink&);
intoperateChoose();
voiddoChosen(int,
FILE*,
EventRankLink,
EventRankLink,
DepartmentRankLink,
int,
int,
DepartmentRankLink,
DepartmentRankLink);
voidinput(FILE*,EventRankLink,EventRankLink,int,int);
voidmodify(EventRankLink,EventRankLink);
voidsearch(DepartmentRankLink,
DepartmentRankLink,
DepartmentRankLink,
EventRankLink,
EventRankLink);
voidinitManEventLink(int,EventRankLink&);
voidinitWomanEventLink(int,EventRankLink&);
voidinitDepartmentLink(int,DepartmentRankLink&);
voidinputData(EventRankLink,int);
voidwriteToFile(FILE*,EventRankLink,EventRankLink);
voidreadFromFile(FILE*,EventRankLink,EventRankLink);
voidrank(FILE*,
EventRankLink,
EventRankLink,
DepartmentRankLink,
DepartmentRankLink,
DepartmentRankLink);
voidrankDepartment(EventRankLink,DepartmentRankLink);
voidrankDepartmentAll(EventRankLinkmanEventRankLink,
EventRankLinkwomanEventRankLink,
DepartmentRankLinkdepartmentRankLink);
voidinitUnranked(EventRankLink,DepartmentRankLink);
voidshow(DepartmentRankLink);
voidenterChosen(int,EventRankLink,EventRankLink);
voidmodifyEvent(EventRankNode*);
voidshowOneEvent(EventRankNode*);
voidrelease(EventRankLink,
EventRankLink,
DepartmentRankLink,
DepartmentRankLink,
DepartmentRankLink);
//程序开始于此
intmain(){
//系统执行过程中需要的变量
intdepartmentAmount=0;//院系数量
intmanEventAmount=0;//男子项目总数
intwomanEventAmount=0;//女子项目总数
intoperateOrder=1;//选择操作序号
FILE*rankFile=NULL;//存放排名情况的文件
EventRankLinkmanRankLink=NULL;//存放男子项目排名情况
EventRankLinkwomanRankLink=NULL;//存放女子项目排名情况
DepartmentRankLinkdepartmentRankLink=NULL;//存放院系排名情况
DepartmentRankLinkdepartmentManRankLink=NULL;//存放男团总分排名
DepartmentRankLinkdepartmentWomanRankLink=NULL;//存放女团总分排名
cout<<"欢迎来到运动会成绩数据库系统"< initSystem(departmentAmount, manEventAmount, womanEventAmount, manRankLink, womanRankLink, departmentRankLink, departmentManRankLink, departmentWomanRankLink); while(operateOrder){ operateOrder=operateChoose(); doChosen(operateOrder, rankFile, manRankLink, womanRankLink, departmentRankLink, manEventAmount, womanEventAmount, departmentManRankLink, departmentWomanRankLink); system("cls"); } release(manRankLink, womanRankLink, departmentManRankLink, departmentWomanRankLink, departmentRankLink); cout<<"欢迎使用\n"; return0; } //系统初始化 voidinitSystem(int&departmentAmount, int&manEventAmount, int&womanEventAmount, EventRankLink&manRankLink, EventRankLink&womanRankLink, DepartmentRankLink&departmentRankLink, DepartmentRankLink&departmentManRankLink, DepartmentRankLink&departmentWomanRankLink){ cout<<"请输入参加运动会的院系数: "; cin>>departmentAmount; cout<<"请输入男子项目数: "; cin>>manEventAmount; cout<<"请输入女子项目数: "; cin>>womanEventAmount; system("cls"); initManEventLink(manEventAmount,manRankLink); initWomanEventLink(womanEventAmount,womanRankLink); initDepartmentLink(departmentAmount,departmentRankLink); initDepartmentLink(departmentAmount,departmentManRankLink); initDepartmentLink(departmentAmount,departmentWomanRankLink); } //选择一下功能 intoperateChoose(){ intitem; while(true){ //功能菜单 cout<<"请在以下功能中选择\n" <<"1.输入信息\n" <<"2.修改信息\n" <<"3.查询信息\n" <<"4.信息排序\n" <<"5.退出\n"; //输入选择的功能 cin>>item; switch(item){ case1: system("cls");return1; case2: system("cls");return2; case3: system("cls");return3; case4: system("cls");return4; case5: system("cls");return0; default: cout<<"输入错误"< system("pause"); //清屏以便重新输入 system("cls"); } } } //进行所选择的功能 voiddoChosen(intoperateOrder, FILE*rankFile, EventRankLinkmanRankLink, EventRankLinkwomanRankLink, DepartmentRankLinkdepartmentRankLink, intmanEventAmount, intwomanEventAmount, DepartmentRankLinkdepartmentManRankLink, DepartmentRankLinkdepartmentWomanRankLink){ //按选择进入不同功能的函数 switch(operateOrder){ case1: input(rankFile, manRankLink, womanRankLink, manEventAmount, womanEventAmount);break; case2: modify(manRankLink,womanRankLink);break; case3: search(departmentManRankLink, departmentWomanRankLink, departmentRankLink, manRankLink, womanRankLink);break; case4: rank(rankFile, manRankLink, womanRankLink, departmentRankLink, departmentManRankLink, departmentWomanRankLink);break; default: break; } } //输入数据 voidinput(FILE*inputFile, EventRankLinkmanRankLink, EventRankLinkwomanRankLink, intmanEventAmount, intwomanEventAmount){ inputFile=fopen("rank.bin","ab+"); if(inputFile==NULL){ cout<<"文件打开错误"< system("pause"); return; } //文件成功打开 cout<<"输入男子项目排名"< inputData(manRankLink,manEventAmount); cout<<"输入女子项目排名"< inputData(womanRankLink,womanEventAmount); writeToFile(inputFile,manRankLink,womanRankLink); fclose(inputFile); } //男子项目链表初始化 voidinitManEventLink(intmanEventAmount,EventRankLink&manRankLink){ EventRankNode*s; s=(EventRankNode*)malloc(sizeof(EventRankNode)); s->next=manRankLink; manRankLink=s; for(inti=0;i s=(EventRankNode*)malloc(sizeof(EventRankNode)); //初始化男子项目的所有数据 s->first.score=0; s->second.score=0; s->third.score=0; s->first.sex='m'; s->second.sex='m'; s->third.sex='m'; s->next=manRankLink->next; manRankLink->next=s; } } //女子项目链表初始化 voidinitWomanEventLink(intwomanEventAmount,EventRankLink&womanRankLink){ EventRankNode*s; s=(EventRankNode*)malloc(sizeof(EventRankNode)); s->next=womanRankLink; womanRankLink=s; for(inti=0;i s=(EventRankNode*)malloc(sizeof(EventRankNode)); //初始化女子项目的所有数据 s->first.score=0; s->second.score=0; s->third.score=0; s->first.sex='w'; s->second.sex='w'; s->third.sex='w'; s->next=womanRankLink->next; womanRankLink->next=s; } } //院系排名初始化 voidinitDepartmentLink(intdepartmentAmount,DepartmentRankLink&departmentRankLink){ DepartmentRankNode*s; s=(DepartmentRankNode*)malloc(sizeof(DepartmentRankNode)); s->next=departmentRankLink; departmentRankLink=s; for(inti=0;i s=(DepartmentRankNode*)malloc(sizeof(DepartmentRankNode)); strcpy(s->department,"xx"); //初始化院系总分数 s->score=0; s->next=departmentRankLink->next; departmentRankLink->next=s; } } //输入数据到内存 voidinputData(EventRankLinkrankLink,intEventAmount){ EventRankNode*s=rankLink->next; for(inti=0;i cout<<"第"< cin>>s->event; cout<<"\n名次院系"< cout<<"1"; cin>>s->first.department; cout<<"2"; cin>>s->second.department; cout<<"3"; cin>>s->third.department; s->first.score=10; s->second.score=5; s->third.score=2; s=s->next; system("cls"); } } //数据写入文件 voidwriteToFile(FILE*writeFile,EventRankLinkmanRankLink,EventRankLinkwomanRankLink){ EventRankNode*s=manRankLink->next; while(s){ fwrite(s,sizeof(EventRankNode)-sizeof(EventRankNode*),1,writeFile); s=s->next; } s=womanRankLink->next; while(s){ fwrite(s,sizeof(EventRankNode)-sizeof(EventRankNode*),1,writeFile); s=s->next; } } //排序 voidrank(FILE*readFile, EventRankLinkmanRankLink, EventRankLinkwomanRankLink, DepartmentRankLinkdepartmentRankLink, DepartmentRankLinkdepartmentManRankLink, DepartmentRankLinkdepartmentWomanRankLink){ readFromFile(readFile,manRankLink,womanRankLink); //分成三项进行排序 rankDepartment(manRankLink,departmentManRankLink); rankDepartment(womanRankLink,departmentWomanRankLink); rankDepartmentAll(manRankLink, womanRankLink, departmentRankLink); cout<<"男子团体排名"< show(departmentManRankLink); cout<<"\n女子团体排名"< show(departmentWomanRankLink); cout<<"\n全院排名"< show(departme
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 运动会 数据管理 系统 doc