UML 飞机订票系统课设.docx
《UML 飞机订票系统课设.docx》由会员分享,可在线阅读,更多相关《UML 飞机订票系统课设.docx(25页珍藏版)》请在冰豆网上搜索。
UML飞机订票系统课设
《UML课程设计》报告
题目:
机票订票系统
学号:
11103301
姓名:
卜发友
指导老师:
王丹、罗新
日期:
2014-07-02
1.系统概述
1.1背景
当今世界,以信息技术为主要标志的科技进步日新月异,高科技成果向现实生产力的转化越来越快。
纵观全球经济发展,信息技术和信息产业已经成为经济增长的主要推动力之一,正在改变着传统的生产和经营方式以至生活方式,发达国家经过产业结构的升级和经济结构的转型已进入信息经济阶段。
信息资源已经成为国民经济和社会发展的战略资源,信息化水平也已成为现代水平和综合国力的重要标志。
党和国家已将国民经济和社会信息化放在优先发展位置,体现了先进生产力的客观要求,是一项重要的战略决策。
这是民航加快发展的机遇,更是民航信息化的难得机遇。
随着知识经济的到来,人类已经逐步进入信息化社会,信息增长的速度越来越快,人们希望利用先进的管理理论方法手段来得到并处理越来越多的信息,以提高工作效率和管理水平。
由于信息资源对人们生活的重要性,不断提高信息的收集,传输,加以利用等活动,日益成为人们社会生活的重要组成部分。
网上机票预订管理系统的产生和发展正好满足人们的这种需求。
现在将详细介绍我的课程设计——网上机票预订管理系统。
1.2系统目标
系统实现后,大大提高旅游局的机票预定服务效率。
降低售票服务中的错误发生率,减少信息交流繁琐的过程以及其带来的开销。
方便用户查询管理自己的票务信息。
1.3系统需求规格说明
1:
功能需求:
A:
用户注册功能:
该功能可以完成普通旅客注册和管理员注册任务。
B:
用户信息维护功能:
该功能可以完成普通旅客和管理员根据实际情况,对自己的信息进行更新操作。
C:
用户功能:
C1:
机票查询功能:
该功能为用户提供简洁的页面呈现,方便用户根据自己的需要选择自己需要的机票。
C2:
机票预定功能:
该功能为用户提供简洁的页面呈现,方便用户根据自己的需要预定机票。
C3:
退票功能:
该功能,功能为用户提供简洁的页面呈现,为用户提供退票功能。
D:
管理员功能:
D1:
票务信息维护功能:
通过该功能,管理员可以根据飞机场提供的相关信息,更新最新的票务信息,方便用户查询。
D2:
飞机信息维护功能:
通过该功能,管理员可以根据实际情况,更新飞机的机长,型号,使用年限等信息。
D3:
用户信息维护功能:
通过该功能,管理员可以查阅到用户的详细信息,并根据用户的申请,为用户更新会员信息。
2:
性能需求:
A:
系统处理的准确性和及时性:
系统处理的准确性和及时性是系统的必要性能。
在系统设计和开发过程中,要充分考虑程序当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足企业对信息处理的需求。
在系统开发过程中,必须采用一定的方法保证系统的准确性。
B:
系统的开放性和系统的可扩展性:
系统应该是一个开放系统,只要符合一定的规范,就可以简单的加入和减少系统的模块,配置系统的硬件。
通过软件的修补,替换完成系统的升级和更新换代。
C:
机票预订系统直接面对使用人员的,而使用人员往往对计算机并不是非常熟悉。
这就需要系统能够提供良好的用户接口,易用的人机交互界面。
要实现这一点,就要求系统应该尽量使用用户熟悉的属于和中文信息界面;针对用户可能出现的问题,提供足够的在线帮助,缩短用户对系统的熟悉过程。
3:
运行需求:
机票预定系统中的硬件和软件的配置如下:
1,服务器端系统运行要求
系统软件:
Linux
数据库管理系统:
SQLServer2005
硬件要求:
PentiumIII450以上,256MRAM14GHD
2,客户端子系统的要求:
系统软件:
windowxp及以上
硬件要求:
pentium133以上32MRAM4,3GHD
2.系统分析
为方便用户订票,实现了网上订票功能,根据要求搜索满足条件的票订票,退票,简单方便。
一下分别是用户、售票员、管理员的用例图,通过用例图可以清楚的看见各种所属的功能。
售票员用例图
系统管理员用例图
2.
用例:
登录
参与者:
用户,管理员,售票员
简要说明:
用户,系统管理员,销售人员登录系统
前提条件:
已注册
后置条件:
登录到系统
事件流
系统提示用户(系统管理员、销售人员)输入用户名,密码。
输入用户名和密码。
系统验证用户名和密码,若正确,则登录到系统中。
候选事件流
4)密码错误
(1)系统提示再次输入。
(2)用户确认。
(3)三次错误,拒绝再次访问。
(4)否则进入添加课程事件流第3步。
用例名称:
乘客查询机票信息
主参与者:
乘客
利益相关者:
乘客、管理员
前置条件:
乘客必须在线可访问网络
最低保证:
回滚任何未完成的事务,系统记录进展日志直到失败
成功保证:
用户想要的信息正确加载
事件流:
乘客选择出发地、目的地和时间等信息。
乘客从界面中选择要查看的航班信息。
乘客从界面中选择选定的航班查看具体信息。
乘客使用“返回”按钮,查看其它航班信息。
候选事件流:
距离第一次查询超过30分钟。
通知管理员和用户,自动更新最新航班信息。
系统回滚最初状态。
系统会滚到交易前位置。
用例名称:
退订机票
主参与者:
用户
前置条件:
乘客必须在线可访问网络
最低保证:
回滚任何未完成的事务,系统记录进展日志直到失败
成功保证:
用户成功退订一张订单
触发器:
用户单击退票按钮
事件流:
1:
用户成功查询自己的订单详情。
2:
用户选择一张订单,系统将订单详情显示在页面上。
3:
通知用户是否退订该订单
4:
用户选择是,调用退票用例,更新票务信息表。
5:
告知用户成功退票。
6:
用户选择否,返回页面。
候选事件流:
1:
根据用户提供的信息,无法查询到一张订单
告知用户,提供正确订单号,继续操作
2:
票务信息票更新出错:
告知管理员,手动更新。
3:
机票信息表更新出错:
告知管理员。
手动更新。
系统回滚最初状态。
系统会滚到交易前位置。
用例名称:
用户注册
主参与者:
乘客
前置条件:
乘客已经调用了“用户注册”用例
最低保证:
回滚任何未完成的事务,系统记录进展日志直到失败
成功保证:
乘客成功的完成订单,创建订单,信用卡支付,创建收据,返回乘客订单信息
触发点:
乘客点击“注册按钮”
事件流:
页面跳转至用户注册页面。
用户填入信息,点击注册。
成功校验用户输入的信息:
空校验,密码校验等错误信息校验,
信息校验合法,更新客户表
告知用户,成功注册,请返回登录
候选事件流:
1:
用户提供的信息不足:
告知用户,提供详细信息后,完成注册
2:
密码校验不相符:
告知用户,校验密码后,完成注册
3:
客户表更新失败
告知管理员,手动更新
系统回滚最初状态。
系统会滚到交易前位置。
用例名称:
用户购买机票
主参与者:
乘客
前置条件:
乘客已经调用了“查询机票”用例
最低保证:
回滚任何未完成的事务,系统记录进展日志直到失败
成功保证:
乘客成功的完成订单,创建订单,信用卡支付,创建收据,返回乘客订单信息
事件流:
1.为这个事务创建一个订单。
2.乘客根据时间需求,已经确认所需航班。
3.确认航班信息,并登录网上银行进行支付。
4.顾客收到包含航班号、身份证号、乘客姓名、乘机时间、联系电话等在内的确认信息。
5.顾客选择“提交订单”,顾客、订单、和航班数据被更新。
6.订单完成。
候选事件流:
已经选择航班,但长时间没有支付
超过网站预留时间(50分钟),订单被取消。
反馈通知用户。
未超过网站预留时间(50分钟),航班信息被网站更新,订单取消。
未超过网站预留时间(50分钟),航班信息未被网站更新,业务继续。
由于机票已被其他用户预订而不能创建订单。
顾客收到无机票的消息,被通知选择其他航班。
顾客收到无机票的消息,退该用例。
顾客由于信用卡账户不能成功支付。
信用卡有问题,顾客被要求用一个新的信用卡账户。
网站问题,顾客被通知稍后再试。
Interner连接中断
系统回滚最初状态。
顾客在任一点退出系统
系统会滚到交易前位置。
用例名称:
修改(增加、删除)航班
主参与者:
管理员
前置条件:
管理员成功登录系统
最低保证:
管理员无法获得权限,自动退出系统
成功保证:
管理员成功登录系统
事件流:
1:
成功调用登录用例;
2:
管理员成功登录系统。
3:
管理员通过航空公司所提供的航班信息成功更新票务信息。
4:
用户订票信息成功反馈给管理员。
5:
管理员根据反馈信息实时更新订票系统。
候选事件流:
1:
管理员无法正常登录系统:
A:
告知管理员,管理员校验用户名和密码,并重新登录,并登录成功。
B:
告知管理员,管理员退出系统。
2:
用户订票信息无法正常反馈:
A:
告知管理员和用户,延迟订单操作,等待管理员更新票务信息后,继续订单的执行。
3:
管理员对航班信息操作不成功
A.通知用户,系统暂时不可用,请稍后登录,并手动更新数据。
2.2.1售票员订票的详细流程,先登录,然后应要求,可以对之前已订的票选择退票或者根据航班信息或者根据票量搜寻满足条件的票,如果有满足条件的就显示出来,然后进行订票,打印单据,结束。
2.2.2系统管理员活动图,主要实现对航班的增,删,改等更新操作。
2.2.3用户订票活动图,从登陆开始,到搜索满足条件的票进行订票,付款。
2.2.4用户登录到系统的顺序图
2.2.5用户订票顺序图
2.3.1本系统用用户类,售票员类,系统管理员类,以及银行类组成
登录状态图
整个系统状态图
2.4.2主窗口
主要实现代码:
publicstaticStringstrnum;
publicstaticStringairTime;
privatevoidtimer1_Tick(objectsender,EventArgse)
{
toolStripStatusLabel4.Text="当Ì¡À前¡ã时º¡À间?
:
êo"+DateTime.Now.ToLongDateString()+DateTime.Now.ToLongTimeString();
}
privatevoidForm2_Load(objectsender,EventArgse)
{
timer1.Start();
timer1.Interval=1000;
comboBox1.SelectedIndex=0;
Stringstr="DataSource=.;InitialCatalog=AirFlight;IntegratedSecurity=SSPI";
SqlConnectionconn=newSqlConnection(str);
conn.Open();
Stringsql="selectdistinct始º?
发¤¡é地Ì?
fromPlaneInfo";
SqlDataAdapterda=newSqlDataAdapter(sql,conn);
DataSetds=newDataSet();
da.Fill(ds,"begin");
comboBox2.DataSource=ds.Tables["begin"];
comboBox2.DisplayMember="始º?
发¤¡é地Ì?
";
Stringsqll="selectdistinct目?
的Ì?
地Ì?
fromPlaneInfo";
da=newSqlDataAdapter(sqll,conn);
ds=newDataSet();
da.Fill(ds,"end");
comboBox3.DataSource=ds.Tables["end"];
comboBox3.DisplayMember="目?
的Ì?
地Ì?
";
conn.Close();
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
Stringstr="DataSource=.;InitialCatalog=AirFlight;IntegratedSecurity=SSPI";
SqlConnectionconn=newSqlConnection(str);
conn.Open();
StringselectCo="select*fromPlaneInfowhere始º?
发¤¡é地Ì?
='"+comboBox2.Text.Trim()+"'and目?
的Ì?
地Ì?
='"+comboBox3.Text.Trim()+"'";
//StringselectCo="select*fromPlaneInfo";
SqlCommandcomm=newSqlCommand(selectCo,conn);
SqlDataReaderdr=comm.ExecuteReader();
if(dr.Read())
{
conn.Close();
conn.Open();
SqlDataAdapterda=newSqlDataAdapter(selectCo,conn);
DataTableds=newDataTable();
da.Fill(ds);
dataGridView1.DataSource=ds;
}
else
{MessageBox.Show("无T此ä?
航?
班㨤");}
conn.Close();
}
privatevoidlabel2_Click(objectsender,EventArgse)
{
Stringstr="DataSource=.;InitialCatalog=AirFlight;IntegratedSecurity=SSPI";
SqlConnectionconn=newSqlConnection(str);
conn.Open();
StringselectCo="select*fromPlaneInfowhere目?
的Ì?
地Ì?
='海¡ê南?
'";
SqlDataAdapterda=newSqlDataAdapter(selectCo,conn);
DataTableds=newDataTable();
da.Fill(ds);
dataGridView1.DataSource=ds;
conn.Close();
}
privatevoidlabel3_Click(objectsender,EventArgse)
{
Stringstr="DataSource=.;InitialCatalog=AirFlight;IntegratedSecurity=SSPI";
SqlConnectionconn=newSqlConnection(str);
conn.Open();
StringselectCo="select*fromPlaneInfowhere目?
的Ì?
地Ì?
='巴㨪黎¤¨¨'";
SqlDataAdapterda=newSqlDataAdapter(selectCo,conn);
DataTableds=newDataTable();
da.Fill(ds);
dataGridView1.DataSource=ds;
conn.Close();
}
privatevoidlabel4_Click(objectsender,EventArgse)
{
Stringstr="DataSource=.;InitialCatalog=AirFlight;IntegratedSecurity=SSPI";
SqlConnectionconn=newSqlConnection(str);
conn.Open();
StringselectCo="select*fromPlaneInfowhere折?
扣?
<6.0";
SqlDataAdapterda=newSqlDataAdapter(selectCo,conn);
DataTableds=newDataTable();
da.Fill(ds);
dataGridView1.DataSource=ds;
conn.Close();
}
privatevoidlabel5_Click(objectsender,EventArgse)
{
Stringstr="DataSource=.;InitialCatalog=AirFlight;IntegratedSecurity=SSPI";
SqlConnectionconn=newSqlConnection(str);
conn.Open();
StringselectCo="select*fromPlaneInfowhere目?
的Ì?
地Ì?
='北À¡À京?
'";
SqlDataAdapterda=newSqlDataAdapter(selectCo,conn);
DataTableds=newDataTable();
da.Fill(ds);
dataGridView1.DataSource=ds;
conn.Close();
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
strnum=textBox3.Text.Trim();
airTime=dateTimePicker1.Text;
Form3f3=newForm3();
f3.Show();
}
填写订单界面
根据航班信息自动从数据库调出行程,起飞时间,航空公式,票价等信息,以方便顾客查看确认信息。
2.4.4对于退票,改签尚未实现的功能界面
通过本次课设,让我对UML更加理解了,UML是统一建模语言,是一种面向对象的可视化建模语言,它能够让系统构造者用标准的、易于理解的方式建立起能够表达他们设计思想的系统蓝图,并提供一种机制,便于不同人之间有效地共享和交流设计成果。
在系统实施之前还应包括系统分析和设计阶段,在系统分析和设计阶段可以通过建立软件模块来确定用户需求和系统功能。
对于以后的软件设计,有着绝对的作用,可以让自己的系统更加清晰,明了,不会杂乱无章,或者说做软件时,毫无头绪的,像无头苍蝇似的,想到哪做到那,UML各类图可以让大脑用个明了的框图。