数据结构课程设计+华东交通大学.docx
- 文档编号:7919639
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:50
- 大小:139.73KB
数据结构课程设计+华东交通大学.docx
《数据结构课程设计+华东交通大学.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计+华东交通大学.docx(50页珍藏版)》请在冰豆网上搜索。
数据结构课程设计+华东交通大学
课程设计(论文)任务书
软件 学 院 软件工程 专 业 2005--9 班
一、课程设计(论文)题目 航空客运订票系统
二、课程设计(论文)工作自2007年1月8日起至2007年1月12日止。
三、课程设计(论文)地点:
15#417
四、课程设计(论文)内容要求:
1.本课程设计的目的
1、 使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操
作实现算法,以及它们在程序中的使用方法。
2、使学生掌握软件设计的基本内容和设计方法,并培养学生进行规范化软件设计的能力。
3、使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力。
2.课程设计的任务及要求
1)基本要求:
1. 分析题目,查阅相关资料;
2. 算法设计、数据结构设计;
3. 编写代码并调试;
4. 完成课程设计报告。
2)创新要求:
在基本要求达到后,可进行创新设计,如对。
3)课程设计论文编写要求
(1)要按照书稿的规格打印誊写毕业论文
(2)论文包括目录、绪论、正文、小结、参考文献、谢辞、附录等
(3)毕业论文装订按学校的统一要求完成
4)答辩与评分标准:
(1)完成问题的解决方法分析:
20分;
(2)算法思想(流程):
20分;
(3)数据结构:
20分;
(4)测试数据:
20分
(5)回答问题:
20分。
5)参考文献:
数据结构(C语言版)清华大学出版社
数据结构(C语言版)冶金工业出版社
6)课程设计进度安排
内容天数 地点
构思及收集资料2 图书馆
组装与调试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< for(j=0;j<(75-strlen(line))/2;j++) cout<<""; for(j=1;j<=i;j++) cout<<"■"; for(x=strlen(line)/2;x>i;x--) cout<<"□"; if(k==4) i++; cout< for(j=0;j<(75-strlen(line))/2;j++) cout<<""; cout< cout< for(j=0;j<(65-strlen(bar))/2;j++) cout<<""; cout<<(i-1)*10<<"%Loading"; cout.write(bar,k); cout< for(j=0;j<10;j++) cout< for(j=0;j<24;j++) cout<<""; cout<<"程序设计: 05软件工程(9)班---spring"< for(j=0;j<24;j++) cout<<""; for(j=0;j<=12;j++) cout<<"─"; cout< for(j=0;j<10000000;j++); k++; if(k>4) k=0; } } (2)主函数程序: charMainMenu() { char*MenuItem[]={"│ 航空客运订票系统菜单 │","│ │[1].航线管理│ │",\ "│ │[2].订票办理│ │","│ │[3].退票办理│ │","│ │[4].乘客管理│ │",\ "│ │[5].系统离开│ │"}; returnModelMenu(MenuItem,6); } (3)航线管理函数: voidSub1Menu() { char*MenuItem[]={"│航空客运航线管理子菜单│","│ │[1].航线增设│ │",\ "│ │[2].航线查看│ │","│ │[3].返回主菜单│ │"}; while (1) switch(ModelMenu(MenuItem,4)) { case'1': {Line_Add();break;} case'2': {Line_See();break;} case'3': {return;} default: {ErrorMess();} } } (4)航线增设函数: voidLine_Add() { Flight*p1; while (1) { if(Head==NULL) { p1=p2=newFlight; Head=p2; } else { p1=newFlight; p2->Next=p1; p2=p1; } prefix("航线增设"); cout<<"\t\t\t请输入终点站名: "; cin>>p2->Des_Name; while (1) { cout<<"\n\t\t\t请输入航班号(唯一): "; cin>>p2->Flight_No; if(Find_Line(Head,p2->Flight_No))//存在航班号 cout<<"\n\t\t\t输入的航班号不唯一! "< else break; } cout<<"\n\t\t\t请输入飞机号: "; cin>>p2->Plane_No; while (1) { cout<<"\n\t\t\t请输入飞行周日(1-7): "; cin>>p2->Week_Day; if(p2->Week_Day<'1'||p2->Week_Day>'7') { cout<<"\n\t\t数据输入错误,按任意键继续输入."< getch(); } else break; } cout<<"\n\t\t\t请输入乘员定额: "; cin>>p2->Customer_Amount; cout<<"\n\t\t\t请输入头等舱票价: "; cin>>p2->Price[0]; cout<<"\n\t\t\t请输入普通舱票价: "; cin>>p2->Price[1]; cout<<"\n\t\t\t请输入经济舱票价: "; cin>>p2->Price[2]; p2->Free_Amount=p2->Customer_Amount; p2->CustName=NULL; p2->ReplName=NULL; if(Continue()=='n') { p2->Next=NULL; return; } } } (5)航线查看函数: voidLine_See() { intDay; Flight*p1; p1=Head; char*Week_Day[]={"星期一","星期二","星期三","星期四","星期五","星期六","星期日"}; if(Empty_Flight())//航班线为空 return; prefix("航班查看"); cout<<"┌────┬───┬───┬────┬────┬────┬────────┐"< cout<<"│││││││票价 │"< cout<<"│终点站名│航班号│飞机号│飞行周日│乘员定额│剩余票数├──┬──┬──┤"< cout<<"│ │ │ │ │ │ │头舱│普舱│经舱│"< cout<<"├────┼───┼───┼────┼────┼────┼──┼──┼──┤"< while(p1! =NULL) { Day=p1->Week_Day-'0'-1;//数字转换相应星期数 cout<<"│"< : left)< "│"< "│"< p1=p1->Next; if(p1! =NULL) cout<<"├────┼───┼───┼────┼────┼────┼──┼──┼──┤"< } cout<<"└────┴───┴───┴────┴────┴────┴──┴──┴──┘"< cout<<"\n\t\t\t按任意键返回子菜单..."< getch(); } (6)//---------------订票办理函数--------------- voidSub2Menu() { intTicket_Count,Seat_No,i,flag=0; intFlight_No=0; Flight*p1; Customer*p2; Replace*p3; charanswer[7]; chartemp; inttag=0; intAmount; intIsRepl=0; if(Empty_Flight()) return; while (1) { prefix("订票办理"); flag=0; Flight_No=0; tag=0; cout<<"\n\t\t\t请输入航班号: "; cin>>answer; if(Find_Line(Head,answer,p1,Flight_No)) { while (1) { cout<<"\n\t\t\t请输入定票数: "; cin>>Ticket_Count; if(Ticket_Count==0) { cout<<"\n\t\t\t请输入大于零的数,按任意键继续输入."< getch(); } else break; } if(p1->Free_Amount>=Ticket_Count) { Customer_Count++; flag=1; IsRepl=1; Amount=p1->Free_Amount;if(p1->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; Custp1[Flight_No]->Amount=Ticket_Count; Seat_No=p1->Customer_Amount-p1->Free_Amount+1; Custp1[Flight_No]->Seat_No=Seat_No; p1->Free_Amount-=Ticket_Count; cout<<"\n\t\t\t请输入你的姓名: "; cin>>Custp1[Flight_No]->Name; while (1) { cout<<"\n\t\t\t请输入舱位等级(1-3): "; cin>>Custp1[Flight_No]->Rank; if(! (Custp1[Flight_No]->Rank>='1'&&Custp1[Flight_No]->Rank<='3')) { cout<<"\n\t\t输入出错,请输入1-3之间的数,按任意键继续输入."< getch(); } else break; } cout<<"\n\t\t\t您的座位号为: "< if(Ticket_Count<10) cout<<"\n\t\t\t\t"; else cout<<"\n\t\t\t"; for(i=1;i<=Ticket_Count;i++)//打印座位号 { cout< if(i%10==0) cout<<"\n\t\t\t"; } cout< } elseif(p1->Free_Amount==0) { cout<<"\n\t\t对不起,该航线的票已经全部售完! "< IsRepl=0; } else { cout<<"\n\t\t对不起,该航线的剩余票额数少于你的订票数。 "< IsRepl=0; } if(! IsRepl) { cout<<"\n\t\t是否列入该航线候补乘客名单(Y/N)? "; cin>>temp; if(temp=='y'||temp=='Y')//以下为候补操作 { if(p1->ReplName==NULL) { Replp1[Flight_No]=p3=newReplace; p1->ReplName=Replp1[Flight_No]; } else { p3=newReplace; Replp1[Flight_No]->Next=p3; Replp1[Flight_No]=p3; } IsReplace=0;//候补乘客不为空 tag=1;//已选择列入候补乘客名单 Replp1[Flight_No]->Amount=Ticket_Count; cout<<"\n\t\t\t请输入你的姓名: "; cin>>Replp1[Flight_No]->Name; Replp1[Flight_No]->Seat_No=Seat_No;Replp1[Flight_No]->Amount=Ticket_Count;while (1){ cout<<"\n\t\t\t请输入舱位等级(1-3): "; cin>>Replp1[Flight_No]->Rank; if(! (Replp1[Flight_No]->Rank>='1'&&Replp1[Flight_No]->Rank<='3')) { cout<<"\n\t\t输入出错,请输入1-3之间的数,按任意键继续输入."< getch(); } else break; } cout<<"\n\t\t\t该乘客暂时无座位! "< } } } else cout<<"\n\t\t对不起,没有该次航班,按任意继续操作."< if(flag) Custp1[Flight_No]->Next=NULL; if(tag) { Replp1[Flight_No]->Next=NULL; cout<<"\n\t\t该乘客已成功列入该航线的候补名单."< } if(Continue()=='n') return; }//while } (7)//-----------------退票办理函数----------------- voidSub3Menu() { intFlight_No=0,flag=0; Flight*p1; Customer*p2,*p4; Replace*p3,*p5; charanswer[7],name[7]; inttag=0; intSeat_No; if(Empty_Flight()) return; prefix("退票办理"); if(IsEmpty) { cout<<"\n\n\t\t对不起,系统中暂时无定票乘客..."< getch(); return; } while (1) { flag=0; tag=0; Flight_No=0; prefix("退票办理"); cout<<"\n\t\t\t请输入航班号: "; cin>>answer; if(Find_Line(Head,answer,p1,Flight_No)) { p2=p1->CustName; cout<<"\n\t\t\t请输入您的姓名: "; cin>>name; if(p2==NULL) { cout<<"\n\t\t很抱歉,该航线暂时无人定票,无法进行退票操作."< if(Continue()=='n') return; else continue; } else while(p2! =NULL) { if(strcmp(p2->Name,name)==0) { if(p2==p1->CustName) { prior=p1->CustName; Seat_No=p2->Seat_No; flag=1; break; } } elseif(p2->Next! =NULL) { if(strcmp(p2->Next->Name,name)==0) { tag=1; prior=p2; Seat_No=p2->Next->Seat_No; flag=1; break; } } p2=p2->Next; }//while if(! flag) cout<<"\n\t\t很抱歉,该航线无此乘客,请查证后再操作..."< } else cout<<"\n\t\t对不起,没有该次航班,按任意继续操作."< if(flag) { if(prior==p1->CustName&&! tag) { if(prior->Next==NULL) { p1->Free_Amount+=prior->Amount; p1->CustName=NULL; } else
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 华东 交通大学