旅游管理系统

旅游管理系统旅游管理系统介绍要求:ER图代码介绍高级数据库布置的实验作业要求:题目:设计与实现一个旅游预订系统,该系统涉及的基本信息有航班,出租车,宾馆和客户等数据信息。实体和其特征属性举例如下:FLIGHTS(StringflightNum,intprice,intnumSeats,intnumAvail,StringFromCity,StringArivCity);H…

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

介绍

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

要求:

题目: 设计与实现一个旅游预订系统,该系统涉及的基本信息有航班,出租车,宾馆和客户等数据信息。实体和其特征属性举例如下:
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. 注册和登录
    操作:输入用户名和密码,点击注册即可注册,点击登录即可登录。
    在这里插入图片描述
  2. 首页:
    操作:登录成功后,即进入首页个人中心,可以看到首页为空,因为我们还没有预订过航班、宾馆和出租车。先去预约几项,以查看效果。
    在这里插入图片描述
  3. 预约航班
    操作:点击航班预约,即可进入预约航班界面。输入出发地和目的地和日期后,点击查询即可预约航班,如图,预约后,可以看到余票-1,为了后面看到效果,我们接着预约上海到武汉的票,再预约武汉到成都的票,截图类似,如下图:
    在这里插入图片描述
    在这里插入图片描述
  4. 预约宾馆
    操作:点击旅馆预约,即可进入旅馆预约界面,输入城市名称和日期查询,点击预约,预约后可以看到剩余房间数量-1。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  5. 预约出租车
    操作:点击出租车预约,即可进入出租车预约界面,输入城市名称和日期查询,点击预约,预约成功后可以看到当天出租车少了一辆。
    在这里插入图片描述
    在这里插入图片描述
  6. 个人中心
    操作:点击个人中心,可以看到自己的所有预约项目,并且可以取消自己所预约的。在我的行程中可以看到自己的行程路线图。点击取消武汉到成都的航班后,可以看到如下效果。
    在这里插入图片描述
    在这里插入图片描述
  7. 航班管理
    操作:使用管理员账号登录,系统初始化时内置了一个admin用户,密码admin,登录后,可以看到如下不同,点击航班管理,可以增加或删除航班。
    在这里插入图片描述
    在这里插入图片描述
  8. 宾馆管理
    操作:使用管理员账号登录,系统初始化时内置了一个admin用户,密码admin,点击宾馆管理,可以增加或删除宾馆。
    在这里插入图片描述
  9. 出租车管理
    操作:使用管理员账号登录,系统初始化时内置了一个admin用户,密码admin,点击出租车管理,可以增加或删除出租车。
    在这里插入图片描述

代码

参见github链接

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 小程序bindtap传参_微信小程序bindtap

    小程序bindtap传参_微信小程序bindtap一边开发一边做点笔记,东西可能零散了点,一边开发一边补充。1、事件 1.bindtap绑定点击事件 2.bindinput监听输入,没输入一个字符得到一次返回值(就算是输入中文时,没敲一次键依然返回一次)2、解决小程序tabBar跳转不能带参数问题小程序这里遇到了一个难题就是如果实现tabBar栏之间的跳转的话是不能传入参数的那么我们要如何解决这个问题呢! 我的办法就是让你的传…

    2025年6月2日
    4
  • SpringCloud—解决雪崩效应之熔断

    SpringCloud—解决雪崩效应之熔断

    2020年11月12日
    226
  • AEJoy ——表达式代码列表和示例(四)【代码详解】「建议收藏」

    bounce表达式系列惯性bounce表达式这个反弹表达式允许在你的层位置有一个弹性的感觉,效果图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5TFA2Glo-1638214074097)(https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7d3e186d50e74ee09ce97abe381beae9~tplv-k3u1fbpfcp-watermark.image?)]表达式amp=.1;freq

    2022年4月13日
    49
  • css里的clear_css取消某个样式

    css里的clear_css取消某个样式clear:both清除两边,没有用的clear:left清除左边,没有用的clear:right清除右边,没用的

    2025年10月29日
    1
  • 属性选择器与类选择器_input属性选择器

    属性选择器与类选择器_input属性选择器属性选择器1E[att$="val"]{sRules}选择具有att属性且属性值为以val结尾的字符串的E元素。123456910111213列表项目1

    2022年8月3日
    5
  • 如何自己开发漏洞扫描工具视频_系统漏洞扫描工具有哪些

    如何自己开发漏洞扫描工具视频_系统漏洞扫描工具有哪些扫描器的设计思想是:灵活,易扩展,易修改,灵活的意思就是可单独执行专项漏洞的扫描,也可以批量执行集成的所有漏洞探测模块;易扩展的意思就是,新的漏洞检测模块可清晰简单的集成进扫描器;易修改,对各个漏洞扫描模块可根据特殊情况修改探测逻辑。扫描器的使用扫描器下载地址:https://gitee.com/samllpig/SafeTool-51testing工具的详细安装教程:http://quan.51testing.com/pcQuan/lecture/117先打开我们的扫描器看下界面:..

    2025年11月6日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号