数据结构课程设计+华东交通大学Word格式文档下载.docx
- 文档编号:21054461
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:50
- 大小:139.73KB
数据结构课程设计+华东交通大学Word格式文档下载.docx
《数据结构课程设计+华东交通大学Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计+华东交通大学Word格式文档下载.docx(50页珍藏版)》请在冰豆网上搜索。
组装与调试5 实验室
撰写论文3 图书馆、实验室
学生签名:
王立春
2007年1月15日
课程设计(论文)评审意见
(1)完成问题分析(20分):
优( )、良( )、中( )、一般( )、差( );
(2)算法思想 (20分):
(3)数据结构 (20分):
(4)测试数据(20分):
(5)回答问题 (20分):
(6)格式规范性及考勤是否降等级:
是( )、否( )
评阅人:
赵海霞职称:
讲师
年月日
数据结构课程设计
目录:
一、绪论-----------------------------------------------4
二、正文:
--------------------------------------------4
1、课程设计算法思想------------------------4
2、测试数据-----------------------------------4
3、系统关键算法流程图---------------------5
4、系统调试出现的问题--------------------7
5、各模块的功能说明-----------------------7
6、程序测试情况及运行结果分析-------21
三、总结----------------------------------------------24
四、程序源代码------------------------------------24
一、绪论
1、课程设计目的:
(1)熟练掌握数据结构的基本知识和算法;
(2)基本掌握面向对象程序设计的基本思路和方法;
(3)利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2、程设计题目(问题)描述和要求:
1.题目:
航空客运订票系统
2.问题描述:
航空客运系统系统,现在需要实现查询航线、客票预定和办理退票等功能。
要求:
(1)每条航线所涉及的信息有:
终点站名、航班号、飞机号、飞行周日、乘员定额、余票量、已订票的客户名单和候替补客户名单等。
(2)系统能实现查询航线、承办订票业务、承办退票业务等功能。
二、正文
1、课程设计算法思想:
该程序运用了结构体、线形表和队列等,根据问题描述和要求,系统要求能够按航线或航班号能够查询相关的信息。
确定程序至少应该具备如下功能:
“航线管理”、“订票办理”、“退票办理”、“乘客管理”基本模块。
为查找方便,已订票客户的线形表应按照客户姓名有序,并且,为了插入和删除方便,应以链表作存储结构。
由于预约人数无法预计,队列以链表作为存储结构。
整个系统将各条航线的情况登陆在一张线形表上,航线采用的是顺序存储结构,并按航班有序或终点站有序。
每条航线是这张线形表上的一个记录,包括上述8个域、其中乘客名单域为指向乘客名单链表的头指针,等候替补的客户名单域为分别指向队头和队尾的指针。
2、测试数据:
航班增设输入数据:
终点站:
南昌,航班号:
0910,飞机号:
2006,飞行周日:
5,乘员定额:
200,头等票价:
1000
普通价格:
800,经济票价:
600
订票数据:
航班号:
0910,订票数:
10,姓名:
王立春,舱位等级:
2
退票数据:
0910,姓名:
王立春
3、系统关键算法流程图
(1)主函数流程图:
(2)航运管理函数流程图:
(3)乘客管理函数流程图:
(4)订票办理函数流程图:
(5)退票办理函数流程图:
4、统调试出现的问题:
调试问题出现的主要问题:
编译语法错误及修改,重点是结构体和指针的运用及运行逻辑问题修改和调整。
5、模块的功能说明及运行报告:
(1)启动画面程序:
voidCover()
{
charline[]={"
━━━━━━━━━━"
};
charbar[]={"
...."
inti,j,k=0,x=0,y=0;
for(i=1;
i<
=strlen(line)/2;
)
{
system("
cls"
);
for(j=0;
j<
9;
j++)
cout<
<
endl;
(75-strlen(line))/2;
"
"
;
for(j=1;
=i;
■"
for(x=strlen(line)/2;
x>
i;
x--)
□"
if(k==4)
i++;
line;
(65-strlen(bar))/2;
j++)
(i-1)*10<
%Loading"
cout.write(bar,k);
10;
24;
程序设计:
05软件工程(9)班---spring"
=12;
─"
10000000;
j++);
k++;
if(k>
4)
k=0;
}
}
(2)主函数程序:
charMainMenu()
{
char*MenuItem[]={"
│ 航空客运订票系统菜单 │"
"
│ │[1].航线管理│ │"
\
│ │[2].订票办理│ │"
│ │[3].退票办理│ │"
│ │[4].乘客管理│ │"
│ │[5].系统离开│ │"
returnModelMenu(MenuItem,6);
(3)航线管理函数:
voidSub1Menu()
│航空客运航线管理子菜单│"
│ │[1].航线增设│ │"
│ │[2].航线查看│ │"
│ │[3].返回主菜单│ │"
while
(1)
switch(ModelMenu(MenuItem,4))
case'
1'
:
{Line_Add();
break;
2'
{Line_See();
3'
{return;
default:
{ErrorMess();
(4)航线增设函数:
voidLine_Add()
Flight*p1;
if(Head==NULL)
p1=p2=newFlight;
Head=p2;
else
p1=newFlight;
p2->
Next=p1;
p2=p1;
prefix("
航线增设"
\t\t\t请输入终点站名:
cin>
>
p2->
Des_Name;
while
(1)
\n\t\t\t请输入航班号(唯一):
Flight_No;
if(Find_Line(Head,p2->
Flight_No))//存在航班号
\n\t\t\t输入的航班号不唯一!
break;
\n\t\t\t请输入飞机号:
Plane_No;
\n\t\t\t请输入飞行周日(1-7):
Week_Day;
if(p2->
Week_Day<
'
||p2->
Week_Day>
7'
{
\n\t\t数据输入错误,按任意键继续输入."
getch();
\n\t\t\t请输入乘员定额:
Customer_Amount;
\n\t\t\t请输入头等舱票价:
Price[0];
\n\t\t\t请输入普通舱票价:
Price[1];
\n\t\t\t请输入经济舱票价:
Price[2];
Free_Amount=p2->
CustName=NULL;
ReplName=NULL;
if(Continue()=='
n'
Next=NULL;
return;
(5)航线查看函数:
voidLine_See()
intDay;
p1=Head;
char*Week_Day[]={"
星期一"
星期二"
星期三"
星期四"
星期五"
星期六"
星期日"
if(Empty_Flight())//航班线为空
航班查看"
┌────┬───┬───┬────┬────┬────┬────────┐"
│││││││票价 │"
│终点站名│航班号│飞机号│飞行周日│乘员定额│剩余票数├──┬──┬──┤"
│ │ │ │ │ │ │头舱│普舱│经舱│"
├────┼───┼───┼────┼────┼────┼──┼──┼──┤"
while(p1!
=NULL)
Day=p1->
Week_Day-'
0'
-1;
//数字转换相应星期数
│"
setiosflags(ios:
left)<
setw(8)<
p1->
Des_Name<
│"
setw(6)<
Flight_No<
\
Plane_No<
Week_Day[Day]<
│"
setw(5)<
Customer_Amount<
Free_Amount<
setw(4)<
Price[0]<
Price[1]<
Price[2]<
p1=p1->
Next;
if(p1!
└────┴───┴───┴────┴────┴────┴──┴──┴──┘"
\n\t\t\t按任意键返回子菜单..."
(6)//---------------订票办理函数---------------
voidSub2Menu()
intTicket_Count,Seat_No,i,flag=0;
intFlight_No=0;
Customer*p2;
Replace*p3;
charanswer[7];
chartemp;
inttag=0;
intAmount;
intIsRepl=0;
if(Empty_Flight())
订票办理"
flag=0;
Flight_No=0;
tag=0;
\n\t\t\t请输入航班号:
answer;
if(Find_Line(Head,answer,p1,Flight_No))
\n\t\t\t请输入定票数:
Ticket_Count;
if(Ticket_Count==0)
\n\t\t\t请输入大于零的数,按任意键继续输入."
if(p1->
Free_Amount>
=Ticket_Count)
Customer_Count++;
flag=1;
IsRepl=1;
Amount=p1->
Free_Amount;
CustName==NULL)
Custp1[Flight_No]=p2=newCustomer;
p1->
CustName=Custp1[Flight_No];
else
p2=newCustomer;
Custp1[Flight_No]->
Next=p2;
Custp1[Flight_No]=p2;
IsEmpty=0;
Amount=Ticket_Count;
Seat_No=p1->
Customer_Amount-p1->
Free_Amount+1;
Seat_No=Seat_No;
Free_Amount-=Ticket_Count;
\n\t\t\t请输入你的姓名:
Custp1[Flight_No]->
Name;
\n\t\t\t请输入舱位等级(1-3):
Rank;
if(!
(Custp1[Flight_No]->
Rank>
='
&
Rank<
))
\n\t\t输入出错,请输入1-3之间的数,按任意键继续输入."
\n\t\t\t您的座位号为:
if(Ticket_Count<
10)
\n\t\t\t\t"
\n\t\t\t"
=Ticket_Count;
i++)//打印座位号
Seat_No++<
if(i%10==0)
elseif(p1->
Free_Amount==0)
\n\t\t对不起,该航线的票已经全部售完!
IsRepl=0;
\n\t\t对不起,该航线的剩余票额数少于你的订票数。
IsRepl)
\n\t\t是否列入该航线候补乘客名单(Y/N)?
temp;
if(temp=='
y'
||temp=='
Y'
)//以下为候补操作
ReplName==NULL)
Replp1[Flight_No]=p3=newReplace;
ReplName=Replp1[Flight_No];
p3=newReplace;
Replp1[Flight_No]->
Next=p3;
Replp1[Flight_No]=p3;
IsReplace=0;
//候补乘客不为空
tag=1;
//已选择列入候补乘客名单
Replp1[Flight_No]->
while
(1){
(Replp1[Flight_No]->
\n\t\t\t该乘客暂时无座位!
//候补乘客无座提示
}
\n\t\t对不起,没有该次航班,按任意继续操作."
//航线不存在
if(flag)
if(tag)
\n\t\t该乘客已成功列入该航线的候补名单."
}//while
(7)//-----------------退票办理函数-----------------
voidSub3Menu()
intFlight_No=0,flag=0;
Customer*p2,*p4;
Replace*p3,*p5;
charanswer[7],name[7];
intSeat_No;
退票办理"
if(IsEmpty)
\n\n\t\t对不起,系统中暂时无定票乘客..."
if(Find_Line(Head,answer,p1,Flight_No))
p2=p1->
CustName;
\n\t\t\t请输入您的姓名:
name;
if(p2==NULL)
\n\t\t很抱歉,该航线暂时无人定票,无法进行退票操作."
continue;
while(p2!
if(strcmp(p2->
Name,name)==0)
if(p2==p1->
CustName)
prior=p1->
Seat_No=p2->
Seat_No;
elseif(p2->
Next!
=NULL)
Next->
Name,name)==0)
prior=p2;
p2=p2->
}//while
flag)
\n\t\t很抱歉,该航线无此乘客,请查证后再操作..."
if(flag)
if(prior==p1->
CustName&
!
tag)
if(prior->
Next==NULL)
Free_Amount+=prior->
Amount;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 华东 交通大学