专业课程设计I分析方案_民航票务管理与售票系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
专业课程设计I报告( 2011 / 2012 学年第二学期)
题目:民航票务管理与售票系统
专业软件工程
学生姓名仓业亮
班级学号 B09040811
指导教师李玲娟
指导单位计算机学院软件工程系
日期 2012年4月26日
指导教师成绩评定表
民航票务管理与售票系统
一、课题内容和要求
1.1课程简介:
本次课程设计的基本要求主要是按照软件工程思想,以SQL Server 2000为后台数据库,以Delphi为前端开发工具,设计并实现一个民航票务管理与售票系统。其中,系统实现的功能主要有
(1)可以进行航班信息、票务信息的添加、修改和删除。
(2)允许普通用户和各类人员查询有关民航航班的时刻表,包括航班号、起点、终点、日期、起飞时刻、到达时刻、剩余座位数、票价、航班所属航空公司等方面的准确信息。也可以按照终点和日期进行查询。
1.2. 需求描述
1.2.1 我把本系统的用户统一分为普通用户和具有信息管理职责的管理员特殊用户,其中,管理员是系统指定的用户,不用注册,且本身也不必具备修改用户信息的功能。而普通用户初次登陆时是需要注册的,注册完了之后,如果数据成功添加在了数据库的passenger表中,则显示成功注册,然后重新登陆。
1.2.2可以进行航班信息、票务信息的添加、修改和删除。
该功能只能有管理员实现,其中票务信息我是不允许修改的,只有删除的选项,之所以这么做,第一是票务信息(p_ticket)关联的关联的两张表passenger乘客信息表和flight航班信息表都是可以修改的,所以票务信息的修改本质上意义不大;第二就是我的三张表都是有外键约束的,所以当票务信息被修改的时候,必然影响到其他主键表,所以技术上也添了麻烦。
1.2.3用户可以对航班信息表进行一定限度的查询,包括按航班号查询,按起点和终点查询和按日期查询。三种条件选一种
1.2.4 售票信息实时更新:
具体要做到的是当某个航班被售票的时候,其剩余座位数也要跟着减少一个,相应的退票的时候,座位数也要跟着加一。需要注意的是用户不具有退票的功能,必须由管理员操作。
1.2.5非功能需求
(1)可读性:程序的源代码要书写规整,要求容易理解,以便于日后程序
调试时容易测试和修改。
(2)界面的设计:应本着简洁、漂亮、通俗易懂,操作简便,并具有一定的灵活性;尽可能采用开发工具构造界面,使需求定义和设计、编码相衔接;参考、比较已经成熟的软件的界面的风格,提取有用的设计方法。
(3)可测试性:这是建立在可读性的基础之上的,如果程序不易于理解则测试起来相当麻烦,并且有可能造成灾难性后果。
1.3开发运行环境
系统开发平台:Delphi 7
数据库管理系统软件:SQL Server 2000
运行平台:Windows XP
分辨率:最佳效果1024×768
硬盘要求:
CPU:300MHz以上的处理器
内存:64MB,推荐128M以上
硬盘:100M以上磁盘空间
二、设计思路分析
完成此课题的思路和基本步骤
第一步:理解该系统的功能需求,进行逻辑设计,指定具体的实现计划。
第二步:数据库设计,具体包括表的划分和建立,表中的属性值的定义等。
第三步:测试连接,主要是测试开发环境delphi7与数据库sql2000的连接特性。
第四步:系统的模块划分,确定各个模块所要实现的功能。
第五步:确定测试用例和测试方法,方便程序以后的测试。
第六步:主要功能模块的设计和实现,并且辅助以测试实现。
第七步:测试所完成的应用程序,排查和纠正错误。
三、概要设计
3.1数据库逻辑设计如下:
3.1.1本数据库的设计中,具体涉及到了三张表的创建于修改。Passenger—用户信息表
Flight—航班信息表
P_ticket—票务信息表
3.1.2数据库的完整性约束规则的说明(主键、外键等)如下图所示:
其中选定了级联更新和删除相关的字段和记录可以在我修改flight表和passenger表的主键信息时间接的达到修改票务信息表的目的。
四、详细设计
(1).系统的登陆界面如下图所示:
说明:本窗体需要和数据库里的passenger表相关联,通过ADOconnection1和ADOquery1及datasource1三个控件配合,登陆按钮被点击是触发函数如下:
with adoquery1 do//对用户输入的邮箱地址和密码在passenger表中查询
begin
close;
sql.clear;
sql.text:=('select * from passenger where 邮箱地址=:a and 密码=:b ');
parameters.parambyname('a').value:=trim(edit1.text);
parameters.parambyname('b').value:=trim(edit2.text);
open;
if recordCount=1 then //如果存在符合输入的记录则跳转到查询主页
begin
form1.Visible:=false ;
form3.show;
user_id:=edit1.Text;
manager:='90231@'; //系统中自己设定的管理员账号
if user_id=manager then //如果用户用的是管理员的账号
begin
form3.bitbtn2.Visible:=false ;//管理员不能修改用户信息
form3.BitBtn8.Visible:=true; //管理员对信息管理的按钮可见
bel3.caption:='管理员'
end
else
begin
form3.BitBtn2.Visible:=true; //允许普通用户修改用户信息
form3.BitBtn8.Visible:=false; //不具有信息管理的权限
bel3.Caption:='普通用户';
end;
end
else
showmessage('用户名或密码输入错误!');//密码验证错误,输出提示
end;
(2).新用户的注册界面如下图所示: