小布旅行者管理系统[python—mySQL]

🧇小布旅行者管理系统

🥨目录🥨

🍬系统功能需求

 🥙数据库设计

🍿ER图设计及其说明

🍿数据库逻辑结构设计

🍿数据库物理设计

🍰详细设计与实现

🍔数据库测试

🍕附录

 🍿附录1:小布旅行者系统MySQL数据库建立语句 

🍿附录2:管理系统python代码


🍬系统功能需求

该系统面向用户分别为旅客和系统管理员。两种用户进入系统操作事务均需进行登录,其中旅客具有用户登录和注册功能,管理员只具有登录的功能(管理员的账号由DBA录入数据库,不能自己注册)。

管理员的功能需求:
🍿管理员登录功能

🍿航班管理功能

包括航班信息入库、查询航班信息并显示、删除航班信息

🍿航班更新功能

更新航班信息并显示、添加航班班次

🍿班车管理功能

包括班车信息入库、查询班车信息并显示、删除班车信息

🍿班车更新功能

更新班车信息、添加大巴班次

🍿酒店管理功能

酒店信息入库、房间信息入库、酒店房间查询并显示、酒店信息删除

🍿酒店信息更新功能

更新酒店地址等信息、房价价格信息、房间数量等信息

🍿用户管理功能

管理员可进行新用户的消息添加注册用户、查询用户的航班预定信息、班车预定信息、酒店预定信息以及旅客的旅游路线并进行显示

🍿用户信息删除功能

从数据库中删除某个用户的全部信息

旅客的功能需求:

🍟旅客登录和注册功能

系统根据数据库用户信息核对账号密码进行登录操作;系统添加用户信息到数据库实现账号注册功能。

🍟航班预定功能

系统根据旅客给出的航班号、日期、价格、始末城市等查询条件给出符合条件的航班机票并显示供旅客挑选预定。系统根据预定情况修改数据库并反馈旅客。

🍟班车预定功能

系统根据旅客给出的班车号、日期、价格、始末城市等查询条件给出符合条件的车票并显示供旅客挑选预定。系统根据预定情况修改数据库并反馈旅客。

🍟酒店预定功能

系统根据旅客给出的酒店名称、房型、地址、价格等查询条件给出符合条件的酒店房间并显示供旅客挑选预定。旅客填入入住日期和入住天数进行房间预定。系统根据预定情况修改数据库并反馈旅客。

🍟预定管理功能

旅客输入用户ID查询自己的航班、班车或者酒店房间预定信息,系统显示所有信息。旅客浏览并勾选需要取消的航班、班车或者酒店,进行预定取消。系统修改数据库并给予反馈。

 🥙数据库设计

🍿ER图设计及其说明

ER图说明:

1.共有用户、航班、班车、房间、酒店、管理员6个实体。

2.用户与航班、班车、房间均为预定关系,且为多对多关系;

航班预定有飞机起飞日期属性

班车预定有乘车日期的属性

用户预定房间有属性:入住日期和入住天数

3.房间与酒店为‘属于’关系,多类房间可以属于某一个酒店,‘属于’的联系具有属性:房间数量和房间余量

4.各个实体具有各自的属性,见上面ER图

5.管理员起到对系统和数据库以及各类信息的管理作用,因此,与其他实体不存在本质上的联系。

🍿数据库逻辑结构设计

1.表

1.1用户表

CREATE TABLE CUSTOMERS(
    custID    char(6)    primary key,
    custName  char(20) ,
	custPassw text,
    custPhone char(11) ,
    custAddr  text 
);

      根据ER图中用户的属性设置CUSTOMERS的各个字段,分别是用户ID、用户名、密码、电话、地址。用户ID作为主码。

1.2航班表

CREATE TABLE FLIGHTS(
        flightNum char(6)    primary key,
		price   INT,
		numSeats INT,
		numAvail INT,
		FromCity char(20), 
		ArivCity char(20),
		distance char(20),
		flytime  char(20)
);

根据ER图中航班属性添加航班基本表各个字段,其中航班号作为主码。

1.3班车表

CREATE TABLE BUS(
    BusNum char(5) PRIMARY KEY, 
    location char(20), 
    price int, 
    seatnum int , 
    numrest int ,
	FromCity char(20), 
	ArivCity char(20)
);

根据ER图中班车属性添加班车基本表各个字段,其中班车号作为主码

1.4酒店表

CREATE TABLE HOTELS(
        hotelNum int(5) primary key,
		hotelName char(20),
		location  char(20)
);

其中,酒店号为主码。

1.5房间表

其中,房间类型为主码。

1.6航班班次表

由系统管理员添加具体的飞机班次,其中属性为航班号(外码:来自航班表)、飞行日期;(航班号,飞行日期)为主码。

1.7班车班次表

由系统管理员添加具体的班车班次,其中属性为班车号(外码:来自班车表)、乘车日期;(班车号,乘车日期)为主码。

1.8酒店房间表

保存酒店的房间信息:某个酒店都有哪些类型的房间,有多少房间,由管理员录入该信息。其中酒店号和房间类型为外码。

1.9旅客航班预定表

记录旅客对航班的预定信息,将旅客表与航班表联系起来;其中,旅客ID和航班号为外码,CFD的整个属性组作为主码。

1.10旅客班车预定表

记录旅客对班车的预定信息,将旅客表与班车表联系起来;其中,旅客ID和班车号为外码。

1.11旅客房间预定表

记录旅客对酒店房间的预定信息;其中,旅客ID和房间类型、酒店号为外码,日期数据为DATE类型。当旅客预定酒店房间时,添加记录项;当旅客取消预定时,删除特定记录项。

1.12旅客路线表

通过扫描其他‘旅客预定表’,程序会计算出旅客的旅游路线,并将信息存入该表中,以便于管理员进行查询。旅客ID为外码。该表会存储旅客的旅游城市以及交通工具。

1.13管理员账号表

该表存储管理员登录系统的账号和密码,用来验证管理员的身份。为小布系统插入一个管理员账号,基本表建立完成后,为每个表插入适当数据。

注:建表与数据插入完整代码参见 附录1:小布旅行者系统MySQL数据库建立语句 

🍿数据库物理设计

为了加快数据库的查询速度,在数据库中为表添加索引。可以看出主键会自动加索引,因此不必再手动添加索引。可以为常用查询字段但非主键字段建立索引,以加快查询速度。

可为以上字段添加索引,以加快速度。例如:

依次添加索引即可,此处不再详述。

🍰详细设计与实现

🍔数据库测试

完成所有功能代码实现后,进行系统的测试,测试系统和数据库是否能够正常的运行。

经过测试,旅行管理系统和数据库运行正常并且完成所设计的功能

用户信息入库+查询预定信息+查询旅客旅游路线测试视频

 

🍕附录

 🍿附录1:小布旅行者系统MySQL数据库建立语句 

CREATE TABLE CUSTOMERS(
    custID    char(6)    primary key,
    custName  char(20) ,
	custPassw text,
    custPhone char(11) ,
    custAddr  text );
		
INSERT INTO	CUSTOMERS(
    custID, 
    custName,
	custPassw ,
    custPhone ,
    custAddr)
		VALUES
		('XB2301','明轩','xb@2301','18041173810','南京'),
		('XB2302','天翊','xb@2301','18041173811','北京'),
		('XB2303','天翊','xb@2301','18041173812','上海'),
		('XB2304','一铭','xb@2301','18041173813','大连');
		


CREATE TABLE FLIGHTS(
        flightNum char(6)    primary key,
		price   INT,
		numSeats INT,
		numAvail INT,
		FromCity char(20), 
		ArivCity char(20),
		distance char(20),
		flytime  char(20)
);

INSERT INTO	FLIGHTS(
    flightNum ,
		price   ,
		numSeats ,
		numAvail ,
		FromCity , 
		ArivCity ,
		distance ,
		flytime  
) 
    VALUES
		('MM7899',2300,100,100,'南京','上海','1200','2.8'),
		('CE4567',1378,100,100,'大连','北京','3590','1.4'),
		('QW2345',3478,100,100,'北京','天津','2589','2.2');

CREATE TABLE FD(
    flightNum char(6),
		flydate  DATE,
		FOREIGN KEY (flightNum) REFERENCES FLIGHTS(flightNum),
		primary key(flightNum,flydate)
		
		
);

INSERT INTO	FD(
    flightNum ,
		flydate  
)
VALUES
('CZ7899','2023-05-30'),
('CE4567','2023-05-30'),
('QW2345','2023-05-30'),
('CZ7899','2023-05-31'),
('CE4567','2023-05-31'),
('QW2345','2023-05-31'),
('CZ7899','2023-06-01'),
('CE4567','2023-06-01'),
('QW2345','2023-06-01'),
('CZ7899','2023-06-02'),
('CE4567','2023-06-02'),
('QW2345','2023-06-02'),
('CZ7899','2023-06-03'),
('CE4567','2023-06-03'),
('QW2345','2023-06-03');

CREATE TABLE CFD(
    custID    char(6),
    flightNum char(6),
		flydate  DATE,
		FOREIGN KEY (custID) REFERENCES CUSTOMERS(custID),
		FOREIGN KEY (flightNum,flydate) REFERENCES FD(flightNum,flydate),
		primary key(custID,flightNum,flydate)
);

INSERT INTO	CFD(
    custID    ,
    flightNum ,
	flydate
		
)
 VALUE
 ('XB2301','CZ7899','2023-05-30'),
 ('XB2302','CE4567','2023-05-30'),
 ('XB2303','QW2345','2023-05-30'),
 ('XB2304','QW2345','2023-05-30');

CREATE TABLE HOTELS(
    hotelNum int(5) primary key,
		hotelName char(20),
		location  char(20)
);

INSERT INTO	HOTELS(
    hotelNum ,
		hotelName ,
		location  
)
VALUES
(23001,'悦来酒店','北京'),
(23002,'好客酒店','南京'),
(23003,'壹笙酒店','上海'),
(23004,'中山酒店','大连'),
(23005,'万行酒店','天津'),
(23006,'橘子酒店','北京');

CREATE TABLE ROOMS(
    RoomType char(20) primary key,
		price int
);


INSERT INTO	ROOMS(
    RoomType ,
	price 
)
VALUES
('单人间',60),
('双人间',120),
('大床房',150),
('三人间',200),
('标准间',180),
('商务间',240);

CREATE TABLE HR(
    hotelNum int(5), 
    RoomType char(20),
	numRooms int,
	numAvail int,
	FOREIGN KEY (hotelNum) REFERENCES HOTELS(hotelNum),
    FOREIGN KEY (RoomType) REFERENCES ROOMS(RoomType)
);

INSERT INTO	HR(
    hotelNum , 
    RoomType ,
		numRooms ,
		numAvail 	
)
VALUES
(23001,'单人间',5,5),
(23001,'双人间',5,5),
(23001,'大床房',5,5),
(23001,'三人间',5,5),
(23001,'标准间',5,5),
(23001,'商务间',5,5),
(23002,'单人间',5,5),
(23002,'双人间',5,5),
(23002,'大床房',5,5),
(23002,'三人间',5,5),
(23002,'标准间',5,5),
(23002,'商务间',5,5),
(23003,'单人间',5,5),
(23003,'双人间',5,5),
(23003,'大床房',5,5),
(23003,'三人间',5,5),
(23003,'标准间',5,5),
(23003,'商务间',5,5),
(23004,'单人间',5,5),
(23004,'双人间',5,5),
(23004,'大床房',5,5),
(23004,'三人间',5,5),
(23004,'标准间',5,5),
(23004,'商务间',5,5),
(23005,'单人间',5,5),
(23005,'双人间',5,5),
(23005,'大床房',5,5),
(23005,'三人间',5,5),
(23005,'标准间',5,5),
(23005,'商务间',5,5),
(23006,'单人间',5,5),
(23006,'双人间',5,5),
(23006,'大床房',5,5),
(23006,'三人间',5,5),
(23006,'标准间',5,5),
(23006,'商务间',5,5);

CREATE TABLE CHR(
	custID    char(6) ,
    hotelNum int(5), 
    RoomType char(20),
	FOREIGN KEY (hotelNum) REFERENCES HOTELS(hotelNum),
    FOREIGN KEY (RoomType) REFERENCES ROOMS(RoomType),
	FOREIGN KEY (custID) REFERENCES CUSTOMERS(custID),
	startdate DATE,
	check_in_days int
);

-- (23005,'万行酒店','天津'),
-- 
--  ('XB2303','QW2345','2023-05-30'),
--  ('XB2304','QW2345','2023-05-30');
INSERT INTO	CHR(
    custID   ,
    hotelNum , 
    RoomType ,
	startdate ,
	check_in_days
)
VALUES
('XB2303',23005,'单人间','2023-05-30',2),
('XB2304',23005,'商务间','2023-05-30',1);


CREATE TABLE BUS(
    BusNum char(5) PRIMARY KEY, 
    location char(20), 
    price int, 
    seatnum int , 
    numrest int ,
	FromCity char(20), 
	ArivCity char(20)
);


INSERT INTO BUS(
    BusNum , 
    location , 
    price , 
    seatnum  , 
    numrest  ,
	FromCity, 
	ArivCity 
)
VALUES
('A1234','顺来汽车站',180,50,50,'北京','天津'),
('F5678','马东汽车站',230,50,50,'大连','上海'),
('R5678','昊发汽车站',450,50,50,'南京','北京');



INSERT INTO BUS(
    BusNum , 
    location , 
    price , 
    seatnum  , 
    numrest  ,
		FromCity, 
		ArivCity 
)
VALUES
('A1234','米哈汽车站',180,50,50,'天津','北京');

CREATE TABLE BUSDATE(
    BusNum char(5),
		Busdate DATE,
		FOREIGN KEY (BusNum) REFERENCES BUS(BusNum),
		primary key(BusNum,Busdate)
		);
		
INSERT INTO BUSDATE(
    BusNum ,
		Busdate 
		)
		VALUES
		('A1234','2023-06-01'),
		('F5678','2023-06-01'),
		('R5678','2023-06-01'),
		('A1234','2023-06-02'),
		('F5678','2023-06-02'),
		('R5678','2023-06-02'),
		('A1234','2023-06-03'),
		('F5678','2023-06-03'),
		('R5678','2023-06-03');

CREATE TABLE CBUSDATE(
    custID    char(6) ,
    BusNum char(5) ,
		Busdate DATE,
		FOREIGN KEY (BusNum,Busdate) REFERENCES BUSDATE(BusNum,Busdate),
		FOREIGN KEY (custID) REFERENCES CUSTOMERS(custID)	
		);
		
INSERT INTO CBUSDATE(
    custID ,
    BusNum ,
		Busdate
		)
		VALUES
		('XB2301','A1234','2023-06-01'),
		('XB2302','F5678','2023-06-01');
			
		


CREATE TABLE ROUTE(
    custID    char(6) ,
		FromCity char(20) , 
		vehicle1 char(10) ,
		PassThroughCity1 char(20),
		vehicle2 char(10) ,
		PassThroughCity2 char(20),
		vehicle3 char(10) ,
		PassThroughCity3 char(20),
		vehicle4 char(10) ,
		ArivCity  char(20),
		FOREIGN KEY (custID) REFERENCES CUSTOMERS(custID)
);

CREATE TABLE ADMIN(
    ID   char(20) PRIMARY KEY,
	IDpassw char(20),
	passw char(20)
);

INSERT INTO ADMIN(
    ID   ,
	IDpassw ,
	passw 
)
VALUE
(1804117381,'SEDTR-QWEGB-ERFDR','XB1234');

🍿附录2:管理系统python代码

import sys
import random
import pymysql
from PyQt5.QtCore import Qt
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QDialog,QTableWidgetItem,QLineEdit


# 打开数据库连接
try:
        db = pymysql.connect(host='localhost', user='root', passwd='1234567890', port=3306, db='xiaobu')
        print('连接成功!')
except:
        print('something wrong!')


# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):


    def flyyu(self):


    def caryu(self):

    ......

......


精心整理,大家多多建议!🙈🙉🙊

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值