C语言程序设计-飞机订票管理系统_第1页
C语言程序设计-飞机订票管理系统_第2页
C语言程序设计-飞机订票管理系统_第3页
C语言程序设计-飞机订票管理系统_第4页
C语言程序设计-飞机订票管理系统_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE课程设计报告课程名称C语言程序设计课题名称飞机订票管理系统专业建筑环境班级学号姓名指导教师

湖南工程学院课程设计任务书课程名称C语言程序设计课题飞机订票管理系统专业班级学生姓名学号指导老师审批任务书下达日期任务完成日期一、设计内容与设计要求1.设计内容:假设某航空公司只有M架N个座位的飞机,每架飞机每天飞行一趟。通过该系统来实现机票的订购问题。(1)、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:起飞地、目的地航班号、座次号码、座次订出与否标记、订座者的姓名和订座者的身份证号码。(2)、本系统显示这样的菜单:a输入航班信息b查找航班信息(显示空座的数量、已订座的信息、起飞时间)c订票预约d删除定票预约e退出系统(3)查找航班信息既可按线路查,也可按目的地查。2.设计要求:掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经验。设计正确,方案合理。界面友好,使用方便。程序精炼,结构清晰。设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。上机演示。按学号顺序选课题号,并在规定的时间内独自完成相关课题的C源程序编写、调整和运行。源程序及编译生成各文件均保存在软盘中;按本任务书的要求,按附录的要求编写《课程设计报告》(Word文档格式)。并用A4的复印纸打印并装订;二、进度安排第十九周星期18时00分—11时30分星期214时00分——18时15分星期414时00分——18时15分星期68时00分——12时15分目录一需求分析11.问题描述12.系统的功能1二总体设计21.系统功能模块图2三详细设计3主要功能模块的算法设计思路1.主菜单显示函数32.输入航班信息函数33.查找航班信息函数34.订票函数35.退票函数3主要功能模块函数及流程图1.memu()函数42.enter()函数63.input()函数74.menu1()函数85.Search_way()函数106.Search_end()函数127.book()函数148.search()函数169.back()函数18四运行结果201.欢迎界面202.主菜单203.输入航班信息214.查询航班信息215.按路线查询226.按目的地查询227.订票238.退票23五总结24六附录25附录1.(源代码)2534-飞机订票管理系统一需求分析1问题描述:假设某航空公司只有M架N个座位的飞机,每架飞机每天飞行一趟。通过该系统来实现机票的订购问题。要求:(1)、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:起飞地、目的地航班号、座次号码、座次订出与否标记、订座者的姓名和订座者的身份证号码。(2)、本系统显示这样的菜单:a输入航班信息b查找航班信息(显示空座的数量、已订座的信息、起飞时间)c订票预约d删除定票预约e退出系统(3)、查找航班信息既可按线路查,也可按目的地查。2该系统的功能:用该系统来实现飞机票的订票管理,能完成对航班的信息查询、订票预约、删除订票预约功能。功能描述:1.输入航班信息2.查询航班信息3.订票预约4.删除订票预约

二总体设计1.系统功能模块图飞机订票管理系统输入航班信息订票预约查找航班信息删除定票预约退出系统按目的地查找按路线查找按目的地查找按路线查找

三详细设计主要功能模块的算法设计思路主菜单显示函数(voidmenu()).定义函数变量.输出选择项目a输入航班信息(voidenter())b查找航班信息(voidmenu1())c订票预约(voidbook())d删除定票预约(voidback())e退出系统(exit(0)).输入变量值.判断变量值并调用子项目函数进入子项目输入航班信息函数(voidenter()).定义函数变量.输出提示信息.输入航班记录.调用输入函数(voidinput())查找航班信息函数(voidmenu1()).定义局部变量.输出子菜单a按照路线查找航班函数(search_way())b按照目的地查找航班函数(search_end()).输入变量值.判断变量值并调用子菜单函数进入子菜单订票函数(voidbook()).定义局部变量i.调用voidsearch()函数并把输入变量值赋给i.判断i的值并输出相关提示信息退票函数(voidback()).定义局部变量.调用飞机结构体数据中的航班号ID,输入变量值赋给ID判断ID的值并输出相关提示信息主要功能模块函数及流程图menu()函数 voidmenu() { intn,w1;printf("\n\n\t\t★您好,欢迎进入飞机订票管理系统!★\n");printf("\n================================================================================\n\n\n"); printf("\t请按Enter键继续\n\n\n\n\n"); printf("\n"); printf("(温馨提示:第一次使用该系统请先输入航班信息)"); getchar(); getchar(); do { system("cls");/*清屏*/ puts("\t\t\t\t飞机订票管理系统!\n\n"); puts("\t\t*********************MENU*********************\n"); puts("\t\t\t\t1.输入航班信息\n"); puts("\t\t\t\t2.查找航班信息\n"); puts("\t\t\t\t3.订票预约\n"); puts("\t\t\t\t4.删除定票预约\n"); puts("\t\t\t\t5.退出系统\n"); puts("================================================================================\n"); printf("\t\t请选择服务项目(1-5):[]\b\b"); scanf("%d",&n); if(n<1||n>5)/*对选择的数字作判断*/ { w1=1; printf("yourchoiceisnotbetween1and5,Pleaseinputentertochoiceagain:"); getchar(); getchar(); } elsew1=0; } while(w1==1); switch(n)/*选择功能*/ { case1:enter();break;/*输入模块*/ case2:menu1();break;/*查找模块*/ case3:book();break;/*订票模块*/ case4:back();break;/*退票模块*/ case5:exit(0); } } voidmain() { menu(); }开始开始intn,w1intn,w1清屏清屏(cls)输出目录输出目录输出n输出nififn<1||n>5Y YN结束 YY YN结束 Yw1=1w1=0w1=1w1=0WWhile(w==1)Y YY Y输出n(1-5)输出n(1-5)N结束 YN结束 YN结束 YN结束 YN结束 YN结束 YN结束 YN结束 YN结束 YN结束 YY YY YY YY YY YY Yn=5n=4n=1n=3n=2结束Y YY YY YY YY YY Yn=5n=4n=1n=3n=2结束输入订票退出退订查找输入订票退出退订查找enter()函数voidenter(){ inti;system("cls");printf("请输入航班的数目(0-%d)?:",N); scanf("%d",&n);/*要输入的记录个数*/ printf("\n请输入数据\n\n"); for(i=0;i<n;i++) { printf("\n请输入第%d航班记录.\n",i+1); input(i);/*调用输入函数*/ } getchar(); menu();}开始结束开始结束intiinti返回返回menu()清屏清屏(cls)i++i++请输入航班的数目n请输入航班的数目n调用input()函数调用input()函数请输入数据m请输入第n次航班记录请输入数据m请输入第n次航班记录Y YY YN结束 Yi=0N结束 Yi=0i<ni<n

3.input()函数voidinput(inti){ printf("请输入航班代号:\n"); scanf("%s",ti[i].ID); printf("请输入航班飞行路线:\n"); scanf("%s",ti[i].line); printf("请输入起飞地点:\n"); scanf("%s",ti[i].BePlace); printf("请输入降落地点:\n"); scanf("%s",ti[i].EnPlace); printf("请输入起飞时间:\n"); scanf("%s",ti[i].data); printf("请输入航班的最大载客人数:\n"); scanf("%d",&ti[i].max); printf("请输入航班的票价:\n"); scanf("%d",&ti[i].price); ti[i].num=0;}开始开始请输入降落地点请输入起飞地点请输入航班代号请输入起飞时间请输入航班的最大载客人数请输入航班的最大载客人数返回menu()结束

4.menu1()函数请输入降落地点请输入起飞地点请输入航班代号请输入起飞时间请输入航班的最大载客人数请输入航班的最大载客人数返回menu()结束voidmenu1(){ intn,w1;do{system("cls");/*清屏*/puts("\n\t\t\t\t*航班查询*\n\n");puts("\t\t*********************MENU*********************\n\n");puts("\t\t\t\t1.按照路线查找航班");puts("\t\t\t\t2.按照目的地查找航班");puts("\t\t\t\t3.返回主菜单");puts("\n\n\t\t**********************************************\n");printf("Choiceyournumber(1-3):[]\b\b");scanf("%d",&n);if(n<1||n>3)/*对选择的数字作判断*/{w1=1;printf("yourchoiceisnotbetween1and3,Pleaseinputagain:");getchar(); getchar();}elsew1=0;}while(w1==1);switch(n)/*选择功能*/{case1:search_way();break;case2:search_end();break;case3:menu();break;}}

开始开始intn,w1intn,w1清屏(cls)清屏(cls)输出目录2输出目录2输出n(1-3)输出n(1-3)N YifN Yifn<1||n>3Y YY Yw1=0w1=1w1=0w1=1Y YwhileY Ywhile(w1==1)N YN Y输出n输出nN YN YN YY YY YY Yn=3n=2n=1search_waymenusearch_end结束

5.Search_way()函数N YN YN YY YY YY Yn=3n=2n=1search_waymenusearch_end结束 voidsearch_way() { inti,m=0; structplanes; system("cls"); printf("\n\n请输入飞行路线:"); scanf("%s",s.line);/*输入路线*/ puts("\n"); printf("\n\t航班代号飞行路线起飞地点降落地点起飞时间票价最大乘客已售票数\n"); for(i=0;i<n;i++) { if(strcmp(s.line,ti[i].line)==0) { m++; if((m!=0)&&(m%10==0))/*目的是分屏显示*/ { printf("\n\nPressanykeytocontiune..."); getchar(); puts("\n\n"); } printf_one(i); printf("\n"); /*调用显示一个记录的函数*/ } } puts("\n"); getchar();/*按任意健*/ getchar(); menu1(); }

开始开始inti,minti,m清屏(cls)清屏(cls)输入路线输入路线i=0i=0NNi<n返回menu1()i<n返回menu1()YNYNY结束按任意键继续进行调用函数printf_one()回车换行(m!=0)&&(m%10==0)m++返回menu1()i++

6.Search_end()函数Y结束按任意键继续进行调用函数printf_one()回车换行(m!=0)&&(m%10==0)m++返回menu1()i++ voidsearch_end() { inti,m=0; structplanes; system("cls"); printf("\n\n请输入目的地:"); scanf("%s",s.EnPlace);/*输入要到达的地方*/ puts("\n"); printf("\n\t航班代号飞行路线起飞地点降落地点起飞时间票价最大乘客已售票数\n"); for(i=0;i<n;i++) { if(strcmp(ti[i].EnPlace,s.EnPlace)==0) { m++; if((m!=0)&&(m%10==0))/*目的是分屏显示*/ { printf("\n\nPressanykeytocontiune..."); getchar(); puts("\n\n"); } printf_one(i); printf("\n"); /*调用显示一个记录的函数*/ } } puts("\n"); getchar();/*按任意健*/ getchar(); menu1(); }

开始开始inti,minti,m清屏(cls)清屏(cls)输入目的地输入目的地i=0i=0N返回menu1()i<nN返回menu1()i<nYYNNS==ti[i]i++按任意键继续进行调用函数printf_one()回车换行(m!=0)&&(m%10==0)S==ti[i]i++按任意键继续进行调用函数printf_one()回车换行(m!=0)&&(m%10==0)m++YY结束结束

7.book()函数voidbook(){inti; system("cls"); printf("欢迎进入售票窗口!\n");i=search(); if(i!=-1) { if(ti[i].num>=ti[i].max) { printf("\n该趟航班票已售完!"); }else { ti[i].num++; printf("\n订票成功!\n"); } } else printf("该航班不存在!\n"); getchar(); getchar();/*按任意健*/ menu();}

开始开始intiinti清屏(cls)清屏(cls)NNYYti[i].num++输出“欢迎进入售票窗口”i=search()i!=-1ti[i].num>=ti[i].max输出“该趟航班票已售完”输出“该航班不存在!”输出“订票成功”返回menu()结束

8.search()函数NNYYti[i].num++输出“欢迎进入售票窗口”i=search()i!=-1ti[i].num>=ti[i].max输出“该趟航班票已售完”输出“该航班不存在!”输出“订票成功”返回menu()结束intsearch()/*查找模块*/{ inti,k; structplanes; k=-1; system("cls"); printf("\n\n请输入要订票的起飞地点:"); scanf("%s",s.BePlace);/*输入要到达的地方*/ printf("\n\n请输入要订票的降落地点:"); scanf("%s",s.EnPlace); printf("\n\n请输入要订票的起飞时间:"); scanf("%s",s.data);/*输入出发的时间*/ puts("\n"); printf("\n\t航班代号飞行路线起飞地点降落地点起飞时间票价最大乘客已售票数\n"); for(i=0;i<n;i++)/*查找要修改的数据*/ { if(strcmp(s.BePlace,ti[i].BePlace)==0&&strcmp(s.EnPlace,ti[i].EnPlace)==0&&strcmp(s.data,ti[i].data)==0) { k=i;/*找到要修改的记录*/ printf_one(k); break;/*调用显示一个记录的函数*/ } } if(k==-1) { printf("\n\nNOexist!"); return-1; } else returnk;}

开始开始inti,kinti,kk=-1k=-1清屏(cls)清屏(cls)NYYNk==-1strcmp(s.BePlace,ti[i].BePlace)==0&&strcmp(s.EnPlace,ti[i].EnPlace)==0&&strcmp(s.data,ti[i].data)==0结束跳出(break)调用printf_one(k)k=i返回search()=k返回search()=-1输出“NOexist!”i++i<ni=0输入起飞,降落地点和时间NYYNk==-1strcmp(s.BePlace,ti[i].BePlace)==0&&strcmp(s.EnPlace,ti[i].EnPlace)==0&&strcmp(s.data,ti[i].data)==0结束跳出(break)调用printf_one(k)k=i返回search()=k返回search()=-1输出“NOexist!”i++i<ni=0输入起飞,降落地点和时间

9.back函数voidback(){ inti,k=-1; structplanes; system("cls"); printf("欢迎进入退票窗口!\n"); printf("\n\n输入航班代号:"); scanf("%s",s.ID);/*输入要到达的地方*/puts("\n"); printf("\n\t航班代号飞行路线起飞地点降落地点起飞时间票价最大乘客已售票数\n"); for(i=0;i<n;i++)/*查找要修改的数据*/ { if(strcmp(s.ID,ti[i].ID)==0) { k=i;/*找到要修改的记录*/ printf_one(k); break;/*调用显示一个记录的函数*/ } } if(k==-1) { printf("\n\nNOexist!"); } else {ti[i].num--; printf("\n退票成功!\n"); } getchar();/*按任意健*/ getchar();/*按任意健*/ menu();}开始开始inti,k=-1inti,k=-1清屏(cls)清屏(cls)结束结束输入“输入“欢迎进入退票窗口”menu()menu()输入“输入“输入航班代号”输出“退票成功!”ti[i].num--i=0ti[i].num--i=0NNNk==-1i<nNk==-1i<ni++i++YYYYNstrNstrcmp(s.ID,ti[i].ID)==0输出输出“NOexist!”YY调用调用printf_one(k)k=ik=i

四运行结果欢迎界面主菜单输入航班信息4.查询航班信息

5.按路线查询6.按目的地查询7.订票8.退票

五总结通过这次课程设计,使我对C语言有了更进一步的认识和了解,我懂得了C语言的基本概念、语法、语义和数据类型的使用特点。初步了解了C语言程序设计的方法及编程技巧,能正确使用C语言编写程序。我清楚了一个问题,就是程序设计必须模版化、规范化,使整个程序的结构和条理清晰,这样,在程序的调试过程中会容易发现程序的不足,便于进行修改。《C语言程序设计》是一门理论与实践结合的课程,其中更偏重于上机实践方面,要想学好它要重在实践,要通过不断的上机操作才能更好地学习C语言。

六附录附录1:(源代码) #include<stdio.h> #include<string.h> #include<stdlib.h> #defineN1000 typedefstructplane { charID[10];/*航班代号*/ charBePlace[10];/*飞机起飞地点*/ charEnPlace[10];/*飞机降落终点*/ chardata[15];/*飞机起飞时间*/ charline[10];/*飞机飞行路线*/ intmax;/*飞机最大乘客人数*/ intprice;/*飞机票价*/ intnum;/*飞机已售票数*/ }PLANE; PLANEti[N]; intn;/*当前的航班数目*/ voidmenu(); voidmenu1(); voidinput(inti) { printf("请输入航班代号:\n"); scanf("%s",ti[i].ID); printf("请输入航班飞行路线:\n"); scanf("%s",ti[i].line); printf("请输入起飞地点:\n"); scanf("%s",ti[i].BePlace); printf("请输入降落地点:\n"); scanf("%s",ti[i].EnPlace); printf("请输入起飞时间:\n"); scanf("%s",ti[i].data); printf("请输入航班的最大载客人数:\n"); scanf("%d",&ti[i].max); printf("请输入航班的票价:\n"); scanf("%d",&ti[i].price); ti[i].num=0; } voidenter() { inti; system("cls"); printf("请输入航班的数目(0-%d)?:",N); scanf("%d",&n);/*要输入的记录个数*/ printf("\n请输入数据\n\n"); for(i=0;i<n;i++) { printf("\n请输入第%d航班记录.\n",i+1); input(i);/*调用输入函数*/ } getchar(); menu(); } voidprintf_one(inti)/*显示一个记录的函数*/ { printf("%11s%8s%6s%8s%6s%6d%6d%6d",ti[i].ID,ti[i].line,ti[i].BePlace,ti[i].EnPlace,ti[i].data,ti[i].price,ti[i].max,ti[i].num); } voidsearch_way() { inti,m=0; structplanes; system("cls"); printf("\n\n请输入飞行路线:"); scanf("%s",s.line);/*输入路线*/ puts("\n"); printf("\n\t航班代号飞行路线起飞地点降落地点起飞时间票价最大乘客已售票数\n"); for(i=0;i<n;i++) { if(strcmp(s.line,ti[i].line)==0) { m++; if((m!=0)&&(m%10==0))/*目的是分屏显示*/ { printf("\n\nPressanykeytocontiune..."); getchar(); puts("\n\n"); } printf_one(i); printf("\n"); /*调用显示一个记录的函数*/ } } puts("\n"); getchar();/*按任意健*/ getchar(); menu1(); } voidsearch_end() { inti,m=0; structplanes; system("cls"); printf("\n\n请输入目的地:"); scanf("%s",s.EnPlace);/*输入要到达的地方*/ puts("\n"); printf("\n\t航班代号飞行路线起飞地点降落地点起飞时间票价最大乘客已售票数\n"); for(i=0;i<n;i++) { if(strcmp(ti[i].EnPlace,s.EnPlace)==0) { m++; if((m!=0)&&(m%10==0))/*目的是分屏显示*/ { printf("\n\nPressanykeytocontiune..."); getchar(); puts("\n\n"); } printf_one(i);/*调用显示一个记录的函数*/ printf("\n"); } } puts("\n"); getchar();/*按任意健*/ getchar(); menu1(); } voidmenu1() { intn,w1; do { system("cls");/*清屏*/ puts("\n\t\t\t\t*航班查询*\n\n"); puts("\t\t*********************MENU*********************\n\n"); puts("\t\t\t\t1.按照路线查找航班"); puts("\t\t\t\t2.按照目的地查找航班"); puts("\t\t\t\t3.返回主菜单"); puts("\n\n\t\t**********************************************\n"); printf("Choiceyournumber(1-3):[]\b\b"); scanf("%d",&n); if(n<1||n>3)/*对选择的数字作判断*/ { w1=1; printf("yourchoiceisnotbetween1and3,Pleaseinputagain:"); getchar(); getchar(); } elsew1=0; }while(w1==1); switch(n)/*选择功能*/ { case1:search_way();break; case2:search_end();break; case3:menu();break; } } intsearch()/*查找模块*/ { inti,k; structplanes; k=-1; system("cls"); printf("\n\n请输入要订票的起飞地点:"); scanf("%s",s.BePlace);/*输入要到达的地方*/ printf("\n\n请输入要订票的降落地点:"); scanf("%s",s.EnPlace); printf("\n\n请输入要订票的起飞时间:"); scanf("%s",s.data);/*输入出发的时间*/ puts("\n"); printf("\n\t航班代号飞行路线起飞地点降落地点起飞时间票价最大乘客已售票数\n"); for(i=0;i<n;i++)/*查找要修改的数据*/ { if(strcmp(s.BePlace,ti[i].BePlace)==0&&strcmp(s.EnPlace,ti[i].EnPlace)==0&&strcmp(s.data,ti[i].data)==0) { k=i;/*找到要修改的记录*/ printf_one(k); break;/*调用显示一个记录的函数*/ } } if(k==-1) { printf("\n\nNOexist!"); return-1; } else returnk; } voidbook() { inti; system("cls"); printf("欢迎进入售票窗口!\n"); i=search(); if(i!=-1) { if(ti[i].num>=ti[i].max) { printf("\n该趟航班票已售完!"); } else { ti[i].num++; printf("\n订票成功!\n"); } } else printf("该航班不存在!\n"); getchar(); getchar();/*按任意健*/ menu(); } voidback() { inti,k=-1; structplanes; system("cls"); printf("欢迎进入退票窗口!\n"); printf("\n\n输入航班代号:"); scanf("%s",s.ID);/*输入要到达的地方*/ puts("\n"); printf("\n\t航班代号飞行路线起飞地点降落地点起飞时间票价最大乘客已售票数\n"); for(i=0;i<n;i++)/*查找要修改的数据*/ { if(strcmp(s.ID,ti[i].ID)==0) { k=i;/*找到要修改的记录*/ printf_one(k); break;/*调用显示一个记录的函数*/ } } if(k==-1) { printf("\n\nNOexist!"); } else { ti[i].num--; printf("\n退票成功!\n"); } getchar();/*按任意健*/ getchar();/*按任意健*/ menu(); } voidmenu() { intn,w1;printf("\n\n\t\t★您好,欢迎进入飞机订票管理系统!★\n");printf("\n============================

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论