《C++程序设计》课程设计说明书比赛参赛选手管理系统.docx

上传人:b****1 文档编号:13774005 上传时间:2023-06-17 格式:DOCX 页数:26 大小:71.60KB
下载 相关 举报
《C++程序设计》课程设计说明书比赛参赛选手管理系统.docx_第1页
第1页 / 共26页
《C++程序设计》课程设计说明书比赛参赛选手管理系统.docx_第2页
第2页 / 共26页
《C++程序设计》课程设计说明书比赛参赛选手管理系统.docx_第3页
第3页 / 共26页
《C++程序设计》课程设计说明书比赛参赛选手管理系统.docx_第4页
第4页 / 共26页
《C++程序设计》课程设计说明书比赛参赛选手管理系统.docx_第5页
第5页 / 共26页
《C++程序设计》课程设计说明书比赛参赛选手管理系统.docx_第6页
第6页 / 共26页
《C++程序设计》课程设计说明书比赛参赛选手管理系统.docx_第7页
第7页 / 共26页
《C++程序设计》课程设计说明书比赛参赛选手管理系统.docx_第8页
第8页 / 共26页
《C++程序设计》课程设计说明书比赛参赛选手管理系统.docx_第9页
第9页 / 共26页
《C++程序设计》课程设计说明书比赛参赛选手管理系统.docx_第10页
第10页 / 共26页
《C++程序设计》课程设计说明书比赛参赛选手管理系统.docx_第11页
第11页 / 共26页
《C++程序设计》课程设计说明书比赛参赛选手管理系统.docx_第12页
第12页 / 共26页
《C++程序设计》课程设计说明书比赛参赛选手管理系统.docx_第13页
第13页 / 共26页
《C++程序设计》课程设计说明书比赛参赛选手管理系统.docx_第14页
第14页 / 共26页
《C++程序设计》课程设计说明书比赛参赛选手管理系统.docx_第15页
第15页 / 共26页
《C++程序设计》课程设计说明书比赛参赛选手管理系统.docx_第16页
第16页 / 共26页
《C++程序设计》课程设计说明书比赛参赛选手管理系统.docx_第17页
第17页 / 共26页
《C++程序设计》课程设计说明书比赛参赛选手管理系统.docx_第18页
第18页 / 共26页
《C++程序设计》课程设计说明书比赛参赛选手管理系统.docx_第19页
第19页 / 共26页
《C++程序设计》课程设计说明书比赛参赛选手管理系统.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

《C++程序设计》课程设计说明书比赛参赛选手管理系统.docx

《《C++程序设计》课程设计说明书比赛参赛选手管理系统.docx》由会员分享,可在线阅读,更多相关《《C++程序设计》课程设计说明书比赛参赛选手管理系统.docx(26页珍藏版)》请在冰点文库上搜索。

《C++程序设计》课程设计说明书比赛参赛选手管理系统.docx

《C++程序设计》课程设计说明书比赛参赛选手管理系统

《C++程序设计》课程设计说明书

题目:

比赛参赛选手管理系统

学生姓名:

学号:

专业:

电子信息工程

班级:

信息09—2

指导老师:

内蒙古科技大学课程设计任务书

课程名称

C++语言课程设计

设计题目

比赛参赛选手管理系统

指导教师

时间

2011.6.13~2011.6.24

一、教学要求

1.巩固和加深学生对C++语言课程的基本知识的理解和掌握

2.掌握C++语言编程和程序调试的基本技能

3.利用C++语言进行基本的软件设计

4.掌握书写程序设计说明文档的能力

5.提高运用C++语言解决实际问题的能力

二、设计资料及参数

每个学生在教师提供的课程设计题目中任意选择一题,独立完成,可根据设计内容适当修改题目名称。

**比赛参赛选手管理系统

定义人员基类,包含选手的基本数据和基本属性;

要求至少设计以下各功能模块:

v输入记录

v查询功能

v排序

v显示信息

三、设计要求及成果

1.分析课程设计题目的要求

2.写出详细设计说明

3.编写程序代码,调试程序使其能正确运行

4.设计完成的软件要便于操作和使用

4.设计完成后提交课程设计报告

四、进度安排

资料查阅与讨论(1天)

系统分析(2天)

系统的开发与测试(5天)

编写课程设计说明书和验收(2天)

五、评分标准

1.根据平时上机考勤、表现和进度,教师将每天点名和检查

2.根据课程设计完成情况,必须有可运行的软件。

3.根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。

六、建议参考资料

1.《C++面向对象程序设计》,吴敏、杨国林主编,内蒙古大学出版社

2.《C++语言程序设计(第三版)》,郑莉,清华大学出版社

比赛参赛选手管理系统

摘要

C++语言是目前公认的热门编程语言之一。

C++是在C语言基础上发展演变而来的一种面向对象程序设计语言。

它既支持面向过程的程序设计方法,也支持面向对象的程序设计方法。

当今,C++语言在社会的各个领域发挥着越来越重要的作用。

参赛选手系统的设计正是C++用于生活中的一项应用。

参赛选手管理系统能方便用户快捷处理选手的信息,得到想要的数据并能将选手的信息以文档方式保存。

此系统的主要管理的信息有:

选手的姓名,编号和三项赛事的成绩。

系统的主要功能有选手信息的添加、修改、显示,能对选手成绩按编号或成绩进行排序,可以根据用户的要求按姓名,编号查询选手的信息,保存信息到文件以及从文件中读取信息等功能。

 

第一章问题描述

建立一套比赛参赛选手管理系统。

定义人员基类(competitor),包含选手的基本数据和基本属性,实现以下各功能:

输入记录:

选手信息数据要以文件的形式保存,能实现选手信息数据的维护。

此模块包括子模块有:

增加选手信息、修改选手信息。

查询功能:

查询时可实现按姓名查询、按编号查询、成绩查询

排序:

能对用户指定的任意项目名,按成绩由低到高排列选手数据并显示排序结果。

显示信息:

显示选手的编号、项目、成绩等信息。

设计要求及成果

1.分析课程设计题目的要求

2.写出详细设计说明

3.编写程序代码,调试程序使其能正确运行

4.设计完成的软件要便于操作和使用

 

第二章问题分析

方案说明:

参赛选手管理系统是用面向对象的方法设计,由于数组的存放是连续的,而单链表是非连续存放的,是动态分配内存空间,因此此系统采用单链表来完成。

各个功能模块的实现主要转变到对单链表的遍历,添加和删除结点。

系统功能模块的划分:

在主界面中包括“增加选手修改选手查询选手信息排序保存信息读取信息退出”等全部的功能,之所以设计这么一个主界面,一是因为能使用户对程序操作的流程更加清楚简明,二是保证了用户同时只能对一个文件进行操作的系统要求,保证了系统不会发生打开文件紊乱或者出现致命错误。

功能模板的划分

显示菜单功能模板

1……增加选手功能

2……修改选手功能

3……查询选手信息

4……排序功能

5……保存信息

6……读取信息

7……退出

 

第三章数据模型

类的设计

定义参赛选手competitor类,包含成员变量:

姓名name,编号num,短跑、跳高、跳远成绩x,y,z。

classcompetitor//选手

public:

competitor*next;

public:

stringname;//姓名

longnum;//编号

intx,y,z;//短跑,跳高,跳远

成员函数:

voidsadd();//添加

voidsamend();//修改

voidssearch();//查询

voidstaxis();//排序

voidssave();//保存

voidsload();//读取

voidpxh();

voidpsx();

voidpyw();

voidpyy();

 

第四章设计流程图

 

图4.1流程图

第五章程序代码

#include

#include

#include

#include

usingnamespacestd;

classcompetitor

{

public:

competitor*next;

public:

stringname;//姓名

longnum;//编号

floatx,y,z;//短跑,跳高,跳远

voidplay(){cout<

"<

"<

"<

competitor(stringsname,longsnum,floatsx,floatsy,floatsz)

{

name=sname;

num=snum;

x=sx;

y=sy;

z=sz;

}

};

classcla

{

public:

cla()//构造函数

{

comp=0;

sload();

}

~cla()//析构函数

{

competitor*p;

p=comp;

while(p)

{

p=p->next;

deletecomp;

comp=p;

}

comp=0;

}

voidsadd();//添加

voidsamend();//修改

voidssearch();//查询

voidstaxis();//排序

voidssave();//保存

voidsload();//读取

voidpxh();

voidpsx();

voidpyw();

voidpyy();

private:

competitor*comp;//头接点

};

voidcla:

:

sadd()//添加

{

competitor*q;

stringname1;

longnum1;

floatx1,y1,z1;

system("cls");

cout<<"\n**增加的选手**\n"<

cout<<"请输入选手的(中间用空格间隔)"<

cout<<"姓名编号短跑成绩跳高成绩跳远成绩"<

cin>>name1>>num1>>x1>>y1>>z1;

q=newcompetitor(name1,num1,x1,y1,z1);

q->next=0;

if(comp)

{

competitor*t;

t=comp;

if(t->num==num1)

{

cout<<"编号已存在,请重新输入"<

return;

}

while(t->next)

{

if(t->num==num1)

{

cout<<"编号已存在,请重新输入"<

return;

}

t=t->next;

}

t->next=q;

}

else

{

comp=q;

}

cout<<"输入完毕"<

}

voidcla:

:

samend()//修改

{

system("cls");

longnum1;

cout<<"\n**修改选手信息**\n";

cout<<"输入要修改选手的编号";

cin>>num1;//查找要修改的结点

competitor*p1,*p2;

p1=comp;

while(p1)

{

if(p1->num==num1)

break;

else

{

p2=p1;

p1=p1->next;

}

}

if(p1!

=NULL)

{

cout<<"编号是"<

"<

cout<<"姓名"<name<<"短跑"<x<<"跳高"<y<<"跳远"<z<

cout<<"请输入修改后的信息:

姓名短跑成绩跳高";

cout<<"成绩跳远成绩"<

cin>>p1->name>>p1->x>>p1->y>>p1->z;

cout<<"修改成功"<

}

else//未找到接点

cout<<"未找到!

\n";

}

voidcla:

:

ssearch()//查询

{

system("cls");

cout<<"\n**查询选手信息**\n"<

cout<<"请输入查询方式:

"<

cout<<"1.按编号查询"<

cout<<"2.按姓名查询"<

cout<<"3.返回"<

charc;cin>>c;

switch(c)

{

case'1':

{

longnum1;

cout<<"要查询的编号"<

cin>>num1;//查找要查询的结点

competitor*p1,*p2;

p1=comp;

while(p1)

{

if(p1->num==num1)

break;

else

{

p2=p1;

p1=p1->next;

}

}

if(p1!

=NULL)

{

cout<<"编号是"<

cout<<"姓名:

"<name<<"短跑:

"<x<<"跳高:

"<y<<"跳远:

"<z<

cout<<"查询完毕...";

}

else//未找到接点

cout<<"未找到!

\n";

break;

}

case'2':

{

stringname1;

cout<<"要查询的选手姓名"<

cin>>name1;//查找要查询的结点

competitor*p1,*p2;

p1=comp;

while(p1)

{

if(p1->name==name1)

break;

else

{

p2=p1;

p1=p1->next;

}

}

if(p1!

=NULL)

{

cout<

cout<<"编号:

"<num<<"短跑:

"<x<<"C++:

"<y<<"跳远:

"<z<

cout<<"查询完毕...";

}

else//未找到接点

cout<<"未找到!

\n";

break;

}

case'3':

return;

}

}

voidcla:

:

pxh()//按编号排序

{

competitor*p1,*p2;

intn;

p1=comp;

n=1;

while(p1->next)

{n++;p1=p1->next;}

cout<<"共有"<

inti;

p1=comp;

for(i=1;i

{

p1=comp;

if(p1->num>p1->next->num)//如果头结点大于第二个的

{

p2=p1->next;

p1->next=p1->next->next;

p2->next=p1;//头结点交换

comp=p2;

}

p1=comp;

while(p1->next->next)//中间的交换

{

p2=p1;

p1=p1->next;

if(p1->num>p1->next->num)

{

p2->next=p1->next;

p1->next=p1->next->next;

p2->next->next=p1;

p1=p2->next;//交换

}

}

}

p1=comp;

do

{

p1->play();

p1=p1->next;

}while(p1);

}

voidcla:

:

psx()//按短跑成绩排序

{

competitor*p1,*p2;

intn;

p1=comp;

n=1;

while(p1->next)

{n++;p1=p1->next;}

cout<<"共有"<

inti;

p1=comp;

for(i=1;i

{

p1=comp;

if(p1->x>p1->next->x)//如果头结点大于第二个的

{

p2=p1->next;

p1->next=p1->next->next;

p2->next=p1;//头结点交换

comp=p2;

}

p1=comp;

while(p1->next->next)//中间的交换

{

p2=p1;

p1=p1->next;

if(p1->x>p1->next->x)

{

p2->next=p1->next;

p1->next=p1->next->next;

p2->next->next=p1;

p1=p2->next;//交换

}

}

}

p1=comp;

do

{

p1->play();

p1=p1->next;

}while(p1);

}

voidcla:

:

pyw()//按跳高成绩排序

{

competitor*p1,*p2;

intn;

p1=comp;

n=1;

while(p1->next)

{n++;p1=p1->next;}

cout<<"共有"<

inti;

p1=comp;

for(i=1;i

{

p1=comp;

if(p1->y>p1->next->y)//如果头结点大于第二个的

{

p2=p1->next;

p1->next=p1->next->next;

p2->next=p1;//头结点交换

comp=p2;

}

p1=comp;

while(p1->next->next)//中间的交换

{

p2=p1;

p1=p1->next;

if(p1->y>p1->next->y)

{

p2->next=p1->next;

p1->next=p1->next->next;

p2->next->next=p1;

p1=p2->next;//交换

}

}

}

p1=comp;

do

{

p1->play();

p1=p1->next;

}while(p1);

}

voidcla:

:

pyy()//按跳远成绩排序

{

competitor*p1,*p2;

intn;

p1=comp;

n=1;

while(p1->next)

{n++;p1=p1->next;}

cout<<"共有"<

inti;

p1=comp;

for(i=1;i

{

p1=comp;

if(p1->z>p1->next->z)//如果头结点大于第二个的

{

p2=p1->next;

p1->next=p1->next->next;

p2->next=p1;//头结点交换

comp=p2;

}

p1=comp;

while(p1->next->next)//中间的交换

{

p2=p1;

p1=p1->next;

if(p1->z>p1->next->z)

{

p2->next=p1->next;

p1->next=p1->next->next;

p2->next->next=p1;

p1=p2->next;//交换

}

}

}

p1=comp;

do

{

p1->play();

p1=p1->next;

}while(p1);

}

voidcla:

:

staxis()//排序

{

system("cls");

charc;

cout<<"请选择以何种方式排序:

"<

cout<<"1……以编号排序"<

cout<<"2……以短跑成绩排序"<

cout<<"3……以跳高成绩排序"<

cout<<"4……以跳远成绩排序"<

cout<<"5……返回"<

cout<<"请选择(1-5)"<

cin>>c;

switch(c)

{

case'1':

pxh();break;

case'2':

psx();break;

case'3':

pyw();break;

case'4':

pyy();break;

case'5':

return;

}

}

voidcla:

:

ssave()//保存到文件

{

system("cls");charc;

cout<<"\n保存选手信息(将覆盖原文件),是否继续?

[Y/N]:

";cin>>c;

if(toupper(c)!

='Y')return;

ofstreamtfile("date.txt",ios_base:

:

binary);

competitor*p=comp;

while(p)//写入文件

{

tfile<name<<"\t"<num<<"\t"<x<<"\t"<y<<"\t"<z;

tfile<

p=p->next;

}

tfile.close();

cout<<"保存完毕..."<

}

voidcla:

:

sload()//读取

{

competitor*p;

p=comp;

while(p)

{

comp=p->next;

deletep;

p=comp;

}

Ifstreamtfile("date.txt",ios_base:

:

binary);

stringname1;

longnum1;

floatx1,y1,z1;

tfile>>name1>>num1>>x1>>y1>>z1;

while(tfile.good())

{//创建选手接点

competitor*s;

s=comp;

s=newcompetitor(name1,num1,x1,y1,z1);

s->next=0;

if(comp)//若已经存在结点

{

competitor*p2;

p2=comp;

while(p2->next)//查找尾结点

{

p2=p2->next;

}

p2->next=s;//连接

}

else//若不存在结点(表空)

{comp=s;//连接}

tfile>>name1>>num1>>x1>>y1>>z1;

}

tfile.close();

cout<<"\n欢迎使用选手成绩管理系统\n";

}

voidmain()

{

charc;claa;

do

{

cout<<"*************************************\n";

cout<<"1……增加选手\n";

cout<<"2……修改选手\n";

cout<<"3……查询选手信息\n";

cout<<"4……排序\n";

cout<<"5……保存信息\n";

cout<<"6

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2