数据结构排队购票问题正文终稿Word文档格式.docx
- 文档编号:14170577
- 上传时间:2022-10-19
- 格式:DOCX
- 页数:29
- 大小:294.61KB
数据结构排队购票问题正文终稿Word文档格式.docx
《数据结构排队购票问题正文终稿Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构排队购票问题正文终稿Word文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
设计要求:
设计算法实现按上述规则的排队售票程序。
(1)采用STL的双端队列等数据结构。
(2)实现STL的双端队列类deque。
(3)尝试采用不同数据结构的多种解法。
指导教师签字:
2015年1月4日
目录
1课题概述5
1.1课题任务5
1.2课题原理5
1.3相关知识5
2需求分析6
2.1课题调研6
2.2用户需求分析6
3方案设计7
3.1总体功能设计7
3.2数据结构设计7
3.3函数原型设计7
3.4主算法设计7
3.5用户界面设计7
4方案实现9
4.1开发环境与工具9
4.2程序设计关键技术9
4.3个人设计实现9
4.3.1侯永跃设计实现9
4.3.2李博然设计实现12
4.3.3林浩成设计实现13
4.3.4韩硕设计实现13
5测试与调试15
5.1个人测试15
5.1.1侯永跃测试15
5.1.2李博然测试15
5.1.3林浩成测试16
5.2组装与系统测试17
5.3系统运行18
6课题总结21
6.1课题评价21
6.2个人设计小结21
6.2.1侯永跃设计小结21
6.2.2李博然设计小结21
6.2.3林浩成设计小结21
6.2.4韩硕设计小结21
7附录A课题任务分工
A-1课题程序设计分工22
A-2课题报告分工23
附录B课题设计文档(光盘)附
B-1课程设计报告(电子版)
B-2源程序代码(*.H,*.CPP)24
B-3工程与可执行文件附
1课题概述
1.1课题任务
要求:
1.2课题原理
读取文件中的字符串,统计串中各字符出现的次数,成为权值,之后构建最优二叉树进行编码。
再将串中字符与编码匹配,输出编码字符串,之后每八位用底层字符进行压缩。
每次有观众领取编号,利用随机数输出一个1~100之间随机的一个数。
按从小到大的顺序插入双端队列,售票窗口随机发出0或1指令,指令为0时,最小编号出队列,指令为1时,最大编号出队列。
1.3相关知识
1.STL的双端队列。
利用STL的双端队列deque类,实现随机编号的入队列、出队列。
2.随机数的生成。
通过随机数的生成,实现给购票者分配一个随机编号、售票窗口发出随机指令等操作。
2需求分析
2.1课题调研:
1.为购票者分配随机编号(范围定为1-100)。
2.将分配到的编号插入队列,使队列中的元素顺序为从小到大。
3.查看队列。
4.随机发出指令0或1。
0时,移出最小编号;
1时,移出最大编号。
2.2用户需求分析:
1.随机分配给购票者编号。
2.能够从分配出的编号中选出最小编号和最大编号。
3.随机给出0或1指令。
3方案设计
3.1总体功能设计:
本程序主要实现三个功能:
为购票者分配随机编号,售票窗口发出随机指令,查看正在队列中的编号。
为购票者分配编号需要用到随机函数,分配完毕之后插入队列。
将随机数依次与队列元素比较,找到合适的“位置”后插入到指针后面
3.2数据结构设计:
本程序使用STL的双端队列类deque。
主要涉及操作有push_front()、push_back()、insert()、begin()、end()、pop_front()、pop_back()。
3.3函数原型设计:
delete_dequenum(intdeq&
ideq,intran1)实现指令的刷新,提醒当次排号购票
deque_num(intdeq&
ideq,intnum)实现插入元素位置查找和队列元素的增添
show_deque(intdeq&
ideq):
用于输出正在队列中的编号,若队列为空,则输出无人排队。
show_num():
用于为购票者分配编号,编号为1-100之间的随机数。
show_command(intdeq&
用于显示售票窗口指令。
menu_back(intdeq&
ideq,int&
num,charcmd),menu():
主菜单。
3.4主算法设计:
随机数的生成:
使用srand()提供种子数,再使用rand()函数生成随机数。
队列的操作部分:
查找、增添、删除
界面部分:
随机数和队列的显示
3.5用户界面设计:
主菜单:
分配编号:
查看队列:
输出指令:
4方案实现
4.1开发环境与工具:
开发环境:
Windows操作系统
开发工具:
VC++6.0
4.2程序设计的关键技术:
STL的双端队列结构。
4.3个人设计实现:
4.3.1侯永跃设计实现:
主要负责主界面的设计,随机编号的生成。
voidshow_deque(intdeq&
ideq)//显示正在排队的购票者的编号
{
system("
cls"
);
cout<
<
endl<
endl;
"
********************************************************************************"
;
*购票系统*"
if(ideq.empty())
cout<
\t现在没有人排队。
"
<
else
{
\t当前正在排队中的编号有:
copy(ideq.begin(),ideq.end(),screen);
//输出队列ideq中的元素,从
}//begin到end
\t"
pause"
}
intshow_num()
srand((unsigned)time(NULL));
intrnum=rand()%100+1;
//生成随机数,范围1-100
num[ii]=rnum;
for(intj=0;
j<
ii;
j++)
if(rnum==num[ii])
rnum=rand()%100+1;
}
ii++;
\t您的编号为:
rnum<
//cout<
\t按Esc键退出."
returnrnum;
voidshow_command(intdeq&
ideq)//输出售票窗口的指令。
ran=rand()%2;
--------------------------------------------------------------------------------"
|"
ran<
|"
if(!
ideq.empty())
if(ran==0)
\t请编号"
ideq.front()<
的乘客到窗口购票."
elseif(ran==1)
ideq.back()<
delete_dequenum(ideq,ran);
//将该编号移出队列
\t当前窗口没有人排队."
voidmenu_back(intdeq&
num,charcmd)//主菜单选项的处理
if(cmd=='
n'
||cmd=='
N'
)
num=show_num();
deque_num(ideq,num);
elseif(cmd=='
l'
L'
show_deque(ideq);
r'
R'
show_command(ideq);
intmain()
charcmd;
intnum;
intdeqideq;
srand(time(0));
whi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 排队 购票 问题 正文