1、 课 程 设 计 课程名称SQL数据库系统课程设计题目名称火车订票系统的设计与实现专业班级学生姓名学 号指导教师目 录目 录1引 言1 HYPERLINK L _TOC31277 1.概 述31.1 开发目的和意义31.2 完成情况32. 开发环境及工具42.1 开发环境和开发工具43. 系统分析53.1 可行性分析53.1.1 经济可行性53.1.2 技术可行性53.1.3 操作可行性53.2 需求分析53.2.1 功能需求53.2.2 数据需求63.2.3性能需求64. 系统设计84.1 总体设计84.2 详细设计84.2.1过程设计84.3 数据库设计114.3.1 用户信息表114.3
2、.2 车次详细信息表114.3.3 订票信息表114.3.4退票信息表125. 系统实现125.1 系统登录界面125.2 系统管理员登录界面135.3 票务管理员登录界面145.4 乘客登录界面146.总结16谢 辞17参 考 文 献19附加部分代码实现20 引 言 用信息化推动工业化,用信息技术改造传统产业,这是我国迫切要完成的一项战略性任务。作为工业文明的产物-铁路,如何借助信息技术的帮助,实现管理方式,运营组织,服务标准的现代化,这是摆在我国铁路工作者面前的重大课题。 铁路信息化是铁路现代化的重要标志,其根本目的是将信息技术应用到铁路生产经营与管理决策等各项活动中,改造传统产业,提高铁
3、路生产率,提高市场竞争力,提高铁路运营经济效益。国内外已有运作合理完善的火车售票管理系统,其具有售票、查询、管理和维护等功能,系统管理员可以进行对车次的更改、票价的变动及调度功能,票价的修改可以通过修改运价来进行,车次调度可通过对发车时刻表的修改来进行,维护功能即可对表进行修改。满足当前火车售票管理的需求,并且运作十分良好。铁路信息化建设目前主要集中在搞好铁路运输生产管理上,加快计算机调度系统建设,完善客票发售与预订系统,搞好各地信息系统的结合,实现资源有效利用,信息共享。其总体目标是:形成具有国际水平的铁路信息化基础通信平台,实现各部门各系统之间的信息数据共享,互联互通;建成车,机,工,电,
4、辆各部门调度控制,安全生产,运输指挥的现代化保障体系。为铁路运输各部门提供所需的管理信息资源和强有力的决策支持。通过现代客货营销手段和电子商务手段,带动铁路运输经济发展,大幅度提高运输效益。建立建全与信息化相适应的管理体制。我国目前的铁路信息化总体程度居国内领先,国际先进水平。 关键字:铁路订票系统,国际水平,铁路信息化管理体制Introduction Train ticket management system at home and abroad operation reasonable and perfect, having a ticket, query, management and
5、 maintenance functions, the system administrator can be carried out on trips, the fare changes and change the scheduling function, fare modifications can be carried out through modifying the freight, train scheduling can be based on the departure time table are modified, maintenance function can be
6、modified on the table. To meet the current train ticket management needs, and the operation is very good. The construction of railway informatization at present mainly focus on good management in production of railway transportation, speed up the construction of computer control system, perfect the
7、ticketing and reservation system, combined with the well around the information system, realize the effective use of resources, information sharing. Its overall goal is: the formation of railway fundamental information communication platform with international level, realize the sharing of informati
8、on and data between the various departments, various system interconnection; built car, machine, electric, car industry, each department dispatching control, safety in production, transportation command modern security system. Provide management information resources required and strong decision sup
9、port for railway transportation departments. Through the modern passenger cargo marketing means and means of e-commerce, promote the development of railway transportation economy, greatly improve the transportation efficiency. To establish a comprehensive information management system compatible wit
10、h the. At present our country railroad informatization to the overall level of ranking the leading domestic, international advanced level. Keywords: international level of railway, railway booking system, information management system1.概 述1.1 开发目的和意义 铁路客票发售和预订系统经过几年的建设,取得了很大的进展。火车站订票系统的推广使用,大大方便了旅客购
11、票,也预示着我国铁路售票系统正日趋合理与完善,并且具有良好的交互界面,容易被用户所接受。本系统基于铁路售票系统订票业务的基本流程,通过模拟售票员与客户之间的基本操作,实现了查询、订票、退票等基本功能,同时利用计算机网络,通过网络与售票系统,为用户提供方便快捷的订票服务,使得售票服务更为便捷效率,使铁路售票系统应用更为广泛,但由于铁路火车票务管理的复杂性,本设计与开发也仅是一个尝试性的工作,希望为铁路售票业务,铁路客运及运输发展更为稳定,迅猛尽微薄之力。1.2 完成情况 本课程设计针对火车订票实际情况,按照软件工程的结构化设计思想,经过项目的可行性研究和需求分析、总体设计、详细设计,以及编码实现
12、和调试等步骤设计开发了火车订票系统。并运用数据流图和数据字典、数据库逻辑结构、层次图、系统流程图、以及程序流程图,对该系统的数据需求、数据库、系统软件结构、系统流程、以及处理过程等进行了分析和设计。 该系统基于铁路售票系统订票业务的基本流程,通过模拟售票员与客户之间的基本操作,可以满足火车站网上售票的基本要求,包括查询、订票、退票等三个方面的功能。该系统能运用到火车站售票的工作中,根据用户的需求,设置其权限,并快捷方便的为用户提供服务。2. 开发环境及工具本系统是一个基于SQL构架的系统。系统的开发和应用目的是使售票活动能够在多个不同的地点进行并且能够使旅客通过系统查询到自己所需要的出行信息。
13、基于SQL结构售票系统的具体实现的功能:查询,订票,退票,等三大模块,并研究SQL结构在网络中面临的安全问题及提出相应的解决方案。2.1 开发环境和开发工具伴随着Internet/Intranet技术的发展,开发基于Web的应用程序势在必行,数据库技术更是需要和Web数据相结合,才有更为广阔的前景。C#语言作为微软推出的新兴Web应用程序开发技术,在数据库应用方面发挥着越来越重要的作用,数据库选择用的SQLServer2000,语言使用C#程序设计语言。3. 系统分析3.1 可行性分析该阶段通过对系统目标的初步调研和分析,提出可行性方案并进行论证。我们在这里主要从技术可行性,经济可行性和操作可
14、行性三方面进行分析。3.1.1 经济可行性 开发该系统所需的相关资料可以通过已存在的网上购票系统进行调查采集,所需的其他应用软件、硬件软件也易于获得。因此,开发成本低。而引进使用本系统后,与传统方式相比,具有高效率、低成本、高质量的特点,可以节省不少人力、物力及财力。所以,从经济的角度来看,该系统可行。3.1.2 技术可行性开发工具:Victual Studio2010数据库环境:SQL Server 2000系统环境:Microsoft Windows 2000或以上版本系统实现依靠相对熟悉的Java语言和SQL Server 2000数据库系统,其基本操作实质还是对数据库进行添加、删除、查
15、找、等操作,暂不存在技术问题。3.1.3 操作可行性系统采用菜单式,实现用户与数据的交互,界面简洁友好,操作方便。用户只需对订票流程和业务了解即可,不需掌握数据库等相关知识。3.2 需求分析该系统是利用C#平台开发,数据库采用的是SQLSever2000,旨在开发一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的火车售票系统,为用户提供满意的火车票订票服务。3.2.1 功能需求火车订票管理系统的参与者:u 乘客:查询、预订车票的人员。u 售票员:具体负责乘客的车票订单。u 票务管理员:负责更新车票信息。u 系统管理员:系统管理员负责系统的员工信息管理,乘客信息管理以及系统的维护
16、等。火车站系统中的所有人都是管理员,管理员是一个抽象的概念,它包含的行为是所有管理员的共同行为。管理员在本系统中通过合法的身份验证能够修改自身的信息和密码。系统管理员能够通过本系统进行如下活动:管理乘客信息:系统管理员能够对当前注册到本系统的客户进行整理。管理售票员信息:系统管理员能够管理当前系统中的售票员信息,如添加、删除和修改售票员信息等。系统设置:系统管理员可以对系统进行必要的设置和维护,如升级等。 3.2.2 数据需求(1)数据录入和处理的准确性数据的输入是否正确是数据处理的前提,错误的输入会导致系统输出的不正确和不可用,从而得不到想要的结果。数据的输入来源是手工输入。所以系统地界面要
17、让用户容易使用,如果用户出现误操作,系统能简单明了的给出中文提示。(2)数据的一致性和完整性由于系统的数据是共享的,在不同的代售点中,车次信息是共享数据,所以如何保证这些数据的一致性,是系统必须解决的问题。要解决这一问题,要求系统能保证数据的一致性,在数据录入处控制数据的去向,并且要求对数据库的数据完整性进行严格的约束。对于输入的数据,要为其定义完整性规则,如果不能符合完整性约束,系统应该拒绝该数据,并给出出错提示。(3)数据的共享与独立性整个售票系统的数据是共享的。然而,从系统开发的角度上看,共享会给设计和调试带来困难。因此,应该提供灵活的配置,使不同权限的用户都可以正常进行操作。 3.2.
18、3性能需求为了保证系统能够长期、安全、稳定、可靠、高效的运行,本系统应该满足以下的性能需求。(1)系统的准确性和及时性系统处理的准确性和及时性是系统的必要性能。系统应能及时而且准确的根据用户权限及所输入的信息做出响应。由于本系统的查询功能对于整个系统的功能和性能完成举足轻重。作为系统的很多数据来源,而车票的数量和时间又影响用户的决策活动,其准确性和及时性很大程度上决定了系统的成败。在系统开发过程中,必须采用一定的方法保证系统的准确性和及时性。(2)系统的开放性和可扩展性订票系统在开发过程中,应该充分考虑以后的可扩充性。例如车次信息的临时或者永久性改变,用户查询的需求也会不断的更新和完善。所有这
19、些,都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,即系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、替换完成系统的升级和更新换代。(3)系统的易用性和易维护性 订票系统是直接面对普通用户的,而大多普通用户往往对计算机并不是非常熟悉。这就要求系统能够提供良好的用户界面。要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息界面;针对用户在使用中出现的错误操作,尽量给出中文提示。 订票系统中涉及到的数据是铁路部门的相当重要的信息,系统应提供方便的手段供系统维护人员进行数据的备份,日常的安全管理
20、,以及系统意外崩溃时数据的恢复等工作。 24 4. 系统设计4.1 总体设计本火车站售票管理系统可划分为信息查询、网上订票、取消订票三个部分。其中信息查询又可分为车次查询和订单查询两个部分。系统功能结构如图4.1所示。图4.1 系统功能结构图4.2 详细设计4.2.1过程设计本系统主界面为用户设计了三个功能操作以供选择:查询,订票,退票。另外,为方便用户,还将“退出系统”也单另列了出来,用户可以根据需要触发不同事件。根据分析,系统用户权限的系统主程序流程图,售票员权限的系统主程序流程图,车次信息查询程序流程图,售票程序流程图,订票信息查询模块程序流程图,退票模块程序流程图,如图4.24.3所示
21、:图4.2 系统用户权限的系统主程序流程图图4.2 系统用户权限的系统主程序流程图图4.3 售票员权限的系统主程序流程图图4.3 售票员权限的系统主程序流程图 4.3 数据库设计本系统采用的数据库软件为SQLserver2000,本系统用到的数据库名为train tickets(火车票),它里面包括张表,下面逐一介绍。4.3.1 用户信息表用户表用来存储注册用户的信息,它的结构如表4.7所示:图4.7用户信息表4.3.2 车次详细信息表车次详细信息表存储的是车次的具体路段信息,它的结构如表4.8所示:图4.8车次详细信息表4.3.3 订票信息表 订票信息表存储的是用户的买票信息和订票信息,买票
22、和订票操作产生的记录有不同的字段,本系统中把两种不同字段放在一张表里,如果订票字段为空,则系统可判断这是一条买票记录,它的具体结构如表4.9所示:图4.9 订票信息表4.3.4退票信息表退票纪录表存储的是用户的退票记录和退票信息,它的具体结构如表4.10所示:图4.10 退票信息表5. 系统实现5.1 系统登录界面本系统设计要求用户通过登录框选择访问权限,登录系统。登录身份包括系统管理员、票务管理员和乘客。其中,用户须输入用户名和密码,以进入系统。系统用户输入正确的用户名和密码,访问系统,得到其相应的权限。系统登陆界面如图5.1所示:图5.1 系统登陆界面5.2 系统管理员登录界面系统管理员具
23、有系统的管理、系统的设置和系统的维护权限。在系统管理中可以实现对乘客信息和票务管理员信息的添加、删除和修改,在系统设置中可以修改系统的相关属性,在系统维护中可以实现清除系统运行中发生的故障和错误,对系统进行必要的修改与完善,使系统适应用户环境的变化,满足新提出的需要。系统管理员登录界面如图5.2所示:图5.2 系统管理员登录界面5.3 票务管理员登录界面票务管理员是车票信息的管理者,具有添加车票信息、修改车票信息、删除车票信息的权限。票务管理员通过日期、车次或出发地、目的地来查询相关车票信息,并完成对车票信息的添加、删除和修改。票务管理员登录界面如图5.3所示: 图5.3 票务管理员登录界面5
24、.4 乘客登录界面乘客是本系统的主要使用者,具有查询车票信息、预订车票和退票的权限,在查询功能中,乘客通过日期、车次或出发地、目的地来查询相关车票信息,如票价、余票、列车正晚点、列车时刻表、中转站等。查询成功后,乘客选定满意的车次,在购票处完成预定。乘客登录界面如图5.4所示: 图5.4 乘客登陆界面5.5 用户修改车次界面 图5.5用户修改车次界面 6.总结6.1小结 本文主要介绍了基于SQL结构的火车站售票管理系统的分析设计以及编程实现。整个系统的功能结构和现实中的火车订这次系统的设计从最开始的可行性研究,需求分析,到系统的总体设计,详细设计,再到编码、测试等的一个整体过程,使我真正明白了
25、要做一个软件的难度,特别是要做一个真正可用的软件,就更难了。在老师和同学的帮助下,我把以往所学的软件工程、数据库知识结合起来,利用VS开发工具,加上SQL Server数据库系统,完成了本次课程设计,尽量使它能满足各个方面的要求。当然,我的个人能力有限,还有很多不足的地方,敬请谅解票系统还具有一定的差距,通过C#开发平台和sqlserver2000数据库,完成开始原来设想的大部分功能模块。 现将本系统的开发过程中取得的成果归结如下: (1)根据对现实中火车站售票管理系统的界面分析,我们设计完成了数据库中数据表的所有字段,系统通过和数据库交互的结果能顺利地完成系统对数据库的常规操作。 (2)采用
26、C#语言以Victual Studio2010工具独立设计开发完成整个系统的界面设计与实现。 (3)独立编程实现了系统原先设计的大部分功能,根据对有些功能实现的理解,完成了对一些特有功能的编码。但由于火车订票系统的复杂性和编者水品的限制,本系统依然存在很多问题:(1) 软件采纳的数据不是很全面,不能很好的接受外来的影响。(2) 客流人数预设不到位,可能会有票数不达的局限。如果这些问题存在,可能会影响系统的操作,秩序也会受到破坏。(3) 与已存在的火车订票系统相比整个系统的功能结构和现实中的12306火车订票系统还具有一定的差距。 谢 辞三个星期的SQL数据库系统课程设计终将竣工,内心实乃感慨万
27、千,在这次课程设计过程中我们遇到了不少的难题,比如数据库操作问题,界面设计问题,函数使用与消息处理问题等等。其中,最关键的是最初对系统的需求分析做的不透彻,导致后续设计工作乃至编码时的修改工作量变大。尤其,越接近结束,就越是时常出现问题。所以,通过这次课程设计我深刻的体会到软件工程还是必须学精通、学透彻。通过这一次的课程设计,我们组员越来越默契,在设计过程中我们先把功能分工了,然后每个人下去都把需求写出来,当需求综合时,大家都不局限于只考虑自己的功能实现,往往还要考虑其他组员的功能。大家一起集思广益,用心认真的完成着系统每一部分的设计与实现,我认为这是我们的一次大的进步。这一学期的SQL的课程
28、设计我们完成的是火车订票系统的设计与实现功能,当看到系统最终成型并能准确实现相应的功能的时候我们觉得特别的开心,我们的努力获得了回报。我很高兴能有这样的一个机会让我们一起面对一个难题并为之倾尽全力,这个过程给了我新的体会也些许改变了我一直以来各种烦恼的心态。这个学期一开始我就觉得好多东西跟不上节奏,完成课程设计的过程给了我动力,当然也给了我压力,让我能够静下心来好好研究一下课上所讲的知识,自己去学习新的知识,也让我能和伙伴们一起讨论问题、解决问题,这种感觉很不错的。 在完成课程设计的过程中我学到了很多东西,不管是自身还是从同伴的身上,他们给了我很多的帮助和鼓励,当然也让我在比较中更加看到自己的
29、不足,我知道自己需要学习的地方还有很多。此次的火车订票系统是我们自上大学以来完成的第一个可以应用与实际的软件。在课程设计过程中难度最大的是编码的部分,在编码部分最难的莫过于对方法的重写。因为你需要实现一些之前从没有做过,甚至没有听说过的功能,但是我慢慢明白这是学习与提升自我最好的、最快的方法。这次系统的设计从最开始的可行性研究,需求分析,到系统的总体设计,详细设计,再到编码、测试等的一个整体过程,使我们真正明白了要做一个软件的难度,特别是要做一个真正可用的课程设计,那就更难了。在老师和同学的帮助下,我们把以往所学的C#程序设计、数据库知识结合起来,利用VS开发工具,加上SQL Server数据
30、库系统,完成了本次课程设计,尽量使它能满足各个方面的要求。虽然我们顺利完成了火车订票系统的设计与实现的功能,但是我们深知,项目依然存在很大的改进的空间,我们将大部分的精力投入到对设计功能的实现,忽视了对程序整体架构的设计,我们会继续加油的。通过这次课程设计,我们学会了如何对所学课程综合运用,巩固了课程设计的一般规范,这也让我们对一年后的毕业设计奠定了一定的基础,让我们彻底地对数据库的使用有了更进一步的了解。总体来说,课程设计让我们学会了不少知识。我认为课程设计是我们学习生涯中相当重要的一课,除了验证学生的学习成果外,也能训练一个人独立思考及解决问题的能力。 参 考 文 献1 严蔚敏. 吴伟民.
31、 数据结构M. 北京: 清华大学出版社,2003.2 齐治昌等. 软件工程M. 高等教育出版社,2002.1.3 余祥宣.崔国华.邹海明.计算机算法基础M.武汉:华中科技大学出版社,20064 Abraham Schweitzer. Henry F.North. S.Substandard.数据库系统概念M.北京:高等教育出版社,20065 Buckle Keck 著 侯捷 译.Java编程思想M.机械工业出版社.20106戚晓明.Access数据库实用教程M.北京:清华大学出版社,20107西尔伯沙茨 等著,杨冬青 等译.数据库系统概念(原书第5版)M.北京:机械工业出版社,20068熊拥军
32、,刘卫国。数据库技术与应用实践教程-SQL Server 2005M.北京:清华大学出版社,20109维埃拉著.SQL Server 2008高级程序设计.杨华,腾灵灵译.北京:清华大学出版社,201010孙涌.现代软件工程.北京希望电子出版社.2003年11萨师煊,王珊.数据库系统概论.高等教育出版社.2002年12于松涛.精通SQL server 2000数据库管理与开发M.高等教育出版社.2003年13飞思科技产品开发中心.SQL Server 2000基础与提高M.北京:电子工业出版社:电子工业出版社.2001年14汤庸.软件工程方法与管理M.北京:冶金工业出版社.2002年15张虹.
33、软件工程与软件开发工具M.北京:清华大学出版社.2004年附加部分代码实现火车订票信息代码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace 火车票 public partial class Form2_订票界面 : Fo
34、rm public int preIndex = -1; public string s = null; public Form2_订票界面() InitializeComponent(); Private void dataGridView1_CellContentClick(object sender,DataGridViewCellEventArgs e) /preIndex = dataGridView1.CurrentRow.Index; /s = dataGridView1.RowspreIndex.Cells0.Value.ToString(); private void For
35、m2_Load(object sender, EventArgs e) private void GetData(DataGridView data) SqlConnection conn = new SqlConnection(Data Source=YBLX-20140705MD;Initial Catalog=huochepiao;Integrated Security=false;user id=sa;password=123456;); if (conn.State = ConnectionState.Open) conn.Close(); string selectQuery =
36、select * from 车次详细信息表1 where 出发站= + textBox1.Text + and 到达站= + textBox2.Text + ; SqlDataAdapter da = new SqlDataAdapter(selectQuery, conn); DataSet ds = new DataSet(); da.Fill(ds); dataGridView1.DataSource = ds.Tables0.DefaultView; private void button1_Click(object sender, EventArgs e) SqlConnection
37、 conn = new SqlConnection(Data Source=YBLX-20140705MD;Initial Catalog=huochepiao;Integrated Security=false;user id=sa;password=123456;); if (conn.State = ConnectionState.Open) conn.Close(); string selectQuery = select * from 车次详细信息表1 where 出发站=+textBox1.Text+ and 到达站=+textBox2.Text+; SqlDataAdapter
38、da = new SqlDataAdapter(selectQuery ,conn ); DataSet ds = new DataSet(); string sql = select count(*) from 车次详细信息表1 where 出发站= + textBox1.Text + and 到达站= + textBox2.Text + ; SqlCommand cmd = new SqlCommand(sql, conn); try conn.Open(); int nn = Convert.ToInt32(cmd.ExecuteScalar(); if (nn 0) da.Fill(d
39、s, 车次详细信息表1); dataGridView1.DataSource = ds.Tables车次详细信息表1.DefaultView; else MessageBox.Show(没有此票!); textBox1.Text = ; textBox2.Text = ; catch (Exception ex) MessageBox.Show(查询失败!+ex.Message); textBox1.Text = ; textBox2.Text = ; finally conn.Close(); private void button2_Click(object sender, EventAr
40、gs e) Form5_客户主界面 fm = new Form5_客户主界面(); fm.Show(); this.Hide(); private void button3_Click(object sender, EventArgs e) SqlConnection conn = new SqlConnection(Data Source=YBLX-20140705MD;Initial Catalog=huochepiao;Integrated Security=false;user id=sa;password=123456;); if (conn.State = ConnectionSt
41、ate.Open) conn.Close(); conn.Open(); int n,m; preIndex = dataGridView1.CurrentRow.Index; string s = dataGridView1.RowspreIndex.Cells0.Value.ToString(); string s_出发站 = dataGridView1.RowspreIndex.Cells1.Value.ToString(); string s_到达站 = dataGridView1.RowspreIndex.Cells2.Value.ToString(); string s_出站时间
42、= dataGridView1.RowspreIndex.Cells3.Value.ToString(); string s_到站时间 = dataGridView1.RowspreIndex.Cells4.Value.ToString(); string s_票数 = dataGridView1.RowspreIndex.Cells5.Value.ToString(); string s_金额 = dataGridView1.RowspreIndex.Cells6.Value.ToString(); int ps =int.Parse(s_票数); if (ps 0) n =Convert.ToInt32(ps-1); /* s