收藏 分销(赏)

数据库优秀课程设计机票预订系统.docx

上传人:人****来 文档编号:2685854 上传时间:2024-06-04 格式:DOCX 页数:46 大小:998.65KB
下载 相关 举报
数据库优秀课程设计机票预订系统.docx_第1页
第1页 / 共46页
数据库优秀课程设计机票预订系统.docx_第2页
第2页 / 共46页
点击查看更多>>
资源描述
《数据库原理》课程设计 机票预订管理系统 学 院: 计算机和信息科学学院 专 业: 计算机科学和技术 班 级:计科1303 姓名学号: XXX 13203403XX 指导老师: 高金华 职称 讲师 完成时间:12月 《数据库原理》课程设计 1 1 系统概述 3 2 数据库设计 4 2.1 需求分析 4 2.2 概念结构设计 7 2.3 逻辑结构设计 10 2.4 物理结构设计 11 2.5 设计小结 15 3 应用程序设计 16 3.1 需求分析 16 3.2 概要设计 19 3.3 具体设计 20 3.4 系统测试 32 3.5 设计小结 38 1 系统概述 伴随全球进入信息化时代,航空企业为了适应该前越来越猛烈竞争,增强企业信息化程度,提升企业售票管理效率,就建立起了对应航空预订票系统,成功实现提升了航空系统售票效率和管理水平。 在计算机网络,数据库和优异开发平台上,利用现有软件,配置一定硬件,开发一个含有开放体系结构、易扩充、易维护、含有良好人机交互界面机票预定系统,实现航空企业机票销售自动化计算机系统,为企业决议层提供正确、精细、快速机票销售信息。 依据可行性研究结果和用户要求,分析现有情况及问题。 伴随社会发展不停地进步,人民消费水平不停地提升,致使民航事业不停壮大,乘坐民航消费者越来越多,所以机票预定也越显关键,航空企业为方便用户出行,需开发一个机票预定系统。依据预定机票用户信息,包含姓名、性别、身份证号码、出行时间、出行目标地等,系统经过查询航空企业内航班数据服务器后,为旅客安排航班 2 数据库设计 2.1 需求分析 2.1.1 数据流图 数据库 用 户 用户信息录入 机 票 订票、改签、退票 机票信息录入 管理员 更新航班信息 航 班 2.1.2 数据词典 表2-1  plane飞机信息表 表中列名 数据类型 可否为空 说明 flightNum varchar2 primary key 飞机编号 seats number not null 座位数 表2-2  flight航班信息表 表中列名 数据类型 可否为空 说明 flightNum varchar2 primary key 航班编号 planeNum varchar2 not null 飞机编号 startPoint varchar2 not null 出发地 detination varchar2 not null 目标地 startTime varchar2 not null 起飞时间 endTime varchar2 not null 抵达时间 表2-3  ticket 机票表 表中列名 数据类型 可否为空 说明 flightNum varchar2 primary key 航班号 grade varchar2 not null 机舱等级 seatNum varchar2 not null 座位号 ticketPrice number not null 机票价格 presell varchar2 not null 预售状态 表2-4  passenger 旅客表 表中列名 数据类型 可否为空 说明 name varchar2 primary key 旅客名 sex varchar2 not null 旅客性别 idNum varchar2 not null 身份证 phoneNum varchar2 not null 手机号 password varchar2 not null 密码 表2-5  buy购置表 表中列名 数据类型 可否为空 说明 name varchar2 foreign key 旅客名 flightNum varchar2 foreign key 航班号 gread varchar2 not null 机舱等级 seatNum varchar2 not null 座位号 paymoney number not null 机票价格 buyNum varchar2 not null 购置数量 表2-6  manager 管理员表 表中列名 数据类型 可否为空 说明 mname varchar2 not null unique 管理员编号 mpwd varchar2 not null 管理员姓名 2.1.3 加工说明 我们系统需要六个实体: (1)飞机实体 实体名:plane 角色:相关飞机信息 属性:飞机编号,座位数 主键:飞机编号 (2)航班实体 实体名:flight 角色:航班信息 属性:航班编号,出发地,目标地,起飞时间,抵达时间 主键:航班编号 (3)机票实体 实体名:ticket 角色:机票信息 属性:航班号,机舱等级,座位号,机票价格,余票数 主键:座位号 (4)旅客实体 实体名:passenger 角色:旅客信息 属性:旅客名,旅客性别,身份证,手机号,密码 主键:旅客名 (5)机票购置实体 实体名:buy 角色:旅客购置机票后信息 属性:旅客名,航班号,机舱等级,座位号,机票价格,购置数量 (6)管理员实体 实体名:manager 角色:管理员信息 属性:管理员名,密码 2.2 概念结构设计 2.2.1 E-R图 依据需求分析抽象出信息结构,可得该系统E-R图。 (1) 航班实体属性图,航班信息由航班号、飞机编号、出发地、目标地、起飞时间、抵达时间等属性组成图所表示。 起飞时间 目标地 航班号 抵达时间 出发地 飞机编号 航班信息 图(1)航班信息实体属性图 (2) 飞机是实体属性图,飞机信息由飞机编号和座位数属性组成图所表示。 座位数 飞机编号 飞机信息 图(2)飞机信息实体属性图 (3) 管理员实体属性图,管理员信息由姓名和登录密码属性组成图所表示 登陆密码 姓名 管理员信息 图(3)管理员信息实体属性图 (4) 机票实体属性图,机票信息有:航班号、机舱等级、座位号、票价、预售状态等属性图所表示。 座位号 机舱等级 票价 航班号 预售状态 机票信息 图(4)机票信息实体属性图 (5) 旅客属性图,旅客信息有:身份证号、姓名、性别、联络方法、密码等属性图所表示。 性别 联络方法 姓名 密码 身份证号 旅客信息 图(5)旅客信息实体属性图 (6) 订单属性图,订单信息有:姓名、航班号、座位号、机舱等级、金额、订单数等属性图所表示。 座位号 航班号 机舱等级 金额 姓名 订单数 订单信息 图(6)订单信息实体属性图 依据属性图和需求分析,可得到总E-R图,图所表示。 图(7)总E-R图 2.3 逻辑结构设计 2.3.1 关系模式 将总体概念结构E-R图转化成关系模型。(主键用下划线标出) 飞机(飞机编号,座位数) 航班(航班编号,飞机编号,出发地,目标地,起飞时间,抵达时间) 管理员(管理员姓名,密码) 机票(航班编号,机舱等级,座位号,票价,目前预售状态) 旅客(身份证号 ,姓名,性别,密码,联络电话) 购置(姓名,航班号,座位号,机舱等级,实付款,数量) 2.4 物理结构设计 依据总体结构图设计机票预定系统基础表结构,其对应标定义以下: 表1 飞机信息 汉字名称 类型 长度 是否非空 主关键字 备注 飞机编号 varchar2 10 Y 座位数 number N 总座位 表2 航班信息 汉字名称 类型 长度 是否非空 主关键字 备注 航班号 varchar2 10 Y 飞机编号 varchar2 10 N 机舱等级 varchar2 10 N 起飞地 varchar2 10 N 目标地 varchar2 10 N 起飞时间 varchar2 年月日/时分 抵达时间 varchar2 年月日/时分 表3管理员信息 汉字名称 类型 长度 是否非空 主关键字 备注 管理员姓名 char 10 Y 登陆密码 char 10 N 表4机票信息 汉字名称 类型 长度 是否非空 主关键字 备注 航班号 char 10 N 机舱等级 char 10 N 座位号 char 10 Y 票价 float(2) N 元 目前预售状态 char 10 N Y/N 表5旅客信息 汉字名称 类型 长度 是否非空 主关键字 备注 旅客姓名 char 10 Y 身份证号 char 10 N 性别 char 10 N 联络方法 char 10 N 密码 char 15 N 表4-6 购置信息 汉字名称 类型 长度 是否非空 主关键字 备注 旅客姓名 char 10 Y 座位号 char 10 N 航班号 float(1) 机舱等级 float(2) N N 实付款 int N N 购置数量 char 10 N 数据库实现: --飞机信息表 plane create table plane ( flightNum varchar2(10), --航班号 seats number(8) not null --座位数 ); insert into plane values('航班1',5); insert into plane values('航班2',5); insert into plane values('航班3',5); insert into plane values('航班4',5); select *from plane; --航班表 flight create table flight ( flightNum varchar2(10) primary key, --航班编号 planeNum varchar2(10), --飞机编号 startPoint varchar2(20) not null, --出发地 detination varchar2(10) not null, --目标地 startTime varchar2(20) not null, --起飞时间 endtime varchar2(20) not null --抵达时间 ); --插入数据到航班表(flight)中 insert into flight values('航班1','长沙','武汉','-12-29 08:00','-12-29 10:00'); insert into flight values('航班2','北京','台湾','-12-30 08:30','-12-29 11:00'); insert into flight values('航班3','北京','上海','-01-01 11:30','-01-1 15:00'); insert into flight values('航班4','广州','杭州','-01-10 09:00','-01-02 10:00'); select *from flight; --航班表flightNum作为飞机信息表flightNum外键 alter table plane add constraint fk_fn foreign key(flightNum) references flight(flightNum); --创建机票表 ticket create table ticket ( flightNum varchar2(10) not null , --航班号 grade varchar2(10) not null, --机舱等级 seatNum varchar2(10) primary key, --座位号 ticketPrice 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 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('航班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','经济舱','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','公务舱','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','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','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 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 values('张三','男','121','','zs'); insert into passenger values('李四','男','122','','ls'); insert into passenger values('王五','女','123','','ww'); insert into passenger values('赵六','男','124','','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, --机票价格 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',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, --管理员登录密码 yuliu varchar2(20) ); select * from manager; insert into manager values('李华','aaaaaa',null); select * from manager where mname = '李华' and mpwd= 'aaaaaa'; 2.5 设计小结 经过这多个星期努力,此次课程设计最终完成了。经过这次课程设计,我对数据库这门课程有了更深入了解,数据库是一门实践性较强课程,同时我明白了理论和实际应用相结合关键性,掌握并熟练利用SQL语句,提升了我综合利用所学知识能力。 在此次课程设计和过程中,因为时间不是很长,再加上要求独立完成,系统需求分析上可能不是很全方面,程序中还存在很多缺,期望老师能给批评和指导。经过这次课程设计,我知识得到了很大,经验也愈加丰富。期望能在以后不停学习中和努力中,把程序做得愈加好。 我们学习并应用了SQL语言,对数据库创建、修改、删除方法有了一定了解,经过导入表和删除表、更改表学会了对于表部分操作,为了建立一个关系数据库信息管理系统,必需得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护和系统评价通常过程,为毕业设计打下基础。 这次课程设计,我愈加深入了解到软件工程复杂性,和前期计划分析关键性。其实在Java这种面向对象程序设计中,我开发模型能力很是通常。所以一人之力也难以完成。还得多多感谢同学帮助,在以后学习中应该学习部分优异思想,并多加实践,从写程序和软件架构两个方面全部增强自己能力。 最终,感谢指导老师给帮助。 3 应用程序设计 3.1 需求分析 3.1.1 数据流图 数据库 用 户 用户信息录入 机 票 订票、改签、退票 机票信息录入 管理员 更新航班信息 航 班 3.1.2 数据词典 表3-1  plane飞机信息表 表中列名 数据类型 可否为空 说明 flightNum varchar2 primary key 飞机编号 seats number not null 座位数 表3-2  flight航班信息表 表中列名 数据类型 可否为空 说明 flightNum varchar2 primary key 航班编号 planeNum varchar2 not null 飞机编号 startPoint varchar2 not null 出发地 detination varchar2 not null 目标地 startTime varchar2 not null 起飞时间 endTime varchar2 not null 抵达时间 表3-3  ticket 机票表 表中列名 数据类型 可否为空 说明 flightNum varchar2 primary key 航班号 grade varchar2 not null 机舱等级 seatNum varchar2 not null 座位号 ticketPrice number not null 机票价格 presell varchar2 not null 预售状态 表3-4  passenger 旅客表 表中列名 数据类型 可否为空 说明 name varchar2 primary key 旅客名 sex varchar2 not null 旅客性别 idNum varchar2 not null 身份证 phoneNum varchar2 not null 手机号 password varchar2 not null 密码 表3-5  buy购置表 表中列名 数据类型 可否为空 说明 name varchar2 foreign key 旅客名 flightNum varchar2 foreign key 航班号 gread varchar2 not null 机舱等级 seatNum varchar2 not null 座位号 paymoney number not null 机票价格 buyNum varchar2 not null 购置数量 表3-6  manager 管理员表 表中列名 数据类型 可否为空 说明 mname varchar2 not null unique 管理员编号 mpwd varchar2 not null 管理员姓名 3.1.3 加工说明 我们系统需要六个实体: (1)飞机实体 实体名:plane 角色:相关飞机信息 属性:飞机编号,座位数 主键:飞机编号 (2)航班实体 实体名:flight 角色:航班信息 属性:航班编号,出发地,目标地,起飞时间,抵达时间 主键:航班编号 (3)机票实体 实体名:ticket 角色:机票信息 属性:航班号,机舱等级,座位号,机票价格,余票数 主键:座位号 (4)旅客实体 实体名:passenger 角色:旅客信息 属性:旅客名,旅客性别,身份证,手机号,密码 主键:旅客名 (5)机票购置实体 实体名:buy 角色:旅客购置机票后信息 属性:旅客名,航班号,机舱等级,座位号,机票价格,购置数量 (6)管理员实体 实体名:manager 角色:管理员信息 属性:管理员名,密码 3.2 概要设计 3.2.1 功效模块图 航班信息管理模块 机票信息管理模块 机票预订系统 旅客信息管理模块 订单信息管理模块 3.3 具体设计 3.3.1 关键代码 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(dbConfig.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"), 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("关闭查询结果集失败...", 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.println("数据库连接成功..."); } else { System.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 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); } //实施带事务有参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("事务失败"); } // 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) //判定是不是,整个事务结束, 然后回滚事务 { isTransSuccess = 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 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 = DBUtil.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)); } } else { while(rs.next()) { Object[] os = new Object[cols]; for (int i = 0; i < cols; i++) { os[i] = rs.getObject(i + 1); } objs.add(os); } } } catch (Except
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服