数据库课程设计报告火车订票系统_第1页
数据库课程设计报告火车订票系统_第2页
数据库课程设计报告火车订票系统_第3页
数据库课程设计报告火车订票系统_第4页
数据库课程设计报告火车订票系统_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、需求分析在构造系统时,首先从需求出发构造数据库表,然后再由数据库表结合需求划分系统功能模块。这样,就把一个大的系统分解成了几个小系统,使整个系统的功能更加详细易于理解,同时易于实现系统的整体设计。本系统分为车次查询和车票预定两个部分,其所能实现的功能:1、 实现对车次基本信息的查询。2、 实现售票的基本操作。1、业务需求分析从实际角度出发,提供方便快捷的火车站站查询和订票服务,提高车次的编组效率,使车次资源得到充分利用,并可以提高车票的出售效率降低工作人员的工作量。2.功能需求 在数据操作界面需要有车次信息操作窗口,这需要有实现车次查询、车票出售的功能。这是火车订票系统的基本功能,只有实现

2、了这几个功能一个火车订票系统才能开始运作,在本系统中实现了车票的基本信息操作。 功能列表编号 功能名称 功能说明1、1车次查询对车次基本信息的查询2、1售票对车票销售/预定的操作3、数据需求系统处理的对象有:城市信息:城市编号、城市名称。车次信息:列车区间编号、车次号、起始站、目的站、出发时间、到站时间。座位信息:列车区间编号、日期、车厢号、座位号。 系统总数据流图用户系统车次信息系统站站查询、车票预定城市、火车和座位信息数据字典数据项编号数据项名数据项含义存储结构IDC-1TrainID车次号Char(255)IDC-2CityID城市名Char(255)IDC-3TrainInterval

3、ID列车区间号Int(10)IDC-4Start起始站Int(10)IDC-5End目的站Int(10)IDC-6Starttime发车时间Char(255)IDC-7Arrivetime到站时间Char(255)IDC-8Date日期Char(255)IDC-9CarNo车厢号Int(10)IDC-10SeatNo座位号Int(10)二、概要设计(一)、系统组成系统开发的总体目标是实现火车票订/售票管理的系统化和自动化,保证车票售出和车次信息管理的正确无误,确保车票和车次管理的有效。在本系统中分为两个部分,分别是车次信息功能部分和车票预定功能部分,主要任务是对车次信息、车票信息等操作及外理。

4、本系统为C/S结构,运行平台为jdk1.6以上版本,以及MySQL6.0以上版本。下图为系统结构图: 系统框架火车订票系统车票预定或出售车次查询(二)、数据库设计1、概念结构设计概念设计阶段主要是将需求分析阶段得到的用户需求抽象为信息结构(概念模型)的过程。根据之前的分析,数据库应该主要的实体有列车区间和车票信息。经过分析得到的实体关系图如下车票列车区间号日期车厢号座位号列车区间列车区间号起始站目的站车次号到站时间发车时间 实体关系图2、逻辑结构设计将E-R图转化为关系模式:在设计时,将一个1:n联系的单方主码加至多方。一个实体单独转化成一张表。根据设计原则和以上E-R图,转化为以下两张表:列

5、车区间表:TrainInterval(列车区间号 、车次号、起始站、目的站、发车时间、到站时间)车票表:ticket(列车区间号、日期、车厢号、座位号)3、数据库模式定义列车区间表 列名 数据类型 取值约束 可否为空 说明TrainIntervalID Int(10) 不可 列车区间号StartInt(10) 不可 起始站End Int(10)不可 目的站Starttime Char(30) 可 发车时间Arrivetime Char(30) 可 到站时间TrainID Money(8) 可 车次号车票表 列名 数据类型 取值约束 可否为空 说明TrainIntervalID Int(10)

6、不可 列车区间号DateChar(255) 不可 日期CarNo Int(10)不可 车厢号SeatNo Int(10) 不可 座位号三、数据库实施阶段数据库的建立是直接在Navicat中建的,数据库中的表清单在之前已经列出。在JFrame界面建立数据库不同功能模块的操作对话框,并对所有对话框中的控件按钮进行设定,添加成员函数,使得数据库的程序框架确定下来。接着是对成员函数进行补充使程序能顺利运行并能连上数据库,对连接模块进行补充设定,使得基本权限确定。在数据库建立过程中通过索引实现了对表的快捷查询。连接数据库时要注意程序中数据库各项属性的定义描述,避免其与数据库表中的属性值产生差异。四、详细

7、设计1、模块简述本火车订票管理系统主要的所有模块主要是分为数据库连接查询模块、网络连接模块、线程管理模块的三个部分,下面对三个个部分进行再分类,共有7个模块。模块类别 模块编号 模块名称公共模块模块功能网络连接T1Net.ClientPackets用户封包处理T2Net.ServerPackets系统封包处理线程管理T3ServerThread系统监听线程T4ClientThread用户连入线程数据库查询T5CityTable城市信息查询T6TrainIntervalTable列车区间查询T7SeatTable车票预定功能2、模块设计下面给出模块的背景,设计思路,算法,界面以及关键代码,比较简

8、单的模块就仅给界面设计以及算法设计,比较复杂的模块会给出相应的数据库有关触发器,存储过程和视图的设计。而本系统重的模块主要有一下几个:1、 数据库查询模块此模块提供系统与数据库的数据交换,包括从数据库中读入城市信息、列车区间信息和座位信息,并在用户线程连接的时候提供城市列表;在查询车次信息时从列车区间中搜索出所有满足条件的列车信息;在订票时首先判断是否在两个城市之间的所有列车区间上都有同样的座位是空着的,暂时不能提供拼票功能。a. 城市信息查询 当一个用户线程连接被建立的时候,系统将预设在数据库中的城市信息发送到用户端,保证用户输入的城市是系统可识别的。在之后的C/S通信中城市将用其编号代替。

9、public class CityTable private static CityTable _instance = null;private ArrayList<City> _cityList = new ArrayList<City>();private HashMap<String, City> _cityMap = new HashMap<String, City>();private CityTable() public static CityTable getInstance() public ArrayList<City&g

10、t; getCityList() public int getCityNum() public City getCityByName(String name) b. 列车区间查询提供简单的站站查询功能。并为订票功能模块提供专门的列车区间查询功能。public class TrainIntervalTable private static TrainIntervalTable _instance = null;private ArrayList<TrainInterval> _trainIntervalList = new ArrayList<TrainInterval>

11、();private ArrayList<TrainInterval> _startList = new ArrayList<TrainInterval>();private ArrayList<TrainInterval> _endList = new ArrayList<TrainInterval>();private TrainIntervalTable() public static TrainIntervalTable getInstance() public synchronized ArrayList<TrainInterva

12、l> getTrain(int start, int end, int mask) / used in SeatTable.bookSeatpublic ArrayList<TrainInterval> getTrainIntervalList(int start, int end, String trainID) c. 座位信息查询提供订票功能,自动判断是不是存在这样一个座位:它在起始站和目标站之间的所有列车区间上都没有被占用。如果有,返回一个座位信息,并在数据库中添加订票信息。否则返回一个不存在的座位。public class SeatTable private stat

13、ic SeatTable _instance = null;private boolean isTaken = new Boolean Config.TRAIN_CAR_NUM Config.TRAIN_SEAT_NUM ;private SeatTable() public static SeatTable getInstance() public synchronized Seat bookSeat(int start, int end, String trainID, String date) 2、 网络连接模块使用Socket连接。提供封包处理类(PacketHandler),根据不同

14、的封包编号交与对应的用户封包处理类(ClientPacket)处理,并向发送用户封包的用户线程发送处理结果的系统封包类(ServerPacket)作为回应。a. PacketHandler:封包分类器public class PacketHandler private ClientThread _client;public PacketHandler(ClientThread client) public void handlePacket(byte data) int opcode = data0 & 0xFF;switch(opcode) default:b. ClientPack

15、et:用户封包处理父类ClientBasePacket,包含从socket管道中读取各类型数据的方法。详见代码。c. ServerPacket:处理结果封包父类ServerBasePacket,提供往socket管道中写入各类型数据的方法。详见代码。3、 线程管理模块提供线程的管理和各类基本操作。a. 线程池GeneralThreadPool线程的创建和管理类,使用java标准线程池。实际上在本系统中几乎没有用到此类的功能。b. ServerThread唯一的一个系统线程,用于端口监听。当出现新的socket连接时,为它建立一个单独的用户线程。public class ServerThread

16、 extends Thread private static ServerThread _instance;private ServerSocket _serverSocket;private ServerThread() public static ServerThread getInstance() public void initialize() throws Exception Overridepublic void run() while (true) try /监听端口,创建用户线程 catch (IOException e) c. ClientThread被ServerThread创建的用户线程,对应于一个socket连接,在各自的用户线程中处理查询和订票的功能。public class ClientThread implements Runnableprivate Socket _socket;private InputStream _in;private OutputStream _out;private PacketHandler _handler;publ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论