C语言飞机订票系统方案文档格式.docx
- 文档编号:19368792
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:12
- 大小:92.60KB
C语言飞机订票系统方案文档格式.docx
《C语言飞机订票系统方案文档格式.docx》由会员分享,可在线阅读,更多相关《C语言飞机订票系统方案文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
可退票,退票后修改相关数据文件;
客户资料有,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:
当航班信息改变可以修改航班数据文件。
要求:
根据以上功能说明,设计航班信息,订票信息的存储结
构,设计程序完成功能设计思想:
管理操作系统,主要考虑的是信息的录入,这里利用文件的读写完成该功能;
输出,查询以及删除,利用结构数组存储航班与客户信息,依次对订票,退票,查询及相关操作编写成子程序,然后再主程序中调用,这样程序看起来相当简练,而且易读懂;
算法设计分析:
(次系统运行环境为VC6.0)
1.txt
beijingshanghai1112011180
61002
shanghaiwuhang2212022140
21101
wuhangchibi3313033140
1502
(此文件是程序执行航班信息录入时自动生成,在信息读取时需要调用)
首先是航班于客户信息的存储,结构数组的利用很好的解决该问题;
其次是文件的操作,在主函数中利用文件的读与写;
下面介绍订票退票以及查询操作的实现。
1订票:
首先输入出发地与目的地,查找是否有相应的航班信息,在航2班票数足够的情况下,录入客户信息,提示操作成功;
否则失败。
3退票:
输入退票客户的与身份,查找到该客户信息后进行退票操作,完成后对应航班票数加1;
若没有该客户信息,提示查无此人。
查询:
输入客户与身份,若查到有该客户信息,显示该客户的航班情况;
否则提示差无此人。
//飞机定票管理系统
#include<
stdio.h>
windows.h>
#defineN10
structflight
{
charstart[10];
//出发地
charend[10];
//目的地
ints_month;
//出发时间月份,天,小时,分钟ints_day;
ints_hour;
ints_minute;
intd_month;
//到达时间月份,天,小时,分钟intd_day;
intd_hour;
intd_minute;
intcoast_t;
//历时多久
intcoast_m;
//票价
intnum;
//剩余票数
//intbianhao;
//机票编号}air[N];
//结构体数组存储航班信息//客户信息structcon
intnumber;
//定票者的证件
charname[10];
//定票者的名字
//
出发地
目的地
出发时间月份,天,小时,分钟
ints_day;
到达时间月份,天,小时,分钟
intd_day;
历时多久
//intbianhao;
//机票编号
}people[100];
//定票,输出发地与目的地,时间,反馈剩余票,票价
book(intt)
inti,month,day,p,q,k=0;
//k为判断输入的信息是否有误
charstart[10],end[10];
printf("
定票:
\n"
);
//输入查询的航班信息,以便搜索
while(k==0)
请输入出发地,目的地,出发日期:
//***************************************************
gets(start);
gets(end);
//**这里输入时应注意用回车键,否则默认字符串存入start**
scanf("
%d,%d"
&
month,&
day);
//****************************************************
//scanf("
%s,%s,%d,%d"
start,end,&
//getchar();
start,end,month,day);
//扫描信息,搜索与所查询的航班匹配信息
for(i=0;
i<
N;
i++)
p=strcmp(start,air[i].start);
q=strcmp(end,air[i].end);
if(p==0&
&
q==0&
month==air[i].s_month&
day==air[i].s_day)
k=1;
//信息输入无误,即找到匹配信息
由%s到%$时间为%4月%旳的航班票价为%d,余票
为%d\n"
air[i].start,air[i].end,air[i].s_month,air[i].s_day,air[i].coast_m,air[i].num);
//更新信息,将客户信息存储
if(air[i].num==0)printf("
票已售完,如有不便请谅
解!
\n\n\n\n"
else
air[i].num=air[i].num-1;
请输入您的证件与:
%d,%s"
people[t].number,people[t].name);
getchar();
strcpy(people[t].start,air[i].start);
strcpy(people[t].end,air[i].end);
people[t].s_month=air[i].s_month;
people[t].s_day=air[i].s_day;
people[t].s_hour=air[i].s_hour;
people[t].s_minute=air[i].s_minute;
people[t].d_month=air[i].d_month;
people[t].d_day=air[i].d_day;
people[t].d_hour=air[i].d_hour;
people[t].d_minute=air[i].d_minute;
people[t].coast_t=air[i].coast_t;
people[t].coast_m=air[i].coast_m;
//people[t].bianhao=air[i].bianhao;
printf("
恭喜您定票成功!
t++;
}
//system("
pause"
if(k==0)
信息输入有误\n"
是否继续定票?
0为继续1为退出\n"
scanf("
%d"
k);
returnt;
//退票,并将客户信息栏中该客户信息清楚,所乘航班票数加1re_ti(intt)
inti,j,nu_mber,k=0;
//k为判断是否查找到客户信息charna_me[10];
退票:
nu_mber,na_me);
100;
if(nu_mber==people[i].number&
strcmp(na_me,people[i].name)==0){
//找到该客户信息
//退票后,与该客户对应航班票数增1
for(j=0;
j<
j++)
if(strcmp(people[i].start,air[j].start)==0&
strcmp(people[i].end,air[j].end)==0&
people[i].s_month==air[j].s_month&
people[i].s_day==air[j].s_day)
air[j].num=air[j].num+1;
//将客户信息依次向前移动
for(j=i;
//printf("
成功删除该客户信息!
people[j].number=people[j+1].number;
strcpy(people[j].name,people[j+1].name);
strcpy(people[j].start,people[j+1].start);
strcpy(people[j].end,people[j+1].end);
people[j].s_month=people[j+1].s_month;
people[j].s_day=people[j+1].s_day;
people[j].s_hour=people[j+1].s_hour;
people[j].s_minute=people[j+1].s_minute;
people[j].d_month=people[j+1].d_month;
people[j].d_day=people[j+1].d_day;
people[j].d_hour=people[j+1].d_hour;
people[j].d_minute=people[j+1].d_minute;
people[j].coast_t=people[j+1].coast_t;
people[j].coast_m=people[j+1].coast_m;
t=t-1;
//删除该客户信息后,客户记录减去1
if(k==0)printf("
查无此人!
//查询信息,出入所要查询的顾客的航班信息,并给出错误处理
check()
inti,nu_mber,k=0;
//k为判断是否查找到客户信息
charna_me[10];
查询:
//fflush(stdin);
strcmp(na_me,people[i].name)==0)
以下是该客户信息:
证件号:
%d;
:
%s;
出发地:
%s;
目的地:
出发时间:
%d
月%d0%4时%d分
people[i].number,people[i].name,people[i].start,people[i].end,people[i].s_month,people[i].s_day,people[i].s_hour,people[i].s_minute);
main()
//使用文件初始化信息
ints,p,q=0,i;
//p,q为循环判断变量
intt=0;
/*FILE*fp;
charname[]="
1.txt"
;
if(!
(fp=fopen("
"
w"
)))
error!
3;
fprintf(fp,"
%15s%15s%4d%4d%4d%4d%4d%4d%4d%4d%4d%4d%4d\n"
air[i].start,air[i].end,air[i].s_month,air[i].s_day,air[i].s_hour,
air[i].s_minute,air[i].d_month,air[i].d_day,air[i].d_hour,air[i].d_minute,air[i].coast_t,air[i].coast_m,air[i].num);
fclose(fp);
*/
FILE*fp;
r"
fscanf(fp,"
air[i].start,&
air[i].end,&
air[i].s_month,&
air[i].s_day,&
air[i].s_hour,
air[i].s_minute,&
air[i].d_month,&
air[i].d_day,&
air[i].d_hour,&
air[i].d_minute,&
air[i].coast_t,&
air[i].coast_m,&
air[i].num);
//readconument
while(q==0)
请选择服务种类:
\n1为定票;
2为退票;
3查找信息;
0为退出\n"
s);
switch(s)
case1:
t=book(t);
//订票操作
break;
case2:
t=re_ti(t);
//退票操作
case3:
check();
//查找客户信息是否存在
case0:
航空集团祝福您旅途愉快!
"
您确定离开界面?
1/0\n"
p);
if(p==1)q=1;
elseq=0;
m査捌言息洱为退岀
fika发地占的地倍发日軀
1I4■
heijing
shanghai
MXXJKJ<
KMLKXXJKXJCXKKXXXJKKKML耳且XKXHMKKXXJCJCXXXXX
土
靑输入证件号不矜客户姓名=
123ccb
[規莓昇翥乩雪g时岀发地=beijinff;
§
的地:
shanghai;
1月1日坨眈分
输入查询的客户证件与,找到后输出客户的航班信息;
読喳找信息円为退出
iS輪入证件号码与客户姓名=
123
输入退票者的信息,完成后在进行查找操作时确定已经没有该客户信息;
退出界面;
收获及体会:
通过此次实验,使我对结构数组有了更深刻的理解,也认识到了它的一些缺陷,就是如果对它进行删除以及增添信息时,信息的移动有点麻烦;
这时如果用链表进行操作的话会相对简单些;
于此同时,语言这类学科,用着就会熟练起来,程序开始时,生疏的地方很多,久而久之,用起来就熟练了;
主函数
信息匹配则记录客户信息,
否则给出处理情况
XX
删除该客户信息,所对应航班票数增
若找到该
客户则输
出他的信
继续还是退出
I到主服务?
I到主服务?
息,否则
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 飞机 订票 系统 方案