数据库系统原理课程设计
课程设计内容:系统详细设计与实现、设计文档与总结
一、 系统规划与可行性分析报告
航班查询系统规划与可行性分析报告
1.系统名称: 航班查询系统
2.涉及相关业务部门:
飞行管理部,市场营销部
市场营销部: 在该系统中负责定价及票容量设置
飞行管理部: 规划航班航线时间等相关信息
3.业务的场景:
用户在网站上输入关键词,查询航班信息
飞行管理部在管理系统上更新航班信息
市场营销部在管理系统上更新票价
4.性能指标:
用户数:100,000
并发用户数:200
核心业务响应时间0.02s
5.战略地位:
提供票务信息查询功能,方便用户了解航班状况,选择合适的航班。而管理人员可以对航班信息进行更改,提供更好的服务,提升航空公司口碑。 6.成本收益:
需要系统建设投资,必需的数据库服务器成本,开发成本等,收益是为客户提供更好的服务,提升顾客满意度。
7.技术上的可行性:
可能需求技术: web开发,数据库,移动开发,大数据,系统运维
二、 系统需求规格说明书
航班查询系统需求规格说明书
1.目的
用户可以在不登录的情况下查询航班信息,可以通过时间、出发地、到达地三个信息来查询。而系统管理员可以登录进行航线、航班、管理员的增删查改。
2.业务流程
3.数据库设计
5.界面
三、系统详细设计说明书
1.系统功能概述
该系统是一个航班查询系统,普通用户可以在不登录的情况下对航班信息进行查询。而管理员可以登录后对航班信息,航线信息,管理员信息进行增加、修改、删除、密码重置等操作。
2.系统功能模块结构
前端页面设计:
前端页面使用UI框架bootstrap实现,同时部分页面使用了ajax技术实现异步请求。总共存在12个相对独立的页面,分别是:
普通用户查询页面:
管理员登录页面:
航班管理页面:
航班增加页面:
航班修改页面:
航班删除页面:
航线管理页面:
航线增加页面:
航线修改页面:
航线删除页面:
用户管理页面:
增加用户页面:
Web服务端:
web服务器我们采用apache+php作为该系统的后端实现。关于服务器的安装与部署,我们采用了一键式web环境搭建工具phpstudy,可以快速的搭建好我们的服务器环境。
系统后端代码我们使用PHP:
总共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 | 外键 |
查询视图:
存储过程(登录):
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保存用户登录状态与用户信息。
并且通过session来判断用户有没有登录,这样就防止普通用户查看管理员界面,将用户与管理员区分开。
在管理员用户管理模块,可以对用户进行新增、密码重置、删除功能。在这里,用户不能删除自己的的账户,如果删除自己的账户,会阻止和弹出提醒。
关于数据备份,我们设计每天自动进行数据备份,使用Navicat任务计划,添加备份任务。
再使用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/ 即可进行航班信息查询。
可以通过时间、起始地进行查询,支持模糊搜索。
2.管理员
2.1安装部署:
在phpstudy官网上下载phpstudy程序,在部署服务器上进行安装。开启apache与mysql服务,在mysql中创建数据库air,然后导入我们的sql文件。然后将我们的源代码移动phpstudy/www目录下即部署完成。
2.2 管理员使用
访问http://127.0.0.1/login.html进行登录操作。登录用户名默认为admin,密码默认为123456。登录后即可看到管理员界面。
管理员登录后即可对航线航班信息进行管理。检索功能与用户查询界面功能一致。而修改、删除功能界面也需要先进行检索才能进行相应的操作。另外,在进行航线、航班、用户新增操作的时候,航线号、航班号、用户名不能与已有的重复,否则会弹框进行报错。
在管理员进行人员管理操作的时候,可以重置任意管理员的密码或者删除,但是管理员不能删除属于自己的账户。
管理员想回到用户查询界面,可以点击系统右上角的退出。如果管理员想注销登录,系统将会注销管理员登录并返回到登录界面。
五、系统设计总结
对于该系统的实现大概花了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