1、目录第1章 需求分析3第2章 总体设计3第3章 类的设计33.1 类的设计33.2 类的设计4第4章 详细设计44.1 工程视图44.2 类图视图44.3 函数的调用关系54.4 主程序流程图54.5 主要算法的流程图5第5章 测试5第6章 总结5附录:程序代码6第1章 需求分析用C+设计一个系统,能提供下列服务:(1) 录入航班信息,格式为:航班号起飞时间起始终点经济舱票价剩余座位mu216420:30包头北京61087可不定时地增加航班数据。(2)浏览航班信息,可显示出所有航班,如果当前系统时间超过了某航班的起飞时间,则显示“此次航班已发出”的提示信息。(3)查询路线:可按航班编号查询,可
2、按起始站,终点站查询(4)售票和退票功能A:查询航班编号或站点。当剩余座位数大于0,并且当前系统时间小于起飞时间时才能售票,售票后自动更新剩余座位数。B:退票时,输入退票的航班编号和数量,当本班航班未发出时才能退票,退票后自动更新剩余座位数。第2章 总体设计1.用结构框图表示各个功能之间的关系。Plane数据的录入查询订票退票按航班编查询按起点查询按终点查询2. 将框图中系统的各个功能用文字详细的描述。基本功能:录入-航班、始发站、终点站、起飞时间(小时:分钟)、票价剩余票数信息。浏览航班-查看所有的录入航班中起飞时间小于当前时间的航班则航班已出发。查询航班-通过搜索航班或者站点来快速的查看航
3、班信息。订退票-航班时间大于当前系统时间的前提下才可退票并且在票数大于零的前提下才订票,票数更新。文件的存储-存储录入的航班信息以便下次访问。读取文件内的信息方便操作以上的各项功能。第3章 类的设计3.1 Plane类的设计(第一个类)1.画出类图Planechar ID10; /*航班代号*/ char BePlace10;/*飞机起飞地点*/ char EnPlace10;/*飞机降落终点*/ char data15;/*飞机起飞时间*/ int max;/*飞机最大乘客人数*/ int price;/*飞机票价*/ int num;/*飞机已售票数*/void enter()录入void
4、 browse()浏览void search()查找void book()订票void back()退票void menu()主菜单2.对类的函数成员的说明voidenter()输入1;录入客运信息;进行系统中的各种有关操作;系统操作中返回录入过的信息voidbrowse()输入2;进行浏览信息操作;返回录入的客运信息void search()输入3-1或2或3;可以通过ID或终点或起点查询;返回所要查找的车次信息 voidbook()输入4以及起点、终点、出发时间;进行订票;返回订票结果voidback()输入5以及客运代号;进行退票;返回退票结果voidmenu()显示主菜单完成以上功能;
5、第4章 详细设计4.1 工程视图4.2 类图视图4.3 主程序流程图开始Plane数据的录入数据的保存订票退票结束结束结束结束第5章 测试第6章第7章 总结在学习的同时,发现了自己学习的许多不足之处,比如,对读程序还不够熟练,对有些语句还没有掌握,再者,自己在指法上还不行,我们只有在读懂程序的情况下才能更好的做出流程图,要通过不断地上机操作才能更好的掌握理解。打字过慢而直接影响阅读速度,特别是在运行程序时所出现的错误很难顺利的去找出来并加以纠正.要更加努力的锻炼自己的编程速度.附录:#include #include #include #define N 1000typedef struct
6、plane 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(请输入起飞地点:n);scanf(%s,tii.BeP
7、lace);printf(请输入降落地点:n);scanf(%s,tii.EnPlace);printf(请输入起飞时间:n);scanf(%s,tii.data);printf(请输入剩余座位:n);scanf(%d,&tii.max);printf(请输入经济舱的票价:n);scanf(%d,&tii.price);tii.num=0;void enter()int i; system( cls ); printf(请输入航班的数目(0-%d)?:,N);scanf(%d,&n); /*要输入的记录个数*/printf(n请输入数据nn);for(i=0;in;i+) printf(n请输
8、入第 %d 航班记录.n,i+1); input(i); /*调用输入函数*/ getchar();menu();void printf_one(int 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;in;i+)p
9、rintf_one(i);printf(n);getchar();getchar();menu();void search_ID()int i,m=0;struct plane s;system( cls );printf(nn请输入航班代号:);scanf(%s,s.ID); /*输入出发的时间*/puts(n-);printf(nt航班代号 起飞地点 降落地点 起飞时间 经济舱票价 剩余座位 已售票数n);for(i=0;in;i+)if(strcmp(s.ID,tii.ID)=0)m+; if(m!=0)&(m%10=0) /*目的是分屏显示*/ printf(nnPress any k
10、ey to contiune . . .);getchar();puts(nn); printf_one(i);printf(n);/*调用显示一个记录的函数*/puts(n-);getchar(); /*按任意健*/getchar();menu1();void serch_began()int i,m=0;struct plane s;system( cls );printf(nn请输入起飞地点:);scanf(%s,s.BePlace); /*输入要到达的地方*/puts(n-);printf(nt航班代号 起飞地点 降落地点 起飞时间 经济舱票价 剩余座位 已售票数n);for(i=0;
11、in;i+)if(strcmp(tii.BePlace,s.BePlace)=0)m+; if(m!=0)&(m%10=0) /*目的是分屏显示*/ printf(nnPress any key to contiune . . .);getchar();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(nn请输入降落地点:);scan
12、f(%s,s.EnPlace); /*输入要到达的地方*/puts(n-);printf(nt航班代号 起飞地点 降落地点 起飞时间 经济舱票价 剩余座位 已售票数n);for(i=0;in;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);/*调用显示一个记录的函数*/puts(n-);getchar(); /*按任意健*/get
13、char();menu1();void menu1()int n,w1; do system( cls ); /*清屏*/ puts(tttt 飞机售票操作!nn); puts(tt*MENU*nn); puts(tttt1.按照航班号查找航班); puts(tttt2.按照起飞地点查找航班); puts(tttt3.按照降落地点查找航班); puts(tttt4.返回主菜单); puts(nntt*n); printf(请输入(1-4): bb); scanf(%d,&n); if(n4) /*对选择的数字作判断*/ w1=1; printf(您输入的不是 1到4,请重新输入:); getc
14、har(); getchar(); else w1=0; while(w1=1); /*选择功能*/ switch(n) case 1:search_ID();break; case 2:serch_began();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请输入要订票的降落地
15、点:);scanf(%s,s.EnPlace);printf(nn请输入要订票的起飞时间:);scanf(%s,s.data); /*输入出发的时间*/for(i=0;i=tii.max)printf(n该趟航班票已售完!); elsetii.num+;printf(n订票成功!n);elseprintf(该航班不存在!n);getchar();getchar(); /*按任意健*/menu();void back()int i,k=-1;struct plane s;system( cls );printf(欢迎进入退票窗口!n);printf(nn输入航班代号:);scanf(%s,s.I
16、D); /*输入要到达的地方*/for(i=0;in;i+) /*查找要修改的数据*/if(strcmp(s.ID,tii.ID)=0)k=i; /*找到要修改的记录*/printf_one(k);break; /*调用显示一个记录的函数*/if(k=-1) printf(nnNO exist!);else tii.num-; printf(n退票成功!n);getchar(); /*按任意健*/getchar(); /*按任意健*/menu();void menu() int n,w1; do system( cls ); /*清屏*/ /*清屏*/ puts(tttt 飞机售票管理系统!n
17、n); puts(tt*MENU*nn); puts(tttt1.输入新航班); puts(tttt2.浏览 ); puts(tttt3.航班操作); puts(tttt4.订票); puts(tttt5.退票); puts(tttt6.退出); puts(nntt*n); printf(请输入(1-6): bb); scanf(%d,&n); if(n6) /*对选择的数字作判断*/ w1=1; printf(您输入的不是 1 到 6,请重新输入:); getchar(); getchar(); else w1=0; while(w1=1);/*选择功能*/ switch(n) case 1:enter();break; /*输入模块*/ case 2:browse();break; /*浏览模块*/ case 3:menu1();break; /*查找模块*/ case 4:book();break; /*订票模块*/ case 5:back();break; /*退票模块*/ case 6:exit(0); int main() menu();