前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >旅游管理系统

旅游管理系统

作者头像
全栈程序员站长
发布2022-07-01 21:14:24
1.2K0
发布2022-07-01 21:14:24
举报

大家好,又见面了,我是你们的朋友全栈君。

旅游管理系统

介绍

高级数据库布置的实验作业

要求:

题目: 设计与实现一个旅游预订系统,该系统涉及的基本信息有航班,出租车,宾馆和客户等数据信息。实体和其特征属性举例如下: FLIGHTS (String flightNum, int price, int numSeats, int numAvail, String FromCity, String ArivCity); HOTELS(String name,String location, int price, int numRooms, int numAvail); CARS(String type,String location, int price, int numCars, int numAvail); CUSTOMERS(String custName); RESERVATIONS(String custName, int resvType, String resvKey) 根据自己的经验给出该旅游系统数据库设计E/R图(可以增加实体和属性),然后基于此数据库完成如下功能: 1. 航班,出租车,宾馆房间和客户基础数据的入库,更新。 2. 预定航班,出租车,宾馆房间。 3. 查询航班,出租车,宾馆房间,客户和预订信息。 4. 查询某个客户的旅行线路。 5. 其他任意你愿意加上的功能。 要求: 1) E/R图中包含弱实体,子集联系等,关系中元组数 〉=20 。 2) 提交文档:E/R图及解释,E/R图到关系模式的转换及说明,分析给出关系的模式属于哪个NF,然后讨论其模式优化。完成的功能及说明。系统实现的环境。各关系元组数据文件及说明。 3) 提交系统:源程序及可执行程序,测试用例。

ER图

在这里插入图片描述
在这里插入图片描述

ER图解释

  1. 系统涉及的实体集  城市:具有属性城市名。  顾客:具有属性客户名和密码。  管理员:是顾客的子类实体,具有顾客的所有的属性。  出租车:具有属性车牌号、价格,依赖于城市而存在,为弱实体。  宾馆:具有属性宾馆名、价格、房间数,依赖于城市而存在,为弱实体。  航班:具有属性航班号、价格、座位数,依赖于城市而存在,为弱实体。
  2. 涉及的联系  一个城市可以有多个宾馆,所以城市和宾馆的联系为1:N。  一个城市可以有多辆出租车,所以城市和出租车的联系为1:N。  一个城市可以作为多个航班的出发地和目的地,所以城市和航班的出发和达到联系为1:N。  一个顾客可以预约多个宾馆、航班和出租车,一个宾馆、航班和出租车也可以被多个客户预约,所以顾客和宾馆、航班和出租车的练习为M:N。

ER图转换为关系模式

  1. 城市实体可以转换为关系city,cityName表示的城市名,满足了三范式中的第一个范式即属性不可分割,满足了三范式中的第二范式,即有主键。建表语句如下: DROP TABLE IF EXISTS city; CREATE TABLE city ( cityName varchar(20) NOT NULL, PRIMARY KEY (cityName) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  2. 顾客实体可以转换为关系customer,custName表示顾客名,password表示密码,type用来区分是否是管理员,满足了三范式中的第一个范式即属性不可分割,满足了三范式中的第二范式,即有主键。建表语句如下: DROP TABLE IF EXISTS customer; CREATE TABLE customer ( password varchar(50) NOT NULL, custName varchar(50) NOT NULL, type int(10) DEFAULT 1, PRIMARY KEY (custName) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  3. 出租车实体可以转换为关系car,carNum表示车牌号,price表示价格,城市和出租车的联系为1:N,可以通过外键来表示联系,即cityName,代表所属的城市,满足了三范式中的第一个范式即属性不可分割,满足了三范式中的第二范式,即有主键,通过外键关联到城市的信息,无冗余信息,即满足第三范式的要求。建表语句如下: DROP TABLE IF EXISTS car; CREATE TABLE car ( carNum varchar(50) NOT NULL, price int(10) DEFAULT 0, cityName varchar(50) NOT NULL, PRIMARY KEY (carNum), CONSTRAINT carcityName FOREIGN KEY (cityName) REFERENCES city (cityName) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  4. 宾馆实体可以转换为关系hotel,hotelName为宾馆名称,price表示价格,numRooms表示房间数量。城市和宾馆的联系为1:N,可以通过外键来表示联系,即cityName,代表所属的城市,满足了三范式中的第一个范式即属性不可分割,满足了三范式中的第二范式,即有主键,通过外键关联到城市的信息,无冗余信息,即满足第三范式的要求。建表语句如下: DROP TABLE IF EXISTS hotel; CREATE TABLE hotel ( hotelName varchar(50) NOT NULL, price int(10) DEFAULT 0, numRooms int(10) DEFAULT 0, cityName varchar(50) NOT NULL, PRIMARY KEY (hotelName), CONSTRAINT hotelcityName FOREIGN KEY (cityName) REFERENCES city (cityName) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  5. 航班实体可以转换为关系flight,flightNum表示航班号,price表示价格,numSeats表示座位数,城市和航班的出发地联系为1:N,可以通过外键来表示联系,即fromCity,代表出发的城市,城市和航班的目的地联系为1:N,可以通过外键来表示联系,即arivCity,代表到达的城市,满足了三范式中的第一个范式即属性不可分割,满足了三范式中的第二范式,即有主键,通过外键关联到城市的信息,无冗余信息,即满足第三范式的要求。建表语句如下: DROP TABLE IF EXISTS flight; CREATE TABLE flight ( flightNum varchar(20) DEFAULT NULL, price int(10) DEFAULT 0, numSeats int(10) DEFAULT 0, fromCity varchar(50) NOT NULL, arivCity varchar(50) NOT NULL, PRIMARY KEY (flightNum), CONSTRAINT fromCity FOREIGN KEY (fromCity) REFERENCES city (cityName) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT arivCity FOREIGN KEY (arivCity) REFERENCES city (cityName) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  6. 顾客和宾馆、航班以及出租车之间的预约联系可以转化为关系reservation,resvKey表示预约的车牌号或航班号或宾馆名,custName是外键,表示顾客,resDate代表预约的日期,满足了三范式中的第一个范式即属性不可分割,满足了三范式中的第二范式,即有主键,通过外键关联到用户的信息,无冗余信息,即满足第三范式的要求。建表语句如下: DROP TABLE IF EXISTS reservation; CREATE TABLE reservation ( resvKey varchar(50) NOT NULL, custName varchar(50) NOT NULL, type int(10) NOT NULL, resDate DATE, KEY reservationkey (resvKey,custName,type,resDate), CONSTRAINT reservationcust FOREIGN KEY (custName) REFERENCES customer (custName) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

测试用例与截图

  1. 注册和登录 操作:输入用户名和密码,点击注册即可注册,点击登录即可登录。
在这里插入图片描述
在这里插入图片描述
  1. 首页: 操作:登录成功后,即进入首页个人中心,可以看到首页为空,因为我们还没有预订过航班、宾馆和出租车。先去预约几项,以查看效果。
在这里插入图片描述
在这里插入图片描述
  1. 预约航班 操作:点击航班预约,即可进入预约航班界面。输入出发地和目的地和日期后,点击查询即可预约航班,如图,预约后,可以看到余票-1,为了后面看到效果,我们接着预约上海到武汉的票,再预约武汉到成都的票,截图类似,如下图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  1. 预约宾馆 操作:点击旅馆预约,即可进入旅馆预约界面,输入城市名称和日期查询,点击预约,预约后可以看到剩余房间数量-1。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  1. 预约出租车 操作:点击出租车预约,即可进入出租车预约界面,输入城市名称和日期查询,点击预约,预约成功后可以看到当天出租车少了一辆。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  1. 个人中心 操作:点击个人中心,可以看到自己的所有预约项目,并且可以取消自己所预约的。在我的行程中可以看到自己的行程路线图。点击取消武汉到成都的航班后,可以看到如下效果。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  1. 航班管理 操作:使用管理员账号登录,系统初始化时内置了一个admin用户,密码admin,登录后,可以看到如下不同,点击航班管理,可以增加或删除航班。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  1. 宾馆管理 操作:使用管理员账号登录,系统初始化时内置了一个admin用户,密码admin,点击宾馆管理,可以增加或删除宾馆。
在这里插入图片描述
在这里插入图片描述
  1. 出租车管理 操作:使用管理员账号登录,系统初始化时内置了一个admin用户,密码admin,点击出租车管理,可以增加或删除出租车。
在这里插入图片描述
在这里插入图片描述

代码

参见github链接

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/130303.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 旅游管理系统
  • 介绍
  • 要求:
  • ER图
  • ER图解释
  • ER图转换为关系模式
  • 测试用例与截图
  • 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档