C语言数据结构课程设计航空订票实验报告含源代码.docx
- 文档编号:365889
- 上传时间:2022-10-09
- 格式:DOCX
- 页数:16
- 大小:231.47KB
C语言数据结构课程设计航空订票实验报告含源代码.docx
《C语言数据结构课程设计航空订票实验报告含源代码.docx》由会员分享,可在线阅读,更多相关《C语言数据结构课程设计航空订票实验报告含源代码.docx(16页珍藏版)》请在冰豆网上搜索。
C语言数据结构课程设计航空订票实验报告含源代码
数据结构课程设计实验报告
设计题目__________________________________________________________________
设计者__________________________________________________________________
指导老师__________________________________________________________________
班级___________________________________________________________________
学号____________________________________________________________________
一、设计要求
任务通过此系统可以实现如下功能:
1.录入航班信息:
可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据定)
2.查询航班:
可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,确定航班是否满仓);
3.订票:
(订票情况可以存在一个数据文件中,结构自己设定);
4.退票:
可退票,退票后修改相关数据文件;
5.修改航班信息
6.退出程序
客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:
当航班信息改变可以修改航班数据文件
要求:
根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;
二、设计概要
主界面
选择操作项目
1.录入航班信息
通过单链表这种数据结构,设置了剩余票数,航班号,出发地点,到达地点,起飞日期,出发时间,到达时间,票价。
2.订票
输入旅客的姓名,证件号,航班号,和订票张数。
程序中自动查询输入要定的航班号,如果没有则叫其重新输入,有则执行:
票数足够则订票成功,票数不充足叫其选择其它航班。
此也采用单链表的数据结构。
3.退票
要旅客输入订单号,查询航班号,没有此航班号则叫旅客核对。
有则执行:
1)查询旅客的航班
2)修改航班的剩余票数。
3)删除旅客订票信息。
4)退票成功,显示剩余票数。
4.查询
输入航班号,有与之匹配的航班则输出之,没有则说没有此航班
5.修改航班信息
查询到要修改的航班,然后直接进行修改
6.退出程序
三、设计中主要用到的结构体
typedefstructP//旅客机票信息
{
charname[10];//姓名
intordernum;//机票编号
charnum[10];//旅客证件号
structP*next;
intticketnum;//订票张数
intflightn;//航班号
}person;
typedefstructnode//航班信息
{intticket;//剩余票数
intflightnum;//航班号
charstartadd[20];//出发地点
chararriveadd[20];//到达地点
charstartdate[20];//出发日期
charstarttime[10];//出发时间
chararrivetime[10];//到达时间
intprice;//票价
structnode*next;
}LinkList;
四、主要函数
voiddingpiao(LinkList*&L,person*&p)//订票函数
voidwrite(LinkList*&L)//航班信息录入函数
voidshowF(LinkList*fn)//展示航班信息的函数
voidshowT(LinkList*L1,person*p1)//展示机票信息的函数
voidtuipiao(LinkList*&L,person*p)//退票函数
voidxiugai(LinkList*&L)//修改航班信息的函数
voidscr()//主界面函数
voidchaxun(LinkList*&L)//查询函数
intmain()//主函数,定义为int型
五、变量说明
1.在主函数中
LinkList*h表示航班节点
person*p表示机票信息节点
2.在其他函数中
一般也用r,p,f等表示链表指针
ijm等表示int变量
六、演示截图
1.航班信息录入
2.订票
3.退票
4.查询
5.修改航班信息
6.主界面、
七、实验心得体会
1.巩固和加深了对数据结果的理解,提高综合运用本课程所学知识的能力
2.培养了我选用参考书,查阅手册及及文献资料的能力。
培养独立思考,深入研究,分析问题,解决问题的能力。
3.通过设计编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。
4.通过可看成设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。
根据我在设计中遇到的问题,我将在以后的学习过程中注意一下几点:
1.认真上好专业课,多在实践中锻炼自己;
2.写程序的过程中要考虑周到,严密
3.在做设计的时候要有信心,有耐心,切勿浮躁。
4.认真学习课本知识,掌握课本中的知识点,并在此基础上学会灵活运用。
5.在课余时间多写程序,熟练掌握在调试程序的过程中所遇到的常见错误,以便能节省调试程序的时间。
附:
源代码
//#include"stdafx.h"
#include
#include
#include
#include
#defineM50
intj=1;//航班编号初始化
typedefstructP//旅客jipiao信息
{
charname[10];//姓名
intordernum;//机票编号
charnum[10];//旅客证件号
structP*next;
intticketnum;//订票张数
intflightn;//航班号
}person;
typedefstructnode//航班信息
{
intticket;//剩余票数
intflightnum;//航班号
charstartadd[20];//出发地点
chararriveadd[20];//到达地点
charstartdate[20];
charstarttime[10];//出发时间
chararrivetime[10];//到达时间
intprice;//票价
//floatdiscount=1;//折扣
structnode*next;
}LinkList;
voidshowF(LinkList*fn)
{
LinkList*f;
f=fn->next;
printf("剩余票数\t航班号\t出发地点\t到达地点\n");
while(f)
{
printf("%d\t%d\t%s\t%s\n",f->ticket,f->flightnum,f->startadd,f->arriveadd);
f=f->next;
}
f=fn->next;
printf("出发时间\t到达时间\t票价\n");
while(f)
{
printf("%s\t%s\t%d\n",f->startdate,f->starttime,f->price);
f=f->next;
}
}
voiddingpiao(LinkList*&L,person*&p)//头插法
{
person*r;
r=(person*)malloc(sizeof(person));
intn;//要定的航班号
chart;//重新订票选择项
LinkList*q=L->next;//航班
printf("输入乘客姓名(例如zhang)");
scanf("%s",&r->name);
printf("证件号:
");
scanf("%s",&r->num);
printf("输入订票航班号和订票张数");
scanf("%d,%d",&n,&r->ticketnum);
while(q!
=NULL&&q->flightnum!
=n)//查询是否有此航班
{
q=q->next;
}
if(q->flightnum==n&&q->ticket-r->ticketnum>=0)//有且票量充足
{
q->ticket-=r->ticketnum;
r->ordernum=j;
r->flightn=n;
printf("订票成功!
订票编号为%d,剩余票数:
%d\n",j,q->ticket);
j++;
}
else
{
if(q->flightnum==n&&q->ticket-r->ticketnum<0)//有,但无票
{
printf("该航班已经满,请选择其他航班\n");
}
else
{
printf("没有该航班号!
是否需要重新订票y?
n");//无此航班
scanf("%c",&t);
if(t=='y')
{
dingpiao(L,p);
}
}
}
r->next=p->next;
p->next=r;
}
voidshowT(LinkList*L1,person*p1)
{
person*p2;
p2=p1->next;
printf("机票编号\t旅客姓名\t旅客证件号\t旅客航班号\t旅客订票张数\n");
while(p2)
{
printf("%d\t%s\t%s\t%d\t%d\n",p2->ordernum,p2->name,p2->num,p2->flightn,p2->ticketnum);
p2=p2->next;
}
}
voidtuipiao(LinkList*&L,person*p)
{
intm;
LinkList*r=L->next;//查询航班,修改剩余票数时用
person*pf=p;//查询编号
printf("请输入订单号:
");
scanf("%d",&m);
person*w=p->next;//查询编号
while(w!
=NULL&&w->ordernum!
=m)//查询订单
{
w=w->next;
}
if(w==NULL)
{
printf("无该订单号,请再次核对!
");
}
else
{
while(r!
=NULL&&r->flightnum!
=w->flightn)//修改航班剩余票数
{
r=r->next;
}
if(!
r)
{
printf("error!
");
}
else
{
r->ticket=r->ticket+w->ticketnum;
while(pf->next!
=w&&pf->next!
=NULL)//删除节点
{
pf=pf
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 数据结构 课程设计 航空 订票 实验 报告 源代码