数据结构课程设计旅游管理系统Word文件下载.docx
- 文档编号:21563202
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:24
- 大小:188.75KB
数据结构课程设计旅游管理系统Word文件下载.docx
《数据结构课程设计旅游管理系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计旅游管理系统Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。
2、功能结构图———————————————30
3、程序流程图———————————————30
4、实现代码
1、程序代码————————————————32
5、程序调试以及运行结果
1、调试结果及截图—————————————43
6、报告总结
1、报告总结————————————————44
旅游信息管理系统
1、题目内容
1)数据结构
(1)、二叉排序树加单链表
(2)、二叉排序树
说明:
1、用二叉排序树表示旅游地点,用单链表表示游客。
2、用二叉排序树表示旅游地点和游客。
2)、功能
(1)、旅游地点的插入
(2)、游客报名
(3)、当某地的旅游人数少于三个人时,取消次旅游地,建议游客该选其他旅游点
(4)、当某旅游地旅游人数等于六个时,不允许在报名。
建议游客改选其它旅游地。
1、题目分析
读题可知,需完成两方面的编程以对旅游系统进行操作。
一方面是旅游公司管理人员,主要是旅游景点的添加与删除,对旅游人员的录入与删除,对旅游人数的统计,把游客所需信息打印等等;
第二方面是游客对于旅游地的选、改、删,以及个人信息的输入、确认等等。
2、功能简介
由以上分析可得:
本设计程序功能主要有:
✍、旅游公司管理人员对旅游人员和旅游地点的操作,用二叉排序树管理旅游地点。
主要有地点的变更,插入、删除、游客的信息存储及及时提醒等功能。
其中二叉树每一个结点包括旅游地点的区号(area_node)、名称(area)、该旅游地的游客人数(count)、以及一个指向游客信息结构的指针(list),还有二叉树结点的左孩子和右孩子指针(lchild,rchild)。
✍、游客可以登陆旅游公司界面进行报名、选择旅游地点和输入个人信息。
游客结构采用单链表,其中包括单链表的初始化、插入、删除、计数功能。
其中每一个单链表结点包括游客的编号(id)、姓名(name)、性别(sex)、和链接链表的指针(next)。
3、数据结构
用到的数据结构有:
单链表,排序二叉树,数组。
1、功能结构图
主菜单
程序员游客
2、模块分析
本程序包括三个模块:
主程序模块、二叉排序树模块、单链表模块,工作区选择模块。
如图:
二叉排序树模块
主程序模块
单链表模块
1、结构体定义
1)、链表结点结构体
typedefstructtourist{
stringname;
intid;
stringsex;
structtourist*next;
}Trist,*linklist;
左孩子区号地名游客数右孩子指向链表的指针
2)、二叉排序树结点结构体
typedefstructTree_Place{
intarea_code;
//旅游地区号
stringarea;
//旅游地名称
intcount;
//记录该旅游地报名游客人数
structTree_Place*lchild,*rchild;
Trist*list;
//指向游客所在单链表的指针
}Place,*TPlace;
2、程序流程图
主菜单(1、程序员,2、游客)
1
输入密码错误
正确(12345)2
程序管理员游客
输入
成功
退/输YN
N
Y
1、源程序c++实现代码
#include<
iostream>
stdlib.h>
string>
iomanip>
usingnamespacestd;
#defineMAX50
#defineSIZE12
charname[SIZE];
intid;
charsex[5];
structtourist*next;
intcode;
chararea[SIZE];
intcount;
structTree_Place*lchild,*rchild;
Trist*list;
voidSearch_T(TPlace&
tree,intco);
voidMainlist(TPlace&
tree);
voidTour_1(TPlace&
voidTour_2(TPlace&
voidDestory(TPlace&
voidInit_L(linklist&
head)
{
head=NULL;
}
voidInsert_L(TPlace&
tree,TPlace&
t,linklist&
linklisttr;
charc;
inti=1,co,id;
while(t->
count<
6&
&
i==1)
cout<
<
"
请输入你的身份证号:
endl;
cin>
>
id;
tr=(linklist)malloc(sizeof(Trist));
tr->
id=id;
cout<
输入姓名,性别:
cin>
name>
sex;
next=head;
head=tr;
t->
count++;
继续报名请按1,按0退出!
i;
if(t->
count>
=6)
{
cout<
此旅游地人数已满,按'
y'
选择其他旅游地,其他键退出!
c;
if(c=='
||c=='
Y'
){cout<
请重新输入区号"
co;
Search_T(tree,co);
}
elseTour_2(tree);
voidDelet_L(linklist&
linklistp,pro;
pro=head;
while(pro)
p=pro;
pro=p->
next;
free(p);
voidInsert_T(TPlace&
tree,TPlacep){//在二叉排序树中插入一个新结点
if(tree==NULL)tree=p;
elseif(p->
code<
tree->
code)Insert_T(tree->
lchild,p);
code>
rchild,p);
tree,intco)
TPlacep;
p=tree;
while(p&
p->
code!
=co)
if(p->
co)
p=p->
lchild;
elsep=p->
rchild;
if(!
p){cout<
此旅游地点还未存在!
system("
pause"
);
Tour_2(tree);
else{
if(p->
if(c=='
code;
Search_T(tree,code);
}elseTour_2(tree);
else{cout<
可以报名"
Insert_L(tree,p,p->
list);
TPlaceDelete_T(TPlace&
t,intco)
TPlacep,parent,s,q;
//parent指向要删除的节点的双亲,p指向要删除的节点
p=t;
parent=NULL;
while(p)
code==co)
break;
parent=p;
else
if(p==NULL)//不存在该树节点
returnt;
lchild==NULL)//无左子树,右子树可有可无
if(parent==NULL)
t=p->
if(parent->
lchild==p)
parent->
lchild=p->
rchild=p->
Delet_L(p->
else//有左子树,右子树可有可无
q=p;
s=q->
////
while(s->
rchild)
q=s;
s=s->
if(q==p)//其左孩子没有右子树
q->
lchild=s->
rchild=s->
code=s->
Delet_L(s->
free(s);
voidFun1(TPlace&
tree)
intn;
请输入插入地点个数:
n;
依次输入各个旅游地点的区号和地名:
for(inti=0;
i<
i++)
p=(TPlace)malloc(sizeof(Place));
请输入第"
i+1<
个地点:
area;
p->
rchild=NULL;
list=NULL;
count=0;
Insert_T(tree,p);
输入完成,输入y或者Y继续操作,其他键退出!
;
if(c=='
)Fun1(tree);
else{system("
cls"
Tour_1(tree);
voidFun2(TPlace&
tree,intx)
inttop=0;
TPlacep,s[MAX];
while(p||top>
0)
s[top++]=p;
if(top>
{p=s[--top];
setw(8)<
区号:
setw(10)<
地名:
area<
人数:
if(tree==NULL)cout<
还未录入旅游地!
请稍后查询!
按任意键返回上一级菜单!
if(x==1)Tour_1(tree);
if(x==2)Tour_2(tree);
voidFun3(TPlace&
intn1=0,n2=0;
intelem[MAX];
3&
x==1){
elem[n1]=p->
n1++;
x==2){
n2++;
if(x==1){cout<
一共有"
n1<
各旅游景点人数少于三个"
删除旅游地请输入D或者d,其他键返回菜单!
d'
D'
){for(inti=0;
n1;
i++)Delete_T(tree,elem[i]);
删除完成!
}system("
if(x==2){cout<
n2<
个旅游景点仍可报名"
voidFun4(TPlace&
intco,id;
TPlacep;
linklistl,pre;
输入要退出旅游地的区号和自己的身份证号:
co>
}
{l=p->
list;
pre=l;
while(l->
id!
=id)
pre=l;
l=l->
pre->
next=l->
free(l);
count--;
输入要报名的地点区号:
******************************************************"
endl<
欢迎登陆旅游购票系统"
请选择登录身份:
1、旅游公司管理人员"
2、游客"
3、退出程序"
intn,key,i=1;
switch(n)
case3:
Destory(tree);
exit(0);
case1:
do{cout<
请输入登陆密码:
key;
i++;
}while(key!
=12345&
=3);
if(key==12345)Tour_1(tree);
elseMainlist(tree);
case2:
default:
输入错误,请重新选择!
Mainlist(tree);
1、输入旅游地点"
2、查询各旅游地游客人数"
3、显示不足三人的旅游地"
4、退出"
switch(n){
Fun1(tree);
Fun2(tree,1);
Fun3(tree,1);
case4:
输入错误,请重新输入!
1、输入旅游地区号"
2、显示所有旅游地"
3、查询可报名地"
4、修改旅游地点"
5、退出"
请输入区号:
Fun2(tree,2);
Fun3(tree,2);
Fun4(tree);
case5:
//销毁二叉树
if(!
tree){cout<
此树已空!
if(tree&
lchild)
Destory(tree->
lchild);
rchild);
setw(5)<
Delet_L(tree->
free(tree);
voidmain()
TPlaceT=NULL;
Mainlist(T);
六、调试分析及测试结果
1、运行结果截图
七、附录
1、补充说明
:
包含分配空间的头文件
包含对字符串进行操作的头文件
包含控制输出格式的头文件
Destory函数为释放内存,删除所建树的所有节点。
八、程序小结
1、实验总结
旅游信息管理系统的程序主要分为两大方面的构思,从两个方面对程序进行操作,又通过一些关系使结构很好的结合在一起,完成了此操作系统的一些基本操作。
例如有旅游景点的建立、删除、遍历和游客信息的插入语更改等,分别对应二叉树的插入,删除和遍历,还有对链表的一些基本操作。
我认为操作系统得以实现的关键是在旅游景点的节点上创建了指向游客链表的指针,两种结构便产生了一定联系。
通过这次数据结构课程设计,我对数据结构有了更深一步的了解,对已学过的数据结构的掌握程度在应用中通过产生问题,解决问题的过程得以很好的提升。
从空的三阶B-树开始一次插入20、30、50、52、60、68、70、10、5、80、90然后分别删除60、90、88、20画出上述操作的B-树各状态。
1、从空树插入
1)、
20
2)、
2030
3)、
30
2030502050
4)、
205052
5)、
20505260
3052
205060
6)、
20506068
7)、
2050606870
305268
20506070
52
3068
8)
1020506070
9)
51020506070
103068
520506070
10)
52050607080
11)
5205060708090
10306880
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 旅游 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)