数据库系统原理课程设计
课程设计内容:系统详细设计与实现、设计文档与总结


一、 系统规划与可行性分析报告

航班查询系统规划与可行性分析报告
1.系统名称: 航班查询系统
2.涉及相关业务部门:
飞行管理部,市场营销部
Pro: 数据库课程设计 - 图1
市场营销部: 在该系统中负责定价及票容量设置
飞行管理部: 规划航班航线时间等相关信息
3.业务的场景:
用户在网站上输入关键词,查询航班信息
飞行管理部在管理系统上更新航班信息
市场营销部在管理系统上更新票价
4.性能指标:
用户数:100,000
并发用户数:200
核心业务响应时间0.02s
5.战略地位:
提供票务信息查询功能,方便用户了解航班状况,选择合适的航班。而管理人员可以对航班信息进行更改,提供更好的服务,提升航空公司口碑。 6.成本收益:
需要系统建设投资,必需的数据库服务器成本,开发成本等,收益是为客户提供更好的服务,提升顾客满意度。
7.技术上的可行性:
可能需求技术: web开发,数据库,移动开发,大数据,系统运维


二、 系统需求规格说明书

航班查询系统需求规格说明书
1.目的
用户可以在不登录的情况下查询航班信息,可以通过时间、出发地、到达地三个信息来查询。而系统管理员可以登录进行航线、航班、管理员的增删查改。
2.业务流程
Pro: 数据库课程设计 - 图2

3.数据库设计
Pro: 数据库课程设计 - 图3
Pro: 数据库课程设计 - 图4
Pro: 数据库课程设计 - 图5
Pro: 数据库课程设计 - 图6
5.界面
Pro: 数据库课程设计 - 图7
Pro: 数据库课程设计 - 图8
Pro: 数据库课程设计 - 图9


三、系统详细设计说明书

1.系统功能概述

该系统是一个航班查询系统,普通用户可以在不登录的情况下对航班信息进行查询。而管理员可以登录后对航班信息,航线信息,管理员信息进行增加、修改、删除、密码重置等操作。

2.系统功能模块结构

前端页面设计:
前端页面使用UI框架bootstrap实现,同时部分页面使用了ajax技术实现异步请求。总共存在12个相对独立的页面,分别是:
普通用户查询页面:
Pro: 数据库课程设计 - 图10
管理员登录页面:
Pro: 数据库课程设计 - 图11
航班管理页面:
Pro: 数据库课程设计 - 图12
航班增加页面:
Pro: 数据库课程设计 - 图13
航班修改页面:
Pro: 数据库课程设计 - 图14
航班删除页面:
Pro: 数据库课程设计 - 图15
航线管理页面:
Pro: 数据库课程设计 - 图16
航线增加页面:
Pro: 数据库课程设计 - 图17
航线修改页面:
Pro: 数据库课程设计 - 图18
航线删除页面:
Pro: 数据库课程设计 - 图19
用户管理页面:
Pro: 数据库课程设计 - 图20
增加用户页面:
Pro: 数据库课程设计 - 图21


Web服务端:
web服务器我们采用apache+php作为该系统的后端实现。关于服务器的安装与部署,我们采用了一键式web环境搭建工具phpstudy,可以快速的搭建好我们的服务器环境。
Pro: 数据库课程设计 - 图22
系统后端代码我们使用PHP:
Pro: 数据库课程设计 - 图23
Pro: 数据库课程设计 - 图24
总共16个PHP脚本,他们各自功能如下:

页面 功能
index.html 用户查询界面,用户可以通过时间、起始地进行航班查询,通过ajax获取数据
api.php 用户查询api,处理查询请求返回航班信息
login.html 管理员登录界面
login.php 处理登录操作
logout.php 处理注销操作
admin.php 管理界面,也是航班管理界面,可以对航班进行检索
add.php 添加航班界面
update.php 更新航班界面
delete.php 删除航班界面
flight_api.php 处理航班增删改请求
route.php 航线管理界面
route_add.php 航线添加界面
route_update 航线修改界面
route_delete 航线删除界面
route_api.php 处理航线增删改请求
user.php 用户管理界面
user_add.php 用户添加界面
user_api.php 用户添加、密码重置、删除api

数据库端设计:
管理员表:

表名 auth
数据库用户 Root
主键 用户名
外键
排序字段 用户名
索引字段 用户名
字段名称 数据类型 允许为空 唯一 默认值 约束条件
用户名 VARCHAR N Y 主键
密码 VACHAR N N

航线表:

表名 route
数据库用户 Root
主键 航线编号
外键
排序字段 航线编号
索引字段 航班编号
字段名称 数据类型 允许为空 唯一 默认值 约束条件
航线编号 INT N Y 主键
起飞时间 VARCHAR N N
出发地 VARCHAR N N
目的地 VARCHAR N N

航班表:

表名 flight
数据库用户 Root
主键 航班号,起飞日期
外键 航线编号
排序字段 航班号
索引字段 航班号、航线编号
字段名称 数据类型 允许为空 唯一 默认值 约束条件
航班号 VARCHAR N N 主键
起飞日期 VARCHAR N N 主键
航空公司 VARCHAR N N
价格 Float N N
机型 VARCHAR N N
航线编号 INT N N 外键

查询视图:
Pro: 数据库课程设计 - 图25
Pro: 数据库课程设计 - 图26
存储过程(登录):
delimiter $
create procedure login(in user varchar(16),in pass varchar(16))
begin
select * from auth where auth.user=user and auth.pass=pass;
end$
delimiter ;


3.系统安全体系设计(用户管理与控制、存储与恢复)

用户分为两部分,一部分为普通用户,只具有查询功能,只能查询航班信息。还有一部分用户为管理员用户,可以对航班航线进行所有操作,需要登录,通过session保存用户登录状态与用户信息。
Pro: 数据库课程设计 - 图27
并且通过session来判断用户有没有登录,这样就防止普通用户查看管理员界面,将用户与管理员区分开。
Pro: 数据库课程设计 - 图28
在管理员用户管理模块,可以对用户进行新增、密码重置、删除功能。在这里,用户不能删除自己的的账户,如果删除自己的账户,会阻止和弹出提醒。
Pro: 数据库课程设计 - 图29
Pro: 数据库课程设计 - 图30
关于数据备份,我们设计每天自动进行数据备份,使用Navicat任务计划,添加备份任务。
Pro: 数据库课程设计 - 图31
再使用windows的任务计划功能,每天定时执行navicat.exe程序进行备份任务。


4.系统运行环境设计与部署结构

在本机我们直接使用phpstudy工具进行部署。如果在云服务器上,我们采用apache+php+mysql进行部署。


5.源代码列表及说明

页面 功能
index.html 用户查询界面,用户可以通过时间、起始地进行航班查询,通过ajax获取数据
api.php 用户查询api,处理查询请求返回航班信息
login.html 管理员登录界面
login.php 处理登录操作
logout.php 处理注销操作
admin.php 管理界面,也是航班管理界面,可以对航班进行检索
add.php 添加航班界面
update.php 更新航班界面
delete.php 删除航班界面
flight_api.php 处理航班增删改请求
route.php 航线管理界面
route_add.php 航线添加界面
route_update 航线修改界面
route_delete 航线删除界面
route_api.php 处理航线增删改请求
user.php 用户管理界面
user_add.php 用户添加界面
user_api.php 用户添加、密码重置、删除api

四、用户安装与使用手册

1.普通用户
直接访问网址:http://localhost/ 即可进行航班信息查询。
可以通过时间、起始地进行查询,支持模糊搜索。
Pro: 数据库课程设计 - 图32
2.管理员
2.1安装部署:
在phpstudy官网上下载phpstudy程序,在部署服务器上进行安装。开启apache与mysql服务,在mysql中创建数据库air,然后导入我们的sql文件。然后将我们的源代码移动phpstudy/www目录下即部署完成。
2.2 管理员使用
访问http://127.0.0.1/login.html进行登录操作。登录用户名默认为admin,密码默认为123456。登录后即可看到管理员界面。
Pro: 数据库课程设计 - 图33
管理员登录后即可对航线航班信息进行管理。检索功能与用户查询界面功能一致。而修改、删除功能界面也需要先进行检索才能进行相应的操作。另外,在进行航线、航班、用户新增操作的时候,航线号、航班号、用户名不能与已有的重复,否则会弹框进行报错。
Pro: 数据库课程设计 - 图34
在管理员进行人员管理操作的时候,可以重置任意管理员的密码或者删除,但是管理员不能删除属于自己的账户。
Pro: 数据库课程设计 - 图35
管理员想回到用户查询界面,可以点击系统右上角的退出。如果管理员想注销登录,系统将会注销管理员登录并返回到登录界面。


五、系统设计总结

对于该系统的实现大概花了2天的时间,但是前期的技术积累花的时间却挺多的。首先新学习了一门语言PHP,学习了一门前端UI框架bootstrap,ajax等技术的实现。完成该项目对我来说是一个挑战,完成之后也很有成就感,虽然功能不多,但毕竟是自己写出的网站界面相对满意的一个。由于时间问题,我将大部分心思放在界面前端设计上了,对于后端数值校验,数据合法性检验可能有所疏忽。总得来说,该系统设计让我运用了课堂上学习到的很多技术,比如视图,存储过程,索引等等,十分的锻炼了自己的动手能力和代码编写能力。


六、课程总结

在数据库这一门课程上我们学到了很多,首先是数据库方面的内容,对于计算机专业的我们,数据库是必须要了解的。尤其是对于学习信息安全的我们,这对于我们学习SQL注入的攻击与防御有了更深的理解,不再浮于表面。当然,最后课程设计的网站上面基本全是SQL注入,我只简单的过滤了一些敏感字符。除了数据库知识和代码编写能力的锻炼以外,这门课还锻炼了我们的合作意识,小组作业的合作与分配等等。最后感谢徐薇老师一学期的辛苦付出,我们学到了很多东西。


admin.phpapi.phpdelete.phpflight_api.phpflights.pngindex.htmllogin.htmllogin.phplogo.pnglogout.phproute.phproute_add.phproute_api.phproute_delete.phproute_update.phpupdate.phpuser.phpuser_add.phpuser_api.phpair.sqladd.php