软件工程课程设计个人报告--李效伦.doc
《软件工程课程设计个人报告--李效伦.doc》由会员分享,可在线阅读,更多相关《软件工程课程设计个人报告--李效伦.doc(22页珍藏版)》请在冰点文库上搜索。
![软件工程课程设计个人报告--李效伦.doc](https://file1.bingdoc.com/fileroot1/2023-4/29/a5d7d653-e72b-49af-8a77-ca4f783445de/a5d7d653-e72b-49af-8a77-ca4f783445de1.gif)
软件工程课程设计个人报告
机票预订系统
李效伦
专业名称:
______软件工程___
班级:
______2010级3班__________
学号:
______201001050515_________
承担角色:
_____A、D、E___
同组成员:
_郭瑶瑶_201001050509__
同组成员:
_韩方杰_201001050607__
指导教师:
_____倪丽娜老师___
实验地点:
___计算机系实验室___
完成日期:
本学期教学周:
第8至14周
信息科学与工程学院
二零一二年十一月
目录
一、课程设计实验概述 3
二、本小组个人承担部分的主题、构思与创意 4
三、自己在小组所选题目中完成的工作的具体过程 4
3.1.遇到的困难和解决的情况 4
3.2.系统目标设计 5
3.3.系统功能需求分析 6
3.4.管理员子系统和旅客子系统的数据流图 7
3.5.管理员子系统和旅客子系统的用况图 9
3.6.管理员子系统和旅客子系统部分顺序图 10
3.7.机票的状态图 13
3.8.管理员子系统和旅客子系统中部分活动图 14
3.9.测试用例 20
四、个人小结 21
五、附录(个人中文简历) 22
一、课程设计实验概述
1.1.目的与任务:
通过本课程设计的实践及其前后的准备与总结,复习、领会、巩固和运用软件工程课堂上所学的软件开发方法和知识。
以此来完成飞机订票系统的管理员功能模块和旅客功能模块的分析、设计、编码、测试等工作。
1.2.开发环境:
VS2008+SQLServer2005、WindowsXP
1.3.参考资料:
[1].胡荷芬等,UML系统建模基础教程,清华大学出版社,2010年5月。
[2].钱永秋等,软件工程,清华大学出版社,2007年3月。
[3].郑阿奇等,SQLServer使用教程,电子工业出版社,2009年12月。
[4].金旭亮等,C#程序设计语言基础,北京理工大学出版,2008年10月。
1.4.任务完成的一般过程:
(1).阅读题目要求,了解系统需求;
(2).对系统进行技术可行性分析(本课程设计不涉及法律、经济因素);
(3).分析系统体系结构,对系统进行UML建模;
(4).根据系统需求分析和系统体系结构分析进行数据库设计;
(5).根据系统需求分析和系统体系机构的分析进行界面设计;
(6).最后,实现系统需求中的基本功能。
1.5.软件配置:
以MicrosoftVisualStudio2008为开发软件的应用程序,是采用SQLServer2005为开发软件的数据库服务程序。
使用“简单、现代、通用”,及面向对象的程序设计语言—C#。
此种语言为在分布式环境中的开发提供适用的组件开发应用。
C#适合为独立和嵌入式的系统编写程序,从使用复杂操作系统的大型系统到特定应用的小型系统均适用。
1.6.个人完成的程序模块和文档清单
程序模块:
系统中管理员模块和旅客模块。
文档:
会议记录文档、小组最终报告文档、个人课程设计报告文档。
二、本小组个人承担部分的主题、构思与创意
小组选择的题目是机票订购系统,现在很多航空公司为给旅客乘机提供方便,都有自己的机票预定系统。
在生活中,大家都会接触到这些系统,还会很频繁地用到这类系统,比如机票的预定、改签等。
所以,小组选题比较贴近生活现实。
在设计的过程中,切实考虑订票客户的一些习惯,进行与网上一些售票系统的不适应客户之处进行调整(比如:
为客户订票之后但未能及时付款保留更长时间;客户可以在互联网上进行改签机票等)。
此程序完成的基本功能有:
用户的注册,登录;管理员的订票、退票、改签、添加航班、取消航班、统计售票;旅行社的订票、退票、改签、付款、取票;旅客的订票、退票、改签、付款、取票。
小组在编码之前首先进行了界面部分的分工编写,把界面风格调解一致,使程序显示出一个风格,即体现了团队的合作性,又符合团队进行软件设计的标准。
之后,在进行代码的编写时,我们尽量统一编码风格,在程序合并时更加方便。
我们希望通过此次课程设计软件工程课堂上所学的软件开发方法和知识,比如,软件项目的完整设计与开发过程、结构化技术、快速原型法和面向对象方法等。
特别是结构化分析、结构化设计、快速原型开发、面向对象分析与面向对象设计。
笔者主要担着主程序员的职责。
主要完成系统UML建模、管理员模块和旅客模块的分析、设计、编码和测试,并完成小组课程设计报告。
对于旅客模块的设计,笔者通过查阅大量的售票网站充分了解已有网站的设计优势以及网站中出现的不足。
将其他网站的优势之处引用到自己的网站中来;对于那些网站中出现的不足之处加以修改,使之更加符合用户的习惯,笔者认为只有更加符合用户的需求,才能吸引更多用户来使用本系统,以此来为运营商创造更大的价值。
对于管理员模块的设计,由于没有办法去查看网站中管理员的具体操作方法,所以只能参考别人做的类似管理系统中管理员部分的实现方法,分析管理员具有的权限。
通过分析别人的做法,笔者得到了管理员具有的基本功能,进而完成管理员模块的设计。
三、自己在小组所选题目中完成的工作的具体过程
3.1.遇到的困难和解决的情况
由于笔者之前进行过类似管理系统的设计,所以此次课程设计的难度就明显比之前的学习过程降低了很多。
但是,还是遇到了很多问题,主要问题如下:
(1).在开始对系统进行UML建模的过程中,发现很多软件工程课堂上学习到的内容在应用的时候变的很困难,理论的学习和实际的应用还是有很大差距的。
通过不断地参考老师给的例子和一些网上资料,才得以完成系统的UML建模。
(2).分析系统功能时,感觉实现系统的功能无非就是对数据库的增删查改罢了。
但,在实践的过程中发现,系统的测试也是一个很大工作量的任务。
没有进行测试的系统是极易出现错误的。
比如:
用户订票时身份证的输入是错误的,有可能导致用户成功订购机票,但是没有办法取票。
(3).开始使用企业版SQL数据库,在进行数据库连接测试时,总是连不上数据库,经过网上的资料查询,发现自己的数据库装配不完善,缺少一些组件。
后来又更换了精简版的SQL数据库,成功进行了数据库连接的测试。
(4).在进行机票的订票和退票的设计时,使得所有用户都可以进行所定的票的退票业务,导致了系统的瘫痪性错误。
发现这个错误之后就进行小组讨论,最终发现在进行机票的订票和退票的设计时,没有考虑所订票与登录用户的连接,导致了所有客户都可以访问到已定机票。
后来,加上机票与登录用户的连接,成功解决了此问题。
(5).在改签的设计时,用户改签的机票没有完成剩余票增加的功能,也就是用户改签的票仍然出现已售出状态。
查看自己的代码得知:
改签后的票没有将其标志为未售出状态,使得此张票为一张虚票。
只需要在代码中将改签后的票标志为未售出状态即可。
(以下部分都是笔者认真查阅资料,应用软件工程知识建模的成果。
)
3.2.系统目标设计
系统开发的总目标是实现飞机订票的系统化、规范化和自动化。
对航空公司旗下的所有航班(包括航班类型,航班号,时间,所属公司,始发地,目的地,仓位,起飞时间,抵达时间,剩余座位,票价)。
进行统一管理
对用户的信息(包括姓名,电话,身份证号,护照号)进行统一管理。
提供方便的查询方法。
如:
时间、始发地、目的地、票价等进行查询。
提供对机票的预定功能。
提供对机票的改签功能。
提供对退票功能。
提供对付款功能。
提供添加航班功能,比如:
某一个航空公司新增加了从A地飞往B地的航班。
提供调整航班功能。
提供取消航班,对于因天气、人为、飞机等原因为不能正常起飞的航班进行取消。
提供用户的注册功能。
3.3.系统功能需求分析
一个系统的开发,笔者认为最难得部分莫过于系统的需求分析,做好需求分析就相当于完成了开发的一般工作量。
笔者花费了大量的时间进行了系统的需求分析,详细如下:
(1).用户管理:
用户的分类、注册、订票、退票、改签、付款、取票等。
(2).系统管理:
管理员订票、退票、改签、添加航班、取消航班、调整航班、统计售票情况。
满足以上需求的系统主要包含有一下几个子系统
(1).登录和注册子系统:
该系统中主要包含了用户的注册和登录等功能。
(2).管理员子系统:
该子系统主要包含管理员对系统的操作。
(3).旅客子系统:
该子系统主要包含旅客对系统的操作。
(4).旅行社子系统:
该子系统主要包含旅行社对系统的操作。
笔者负责的是管理员子系统和旅客子系统。
该飞机订票系统的主要功能模块图如图1:
图1系统功能模块图
系统的管理员子系统和旅客子系统的功能描述如下:
订票。
处理各类用户的订票业务。
退票。
处理各类用户的退票业务。
改签。
处理各类用户的退票业务。
查询。
负责机票信息的查询。
添加航班。
负责航班信息的添加。
取消航班。
负责航班的取消。
调整航班。
对航班信息进行调整。
统计售票。
对售票情况进行统计。
3.4.管理员子系统和旅客子系统的数据流图
订票系统管理员子系统的DFD图如图2:
图2:
飞机订票系统管理员子系统的DFD图
订票系统旅客子系统的DFD图如图3:
图3:
飞机订票系统旅客子系统的DFD图
3.5.管理员子系统和旅客子系统的用况图
订票系统管理员子系统和旅客子系统的用况图如图4
图4管理员子系统和旅客子系统的用况图
从用例图中我们可以看出管理员和旅客之间对本系统所具有的用例。
3.5.1.管理员所包含的用例有:
(1).登录系统:
管理员可以通过登录该系统进行各项功能的操作
(2).订票:
帮助用户查询订购机票等。
(3).退票:
帮助用户退订机票等。
(4).改签:
帮助用户改签机票等。
(5).增加航班:
对航班的添加等。
(6).调整航班:
对航班信息的修改等。
(7).取消航班:
取消不能正常起飞的航班等。
(8).统计售票信息:
统计一个时间段内的售票信息等。
3.5.2.旅客所包含的用例有:
(1).登录系统:
管理员可以通过登录该系统进行各项功能的操作
(2).订票:
旅客查询订购机票等。
(3).退票:
旅客退订机票等。
(4).改签:
旅客改签机票等。
(5).付款:
旅客对订购的机票进行付款等。
(6).取票:
旅客取走自己订购的机票等。
3.6.管理员子系统和旅客子系统部分顺序图
顺序图是显示对象之间交互的图,这些对象是按时间顺序排列的。
该飞机订票系统主要含有以下几个重要的顺序图,其他对象的顺序图和这些也类似。
笔者完成的子系统主要的顺序图有:
3.6.1.订票顺序图,如图5
图5:
订票顺序图
【顺序图说明】
查询:
查询某个航班的信息。
订购:
检查订购信息无误后进行确认订购。
付款:
为订票进行付款。
取票:
取走自己在系统上定的票。
退出:
退出系统。
订票时,首先查询所定的票是否存在以及是否有余票。
如果有余票,检验订票信息,并订购、付款以及取票。
3.6.2.退票顺序图,如图6
图6:
退票顺序图
【顺序图说明】
查询:
查询某个已订票的信息。
退订:
检查退订信息无误后进行确认退票。
退出:
退出系统。
退票时,首先查询自己的订票信息,确认退票信息后确认退订即可。
3.6.3.添加航班顺序图,如图7
图7:
添加航班顺序图
【顺序图说明】
添加航班:
查询是否已存在此航班的信息,如果没有就添加航班。
退出:
退出系统。
添加航班时,首先查询是否已存在此航班的信息,如果没有就添加航班,有就提示添加有误。
3.6.4.取消航班顺序图,如图8
图8:
取消航班顺序图
【顺序图说明】
查询:
查询是否存在要取消的航班信息。
取消航班:
取消航班。
退出:
退出系统。
取消航班时,首先查询是否存在要取消的航班信息,如果不存在,则提示取消有误;如果存在,则确认取消此航班。
3.6.5.调整航班顺序图,如图9
图9:
调整航班顺序图
【顺序图说明】
查询要调整的航班:
查询要调整的航班是否存在。
调整航班:
输入要调整的信息,如果调整信息正确,则调整成功。
退出:
退出系统。
调整航班时,首先:
查询要调整的航班是否存在,如果存在,则输入要调整的信息,如果调整信息正确,则调整成功。
退出系统。
3.7.机票的状态图
飞机订票系统的机票状态图如图10所示。
【状态图说明】
机票在未出售时为系统的剩余机票,可以被订购。
在有剩余机票的前提下,如果机票被订购以后,系统中的相应的机票就应该减少。
同时,被订购的机票可以在规定的时间之前被退订或者改签。
超出退订或者改签时间的不能被退订或者改签。
当用户退订机票时,机票的剩余张数应该增加。
当用户改签机票时,被改签的机票的张数应该增加,改签后的机票应该减少。
添加一个航班,系统中就会产生此航班的机票信息。
图10:
机票状态图
3.8.管理员子系统和旅客子系统中部分活动图
活动图描述的是某流程中的任务的执行,活动图描述活动是如何协同工作的,当一个操作必须完成一系列事情,而又无法确定以什么样的顺序来完成这些事情时,活动图可以更清晰地描述这些事情。
在本飞机订票系统中,主要描述了飞机订票系统的订票、退票、改签、增加航班、调整航班、取消航班的活动图。
3.8.1.订票活动图,如图11
【订票活动图说明】
订票时,首先登陆系统,系统验证用户登录信息的有效性。
用户查询所要定的票是否存在以及是否有余票。
如果有余票,输入自己的信息(如:
姓名、身份证号等信息),检验订票信息是否正确。
如果正确就确定订票,并记录取票,及时取票。
如果不正确,就核对订票信息,进行改正,直到正确为止。
图11:
订票活动图
3.8.2.退票活动图,如图12
【退票活动图说明】
退票时,首先登陆系统,系统验证用户登录信息的有效性。
用户查询所要退订的票是否存在。
如果存在,检验退票信息是否正确。
如果正确就确定退票。
如果不正确,就核对退票信息,进行改正,直到正确为止。
图12:
退票活动图
3.8.3.改签活动图,如图13
【改签活动图说明】
改签时,用户首先登陆系统,系统验证用户登录信息的有效性。
用户查询所要改签的票是否存在。
如果存在,检验退票信息是否正确。
如果正确就进行改签。
如果不正确,就核对改签信息,进行改正,直到正确为止。
然后查询要改签的机票是否有余票,如果有余票就确认改签。
图13:
改签活动图
3.8.4.添加航班活动图,如图14
【添加航班活动图说明】
添加航班时,用户首先登陆系统,系统验证用户登录信息的有效性(必须是管理员身份)。
管理员查询要添加的航班是否存在。
如果不存在,检验添加航班信息是否正确。
如果正确就添加航班。
如果不正确,就核对添加航班信息,进行改正,直到正确为止。
图14:
添加航班活动图
3.8.5.取消航班活动图,如图15
【取消航班活动图说明】
取消航班时,用户首先登陆系统,系统验证用户登录信息的有效性(必须是管理员身份)。
管理员查询要取消的航班是否存在。
如果存在,检验取消航班信息是否正确。
如果正确就取消航班。
如果不正确,就核对取消航班信息,进行改正,直到正确为止。
图15:
取消航班活动图
3.8.6.调整航班活动图,如图16
【调整航班活动图说明】
调整航班时,用户首先登陆系统,系统验证用户登录信息的有效性(必须是管理员身份)。
管理员查询要调整的航班是否存在。
如果存在,检验调整航班信息是否正确。
如果正确就调整航班。
如果不正确,就核对调整航班信息,进行改正,直到正确为止。
图16:
调整航班活动图
3.9.测试用例
3.9.1利用等价类划分进行身份证测试
等价类表
输入条件
有效等价类
无效等价类
字符个数
18个
(1)
17个
(2)、19个(3)
前17个字符
数字(4)
全是字母(5)、特殊字符(6)
最后一个字符
数字(7)、字母(8)
非数字字母符号(9)
所有字符
18位数字(10)、
17位+1个字母(11)
全是相同数字(12)、
全是字母(13)
测试用例
输入数据
预期结果
覆盖等价类
372922199808083918
正确身份证
(1)、(4)、(7)、(10)
37292219980808391X
正确身份证
(1)、(4)、(8)、(11)
3729221998080839180
不正确身份证
(3)
37292219980808391
不正确身份证
(2)
3729221998%0808398
不正确身份证
(6)
agffdwehtfggghdfvv
不正确身份证
(6)
37292219980808391&
不正确身份证
(9)
aaaaaaaaaaaaaaaaaaa
不正确身份证
(13)
1111111111111111111
不正确身份证
(12)
3.9.2.修改密码测试用例
编号
输入/动作
期望的输出/相应
1
新密码长度在【最小值,最大值】之间,进行修改
修改成功
2
新密码长度为【最大值】,进行修改
修改成功
3
新密码长度为【最小值】,进行修改
修改成功
4
不输入旧密码进行修改
显示未输入旧密码提示信息
5
输入错误的旧密码进行修改
显示旧密码输入错误提示信息
6
新密码输入为空进行修改
显示未输入新密码提示信息
7
重复新密码输入为空进行修改
显示未输入二次密码提示信息
8
新密码与重复新密码不一致进行修改
显示两次密码输入不一致提示信息
9
新密码长度为【最大值】+1,进行修改
显示密码长度验证提示信息
10
新密码长度为【最小值】-1,进行修改
显示密码长度验证提示信息
11
新密码中输入非法字符进行修改
显示密码字符验证提示信息
四、个人小结
通过这次课程设计,加深对在课堂学习的软件工程内容的理解,增强了我掌握和利用软件工程进行软件设计的能力。
比如,软件项目的完整设计与开发过程、结构化技术、快速原型法和面向对象方法等。
特别是结构化分析、结构化设计、快速原型开发、面向对象分析与面向对象设计。
初步掌握了开发系统应用程序的基本方法和步骤。
在开发过程中,首先要认真阅读题目,分析系统的需求,了解系统要实现的基本功能;然后选择一种软件设计方法进行系统体系结构的设计。
不然自己会走很多错路。
大一大二时也曾写过一些代码,但是没有像现在一样的机会,能够用花大量时间去认真的完成一个小应用程序。
之前写的代码总是“拼凑”,只要求结果正确就行了。
总是抱着完成老师布置的作业的心态。
我知道在程序设计领域里这是一定要克服的传统的、错误的想法。
因为在这种思想支配下,可能我总会想办法去"掩盖"程序中的错误,而不是尽可能多地发现程序中存在的问题。
本次课程设计过程中我总是尽力去寻找自己程序中的错误,然后尽力去改正它。
现在,我深知做程序就必须认真去了解内部的具体实现。
通过这此课程设计,极大地提高了我编写代码的兴趣。
同时,我也学会了很多种调试一个稍长程序的基本方法。
比如:
使用MessageBox.Show()提示输出可能出错的内容等。
后来发现很多错误都是重复出现的,所以在编写代码进行调试时,一定要记录自己的错误及解决方法,下次再遇到时可以迅速的查找到错误的地方。
参加小组团队的开发实践,我了解了项目管理、团队合作、文档编写、口头与书面表达的重要性。
我了解到一个程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才进行的。
需要占用系统CPU的内存资源,当系统的内存资源不足时,系统就会崩溃。
这一点让我深深的意识到算法的优化的重要性、及时释放系统资源的优越性。
所以在编写程序时,一定要注重这方面的应用。
这次课程设计虽然很简单,但是使我更好的了解了一些关于c#语言的知识和软件设计的方法,理解巩固了我软件工程的理论知识和应用能力,对我将来的考验或者工作都会有莫大的帮助。
同时此次实践为我们提供了主动学习、深入实践的机会,并且通过课程设计实践中,提高了我的自学能力、书面与口头表达能力、创造能力和与团队其他成员交往和协作开发软件的能力,提高学生今后参与开发稍大规模实际软件项目和探索未知领域的能力和自信心。
它让我知道,只要你努力了,任何东西都是可能的。
五、附录(个人中文简历)
22