《飞机订票系统(C语言代码及流程图)(共25页).doc》由会员分享,可在线阅读,更多相关《飞机订票系统(C语言代码及流程图)(共25页).doc(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上目录第一部分源程序-3第二部分函数流程图-11menu()-12enter()-13input()-14browse()-15menu1()-16order()-17search_time()-18search_end()-19search()-20book()-21back()-22save()-23load()-24第三部分心得体会-25第一部分:源程序#include <stdio.h>#include <string.h>#include <stdlib.h>#define N 1000typedef struct plan
2、e char ID10; /*航班代号*/ char BePlace10;/*飞机起飞地点*/ char EnPlace10;/*飞机降落终点*/ char data15;/*飞机起飞时间*/ int max;/*飞机最大乘客人数*/ int price;/*飞机票价*/ int num;/*飞机已售票数*/PLANE;PLANE tiN;int n;/*当前的航班数目*/void menu();void menu1();void input(int i)printf("请输入航班代号:n");scanf("%s",tii.ID);printf(&quo
3、t;请输入起飞地点:n");scanf("%s",tii.BePlace);printf("请输入降落地点:n");scanf("%s",tii.EnPlace);printf("请输入起飞时间:n");scanf("%s",tii.data);printf("请输入航班的最大载客人数:n");scanf("%d",&tii.max);printf("请输入航班的票价:n");scanf("%d",
4、&tii.price);tii.num=0;void enter()int i; system( "cls" ); printf("请输入航班的数目(0-%d)?:",N);scanf("%d",&n); /*要输入的记录个数*/printf("n请输入数据nn");for(i=0;i<n;i+) printf("n请输入第 %d 航班记录.n",i+1); input(i); /*调用输入函数*/ getchar(); menu();void printf_one(int
5、 i) /*显示一个记录的函数*/printf("%11s %6s %10s %6s %6d %6d %6d",tii.ID,tii.BePlace,tii.EnPlace,tii.data,tii.price,tii.max,tii.num);void browse()int i;system( "cls" ); puts("n-");printf("nt航班代号 起飞地点 降落地点 起飞时间 票价 最大乘客 已售票数n");for(i=0;i<n;i+)printf_one(i);printf("
6、;n");getchar();getchar();menu();void order() /*排序模块(按平均成绩)*/int i,j;struct plane s;system( "cls" ); for(i=0;i<n;i+) /*冒泡法排序*/for(j=i+1;j<n;j+)if(strcmp(tii.data,tij.data)>0)s=tii; tii=tij;tij=s; browse();void search_time()int i,m=0;struct plane s;system( "cls" ); pr
7、intf("nnEnter the time:");scanf("%s",s.data); /*输入出发的时间*/puts("n-");printf("nt航班代号 起飞地点 降落地点 起飞时间 票价 最大乘客 已售票数n");for(i=0;i<n;i+)if(strcmp(s.data,tii.data)=0)m+; if(m!=0)&&(m%10=0) /*目的是分屏显示*/ printf("nnPress any key to contiune . . .");ge
8、tchar();puts("nn"); printf_one(i); printf("n");/*调用显示一个记录的函数*/puts("n-");getchar(); /*按任意健*/getchar(); menu1();void serch_end()int i,m=0;struct plane s;system( "cls" ); printf("nnEnter the end Place:");scanf("%s",s.EnPlace); /*输入要到达的地方*/put
9、s("n-");printf("nt航班代号 起飞地点 降落地点 起飞时间 票价 最大乘客 已售票数n");for(i=0;i<n;i+)if(strcmp(tii.EnPlace,s.EnPlace)=0)m+; if(m!=0)&&(m%10=0) /*目的是分屏显示*/ printf("nnPress any key to contiune . . .");getchar();puts("nn"); printf_one(i); printf("n");/*调用显示一
10、个记录的函数*/puts("n-");getchar(); /*按任意健*/getchar(); menu1();void menu1()int n,w1; do system( "cls" ); /*清屏*/ puts("tttt 飞机售票操作!nn"); puts("tt*MENU*nn"); puts("tttt1.按照时间排序"); puts("tttt2.按照时间查找航班"); puts("tttt3.按照地点查找航班"); puts("
11、;tttt4.返回主菜单"); puts("nntt*n"); printf("Choice your number(1-4): bb"); scanf("%d",&n); if(n<1|n>4) /*对选择的数字作判断*/ w1=1; printf("your choice is not between 1 and 4,Please input again:"); getchar(); getchar(); else w1=0; while(w1=1); /*选择功能*/ switc
12、h(n) case 1:order();break; case 2:search_time();break; case 3:serch_end();break; case 4:menu();break; int search() /*查找模块*/int i,k;struct plane s;k=-1;system( "cls" ); printf("nn请输入要订票的起飞地点:");scanf("%s",s.BePlace); /*输入要到达的地方*/printf("nn请输入要订票的降落地点:");scanf(&
13、quot;%s",s.EnPlace); printf("nn请输入要订票的起飞时间:");scanf("%s",s.data); /*输入出发的时间*/for(i=0;i<n;i+) /*查找要修改的数据*/if(strcmp(s.BePlace,tii.BePlace)=0&&strcmp(s.EnPlace,tii.EnPlace)=0&&strcmp(s.data,tii.data)=0)k=i; /*找到要修改的记录*/printf_one(k);break; /*调用显示一个记录的函数*/if(
14、k=-1) printf("nnNO exist!"); return -1;elsereturn k;void book() int i;system( "cls" ); printf("欢迎进入售票窗口!n"); i=search();if(i!=-1)if(tii.num>=tii.max)printf("n该趟航班票已售完!"); elsetii.num+;printf("n订票成功!n");elseprintf("该航班不存在!n");getchar(); g
15、etchar(); /*按任意健*/menu();void back()int i,k=-1;struct plane s;system( "cls" ); printf("欢迎进入退票窗口!n");printf("nn输入航班代号:");scanf("%s",s.ID); /*输入要到达的地方*/ for(i=0;i<n;i+) /*查找要修改的数据*/if(strcmp(s.ID,tii.ID)=0)k=i; /*找到要修改的记录*/printf_one(k);break; /*调用显示一个记录的函数*/
16、if(k=-1) printf("nnNO exist!");else tii.num-; printf("n退票成功!n");getchar(); /*按任意健*/getchar(); /*按任意健*/menu();void save()int w=1;FILE *fp;int i;system( "cls" ); if(fp=fopen("D:我的文档桌面ticket.txt","wt")=NULL) /*以输出打开方式,在此前的记录被覆盖*/printf("nCannot ope
17、n filen");return ; for(i=0;i<n;i+)if(fwrite(&tii,sizeof(struct plane),1,fp)!=1) printf("file write errorn");w=0;if(w=1) printf("file save ok!n");fclose(fp);getchar();getchar(); menu();void load()FILE *fp;int i,w;w=1;system( "cls" ); if(fp=fopen("D:我的文档桌
18、面ticket.txt","rt")=NULL)printf("nCan not open filen");w=0;return;n=0;for(i=0;!feof(fp);i+)fread(&tii,sizeof(struct plane),1,fp);n+;n=n-1;fclose(fp);if(w=1)printf("Load file ok!");getchar();getchar(); menu();void menu() int n,w1; do system( "cls" ); /*
19、清屏*/ /*清屏*/ puts("tttt 飞机售票管理系统!nn"); puts("tt*MENU*nn"); puts("tttt1.输入新航班"); puts("tttt2.浏览 "); puts("tttt3.航班操作"); puts("tttt4.订票"); puts("tttt5.退票"); puts("tttt6.保存"); puts("tttt7.载入"); puts("tttt8.退出&
20、quot;); puts("nntt*n"); printf("Choice your number(1-8): bb"); scanf("%d",&n); if(n<1|n>8) /*对选择的数字作判断*/ w1=1; printf("your choice is not between 1 and 8,Please input enter to choice again:"); getchar(); getchar(); else w1=0; while(w1=1); /*选择功能*/ sw
21、itch(n) case 1:enter();break; /*输入模块*/ case 2:browse();break; /*浏览模块*/ case 3:menu1();break; /*查找模块*/ case 4:book();break; /*订票模块*/ case 5:back();break; /*退票模块*/ case 6:save();break; /*保存模块*/ case 7:load();break; /*加载模块*/ case 8:exit(0); void main() menu();第二部分:函数流程图(1)menu函数流程图YYYYYYYNNNNNNn=1NNYYN
22、结束enterbrowsemenu1bookbacksaveloadn=8n=7n=6n=5n=4n=3n=2n<1|n>8输入系数到变量n输出所有主目录清屏定义n,w1开始w1=0w1=1w1=1(2)enter函数流程图YN调用inputi<n开始Int i清屏输入记录个数i=0输出:请输入第%d航班记录i+返回主目录menu()结束(3)input函数流程图tii.num=0tii.num=0输入price输入max输入max输入date定义i开始输出:请输入航班代号输入ID输出:请输入起飞地点输入BePlace输出:请输入降落地点输入EnPlace输出:请输入起飞时间
23、输出:请输入航班最大载客人数输出:请输入航班票价返回函数enter结束(4)browse函数流程图N开始换行调用printf_one()Yi<ni=0输出菜单清屏定义i输入横线回车i+返回主目录menu()结束(5)menu1函数流程图YYYYNNNN结束menu()search_end()order()search_time()n=4n=3n=2n=1YNNw1=1w1=0Yw1=1n<1|n>4键入数字n输出:Choice your number(1-4):输入菜单清屏定义n,w1开始(6)order函数流程图调用browse结束i+NYj+tii=stii=tijs=t
24、iiYtii.data>tij.dataNj<nNi=0j=i+1Yi<n清屏定义结构s定义i,j开始(7)search_time函数流程图i=0输出对应航班信息输入出发时间定义i,m=0清屏定义结构体s开始i<nNYs.data=tii.dataNYm+(m!=0)&&(m%10=0)Y分屏显示N调用printf_one(i)i+返回主菜单menu1结束(8)serch_end函数流程图清屏定义结构体s定义i,m=0开始i<ni=0输出对应航班信息输入目的地分屏显示调用printf_one(i)(m!=0)&&(m%10=0)m+
25、NYNYY tii.EndPlace=s.EndPlaceN结束返回主菜单menu1i+(9)search函数流程图开始定义i,j,k定义结构体sk=1清屏输入起飞地输入目的地输入起飞时间i=1Ni<nYs.BePlace=tiiBePlace&&s.EnPlace=tii.EnPlace&&s.data=tii.datai+NYk=iY调用printf_one(k)Nk=-1Yi+输出:NO exist !函数返回k值函数返回值-1结束(10)book函数流程图定义 i清屏开始i=search()输出:欢迎进入售票窗口Ni!=-1Ytii.num>
26、=tii.maxNY输出:该趟航班不存在tii.num+输出:该趟航班票已售完输出:订票成功返回主目录menu()返回主目录结束(11)back函数流程图开始定义i,k=-1定义结构体s清屏输出:欢迎进入退票窗口输入航班代号IDi=0Ni<ni+YNs.ID=tii.IDYk=i输出:NO exist!k=-1调用printf_one(k)NYtii.num-输出:退票成功返回主目录menu()结束(12)save函数流程图开始定义w=1,*fp,i清屏N(fp=fopen(“ticket.txt”,”wt”)=NULLY输出:Can not open filei=0Ni<nYNf
27、write(&tii,sizeof(struct plane),1,fp)!=1Y输出:file write errorw=0i+Nw=1Y输出:file save ok!fclose(fp)返回主目录menu()结束(13)load函数流程图开始定义*fp,i,w=1清屏N(fp=fopen(“ticket.txt”,”rt”)=NULLY输出:Can not open filew=0n=0i=0!feof(fp)NYfread(&tii,sizeof(struct plane),1,fp)n+i+n=n-1fclose(fp)Nw=1Y输出:Load file ok!1结束
28、返回主目录menu()第三部分:心得体会(1) 开始对c语言只是一种零散的认识,作为一个c语言的初学者对编程没有明确的概念,只是对语句的格式与编程规定有了一个初步了解。也不知道编程的主要目的是什么,依据什么来编?为什么要编程?编出来又能干什么?通过对这一飞机订票系统的学习,知道了c语言在实际应用中的作用,明确了学c语言的意义。(2) 对c语言编程经验的掌握要从实践中积累,在程序调试的过程中遇到的错误能够正确的识别并改正,使我收益很大。(3) 熟悉了调试的方法和步骤,对c语言编程过程中可能遇到的各种错误有了深刻的认识与理解,并能够迅速的根据提示解决程序的错误:l 对变量赋值时,要用“=”,而表示
29、相等时用“=”。l 程序语句后的注释有时会很有用,会帮助我们更好的理解程序,在程序调试时根据注释也可以帮我们快速准确的了解出错处程序的意思,做出快速的更正。l 使用函数时要注意先声明。l 使用fp=fopen(“”)标明地址时要注意使用“”。(4) 通过实用函数流程图,使我更深入的理解了语句的使用,特别是对循环语句的理解与掌握:l dowhile(表达式)循环体循环体while(表达式);注意两个循环结构的使用,特别是“;”的使用。(5) 使我体会到了流程图在c语言学习中的重要性。一个清晰的流程图能使我们的程序简洁、有条理并易于理解,大大提高编程效率。流程图能够帮我们形成一种整体的构想,使具体的事物抽象化,条理化,再用程序语言表达出来。(6) 流程图的掌握不仅对c语言学习有很大帮助,而且在各个学科里都可以利用其思想,生活中也不例外,比如说“统筹思想“,就相当于编程前先画流程图然后根据流程图编写程序,而转化到实际生活中就是做事前要有一个合理的安排,然后按照安排有条理的做事。专心-专注-专业
限制150内