火车票在线订购系统开题报告

火车票在线订购系统开题报告
xx科技大学xx科技学院
本科毕业设计(论文)开题报告题目火车票在线订购系统
系部名称信息工程系
专业班级计算机科学与技术
学生姓名
学号
指导教师
填表时间:年月日
填表说明
1.开题报告作为毕业设计(论文)答辩委员会对学生答辩资格审查的依据材料之一。

2.此报告应在指导教师指导下,由学生在毕业设计(论文)工作前期完成,经指导教师签署意见、相关系主任审查后生效。

3.学生应按照学校统一设计的电子文档标准格式,用A4纸打印。

4.参考文献不少于8篇,其中应有适当的外文资料(一般不少于2篇)。

5.开题报告作为毕业设计(论文)资料,与毕业设计(论文)一同存档。

合集下载

火车订票管理系统开题报告

火车订票管理系统开题报告

毕业论文开题报告
申请课题火车订票管理系统的设计与实现
学号
班级
申请者有全套开题报告、论文、程序、英文翻译联系电话可联系本人
Email : qq:1113121143 参加者 RMB:200 联系电话
Email :
指导教师
申请日期 2015年1月16日
计算机科学与技术学院
填写说明
1. 毕业论文的选题应以专业课的内容为主,可以针对某些基础理论和学术问题进行探讨,也可以结合科技生产和社会生活的实际问题进行研究、开发与设计。

2. 毕业论文一般为一人一题。

如果选题确需多人合作完成一个课题,须由指导老师提出,课题需要多人合作的最多2人,经学院教学委员会审批同意,每个学生必须独立完成其中的一部分工作,并独立撰写各自的毕业论文,在课题名称后面注明其相应的子课题。

多人合作的须在封面上填写参加者的姓名和联系方式。

3. 所有学生的选题经研究确定后,一般不允许中途更改课题。

特殊情况需要更改课题者,须由指导教师调整或更改选题,且填写《毕业设计(论文)课题变动申请表》,经主管领导批准后方可调整或更改。

4. 成果形式一栏填写:论文。

5. 本开题报告最迟应在开始毕业论文开始前六周确定,并上报给指导老师,必须经指导老师和学院批准方才有效,否则无效。

6. 本开题报告使用A4纸张,上、下、左、右页边距均为2.5cm,请不要改变本开题报告页面设置。

所有自己书写的内容请使用楷体。

火车票网上售票系统开题报告

火车票网上售票系统开题报告
[8]Marty hall. Servlet与jsp核心编程(第2版).清华大学出版社
[9]薛军超.MySql网络数据库开发[M].北京:人民邮电出版社
[10]贺平.软件测试教程[M].电子工业出版社
五、指导教师意见
指导教师签字:
(三)基本理论
系统的前端开发部分主要采用jsp框架实现页面的动态效果,并采用Ajax技术与服务器进行交互,提供良好的用户体验功能。
各子系统中,用户的内容评论等采用标签实现;注册使用引入了jQuery的Ajax技术实现验证功能;另外,采用jQuery的控件可以实现表单验证等功能,使得界面的样式更加流畅。
本论文主要阐述一个功能比较强大的火车票订购系统的后台操作过程及一些关键技术。该系统信息来源主要由管理员添加,方便火车票管理员的查询,用户可以通过查询到相关的火车票信息,选择是否适合自己,也可以在网上直接订票,省时省力。由于本系统的开发以节省资源为首,充分利用网络资源,所以本火车票订购上所看到的火车票信息均来自互联网。
二、研究方案及预期结果
(一)研究内容
本火车站网上订票系统可划分为用户和管理员两大模块。其中用户模块部分为用户在前台页面操作部分和管理员模块为后台管理以及对网站相关信息操作部分,其具体功能如图2.1所示。
图2.1火车票网上订票系统功能模块图
该火车票网上售票系统除了应具备用户模块注册、登录、验证功能的实现和管理员登录、验证的原始账号设置以及对新增加的管理员授权设置功能以外,还应该具备的基本网站使用功能如下:
4.实用性:系统功能应满足各类用户的功能需求。
5.易操作性:建立友好的用户界面,操作方便。
6.安全性:应采用合理的安全技术,保证服务器、用户关键数据传输等安全。
软件环境是一个系统开发的工具,它取决于开发人员对软件的熟悉程度,如果开发人员选择一个不熟悉的软件开发会大大增加开发系统所需要投入的成本,所以说选择软件环境也是很重要的。

火车票订票系统开题报告

火车票订票系统开题报告
本毕业设计拟解决的问题如下:
1、熟悉Java Web编程,熟练使用eclipse开发工具,了解MySQL和Tomcat的使用。
2、对系统管理的各模块进行设计与实现:用户信息管理需要实现对用户的查找、删除等操作;订票信息管理需要实现对订票信息的查找、删除等操作;余票信息管理需要进行对余票信息的增加、删除、修改和查找等;意见管理需要实现对用户意见的查看和删除;订票统计功能需要对预订车票的各信息进行统计和查看。
火车票订票系统通过实现票务信息的计算机管理,提高工作效率。我们可以利用数据库将整个火车站的票务情况存入计算机,通过丰富的用户接口,完成数据的访问和管理,以满足用户需求。一个火车站售票信息管理系统应达到的目标是提供及时、广泛的信息服务,加快信息检索的效率,实况灵活的查询,减轻管理人员制作报表和统计分析的负担。但由于铁路火车票务管理的复杂性,本毕业设计与开发也仅是一个尝试性的工作,但它很有启发性,对于研究开发该类程序可以起一个抛砖引玉的作用。
三、研究方法、措施及步骤:
本系统主要是基于Java语言,采用B/S结构,SSH架构,结合了MySQL数据库,并按照软件工程开发的基本步骤来实现火车票订票管理系统。
开发工具:MyEclipse
数据库环境:MySQL数据库
服务器:TomCat
系统环境:Microsoft Windows7或以上版本。
1、本系统采用的SSH为框架,SSH是目前较流行的一种Web应用程序开源框架,也是比较适合本研究课题的应用程序开源框架之一。集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。
毕业设计(论文)开题报告内容:(主要包含选题的背景和意义;研究的基本内容和拟解决的主要问题;研究方法及措施;研究工作的步骤与进度;主要参考文献等项目)

火车票网上购票管理系统数据库系统分析与设计

火车票网上购票管理系统数据库系统分析与设计

火车票网上购票管理系统数据库系统分析与设计一、数据库需求分析1.用户需求:-用户可以通过系统注册和登录账号。

-用户可以查询火车班次及票价信息。

-用户可以选择购买火车票,并完成支付。

-用户可以查看已购买的火车票信息。

2.管理员需求:-管理员可以添加、修改和删除火车班次信息。

-管理员可以查询用户购票信息。

3.系统需求:-系统需要存储用户账号和密码信息。

-系统需要存储火车班次信息,包括班次号、起始站、终点站、出发时间、到达时间、票价等。

-系统需要存储用户购票信息,包括用户ID、班次号、座位号、购票时间等。

二、数据库设计根据以上需求,可以设计以下数据库表结构:1. 用户表(User)- 用户ID(UserID,主键)- 用户名(Username)- 密码(Password)2. 火车班次表(Train)- 班次号(TrainID,主键)- 起始站(StartStation)- 终点站(EndStation)- 出发时间(DepartureTime)- 到达时间(ArrivalTime)- 票价(Price)3. 火车票表(Ticket)- 票号(TicketID,主键)- 用户ID(UserID,外键,关联User表的UserID)- 班次号(TrainID,外键,关联Train表的TrainID) - 座位号(SeatNumber)- 购票时间(PurchaseTime)三、系统架构设计根据数据库设计,可以初步设计系统架构如下:1.前端页面:包括注册、登录、查询火车班次、购票、查看订单等页面。

2.后端服务:实现用户注册、登录、查询火车班次、购票、查看订单等功能,调用数据库进行数据操作。

3.数据库:存储用户信息、火车班次信息、订单信息等数据。

四、数据库操作根据数据库设计,可以设计以下数据库操作:1.用户相关操作:- 用户注册:向User表中插入新的用户信息。

- 用户登录:查询User表中的用户名和密码信息进行验证。

火车票订购系统

火车票订购系统

电子商务课程设计报告火车票订购系统组员:学院:计算机学院班级:计算机0804目录一、需求分析 (1)1、功能需求 (1)2、系统用例分析 (1)二、静态模型设计 (6)1、系统类图 (6)2、数据库字段设计 (6)三、动态模型设计 (8)1、时序图 (8)2、协作图 (12)3、活动图 (13)4、系统部署图 (16)四、总结 (17)五、参考资料 (18)一、需求分析1、功能需求线上预订火车票系统是一款功能强大、操作简便、易维护的、具有良好人机交互界面的线上订票系统,它包括用户管理模块、系统参数设置模块、票务信息模块(提供票价、列车的实时信息)、订票管理模块(提供订票和退订功能)、实时信息提示模块(提供车况、路况、列车晚点等实时信息)、数据管理模块(提供数据备份、数据操作功能)。

实现火车票线上预定的自动化的计算机系统,为旅客提供准确、精细、迅速的火车票销售信息和方便、简单的订票功能。

线上预订火车票系统主要是对于订票信息的统一管理,满足了中小型线上订票网站对于用户的管理,订票信息的收集和处理方面的要求。

用现代化的方式取代以前的传统模式,更有利于信息的流通,资源的宏观管理。

具有体积小,代码简洁,易维护、易修改的优点。

2、系统用例分析2.1.火车站售票管理系统的参与者*乘客:查询、预订车票的人员。

*售票员:具体负责乘客的车票订单。

*票务管理员:负责更新车票信息。

*系统管理员:系统管理员负责系统的员工信息管理,会员信息管理以及系统的维护等。

根据以上分析,创建系统参与者,如图所示:管理员系统管理员票务管理员售票员乘客图1-1系统参与者2.2.管理员用例图火车站系统中的所有人都是管理员,管理员是一个抽象的概念,他包含的行为是所有管理员的共同行为。

管理员在本系统中通过合法的身份验证能够修改自身的信息和密码。

根据以上分析,建立用例图如下所示:查询信息图1-2系统管理员用例图系统管理员能够通过本系统进行如下活动。

网上订票系统开题报告

网上订票系统开题报告
实验方案二:采用ASP语言设计,ACCESS2003作为数据库,Macromedia Dreamweaver 8作为开发工具;
随着科学的不断进步,计算机应用已经遍布整个社会的每个角落。目前社会正处于健保发展方兴未艾的时代,各火车站莫不兢兢业业地改善本身的体制或管理方式,以适应健保越来越严格的规;在此背景下,本文论述了火车票网上订票系统的设计与实现。通过对Dreamweaver和ASP的运用,结合火车站售票查询的实际需求,同时本文还说明了火车订票管理系统的开发过程及各种技术细节。本系统是适应时代发展的需要,提高管理的效率而开发设计的。
在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,开发一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的火车票订票系统,实现火车运载公司的火车票销售的自动化的计算机系统,为企业的决策层提高准确、精细、迅速的火车票销售信息。具体功能为各个售票点把预定火车票的乘客信息和订票信息输入到系统中,系统为乘客安排行程。在乘客支付购买车票所需的金额后,系统为乘客打印出正确的车票。本次设计便是利用开发工具ASP、Dreamweaver和ACCESS2003数据库共同开发的一个火车站网上订票系统,它能方便快捷地运用在火车站订票业务的营运之中。
(1)电子商务与管理信息系统的集成研究。管理信息系统与电子商务集成的关联关系,主要体现在战略决策,管理运行以及基础业务信息的集成,以求企业经营管理达到扩大合作围,建立贯穿整个产品生命周期的供应链,建立业务,管理,战略3个层次上统筹规划的目标,强调了企业开展电子商务必须与企业管理信息系统的信息集成。
(2)集成化管理信息系统(I- MIS)的研究。管理信息系统是一门交叉的学科,它的实施成功要综合运用管理科学,系统科学,信息科学,认知科学,计算机技术,网络技术,数据库技术,人工智能,系统工程等多种不同学科与技术,在开发一个具体的I-MS时,关键问题是如何运用不同的学科与技术使管理信息系统建成为一个综合的管理信息系统,这就要借助集成化方法。

火车订票系统报告

1.1 需求分析调查学生火车票预定系统应用领域涉及的内容,对涉及到领域的各个应用的信息要求和操作要求进行详细分析。

最重要的是调查、采集信息、分析购票人信息和火车票预定流程。

处理要求、数据的安全性与完整性要求。

要求系统能有效、快速、安全、可靠和无误的完成上述操作。

并要求客户端的界面要简单明了,易于操作。

火车站为方便旅客返程,需要开辟一个火车票订票系统,这个火车订票系统可以满足旅客的主要需求。

首先是要有旅客的登陆界面,包括旅客的用户名和密码。

然后登陆到主操作界面,旅客可以进行车票的查询,显示起始车站和终点车站,乘车的日期,发车时间,座号和票价,并且在查询到自己的所要车坐的车次后可以预订车票;旅客还可更改自己的用户名和密码,以保证个人信息的安全。

如是管理员登陆的话,还可以添加车次,包括起始站,终点站,发车时间,车次类型,还可以删除某个车次;并且在需要的时候,管理员也可添加和删除用户。

1.2 流程图经过可行性分析和初步需求调查,抽象出该系统业务流程图,结合该实例具体情况,给出旅客订票的具体需求。

图1.2 旅客购票流程图1.3 系统框架在调查完了系统需求之后,就要开始分析用户需求。

在此,采用自顶向下的结构化分析方法。

首先,定义全局概念结构的框架,如图 1.3 所示:图 1.3 火车定票系统总框架图每一个子系统需要进一步细化。

车次信息系统的细化如图 1.4 所示:车票信息系统的细化如图 1.5 所示:旅客信息系统的细化如图 1.6 所示:1.3 软件模块划分1.普通用户模块在普通用户模块中可以实现登陆,用户名修改,车次查询,订票。

2.管理员模块管理员模块包含三个板块的内容:①管理员可以实现登陆,用户名修改,车次查询,订票。

②车次基本信息管理:包括添加,查询,删除车次。

③用户信息管理:包括添加,删除用户。

1.4 功能结构2 详细设计(更功能模块的实现)2.1 登陆界面①用户名两个静态文本输入框②密码①用户名编辑框登陆界面两个编辑框②密码编辑框①登录两个按钮②取销登陆界面如图 2.1 所示:图2.1 登陆界面功能的实现:①首先建立一个对话框,命名为“欢迎使用火车票预订系统”,添加两个静态文本输入框“请输入用户名”和“请输入密码”,再添加两个编辑框“用户名编辑框”和“密码编辑框”然后建立类向导。

网上火车票订购系统报告

东华大学____软件设计实践___报告专业计算机科学与技术班级学号姓名完成日期一、需求分析1.1.设计背景铁路作为中国最重要的交通工具之一,在市场经济浪潮中,面临着严峻的考验。

公路运输的便捷,航空运输的快速,这一切都对铁路运输构成很大的冲击。

在对铁路客运服务存在的最大问题进行调查时,结果表明,有29.3%的乘客认为购票难排在各项选择的第一位。

火车站市场的管理和规范问题,是困扰我们多年的一个老问题,也是政府管理中的一个难点,订票是客运业务中的一个最基本的业务,表面上看,它只是火车站业务的一个简单的部分,但是它涉及到管理与客户服务等多方面,因此,随着我国铁路交通的不断发展,过去传统的售票方式已经不能满足现代客运业务流量剧增的客观要求,简单的窗口售票模式已经不能满足方便人们出行的目的。

采用先进的网络技术开发出方便快捷的网上订票系统是现代客运业务发展的必然需求。

电子商务的出现,正好带给了铁路客运服务一个发展契机,推出新型的订票方式-- 网上订票,来缓解订票高峰时期的客运压力,并为用户提供方便快捷的订票服务。

它既是技术上的创新,又将完善铁路服务,在一定程度上解决买票难这一大难题,增强铁路竞争力,为铁路争取到更多的客流。

本次设计的火车票网上订票系统通过访问主页,可以实现个人信息注册、车次车票价格查询、在线订票退票等基本功能,为用户提供方便快捷的订票服务。

本次设计便是利用开发工具VS2008和SQL Server 2005数据库共同开发的一个火车站网上订票系统,它能方便快捷地运用在火车站订票业务的营运之中。

该系统要解决的是火车站网上售票工作所要解决的问题,可以满足火车票网上售票的基本要求,包括查询、订票、退票三个方面的功能。

该系统能运用到火车站售票的工作中,根据用户的需求,设置其权限,并快捷方便的为用户提供服务。

1.2 系统设计目标本系统是利用网络的方便、快捷和计算机的准确、高效实现火车票网上订票系统。

火车票网上订票系统是通过主页访问、身份识别实现区别不同身份用户完成车票、车次的管理操作。

火车票订购系统的测试报告

火车票订购系统需求分析1.1 系统任务概述这里将该系统的应用是学生在线订购火车票系统,主要涉及对列车信息的管理、学生信息的管理和学生订票信息的管理:对列车信息的管理:对列车信息的添加、修改、删除和查询等对学生信息的管理:对学生信息的添加、修改、删除、查询等对订票信息的管理:对订票信息的管理,如:何人,何时订了何票等。

此外,对于每个使用该系统的人,都要实现用户名和密码登陆,只有合法的用户才能使用该系统。

1.2 功能需求1.2.1 学生的管理每个通过资格审查的人都注册,并拥有自己的用户名和密码,成为注册用户,以后凭此登陆系统;不能通过审查的人员则不予办理。

每个注册用户都拥有一个账号,此账号里包含该用户的所有个人信息,每次的订票活动都凭借此账号进行,直到该账号被注销或删除为止。

因此,对学生的管理包含对学生相关信息的添加、修改、删除及检索功能。

1.2.2 列车信息管理列车信息的管理中很大一部分就是对车次信息的管理,主要涉及以下功能:新列车车次入库:对次新的列车车次信息,都将其详细信息加以记录,方可对外订购和查询列车信息的检索:要想从上千条列车信息记录中找到需要的车次,必须提供列车车次的快速检索和查询功能。

信息的修改:列车的基本信息(如车次号、车次时间、单价等)是不需提供修改功能的,但其它一些信息(是否打折、席别、票价、张数等)需要有修改功能。

列车信息的删除:对过时的列车信息要能够从系统信息中删除。

1.2.3 订票信息管理这是火车订票系统的核心功能之一,由系统管理员实现,主要涉及订票的车次的基本信息、学生的部分信息,订购日期及归订购张数等。

订票时:审查学生是否有订票权;检查列车信息信息是否可以被订购;两者都满足后才能办理订票手续。

取票时:获取学生信息和列车车次信息,判断订票时间是否超期,若超期则不予订购,只有在学生交了订金后才算成功订票。

对订票的历史记录要提供一定的查询功能,且由于不可能永远保存所有记录,还需要提供相应的删除记录的功能。

火车票订票系统课程设计报告

设计题目:火车订票管理系统班级:姓名:学号:2015年1月4日1.课程设计目的和要求火车订票管理系统的主要功能包括:1. 火车线路查询功能,乘客输入终点站名称或输入车次,输出相应的火车线路信息。

2. 订票功能。

乘客输入车次和订票数,先查询该车次的余票数,若余票数大于等于订票数,则为乘客办理订票手续,要求乘客输入姓名、身份证号码,计算出总票价,产生一个新结点,将该结点添加到对应车次的链表中,然后修改该车次的余票数。

若余票数小于订票数,则输出提示信息“余票数不足,订票失败!”。

3. 退票功能。

乘客输入车次和身份证号码,在该车次对应的链表中查找该乘客,若找到,询问乘客退票数量,若退票数小订票数,则只需修改结点的订票数;若退票数等于订票数,则将该乘客对应的结点删除,然后修改该车次的余票数;若没找到,则应提示“未找到相应信息”,要求乘客重新输入车次和身份证号码,再进行查找,如果仍未找到,则输出提示信息“输入信息错误,退票失败!”。

4. 其他查询功能。

(1) 输入车次,输出该车次的全部订票信息。

(2) 输入车次,输出该车次的订票数和余票数。

(3) 输入终点站名称,输出相关火车线路的信息。

(4) 输入日期(年.月.日),输出发车时间为该天的火车线路的信息。

(5) 输出余票数为0的火车线路的信息。

2.系统总体设计2.1 系统功能模块图2.2 数据结构设计假设有5条火车线路(起点均为济南),每条线路所涉及的信息有:终点站、车次、发车时间(年.月.日.时.分)、票价、余票数(假设火车总票数为300)。

乘客订票信息包括:乘客姓名、乘客身份证号码、订票数,总票价。

本系统要求用结构体数组和链表实现,将火车线路信息存放在结构体数组中,每条线路对应一个链表,乘客订票就是在链表中插入结点,乘客退票就是在链表中删除结点。

链表的结点类型和结构体类型定义如下:typedef struct node{char name[10]; //乘客姓名char IDcard[20]; //乘客身份证号码int TicketNum; //订票数float FareSum; //总票价struct node *next; //指针成员}SN;typedef struct Dtime{short year;short month;short day;short hour;short minute;}SD;typedef struct train{char terminal[10]; //终点站char sequence[10]; //车次struct Dtime StartTime; //发车时间float fare; //票价int SpareTicketNum; //余票数struct node *head; //指针成员,指向该线路第一个订票乘客}ST;系统整体结构见图9.3所示图9.3 系统结构示意图全局变量如下:#define N1 5 //火车线路数ST b[N1]; //火车信息结构体数组#define LEN1 sizeof(ST)//火车信息结构体数据块大小#define LEN2 sizeof(SN)//乘客信息结构体数据块大小3.系统详细设计3.1 函数说明#include<stdio.h>#include<stdlib.h>#include<string.h>#define N1 5 //*************************火车线路数//**************************************************结构体类型的定义typedef struct node{char name[20];char IDcard[20];int TicketNum;float FareSum;struct node *next;}SN;typedef struct Dtime{short year;short month;short day;short hour;short minute;}SD;typedef struct train{char terminal[20];char sequence[20];struct Dtime StartTime;float fare;int SpareTicketNum;struct node *head;}ST;ST b[N1];#define LEN1 sizeof(ST)#define LEN2 sizeof(SN)//***********************************************函数声明int Menu1(void); //*************************火车订票管理系统界面int Menu2(void); //*************************其他查询功能界面int Menu3(void); //*************************第一界面void creat1(void); //*************************管理员录入信息SN* creat2(float k); //**************************录入乘客信息void find0(void); //*************************查询void dingpiao(void); //*************************订票void tuipiao(void); //**************************退票void find1(void); //*************************查找功能1void find2(void); //*************************查找功能2void find3(void); //*************************查找功能3void find4(void); //*************************查找功能4void shuchu(void); //**************************输出0票数线路功能void LIST(SN *head); //**************************输出链表void READ(void); //**************************将数据读出生成文件void WRITE(void); //**************************将链表写入文件//************************************************************主函数int main(){int a,b,c;char m[20];b=Menu3();switch(b){case 0:printf("\n\t谢谢使用,再见!\n");exit(0);case 1:printf("\n请输入密码:");scanf("%s",m);if(strcmp(m,"666")==0) creat1();else printf("\n密码输入错误!\n\n");break;case 2:while(1){c=Menu1();switch(c){case 1:find0();break;case 2:dingpiao();break;case 3:tuipiao();break;case 4:a=Menu2();switch(a){case 1:find1();break;case 2:find2();break;case 3:find3();break;case 4:find4();break;case 5:shuchu();break;case 6:break;case 0:printf("\n\t谢谢使用,再见!\n");exit(0);default:printf("\n\t您的按键有误,请重新选择!\n");}break;case 0:printf("\n\t谢谢使用,再见!\n");exit(0);default:printf("\n\t您的按键有误,请重新选择!\n");}}}}//*********************************************************各函数定义int Menu1(void){int sel;printf("\n");printf("\t--------------------------------------------\n");printf("\t* *\n");printf("\t* 欢迎进入火车订票管理系统*\n");printf("\t* *\n");printf("\t--------------------------------------------\n");printf("\n");printf("\t请选择您要使用的功能:\n\n");printf("\t 1.火车路线查询\n");printf("\t 2.订票\n");printf("\t 3.退票\n");printf("\t 4.其他查询\n");printf("\t 0.退出系统\n\n");printf("\t 请选择按键0~4\n");scanf("%d",&sel);return(sel);}int Menu2(void){int sel;printf("\n");printf("\t--------------------------------------------\n");printf("\t* *\n");printf("\t* 欢迎进入火车订票管理系统*\n");printf("\t* *\n");printf("\t--------------------------------------------\n");printf("\n");printf("\t请选择您要使用的功能:\n\n");printf("\t 1.输入车次,查询该车次的全部订票信息\n");printf("\t 2.输入车次,查询该车次的订票数和余票数\n");printf("\t 3.输入终点站名称,查询相关火车线路的信息\n");printf("\t 4.输入日期(年·月·日),查询发车时间为该天的火车线路的信息\n");printf("\t 5.查询余票数为0的火车线路信息\n");printf("\t 6.返回上一界面\n");printf("\t 0.退出系统\n\n");printf("\t 请选择按键0~6\n");scanf("%d",&sel);return(sel);}int Menu3(void){int sel;printf("\n");printf("\t--------------------------------------------\n");printf("\t* *\n");printf("\t* 欢迎进入火车订票管理系统*\n");printf("\t* *\n");printf("\t--------------------------------------------\n");printf("\n");printf("\t 1.管理员入口\n");printf("\t 2.乘客入口\n");printf("\t 0.退出系统\n\n");printf("\t 请选择按键0~2\n");scanf("%d",&sel);return(sel);}void creat1(){SN *p1;int i,j;for(i=0;i<N1;i++){printf("\n\n");printf("请输入火车终点站:");scanf("%s",b[i].terminal);printf("请输入火车车次:");scanf("%s",b[i].sequence);printf("请输入火车发车时间(年_月_日_时_分_):");scanf("%hd%hd%hd%hd%hd",&b[i].StartTime.year,&b[i].StartTime.month, &b[i].StartTime.day,&b[i].StartTime.hour,&b[i].StartTime.minute);printf("请输入火车票价:");scanf("%f",&b[i].fare);printf("请输入火车余票数:");scanf("%d",&b[i].SpareTicketNum);b[i].head=creat2(b[i].fare);}WRITE();}SN *creat2(float k){SN *p1,*p2,*head;head=NULL;int n=0,i,m;printf("请输入您要录入的乘客人数:");scanf("%d",&m);for(i=0;i<m;i++){n++;if(n==1){p1=(SN*)malloc(LEN2);if(p1==NULL) { printf("\n No enough memory!\n"); exit(0); }printf("请输入乘客姓名:");scanf("%s",p1->name);printf("请输入乘客身份证号码:");scanf("%s",p1->IDcard);printf("请输入乘客订票数:");scanf("%d",&p1->TicketNum);p1->FareSum=p1->TicketNum*k;head=p1;}else{p1=(SN*)malloc(LEN2);if(p1==NULL) { printf("\n No enough memory!\n"); exit(0); }printf("请输入乘客姓名:");scanf("%s",p1->name);printf("请输入乘客身份证号码:");scanf("%s",p1->IDcard);printf("请输入乘客订票数:");scanf("%d",&p1->TicketNum);p1->FareSum=p1->TicketNum*k;p2->next=p1;}p2=p1;}p2->next=NULL;printf("\n输入成功!\n\n");return(head);}void find0(void){int x=0;SN *p1,*p2;int i=0,n=0,m=0,j;char ch[20];FILE *fp;READ();while(!x){printf("\n请输入您要查找的火车终点站或者车次:");scanf("%s",ch);for(i=0;i<N1;i++){if(strcmp(ch,b[i].terminal)==0||strcmp(b[i].sequence,ch)==0){printf("终点站:%s 车次:%s 发车时间:%hd年%hd月%hd日%hd 时%hd分火车票价:%.2f 火车余票数:%d\n\n",b[i].terminal,b[i].sequence,b[i].StartTime.year,b[i].StartTime.month,b[i].StartTime.day,b[i].StartTime.hour,b[i].StartTime.minute,b[i].fare,b[i].SpareTicketNum);n++;}}if(n==0){printf("\n对不起,您查找的火车信息不存在!\n\n");}printf("\n继续查找请选0,退出查询请选1\n\n");printf("请选择:");scanf("%d",&x);}}void dingpiao(void){SN *p1,*p2,*p0;char ch[20];int s,i,n=0;FILE *fp;READ( );printf("\n请输入您要订购的火车车次:");scanf("%s",ch);printf("请输入您要订购的车票数:");scanf("%d",&s);for(i=0;i<N1;i++){if(strcmp(b[i].sequence,ch)==0){n++;if(s>b[i].SpareTicketNum){printf("\n余票数不足,订票失败!\n\n");break;}else{p0=(SN*)malloc(LEN2);if(p0==NULL) { printf("\n No enough memory!\n"); exit(0); }printf("\n请输入乘客姓名:");scanf("%s",p0->name);printf("请输入乘客身份证号码:");scanf("%s",p0->IDcard);p0->TicketNum=s;p0->FareSum=p0->TicketNum*b[i].fare;p0->next=b[i].head;b[i].head=p0;b[i].SpareTicketNum=b[i].SpareTicketNum-p0->TicketNum;printf("\n订票成功!\n\n");}}}if(n==0) printf("\n对不起,您的输入有误!\n\n");WRITE();}void tuipiao(void){SN *p1,*p2,*p0;char ch[20],sh[20];int t,s=0,i,j,n=0;READ();for(j=0;j<2;j++){printf("\n请输入您要退票的车次:");scanf("%s",ch);printf("请输入身份证号码:");scanf("%s",sh);for(i=0;i<N1;i++){if(strcmp(ch,b[i].sequence)==0){s++;p0=b[i].head;while(p0!=NULL){n++;if(strcmp(sh,p0->IDcard)==0){printf("请输入您要退票的数量:");scanf("%d",&t);if(t<(p0->TicketNum)){p0->TicketNum=p0->TicketNum-t;b[i].SpareTicketNum=b[i].SpareTicketNum+t;printf("\n退票成功!\n\n");goto end;}elseif(t==(p0->TicketNum)){b[i].SpareTicketNum=b[i].SpareTicketNum+p0->TicketNum;if(n==1)b[i].head=p0->next;elsep1->next=p0->next;printf("\n退票成功!\n\n");goto end;}else{printf("\n输入退票数有误!\n\n");goto end;}}p1=p0;p0=p0->next;}}}if(j==1) printf("\n未找到相应信息,请重新查找\n\n");if(s==0) {printf("\n输入信息错误,退票失败!\n\n");} }end:WRITE();}void find1(void){char ch[20];int i,n;READ();printf("\n请输入您要查询订票信息的车次:");scanf("%s",ch);for(i=0;i<N1;i++){if(strcmp(ch,b[i].sequence)==0){LIST(b[i].head);}}if(n==0) printf("\n您查找的信息不存在,请重新查找\n\n");printf("\n谢谢您的使用\n\n");}void find2(void){char ch[20];SN *p1;int i,n=0,sum=0;READ();printf("\n请输入您要查询订票信息的车次:");scanf("%s",ch);for(i=0;i<N1;i++){if(strcmp(ch,b[i].sequence)==0){p1=b[i].head;while(p1!=NULL){sum=sum+p1->TicketNum;p1=p1->next;}printf("\n该车次的订票数为:%d 该车次的余票数为:%d\n\n",sum,b[i].SpareTicketNum);n++;}if(n==0) printf("\n未找到相应信息!\n\n");}}void find3(void){char ch[20];int i,n=0;READ();printf("\n请输入您要查询订票信息的终点站:");scanf("%s",ch);printf("\n");for(i=0;i<N1;i++){if(strcmp(ch,b[i].terminal)==0){printf("终点站:%s 车次:%s 发车时间:%hd年%hd月%hd日%hd 时%hd分火车票价:%.2f 火车余票数:%d\n\n",b[i].terminal,b[i].sequence,b[i].StartTime.year,b[i].StartTime.month,b[i].StartTime.day,b[i].StartTime.hour,b[i].StartTime.minute,b[i].fare,b[i].SpareTicketNum);n++;}}if(n==0){printf("\n您查找的信息不存在,请重新查找\n\n");}}void find4(void){char ch[20];short a,d,c;int i,n=0;READ();printf("\n请输入您要查询的日期:");scanf("%hd%hd%hd",&a,&d,&c);printf("\n");for(i=0;i<N1;i++){if(a==b[i].StartTime.year)if(d==b[i].StartTime.month)if(c==b[i].StartTime.day){printf("终点站:%s 车次:%s 发车时间:%hd年%hd月%hd 日%hd时%hd分火车票价:%.2f 火车余票数:%d\n\n",b[i].terminal,b[i].sequence,b[i].StartTime.year,b[i].StartTime.month,b[i].StartTime.day,b[i].StartTime.hour,b[i].StartTime.minute,b[i].fare,b[i].SpareTicketNum);n++;}}if(n==0) printf("\n未找到相应信息!\n\n");}void shuchu(void){int i,n=0;READ();for(i=0;i<N1;i++){if(b[i].SpareTicketNum==0){printf("\n终点站:%s 车次:%s 发车时间:%hd年%hd月%hd日%hd 时%hd分火车票价:%.2f 火车余票数:%d\n\n",b[i].terminal,b[i].sequence,b[i].StartTime.year,b[i].StartTime.month,b[i].StartTime.day,b[i].StartTime.hour,b[i].StartTime.minute,b[i].fare,b[i].SpareTicketNum);n++;}}if(n==0) printf("\n未找相应信息!\n\n");}void WRITE(void){SN *p1;//***************写入文件a[N1]*****************管理员存入数据***** FILE *fp;if((fp=fopen("file0.dat","wb+"))==NULL){ printf("Can not open file!\n") ; exit(0) ; }fwrite(b,LEN1,N1,fp);fclose(fp);//***********************************************第1个文件*******if((fp=fopen("file1.dat","wb+"))==NULL){ printf("Can not open file!\n") ; exit(0) ; }p1=b[0].head;while(p1!=NULL){fwrite(p1,LEN2,1,fp);p1=p1->next;}fclose(fp);//************************************************第2个文件******if((fp=fopen("file2.dat","wb+"))==NULL){ printf("Can not open file!\n") ; exit(0) ; }p1=b[1].head;while(p1!=NULL){fwrite(p1,LEN2,1,fp);p1=p1->next;}fclose(fp);//***********************************************第3个文件********if((fp=fopen("file3.dat","wb+"))==NULL){ printf("Can not open file!\n") ; exit(0) ; }p1=b[2].head;while(p1!=NULL){fwrite(p1,LEN2,1,fp);p1=p1->next;}fclose(fp);//********************************************第4个文件*********if((fp=fopen("file4.dat","wb+"))==NULL){ printf("Can not open file!\n") ; exit(0) ; }p1=b[3].head;while(p1!=NULL){fwrite(p1,LEN2,1,fp);p1=p1->next;}fclose(fp);//*********************************************第5个文件*******if((fp=fopen("file5.dat","wb+"))==NULL){ printf("Can not open file!\n") ; exit(0) ; }p1=b[4].head;while(p1!=NULL){fwrite(p1,LEN2,1,fp);p1=p1->next;}fclose(fp);}void READ(void){SN *p1,*p2;int i=0,j;FILE *fp;//*******读出第0个文件*********************查找数据***************** if((fp=fopen("file0.dat","rb"))==NULL){printf("Can not open the file !\n");exit(0);}fread(b,LEN1,N1,fp);fclose(fp);//***********************************************读出第1个文件******if((fp=fopen("file1.dat","rb"))==NULL){printf("Can not open the file !\n");exit(0);}j=0;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);while(!feof(fp)){j++;if(j==1) b[0].head=p1;else p2->next=p1;p2=p1;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);}p2->next=NULL;free(p1);fclose(fp);//*********************************************读出第2个文件****** if((fp=fopen("file2.dat","rb"))==NULL){printf("Can not open the file !\n");exit(0);}j=0;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);while(!feof(fp)){j++;if(j==1) b[1].head=p1;else p2->next=p1;p2=p1;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);}p2->next=NULL;free(p1);fclose(fp);//**************************************************读出第3个文件**** if((fp=fopen("file3.dat","rb"))==NULL){printf("Can not open the file !\n");exit(0);}j=0;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);while(!feof(fp)){j++;if(j==1) b[2].head=p1;else p2->next=p1;p2=p1;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);}p2->next=NULL;free(p1);fclose(fp);//**********************************************读出第4个文件***** if((fp=fopen("file4.dat","rb"))==NULL){printf("Can not open the file !\n");exit(0);}j=0;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);while(!feof(fp)){j++;if(j==1) b[3].head=p1;else p2->next=p1;p2=p1;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);}p2->next=NULL;free(p1);fclose(fp);//************************************************读出第5个文件***** if((fp=fopen("file5.dat","rb"))==NULL){printf("Can not open the file !\n");exit(0);}j=0;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);while(!feof(fp)){j++;if(j==1) b[4].head=p1;else p2->next=p1;p2=p1;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);}p2->next=NULL;free(p1);fclose(fp);}void LIST(SN *head){ SN *p ;p=head ;while ( p!=NULL ){printf("\n乘客姓名:%s 乘客身份证号码:%s 订票数%d 总票价%.2f\n\n",p->name,p->IDcard,p->TicketNum,p->FareSum);p=p->next;}}3.2 函数调用关系4.系统存在的问题与不足管理员输入密码时是有可能被别人看见,安全性没有做好。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档