数据结构课设.docx
- 文档编号:25406834
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:51
- 大小:607.93KB
数据结构课设.docx
《数据结构课设.docx》由会员分享,可在线阅读,更多相关《数据结构课设.docx(51页珍藏版)》请在冰豆网上搜索。
数据结构课设
沈阳工程学院
课程设计
设计题目:
火车票售票管理
系别信息学院班级物联网131
学生姓名向泉流、石雨、陈思思学号25、06、14
指导教师崔妍、代钦职称讲师、讲师
起止日期:
2014年6月22日起——至2014年7月4日止
沈阳工程学院
课程设计任务书
课程设计题目:
火车售票系统
系别信息学院班级数媒131
学生姓名徐培伟金曲文学号2934
指导教师姜柳职称讲师、讲师
课程设计进行地点:
实训F608
任务下达时间:
2015年1月17日
起止日期:
2015年1月19日起——至2015年1月23日止
教研室主任张欣2015年1月17日批准
一、课程设计的原始资料及依据
在现代社会,火车以其安全,舒适以及其服务的周到使愈来愈多的人选择了火车为长距离出行的交通工具,这就使火车公司以及车站的工作量愈来愈大,若仍然使用文件或者人工来管理公司、车站、火车、列班、路线、客户以及售票的信息,那无疑在效率上会大打折扣。
21世纪的今天,信息社会占着主流地位,计算机在各行各业中的运用已经得到普及,自动化、信息化的管理越来越广泛应用于各个领域。
利用计算机来储存和管理公司、车站、火车、列班、车线、客户以及售票的信息成为了首选,在这种情况下,火车订票系统就显得非常重要了。
两个客户名单可分别由线性表和队列实现。
为查找方便,已订票客户的线性表应按客户姓名有序,并且,为插入和删除方便,应以链表作存储结构。
由于预约人数无法预计,队列也应以链表作存储结构。
整个系统需汇总各条路线的情况登录在一张线性表上,由于路线基本不变,可采用顺序存储结构,并按车次有序或按终点站名有序。
每条路线是这张表上的一个记录,包含上述8个域,其中乘员名单域为指向乘员名单链表的头指针,等候替补的客户名单域为分别指向队头和队尾的指针。
队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表。
用队列来进行客户信息的存储。
编辑用户使用菜单,内容包括:
输入列班信息,保存列班信息,读取列班信息,查找列班信息,删除列班信息,订票信息,退票信息以及修改信息。
二、课程设计主要内容及要求
1.列车基本信息管理:
输入所有列班信息。
每条路线所涉及的信息有:
终点站名、车次号、车厢号、开车周日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、座位等级1,2或3)以及等候替补的客户名单(包括姓名、所需的票量)。
2.列车基本信息查询:
按车次号查找,按抵达站查找,按路线查找三种查找方式进行查找。
3.订票管理:
客户对想要购买的票进行订票。
3.退票管理:
将不想要的票进行退票。
三、对课程设计说明书撰写内容、格式、字数的要求
1.课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:
设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、设计小组评语、参考文献等。
一般不应少于3000字。
2.在适当位置配合相应的实验原理图、数据通路图、微程序流程图、实验接线图、微指令代码表等图表进行说明。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
3.设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标。
设计小组评语处注明设计组编号、设计组组长、设计组成员,并由设计组组长给出评语。
4.课程设计说明书手写或打印均可。
手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书写;打印时采用A4纸,页边距均为20mm,正文采用宋体小四号字,行间距18磅。
文中大标题采用黑体小三号字,一级节标题采用黑体四号字,二级节标题采用黑体小四号字,表题与图题采用宋体五号字。
5.课程设计说明书装订顺序为:
封面、任务书、成绩评定表、目录、正文、参考文献。
四、设计完成后应提交成果的种类、数量、质量等方面的要求
1.完成“任务书”中指定的操作功能,运行稳定。
2.课程设计说明书。
五、时间进度安排
顺序
阶段日期
计划完成内容
备注
1
第1天
(12月27日)
阅读资料
2
第2—3天
(12月28日—12月29日)
系统分析设计
3
第4—7天
(12月30日—1月4日)
程序编制、调试及运行
4
第8—9天
(1月5日—1月6日)
成绩评定
5
第10天
(1月7日)
撰写课程设计说明书
六、主要参考资料(文献)
[1]严蔚敏吴伟民.数据结构(C语言版).北京:
清华大学出版社.2007
[2]谭浩强.C程序设计.北京:
清华大学出版社.1999.12
[3]滕国文.数据结构课程设计.北京:
清华大学出版社.2010.09
[4]苏仕华等编著.数据结构课程设计.北京:
机械工业出版社.2005.05
[5]李春葆.数据结构(C语言版)习题与解析.北京:
清华大学出版社.2002..04
沈阳工程学院
程序设计基础课程设计成绩评定表
系(部):
信息学院班级:
数媒131学生姓名:
徐培伟
指导教师评审意见
评价内容
具体要求
权重
评分
加权分
调研
论证
能独立查阅文献,收集资料;能制定课程设计方案和日程安排。
工作能力
态度
工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作,
工作量
按期圆满完成规定的设计任务,工作量饱满,难度适宜。
说明书的质量
说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。
指导教师评审成绩
(加权分合计乘以8)
分
加权分合计
指导教师签名:
年月日
评阅教师评审意见
评价内容
具体要求
权重
评分
加权分
查阅
文献
查阅文献有一定广泛性;有综合归纳资料的能力
工作量
工作量饱满,难度适中。
说明书的质量
说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。
评阅教师评审成绩
(加权分合计乘以4)
分
加权分合计
评阅教师签名:
年月日
答辩小组评审意见
评价内容
具体要求
权重
评分
加权分
学生汇报
汇报准备充分,思路清晰;语言表达准确,概念清楚,论点正确,有层次,有重点,基本上反映了所完成任务的全部内容;时间符合要求。
答辩
思路清晰;回答问题有理论依据,基本概念清楚;主要问题回答准确,深入,有说服力。
答辩小组评审成绩
(加权分合计乘以8)
分
加权分合计
答辩小组教师签名:
年月日
课程设计总评成绩
分
沈阳工程学院
程序设计基础课程设计成绩评定表
系(部):
信息学院班级:
数媒131姓名:
金曲文
指导教师评审意见
评价内容
具体要求
权重
评分
加权分
调研
论证
能独立查阅文献,收集资料;能制定课程设计方案和日程安排。
工作能力
态度
工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作,
工作量
按期圆满完成规定的设计任务,工作量饱满,难度适宜。
说明书的质量
说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。
指导教师评审成绩
(加权分合计乘以8)
分
加权分合计
指导教师签名:
年月日
评阅教师评审意见
评价内容
具体要求
权重
评分
加权分
查阅
文献
查阅文献有一定广泛性;有综合归纳资料的能力
工作量
工作量饱满,难度适中。
说明书的质量
说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。
评阅教师评审成绩
(加权分合计乘以4)
分
加权分合计
评阅教师签名:
年月日
答辩小组评审意见
评价内容
具体要求
权重
评分
加权分
学生汇报
汇报准备充分,思路清晰;语言表达准确,概念清楚,论点正确,有层次,有重点,基本上反映了所完成任务的全部内容;时间符合要求。
答辩
思路清晰;回答问题有理论依据,基本概念清楚;主要问题回答准确,深入,有说服力。
答辩小组评审成绩
(加权分合计乘以8)
分
加权分合计
答辩小组教师签名:
年月日
课程设计总评成绩
分
摘要
时代在进步,科技在发展,这改变了整个世界和人类的生活方式。
同时,这也要求我们新世纪的大学生掌握现代科学技术知识,调整自己的知识结构和能力结构,以适应社会发展的要求,跟上时代的脚步。
新世纪需要具有丰富的现代科学知识,能够独立解决面临的任务,充满活力,又有创新意识的新型人才。
随着各个领域的突飞猛进,计算机也有它卓越的进步。
数据结构不仅为计算机专业工作者所使用,而且为广大计算机应用人员所喜爱和使用。
数据结构是国际上广泛流行的计算机高级语言。
它适合作为系统描述语言,既可以用来编写系统软件,也可以用来编写应用软件。
许多高等学校,不仅在计算机专业开设数据结构课程,而且在非计算机专业也开设了数据结构课程。
学习数据结构已经成为广大计算机应用人员和广大青年学生的迫切要求。
本次数据结构课程设计的题目是火车售票系统。
对于火车售票系统,两个客户名单可分别有线性表和队列实现。
为查找方便,以订票客户已订票客户的线性表应按客户姓名有序,并且,为插入和删除方便,应以链表作存储结构。
由于预约人数无法预计,队列也应以链表作存储结构。
整个系统需汇总各条路线的情况登录在一张线性表上,由于路线基本不变,可采用顺序存储结构,并按车次有序或按终点站名有序。
每条路线是这张表上的一个记录,包含上述8个域,其中乘员名单域为指向乘员名单链表的头指针,等候替补的客户名单域为分别指向队头和队尾的指针。
编辑用户使用菜单,内容包括:
输入列班信息,保存列班信息,读取列班信息,查找列班信息,删除列班信息,订票信息,退票信息以及修改信息。
在为期两周的数据结构课程设计学习中,先要学习数据结构课程的目的掌握数据结构存储的方法,学习会用计算机语言编写程序,以实现所需要处理的任务。
要正确处理算法与语法的关系,算法结构存储是程序的核心、是灵魂,语法是外壳、是工具。
不应把学习重点放在语法规则上,语法是重要的,不掌握语法规则就无法编写出正确的程序。
一定要把重点放在解题的思路上和运用何种存储的方法,通过思考和大量的阅读,来构造一个完整的程序。
数据结构存储的设计直接关系到程序的好坏。
最后,感谢老师在我们程序设计的过程中辛勤的指导和不倦的教诲。
关键词线性表,数组,队列,设计
目录
第一章问题分析2
1.1引言2
1.2背景2
1.3分析2
第二章运行原理和环境4
2.1数据理论4
2.2运行环境5
第三章系统分析与设计9
3.1火车票系统问题分析9
3.2火车票系统功能设计10
第四章系统功能实现16
4.1火车售票系统算法思想16
4.2系统程序代码..16
总结27
致谢28
参考文献29
第一章问题分析
1.1引言
数据结构的教学要求是:
学会分析研究计算机加工的数据结构的特征,以便为应用涉及的数据选择适当的逻辑结构、存储结构及其相应的算法,并初步掌握算法的时间分析和空间分析的技术。
另一方面,本课程的学习过程也是复杂程序设计的训练过程,要求学生编写的程序结构清楚和正确易读,符合软件工程的规范。
在学习中,先要学习程序设计课程的目的掌握设计程序的思路,学习会用计算机语言编写程序,以实现所需要处理的任务。
要正确处理算法与语法的关系,算法是程序的核心、是灵魂,语法是外壳、是工具。
不应把学习重点放在语法规则上,语法是重要的,不掌握语法规则就无法编写出正确的程序。
一定要把重点放在解题的思路上,通过思考和大量的阅读,来构造一个完整的程序。
请记住:
重要的是学会编程,而不是背语法。
程序设计是为了锻炼我们的实际动手能力,在一定程度上,又增加了我们的各方面的知识,特别是一些联系实际的课程设计,它的完成需要自己平时积累的大量知识、并且需要勤于思考的能力和无限的激情。
本次课程设计主要是学习程序设计的方法,进行程序设计的基本训练,大多数的学生应该把精力放在最基本,最常用的内容上,学好基本功。
通过本次课程设计,相信我们一定能加强对数据结构这门课程的学习,尤其在动手实践上会有很大的进步。
1.2背景
在人们日常的火车订票和退票中,有大量的数据和信息需要存储和处理,通常纸质的档案不容易保存和使用,在查询,订票,退票上有很大的困难,浪费大量的时间和人力也不一定能够取得很好的效果,为了方便人们订票,开发一个火车售票系统迫在眉睫。
1.3分析
队列来进行客户信息的存储。
编辑用户使用菜单,内容包括:
列车基本信息管理,列车基本信息查询,订票管理,退票管理。
火车售票系统分为四个大模块,分别为列车基本信息管理,列车基本信息查询,订票管理,退票管理。
①列车基本信息管理
输入火车的车次号。
在循环中,如果火车的车次号不存在的话,创建新结点并依次输入火车的信息,该车次号的信息输入完毕,保存到文件中,结束输入;如果火车的车次号存在的话,重新输入,重复上述过程,单链表创建完毕。
②列车基本信息查询
列车基本信息查询是在已有的火车订票系统中按地点、按车次、按车线查找到火车信息,并将其显示在屏幕上。
通过移动指针找到与输入相同的地点、车次、车线,并将该地点、车次、车线所对应的火车的信息输出。
③订票管理
根据查询功能查找出所要订购的车票信息,输入所要订购的车票信息。
先判断链表是否为空,若为空,显示“没有任何记录”;若不为空,输入车票的数量,看有没有火车票,若没有火车票,输出没有火车票,否则对该结点进行订票操作。
④退票管理
根据查询功能查找出所要退票的车票信息,先判断链表是否为空,若为空,返回主菜单;若不为空,看是否过期,若过期,输出退票失败,否则对该结点进行退票操作。
主函数是程序的入口,采用模块化设计。
通过一定的入口可以进行列车基本信息管理、列车基本信息查询、订票管理、退票管理。
第二章运行原理和环境
2.1数据理论
链表是一种动态存储结构,所占用的存储空间在程序的执行过程中得到,当线性表需要增加一个结点时,要为该结点向系统申请一个存储空间。
当线性表删除一个结点时,要将已删除的结点的存储空间释放,归还给系统。
每个存储结点不仅包含有所存储元素本身的信息(称之为数据域),而且包含所有元素之间逻辑关系的信息,即前驱结点包含有后继结点的地址信息(这称为指针域),这样可以通过前驱结点的指针域方便地找到后继结点的位置,提高数据查找速度。
队列是一种先进后出的线性表,它只允许在表的一端进行插入,而在另一端进行删除元素。
以队列的链式表示和实现为例。
一个链队列需要两个分别指向队头和队尾的指针才能唯一确定。
首先给链队列添加一个头结点,并且令头指针指向头结点。
链队列的操作即为单链表的插入和删除的特殊情况,只是尚需修改尾指针或头指针。
一般情况下,删除队列头元素时仅需修改头结点中的指针,但当队列中最后一个元素被删除后,队列尾指针也丢失了,因此,需要对队尾指针重新赋值(指向头结点)。
火车售票系统应用数据结构的知识有:
链式线性表存储结构和队列。
线性表的链式存储结构的特点:
是用一组任意的存储单元存储线性表的数据元素,结点的一个域表示元素本身,另一个是能指示其后继的指针,用来表示线性表数据元素的逻辑关系。
顺序表的可随机存取特点。
我们将任务分成多个最简化的模块,增强了可读性和简单性,同时为日后的编写,调试,维护提供了极大地方便。
队列的特点是:
它只允许在表的一端进行插入,而在另一端进行删除元素。
在火车售票系统中,我们把列车和客户分别作为一个结点,该结点类型为结构体型,结构体中的域表示列车和客户的属性。
每个结点除了存放属性外,还存放指向后继结点的指针。
列车基本信息管理:
存储是将一个车次信息作为一个结点以链式存储在文件中。
列车基本信息查询:
在已有的火车售票系统中按地点,按车次,按车线查找到列车信息,并将其显示在屏幕上。
订票管理:
在原有的火车售票系统中查找到要订购的车次信息,并将该车次所在的结点输出。
退票管理:
根据查询功能查找出所要退票的车票信息,然后退票处理。
2.2运行环境
本次课设采用MicrosoftVisualC++6.0运行环境。
VC++6.0是Microsoft公司推出的一个基于Windows系统平台、可视化的集成开发环境,它的源程序按C++语言的要求编写,并加入了微软提供的功能强大的MFC(MicrosoftFoundationClass)类库。
MFC中封装了大部分WindowsAPI函数和Windows控件,它包含的功能涉及到整个Windows操作系统。
MFC不仅给用户提供了Windows图形环境下应用程序的框架,而且还提供了创建应用程序的组件,这样,开发人员不必从头设计创建和管理一个标准Windows应用程序所需的程序,而是从一个比较高的起点编程,故节省了大量的时间。
另外,它提供了大量的代码,指导用户编程时实现某些技术和功能。
因此,使用VC++提供的高度可视化的应用程序开发工具和MFC类库,可使应用程序开发变得简单。
①单击“开始”选择“所有程序”,双击点开MicrosoftVisualstudio2010。
如图2-1所示。
图2-1打开MicrosoftVisualStudio2010运行环境
②打开界面如图2-2所示。
图2-2打开MicrosoftVisualStudio2010操作界面
③建立新的工程:
在文件中点击新建->右击选项目->在项目中填写你的工程名(例如15).
图2-3在文件中新建项目
④双击其他语言并选visualc++->选择一个空项目->填写项目名(例如y).
图2-4在visualC++中创建空项目
⑤右击原文件添加新项->点击代码->填写文件名->ok。
图2-5所示。
图2-5在源文件中创建文件
⑥进入编辑界面,开始进行程序编辑。
如图2-6所示。
图2-6编辑界面
第三章系统分析与设计
3.1火车票系统问题分析
本任务要求实现火车售票系统,输入火车基本信息以及客户信息,并将其存入文件中。
根据需要可以进行如下操作:
列车基本信息管理、列车基本信息查询、订票管理、退票管理。
其功能模块图,如图3-1所示
图3-1车票售票系统模块图
3.2火车票系统功能设计
①列车基本信息管理是在火车售票系统中输入列车的基本信息,是订票,退票,查询等操作的基础。
其流程图如图3-2所示。
如图3-2所示
②列车基本信息查询方便旅客快速了解车次信息。
其流程图如图3-3所示。
图3-3列车基本信息查询流程图
③订票管理是在原有的火车售票系统中查找到要订购的车票信息,如果有票,将该车票的发车时间与现在的时间做以比较,若车票的发车时间超过现在的时间,显示已发车;若超过现在的时间,则可以实现订票。
其流程图如图3-4所示。
图3-4订票流程图
④退票管理是在原有的火车订票系统中查找到要退票的车票信息,将该车票的发车时间与现在的时间做以比较,若车票的发车时间超过现在的时间,显示已发车,不能完成退票;若没超过现在的时间,则可以实现退票。
其流程图如图3-5所示。
图3-5退票流程图
⑤有时候在火车售票系统中需要添加车次,其流程图如图3-6所示。
图3-6添加车次流程图
⑥在火车售票系统中需要浏览车次信息,其流程图如图3-7所示。
图3-7浏览车次信息流程图
第四章系统功能实现
4.1火车售票系统算法思想
对于火车售票系统,两个客户名单可分别有线性表和队列实现。
为查找方便,以订票客户已订票客户的线性表应按客户姓名有序,并且,为插入和删除方便,应以链表作存储结构。
由于预约人数无法预计,队列也应以链表作存储结构。
整个系统需汇总各条路线的情况登录在一张线性表上,由于路线基本不变,可采用顺序存储结构,并按车次有序或按终点站名有序。
每条路线是这张表上的一个记录,包含上述8个域,其中乘员名单域为指向乘员名单链表的头指针,等候替补的客户名单域为分别指向队头和队尾的指针。
编辑用户使用菜单,内容包括:
输入列班信息,保存列班信息,读取列班信息,查找列班信息,删除列班信息,订票信息,退票信息以及修改信息。
4.2系统程序代码
①主函数是程序的入口,在主函数里声明变量
intmain()
{
intsel;
BusmanBusAdmin;
while
(1)
{
system("cls");
ShowForm();
cin>>sel;
switch(sel)
{
case1:
BusAdmin.FoundInfo();break;
case2:
BusAdmin.AddInfo();break;
case3:
BusAdmin.ShowInfo();break;
case4:
BusAdmin.SearchInfo();break;
case5:
BusAdmin.SellTicket();break;
case6:
BusAdmin.ExitTicket();break;
case7:
BusAdmin.SaveInfo();break;
case0:
return0;
}
cout< fflush(stdin); cout<<"按任意键返回主菜单: "< getch();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课设