ImageVerifierCode 换一换
格式:DOCX , 页数:39 ,大小:224.03KB ,
资源ID:14520884      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-14520884.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言程序设计课程设计飞机订票系统的设计.docx)为本站会员(b****5)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

C语言程序设计课程设计飞机订票系统的设计.docx

1、C语言程序设计课程设计飞机订票系统的设计一、需求分析11 系统功能需求1.1.1 程序的功能1系统管理员功能:1)录入和修改航班和机票的信息:输入航班号,输入起飞港,途径港,到达港,录入起飞时间,到达时间,飞行总共用时,可随时修改航班信息2)输出航班的信息:输入航班号便可输出之前输入的航班信息2. 客户需要的功能:1)查找航班信息:a.显示空座的数量b.显示空座的信息c.显示已订座的信息d.起飞时间 2)订票预约:查询航班信息后,提前订票预约需要的飞机票,3)删除定票预约4)退出系统1.1.2 主要模块流程图1.1.3 功能描述功能序号功能名称功能说明3查询查询空座信息,包括空座数量。查询已定

2、座的信息,包括起飞时间。4订票预约填写个人信息:包括乘客姓名、乘客所在单位,乘客身份证号填写订单信息:包括起飞城市、起飞时间、到达城市、路径城市。5删除订票 由于各种原因,客户不再需要订购的飞机票,客户可以删除之前定的飞机票,只需依次输入航班号,座位号,确定删除即可。1.1.4各功能模块的功能描述(1)显示菜单函数:FLIGHT fltlist5; PASSENGER psglist512; ReadFlight(fltlist); PASSENGER* k;k=(PASSENGER*) psglist; ReadPassenger(k); 用户可以根据菜单提示,选择相关菜单。(2)查找函数:

3、 查询航班号函数chaxunhangban(FLIGHT fltlist),查询已定座信息函数chaxunyidingxinxi(PASSENGER* psglist), 查空位信息函数chakongweixinxi(FLIGHT fltlist,PASSENGER* psglist),查空位个数函数chakongweigeshu(FLIGHT fltlist,PASSENGER* psglist)。本算法实现查找航班信息功能。用户可以根据航班号或起飞抵达城市查找航班信息。如果没有该航班信息,将提示相关信息。(3)主控函数: void main(void)从数据文件中读入航班信息,用户选择某菜

4、单,实现调用该菜单功能的函数。(4)订票函数:void Book(FLIGHT fltlist,PASSENGER* psglist)本算法实现订票功能。用户输入订票信息后,该算法就会根据用户输入信息查找航班信息,找到就显示订票成功相关信息,且该航班票量减去用户订的票数。如没找到,则提供相关的其他航班信息。该算法功能可以循环执行。(5)退票函数: void tuipiao(FLIGHT fltlist,PASSENGER* psglist) 本算法实现退票功能。用户可以根据自己的航班型号退票。 当用户输入航班型号退票,该算法会根据用户的航班型号查找储存在以head为头节点链表中的客户信息,找到

5、删除该客户信息节点,并输出退票成功相关信息。否则提示没有该客户信息。 12 输入输出的要求1.2.1 输入的要求 输入必须按以下五个步骤进行: 1)输入航班号,航班号为0到4的数;2) 输入起飞港,比如beijing;3) 输入途径港,比如tianjing;4) 输入到达港,比如shanghai;5) 输入起飞时间,比如12:00;输入到达时间,比如14:00,输入总共用时,比如02:001.2.2 输出的要求 1)输入航班号,航班号为0到4的数;2)输出结果为之前输入的数据;二、概要设计2.1引言2.1.1编写目的在本机票预定系统项目的前一阶段,也就是需求分析阶段中,已经将系统用户对本系统的

6、做了详细的阐述,这些用户需求已经在上一阶段中对航空公司、各旅行社为及机场的实地调研中获得,并在需求规格说明书中得到详尽得叙述及阐明。本阶段已在系统的需求分析基础上,对机票预定系统做概要设计。主要解决了实现该系统需求的程序模块设计问题。包括如何把系统划分成若干个模块、决定各个模块之间的借口、模块之间传递的信息。以及数据结构、模块结构设计等。在以下的概要设计报告中将对在本阶段中对系统所做的所有概要设计进行详细的说明。在下一阶段的详细设计中,程序设计员可参考此设计报告,在概要设计对机票预订系统所做的模块结构设计的基础上,对系统进行详细设计,在以后的软件测试以及软件维护阶段也可参考次说明书,以便于了解

7、在概要设计过程中所完成的模块设计结构,或在修改时找出本阶段设计的不足或错误。 2.2 模块 3.2.1 模块组成本程序由六大模块组成,分别是主函数模块,查找模块,输入信息模块,输出信息模块,订票模块,退票模块。3.2.2 模块功能主函数模块:本模块的主要功能是调用各子功能模块,实现系统功能。查找模块功能:查找模块实现信息的查找,包括显示空座的数量,订座的信息,航班起飞的时间等信息。输入输出模块的功能:实现数据信息的录入与输出。订票模块功能块实现用户订票的功能。退票模块功能:实现用户的退票要求。3.2.3模块的调用关系 (见4.3函数的调用关系)2.3任务概述2.3.1 目标 实现飞机票的预定与

8、退订等目标。2.3.2 运行环境 计算机配置均在Pentium 133级别以上,客户程序应能够在Pentium级别以上,Windows 98 以上环境下运行。2.3.3 条件与限制 由于此系统仅仅是一个小的课程设计,尚未配给漂亮的界面,技术上也有限制。2.4数据结构设计 typedef struct _flight int m_fltno; struct DATE int m_year; int m_month; int m_day; m_Date; struct TIME int m_hour; int m_min; m_start; char m_szTo30; char m_szPass

9、30; int m_seatno; bool you_wu; char m_szName20; char m_szNumber19; FLIGHT;三、详细设计31 数据类型根据设计要求,我们知道设计中所以用到的数据记录有航班信息和客户信息,因此要定义相关的数据类型:航班号起飞时间目的地座次号座次订出与否的标记订票者姓名订票者身份证号码intcharcharintCharcharchar32 模块分析(1)主函数模块 本模块的主要功能是调用各子功能模块,实现系统功能。开头定义结构体,相关头文件及宏定义。通过switch语句进入界面函数,进而调用各功能函数。(2)查找模块查询模块由四个函数构成,

10、分别为:查询航班号函数chaxunhangban(FLIGHT fltlist),查询已定座信息函数chaxunyidingxinxi(PASSENGER* psglist), 查空位信息函数chakongweixinxi(FLIGHT fltlist,PASSENGER* psglist),查空位个数函数chakongweigeshu(FLIGHT fltlist,PASSENGER* psglist),查找模块各函数通过循环语句for语句while语句等主要语句和结构体成员psg.m_fltno,定义指针p等来实现。(3)输入输出模块 输入模块由函数shuruFlight(FLIGHT f

11、ltlist)实现,输出模块主要由函数shuchuFlight(FLIGHT fltlist)实现。(4)订票模块 订票模块由函数Book(FLIGHT fltlist,PASSENGER* psglist)实现,定义strcpy,getchar函数通过while循环语句和结构体成员psg.m_fltno,psg.m_seatno,m_Date,psg.m_Date完成指定任务。(5)退票模块 退票模块由函数tuipiao(FLIGHT fltlist,PASSENGER* psglist)实现,定义指针PASSENGER *p,通过结构体,循环语句完成指定任务。3、函数的调用关系函数的调用关

12、系图:四、调试分析以及设计体会1、测试数据我们按要求输入整形数1,出现“请输入航班号0到5”的提示见下图: 然后按要求输入0,出现提示:请输入起飞时间,比如12:00 诸如此类按要求输入所测试的数据均正确,下面我们输入几组错误: 比如定票为0号票,在退票时输入1出现提示:座位是空的 再如输入航班信息,要求输入0到5的数,输入6结果如下: 数据测试无误。2、调试分析4.2.1 清屏问题 如开始设计的程序每执行一个模块,输出结果都会留在界面上,为此加入函数system(cls)后便得到了应有的清屏。4.2.2 error C2143: syntax error : missing ; before

13、 这个错误虽然有点低级,但却也是比较容易犯的一个错误,也不容忽视。4.2.3 error C2440: = : cannot convert from struct _iobuf * to int4.2.4 error C2065: fp : undeclared identifier没有定义的使用系统不认识那未定义的字符。3、心得体会之前没有做过程设计,所以在设计的过程中遇到很大的困难。大一第二学期才开始学c语言,陈老师是位很负责的老师,教书育人很有一套,但我的编程基础还是很薄弱,于是我查阅了一些资料。比如在图书馆借的王敬栋主编的课程设计案例精编,我获益匪浅。此次编程设计中,我采用自顶向下的

14、设计方法。即需求分析总体设计编码实现测试维护。首先要了解做什么,有什么想法(总体设计),怎么做,做完后上机验证。确定了各功能函数后,在确定所需的数据,在定义数据类型。分模块的设计。与同学老师交流非常重要,可以说假如没有同学老师的帮助,我是很难完成这份课程设计任务的。可见众人拾柴火焰高是没错的,团结就是力量啊。互帮互助,共同进步。这里尤其要感谢做同一个课题的同学何鹏,我深刻的体会到见贤思齐是多么重要的,深刻体会到基础是多么重要。编程时遇到错误是在所难免的,错误解决的过程是枯燥的。必须根据系统提示的错误返回到原程序中,分析查找错误,进行订正,再运行调试,直到解决。问题得到解决的那一刻我是兴奋的,是

15、自豪的,是对c语言编程如此的感兴趣的。嘿,C语言还是挺有趣的。经过若干次与程序的“磨合”,我最终完成了设计。实现了题目的相关要求,也对设计整体过程有了更深一层的认识,受益良多。五、使用说明1)从主菜单中选择需要的业务,如输入1出现按要求输入0到4,如输入0,出现按要求输入便可。出现以下界面: 最后输入y或n表明是否还要继续修改。2)从主菜单中选择需要的业务,如输入2出现按要求输入0到4,如输入0,按要求输入,出现以下界面: 查询完毕,选择y或n表明是否还要继续查询航班信息。3)从主菜单中选择需要的业务,如输入3出现按要求输入1或2,如输入1,出现以下界面: 选择y或n,表明是否要继续寻找航班。

16、4)从提示中选择需要的业务,如上步中选择了y则步骤同3),如选择n则出现以下界面: 选择n则退出以上菜单,选择y则出现选择ab的提示,如选择a则为: 选择y将重复以上4)步骤,我们选择n,将出现4)步骤的第一个界面,选择n则退出服务菜单,我们选择y,出现以下界面: 选择y则重复以上步骤,我们选择n将退出服务菜单。5)从主菜单中选择需要的服务,如输入4出现按要求输入0到4,如输入0,出现以下界面: 选择n则将退出此服务,我们选择y,出现输入如:2010,07,02,出现 选择y则订票成功,选择n则不订票。6)从主菜单中选择需要的业务,如选择5,按要求输入出现以下界面: 选择y则退票成功,选择n则

17、不退票。7)从主菜单中选择6则退出此系统。六、附录1、参考书目1.谭浩强C程序设计(第三版).清华大学出版社,2009。2. 王敬栋课程设计案例精编中国水利水电出版社,20062、源程序清单(带注释)#include#include#include#define M 5#define N 12/以上是乘客数据结构。typedef struct _flight /* 航班数据 */ int m_fltno; /* 航班号 o*/ struct DATE /* 订票日期 */ int m_year; int m_month; int m_day; m_Date; struct TIME int m

18、_hour; int m_min; m_start;/* 起飞时间 o*/ char m_szTo30; /* 到达港 o*/ char m_szPass30; /* 途经港 o*/ int m_seatno; /* 座位号 o*/ bool you_wu;/*座次订出与否的标记o*/ char m_szName20; /* 姓名 */ char m_szNumber19; /* 身份证号,考虑到字母的情况,故使用字符串 */ FLIGHT;/以上是结构体。void ReadFlight(FLIGHT * fltlist) FILE *fp; if (fp = fopen(fltlist.da

19、t, rb) != NULL) fread(fltlist, sizeof(FLIGHT), M*N, fp); else FLIGHT* p; p=fltlist; int i,j; for(i=0;iM;i+) for(j=0;jm_fltno=i; p-m_seatno=j; p-you_wu=0; p+; fp = fopen(fltlist.dat, wb+); fwrite(fltlist, sizeof(FLIGHT), M*N, fp); fclose(fp);void shuruFlight(FLIGHT * fltlist )getchar(); FLIGHT * p; F

20、LIGHT fltlist1; FILE *fp; int j; char c=y; while (c = y | c = Y) printf(请输入航班号(0=航班号= M |i 0) printf(航班不存在,); printf(请重新输入:); scanf(%d, &i); printf(请输入起飞时间,比如(12:00):); scanf(%d:%d,&(fltlist1.m_start.m_hour),&(fltlist1.m_start.m_min);printf(请输入途经港,比如(tianjing):); scanf(%s,fltlist1.m_szPass);printf(请

21、输入到达港,比如(shanghai):); scanf(%s,fltlist1.m_szTo);p=fltlist; for(j=0;jm_start.m_hour=fltlist1.m_start.m_hour; (p+i*N+j)-m_start.m_min=fltlist1.m_start.m_min; strcpy(p+i*N+j)-m_szPass,fltlist1.m_szPass); strcpy(p+i*N+j)-m_szTo,fltlist1.m_szTo); if( fp=fopen(fltlist.dat, wb)=NULL)exit(0); fwrite(fltlist

22、, sizeof(FLIGHT), M*N, fp); fclose(fp);printf(修改成功,还要修改吗?(y/n); getchar(); scanf(%c,&c); /以上是输入航班函数。void shuchuFlight(FLIGHT * fltlist ) getchar(); FLIGHT * p; p=fltlist; char c=y; while (c = y | c = Y) printf(请输入航班号(0=航班号= M |i m_start.m_hour,(p+i*N)-m_start.m_min);printf(途经港:); printf(%sn,(p+i*N)-

23、m_szPass);printf(到达港:); printf(%sn,(p+i*N)-m_szTo);printf(查询完毕,还要继续查询吗?(y/n); getchar(); scanf(%c,&c); /以上是输入航班函数。void AddPassenger(FLIGHT * fltlist )FILE *fp; if (fp = fopen(fltlist.dat, wb) != NULL) fwrite(fltlist, sizeof(FLIGHT), M*N, fp); fclose(fp); else printf(打开文件失败!按任意键退出。); getchar(); exit(

24、0); void Book(FLIGHT * fltlist)char c=y; FLIGHT * p; p=fltlist; while (c = y | c = Y) int i; FLIGHT fltlist1; printf(请输入航班号:(0=航班号= M| fltlist1.m_fltno 0) printf(航班不存在,); printf(请重新输入:); scanf(%d, &fltlist1.m_fltno); for(i = 0; i m_fltno= fltlist1.m_fltno) printf(检测未订的座位.n请稍等.n); int j; i=(p+i*N)-m_

25、fltno; p=fltlist; int w=0; for(j=0;jyou_wu=0) printf(%dt,j); w+; if(w=0) printf(座位已满!请重新输入航班号:); goto loop; printf(n以上是座位号,要订票吗?(y/n); getchar(); scanf(%c,&c); while (c = y | c = Y) printf(n请输入订票日期:(yyyy,mm,dd);scanf(%d,%d,%d,&fltlist1.m_Date.m_year,&fltlist1.m_Date.m_month,&fltlist1.m_Date.m_day);

26、printf(请输入乘客姓名:) ; scanf(%s, fltlist1.m_szName); printf(请输入身份证号:); scanf(%s, fltlist1.m_szNumber); printf(n请输入订票座位号:(0=座位号%d),N); scanf(%d, &fltlist1.m_seatno); for(;) if(fltlist1.m_seatno=N) printf(没有这个座位号!请重新输入:); scanf(%d, &fltlist1.m_seatno); else if(p+N*(fltlist1.m_fltno)+fltlist1.m_seatno)-you_wu=1) printf(这个座位有人了!请重新输入:); scanf(%d, &fltlist1.m_seatno); else break; printf(确认订票吗?(y/n); getchar(); scanf(%c,&c); while (c = y | c = Y) strcpy(p+N*(fltlist1.m_fltno)+fltlist1.m_se

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2