📄 airbookingsystem.txt
字号:
课程设计-航空订票系统
这个设计虽然是C语言写的,但是觉得语言不是问题,数据结构讲究的是算法思想,C能实现的,java同样能实现。
这个是数据结构的课程设计 。
重要说明 :本程序的由我跟我的另两个搭档完成 主要代码由本人 网名 帅得不敢出门 完成 美化部分是网上找的 只供交流用 请匆当作自己的课程设计应付了事 谢谢!
把实验报告的大部分都传上来了 希望能让大家看的更明了
一.课程设计目的
通过一周的课程设计,我们小组了解并掌握数据结构与算法的设计方法,具备了初步的独立分析和设计能力和初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。在整个设计过程中,我们小组的成员们互相帮助,不理解代码的多向知道的人提问,最后使每个人都理解和掌握代码,提高了自己综合运用所学的理论知识和方法独立分析和解决问题的能力,训练用系统的观点和软件开发一般规范进行软件开发,为进一步的应用开发打好基础。
二.问题描述::
(1)录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
(2)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,抵达城市,航班票价,确定航班是否满仓);
可以输入起飞抵达城市,查询飞机航班情况;
(3)订票:(订票情况可以存在一个数据文件中,结构自己设定)
可以订票,如果该航班已经无票,可以提供相关可选择航班;
(4)退票: 可退票,退票后修改相关数据文件;
客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
(5)修改航班信息:
当航班信息改变可以修改航班数据文件
三.需求分析
该程序是一个航空订票系统的软件,为航空管理员提供方便,为旅客提供航空定票录入. 查询.咨询. 订票. 退票. 修改航班信息等功能。此程序规定:
一:输入订票数,座位号,乘员定额时需输入一个整型数据;输入飞机飞行周日里应该输入1到7的数;在选择功能时,应输入与所选功能对应的一个整型数据。
二:程序的输出信息主要:
一):启动界面。
二):订票系统菜单主界面:
1.航线管理
2.订票办理
3.退票办理
4.乘客管理
5.系统离开
三):航线管理信息包括:
1.航线增设
2.航线查看
3.航线修改
4.返回主菜单
四):订票办理信息包括:
_ 转到定票界面
五):退票办理信息包括:
_转到退票界面
六): 乘客管理信息包括:
_可以查询到乘客预定过的票的信息
七):系统离开信息包括:
_结束此次的操作.
四.概要设计
(一):系统用到的抽象数据类型定义:
实现函数的具体功能:
(引用结构数组来快速实现客户端订票,退票的功能。先创建二结构数组,通过对添加和删除来使之实现上述功能)
1、Cover( );{ 启动画面函数}
2、ModelMenu ( );{ 菜单模板函数}
3、MainMenu ( );{ 主菜单函数}
4、Continue ( );{ 是否继续函数}
5、ErrorMess( );{ 操作出错函数}
6 ExitSystem();{系统退出}
7 prefix( );{操作提示函数}
8 save();{保存航班信息}
9 read();{从文件读取航班信息模块}
10 save2();{客户信息保存模块程序}
11 read2();{从文件读取客户信息模块}
12 Line_Add();{航线添加函数}
13 Empty_Flight();{航线是否为空函数}
14 Line_See();{航线查看函数}
15 Line_Edit();{航线修改}
16 Sub1Menu();{航线管理}
17 Sub2Menu();{订票办理}
18 Display_Reserve();{订票乘客信息}
19 Sub3Menu();{退票操作}
20 Sub4Menu();{乘客管理}
(二):本系统要用到的库函数:
#include< iostream>
#include<process.h>
#include<stdio.h>
#include<string.h>
#include<conio.h>
(三):本系统的结构体是:
struct Customer //已定票乘客信息
{
char Name[20]; //姓名
int Amount; //定票数
char bianhao[20]; //证件号
char Flight_No[20] ; //航班号
char Rank; //舱位等级
int Seat_No; //所订票座位号
//int Seat_End_No; //所订的票的最后一个座位号
char Des_Name[20]; //终点站名
char Plane_No[20]; //飞机号
int Fist_Seat;//一人所订票的第一座位号
int Last_Seat;//一人所订票的最后一座位号
} c[N];
struct Flight //航线信息
{
char Des_Name[20]; //终点站名
char Flight_No[20]; //航班号
char Plane_No[20]; //飞机号
char Week_Day; //飞行周日
int Customer_Amount; //乘员定额
int Free_Amount; //剩余票数
float Price[3]; //舱位等级的价格
} f[N];
五.详细设计
创建订算法的伪码描述如下:
#include <iostream>
#include <process.h>
#include <string.h>
#include <conio.h>
#include <stdio.h>
#include <iomanip>
using namespace std;
#define MAX 50
#define NULL 0
#define N 100
#define NULL 0
int i=0;
int m=0;
int k=0;
int n=0;
int j=0;
int add_m=0;
FILE *fp, *fp1;
struct Customer //已定票乘客信息
{
char Name[20]; //姓名
int Amount; //定票数
char bianhao[20]; //证件号
char Flight_No[20] ; //航班号
char Rank; //舱位等级
int Seat_No; //所订票座位号
//int Seat_End_No; //所订的票的最后一个座位号
char Des_Name[20]; //终点站名
char Plane_No[20]; //飞机号
int Fist_Seat;//一人所订票的第一座位号
int Last_Seat;//一人所订票的最后一座位号
} c[N];
struct Flight //航线信息
{
char Des_Name[20]; //终点站名
char Flight_No[20]; //航班号
char Plane_No[20]; //飞机号
char Week_Day; //飞行周日
int Customer_Amount; //乘员定额
int Free_Amount; //剩余票数
float Price[3]; //舱位等级的价格
} f[N];
int Customer_Count=0; //所有航线的定票乘客总数
int IsEmpty=1; //是否有定票乘客当其值等于0时有
int Flight_Count=0;//航班总数
#include "head.h"
//-------启动画面函数----------
void Cover()
{
char line[]={"程序读取中 请耐心等待..."};
char bar[]={"...."};
int i,j,k=0,x=0,y=0;
for(i=1;i<=strlen(line)/2;)
{
system("cls");
for(j=0;j<9;j++) //改变行坐标
cout<<endl;
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<<endl;
for(j=0;j<(75-strlen(line))/2;j++) //行坐标定位
cout<<" ";
cout<<line; //输出线条
cout<<endl;
for(j=0;j<(65-strlen(bar))/2;j++)
cout<<" ";
cout<<(i-1)*10<<"% Loading";
cout.write(bar,k);
cout<<endl;
for(j=0;j<10;j++)
cout<<endl;
for(j=0;j<24;j++)
cout<<" ";
cout<<"程序设计:05计本一班曾鸣 李展 赖梁琳"<<endl;
for(j=0;j<24;j++)
cout<<" ";
for(j=0;j<=18;j++)
cout<<"─";
cout<<endl;
for(j=0;j<10000000;j++);//延时效果
k++;
if(k>4)
k=0;
}
}
//---------------菜单模板函数---------------
char ModelMenu(char *s[],int Itemcount)
{
int i;
char answer;
system("cls");
cout<<"\n\n";
cout<<"\t\t\t┌──────────────┐"<<endl;
cout<<"\t\t\t"<<s[0]<<endl;
cout<<"\t\t\t├──────────────┤"<<endl;
cout<<"\t\t\t│ │"<<endl;
cout<<"\t\t\t│ ┌──────────┐ │"<<endl;
for(i=1;i<Itemcount;i++)
{
cout<<"\t\t\t"<<s<<endl;
if(i+1!=Itemcount)
cout<<"\t\t\t│ ├──────────┤ │"<<endl;
}
cout<<"\t\t\t│ └──────────┘ │"<<endl;
cout<<"\t\t\t└──────────────┘"<<endl;
cout<<"\t\t\t 请输入菜单项前的操作代码:";
cin>>answer;
return answer;
}
//---------------主菜单函数---------------
char MainMenu()
{
char *MenuItem[]={"│ 航空客运订票系统菜单 │","│ │[1]. 航 线 管 理 │ │",\
"│ │[2]. 订 票 办 理 │ │","│ │[3]. 退 票 办 理 │ │","│ │[4]. 乘 客 管 理 │ │",\
"│ │[5]. 系 统 离 开 │ │"};
return ModelMenu(MenuItem,6);
}
//---------------是否继续函数---------------
char Continue()
{
int i;
char answer;
while(1)
{
cout<<"\n\t\t ";
for(i=0;i<15;i++)
cout<<"─";
cout<<"\n\t\t\t 是否继续(Y/N)?";
cin>>answer;
if(answer=='y'||answer=='Y')
return 'y';
else if(answer=='n'||answer=='N')
return 'n';
else
cout<<"\t\t\t 输入错误,请重新输入!"<<endl;
}
}
//---------------操作出错函数---------------
void ErrorMess()
{
cout<<"\n\t\t\t对不起,没有相关菜单项,按任意键继续..."<<endl;
getch();
}
//-----------------系统退出-----------------
int ExitSystem()
{
char answer;
cout<<"\n\t\t\t 你确定是否真要离开系统吗(Y/N)?";
cin>>answer;
if(answer=='y'||answer=='Y')
{
char line[]={"友情提示 不要熬夜 请注意休息..."};
char bar[]={"...."};
int i,j,k=0,x=0,y=0;
for(i=1;i<=strlen(line)/2;)
{
system("cls");
for(j=0;j<9;j++) //改变行坐标
cout<<endl;
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<<endl;
for(j=0;j<(75-strlen(line))/2;j++) //行坐标定位
cout<<" ";
cout<<line; //输出线条
cout<<endl;
for(j=0;j<(65-strlen(bar))/2;j++)
cout<<" ";
cout<<(i-1)*10<<"% Loading";
cout.write(bar,k);
cout<<endl;
for(j=0;j<10;j++)
cout<<endl;
for(j=0;j<24;j++)
cout<<" ";
cout<<"XXXXXXXX这里的真实姓名就不说了 "<<endl;
for(j=0;j<24;j++)
cout<<" ";
for(j=0;j<=16;j++)
cout<<"─";
cout<<endl;
for(j=0;j<10000000;j++);//延时效果
k++;
if(k>4)
k=0;
}
return 1;}
//return 1;
else
return 0;
}
//--------------操作提示函数-------------
void prefix(char *Item)
{
int i;
system("cls");
cout<<"\n\n\t\t\t 当前操作:"<<Item<<endl;
cout<<"\n\t\t ";
for(i=0;i<15;i++)
cout<<"─";
cout<<endl;
}
void save()//保存航班信息
{
FILE *fp,*fp1;//定义文件指针
if((fp=fopen("flight.text","wb"))==NULL)//打开文件并判断是否出错
{
printf("创建文件失败!\n\n");//打印出错提示
getchar();
return;
}
if((fp1=fopen("m.text","wb"))==NULL)//打开文件并判断是否出错
{
printf("创建文件失败!\n\n");//打印出错提示
getchar();
return;
}
for(i=0;i<m;i++)
if(fwrite(&f,sizeof(struct Flight),1,fp)==0)//向文件写入数据,并判断是否出错
printf("向文件输入数据失败!\n\n");
if(add_m) m=Flight_Count;
fprintf(fp1,"%d",m);
fclose(fp);//关闭文件
fclose(fp1);//关闭文件
}
//从文件读取航班信息模块
void read()
{
FILE *fp,*fp1;//定义文件指针
if((fp=fopen("flight.text","rb"))==NULL)//打开文件,并判断是否出错
{
printf("出错,请检查文件是否存在 ");//打印出错提示
getchar();
}
if((fp1=fopen("m.text","rb"))==NULL)//打开文件并判断是否出错
{
printf(" 创建文件失败 按任意键返回住菜单\n\n");//打印出错提示
getchar();
return;
}
fscanf(fp1,"%d",&m);
fclose(fp1);//关闭文件
for(i=0;i<m;i++)
{
fread(&f,sizeof(struct Flight),1,fp);//从文件中读取信息
}
fclose(fp);//关闭文件
}
//客户信息保存模块程序
void save2()
{
FILE *fp3,*fp4;//定义文件指针
if((fp3=fopen("customer.text","wb"))==NULL)//打开文件并判断是否出错
{
printf("创建文件失败!\n\n");//打印出错提示
getchar();
return;
}
if((fp4=fopen("n.text","wb"))==NULL)//打开文件并判断是否出错
{
printf("创建文件失败!\n\n");//打印出错提示
getchar();
return;
}
for(j=0;j<n;j++)
if(fwrite(&c[j],sizeof(struct Customer),1,fp3)==0)//向文件写入数据,并判断是否出错
printf("向文件输入数据失败!\n\n");
fprintf(fp4,"%d",n);
fclose(fp3);//关闭文件
fclose(fp4);//关闭文件
}
//从文件读取客户信息模块
void read2()
{
FILE *fp3,*fp4;//定义文件指针
if((fp3=fopen("customer.text","rb"))==NULL)//打开文件,并判断是否出错
{
printf("出错,请检查文件是否存在 ");//打印出错提示
getchar();
}
if((fp4=fopen("n.text","rb"))==NULL)//打开文件并判断是否出错
{
printf(" 打开文件失败 按任意键返回住菜单\n\n");//打印出错提示
getchar();
return;
}
fscanf(fp4,"%d",&n);
fclose(fp4);//关闭文件
for(j=0;j<n;j++)
{
fread(&c[j],sizeof(struct Customer),1,fp3);//从文件中读取信息
}
fclose(fp3);//关闭文件
}
//-----------------航线添加函数-------------
void Line_Add()
{
int add_m=1;
prefix("总航线情况");
cout<<"\t\t\t请输入要添加的航班总数:";
cin>>m;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -