航空售票系统设计报告源代码.docx
- 文档编号:9622885
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:41
- 大小:568.38KB
航空售票系统设计报告源代码.docx
《航空售票系统设计报告源代码.docx》由会员分享,可在线阅读,更多相关《航空售票系统设计报告源代码.docx(41页珍藏版)》请在冰豆网上搜索。
航空售票系统设计报告源代码
算法与数据结构
课程设计报告
设计题目:
航空售票系统
专业:
班级:
学生:
学号:
指导教师:
2013~2014学年第二学期
一、需求分析
1,该航空售票系统主要功能有录入、查询、订票、退票等功能,管理员还有可以查询订票信息的相关功能。
本系统,根据不同的用户角色设置有不同权限,管理员可以查看本系统所有的信息,普通客户只有查询、订票、退票的全部或部分功能。
航空售票系统主要是让普通客户可以登录该系统查询、订票、退票,方便乘客安排自己的行程。
同时,使航空公司能够清楚的看到每条航线的信息,方便管理。
2,该系统是利用C#语言来描述数据结构的单链表和单链队,并且将航空订票的信息保存在txt文件中。
3,系统能够实现的功能和操作如下:
3.1录入功能(管理员)
系统管理员可以添加终点站、航班号、飞机型号、乘员定额、飞行日期的航行信息,并将该信息添加到单链表中,储存在txt文件中。
3.2查询功能(管理员-用户)
系统默认出发城市是荆州,用户可以通过输入将要到达的城市和日期,并根据用户提供的订票量(最多一次性限购5张票),来判断是否有符合用户行程的航班信息。
如航空公司有符合用户需求的航班,则显示出来;若余票量过少或没有,则为用户办理预定机票手续;如是因为出发日期或航空公司没有开通用户需要达到城市的航线,则提醒用户重新输入。
当系统管理员需要查看每个航线的信息时,为系统管理员特定提供的查询功能,可以通过终点站、飞行时间、航班号、飞机型号查询相关的信息。
3.3订票功能(用户)
乘客可以通过输入姓名和身份证号,将已经查询到的航班信息导入到文本框中,如果余票量过少或没有,为用户办理机票预定。
3.4退票功能(用户-管理员)
乘客可以将根据订票的姓名和航班号退票。
同时,可以通过提供管理员权限,为等待预定的第一位用户预订。
若第一位用户的订票量不满足退票的数量,就为后面乘客办理,直到满足为至。
若所有的都不满足,则保留机票,不为预定用户办理订票。
3,5订票信息(管理员)
管理员可以查看已订票乘客所有的订票信息,同时也可以查看所有等待订票的乘客信息。
3.6航班信息(管理员)
管理员可以查看终点站、航班号、飞机型号、飞机日期、乘员定额、余票量。
4,本系统对不同的用户角色有权限设置。
管理员的用户名或密码是系统内设置的无法更改或注册,乘客可以通过姓名和身份证号码注册登录。
(注:
身份证号即为密码)
二、概要分析
1.1,功能模块(管理员)
……(可扩展)
航班信息
航班号
……(可扩展)
飞行型号
飞行日期
终点站
录入功能
航班信息
查询功能
订票信息
6
已订票客户
为订票客户
1.2,功能模块(乘客)
办理
是
退票
退票功能
订票功能
查询功能
终点站
飞行日期
飞行型号
……(可扩展)
航班号
离开
等待
录入
2,数据结构(C#)
2.1单链表(详见类Linklist_singly.cs)
///
///结点类
///
///
publicclassNode
{
privateTdata;
privateNode
///
///构造函数
///
publicNode(){}
publicNode(Tval)
{
data=val;
}
///
///数据域属性
///
publicTData
{
get{returndata;}
set{data=value;}
}
///
///引用域的属性
///
publicNode
{
get{returnnext;}
set{next=value;}
}
}
///
///单链表(头结点的引用不为空)
///
///
publicclassLinklist
{
privateNode
///
///构造函数
///
publicLinklist()
{
head=null;
}
///
///头引用的属性
///
publicNode
{
get{returnhead;}
set{head=value;}
}
///
///求单链表的长度
///
///
publicintGetLength()
{
Node
intlen=0;
while(p!
=null)
{
++len;
p=p.Next;
}
returnlen;
}
///
///判断链表是否为空
///
///
publicboolIsEmpty()
{
if(head==null)
returntrue;
else
returnfalse;
}
///
///在单链表末尾添加数据
///
///
publicvoidAppend(Titem)
{
Node
Node
if(head==null)
{
head=q;
return;
}
p=head;
while(p.Next!
=null)
{
p=p.Next;
}
p.Next=q;
}
///
///删除单链表中第i个结点
///
///
///
publicTDelete(inti)
{
if(IsEmpty()||i<0)
{
returndefault(T);//T是类为引用类型,返回null;
}
Node
if(i==1)//删除头结点
{
q=head;
head=head.Next;
returnq.Data;
}
Node
intj=1;
while(p.Next!
=null&&j
{
++j;
q=p;
p=p.Next;
}
if(i==j)
{
q.Next=p.Next;//删除p结点
returnp.Data;
}
else
returndefault(T);
}
}
2.2单链队(详见类Linklist_Queue.cs,代码略)
三,功能实现
本系统提供不同角色的登录功能。
管理员的用户名:
王昌,密码:
123;用户的登录名的用户名:
王昌,密码:
421126************。
系统为管理员和用户分别提供了不同的功能。
为了使系统的功能实现更加清晰,故本系统采用了三层架构的知识来实现不同角色的不同功能。
首先,建立了三个类库,分别为数据层(DAL)、模型层(Model)、业务层(BLL)。
数据层(DAL)主要是分别获取航班信息、已订票客户信息、未订票客户信息,同时还提供保存航班信息、已订票客户信息、未订票客户信息的方法。
模型层(Model)提供了航班信息、已订票客户信息、未订票客户信息的类,分别提供了相关信息的字段和属性。
业务层(BLL)是实现用户与windows窗体交互的功能具体实现的方法。
数据层(DAL)、模型层(Model)、业务层(BLL)和windows窗体,这几者之间是相互调用的。
数据层需要对模型层进行引用,业务层需要调用模型层、数据层来实现相关功能,windows窗体是与业务层进行交互的,与其他的没有之间的联系。
3,1模型层(Model)
飞行类
publicclassFlightInformation
{
privatestringter_name;
privatestringair_num;
privatestringplane_num;
privatestringday;
privateinttkt_amt;
privateinttkt_sur;
///
///航班信息
///
///
///
///
///
///
///
publicFlightInformation(stringt,stringa,stringp,stringd,intamt,intsur)
{
ter_name=t;
air_num=a;
plane_num=p;
day=d;
tkt_amt=amt;
tkt_sur=sur;
}
publicFlightInformation(){}
///
///终点站的属性
///
publicstringTer_name
{
get{returnter_name;}
set{ter_name=value;}
}
///
///航班号的属性
///
publicstringAir_num
{
get{returnair_num;}
set{air_num=value;}
}
///
///飞机型号
///
publicstringPlane_num
{
get{returnplane_num;}
set{plane_num=value;}
}
///
///飞行时间
///
publicstringDay
{
get{returnday;}
set{day=value;}
}
///
///乘员定额
///
publicintTkt_amt
{
get{returntkt_amt;}
set{tkt_amt=value;}
}
///
///余票量
///
publicintTkt_sur
{
get{returntkt_sur;}
set{tkt_sur=value;}
}
}
已(未)订票客户信息类
publicclasscustomer_book
{
privatestringter_name;
privatestringname;
privatelongidnumber;
privateinttkt_book;
privatestringday;
///
///未订票客户信息
///
///
///
///
///
///
publiccustomer_book(stringter,stringn,longi,intt,stringd)
{
ter_name=ter;
name=n;
idnumber=i;
tkt_book=t;
day=d;
}
publiccustomer_book(){}
///
///终点站的属性
///
publicstringTer_name
{
get{returnter_name;}
set{ter_name=value;}
}
///
///客户姓名的属性
///
publicstringName
{
get{returnname;}
set{name=value;}
}
///
///客户身份证号的属性
///
publiclongIdnumber
{
get{returnidnumber;}
set{idnumber=value;}
}
///
///订票数量的属性
///
publicintTkt_book
{
get{returntkt_book;}
set{tkt_book=value;}
}
///
///飞行时间的属性
///
publicstringDay
{
get{returnday;}
set{day=value;}
}
}
///
///已订票的客户信息
///
publicclasscustomer_booked:
customer_book
{
privatestringplane_number;
privatestringair_number;
///
///构造函数
///
///
///
publiccustomer_booked(stringter,stringn,longi,intt,stringd,string_plane,string_air)
:
base(ter,n,i,t,d)
{
plane_number=_plane;
air_number=_air;
}
publiccustomer_booked(){}
///
///飞机型号
///
publicstringPlane_number
{
get{returnplane_number;}
set{plane_number=value;}
}
///
///航班号
///
publicstringAir_number
{
get{returnair_number;}
set{air_number=value;}
}
}
3,2数据层(DAL)
3.2.1.1获取飞行信息的方法
publicstaticList
{
try
{
if(flag1==1)
{
string[]strText=File.ReadAllLines("Flight.txt",System.Text.Encoding.Default);
string[]s;
chara='';
for(inti=0;i { s=strText[i].Split(a); FlightInformationfli=newFlightInformation(); fli.Ter_name=s[0]; fli.Air_num=s[1]; fli.Plane_num=s[2]; fli.Day=s[3]; fli.Tkt_amt=Int32.Parse(s[4]); fli.Tkt_sur=Int32.Parse(s[5]); flights.Add(fli); flag1++; } } } catch { returnnull; } returnflights; } 3.2.1.2获取已订票客户信息的方法 publicstaticList { try { if(flag2==1) { string[]strText=File.ReadAllLines("Cusbooked.txt",System.Text.Encoding.Default); string[]s; chara=''; for(inti=0;i { s=strText[i].Split(a); customer_bookedcus=newcustomer_booked(); cus.Plane_number=s[0]; cus.Air_number=s[1]; cus.Ter_name=s[2];//终点站 cus.Name=s[3]; cus.Idnumber=long.Parse(s[4]); cus.Tkt_book=Int32.Parse(s[5]); cus.Day=s[6]; cusbooked.Add(cus); flag2++; } } } catch { returnnull; } returncusbooked; } 3.2.1.3获取未订票客户信息的方法(代码略) 3.2.2.1保存航空信息 publicstaticboolSaveFlight() { if(flights.Count<1) returnfalse; try { FileStreamfileStream=newFileStream("Flight.txt",FileMode.Create); StreamWriterstw=newStreamWriter(fileStream,System.Text.Encoding.Default); for(inti=0;i { StringBuilderstr=newStringBuilder(); str.Append(flights[i].Ter_name.ToString()+""); str.Append(flights[i].Air_num.ToString()+""); str.Append(flights[i].Plane_num.ToString()+""); str.Append(flights[i].Day.ToString()+""); str.Append(flights[i].Tkt_amt.ToString()+""); str.Append(flights[i].Tkt_sur.ToString()); stw.WriteLine(str.ToString()); } stw.Close(); fileStream.Close(); returntrue; } catch { returnfalse; } } 3.2.2.2保存已订票客户信息 publicstaticboolSaveBooked() { if(cusbooked.Count<1) returnfalse; try { FileStreamfileStream=newFileStream("Cusbooked.txt",FileMode.Create); StreamWriterstw=newStreamWriter(fileStream,System.Text.Encoding.Default); for(inti=0;i { StringBuilderstr=newStringBuilder(); str.Append(cusbooked[i].Plane_number.ToString()+""); str.Append(cusbooked[i].Air_number.ToString()+""); str.Append(cusbooked[i].Ter_name.ToString()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 航空 售票 系统 设计 报告 源代码
![提示](https://static.bdocx.com/images/bang_tan.gif)