软件课程设计报告-飞机票销售系统.doc_第1页
软件课程设计报告-飞机票销售系统.doc_第2页
软件课程设计报告-飞机票销售系统.doc_第3页
软件课程设计报告-飞机票销售系统.doc_第4页
软件课程设计报告-飞机票销售系统.doc_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

软件课程设计报告 班级: 光信1005班 姓名: 学号: 1软件设计11.1设计题目11.2设计要求11.3设计思想11.4流程图22软件测试92.1航班信息查询模块测试92.2订票模块测试142.3机票信息查询模块测试172.4退票模块测试183算法改进214开发体会22附录:源代码清单24参考文献42设计题目 1.1设计题目飞机票销售系统。1.2设计要求 运用C语言基本知识,结合相关算法思想和数据结构,编写一个单微机系统下运行的飞机票销售系统。飞机票销售系统应实现航班信息查询、机票购买、机票信息查询、机票退购等功能。1.3设计思想 程序分为四个功能模块,即航班信息查询、订票、乘客机票信息查询和退票。程序中定义了2种结构为 struct airline,struct passenger,分别用于航班信息、旅客机票信息的存取和修改。其中又为了方便从txt文件用链表读取和处理数据又创建了linecreat()和passengercreat()两个函数。其中对数据的查找与处理我觉得不是很大可以放入各个功能模块中进行。对于已经处理过的数据一般都要储存,所以为了储存文件信息分别创建了saveairline,与savepassenger两个函数。其中函数中需要的信息与数据分别存在“乘客信息.txt”与“南航公司航班信息.txt”航班信息查询模块的功能主要由函数insult实现,而航班信息查询模块中又分为按航班号查询航班信息模块、按目的地查询航班信息模块和按起飞时间段查询航班信息模块三个小模块 。订票模块的功能由函数book( )实现。机票信息查询模块功能由函数search( )实现。退票模块功能由函数returnticket( )实现。每个模块的函数都通过对结构链表和文件的操作来实现对数据的存取和修改,从而实现各自的功能。程序中采用的查找数据方式为顺序查找。1.4流程图以下依次为Main函数流程图;Insult函数流程图;Book函数流程图;Search函数流程图;Returnticket函数流程图; 2软件测试2.1航班信息查询模块测试运行程序,首先进入主菜单界面。选择1进入航班信息查询按照起飞时间查询,输入可以乘机的时间段找到的航班信息如下按任意键继续,软件可以由此退出选择2,航班号查询得到界面如下如果选取3按照目的地查询2订票进入买票系统进入后依次输入信息买票如果输入航班有误则会出现若一人未购票先查找买票查询可见刚才购票成功。3退出售票系统进入查询系统选择查询方式,如果选择按照姓名查询如果选择机票号查询与用姓名查询的结果相同如果没有相应的乘客4,退票模块查询输入相应的乘客的姓名与编号即可删除如果有一人已购票查询得:删除之;再次查询未找到即证明已经删除算法改进改进1在该程序调试时我发现程序中很多的输入与输出可以做成一些功能模块,像是查错与提示错误的功能便是经常需要的部分。如果能够将这些部分做成一些简单的函数则能够显著提高函数的可读性与函数的内聚性改进2在查找过程中,由于文件储存时就是按照顺序储存的,可以采用二分法查找。这样可以大大提高函数的运行效率。改进3函数在运行过程中我发现并没有航班的添加程序,可以加一个管理员系统,这样就可以更加好的去管理航班销售系统。开发体会在此次软件开发过程当中,发现了自己好多的不足。首先就是于软件开发过程当中,对于各类函数的不熟悉。造成我犯了很多知识性的错误。我体会到要想在编程上有所突破光靠自己的奇思妙想是不够的,必须建立在对程序充分的熟悉上。对于各类算法只有充分的熟悉,才能够知道自己在哪些方面的不足。然后就是,我觉得对于函数的返回操作做的并不是很好。主要就是采用WHILE循环然而在做这个的过程中发现自己对于这个其实做的也不是很好然后我感觉到程序的编写有的时候并不是一蹴而就的,必须要做到胸有成竹。做到自顶而下不断细分,只有这样才能够加强对软件的理解。做软件和做事情一样需要有一个清晰地规划。做好规划也就是成功的一半。所以遇到事情以后应当先充分的了解对象。建立在对事物的充分了解之上才能够进一步的去按照需求改进它。在做软件的过程中虽然很累很枯燥,但是还是会感到一种荣誉与骄傲当看到软件调试失败时确实会感到沮丧,但是一旦运行成功就会有一种莫名的高兴与动力。也许这就叫一种荣誉感吧。有的时候问题并不是自己做的好不好而是是否真正的体会到了什么,可以说在做软件的过程中,真正的体味到彩虹总在风雨后。甚至有的时候感觉有种蓦然回首那人却在灯火阑珊处,也许治学最高境界就是这样吧。其实在做软件的过程中叶体会到了友谊的味道。正所谓当局者迷旁观者清,遇到同学纠结的问题旁边的同学站在一个新的视角或许就会找出问题的所在,而在这过程中,可以体会到一种非常温馨的感觉。写到这里忽然想起来,有一次一个女同学调试半天不成功后哭了。在同学的安慰下她终于艰难地完成了,有的时候我真的会莫名的感动觉得有一种年轻的力量在我的身体里荡漾。或许真的就是一种不服输的精神我们的先人们才能够创造出这样一个美好的世界。那么说到自己,我觉得在以后的人生路上遇到什么样的挫折与磨难,自己也应当有一种不服输的劲头吧,不轻言放弃,永不言败才能到达人生理想的彼岸。恩,无论怎么样软件课程设计还是结束了在这过程中确实收获了很多。我觉得学校很多的课程都可以设计成这样,体味一种近乎实战的环境才能够让我们学有所用。才是真的授之以渔而非授之以鱼。在当今填鸭式的中国教育模式下我觉得这或许可以做 一个突破点。然而,不幸的是据传学校居然在以后的学生当中不开设这门课了,我表示非常的不爽。为什么现在很多人都说高等学校教育质量越来越差就是因为这吗让学弟学妹们体验这非一般的难度,才能让他们有所成长源代码#include#include#include#include#include typedef struct airline/定义变量储存飞机信息char linenum20;char des20;char start20;char time20;int last;int sold;int price;struct airline *next;struct passenger/定义结构体储存乘客信息char linenum20;int ticketnum;char des20;char time20;char name20;char gender20;int price;struct passenger *next; ;static int M=10;static int N=50;void insult();/航班查询函数void book();/机票订购void search();/机票查找函数void returnticket();/退票函数struct airline *linecreat();/为航班创立链表struct passenger *passengercreat();/为乘客信息创立链表void saveline(struct airline *pp);/保存信息至文件当中void savepassenger(struct passenger *pp);/保存信息至文件当中void main()int i,x; while(1)/采用while循环以便返回 printf( t * n t 欢迎进入南航公司机票销售系统 n t * n/输出主界面 t n t n t n t & 机票信息查询请输入 1 n t & 购买机票请输入 2 n t & 查询机票信息请输入 3 n t & 如需退票请输入 4 n t * n t welcome to NANHANG CHINA n t * n t 请选择 bb);scanf(%d,&i);/选择需要进行的服务类型 system(cls);/清屏函数 switch(i)/用switch函数进行选择 case 1: insult(); printf(请记住您要乘坐的航班号以便购票,按回车回到主界面继续n); getch(); system(cls); break; case 2: book(); printf(按回车回到主界面); getch(); system(cls); break; case 3: search(); printf(按回车回到主界面); getch(); system(cls); break; case 4: returnticket(); printf(按回车回到主界面); getch(); system(cls); break; printf(退出请输入0,继续请输入1n);/退出程序 scanf(%d,&x); if(x=0)break; void insult() int i,n;struct airline *pp ; char str120,str220; pp=linecreat(); n=0;puts(按照起飞的时间查询请选择1nn);/输出选项 puts(按照航班号查询请选择2nn); puts(按照目的地查询请输入3nn); scanf(%d,&i);if(i=1) switch(i) case 1:/按照所选时间段进行查询 printf(请输入您的乘机时间段:输入格式如01:00-02:00n); scanf(%s,str1);printf(到);scanf(%s,str2); while(pp-next!=NULL)/利用strcmp函数查询符合时间段的航班并输出 if(strcmp(pp-time,str1)=0)&(strcmp(pp-time,str2)linenum,pp-des,pp-start,pp-time,pp-last,pp-sold,pp-price); n+; pp=pp-next; if(n=0)printf(sorry not foundn); break; case 2:/按照航班号进行查询 printf(请输入航班号n); scanf(%s,str1); while(pp-next!=NULL)/利用strcmp函数查询符合时间段的航班并输出 if(strcmp(pp-linenum,str1)=0) printf(航班号 目的地 始发地 起飞时间 剩余票数 已售票数 票价n ); printf(%s%9s%9s%9s%9d%9d%9dn,pp-linenum,pp-des,pp-start,pp-time,pp-last,pp-sold,pp-price); n+;pp=pp-next; if(n=0)printf(sorry not foundn); break; case 3:/按照目的地查询 printf(请输入目的地n); scanf(%s,str1); while(pp-next!=NULL)/利用strcmp函数查询符合时间段的航班并输出 if(strcmp(pp-des,str1)=0) printf(航班号 目的地 始发地 起飞时间 剩余票数 已售票数 票价n ); printf(%s%9s%9s%9s%9d%9d%9dn,pp-linenum,pp-des,pp-start,pp-time,pp-last,pp-sold,pp-price); n+; pp=pp-next; if(n=0)printf(sorry not foundn);/是否查找到,定义一个int型的数来判断 break; else printf(对不起您的输入有误,按回车回到主界面); getch(); return; void book() struct airline *head1,*p1,*p2; struct passenger *head2,*q1,*q2; int j,flag; printf(您确定要买票吗?确定请输入1,退出请输入0 n);/确定进入买票系统 scanf(%d,&j); head1=p2=p1=linecreat(); head2=q2=passengercreat(); j=1; flag=0; if(j!=0) while(p2-next!=NULL)/利用strcmp函数查询符合时间段的航班并输出 printf(%10s%10s%10s%10s%7d%7d%7dn,p2-linenum,p2-des,p2-start,p2-time,p2-last,p2-sold,p2-price);/输出航班信息方便 p2=p2-next; while(j!=0) printf(请依次填写以下信息:n); printf(航班号:); scanf(%s,q1-linenum);/输入乘客信息 printf(姓名:); scanf(%s,q1-name); printf(性别:); scanf(%s,q1-gender); while(p1!=NULL) if(strcmp(q1-linenum,p1-linenum)=0) strcpy(q1-time,p1-time); strcpy(q1-des,p1-des);/将航班中的某些信息放到乘客信息中 q1-price=p1-price; p1-sold+=1; p1-last-=1; flag=flag+1; q1-ticketnum=N+1;/静态变量加一 saveline(head1);/保存信息至文本信息中while(q2-next!=NULL) q2=q2-next;/调整q2至文章末尾 q2-next=q1; q1-next=NULL; N=N+1; savepassenger(head2);/保存文件 break; p1=p1-next; if(flag=0) printf(对不起您输入的航班有误,重新输入请输入1,退出售票请输入0:n); scanf(%d,&j); else printf(购票成功n); N=N+1; printf(退出售票请输入0,继续请输入1n); scanf(%d,&j); else printf(欢迎使用本系统); return; void search() int i,j,n; char string120; struct passenger *pp; n=0; pp=passengercreat(); printf(请选择查询方式:n); printf(按照姓名查询请输入1n);printf(按照机票信息查询请输入2n);/选择查询方式 scanf(%d,&i);switch(i)case 1:printf(请输入您的姓名:);scanf(%s,string1);while(pp!=NULL ) ; if(strcmp(pp-name,string1)=0)/寻找与之相符的量 printf(航班号t机票号t时间t目的地t姓名tn); printf(%s%7d%7s%9s%9sn,pp-linenum,pp-ticketnum,pp-time,pp-des,pp-name); n=n+1; break; pp=pp-next;if(n=0)printf(对不起,未找到符合条件的信息);break;case 2:printf(请输入您的机票编号:);scanf(%d,&j); while(pp!=NULL) if(j-pp-ticketnum)=0)/寻找机票号一致的乘客 printf(航班号t机票号t时间t目的地t姓名tn); printf(%7s%7d%7s%9s%9sn,pp-linenum,pp-ticketnum,pp-time,pp-des,pp-name);/输出 n=n+1; break; pp=pp-next; if(n=0)printf(对不起,未找到符合条件的信息); break; return; void returnticket() char string120;int i,flag;struct passenger *p1,*p2,*head1;struct airline *q1,*head2;flag=0;printf(请输入您的姓名:); scanf(%s,string1); printf(请输入您的机票编号:); scanf(%d,&i);head1=p1=passengercreat();while(p1!=NULL)if(strcmp(p1-name,string1)=0)&(p1-ticketnum-i)=0)/二者都要符合才能够确定 p2-next=p1-next;flag=1;/链表删除 Break; p2=p1; p1=p1-next; if(flag=1) head2=q1=linecreat(); while(q1!=NULL) if(strcmp(q1-linenum,p1-linenum)=0) q1-last+=1;/修改航班文件中的信息 q1-sold-=1; printf(删除成功n);savepassenger(head1);/保存至文件当中saveline(head2); break; q1=q1-next; else printf(对不起,未找到该乘客); return; struct airline *linecreat() int i; struct airline *head,*p1,*p2; FILE *fp;p1=p2=(struct airline *)malloc(sizeof(struct airline ); if(fp=fopen(南方航空公司航班信息.txt,rt+)=NULL)/内存中分配文件的空间 printf(不能打开文件,按任意键退出!); getch(); exit(1); fscanf(fp,%s%s%s%s%d%d%dn,p1-linenum,p1-des,p1-start,p1-time,&p1-last,&p1-sold,&p1-price);/先读取一次 head=p1; for(i=0;inext=p1; p2=p1; p1=(struct airline *)malloc(sizeof(struct airline); fscanf(fp,%s%s%s%s%d%d%dn,p1-linenum,p1-des,p1-start,p1-time,&p1-last,&p1-sold,&p1-price);/将航班的信息读入到内存当中p2-next=p1; p1-next=NULL; return(head);/free(p1); /free(p2);struct passenger *passengercreat()int i; struct passenger *head,*p1,*p2; FILE *fp;p1=p2=(struct passenger *)malloc(sizeof(struct passenger ); if(fp=fopen(乘客信息.txt,rt+)=NULL)/内存中分配文件的空间 printf(不能打开文件,按任意键退出!); getch(); exit

温馨提示

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

最新文档

评论

0/150

提交评论