基于C语言的航空订票系统的设计与实现.docx
- 文档编号:30634761
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:18
- 大小:195.75KB
基于C语言的航空订票系统的设计与实现.docx
《基于C语言的航空订票系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于C语言的航空订票系统的设计与实现.docx(18页珍藏版)》请在冰豆网上搜索。
基于C语言的航空订票系统的设计与实现
学号
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航空订票系统订票模块流程图
4.源程序清单与注释
/*******************************/
#include
/订票系统:
航班和用户信息
**********************************
#ifndef_INFOR_H
#define_INFOR_H
//机票信息
typedefstruct
{
intm_planeID;//航班号
charm_from[10];//出发城市
charm_to[10];//到达城市
charm_date[10];//出发日期
intm_left;//剩余票数
intm_capacity;//容量
floatm_price;//价格
intm_rebate;//打折
}AirPlane;
//用户信息
typedefstruct
{
charm_ID[20];//身份证号
charm_name[20];//姓名
intm_planeID;//航班号
charm_ticketnum[15];//票号
intm_isFlog;//0确认订票,1取消订票
}Passenger;
#endif//_INFOR_H
intmain()
{
menu();
}
voidmenu()
{
intc;
while
(1)
{
printf("\n--MENU-------------------\n");
printf("\t[1]航班查询\n");
printf("\t[2]机票查询\n");
printf("\t[3]订票\n");
printf("\t[4]退票\n");
printf("\t[0]退出\n");
printf("-------------------------\n");
printf("\t[5]管理员操作\n");
printf("-------------------------\n");
printf("请输入:
");
scanf("%d",&c);
switch(c)
{
case1:
plane_check();
break;
case2:
user_check();
break;
case3:
book_ticket();
break;
case4:
return_ticket();
break;
case5:
{
charname[20]={0};
charpasswd[20]={0};
printf("\n请输入管理员用户名和密码:
\n");
printf("测试:
admin1234");
scanf("%s%s",name,passwd);
if(strcmp(name,ADMIN)==0&&
strcmp(passwd,PASSWD)==0)
else
{
printf("没有权限\n");
}
}
break;
case0:
return;
}
}
}
voidbook_ticket()//订票系统
{
intid=0;
charc;
AirPlaneplane={0};
Passengerpass={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;
elsecontinue;
}
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("%s\n",pass.m_ticketnum);
pass.m_planeID=plane.m_planeID;
showAllUser();
}
break;
}
printf("--订票结束---------------------\n");
}
voidshowAllUser()//显示所有用户
{
intr=0;
FILE*fd=fopen(USERDAT,"r");
Passengerpass={0};
if(NULL==fd)
{
printf("%sOPENERROR!
\n",USERDAT);
return;
}
printf("\nUSER:
\n");
printf("|%10s|%20s|PlaneID|%20s\n","NAME","ID","TicketNum");
while
(1)
{
r=fread(&pass,sizeof(pass),1,fd);
if(r<=0)break;
printf("|%10s|%20s|%7d|%20s\n",
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语言描述.北京:
高等教育出版社,1995.
[4]唐浩强,著.C程序设计(第三版).北京:
清华大学出版社,2005.
[5]李春葆,数据结构教程[M].北京:
清华大学出版社,2005.1
设计过程中质疑(或答辩)记载:
1.为什么在主菜单用一个while的死循环?
答:
因为用户进入那个主菜单的界面时,没有人知道他反反复复多少次,所以用一个while
(1)的循环比较好,这样就不用考虑次数的问题。
2.为什么在讲解过程中int类型是占四个字节的?
答:
int类型在16位系统中占2个字节,在32位系统中占4个字节,现在我们一般用的32位系统。
指导教师评语:
签名:
2012年6月26日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 语言 航空 订票 系统 设计 实现