ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:294.61KB ,
资源ID:1252566      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/1252566.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构排队购票问题正文终稿.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构排队购票问题正文终稿.docx

1、数据结构排队购票问题正文终稿东北大学信息科学与工程学院数据结构课程设计报告题目 排队购票问题课题组长 侯永跃 课题组成员 林浩成 李博然 韩硕专业名称 计算机科学与技术班级 计1307指导教师 杨雷 2015 年 1月课程设计任务书题目:排队购票问题问题描述:欧洲杯足球赛正在激烈进行。决赛门票处于热卖。为使门票公平、安全的销售,售票处决定采用如下售票规则:(1)购票者到购票处领取一个随机编号。(2)购票者按随机编号从小到大排序。(3)随机编号处于最小编号与最大编号之间的购票者,可直接到窗口排队购票。(4)售票窗口空闲时随机发出0或1指令,指令为0时,最小编号者到窗口购票,指令为1时,最大编号者

2、到窗口购票。设计要求:设计算法实现按上述规则的排队售票程序。(1)采用STL的双端队列等数据结构。(2)实现STL的双端队列类deque。(3)尝试采用不同数据结构的多种解法。指导教师签字:2015年1月4日目录1 课题概述 51.1 课题任务 51.2 课题原理 51.3 相关知识 52 需求分析 62.1 课题调研 62.2 用户需求分析 63 方案设计 73.1 总体功能设计 73.2 数据结构设计 73.3 函数原型设计 73.4 主算法设计 73.5 用户界面设计 74 方案实现 94.1 开发环境与工具 94.2 程序设计关键技术 94.3 个人设计实现 94.3.1 侯永跃设计实

3、现 94.3.2 李博然设计实现 124.3.3 林浩成设计实现 134.3.4 韩硕设计实现 135 测试与调试 155.1 个人测试 155.1.1 侯永跃测试 155.1.2 李博然测试 155.1.3 林浩成测试 165.2 组装与系统测试 175.3 系统运行 186 课题总结 216.1 课题评价 216.2 个人设计小结 216.2.1 侯永跃设计小结 216.2.2 李博然设计小结 216.2.3 林浩成设计小结 21 6.2.4 韩硕设计小结 217 附录A 课题任务分工 A-1 课题程序设计分工 22A-2 课题报告分工 23 附录B 课题设计文档(光盘) 附B-1课程设计

4、报告(电子版) B-2源程序代码(*.H,*.CPP) 24B-3工程与可执行文件 附 1 课题概述1.1 课题任务欧洲杯足球赛正在激烈进行。决赛门票处于热卖。为使门票公平、安全的销售,售票处决定采用如下售票规则:(1)购票者到购票处领取一个随机编号。(2)购票者按随机编号从小到大排序。(3)随机编号处于最小编号与最大编号之间的购票者,可直接到窗口排队购票。(4)售票窗口空闲时随机发出0或1指令,指令为0时,最小编号者到窗口购票,指令为1时,最大编号者到窗口购票。 要求:设计算法实现按上述规则的排队售票程序。(1)采用STL的双端队列等数据结构。(2)实现STL的双端队列类deque。(3)尝

5、试采用不同数据结构的多种解法。1.2 课题原理读取文件中的字符串,统计串中各字符出现的次数,成为权值,之后构建最优二叉树进行编码。再将串中字符与编码匹配,输出编码字符串,之后每八位用底层字符进行压缩。每次有观众领取编号,利用随机数输出一个1100之间随机的一个数。按从小到大的顺序插入双端队列,售票窗口随机发出0或1指令,指令为0时,最小编号出队列,指令为1时,最大编号出队列。1.3 相关知识 1.STL的双端队列。利用STL的双端队列deque类,实现随机编号的入队列、出队列。2.随机数的生成。通过随机数的生成,实现给购票者分配一个随机编号、售票窗口发出随机指令等操作。2 需求分析2.1 课题

6、调研: 1.为购票者分配随机编号(范围定为1-100)。 2.将分配到的编号插入队列,使队列中的元素顺序为从小到大。3.查看队列。4.随机发出指令0或1。0时,移出最小编号;1时,移出最大编号。2.2 用户需求分析:1.随机分配给购票者编号。2.能够从分配出的编号中选出最小编号和最大编号。3.随机给出0或1指令。3 方案设计3.1 总体功能设计:本程序主要实现三个功能:为购票者分配随机编号,售票窗口发出随机指令,查看正在队列中的编号。为购票者分配编号需要用到随机函数,分配完毕之后插入队列。将随机数依次与队列元素比较,找到合适的“位置”后插入到指针后面3.2 数据结构设计:本程序使用STL的双端

7、队列类deque。主要涉及操作有push_front()、push_back()、insert()、begin()、end()、pop_front()、pop_back()。3.3 函数原型设计:delete_dequenum(intdeq &ideq, int ran1)实现指令的刷新,提醒当次排号购票deque_num(intdeq &ideq, int num)实现插入元素位置查找和队列元素的增添show_deque(intdeq &ideq):用于输出正在队列中的编号,若队列为空,则输出无人排队。show_num():用于为购票者分配编号,编号为1-100之间的随机数。show_com

8、mand(intdeq &ideq):用于显示售票窗口指令。menu_back(intdeq &ideq, int &num, char cmd),menu():主菜单。3.4 主算法设计 :随机数的生成:使用srand()提供种子数,再使用rand()函数生成随机数。队列的操作部分:查找、增添、删除界面部分:随机数和队列的显示3.5 用户界面设计:主菜单:分配编号:查看队列:输出指令:4 方案实现4.1 开发环境与工具: 开发环境:Windows操作系统 开发工具:VC+6.04.2 程序设计的关键技术: STL的双端队列结构。4.3 个人设计实现:4.3.1 侯永跃设计实现:主要负责主界面

9、的设计,随机编号的生成。void show_deque(intdeq &ideq) /显示正在排队的购票者的编号 system(cls); cout endl endl; cout *; cout * 购票系统 *; cout *; if (ideq.empty() cout t现在没有人排队。 endl; else cout t当前正在排队中的编号有:; copy(ideq.begin(),ideq.end(), screen);/输出队列ideq中的元素,从 /begin到end cout endl t; system(pause);int show_num() system(cls);

10、srand(unsigned)time(NULL); int rnum=rand() % 100 + 1; /生成随机数,范围1-100 numii=rnum; for(int j=0;jii;j+) if(rnum=numii) rnum=rand() % 100 + 1; ii+; cout endl endl; cout *; cout * 购票系统 *; cout *; cout t您的编号为: rnum endl; cout endl t; /cout t按Esc键退出. endl; system(pause); return rnum;void show_command(intde

11、q &ideq)/输出售票窗口的指令。 ran = rand() % 2; system(cls); cout endl endl; cout *; cout * 购票系统 *; cout *; cout -; cout | ran |; cout -; if (!ideq.empty() if (ran = 0) cout t请编号 ideq.front() 的乘客到窗口购票. endl; else if (ran = 1) cout t请编号 ideq.back() 的乘客到窗口购票. endl; delete_dequenum(ideq, ran); /将该编号移出队列 else cou

12、t t当前窗口没有人排队. endl; cout t; system(pause);void menu_back(intdeq &ideq, int &num, char cmd) /主菜单选项的处理 if (cmd = n | cmd = N) num = show_num(); deque_num(ideq, num); else if (cmd = l | cmd = L) show_deque(ideq); else if (cmd = r | cmd = R) show_command(ideq); int main() char cmd; int num; intdeq ideq; srand(time(0); whi

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1