数据结构课程设计-基于C语言的航空订票系统的设计与实现.doc_第1页
数据结构课程设计-基于C语言的航空订票系统的设计与实现.doc_第2页
数据结构课程设计-基于C语言的航空订票系统的设计与实现.doc_第3页
数据结构课程设计-基于C语言的航空订票系统的设计与实现.doc_第4页
数据结构课程设计-基于C语言的航空订票系统的设计与实现.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

学号10212811135武汉理工大学华夏学院课 程 设 计课程名称 数据结构题 目基于c语言的航空订票系统的设计与实现 -订票模块专 业 软件工程 班 级 软件1111班 姓 名 . 成 绩 指导教师 黄启荃 2012 年6月18日至2012年6月21日课程设计任务书设计题目:基于c语言的航空订票系统的设计与实现-订票模块设计目的1. 学会分析研究数据对象的特性;2. 学会数据的组织方法;3. 选择合适的数据的逻辑结构和存储结构以及相应操作,把现实世界中的问题转换为计算机内部的表示和处理; 4. 提高学生的程序设计能力、 提高算法设计质量与程序设计素质 ; 设计任务 (在规定的时间内完成下列任务) 本项目旨在通过一个简化的航空订票系统项目,使学生在完成对c程序设计语言和基本数据结构与算法课程的学习后,综合运用所学到的语法和算法知识,构建一个接近实际应用场景的软件系统,以达到复习和巩固前期课程内容并为后续课程奠定基础的目的。 本系统要求实现订票功能模块,订票功能模块通过航班号普通用户可以在输入自己姓名和身份证号后,完成订票操作。(订票情况可以存在一个数据文件中,结构自己设定)如果该航班已经无票,可以提供相关可选择航班; 具体要完成的任务是: a. 编制完成上述问题的c语言程序、进行程序调试并能得出正确的运行结果。 b. 写出规范的课程设计说明书;时间安排 (第19周6.18至6.25)第一天 布置课程设计任务,讲授vc安装,程序结构、数组、函数、文件;第二天 查阅资料,讲授排序,查询算法实现;了解航空售票管理系统的需求; 第三天 讲授快速排序、最短路径问题、哈希查找的算法实现,准备程序第四天 完成订票模块的设计与实现,上机调试程序,教师验收; 第五天 提交课程设计报告,下午4点前提交课程设计报告及文档至综合楼712。具体要求课程设计报告按统一通用格式书写,具体内容包括: 设计任务与要求 总体方案与说明 软件主要模块的流程图 源程序清单与注释 问题分析与解决方案 小结与体会附录: 源程序(必须有简单注释) 使用说明 参考资料指 导 教 师 签 名: 2012 年 6月 15日教研室主任(或责任教师)签名: 2012 年 6月 16日数据结构课程设计报告 1.设计任务与要求1.1设计任务全面熟悉、掌握c语言和数据结构基本知识。掌握c程序设计中的一系列问题,把c语言与数据结构和实际结合起来,增强对不同问题的一些处理。掌握分析结果的若干有效方法,进一步提高上机动手能力这次设计任务是通过一个简化的航空订票系统项目,使学生在完成对c程序设计语言和基本数据结构与算法课程的学习后,综合运用所学到的语法和算法知识,构建一个接近实际应用场景的软件系统,以达到复习和巩固前期课程内容并为后续课程奠定基础的目的。1.2设计要求这设计要求实现订票功能模块,订票功能模块通过航班号普通用户可以在输入自己姓名和身份证号后,完成订票操作。(订票情况可以存在一个数据文件中,结构自己设定)如果该航班已经无票,可以提供相关可选择航班。编制完c语言程序后进行程序调试并能得出正确的运行结果且写出规范的课程设计明书。2.总体方案填写具体内容 在这次课设中,我们需要运用到很多函数,包括文件的打开,结构体的运用,函数与函数之间的互相调用,并且,还涉及到基本的输入输出,另外,还涉及到的一个显示界面问题,这是就需要运用printf这个标准输出函数,为我们的乘客设计一个选择界面和提示,在这个整体中,大多数的函数都是我们用户自定义的函数,所以,在运用时需要先定义后使用。我们总体的设计方案(仅仅对于订票系统而言)是当用户输入航班号订票,当订票成功时,则将该用户的信息存储到原来的订票记录中,并将该航班的剩余票数时,系统会自动检查此航班,如果存在此航班,则再次检查该航班是否还有票, 如果没有该航班,则显示一个提示信息“本航班还未开通,请选择其他航班”, 如果有票,则输入身份证号和姓名,并把此次订票的记录记录在一个文本文件(即pass.dat)里,如果没有票了,则显示 “没票了,是否需要其他航班(y/n)”当点击“y”时,继续上述操作,直到结束减一即可,这样就完成了订票了。3.详细设计撰写具体内容(详细设计包括主要模块的流程图)3.1 其实,对于程序的主要设计,在方案中已经做了具体说明了,这里只需对做一个简单的陈述。 (1)输入航班号 (2)判断航班号是否存在,并做相应操作 (3)判断是否还有剩票,并作相应的操作 (4) 输入身份证号和姓名 (5)记录用户的订票信息 3.1.6退出订票系统 3.2部分程序流程图如图1所示开始1!=0航班查询机票查询订票退票管理员操作a d c b aplane.m_left=0plane.m_planeid=0 id=0请输入航班号 1!=0输入(n-订票-)int id=0;char c airplane plane=0passenger pass=0航班查询的操作机票查询的操作退票系统的操作 退出 5管理员操作 0 4 3 2 1 乘客的输入选择 d c b无票,是否订其他航班(y/n)(y/n)plane=plane_check_id(id,0)航班不存在c!=y& c!=y请输入您的身份证号码 请输入您的姓名输出用户的姓名,身份证号,航班号,出发地,目的地和出发时间是否确定(y/n) e输出文件出错输出姓名,身份证号和航班号fd=null打开文件并par pssengeass=0pass.m_planeid=plane.m_planeid输出乘客的票号c=y|c=y e1!=0以读的方式打开问件输出乘客的姓名,身份证号,航班号和票号关闭文件没有找到相应的记录图1航空订票系统订票模块流程图4.源程序清单与注释 /*/ #include* /订票系统:航班和用户信息 * #ifndef _infor_h #define _infor_h /机票信息 typedef struct int m_planeid;/航班号 char m_from10;/出发城市 char m_to10;/到达城市 char m_date10;/出发日期 int m_left;/剩余票数 int m_capacity;/容量 float m_price;/价格 int m_rebate;/打折 airplane; /用户信息 typedef struct char m_id20;/身份证号 char m_name20;/姓名 int m_planeid;/航班号 char m_ticketnum15;/票号 int m_isflog;/0确认订票,1取消订票 passenger; #endif/_infor_h int main() menu(); void menu()int c;while(1)printf(n-menu-n);printf(t1航班查询n);printf(t2机票查询n);printf(t3订票n);printf(t4退票n);printf(t0退出n);printf(-n);printf(t5管理员操作n);printf(-n);printf(请输入:);scanf( %d,&c);switch(c)case 1:plane_check();break;case 2:user_check();break;case 3:book_ticket();break;case 4:return_ticket();break;case 5: char name20=0;char passwd20=0;printf(n 请输入管理员用户名和密码:n);printf(测试:admin 1234);scanf( %s %s,name,passwd);if(strcmp(name,admin)=0&strcmp(passwd,passwd)=0)elseprintf(没有权限!n);break;case 0:return ;void book_ticket()/订票系统int id=0;char c;airplane plane=0;passenger pass=0;printf(n-订票-n);while(1)printf(请输入航班号:(0退出订票)n);scanf( %d,&id);if(0=id) break;plane=plane_check_id(id,0);if(plane.m_planeid=0)printf(航班不存在n);continue;if(plane.m_left=0)printf(无票,是否定其它航班(y/n)n);scanf( %c,&c);if(c!=y&c!=y)break;else continue;printf(请输入你的身份证号n);scanf( %s,pass.m_id);printf(请输入你的姓名:n);scanf( %s,pass.m_name);showticket(&plane,&pass);printf(是否确定(y/n)n);scanf( %c,&c);if(c=y|c=y)if(c=y|c=y)ticket(pass.m_ticketnum);printf(%sn,pass.m_ticketnum);pass.m_planeid=plane.m_planeid;showalluser();break;printf(-订票结束-n);void showalluser()/显示所有用户int r=0;file* fd=fopen(userdat,r);passenger pass=0;if(null=fd)printf(%s open error!n,userdat);return ;printf(nuser:n);printf(|%10s|%20s|planeid|%20sn,name,id,ticketnum);while(1)r=fread(&pass,sizeof(pass),1,fd);if(r=0)break;printf(|%10s|%20s|%7d|%20sn,pass.m_name,pass.m_id,pass.m_planeid,pass.m_ticketnum); break;fclose(fd);5.问题分析与解决方案首先,我当时遇到的第一个问题就是如何在“窗体”上显示乘客的选择和一些提示信息,然而,我遇到的第二个问题就是不知道如何存储乘客信息和如何打印出航班信息,作为航班的订票系统来说,很大一部分内容就是保存乘客订票成功后的信息,对于这两个问题,后来在老师的讲解下,我搞懂了,对于如何在“窗体”上显示一些信息,解决方案是用printf这个标准函数在“窗体”上输出即可,而对于第二个问题,我们则用到了文件的打开和存储(因为我在学c的时候老师基本没讲,所以不知道怎么做了),打开用到了fopen函数,而存储则用到了fread和fwrite等用于存储的函数,在编程时遇到了一个难点就是函数的调用,因为这里面涉及到很多自定义函数的定义和声明,所以,运用起来很不熟,后来这个问题在老师的带领下也得到了很好的解决。6.小结与体会 在这一周将尽四天的时间里,在我们指导老师肖老师的带领下我们进行航空订票系统的课程设计,在这期间我学到了很多。 我们还是大一的学生,只学过一些基础的知识,并未接触到我们的专业课。这次的编程主要是以c语言来编写,结合数据结构的知识。这几天老师和们一起复习了c的知识,让我们能够更加熟练的应用c中的运算符,结构体和数组等内容。同时老师也告诉我一些书本上的误区,如:整形数据在十六位机上是占两个字节,但是在三十二位机上是占四个字节的。我们现在用的基本上是三十二位的机子,所以书上所说的整形数据占两个字节是一个误区。 航空订票系统由航班录入,查询,订票和退票这四个模块组成。由于知识的有限,老师带领我们进行各个模块的编译。在这期间,老师不断地对程序和各个模块进行修改,编译,试调,运行,期间也遇到了很多的问题: (1)由于知识的有限,在编写是老师采用了相对简单的基础语言,代替了较为复杂的语句,是我们更加的容易理解,但同时也降低了运行的效率。 (2)在程序开始设计时,如果函数定义的数据类型出现了问题,对函数的定义不清楚,字符的不正确定义都会造成后期大量的纠错工作。 (3)有时忘记c的一些规范使用在试调过程中会出现一些不易发现的错误。定的可靠性和稳定性。 经过这次实习我对试调掌握得更加熟练,意识到程序语言的规范性以及我们在编程时要有严谨的态度。在编程序时适当的加一些注解,以便增加程序的可读性,是的自己在读时觉得更加简单容易。同时在这里我也非常感谢肖老师对我们的指导,她在给我们上课时非常的认真仔细,也很幽默风趣。在她的讲解下,我们理解了此次编程的基本不过这也提醒我们在编写程序是要认真仔细。 附录1使用说明1. 主界面: 2进入用户平台(1) 查询航班 (2)订票界面(3)返回主界面附录2 参考文献: 1 范策 等.算法与数据结构(c语言版)北京:机械工业出版社,2004. 2 张乃孝,数据结构与算法学习辅导及习题详解北京:电子工业出版社,2004. 3 唐策善,李龙澎,黄刘生.数据结构用c语言描述

温馨提示

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

评论

0/150

提交评论