机票预定管理系统C++课程设计报告.docx
《机票预定管理系统C++课程设计报告.docx》由会员分享,可在线阅读,更多相关《机票预定管理系统C++课程设计报告.docx(40页珍藏版)》请在冰豆网上搜索。
![机票预定管理系统C++课程设计报告.docx](https://file1.bdocx.com/fileroot1/2022-12/12/58e55ed3-987c-46ec-a004-1774046ae165/58e55ed3-987c-46ec-a004-1774046ae1651.gif)
机票预定管理系统C++课程设计报告
课程设计报告
一、需求分析……………………………………………………2
二、概要设计…………………………………………………3-5
三、详细设计…………………………………………………5-9
四、调试分析………………………………………………9-10
五、用户手册………………………………………………10
六、测试数据………………………………………………10-11
七、附录……………………………………………………11-25
一、需求分析
1、飞机票分为头等舱、经济舱(头等舱价格的y%)、折扣舱(经济舱价格的x%),其中x及y在程序中进行设置。
2、实现飞机票信息的增加、删除、修改、销售、统计、查询等功能。
3、在实现售票的过程中,必须记录购买机票的人员的身份证号、姓名、性别、年龄等信息。
4、顾客可以退票。
5、程序需以菜单方式工作。
6、源文件采用多文件的工程结构
7、数据存储采用文件形式
8、采用面向对象方法设计。
9、功能完善,适当的注释。
10、关于文件的内容需要自学。
二、概要设计
(1)、程序用结构体数组存储数据并将其存入文件当中,将数据存入文件当中要加头文件。
(2)、程序所用的数据类型:
整数型、浮点型、字符型以及字符型数组。
(3)程序中类的设计:
本程序只定义一个类L,在类L中定义了私有成员:
y、z表示经济舱和头等舱机票价格以及折扣舱和经济舱价格的百分比。
公有成员:
charplan_number2[15];表示航班号,chartickets_size2[4];表示机票类型,intsit_number2;表示座位号,chardestin1[10];表示目的地,charname[10];表示乘客的姓名,charIDnumber[19];表示乘客的身份证号,intage;表示乘客的年龄intsit_number;表示乘客所定的座位号,charsex[5];表示乘客的年龄charplan_number1[15];表示乘客所定的航班号。
公有成员函数:
chartickets_size[4];航班信息浏览函数voidplan_information();机票信息函数inttickets_information();订票函数voidtickets_book();退票函数voidrefund();按航班号查询函数voidsearch_plan();按目的地查询函数voidsearch_destin();
类中的结构体和结构体数组:
航班信息的结构体structPlans,结构体数组Plansn[3];用于存储航班信息,订票信息的结构体structBook,结构体数组Bookp[4];用于存储乘客的订票信息。
(4)主程序结构概要:
文件“7.cpp”(菜单和用户进行信息交流的文件)
#include"stdafx.h"
#include"L.h"
#include
#include
#include
#include
#include
Ls;
intmain(intargc,char*argv[])
{//主函数与外界进行信息交流
}
文件“L.h”(类的成员、成员函数和结构体数组的声明文件)
classL
{
public:
private:
};
文件“L.cpp”(类的成员、成员函数和结构体数组的定义文件)
#include"stdafx.h"
#include"L.h"
#include
#include
#include
#include
#include
L:
:
Bookp1[4];
L:
:
L()
{//输入航班信息,并存入文件
}
L:
:
~L(){}
voidL:
:
plan_information()//航班信息浏览函数
{
}
intL:
:
tickets_information()//机票信息
{
}
voidL:
:
refund()//退票
{
}
voidL:
:
search_plan()//按航班号查询
{
}
voidL:
:
search_destin()//按目的地查询
{
}
voidL:
:
judge()//判断机票类型并对相应的机票减一
{
}
三、详细设计
主函数程序流程图:
Y
Y
Y
Ls;
intmain(intargc,char*argv[])
{
intb,a;
for(b=0;;)
{
system("cls");
cout<<"\t\t***主菜单***\n";
cout<<"\t\t1、航班信息\n";
cout<<"\t\t2、机票信息\n";
cout<<"\t\t3、订票\n";
cout<<"\t\t4、退票\n";
cout<<"\t\t5、退出系统\n";
cout<<"\t\t请输入选项\n";
cin>>a;
switch(a)
{
case1:
{
break;
}
case2:
{
break;
}
case3:
{
break;
}
case4:
{
break;
}
case5:
b=1;
break;
}
if(b!
=0)
break;
}
return0;
}
case1:
{
system("cls");
intc;
cout<<"\n\t\t1.航班信息浏览\n"
<<"\n\t\t2.航班信息查询\n"
<<"\n\t\t0.返回\n";
cin>>c;
switch(c)
{
case0:
break;
case1:
{
s.plan_information();
cout<<"0.返回\n";
cin>>b;
break;
}
case2:
{
system("cls");
intd;
cout<<"\n\t\t1.按航班查询\n"
<<"\n\t\t2.按目的地查询\n"
<<"\n\t\t0.返回\n";
cin>>d;
switch(d)
{
case1:
{
cout<<"请输入您要查询的航班号:
\n";
cin>>s.plan_number1;
s.search_plan();
cout<<"\t0.返回\n";
cin>>a;
break;
}
case2:
{
cout<<"请输入您要查询的目的地:
\n";
cin>>s.destin1;
s.search_destin();
cout<<"\t0.返回\n";
cin>>a;
break;
}
case0:
a=0;
break;
default:
break;
}
}
}
break;
}
case2:
{
cout<<"请输入飞机的航班\n";
cin>>s.plan_number2;
cout<<"请输入您机票的类型\n";
cin>>s.tickets_size2;
cout<<"请输入您的座位号\n";
cin>>s.sit_number2;
s.tickets_information();
cout<<"0、返回\n";
cin>>b;
break;
}
case3:
{
inti,j,h,k,q;
intflage;
s.plan_information();
cout<<"请输入:
";
cout<<"\n1、姓名:
\n";
cin>>s.name;
cout<<"2、身份证号:
\n";
cin>>s.IDnumber;
cout<<"3、年龄:
\n";
cin>>s.age;
cout<<"4、性别:
\n";
cin>>s.sex;
for(h=0;;)
{
cout<<"5、请输入您要定的航班号:
\n";
cin>>s.plan_number1;
for(i=0;i<3;i++)
{
if((strcmp(s.plan_number1,s.n[i].plan_number)==0))
{
flage=0;
for(q=0;;)
{
cout<<"6、请选择您要定的机票的类型:
\n"<<"A、头等舱\n"<<"B、经济舱\n"<<"C、折扣舱\n";
cin>>s.tickets_size;
if(strcmp(s.tickets_size,"A")==0&&(s.n[i].ticketA_num!
=0))
{
s.n[i].ticketA_num=s.n[i].ticketA_num-1;
k=0;
q=1;
}
if(strcmp(s.tickets_size,"B")==0&&(s.n[i].ticketB_num!
=0))
{
s.n[i].ticketB_num=s.n[i].ticketB_num-1;
k=0;
q=1;
}
if(strcmp(s.tickets_size,"C")==0&&(s.n[i].ticketC_num!
=0))
{
s.n[i].ticketC_num=s.n[i].ticketC_num-1;
k=0;
q=1;
}
if(k!
=0)
{
cout<<"您选的机票类型已售完!
\n";
break;
}
if(q==1)
break;
}
ifstreamfs("e:
\\tickets_information.txt");
charc;
while(fs.get(c))
cout<fs.close();
for(j=0;;)
{
cout<<"\n请输入你要的座位号:
\n";
cin>>s.sit_number;
for(j=0;j<5;j++)
{
if(s.p[j].sit_number!
=s.sit_number)
{
s.tickets_book();
cout<<"恭喜您,订票成功!
\n";
cout<<"\n0、返回主菜单\n"<<"\n按任意键退出\n";
cin>>h;
break;
}
else
cout<<"对不起,这个座位已经定出或者没有这个座位号!
\n";
j=0;
break;
if(h==0)
break;
}
break;
}
break;
}
}
if(h==0)
break;
if(flage!
=0)
cout<<"对不起没有这个航班号!
\n";
}
break;
}
case4:
{
cout<<"请输入您退票的航班号:
\n";
cin>>s.plan_number2;
cout<<"请输入票的类型:
\n";
cin>>s.tickets_size2;
cout<<"请输入您的座位号:
\n";
cin>>s.sit_number2;
s.refund();
cout<<"0.返回\n任意键退出\n";
cin>>b;
break;
}
四、调试分析
(1)问题及解决方案
问题一、在函数内部定义的结构体数组属于局部变量,导致数据无法调用。
解决方案:
再定义一个公有的结构体数组,将函数内部定义的结构体数组赋值给公有的结构体数组以实现数据的调用。
问题二、怎样实现自己选择座位?
解决方案:
机舱内将座位分布图写入文件当中(tickets_information.txt),再打开文件即可。
(2)经验与体会
随程序课程的结束,自己体会最深的就是这门课程对实际的编程能力要求很高,因为只有实践才能暴露出很多自己预期不到的问题,当自己编的程序越多以前刚开始的一些简单的语法错误能够比较熟练的去解决。
同时对自己的逻辑思维能力,也就是我们拿到一个程序首先应该去了解它的要求和主体,再进行构思初步形成大概的体系,最后在进行具体的编程。
而且调试程序需要有足够的耐心、细心和精力去完成,有时候就是多了一小句都会使某个功能无法实现。
有些时候没有错误比有错误更加难调试,通过这次课设我学会了如何设置断点调试程序。
一道程序设计题往往会有很多种方法去做,但是每一个好的程序都是经过反复的修该、推敲而来的,所以在设计程序的过程中寻找最简捷有效的方案才是课程的精华所在。
五、用户使用说明
(1)此程序的结构不是很复杂所以只需要跟着操作界面上的描述输入即可。
例:
运行程序之后界面会有菜单栏,之后提示会输出你所要选择的项。
六、测试结果
主菜单
1、功能ⅰ:
航班信息浏览(经济舱价格是头等舱类的y%,折扣舱为经济舱的x%,这里设置y=90,x=85)
2、功能ⅱ:
航班信息查询(①、按航班查询)
②、按目的地查询
3、功能ⅲ:
订票加自选座位号
4、功能ⅳ:
机票信息
5、功能ⅴ:
退票
七、附录
文件“7.cpp”
#include"stdafx.h"
#include"L.h"
#include
#include
#include
#include
#include
Ls;
intmain(intargc,char*argv[])
{
intb,a;
for(b=0;;)
{
system("cls");//清屏函数
cout<<"\t\t***主菜单***\n";
cout<<"\t\t1、航班信息\n";
cout<<"\t\t2、机票信息\n";
cout<<"\t\t3、订票\n";
cout<<"\t\t4、退票\n";
cout<<"\t\t5、退出系统\n";
cout<<"\t\t请输入选项\n";
cin>>a;
switch(a)
{
case1:
{
system("cls");
intc;
cout<<"\n\t\t1.航班信息浏览\n"
<<"\n\t\t2.航班信息查询\n"
<<"\n\t\t0.返回\n";
cin>>c;
switch(c)
{
case0:
break;
case1:
{
s.plan_information();
cout<<"0.返回\n";
cin>>b;
break;
}
case2:
{
system("cls");
intd;
cout<<"\n\t\t1.按航班查询\n"
<<"\n\t\t2.按目的地查询\n"
<<"\n\t\t0.返回\n";
cin>>d;
switch(d)
{
case1:
{
cout<<"请输入您要查询的航班号:
\n";
cin>>s.plan_number1;
s.search_plan();
cout<<"\t0.返回\n";
cin>>a;
break;
}
case2:
{
cout<<"请输入您要查询的目的地:
\n";
cin>>s.destin1;
s.search_destin();
cout<<"\t0.返回\n";
cin>>a;
break;
}
case0:
a=0;
break;
default:
break;
}
}
}
break;
}
case2:
{
cout<<"请输入飞机的航班\n";
cin>>s.plan_number2;
cout<<"请输入您机票的类型\n";
cin>>s.tickets_size2;
cout<<"请输入您的座位号\n";
cin>>s.sit_number2;
s.tickets_information();
cout<<"0、返回\n";
cin>>b;
break;
}
case3:
{
inti,j,h,k,q;
intflage;
s.plan_information();
cout<<"请输入:
";
cout<<"\n1、姓名:
\n";
cin>>s.name;
cout<<"2、身份证号:
\n";
cin>>s.IDnumber;
cout<<"3、年龄:
\n";
cin>>s.age;
cout<<"4、性别:
\n";
cin>>s.sex;
for(h=0;;)
{
cout<<"5、请输入您要定的航班号:
\n";
cin>>s.plan_number1;
for(i=0;i<3;i++)
{
if((strcmp(s.plan_number1,s.n[i].plan_number)==0))
{
flage=0;
for(q=0;;)
{
cout<<"6、请选择您要定的机票的类型:
\n"<<"A、头等舱\n"<<"B、经济舱\n"<<"C、折扣舱\n";
cin>>s.tickets_size;
if(strcmp(s.tickets_size,"A")==0&&(s.n[i].ticketA_num!
=0))
{
s.n[i].ticketA_num=s.n[i].ticketA_num-1;
k=0;
q=1;
}
if(strcmp(s.tickets_size,"B")==0&&(s.n[i].ticketB_num!
=0))
{
s.n[i].ticketB_num=s.n[i].ticketB_num-1;
k=0;
q=1;
}
if(strcmp(s.tickets_size,"C")==0&&(s.n[i].ticketC_num!
=0))
{
s.n[i].ticketC_num=s.n[i].ticketC_num-1;
k=0;
q=1;
}
if(k!
=0)
{
cout<<"您选的机票类型已售完!
\n";
break;
}
if(q==1)
break;
}
ifstreamfs("e:
\\tickets_information.txt");
charc;
while(fs.get(c))
cout<fs.close();
for(j=0;;)
{
cout<<"\n请输入你要的座位号:
\n";
cin>>s.sit_number;
for(j=0;j<5;j++)
{
if(s.p[j].sit_number!
=s.sit_number)
{
s.tickets_book();
cout<<"恭喜您,订票成功!
\n";
cout<<"\n0、返回主菜单\n"<<"\n按任意键退出\n";
cin>>h;
break;
}
else
cout<<"对不起,这个座位已经定出或者没有这个座位号!
\n";
j=0;
break;
if(h==0)
break;
}
break;
}
break;
}
}
if(h==0)
break;
if(flage!
=0)
cout<<"对不起没有这个航班号!
\n";
}
break;
}
case4:
{
cout<<"请输入您退票的航班号:
\n";
cin>>s.plan_number2;
cout<<"请输入票的类型:
\n";
cin>>s.tickets_size2;
cout<<"请输入您的座位号:
\n";
cin>>s.sit_number2;
s.refund();
cout<<"0.返回\n任意键退出\n";
cin>>b;
break;
}
case5:
b=1;
break;
}
if(b!
=0)
break;
}
return0;
}
文件“L.h”
classL
{
public:
L();
virtual~L();
charplan_number2[15];
chartickets_size2[4];
intsit_number2;
chardestin1[10];
charname[10];
charIDnumber[19];
intage;
intsit_number;
charsex[5];
charplan_number1[15];
chartickets_size[4];//成员
voidplan_information();//航班信息浏览函数
inttickets_information();//机票信息函数
voidtickets_book();//订票信息函数
voidrefund();//退票函数
voidsearch_plan();//按航班号查询的函数
voidsearch_destin();//按目的地查询的函数
structPlans{//存放航班信息的函数
charplan_number[15];
charorigin[10];
chardestin[10];
charsetout_time[10];
chara