




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计课程名称C语言课程设计题目名称航班信息管理系统学生学院 物理与光电工程学院专业班级电子科学与技术(4)班学 号学生姓名指导教师2015年10月23日目录一设计目的 . - 1 -二课程设计的内容 . - 1 -三课程设计的要求与数据. - 1 -四课程设计应完成的工作. - 2 -五总体设计 . - 2 -六详细设计 . - 2 -七调试分析 . - 8 -源程序及注释 . - 8 -调试与测试 . - 12 -算法调试过程中出现的问题及解决方法: - 12 -主要程序运行结果 . - 14 -八 总结 - 18 -九 参考文献 . - 18 -一 设计目的进一步加深、巩固所学专业课程
2、( C 语言程序设计)的基本理论知识, 理论联系实际,进一步培养自己综合分析问题和解决问题的能力。掌握运用 C 语言独立地编写、调试应用程序和进行其他相关设计的技能。二 课程设计的内容对航班信息(包括航班号、最大载客数、起飞地点、起飞时间、降落地点、 降落时间、单价)和乘客信息(包括航班号、身份证号码姓名、性别、出生年月、座位号)进行管理,包括航班信息与乘客信息的输 入、输出、查询、删除、统计、退出。假设现收集到了一个机场的所有的航班信 息,要求用 C 语言编写一个简单的航班信息管理系统,可进行录入、查询、修改 和浏览航班信息的功能;乘客提出航班号、起飞地点、起飞时间、降落地点、订 票数等订票
3、要求, 根据事先保存的航班数据决定乘客能否订票。 只有全部满足了 乘客的订票要求并且所订航班有足够的未订座位之后才能完成订票处理, 并且修 改该航班的未订座位数 (每个航班的未订座位数的初始值就是该航班的最大载客 数),否则,订票失败,并且给出不能订票的原因。三 课程设计的要求与数据1、对航班信息(包括航班号、最大载客数、起飞地点、起飞时间、降落地 点、降落时间、单价)和乘客信息(包括航班号、身份证号码、姓名、性别、出 生年月、座位号)进行管理,包括航班信息与乘客信息的输入、输出、查询、删 除、统计、退出;2、航班信息内容较多,要求设计的管理系统能够完成以下功能:(1) 、航班信息录入功能:航
4、班信息用文件保存,可以一次完成若干条记录 的输入;(2) 、航班信息浏览功能:完成全部航班记录的显示;(3) 、查询功能:完成按航班号或按目的地查找航班记录,并显示;(4) 、航班信息的修改:按航班号进行修改某个航班的信息;(5) 、航班信息的删除:按航班号进行删除某个航班的信息;(6) 、订票处理:按乘客的订票方式完成航班订票处理;(7) 、应提供一个界面来调节各个功能,调用界面和各个功能的操作界面应 尽可能清晰美观 !四 课程设计应完成的工作1、编写算法; 2、算法测试,并有具体的测试结果和结果分析;3、撰写课程设计报告,内容包括:(1) 封面扉页(2) 设计任务书(3) 目录(4) 总体
5、设计方案(包括流程图)(5) 使用说明及运行实例(包括界面)(6) 成员设计内容简介(7) 项目源代码(注意注释的使用)(8) 指导老师评语五 总体设计1、功能 1:航班信息的输入并对输入的内容进行错误检查;2、功能 2:航班信息的显示浏览;3、功能 3:航班信息的修改并对修改的内容进行错误检查;4、功能 4:航班信息的删除;5、功能 5:航班信息的查询;6、功能 6:乘客信息输入并对输入的内容进行错误检查;7、功能 7:订票处理检查是否还有空座位;8、退出系统。六 详细设计系统的整体框图如图 1 所示:/打开文件图1 整体框图1、打开存放着航班信息与乘客信息的文件:分别打开航班文件与乘客文件
6、,存 放在链表中,供后续函数调用;可用函数 void read_psg_data(void) 、void read_pla_data(void)来实现此操作。这是两个无参函数,用来读取存储在文件中的信息当到达文件尾时关闭文件 并退出函数,带回指向链表头的一个指针和指向链表尾的指针。算法:fopen()函数打开文件后读取一定长度的信息存到malloc()分配的内存地址空间,声明两个全局指针 pla_head和psg_head,每读取一组数据就将其 地址存放在plal节点中,并链接到之前列表的尾端。N-S流程图如图2所示(以读取航班信息为例):fp=fopen(文件)while(不到文件尾)mal
7、ocO 分配内存pla1是否成功一一一 、是分配1 内存 失败 返回 菜单read()读取一疋长度子节数据到plalplal 置为 NULL二pla head是否为_ 否为是pla_e nd-n ext = plal; pla e nd = plal;pla_head = plal; pla e nd = plal;pla end next 置为 NULL读取成功标志位置为0关闭文件图2打开文件读取数据流程图2、输入航班数据与乘客数据(以航班数据为例):输入信息包括航班号、最大 载客数、起飞地点等相关信息;用函数void add_pla_info(void),函数再调用int check_pl
8、a_num(PLA *pla)、void check_time(int *hour, int *min)、void check_stri ng(char n ame20)分别进行航班号、输入的时间、输入的地点等信息的正确性验证,从源头避免出错。算法:打开待保存输入信息的文件,在一个while循环里面分配内存并输入数据,对输入的数据进行正确性验证,如果出错则会提示重新输入,正确输入完 一个航班后将数据保存到链表尾端并将新的航班数据写入打开的文件中。N-S流程图如图3所示(以读取航班信息为例):fp=fopen(文件)while(继续输入)否、malloc()分配内存pla是否成功是是航班记录已存
9、在错后返回一一g一输入载客数是否数字且在正常范围是输入起飞时间输入航班号delete_pla_data(void)完成是删除操作否时间格式正确输入降落地点否地点格式正确输入降落时间I寸间格式正确输入单价日否重 新 输 入是pla_e nd-n ext = pla; pla_e nd = pla;pla_head = pla;pla_e nd = pla;保存新航班数据到文件是pla head 为空图3输入航班数据流程图3、显示浏览航班信息:显示信息包括航班号、最大载客数、起飞地点、起 飞时间、降落地点、降落时间、单价、剩余票数,调用了时间函数localtime()获取当前系统时间;用函数voi
10、d display_pla_i nfo(void)完成此操作。算法:把读取文件后产生的链表按照一定的格式输出到屏幕上。N-S流程图如图4所示:将链表头赋给航班结构体局部变量while(未到链表尾)prin tf(pla1); pla1 = pla1- n ext;图4显示航班信息流程图4、删除航班信息:删除一个航班的所有信息,调用函数void算法:显示所有航班信息,要求用户输入需删除的航班号,在while循环中遍历链表,找到数据则显示出来,再次要求用户确认删除,若删除,该数据的下 一条数据地址将会取代当前的数据地址,即从链表中删除了,调用 save_p lan fo()保存新的链表;若没有找到
11、航班则要求用户重新输入。N-S流程图如图5所示:输入航班号是到达链表尾否输入的航班号与pla1_num相同是找 不 到 航 班, 重 新 输 入pla2 = plal;输出该航班信息plal = plal- n ext;否确认删除是删除的航班是链表头否ahead = plal- n ext; pla2-n ext = plal- n ext;释放plal ;保存文件标志位置位;调用save_pla_info()保存新的链表;提示删除成功;返回菜单5、修改航班信息:修改一个航班的信息,调用 void modify_data(void) 实 现此操作。算法:显示所有航班信息,用户输入一个航班号,在
12、while循环中遍历链表, 找到要修改的数据则显示出来,再次要求用户确认修改,若修改,则开始输入信 息;若没有找到航班则返回菜单。这里用到了添加航班时的信息检查函数。N-S流程图如图6所示:输入航班号while(未到链表尾)否输入的航班号与 pla1 num相同一. 亠 是pla2 = pla1; pla1 = pla1- n ext;输出该航班信息否确认修改中是返回 菜单输入新的航班号、载客数、起飞时间、降落地点、降落 时间、单价,并检查每一项的格式是否符合要求 提示修改成功返回菜单提示未找到该航班并返回菜单图6修改航班信息流程图6、查询航班信息:查询信息时分为航班号查询与目的地查询,用户可
13、输入 航班号或目的地进行查询并订票,调用void search(void)函数,内部再调用void search_pla_ num (void)和 void search_dest in ati on(v oid)两个函数实现此操作。一一一算法:进入查询后显示另一个菜单要求用户选择相应的查询条件。按航班号 查询时,用户输入一个航班号,在while循环中遍历链表,找到要修改的数据则 显示出来,询问用户是否要订票,若订票则会进入订票函数buy_check();若不订票则返回菜单;若没有找到相应的航班信息则返回上一层菜单。N-S流程图如图7所示:显示菜单选择程序按航班号.一选择相应的操作按目的地输入
14、航班号输入目的地息seawhile(不到链表尾)while(不到链表尾)否航班号相同否目的地相同是pla2 = pla1;pla1 = pla1- n ext;rch_pla_num()显示航班信息是否、询问是否订票返执行订票流程回pla2 = pla1;r显示航班信pla1 = pla1- next;进入询冋是否订票1未找到相应的航班信息未找到相应的航班信息图7查询航班信息流程图7、订票处理:进入订票时,会调用 search_pla_num()函数完成操作。算法:调用display_pla_info() 输出所有航班信息,然后调用 search_pla_num()和buy_check()订票
15、并完成乘客身份信息的输入与格式检验。 N-S流程图如图8所示:display_pla_i nfo()显示所有航班信息提示用户输入相应的航班号while(未到链表尾)1否f.航班号相同.一-是11*ta_ Lpla2 = pla1;pla1 = pla1- n ext;显示信息是调用buy check()检查该航班已满人数 否提示 用户 选择 其他 航班调用buy_ticket()函数完成乘客信息的录入 (包括姓名、身份证号、性别等信息),并 对正确性进行检查,然后把信息存放到乘客 文件中。提示订票成功并返回提示未找到航班信息后返回菜单8、退出系统:用户在主菜单界面时按照提示即可退出系统,调用一
16、个exit() 函数来实现。七 调试分析源程序及注释/* 航班信息管理系统 */#include #include #include #include #include #include #define LEN1 sizeof(PSG)#define LEN sizeof(PLA)#define FORMAT %3d%7d%5d%7d:%2d%12s%8d:%2d%6s%8dn#define INFO pla_num, pla1-p_num, pla1-l_num, pla1-up_hour,pla1-down_hour, pla1-down_min, pla1-price, (pla1-l_
17、num - pla1-buy_num)typedef struct passengerint p_num; n);getch();return;printf( 您是否需要预订该航班机票 (y / n) );fflush(stdin);find = getchar();if (y != find & Y != find) return;buy_ticket(pla1);printf(n信息输入完毕,您已成功预订 2d:%2(分飞往$的航班,您的座位号是:pla1-up_hour, pla1-up_m in, pla1-addr_dst, pla1-p_ num, +pla1-buy_num);b
18、flag = 1;, dst);getch();return;search_pla_num();/* 查询航班信息 */void search(void)char n = 1;while (n) system(cls);printf(t 查询航班信息 n); make_line(_, 40);printf(t1. 按航班号查询 n);printf(t2.按降落地点 n);printf(t0.返回主菜单 n);make_line(_, 40);printf(n 请选择菜单: );while (n) search_again:fflush(stdin);n = getchar();fflush(s
19、tdin);switch (n) case 1: system(cls); search_pla_num(); break;case 2: system(cls); search_destination(); break;case 0: return;default:printf( 错误!请重新输入 : ); goto search_again;break;/* 检查所要增加的航班记录是否存在 */int check_pla_num(PLA *pla)int p_num, i = 0;char ch = c;PLA *pla1, *pla2;while (c = ch) printf( 航班号
20、: ); fflush(stdin);while (scanf(%d, &p_num) != 1) fflush(stdin);printf(n 输入出错,请输入数字 : );pla1 = pla_head;pla2 = pla1;while (pla1) if (pla1-p_num = p_num) printf(n航班 d已存在,请重新确认!n, pla1-p_num);make_line(_, 30);printf(n键入“ C”继续添加信息,其余键返回:);fflush(stdin);scanf(%c, &ch);getchar();if (ch != c & ch != C) re
21、turn 1;system(cls);break;else pla2 = pla1;pla1 = pla1-next;ch = y;if (pla1 = NULL) pla-p_num = p_num; return 0;return 0;/* 检查价格 */void check_price(char price10)int i;while (scanf(%s, price) for (i = 0; i 9 | pricei p_num) printf(n 航班号 载客数 起飞时间 降落地点 降落时间 单 价 n);make_line(_, 70); printf(%4d%6d%7d:%2d%
22、12s%7d:%2d%7sn, pla1-p_num,pla1-up_hour, pla1-up_min, pla1-addr_dst, pla1-down_hour, pla1-down_min, pla1-price);makei ne(_, 70);printf(您确定要修改该航班吗(y / n);fflush(stdi n);mod_pla = getchar();if (y != mod_pla & Y != mod_pla)return;system(cls);m = check_pla_ nu m(pla1);查看航班信息 航班查询增添航班信息 修改航班信息 删除航班信息 退出|
23、n);prin tf(tt|2.|n);prin tf(tt|3.|n);prin tf(tt|4.|n);prin tf(tt|5.|n);prin tf(tt|6.|n);prin tf(tt|0.|n);nn);请选择您需要的操作(0-6):);prin tf(tt /*功能处理*/void man age()char n2 = 0, 0;while (1) in put_ag n:scan f(%s, n);IConfiguration:- Win32 DebugILinking.link : fataL error LHK116#: cannot open ueoug/tfor Mi
24、-ltLng 怜甘亍时出错”-testlldl4.exe - 1 errorts),也 uarnlng(s)、xe文件中。解决办法:关闭控制台再次链接即可ttfigurJtun: te$t1 1B1 - Iti谥 DAugt11t11tL1tL1 s rp r $ 5 ui LV- 111 LI, HI i! Ll- rcrcrtrtrcre 亠=一才L_i_=自- H.J导.:.-mJ.n-.:v g 肝疔 【n=72占吓亠序;lTip? 壽诽诽诽诽诽r c * 披 匕 N 耳 r4G1r8亠tn- 4扌.M 上lzru用 -V- +FVPT-XEl U-M I-&I L. U-l Li-I
25、l LXF-1- J. J. 谢剧m吊期泅 J n rila d JI ff c fv c c c- cCMflilini.:nin| WMi * : HCHfirtiblE Ih Fm struct pranr * t struct KB in C*1JJ;,t,: iiw岬jtiH* 叶暮-Fnn struct PSCti stmt pmssongM * :prrr QIK: r : pftDlarri inrnrifitr;errv Din: 41U1 or or:山血 q; Mn i*e:ernr RIH:requires *rriy r piitpr t,pe:mtr KIN:rea
26、uirpE jit可 赫gpptf5t1_JIH4.nij - 1 flnr(5), I Hring(sJ解决方法:把第793行的变量定义语句放在函数的第一条语句位置叡鶴常輕令;詡祝吨K*琳扎血.ft (.- 证耳旳h 吐鱼后杆需= -J1 土出1 Ji 1.2 JldJlZJ LjJffWABS/HUE号曲携.祈 d !屮)谆爭坤#wLlmM 屮财!irl| = 1 JfbllliyiA ;厂植 iH l?Wl A E i|Mfl4wWHd iiufldhi tj解决办法:这是出现段错误的问题,可能是数组越界了。用strncpy(name, check,20)替换 strcpy(name,
27、check)即可。tnn in 吐V:吨訥恤tlFiyiKititn tKtllh *Dttaj- CMfiliag.: kriuf WtW; = ; i的dti typM - frw、tn(t p曲呻r v tt struct KB * IMtcF) : mug GTO): :t胪 Fnn strut FSI * to strict: fmr QIN:号iUt tmr : lisiiq 紺* iintiFiir 于iru.U3M : errir凰衍辛:即【制 m : r解决方法:printf(继续订票请键入y,其他键返回上一层菜单:);里面的格式有误,改成printf(继续订票请键入y,其他
28、键返回上一层菜单:tMIJUUIiX1b)HPiur, I Ipfl 哪幵mt h 处Ed l|pr, w / B)ut Hfri : ieFi 沖trjiid us fUKt1 mri uift / : in *尙如iwtr tNN.衣 p 1加,扌IHt 曹严k Ii-rarf tipi, KtB)ta_ui t 1HL uperini n葩 stmcf 聲pe- useLHTtKti7iHiimi s wrnijpi| cwfe M ctwH : di*rrl tyM- Hr 申I T解 inivitr nnff血皿壮密谓吐直庸刁曹门舸则削轲商拙匚”诃 吐柑尢 * r诚咛riW绰鬥 佔m FrwR* bv ilnct憎1l.s(3?7) 樹“啊 C113J - ! Lmd呻tl.血 邙桦-窃m W* FK * t*f沆泸 3cde33JZ34苗15913s4A丽汀2n a1S9星示宣毕.谖任意琏咀出土氐字W15. .sXrCOtbug1fstl_1014,e图7-3查看航班信息界面4、选择3查询航班(如图7-4)图7
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 心脑血管血栓健康课件
- 竹石说课课件模板教学
- 出口运输协议书模板范本
- 抽水设施转让协议书范本
- 理性离婚协议书范本
- 新增耕地管护协议书范本
- 公司售房协议书模板范本
- 窗花课件教学课件
- 2025年TI粉末多孔过滤器项目发展计划
- 2025年医用制氧机(系统)项目发展计划
- 道路保洁安全培训
- 整形医院年度财务预算计划
- 2023-2024学年高中信息技术必修一沪科版(2019)第二单元项目三《 调查中学生移动学习现状-经历数据处理的一般过程》教学设计
- 《颅底骨折的护理》课件
- 2025机关事业单位工人招聘《机动车驾驶员》技师 考试题库与参考答案
- 企业战略咨询服务简单合同
- 古法拓印(非遗课程)
- 《经口鼻吸痰技术》课件
- 矿区第三方管理制度内容
- 中国心力衰竭诊断和治疗指南
- 2025四川成都环境投资集团限公司应届毕业生招聘50人管理单位笔试遴选500模拟题附带答案详解
评论
0/150
提交评论