C语言飞机订票系统方案.docx
- 文档编号:29169139
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:14
- 大小:170.76KB
C语言飞机订票系统方案.docx
《C语言飞机订票系统方案.docx》由会员分享,可在线阅读,更多相关《C语言飞机订票系统方案.docx(14页珍藏版)》请在冰豆网上搜索。
C语言飞机订票系统方案
课程设计
课程:
数据结构
专业班级:
xx软件工程xx班
姓名:
xx
学号:
xxx
姓名:
xxx
学号:
xxx
设计时间:
xxx
指导老师:
xxx
课程设计题:
飞机订票系统
一、设计目的
1.掌握结构体数组的表示和存储。
2.掌握链表的存储和操作。
3.掌握文件的操作。
二、设计内容和要求
1. 任务:
通过此系统可以实现如下功能:
录入:
可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
查询:
可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;
订票:
订票情况可以存在一个数据文件中,结构自己设定。
可以订票,如果该航班已经无票,可以提供相关可选择航班;
退票:
可退票,退票后修改相关数据文件;
客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:
当航班信息改变可以修改航班数据文件。
要求:
根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能
设计思想:
管理操作系统,主要考虑的是信息的录入,这里利用文件的读写完成该功能;输出,查询以及删除,利用结构数组存储航班与客户信息,依次对订票,退票,查询及相关操作编写成子程序,然后再主程序中调用,这样程序看起来相当简练,而且易读懂;
算法设计分析:
(次系统运行环境为VC6.0)
1.txt
beijingshanghai111201118061002
shanghaiwuhang221202214021101
wuhangchibi33130331401502
(此文件是程序执行航班信息录入时自动生成,在信息读取时需要调用)
首先是航班于客户信息的存储,结构数组的利用很好的解决该问题;
其次是文件的操作,在主函数中利用文件的读与写;下面介绍订票退票以及查询操作的实现。
1订票:
首先输入出发地与目的地,查找是否有相应的航班信息,在航2班票数足够的情况下,录入客户信息,提示操作成功;否则失败。
3退票:
输入退票客户的姓名与身份号码,查找到该客户信息后进行退票操作,完成后对应航班票数加1;若没有该客户信息,提示查无此人。
查询:
输入客户姓名与身份号码,若查到有该客户信息,显示该客户的航班情况;否则提示差无此人。
//飞机定票管理系统
#include
#include
#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];//定票者的名字
charstart[10];//出发地
charend[10];//目的地
ints_month;//出发时间月份,天,小时,分钟
ints_day;
ints_hour;
ints_minute;
intd_month;//到达时间月份,天,小时,分钟
intd_day;
intd_hour;
intd_minute;
intcoast_t;//历时多久
intcoast_m;//票价
//intbianhao;//机票编号
}people[100];
//定票,输出发地与目的地,时间,反馈剩余票,票价
book(intt)
{
inti,month,day,p,q,k=0;//k为判断输入的信息是否有误
charstart[10],end[10];
printf("定票:
\n");
//输入查询的航班信息,以便搜索
while(k==0)
{
printf("请输入出发地,目的地,出发日期:
\n");//***************************************************
gets(start);gets(end);//**这里输入时应注意用回车键,否则默认字符串存入start**
scanf("%d,%d",&month,&day);//****************************************************
//scanf("%s,%s,%d,%d",start,end,&month,&day);
//getchar();
printf("%s,%s,%d,%d",start,end,month,day);
//扫描信息,搜索与所查询的航班匹配信息
for(i=0;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;//信息输入无误,即找到匹配信息 printf("由%s到%s时间为%d月%d号的航班票价为%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; printf("请输入您的证件号码与姓名: \n"); scanf("%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("恭喜您定票成功! \n\n\n\n"); t++; } } } //system("pause"); if(k==0) { printf("信息输入有误\n"); printf("是否继续定票? 0为继续1为退出\n"); scanf("%d",&k); getchar(); } } returnt; } //退票,并将客户信息栏中该客户信息清楚,所乘航班票数加1 re_ti(intt) { inti,j,nu_mber,k=0;//k为判断是否查找到客户信息 charna_me[10]; printf("退票: \n"); printf("请输入证件号码与客户姓名: \n"); scanf("%d,%s",&nu_mber,na_me); getchar(); for(i=0;i<100;i++) { if(nu_mber==people[i].number&&strcmp(na_me,people[i].name)==0) { k=1;//找到该客户信息 //退票后,与该客户对应航班票数增1 for(j=0;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;j<100;j++) { //printf("成功删除该客户信息! \n"); 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("查无此人! \n"); printf("\n\n\n\n"); returnt; } //查询信息,出入所要查询的顾客的航班信息,并给出错误处理 check() { inti,nu_mber,k=0;//k为判断是否查找到客户信息 charna_me[10]; printf("查询: \n"); printf("请输入证件号码与客户姓名: \n"); //getch(); //fflush(stdin); scanf("%d,%s",&nu_mber,na_me); for(i=0;i<100;i++) { if(nu_mber==people[i].number&&strcmp(na_me,people[i].name)==0) { k=1; printf("以下是该客户信息: \n"); printf("证件号: %d;姓名: %s;出发地: %s;目的地: %s;出发时间: %d月%d日%d时%d分\n",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); printf("\n\n\n\n"); } } if(k==0)printf("查无此人! \n\n\n\n"); } main() { //使用文件初始化信息 ints,p,q=0,i;//p,q为循环判断变量 intt=0; /*FILE*fp; charname[]="1.txt"; if(! (fp=fopen("1.txt","w"))) printf("error! \n"); for(i=0;i<3;i++) 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; charname[]="1.txt"; if(! (fp=fopen("1.txt","r"))) printf("error! \n"); for(i=0;i<3;i++) fscanf(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); //charname; //readconument while(q==0) { printf("*************************************************************\n"); printf("请选择服务种类: \n1为定票;2为退票;3查找信息;0为退出\n"); printf("*************************************************************\n"); //system("pause"); scanf("%d",&s); getchar(); switch(s) { case1: t=book(t);//订票操作 break; case2: t=re_ti(t);//退票操作 break; case3: check();//查找客户信息是否存在 break; case0: { printf("航空集团祝福您旅途愉快! "); printf("您确定离开界面? 1/0\n"); scanf("%d",&p); if(p==1)q=1; elseq=0; } } } } 输入从北京到上海的航班,录入客户信息,当前票数为2; 输入查询的客户证件号码与姓名,找到后输出客户的航班信息; 输入退票者的信息,完成后在进行查找操作时确定已经没有该客户信息; 退出界面; 收获及体会: 通过此次实验,使我对结构数组有了更深刻的理解,也认识到了它的一些缺陷,就是如果对它进行删除以及增添信息时,信息的移动有点麻烦;这时如果用链表进行操作的话会相对简单些;于此同时,语言这类学科,用着就会熟练起来,程序开始时,生疏的地方很多,久而久之,用起来就熟练了;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 飞机 订票 系统 方案