数据库课程设计-机票预订系统_第1页
数据库课程设计-机票预订系统_第2页
数据库课程设计-机票预订系统_第3页
数据库课程设计-机票预订系统_第4页
数据库课程设计-机票预订系统_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、数据库原理课程设计机票预订管理系统学 院: 计算机与信息科学学院专 业: 计算机科学与技术 班 级:计科1303姓名学号: XXX 13203403XX 指导教师: 高金华 职称 讲师完成时间:2015年12月数据库原理课程设计11 系统概述32 数据库设计42.1 需求分析42.2 概念结构设计72.3 逻辑结构设计102.4 物理结构设计112.5 设计小结153 应用程序设计163.1 需求分析163.2 概要设计193.3 详细设计203.4 系统测试323.5 设计小结381 系统概述随着全球进入信息化时代,航空公司为了适应当前越来越激烈的竞争,增强公司的信息化程度,提高公司的售票管

2、理的效率,就建立起了相应的航空预订票系统,成功实现提高了航空系统的售票效率和管理水平。在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,开发一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的机票预定系统,实现航空公司的机票销售的自动化的计算机系统,为企业的决策层提供准确、精细、迅速的机票销售信息。根据可行性研究的结果和客户的要求,分析现有情况及问题。随着社会发展的不断地进步,人民消费水平的不断地提高,致使民航事业不断壮大,乘坐民航的消费者越来越多,因此机票的预定也越显重要,航空公司为方便客户出行,需开发一个机票预定系统。根据预定机票的客户信息,包括姓名、性

3、别、身份证号码、出行时间、出行目的地等,系统经过查询航空公司内的航班数据服务器后,为旅客安排航班2 数据库设计2.1 需求分析2.1.1 数据流图数据库用 户用户信息录入机 票订票、改签、退票机票信息录入管理员更新航班信息航 班2.1.2 数据词典表2-1 plane飞机信息表表中列名数据类型可否为空说明flightNumvarchar2primary key飞机编号seatsnumbernot null座位数表2-2 flight航班信息表表中列名数据类型可否为空说明 flightNumvarchar2primary key航班编号planeNumvarchar2not null飞机编号st

4、artPointvarchar2not null 出发地detinationvarchar2not null目的地startTimevarchar2not null起飞时间endTimevarchar2not null到达时间表2-3 ticket 机票表表中列名数据类型可否为空说明 flightNumvarchar2primary key航班号gradevarchar2not null机舱等级seatNumvarchar2not null 座位号ticketPricenumbernot null机票价格presellvarchar2not null预售状态表2-4 passenger 旅客表

5、表中列名数据类型可否为空说明 namevarchar2primary key旅客名sexvarchar2not null旅客性别idNumvarchar2not null 身份证phoneNumvarchar2not null手机号passwordvarchar2not null密码表2-5 buy购买表表中列名数据类型可否为空说明 namevarchar2foreign key旅客名flightNumvarchar2foreign key航班号greadvarchar2not null 机舱等级seatNumvarchar2not null座位号paymoneynumbernot null机

6、票价格buyNumvarchar2not null购买数量表2-6 manager 管理员表表中列名数据类型可否为空说明 mnamevarchar2not null unique管理员编号mpwdvarchar2not null管理员姓名2.1.3 加工说明我们的系统需要六个实体:(1)飞机实体实体名:plane角色:关于飞机的信息属性:飞机编号,座位数主键:飞机编号(2)航班实体实体名:flight角色:航班信息属性:航班编号,出发地,目的地,起飞时间,到达时间主键:航班编号(3)机票实体实体名:ticket角色:机票信息属性:航班号,机舱等级,座位号,机票价格,余票数主键:座位号(4)旅客

7、实体实体名:passenger角色:旅客信息属性:旅客名,旅客性别,身份证,手机号,密码主键:旅客名(5)机票购买实体实体名:buy角色:旅客购买机票后的信息属性:旅客名,航班号,机舱等级,座位号,机票价格,购买数量(6)管理员实体实体名:manager角色:管理员信息属性:管理员名,密码2.2 概念结构设计2.2.1 E-R图根据需求分析抽象出信息结构,可得该系统的E-R图。(1) 航班实体属性图,航班的信息由航班号、飞机编号、出发地、目的地、起飞时间、到达时间等属性组成如图所示。起飞时间目的地航班号到达时间出发地飞机编号航班信息图(1)航班信息实体属性图(2) 飞机是实体属性图,飞机信息由

8、飞机编号和座位数属性组成如图所示。座位数飞机编号飞机信息图(2)飞机信息实体属性图(3) 管理员实体属性图,管理员信息由姓名和登录密码属性组成如图所示登陆密码姓名管理员信息图(3)管理员信息实体属性图(4) 机票实体属性图,机票信息有:航班号、机舱等级、座位号、票价、预售状态等属性如图所示。座位号机舱等级票价航班号预售状态机票信息图(4)机票信息实体属性图(5) 旅客属性图,旅客信息有:身份证号、姓名、性别、联系方式、密码等属性如图所示。性别联系方式姓名密码身份证号旅客信息图(5)旅客信息实体属性图(6) 订单属性图,订单信息有:姓名、航班号、座位号、机舱等级、金额、订单数等属性如图所示。座位

9、号航班号机舱等级金额姓名订单数订单信息图(6)订单信息实体属性图根据属性图和需求分析,可得到总E-R图,如图所示。图(7)总的E-R图2.3 逻辑结构设计2.3.1 关系模式将总体概念结构E-R图转化成关系模型。(主键用下划线标出)飞机(飞机编号,座位数)航班(航班编号,飞机编号,出发地,目的地,起飞时间,到达时间)管理员(管理员姓名,密码)机票(航班编号,机舱等级,座位号,票价,当前预售状态)旅客(身份证号 ,姓名,性别,密码,联系电话)购买(姓名,航班号,座位号,机舱等级,实付款,数量)2.4 物理结构设计根据总体结构图设计机票预定系统基本表结构,其相应标的定义如下:表1 飞机信息中文名称

10、类型长度是否非空主关键字备注飞机编号varchar210Y座位数numberN总座位表2 航班信息中文名称类型长度是否非空主关键字备注航班号varchar210Y飞机编号varchar210N机舱等级varchar210N起飞地varchar210N目的地varchar210N起飞时间varchar2年月日/时分到达时间varchar2年月日/时分表3管理员信息中文名称类型长度是否非空主关键字备注管理员姓名char10Y登陆密码char10N表4机票信息中文名称类型长度是否非空主关键字备注航班号char10N机舱等级char10N座位号char10Y票价float(2)N 元当前预售状态cha

11、r10NY/N 表5旅客信息中文名称类型长度是否非空主关键字备注旅客姓名char10Y身份证号char10N性别char10N联系方式char10N密码char15N表4-6 购买信息中文名称类型长度是否非空主关键字备注旅客姓名char10Y座位号char10N航班号float(1)机舱等级float(2)NN 实付款intNN购买数量char10N数据库实现:-飞机信息表 planecreate table plane(flightNum varchar2(10), -航班号seats number(8) not null -座位数);insert into plane values(

12、9;航班1',5);insert into plane values('航班2',5);insert into plane values('航班3',5);insert into plane values('航班4',5);select *from plane;-航班表 flightcreate table flight(flightNum varchar2(10) primary key, -航班编号planeNum varchar2(10), -飞机编号startPoint varchar2(20) not null, -出发地 de

13、tination varchar2(10) not null, -目的地startTime varchar2(20) not null, -起飞时间endtime varchar2(20) not null -到达时间);-插入数据到航班表(flight)中insert into flight values('航班1','长沙','武汉','2015-12-29 08:00','2015-12-29 10:00');insert into flight values('航班2','北京

14、9;,'台湾','2015-12-30 08:30','2015-12-29 11:00');insert into flight values('航班3','北京','上海','2016-01-01 11:30','2016-01-1 15:00');insert into flight values('航班4','广州','杭州','2016-01-10 09:00','2016-01-02

15、10:00');select *from flight;-航班表的flightNum作为飞机信息表flightNum的外键alter table plane add constraint fk_fn foreign key(flightNum) references flight(flightNum);-创建机票表 ticketcreate table ticket(flightNum varchar2(10) not null , -航班号grade varchar2(10) not null, -机舱等级seatNum varchar2(10) primary key, -座位号t

16、icketPrice float(2) not null, -机票价格presell varchar2(10) not null -余票数);-插入数据到机票表(ticket)中insert into ticket values('航班1','头等舱','1-01','500','1');insert into ticket values('航班1','公务舱','1-02','400','1');insert into ticket

17、values('航班1','公务舱','1-03','400','1');insert into ticket values('航班1','经济舱','1-04','300','1');insert into ticket values('航班1','经济舱','1-05','300','1');insert into ticket values('

18、航班2','头等舱','2-01','500','1');insert into ticket values('航班2','公务舱','2-02','400','1');insert into ticket values('航班2','公务舱','2-03','400','1');insert into ticket values('航班2',

19、9;经济舱','2-04','300','1');insert into ticket values('航班2','经济舱','2-05','300','1');insert into ticket values('航班3','头等舱','3-01','500','1');insert into ticket values('航班3','公务舱',&

20、#39;3-02','400','1');insert into ticket values('航班3','公务舱','3-03','400','1');insert into ticket values('航班3','经济舱','3-04','300','1');insert into ticket values('航班3','经济舱','3-05'

21、;,'300','1');insert into ticket values('航班4','头等舱','4-01','500','1');insert into ticket values('航班4','公务舱','4-02','400','1');insert into ticket values('航班4','公务舱','4-03','400&#

22、39;,'1');insert into ticket values('航班4','经济舱','4-04','300','1');insert into ticket values('航班4','经济舱','4-05','300','1');select *from ticket;-航班表的flightNum作为机票表flightNum的外键alter table ticket add constraint fk_tfn

23、 foreign key(flightNum) references flight(flightNum);-创建旅客表create table passenger(name varchar2(10) primary key, -旅客名sex varchar2(10) not null, -旅客性别idNum varchar2(20) not null, -身份证phoneNum varchar2(15) not null, -手机号password varchar2(10) not null -密码);-插入数据到旅客表(passenger)中insert into passenger val

24、ues('张三','男','1220101','1316060001','zs');insert into passenger values('李四','男','1220102','1316060002','ls');insert into passenger values('王五','女','1220103','1316060003','ww');inse

25、rt into passenger values('赵六','男','1220104','1316060004','zl');select *from passenger;-创建购买表create table buy(name varchar2(20), -旅客名flightNum varchar2(10), -航班号gread varchar2(10) not null, -机舱等级seatNum varchar2(10) not null, -座位号paymoney float(2) not null, -机票

26、价格buyNum number(8) not null -购买数量);-插入数据到购买表(buy)中insert into buy values('张三','航班1','公务舱','1-02',400,1);insert into buy values('李四','航班2','经济舱','3-01',400,1);insert into buy values('王五','航班3','公务舱','3-05'

27、,270,1);insert into buy values('赵六','航班4','经济舱','4-04',270,1);select *from buy;-旅客表的name作为购买表name的外键alter table buy add constraint fk_bn foreign key(name) references passenger(name);-管理员表create table manager(mname varchar2(20) not null, -管理员名mpwd varchar2(10) not null

28、, -管理员登录密码yuliu varchar2(20);select * from manager;insert into manager values('李华','aaaaaa',null);select * from manager where mname = '李华' and mpwd= 'aaaaaa'2.5 设计小结经过这几个星期的努力,本次课程设计终于完成了。通过这次课程设计,我对数据库这门课程有了更深入的理解,数据库是一门实践性较强的课程,同时我明白了理论与实际应用相结合的重要性,掌握并熟练运用SQL语句,提高了我

29、的综合运用所学知识的能力。在本次课程设计和过程中,由于时间不是很长,再加上要求独立完成,系统需求分析上可能不是很全面,程序中还存在很多缺,希望老师能给予批评和指导。经过这次课程设计,我的知识得到了很大,经验也更加丰富。希望能在今后的不断的学习中和努力中,把程序做得更好。我们学习并应用了SQL语言,对数据库的创建、修改、删除方法有了一定的了解,通过导入表和删除表、更改表学会了对于表的一些操作,为了建立一个关系数据库信息管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为毕业设计打下基础。这次课程设计,我更加深入的了解到软件工程的复杂性,以

30、及前期规划分析的重要性。其实在Java这种面向对象的程序设计中,我的开发模型能力很是一般。所以一人之力也难以完成。还得多多感谢同学的帮助,在以后的学习中应该学习一些先进的思想,并多加实践,从写程序和软件架构两个方面都增强自己的能力。最后,感谢指导老师给予的帮助。3 应用程序设计3.1 需求分析3.1.1 数据流图数据库用 户用户信息录入机 票订票、改签、退票机票信息录入管理员更新航班信息航 班3.1.2 数据词典表3-1 plane飞机信息表表中列名数据类型可否为空说明flightNumvarchar2primary key飞机编号seatsnumbernot null座位数表3-2 flig

31、ht航班信息表表中列名数据类型可否为空说明 flightNumvarchar2primary key航班编号planeNumvarchar2not null飞机编号startPointvarchar2not null 出发地detinationvarchar2not null目的地startTimevarchar2not null起飞时间endTimevarchar2not null到达时间表3-3 ticket 机票表表中列名数据类型可否为空说明 flightNumvarchar2primary key航班号gradevarchar2not null机舱等级seatNumvarchar2no

32、t null 座位号ticketPricenumbernot null机票价格presellvarchar2not null预售状态表3-4 passenger 旅客表表中列名数据类型可否为空说明 namevarchar2primary key旅客名sexvarchar2not null旅客性别idNumvarchar2not null 身份证phoneNumvarchar2not null手机号passwordvarchar2not null密码表3-5 buy购买表表中列名数据类型可否为空说明 namevarchar2foreign key旅客名flightNumvarchar2forei

33、gn key航班号greadvarchar2not null 机舱等级seatNumvarchar2not null座位号paymoneynumbernot null机票价格buyNumvarchar2not null购买数量表3-6 manager 管理员表表中列名数据类型可否为空说明 mnamevarchar2not null unique管理员编号mpwdvarchar2not null管理员姓名3.1.3 加工说明我们的系统需要六个实体:(1)飞机实体实体名:plane角色:关于飞机的信息属性:飞机编号,座位数主键:飞机编号(2)航班实体实体名:flight角色:航班信息属性:航班编号

34、,出发地,目的地,起飞时间,到达时间主键:航班编号(3)机票实体实体名:ticket角色:机票信息属性:航班号,机舱等级,座位号,机票价格,余票数主键:座位号(4)旅客实体实体名:passenger角色:旅客信息属性:旅客名,旅客性别,身份证,手机号,密码主键:旅客名(5)机票购买实体实体名:buy角色:旅客购买机票后的信息属性:旅客名,航班号,机舱等级,座位号,机票价格,购买数量(6)管理员实体实体名:manager角色:管理员信息属性:管理员名,密码3.2 概要设计3.2.1 功能模块图航班信息管理模块机票信息管理模块机票预订系统旅客信息管理模块订单信息管理模块3.3 详细设计3.3.1

35、主要代码package util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;/* * 建立数据库连接 * */public class DBUtil private static DBConfig dbConfig;static /实例化配制文件对象dbConfig = new DBConfig();try /加载数据库驱动Class.forName(dbConf

36、ig.getValue("className"); catch (ClassNotFoundException e) throw new RuntimeException("数据库加载驱动失败.", e);/建立连接public static Connection getCon()Connection con = null;try /建立数据库连接con = DriverManager.getConnection(dbConfig.getValue("url"), dbConfig.getValue("user")

37、, dbConfig.getValue("password"); catch (SQLException e) throw new RuntimeException("数据库连接失败.", e);return con;/关闭连接public static void close(Connection con, Statement st, ResultSet rs)if (rs != null)try rs.close(); catch (SQLException e) throw new RuntimeException("关闭查询结果集失败.&

38、quot;, e);if (st != null)try st.close(); catch (SQLException e) throw new RuntimeException("关闭SQL执行工具失败失败.", e);if (con != null)try con.close(); catch (SQLException e) throw new RuntimeException("关闭数据库连接失败.", e);public static void main(String args) if (getCon() != null)System.out

39、.println("数据库连接成功.");elseSystem.out.println("数据库连接失败.");package util;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;public class

40、 DBHelper private static Connection con;private static boolean isTransSuccess = true; /做事务控制public static Connection getCon()if (con = null)con = DBUtil.getCon();return con;/执行有参的insert, update, delete语句public static void executeSql(String sql, List<Object> params)executeSql(sql, params, true)

41、;/执行带事务有参的insert, update, delete语句/isAutoCommit为true表示结束事务, false表示事务过程中public static void executeSql(String sql, List<Object> params, boolean isAutoCommit)Connection con = null;PreparedStatement ps = null;try if (isTransSuccess = false) /事务操作中, 只有有一个失败整个事务过程就失败throw new RuntimeException("

42、;事务失败");/con = getCon(); /获得连接con=DBUtil.getCon();/System.out.println(con);con.setAutoCommit(isAutoCommit); /不会自动提交.ps = con.prepareStatement(sql); /预处理SQL语句setParamValue(ps, params);ps.executeUpdate(); catch (Exception e) isTransSuccess = false;if (isAutoCommit) /判断是不是,整个事务结束, 然后回滚事务isTransSuc

43、cess = true;try con.rollback();/操作回滚数据 catch (SQLException e1) throw new RuntimeException("数据回滚失败.", e); throw new RuntimeException(sql + "数据操作失败.", e);finally/当不开启事务时,关闭数据库连接if (isAutoCommit)DBUtil.close(con, ps, null);/执行无参的insert, update, delete语句public void executeSql(String

44、sql)executeSql(sql, null);/执行有参查询语句, 如果查询一个字段还回一个List<与字段类型相同>, 如果查询多个字段返回List<Object>public static List<Object> executeQuerySql(String sql, List<Object> params)Connection con = null;PreparedStatement ps = null;ResultSet rs = null;List<Object> objs = null;try con = DBUt

45、il.getCon();ps = con.prepareStatement(sql);setParamValue(ps, params);rs = ps.executeQuery();ResultSetMetaData rsmd = rs.getMetaData();int cols = rsmd.getColumnCount();objs = new ArrayList<Object>();if(cols = 1)while(rs.next()objs.add(rs.getObject(1);elsewhile(rs.next()Object os = new Objectcol

46、s;for (int i = 0; i < cols; i+) osi = rs.getObject(i + 1);objs.add(os); catch (Exception e) e.printStackTrace();finallyDBUtil.close(con, ps, null);return objs;/给PreparedStatement的参数注值private static void setParamValue(PreparedStatement ps, List<Object> params) if (params != null && p

47、arams.size() > 0)for (int i = 0; i < params.size(); i+) try ps.setObject(i + 1, params.get(i); catch (SQLException e) e.printStackTrace();elsereturn;/public static void main(String args) /if(getCon()!=null)/System.out.println("连接成功");/else/System.out.println("连接失败");/主要方法/注

48、册public boolean addpassenger(String name, String sex, String idNum,String phoneNum, String pwd) String sql = "insert into passenger values(?,?,?,?,?)"List<Object> params = new ArrayList<Object>();params.add(name);params.add(sex);params.add(idNum);params.add(phoneNum);params.add

49、(pwd);trydb.executeSql(sql, params);return true;catch(Exception e)return false;/用户登录操作public boolean login(String name, String pwd) String sql ="select * from passenger where name = ? and password= ?"List<Object> params = new ArrayList<Object>();params.add(name);params.add(pwd)

50、;List<Object> results = db.executeQuerySql(sql, params);if(results != null && results.size() > 0)return true;elsereturn true;/查询个人信息public List<Object> findAllClasses() String sql = "select * from passenger"return db.executeQuerySql(sql, null);public boolean updateCl

51、asses(String sex, String idNum,String phoneNum, String password,String name) String sql = "update passenger set sex = ?,idNum=?,phoneNum=?,password= ? where name= ?"List<Object> params = new ArrayList<Object>();params.add(sex);params.add(idNum);params.add(phoneNum);params.add(p

52、assword);params.add(InitData.loginPname);trydb.executeSql(sql, params);return true;catch(Exception e)return false;/订票public boolean addClasses(String name,String flightnum, String gread, String seatnum,String payMoney, String buynum) String sql = "insert into buy values(?,?,?,?,?,?)"List&l

53、t;Object> params = new ArrayList<Object>();params.add(name);params.add(flightnum);params.add(gread);params.add(seatnum);params.add(payMoney);params.add(buynum);trydb.executeSql(sql, params);/订票成功后把余票设置为0boolean op=true;if(ticketNum(op,seatnum)return true;elsereturn false;catch(Exception e)return false;/订票后余票减1,退票后加1public boolean ticketNum(boolean op,String seatNum)St

温馨提示

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

评论

0/150

提交评论