数据结构课程设计旅游管理系统Word文档格式.docx

上传人:b****6 文档编号:21195620 上传时间:2023-01-28 格式:DOCX 页数:33 大小:719.42KB
下载 相关 举报
数据结构课程设计旅游管理系统Word文档格式.docx_第1页
第1页 / 共33页
数据结构课程设计旅游管理系统Word文档格式.docx_第2页
第2页 / 共33页
数据结构课程设计旅游管理系统Word文档格式.docx_第3页
第3页 / 共33页
数据结构课程设计旅游管理系统Word文档格式.docx_第4页
第4页 / 共33页
数据结构课程设计旅游管理系统Word文档格式.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

数据结构课程设计旅游管理系统Word文档格式.docx

《数据结构课程设计旅游管理系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计旅游管理系统Word文档格式.docx(33页珍藏版)》请在冰豆网上搜索。

数据结构课程设计旅游管理系统Word文档格式.docx

附加题

一、题目

1、题目内容—————————————————29

1、功能简介—————————————————29

2、数据结构—————————————————29

三、设计思路

1、结构体定义————————————————29

2、功能结构图———————————————30

3、程序流程图———————————————30

四、实现代码

1、程序代码————————————————32

五、程序调试以及运行结果

1、调试结果及截图—————————————43

六、报告总结

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>

>

string>

iomanip>

usingnamespacestd;

#defineMAX50

#defineSIZE12

charname[SIZE];

charsex[5];

intcode;

chararea[SIZE];

}Place,*TPlace;

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;

输入姓名,性别:

tr->

name>

sex;

next=head;

head=tr;

t->

count++;

继续报名请按1,按0退出!

i;

}

if(t->

count>

=6)

cout<

此旅游地人数已满,按'

y'

选择其他旅游地,其他键退出!

cin>

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{

=6)

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;

co)

lchild;

else

rchild;

}

if(p==NULL)//不存在该树节点

returnt;

lchild==NULL)//无左子树,右子树可有可无

if(parent==NULL)

t=p->

if(parent->

lchild==p)

parent->

lchild=p->

rchild=p->

Delet_L(p->

free(p);

else//有左子树,右子树可有可无

q=p;

s=q->

////

while(s->

rchild)

q=s;

s=s->

if(q==p)//其左孩子没有右子树

q->

lchild=s->

else

rchild=s->

p->

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;

lchild=p->

rchild=NULL;

list=NULL;

count=0;

Insert_T(tree,p);

输入完成,输入y或者Y继续操作,其他键退出!

;

)Fun1(tree);

else{system("

cls"

Tour_1(tree);

voidFun2(TPlace&

tree,intx)

inttop=0;

TPlacep,s[MAX];

while(p||top>

0)

while(p)

s[top++]=p;

if(top>

{p=s[--top];

cout<

setw(8)<

区号:

setw(10)<

地名:

area<

人数:

if(tree==NULL)cout<

还未录入旅游地!

请稍后查询!

按任意键返回上一级菜单!

system("

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->

code;

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;

linklistl,pre;

输入要退出旅游地的区号和自己的身份证号:

co>

{l=p->

list;

pre=l;

while(l->

id!

=id)

pre=l;

l=l->

next;

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);

break;

case2:

Tour_2(tree);

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:

Mainlist(tree);

//销毁二叉树

tree){cout<

此树已空!

exit(0);

if(tree&

lchild)

Destory(tree->

lchild);

rchild)

rchild);

setw(5)<

Delet_L(tree->

free(tree);

voidmain()

TPlaceT=NULL;

Mainlist(T);

1、运行结果截图

1、补充说明

#include<

包含分配空间的头文件

包含对字符串进行操作的头文件

包含控

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 成考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1