软件工程课程设计小组报告.docx
- 文档编号:23863269
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:44
- 大小:436.15KB
软件工程课程设计小组报告.docx
《软件工程课程设计小组报告.docx》由会员分享,可在线阅读,更多相关《软件工程课程设计小组报告.docx(44页珍藏版)》请在冰豆网上搜索。
软件工程课程设计小组报告
软件工程课程设计小组报告
机票预订系统
专业名称:
______软件工程___
班级:
______2010级3班__________
同组成员:
_李效伦_201001050515__
同组成员:
_郭瑶瑶_201001050509__
同组成员:
_韩方杰_201001050607__
指导教师:
_____倪丽娜老师___
实验地点:
___计算机系实验室___
完成日期:
本学期教学周:
第8至14周
信息科学与工程学院
二零一二年十一月
一、课程设计概述
1.1.目的
通过本课程设计的实践及其前后的准备与总结,复习、领会、巩固和运用软件工程课堂上所学的软件开发方法和知识,以此来完成飞机订票系统的分析、设计、编码、测试等工作。
1.2.任务
通过认真阅读老师所给的课程设计的题目要求,进行系统的需求分析、。
1.3.开发环境:
MicrosoftVisualStudio2008+SQLServer2005、WindowsXP
1.4.参考资料:
[1].钱永秋等,软件工程,清华大学出版社,2007年3月。
[2].胡荷芬等,UML系统建模基础教程,清华大学出版社,2010年5月。
[3].郑阿奇等,SQLServer使用教程,电子工业出版社,2009年12月。
[4].金旭亮等,C#程序设计语言基础,北京理工大学出版,2008年10月。
二、项目的需求分析过程及需求模型
2.1.系统可行性分析
随着互联网的普及,越来越多的人都加快了生活的步伐。
同样,买票也越来越方便,现在有更多的用户已经不再排队买票,而是通过互联网,很快就可以完成自己的订票。
想要退票、改签,亦可以通过网络来完成。
在很大程度上节约了人们的时间,可以说互联网给用户带来了一次伟大的变革。
飞机订票系统,给用户提供友好的界面,方便的操作,满足简单用户的需求。
使用户使用更加方便,快捷。
2.2.系统需求分析
2.2.1.系统目标设计
系统开发的总目标是实现飞机订票的系统化、规范化和自动化。
对航空公司旗下的所有航班(包括航班类型,航班号,时间,所属公司,始发地,目的地,仓位,起飞时间,抵达时间,剩余座位,票价)。
进行统一管理
对用户的信息(包括姓名,电话,身份证号,护照号)进行统一管理。
提供方便的查询方法。
如:
时间、始发地、目的地、票价等进行查询。
提供对机票的预定功能。
提供对机票的改签功能。
提供对退票功能。
提供对付款功能。
提供添加航班功能,比如:
某一个航空公司新增加了从A地飞往B地的航班。
提供调整航班功能。
提供取消航班,对于因天气、人为、飞机等原因为不能正常起飞的航班进行取消。
提供用户的注册功能。
2.2.2.系统功能需求分析
(1)用户管理:
用户的分类、注册、订票、退票、改签、付款、取票等。
(2)系统管理:
管理员订票、退票、改签、添加航班、取消航班、调整航班、统计售票情况。
满足以上需求的系统主要包含有一下几个子系统
(1)登录和注册子系统:
该系统中主要包含了用户的注册和登录等功能。
(2)管理员子系统:
该子系统主要包含管理员对系统的操作。
(3)旅客子系统:
该子系统主要包含旅客对系统的操作。
(4)旅行社子系统:
该子系统主要包含旅行社对系统的操作。
下图为该飞机订票系统的主要功能模块图:
图1:
飞机订票系统功能模块图
2.2.3.系统功能描述
(1)订票。
处理各类用户的订票业务。
(2)退票。
处理各类用户的退票业务。
(3)改签。
处理各类用户的退票业务。
(4)注册。
处理用户注册业务。
(5)登录。
对用户的登录信息进行检查。
(6)查询。
负责机票信息的查询。
(7)添加航班。
负责航班信息的添加。
(8)取消航班。
负责航班的取消。
(9)调整航班。
对航班信息进行调整。
(10)统计售票。
对售票情况进行统计。
(11)取票。
用户完成取票功能。
(12)付款。
用户对订票进行网上付款。
2.2.4系统的数据流图
图2:
飞机订票系统的DFD图
三、项目设计模型
3.1.系统UML建模设计
3.1.1.UML简介
UML是一种功能强大的、面向对象的可视化系统分析的建模语言,它采用一整套成熟的建模技术,广泛地适用于各个应用领域。
它的各个模型可以帮助开发人员更好地理解业务流程,建立更可靠、更完善的系统模型。
从而使用户和开发人员对问题的描述达到相同的理解,以减少语义差异,保障分析的正确性.
3.1.2.系统的用例分析
该飞机订票系统的用况图如下:
图3:
飞机订票系统的用况图
从用例图中我们可以看出管理员、旅行社和旅客之间对本系统所具有的用例。
管理员所包含的用例有:
(1)登录系统:
管理员可以通过登录该系统进行各项功能的操作
(2)订票:
帮助用户查询订购机票等。
(3)退票:
帮助用户退订机票等。
(4)改签:
帮助用户改签机票等。
(5)增加航班:
对航班的添加等。
(6)调整航班:
对航班信息的修改等。
(7)取消航班:
取消不能正常起飞的航班等。
(8)统计售票信息:
统计一个时间段内的售票信息等。
旅客所包含的用例有:
(1)登录系统:
管理员可以通过登录该系统进行各项功能的操作
(2)订票:
旅客查询订购机票等。
(3)退票:
旅客退订机票等。
(4)改签:
旅客改签机票等。
(5)付款:
旅客对订购的机票进行付款等。
(6)取票:
旅客取走自己订购的机票等。
旅行社所包含的用例有:
(1)登录系统:
管理员可以通过登录该系统进行各项功能的操作
(2)订票:
旅行社查询订购机票等。
(3)退票:
旅行社退订机票等。
(4)改签:
旅行社改签机票等。
(5)付款:
旅行社对订购的机票进行付款等。
(6)取票:
旅行社取走自己订购的机票等。
3.1.3.系统的顺序图
顺序图是显示对象之间交互的图,这些对象是按时间顺序排列的。
该飞机订票系统主要含有以下几个重要的顺序图,其他对象的顺序图和这些也类似。
本系统主要的顺序图有:
1、登录系统顺序图
图4:
飞机订票系统登录顺序图
【顺序图说明】
(1)输入登录用户账号和密码:
登录系统。
(2)验证登录用户账号和密码:
对用户的登录信息进行验证,检查是否是笨系统的合法用户,并区分用户的权限。
(3)登录信息有效:
根据用户的不同权限进行不同的页面跳转。
(4)退出系统:
用户使用完系统后退出系统。
登录系统时,系统自动区分不同用户的不用权限,用户以有效的身份登录后,可以在自己的权限范围内操作系统。
2、订票顺序图
图5:
飞机订票系统订票顺序图
【顺序图说明】
(1)查询:
查询某个航班的信息。
(2)订购:
检查订购信息无误后进行确认订购。
(3)付款:
为订票进行付款。
(4)取票:
取走自己在系统上定的票。
(5)退出:
退出系统。
订票时,首先查询所定的票是否存在以及是否有余票。
如果有余票,检验订票信息,并订购、付款以及取票。
3、退票顺序图
图6:
飞机订票系统退票顺序图
【顺序图说明】
(1)查询:
查询某个已订票的信息。
(2)退订:
检查退订信息无误后进行确认退票。
(3)退出:
退出系统。
退票时,首先查询自己的订票信息,确认退票信息后确认退订即可。
4、改签顺序图
图7:
飞机订票系统改签顺序图
【顺序图说明】
(1)查询:
查询某个已订票的信息。
(2)删除已订票:
检查改签信息无误后退订已订票。
(3)查询要改签的余票:
有余票才可以改签。
(4)改签:
改签机票,将新改签的机票存入订票表中。
(5)退出:
退出系统。
改签时,首先查询自己的订票信息,首先查询要改签的机票是否有此航班并且有余票,然后退订自己已订购的机票,再订购自己想改签成的机票即可。
5、添加航班顺序图
图8:
飞机订票系统添加航班顺序图
【顺序图说明】
(1)添加航班:
查询是否已存在此航班的信息,如果没有就添加航班。
(2)退出:
退出系统。
添加航班时,首先查询是否已存在此航班的信息,如果没有就添加航班,有就提示添加有误。
6、取消航班顺序图
图9:
飞机订票系统取消航班顺序图
【顺序图说明】
(1)查询:
查询是否存在要取消的航班信息。
(2)取消航班:
取消航班。
(3)退出:
退出系统。
取消航班时,首先查询是否存在要取消的航班信息,如果不存在,则提示取消有误;如果存在,则确认取消此航班。
7、调整航班顺序图
图10:
飞机订票系统调整航班顺序图
【顺序图说明】
(1)查询要调整的航班:
查询要调整的航班是否存在。
(2)调整航班:
输入要调整的信息,如果调整信息正确,则调整成功。
(3)退出:
退出系统。
调整航班时,首先:
查询要调整的航班是否存在,如果存在,则输入要调整的信息,如果调整信息正确,则调整成功。
退出系统。
3.1.4.系统的状态图
飞机订票系统的机票状态图如图7所示。
【状态图说明】
机票在未出售时为系统的剩余机票,可以被订购。
在有剩余机票的前提下,如果机票被订购以后,系统中的相应的机票就应该减少。
同时,被订购的机票可以在规定的时间之前被退订或者改签。
超出退订或者改签时间的不能被退订或者改签。
当用户退订机票时,机票的剩余张数应该增加。
当用户改签机票时,被改签的机票的张数应该增加,改签后的机票应该减少。
添加一个航班,系统中就会产生此航班的机票信息。
图11:
飞机订票系统的机票状态图
3.1.5.系统的活动图
活动图描述的是某流程中的任务的执行,活动图描述活动是如何协同工作的,当一个操作必须完成一系列事情,而又无法确定以什么样的顺序来完成这些事情时,活动图可以更清晰地描述这些事情。
在本飞机订票系统中,我们主要描述了飞机订票系统的订票、退票、改签、增加航班、调整航班、取消航班的活动图。
1.订票活动图
【订票活动图说明】
订票时,首先登陆系统,系统验证用户登录信息的有效性。
用户查询所要定的票是否存在以及是否有余票。
如果有余票,输入自己的信息(如:
姓名、身份证号等信息),检验订票信息是否正确。
如果正确就确定订票,并记录取票,及时取票。
如果不正确,就核对订票信息,进行改正,直到正确为止。
图12:
飞机订票系统订票活动图
2、退票活动图
【退票活动图说明】
退票时,首先登陆系统,系统验证用户登录信息的有效性。
用户查询所要退订的票是否存在。
如果存在,检验退票信息是否正确。
如果正确就确定退票。
如果不正确,就核对退票信息,进行改正,直到正确为止。
图13:
飞机订票系统的退票活动图
3、改签活动图
【改签活动图说明】
改签时,用户首先登陆系统,系统验证用户登录信息的有效性。
用户查询所要改签的票是否存在。
如果存在,检验退票信息是否正确。
如果正确就进行改签。
如果不正确,就核对改签信息,进行改正,直到正确为止。
然后查询要改签的机票是否有余票,如果有余票就确认改签。
图14:
飞机订票系统的改签活动图
4、添加航班活动图
【添加航班活动图说明】
添加航班时,用户首先登陆系统,系统验证用户登录信息的有效性(必须是管理员身份)。
管理员查询要添加的航班是否存在。
如果不存在,检验添加航班信息是否正确。
如果正确就添加航班。
如果不正确,就核对添加航班信息,进行改正,直到正确为止。
图15:
飞机订票系统的添加航班活动图
5、取消航班活动图
【取消航班活动图说明】
取消航班时,用户首先登陆系统,系统验证用户登录信息的有效性(必须是管理员身份)。
管理员查询要取消的航班是否存在。
如果存在,检验取消航班信息是否正确。
如果正确就取消航班。
如果不正确,就核对取消航班信息,进行改正,直到正确为止。
图16:
飞机订票系统的取消航班活动图
6、调整航班活动图
【调整航班活动图说明】
调整航班时,用户首先登陆系统,系统验证用户登录信息的有效性(必须是管理员身份)。
管理员查询要调整的航班是否存在。
如果存在,检验调整航班信息是否正确。
如果正确就调整航班。
如果不正确,就核对调整航班信息,进行改正,直到正确为止。
图17:
飞机订票系统的调整航班活动图
3.1.6.系统的类图
【类图说明】
(1)login类是用户登录的类,它的属性有用户名、密码、权限、编号,操作有登录。
(2)admin类是管理员类,他没有属性,操作主要是订购机票、退订机票、改签机票、添加航班、取消航班、调整航班等等。
(3)users类是用户类,包括用户的姓名、身份证号等属性,同样具有订购机票、退订机票、改签机票等操作。
(4)ticket类是具体机票的类,属性包括航班类、时间、航班号、始发地、目的地、起飞时间、抵达时间、舱位、余票数、票价等属性。
图18:
飞机订票系统的类图及关系
3.2.系统数据库建模
考虑到系统的推广性,本系统采用SQLSERVER2005作为数据库。
并且采用PowerDesigner进行数据建模,从而自动生成sql脚本。
3.2.1.数据库概念设计
1、数据库表设计
(1)登录用户表login_users:
用户名,密码,用户编号,分组。
(2)客户表users:
姓名,电话,地址,身份证号,性别,客户编号。
(3)售票表sale_ticket:
时间,航班号,舱位,座号,身份证号。
(4)航班表flight:
航班类,时间,航班号,所属公司,始发地,目的地,舱位,起飞时间,抵达时间,剩余票数,票价。
(5)订票表book_ticket:
时间,航班号,舱位,座号,身份证号。
2、飞机订票系统个实体之间的E-R图
图12:
飞机订票系统各实体之间的ER图
3、基于powerdesigner的CDM数据库模型
(1)数据库概念数据模型CDM对象如下图,该图显示了各实体的属性及各实体之间的关系。
图13:
飞机订票系统数据库关系图
3.2.2.数据库物理设计
由概念模型生成物理模型的的数据库脚本文件为图书管理.sql文件,代码如下:
USE[aircraf_booking_system]
GO
/******对象:
Table[dbo].[flight]脚本日期:
10/30/201217:
28:
45******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
SETANSI_PADDINGON
GO
CREATETABLE[dbo].[flight](
[航班类][varchar](10)NULL,
[时间][datetime]NULL,
[航班号][varchar](10)NOTNULL,
[所属公司][varchar](10)NULL,
[始发地][varchar](10)NOTNULL,
[目的地][varchar](10)NOTNULL,
[舱位][varchar](10)NULL,
[起飞时间][varchar](10)NOTNULL,
[抵达时间][varchar](10)NOTNULL,
[剩余票数][int]NOTNULL,
[票价][float]NULL,
CONSTRAINT[PK_flight]PRIMARYKEYCLUSTERED
(
[航班号]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
SETANSI_PADDINGOFF
GO
/******对象:
Table[dbo].[login_users]脚本日期:
10/30/201217:
28:
46******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
SETANSI_PADDINGON
GO
CREATETABLE[dbo].[login_users](
[用户名][varchar](50)NOTNULL,
[密码][varchar](50)NOTNULL,
[用户编号][varchar](10)NOTNULL,
[分组][varchar](10)NOTNULL,
CONSTRAINT[PK_users]PRIMARYKEYCLUSTERED
(
[用户编号]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
SETANSI_PADDINGOFF
GO
/******对象:
Table[dbo].[sale_ticket]脚本日期:
10/30/201217:
28:
48******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
SETANSI_PADDINGON
GO
CREATETABLE[dbo].[sale_ticket](
[时间][datetime]NOTNULL,
[航班号][varchar](10)NOTNULL,
[舱位][varchar](10)NULL,
[座号][int]NOTNULL,
[身份证号][varchar](50)NOTNULL,
CONSTRAINT[PK_sale_ticket]PRIMARYKEYCLUSTERED
(
[航班号]ASC,
[身份证号]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
SETANSI_PADDINGOFF
GO
/******对象:
Table[dbo].[book_ticket]脚本日期:
10/30/201217:
28:
40******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
SETANSI_PADDINGON
GO
CREATETABLE[dbo].[book_ticket](
[时间][datetime]NOTNULL,
[航班号][varchar](10)NOTNULL,
[舱位][varchar](10)NULL,
[座号][int]NOTNULL,
[身份证号][varchar](50)NOTNULL,
CONSTRAINT[PK_book_ticket]PRIMARYKEYCLUSTERED
(
[航班号]ASC,
[身份证号]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
SETANSI_PADDINGOFF
GO
/******对象:
Table[dbo].[users]脚本日期:
10/30/201217:
28:
51******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
SETANSI_PADDINGON
GO
CREATETABLE[dbo].[users](
[姓名][varchar](10)NOTNULL,
[电话][varchar](11)NOTNULL,
[地址][varchar](50)NULL,
[身份证号][varchar](50)NOTNULL,
[性别][char]
(2)NULL,
[用户编号][varchar](10)NOTNULL,
CONSTRAINT[PK_users_1]PRIMARYKEYCLUSTERED
(
[用户编号]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
SETANSI_PADDINGOFF
GO
/******对象:
ForeignKey[FK_book_ticket_flight]脚本日期:
10/30/201217:
28:
41******/
ALTERTABLE[dbo].[book_ticket]WITHCHECKADDCONSTRAINT[FK_book_ticket_flight]FOREIGNKEY([航班号])
REFERENCES[dbo].[flight]([航班号])
GO
ALTERTABLE[dbo].[book_ticket]CHECKCONSTRAINT[FK_book_ticket_flight]
GO
/******对象:
ForeignKey[FK_book_ticket_users]脚本日期:
10/30/201217:
28:
41******/
ALTERTABLE[dbo].[book_ticket]WITHCHECKADDCONSTRAINT[FK_book_ticket_users]FOREIGNKEY([身份证号])
REFERENCES[dbo].[users]([身份证号])
GO
ALTERTABLE[dbo].[book_ticket]CHECKCONSTRAINT[FK_book_ticket_users]
GO
/******对象:
ForeignKey[FK_sale_ticket_flight]脚本日期:
10/30/201217:
28:
49******/
ALTERTABLE[dbo].[sale_ticket]WITHCHECKADDCONSTRAINT[FK_sale_ticket_flight]FOREIGNKEY([航班号])
REFERENCES[dbo].[flight]([航班号])
GO
ALTERTABLE[dbo].[sale_ticket]CHECKCONSTRAINT[FK_sale_ticket_flight]
GO
/******对象:
ForeignKey[FK_sale_ticket_users]脚本日期:
10/30/201217:
28:
4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 课程设计 小组 报告