版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
成绩:课程设计课程名称:数据结构实验项目:飞机订票系统姓名:专业:班级:学号:计算机科学与技术学院月日一、 实验目的:了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;提高综合运用所学的理论知识和方法独立分析和解决问题的能力;二、 实验内容(1) 本系统实现航班订票的功能。要求具有录入、订票、退票等功能。(2) 航班信息存放在一个结构体中,分别有航班号、起飞时间、降落时间、票价等信息。(3) 程序完成航班信息的录入和乘客订票功能。(4) 客户能通过航班号或抵达城市查询航班信息,并且能订票。当座位无剩余时提示客户并提示相关航线。三.概要设计程序包含函数:功能函数订票book(air,linenum,cus,name)退票deletecus(cus,air,name)查询printairline(air);修改航线inputpassword(password);增加航班号increaseair(air,linenum,planenum,endplace,total);删除航班号delete_airline(air,line_num);deletecustomer(cus,linenum);查询航线信息printairline(air)读入文件loadairline(air);主控模块包含子模块为:图3-1航班订票子系统
四.详细设计算法流程图系统以菜单方式工作;航班订票功能航班退票功能查询航线:(至少一种查询方式)一一算法;菜单TOC\o"1-5"\h\z修改航线 L—|一^增加航班号 V__删除航班号 增加航线信息修改密码 查询航班信息 *~~退票 查询按终点站查询。 订票退票 查询程序截图c:Q*E:\_Sebug\Cpp4.exe*Tt输入菜单号伯-5>:1请输入你要订的航班号:a001请输入你的姓名:£2对不起■没有这个航班号辛K"E二l源程序\Debu.E\.ds.eze加除改询出福修查退起线信班号班导 息修改:10f*«-«-线修改一-J4JbJncOlbjsh02shsrz@3r001planetplanedplane3rs航班号飞机号目的地nc 100sli 100gz 100sh 67总票数余票数51507867M-借改询出盡修杳_退脈线信息倏改已班守‘0’*班■寻W«码 ‘卽«线信息一-fr«寒修改一-F*请输入你要増加的航班号F001请输入飞机号:f901请输入目的地:*请输入座位总数:54增加航班^091成功甲”请输入菜单号<0-5>:i请输入你要订的航班号,P001请输入你的姓容;tex苹喜您?订票成功?命馬產位号是:2五.源代码#include<conio.h>#include<stdio.h>#include<string.h>#include<stdlib.h>#defineOK1#defineTRUE1#defineFALSE0#defineERROR0#defineOVERFLOW-2#definePRprintftypedefintstatus;typedefstructairline{charline_num[8];//航班号charplane_num[8];//飞机号charend_place[20];//目的的inttotal;//座位总数intleft;//剩余座位structairline*next;//下一个结点}airline;typedefstructcustomer{charname[9];//顾客名charline_num[8];//航班号intseat_num;//座位号structcustomer*next;//下一个结点}customer;airline*init_airline(){//初始化链表airline*l;l=(airline*)malloc(sizeof(airline));if(l==NULL){exit(0);}l->next=NULL;returnl;}customer*init_customer(){//初始化链表customer*l;l=(customer*)malloc(sizeof(customer));if(l==NULL){exit(0);}l->next=NULL;returnl;}statusinsert_airline(airline**p,char*line_num,char*plane_num,char*end_place,inttotal,intleft){//airline链表插入操作airline*q;q=(airline*)malloc(sizeof(airline));strcpy(q->line_num,line_num);strcpy(q->plane_num,plane_num);strcpy(q->end_place,end_place);q->total=total;q->left=left;q->next=NULL;(*p)->next=q;(*p)=(*p)->next;//PR("insert%d,%dissuccssed!\n",e,bl);returnOK;}statusinsert_customer(customer**p,char*name,char*line_num,intseat){//customer链表插入操作customer*q;q=(customer*)malloc(sizeof(customer));/*{PR(〃内存分配失败\n〃);returnOVERFLOW;}*/strcpy(q->name,name);strcpy(q->line_num,line_num);q->seat_num=seat;q->next=NULL;(*p)->next=q;(*p)=(*p)->next;//PR(〃insert%d,%dissuccssed!\n〃,e,bl);returnOK;}airline*modefy_airline(airline*l,char*line_num)//修改airline链表中的数据{airline*p;p=l->next;for(;p!=NULL;p=p->next){if(strcmp(line_num,p->line_num)==0){p->left++;//PR(〃modefy%s\n〃,p->line_num);returnl;}}PR("\n\t\t没有这个航班,无法完成修改任务!〃);return0;}statusdelete_airline(airline*h,char*line_num)//删除航班{airline*p,*pr;pr=h;p=pr->next;while(p!=NULL){if(strcmp(line_num,p->line_num)==0){pr->next=p->next;PR("\n\t\t删除%s航班\n",p->line_num);returnOK;}pr=pr->next;p=pr->next;}PR("\n\t\t无此航班,无法删除!\n");returnERROR;}statusdelete_customer(customer*h,char*line_num)//删除顾客{customer*p,*pr;pr=h;p=pr->next;while(p!=NULL){if(strcmp(line_num,p->line_num)==0){pr->next=p->next;}pr=pr->next;p=pr->next;}//PR("无此航班,无法删除!\n〃);returnOK;}statusdelete_cus(customer*h,airline*l,char*name)//顾客退票{customer*p,*pr;charline_num[8];//qr=h;pr=h;p=pr->next;//PR(〃开始删除\n〃);while(p!=NULL){if(strcmp(name,p->name)==0){strcpy(line_num,p->line_num);l=modefy_airline(l,line_num);pr->next=p->next;PR("\n\t\t顾客%s退票成功!〃,p->name);returnOK;}pr=pr->next;p=pr->next;}PR("\n\t\t无此顾客,无法退票!\n");returnERROR;}statussave_airline(airline*l)//保存airline.dat{FILE*fp_airline;charch='#';airline*p=l->next;charfilename[]="c:\\airline.dat";if((fp_airline=fopen(filename,"wb"))==NULL){printf("cannotopenfiletowrite:%s\n",filename);returnERROR;}for(;p!=NULL;p=p->next){//printf("%s,%s,%s,%d,%d\n",p->line_num,p->plane_num,p->end_place,p->total,p->left);fprintf(fp_airline,"%s,%s,%s,%d,%d%c\n",p->line_num,p->plane_num,p->end_place,p->total,p->left,ch);}fclose(fp_airline);returnOK;}statussave_customer(customer*l)//保存顾客信息customer.dat{FILE*fp_customer;charch='#';customer*p=l->next;charfilename[]="c:\\customer.dat";if((fp_customer=fopen(filename,"wb"))==NULL){printf("cannotopenfiletowrite:%s\n",filename);returnERROR;}for(;p!=NULL;p=p->next){//PR("%s,%s,%d\n",p->name,p->line_num,p->seat_num);fprintf(fp_customer,"%s,%s,%d%c",p->name,p->line_num,p->seat_num,ch);}fclose(fp_customer);returnOK;}intchangStrlnt(char*ch)//把字符串转化为整型{inta=1,b=0,c=0,i;for(i=strlen(ch)-1;i>=0;i--){if(ch[i]<58&&ch[i]>47){b=a*(ch[i]-48);a=a*10;c=c+b;}else{PR(〃\n\t\t%c不合法,无法将此字符串转化为整形!〃,ch[i]);return0;}//printf(〃thecis%d\n〃,c);}returnc;}statusinsert_air(airline*l,char*line_num,char*plane_num,char*end_place,inttotal,intleft){//airline链表插入操作airline*q;q=(airline*)malloc(sizeof(airline));strcpy(q->line_num,line_num);strcpy(q->plane_num,plane_num);strcpy(q->end_place,end_place);q->total=total;q->left=left;q->next=l->next;l->next=q;//PR(〃insert%d,%dissuccssed!\n〃,e,bl);returnOK;}statusinsert_cus(customer*l,char*name,char*line_num,intseat){//customer链表插入操作customer*q;q=(customer*)malloc(sizeof(customer));strcpy(q->name,name);strcpy(q->line_num,line_num);q->seat_num=seat;q->next=l->next;l->next=q;returnOK;}statusload_airline(airline*l){FILE*fp_airline;intflag=0,i=0;charch;charline_num[8];//航班号charplane_num[8];//飞机号charend_place[20];//目的的chartotal_str[5];charleft_str[5];inttotal;//座位总数intleft;//剩余座位//airline*p=l;charfilename[]="c:\\airline.dat";if((fp_airline=fopen(filename,"rb"))==NULL){printf("cannotopenfiletoload:%s\n",filename);returnERROR;}while(!feof(fp_airline)){ch=fgetc(fp_airline);if(ch!='#'){if(flag==0&&ch!=','){line_num[i]=ch;i++;}elseif(flag==1&&ch!=','){plane_num[i]=ch;i++;}elseif(flag==2&&ch!=','){end_place[i]=ch;i++;}elseif(flag==3&&ch!=','){total_str[i]=ch;i++;}elseif(flag==4&&ch!=','){left_str[i]=ch;i++;}elseif(ch==','){flag++;i=0;}/*else{PR(〃错误\n〃);returnERROR;}*/}else{flag=0;i=0;total=changStrInt(total_str);left=changStrInt(left_str);PR("%8s%8s%8s%9d%9d\n",line_num,plane_num,end_place,total,left);insert_air(l,line_num,plane_num,end_place,total,left);}}fclose(fp_airline);returnOK;}statusload_customer(customer*l){FILE*fp_customer;intflag=0,i=0;charch;charname[9];charline_num[8];//航班号charseat_num_str[5];intseat_num;//座位//customer*p=*l;charfilename[50]="c:\\customer.dat";if((fp_customer=fopen(filename,"rb"))==NULL){printf("cannotopenfiletoload:%s\n",filename);returnERROR;}while(!feof(fp_customer)){ch=fgetc(fp_customer);printf("%c\n",ch);if(ch!='#'){if(flag==0&&ch!=','){name[i]=ch;i++;}elseif(flag==1&&ch!=','){line_num[i]=ch;i++;}elseif(flag==2&&ch!=','){seat_num_str[i]=ch;i++;}elseif(ch==','){flag++;i=0;}else{PR(〃错误\n〃);returnERROR;}}else{flag=0;seat_num=changStrInt(seat_num_str);PR(〃%10s%10s%d\n〃,name,line_num,seat_num);insert_cus(l,name,line_num,seat_num);//p=p->next;}}fclose(fp_customer);returnOK;}statuscreat_airline(airline**l)//创建airline单链表{airline*p=*l;inti=0;char*line_num[3]={〃bjnc01〃,〃bjsh02〃,〃shgz03〃};char*plane_num[3]={〃plane1〃,〃plane2〃,〃plane3〃};char*end_place[3]={〃nc〃,〃sh〃,〃gz〃};inttotal[3]={100,100,100};intleft[3]={51,50,78};for(i=0;i<3;i++){insert_airline(&p,line_num[i],plane_num[i],end_place[i],total[i],left[i]);}returnOK;}statuscreat_customer(customer**l)////创建customer单链表{customer*p=*l;inti=0;char*name[3]={〃ouyangj0〃,〃yhl〃,〃fs〃};char*line_num[3]={〃bjnc01〃,〃bjsh02〃,〃shgz03〃};intseat_num[3]={1,5,10};for(i=0;i<3;i++){insert_customer(&p,name[i],line_num[i],seat_num[i]);}returnOK;}statusincrease_air(airline*l,char*line_num,char*plane_num,char*end_place,inttotal)//增加航线{airline*p=l->next;for(;p->next!=NULL;p=p->next){}insert_airline(&p,line_num,plane_num,end_place,total,total);PR("\n\t\t增加航班%s成功!",line_num);returnOK;}statusbook(airline*l,char*line_num,customer*c,char*name)//订票函数{airline*p=l;customer*q=c->next;p=l->next;for(;q->next!=NULL;q=q->next){}//PR("%s\n",q->name);for(;p!=NULL;p=p->next){if(strcmp(line_num,p->line_num)==0){if(p->left>0){PR(〃\n\t\t恭喜您!订票成功!〃);PR("\n\t\t你的座位号是:%d〃,(p->total-p->left+1));insert_customer(&q,name,line_num,p->total-p->left+1);p->left--;returnOK;}elsePR("\n\t\t对不起,座位已满!〃);return0;}}PR("\n\t\t对不起,没有这个航班号!〃);returnERROR;}statusprint_airline(airline*l)//打印航线信息{airline*p=l->next;for(;p!=NULL;p=p->next){PR(〃%8s%8s%8s%9d%9d\n〃,p->line_num,p->plane_num,p->end_place,p->total,p->left);}returnOK;}statusprint_customer(customer*l)//打印顾客信息{customer*p=l->next;for(;p!=NULL;p=p->next){PR(〃%10s%10s%d\n〃,p->name,p->line_num,p->seat_num);}returnOK;}statusinputpassword(charcc[9])//隐藏密码为*号的函数 楼主,Iqrl■注意这里!{charc;inti;for(i=0;c=getch();i++){if(c==13)break;/*13是回车的ascii码,用'\n'不行,不知怎么回事*/else{cc[i]=c;printf("*");}}cc[i]='\0';//printf("\n");//printf("%s",cc);//getchar();returnstrlen(cc);}intmain()char{charchoice,choice2,name[9],line_num[8],password[9],plane_num[8],end_place[9];charpass[9]="12345678",re_pass_1[9],re_pass_2[9];intt=1,tt=1,total;airline*air=init_airline();customer*cus=init_customer();creat_airline(&air);creat_customer(&cus);//save_airline(air);//save_customer(cus);while(t==1){PR("\n\t\t********************************");PR(〃\n\t\t欢迎进入航班订票系统〃);PR(〃\n\t\t*1 订票*〃)PR(〃\n\t\t*2 退票*〃)PR(〃\n\t\t*3 查询*〃)PR(〃\n\t\t*4 修改航线*〃)PR(〃\n\t\t*5 读入文件*〃)PR(〃\n\t\t*0 返回*〃)PR("\n\t\t********************************");PR(〃\n\t\t*请输入菜单号(0-5):〃);choice=getch();PR(〃%c\n〃,choice);if(choice=='1'){PR("\n\t\t请输入你要订的航班号:〃);scanf(〃%s〃,line_num);PR("\n\t\t请输入你的姓名:〃);scanf(〃%s〃,name);book(air,line_num,cus,name);save_airline(air);save_customer(cus);}elseif(choice=='2'){PR(〃\n\t\t请输入你的姓名:〃);scanf("%s",name);delete_cus(cus,air,name);save_airline(air);save_customer(cus);}elseif(choice=='3'){PR("\n航班号飞机号目的地总票数余票数\n");print_airline(air);PR("姓名航班号座位号\n");print_customer(cus);}elseif(choice=='4'){tt=1;PR("请输入密码:〃);//scanf(〃%s〃,password);inputpassword(password);if(strcmp(password,pass)==0){while(tt==1){PR(〃\n\t\t********************************〃);PR(〃\n\t\t* 航线信息修改: *〃);PR("\n\t\t*增加航班号——'0'*");PR("\n\t\t*删除航班号——'1'*");PR("\n\t\t*修改密码 '2'*");PR("\n\t\t*查询航线信息
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度金融科技产品测试与评估合同3篇
- 人工智能在智能穿戴-深度研究
- 二零二五年度跨区域数据安全协议搭建与执行合同4篇
- 2025至2031年中国图书检测仪行业投资前景及策略咨询研究报告
- 二零二四年校服销售与校园信息化建设合作合同3篇
- 2025至2031年中国CO2气体焊机行业投资前景及策略咨询研究报告
- 2025至2030年中国立式工作灯数据监测研究报告
- 2025至2030年中国白小豆数据监测研究报告
- 2025至2030年中国水灰比测定仪数据监测研究报告
- 2025至2030年中国折合式儿童座椅数据监测研究报告
- 卫生服务个人基本信息表
- 医学脂质的构成功能及分析专题课件
- 高技能人才培养的策略创新与实践路径
- 广东省湛江市廉江市2023-2024学年八年级上学期期末考试数学试卷(含答案)
- 2024年湖北省知名中小学教联体联盟中考语文一模试卷
- 安徽省芜湖市2023-2024学年高一上学期期末考试 生物 含解析
- 交叉口同向可变车道动态控制与信号配时优化研究
- 燃气行业有限空间作业安全管理制度
- 数列练习题(含答案)基础知识点
- 人教版(2024新版)七年级上册英语期中+期末学业质量测试卷 2套(含答案)
- 安华农业保险股份有限公司北京市地方财政生猪价格指数保险条款(风险敏感型)
评论
0/150
提交评论