数据结构课程设计旅游管理系统
旅游景区管理系统

旅游景区管理系统一.系统概述1。
背景由于时下大多数人生活优越,交通工具方便快捷,信息获取方便,导致旅游业迅速发展。
为了方便旅游爱好者在网上获取信息,有效地掌握景区的相关信息,开发出一套适合于旅游者在网络上快速获取信息的管理系统,通过本系统,出行者可以查看河南的全部景点列表,了解某个景点的详细情况,自驾车、公交线路,获取景区内的旅游地图等.该系统为旅客提供全面的旅游景点查询服务。
2.目的本系统提供对各旅游景点综合信息的查询和管理,可以作为旅游出行综合信息查询的门户。
通过本系统出行者可以查看全部景点列表,了解某个景点的详细情况。
二.需求分析1。
系统需求分析:通过系统功能分析,针对一般旅游景区信息管理的需求,分析总结出如下需求信息。
● 用户可以对旅游线路及其详细信息进行查询● 用户可以预定旅游线路● 用户可以查看网站的公告信息● 用户可以查看留言板以及留言● 管理员可以修改旅游线路信息● 管理员可以删除和增加旅游线路● 管理员可以增加和修改公告信息● 管理员可以查看留言板以及回复留言2。
业务流程数据字典⑴数据项用户信息表:留言板信息表:⑵数据结构⑶数据流⑷数据存储公告信息公告信息查看,管理用户,管理员⑸处理过程处理过程名输入数据流输出数据流说明部分登录查看终端用户信息线路预订终端旅客留言更新后留言旅客旅游路线浏览终端旅客公告浏览终端旅客留言信息管理回复留言当前留言旅游线路管理更新旅游线路当前旅游线路公告管理更新公告当前公告3.组织结构图景区查询旅游信息修改4.数据流图旅客数据流图:公告信息管理数据流图:旅游线路信息三.系统设计部分1。
局部E—R图数据对象E_R图用户与可预订旅游线路之间的实体关系E-R图管理员与旅游线路之间的实体关系E—R图管理员与公告之间的实体关系E-R图管理员与留言板之间的实体关系E-R图2。
全局E—R图四.逻辑结构设计1。
联系类型的转换E-R图转换为相应的关系模式(依据转换原则)。
毕业设计(论文)--旅游网站管理系统

1绪论1. 1研究背景及意义旅游业具有“无烟产业”和“永远的朝阳产业”的美称,它已经和石油业、汽车业并列为世界三大产业;根据WTTC的统计,它每年产出4.7万亿美金的收入,直接或间接地为2亿700万人提供了就业机会,并支持着数以万计的企业的发展。
改革开放以来,我国的旅游业有了非常迅速的发展,但是比较而言,我国国内旅游业发展的广度深度都远远不能适应经济发展和人民生活水平提高的需要。
随着市场经济的发展和人民收入水平的进一步提高,人民对旅游消费的需求将进一步上升,国内旅游业在国民经济中的地位和作用越来越重要[1]。
但我国旅游产业仍然基础薄弱,管理手段滞后,信息化程度低,企业效益较差。
旅游行政管理部门存在管理方式落后,缺乏信息化管理手段,信息沟通渠道不通畅等问题.,面对困难和挑战,我国旅游业必须转变观念,创新思维,以信息化建设为突破口和新手段,整合各种资源,从而实现整个行业的新跨越。
加强旅游信息化建设,可以提高各级管理部门的工作效率和管理水平,精简办事程序,降低工作成本,加大宣传力度,加快信息传播速度,提高信息实效性;另一方面可以通过开展电子商务,满足游客的个性化需求,提高旅游服务质量,改变旅游企业传统经营模式,降低成本,增加效益,从而提高整个旅游产业素质,旅游实现信息化,将会进一步壮大旅游支柱产业,提升旅游产业整体信息化水平,优化产业结构和资源配置,完善产业链,进而带动众多相关产业发展,拉动内需,扩大就业,增加外汇收入,对经济发展起到积极的推动作用。
目前,我国的一些旅游部门在信息化方面做的工作和其投入较少,对自身的发展起到了制约作用,可以通过建立旅游网站来宣传本地的风土人情,对信息进行网络化、信息化管理,提高自身竞争能力。
1. 2国内外研究现状目前有许多中型的旅游管理部门仍依靠原始的人工方式采用电子文档、电子表格等(例如WORD、EXCEL,或者简单的ACCESS数据库)来对旅游信息进行管理,大部分旅行社也无自己的旅游网站,无法在现在这个网络时代接受客户的网上预定。
OOD模型-旅游信息管理系统

OOD模型-旅游信息管理系统OOD 部分一一: 问题域部分系统中涉及到一些永久对象需要保存,另外,为了实现对象的保存和恢复,为系统设置了一个新的“对象存取器”类。
“对象存取器”可以根据对象所在地类,将对象的信息保存到同名的数据库表中。
“对象存取器”类统一负责所有对象的保存和恢复。
由于每个类请求保存、请求恢复的语句语法上都是相同的,设置了一个高层的类“永久对象”类,它提供统一的协议,有各个需要在数据库存储其对象实例的类继承。
二二: 数据接口部分本系统数据结构设计主要采用关系式数据库模型。
但因为系统中的有旅游景点和路线的图片两个类,对象都是图片,所以这两个类采用文件系统。
对于设计过程中发现的各对象及其之间的关系进行分析之后,构造出本系统的基本E-R 图。
图中说明了数据结构中各对象间的逻辑关系。
景点1n旅游团游客服务人员酒店、餐馆、特色商店事故活动计划业绩记录业绩统计选择路线1n包含1n属于属于制定1n1n包含属于改变参照活动属于负责111nn11n111n1n属于n1系统分布设计与子系统划分1) 表示层服务:旅游景点信息管理网页服务(所有人)旅游路线信息管理网页服务(限管理层人员,员工)旅游组团业务管理网页服务(限管理层人员,员工)组团活动计划管理网页服务(限管理层人员,员工)组团游客登记管理网页服务(限管理层人员权限)旅游情况登记统计分析管理网页服务(限管理层人员)带团人员业绩记录管理网页服务(限管理层人员,员工)2) 数据存储服务旅游景点信息管理的数据库操作服务旅游路线信息管理的数据库操作服务旅游组团业务管理的数据库操作服务组团活动计划管理的数据库操作服务组团游客登记管理的数据库操作服务旅游情况登记统计分析管理的数据库操作服务带团人员业绩记录管理的数据库操作服务关系数据库中建立的表;使用关系数据库存储数据,为系统中的类建立相应的数据库表,实现从类图到数据库的映射。
具体数据库表设计如下: 2.1 景点信息表Attraction table 列名数据类型长度说明是否为空Attractions_ID Int 8主码F 表示层存储层旅游景点信息管理的数据库操作服带团人员业绩记录管理服务旅游路线信息管理的数据库操作服旅游景点信息管理服务旅游路线信息网页服务旅游组团业务网页服务组团活动计划网页组团游客登记网页服务旅游情况登记分析旅游组团业务管理的数据库操作服组团活动计划管理的数据库操作服组团游客登记管理的数据库操作服旅游情况登记统计分析管理的数据带团人员业绩记录管理的数据库操Attractions_NAME strig 50F Attractions_MAP strig 100F Attractions_CITY strig 50F Attractions___CTION strig 200F Attractions_TOP boolF Attractions_CAR boolF2.2 路线信息表Line table 列名数据类型长度说明是否为空Line_ID int 4 主码F Line_NAME string 50F Line_MAP string 100F Line_DAYS int 4F Line___MENT string 200F Line___RT string 100F Line_DINING __N string 50F Line_STAY PLACE string 50F Line_COSTS flaot 8F Line___T string 20F Line_NOT __ __IONS string 200F Line___N FOR __S string 100F Line___ string 50F Line_TEL string 20F Line_TOP boolF Line_CAR BoolF2.3 酒店信息表Hotel table 列名数据类型长度说明是否为空Hotel_ID int 4 主码F Hotel_NAME string 50F Hotel___ string 50F Hotel_ROOM STYE string 50F Hotel_STARS ushortF Hotel_PRICE float 8F Hotel_TIME string 50F2.4 餐馆信息表Restaurant table 列名数据类型长度说明是否为空Restaurant_ID int 4 主码 F Restaurant_NAME string 50F Restaurant_ADRESS string 100F Restaurant_PRICE string 50F Restaurant_TIME string 50F2.5 特色商店信息表Shop table 列名数据类型长度说明是否为空Shop_ID int 4 主码 F Shop_NAME string 50F Shop___ string 50F Shop_ __CTION string 200F2.6 票务查询表Ticket Inquire table 列名数据类型长度说明是否为空TicketInquire_ __RT string 50 主码F Ticket Inquire___RE string 50F Ticket Inquire___TION string 50F Ticket Inquire_TIME string 50F2.7 组团信息表Group regiment table 列名数据类型长度说明是否为空Group regiment_ID int 4 主码 F Plan_ID int 4F Businessmanagement_ID int4F Group regiment_START DATE string 50F Group regiment___E TIME string 50FGroup regiment_ACTUAL TIME string 50F Line_ID int 4F Group regiment_NUMBER int 4F Group regiment___ NUMBER int 4F ServicePeople_NUMBER Int 42.8 活动计划表Plan table 列名数据类型长度说明是否为空Plan_ID int 4 主码F Plan_STAGE ID int 4F Plan_ START DATE string 50F Plan_ __E TIME string50F Plan_ ACTUAL TIME string50F Plan_ __MENT string 50F Hotel_NAME string 50F Restaurant_NAME string50F Plan_ __ string50F Plan_TEL string 50F Plan_BUDGET flaot8F 2.9 业务管理表Businessmanagement table列名数据类型长度说明是否为空Business management_ID int 4 主码F Service people_ID int 4F Group regiment_ID int 4F Plan_ID Int 4F Service people_ROLE string50F2.10 员工信息表Service people table 列名数据类型长度说明是否为空Service people_ID int 4 主码F Service people_NAME string 50F Service people_SEX boolF Service people_AGE short 4FService people_NATION string 50F Service people_ID CARD string 50F Service people_TEL string 50F Service people___CTION string 50F Service people_ROLE string 50F2.11 游客信息表Visitor table 列名数据类型长度说明是否为空Visitor _ID int 4 主码F Visitor _NAME string 50F Visitor _SEX boolF Visitor _AGE Short 4F Visitor _NATION string 50F Visitor _ID CARD string 50F Visitor___T NUMBER string 50F Visitor _TEL String 50F Visitor _BODY __ON string 100F Visitor _DEMAND __RLY string 200F Group_ID Int 4Is_PAID bool2.12 旅游情况表Tourtable 列名数据类型长度说明是否为空Group regiment_ID int 4 主码 F Tour_TYPE string 10Tour_SIZEVisitor _ID int 4F Tour_ACCUSE __TION string 50F Tour_PRAISE __TION string 50F Tour___T __TION string 100F Tour___IVE boolF Service people_ROLE string 50F Tour_STAGE string 50F Businessmanagement_ID int 4F Tour___T NUMBER int 4F2.13 业绩记录表Achievement note table 列名数据类型长度说明是否为空Service people_ID int 4 主码F Group regiment_ID int 4F Tour___T NUMBER int 4F Achievement note_RESULT string 50F Achievement note_ADD int 4F Achievement note_CUT int 4F2.14 业绩统计表Achievement count table 列名数据类型长度说明是否为空Service people_ID int 4 主码 F Achievement count_ __N int 4F Achievement count_ START DATE string 50F Achievement count_ __E DATE string 50F Achievement count___F2.15 管理员表Administrator table 列名数据类型长度说明是否为空Administrator_ID int 4 主码 F Administrator___ string 50。
C语言作业旅游线路管理系统

C语言程序设计-旅游线路管理系统一、课题内容和要求旅游线路管理系统问题描述:旅游越来越成为人们生活的重要组成部分,请你为某旅行社设计一款实用旅游线路管理软件,方便旅行社的业务管理和推广。
该软件应具有客户登记、线路匹配、盈利统计等功能。
通过此课题,熟练掌握文件、数组、指针的各种操作,以及些算法思想的应用。
功能要求:(1)旅游管理系统信息应包括基本信息(根据实际情况):旅行社信息,线路信息,员工信息等;(2)需要输入口令进入旅游管理系统;(3)实现所有相关信息的录入和浏览;(4)业务管理功能:业务登记,线路匹配,业务结算等;(5)信息查询功能:线路信息查询、人员信息查询、业务登记查询、确认出游查询、业务结算查询、各类线路的需求状况等;(6)统计分析功能:登记业务汇总表、确认出游汇总表、业务结算汇总表、阶段结算统计等;(7)用不同的排序算法,根据不同条件(线路、目的地、出行人数等)进行排序,显示相关信息:(8)统计某时间段内的销售业绩,统计收入。
(9)将本系统的所有相关信息内容存为文件。
选做要求:(1)销售情况统计与分析,产生报表并打印;(2)客户满意度调查,并将调查结果进行反馈;(3)如果有更好的、更合理功能,可自加。
其他要求:(1)界面美观,交互方便,实用性强。
(2)注释详细:每个变量都要求有注释说明用途;函数有注释说明功能,对参数、返回值也要以注释的形式说明用途:关键的语句段要求有注释解释。
(3)程序的层次清晰,可读性强。
(4)变量、函数命名符合规范。
(5)如有可能,可使用MFC 等开发工具,实现彩色或图形操作界面。
二、需求分析旅游线路管理系统的功能框架图如图1所示。
图1 功能框架图(1)提供可操作的主菜单:输出各菜单,用于显示以从文件中加载的总客户信息和若干个可选的功能选项。
根据客户输入的选项来运行不同的功能,运行不同的函数。
(2)基础信息查询:通过调用文件,查询旅行社的基本信息。
(3)业务管理:调用结构体,有三个功能,业务登记是将需要输入的信息写入结构体并写入文件,线路匹配是根据选择每条线路的用户的人数乘该线路的价格在进行选择,选择出一个收入最高的方案输出,业务结算时将输入的信息进行初步处理。
旅游管理信息系统设计

1 引言随着经济的发展和人民生活水平的提高,在工作之余以各种方式出外旅游,放松惊惶的心情,缓解不断增长的工作压力,是现代人所追求的一种时尚,也是人们享受高品位生活的一种体现。
在旅游中,不仅有吃好、住好、睡好的要求,更多的是希望享受一流的服务,由基本满足型向舒适、享受型过渡。
但目前国内多数旅行社经营规模小,管理松散,经营方式落后及科技含量低,大部分工作都是通过手工完成,服务质量低劣,服务意识不强,严峻地制约着我国旅游业的发展。
本系统以连云港旅游资源管理为例,实现了旅游景点、旅游路途等多方面的管理及各种查询。
使游客可以便利的查询旅游信息,选择自己宠爱的旅游方式和经济实惠的旅游路途。
需求分析由于如今的旅游景点繁多,旅游线路中包含的内容也许多,让人一下子很难清楚的了解到其中的所包含的信息,从而做出正确的旅游方案,让自己能够轻轻松松的享受到旅游中的乐趣。
本系统旨在便利便利那些酷爱出玩的人,让他们刚好、精确、详细的了解到一些旅游方面的相关信息,为他们指引一条适合他们的旅游线路.业务流程图就是用一些尽可能少的规定的符号及连线来表示某个详细业务处理过程。
此旅游管理系统的业务流程表示旅行社的相关工作人员对参团游客进行登记,对旅游线路修改或新增等变更登记,并结合线路和游客登记状况进行排团。
最终得出游客信息表,线路信息表和排团支配表。
接受VB开发工具;合理设定用户,限制用户运用权限。
管理人员可以随时依据实际状况修改数据库中的数据资料,使信息的更新刚好、精确;景点信息里某些新线路的开发,或旧线路的修改和删除由管理人员按实际要求处理。
2 系统设计2.1 总体设计2.1.1数据字典1)数据字典包括数据项,数据流,数据储存等。
本系统E-R原理是依据数据项和数据流,数据储存所作出的,○1数据项是数据结构中探讨的最小单位,是数据记录中最基本的、不行分的出名数据单位。
数据项可以是字母、数字或两者的组合。
通过数据类型(逻辑的、数值的、字符的等)及数据长度来描述。
用C写的旅游管理系统程序

用C写的旅游管理系统程序旅游管理系统程序旅游业务的发展日益迅猛,为了提高旅游信息的管理效率,许多旅行社和旅游公司开始采用计算机技术开发旅游管理系统。
本文将介绍一个用C语言编写的旅游管理系统程序。
一、概述旅游管理系统是一种通过计算机对旅游信息进行管理和处理的工具。
该系统可以帮助旅行社和旅游公司更好地组织旅游活动,提供旅游指南,管理客户信息和行程安排等。
本旅游管理系统程序基于C语言开发,具有稳定性高、功能强大等优点。
二、功能模块1. 客户管理模块该模块用于记录客户的基本信息,包括姓名、性别、联系方式等。
系统管理员可以通过该模块对客户信息进行增加、修改和删除操作,方便管理客户数据库。
2. 旅游线路管理模块旅游线路管理模块用于管理各个旅游线路的信息。
管理员可以录入线路的名称、价格、行程安排等信息,方便客户选择合适的旅游线路。
同时,管理员可以根据需求对线路进行编辑和删除。
3. 订单管理模块订单管理模块用于记录客户的旅游订单信息。
客户可以通过系统提交旅游订单,并查询订单的状态。
管理员可以查看、处理和取消订单,保证订单信息的准确和及时。
4. 支付管理模块支付管理模块用于处理客户的旅游费用支付。
客户可以选择合适的支付方式,并通过系统进行支付。
管理员可以查看支付记录和处理异常情况,保证支付流程的顺利进行。
5. 数据统计报表模块数据统计报表模块用于生成旅游相关的统计数据和报表。
管理员可以通过该模块查看每月的旅游收入、客户数量等数据,便于管理和决策。
三、界面设计旅游管理系统程序采用图形界面设计,具有良好的用户体验。
界面整洁美观,操作简单明了,方便用户快速上手使用。
同时,系统界面采用适当的颜色和图标,增加用户对系统的兴趣和喜好。
四、系统流程旅游管理系统程序的运行流程如下:1. 用户登录系统:用户需要输入用户名和密码进行登录,以保证系统的安全性。
2. 选择功能模块:用户登录成功后,可以选择所需的功能模块,例如客户管理、旅游线路管理等。
旅游管理系统课程设计

实验一软件需求分析软件需求分析实验目的:1)掌握系统的功能描述、性能描述方法;2)掌握需求分析工具数据流程图、数据字典等;3)掌握系统需求分析的步骤和方法。
实验内容:用结构化数据流分析技术进行软件系统需求分析,得出系统的数据流程图和数据字典。
实验步骤:1)到相关单位进行需求分析2)综合利用网和相关书籍整理并完善需求分析。
3)画出系统数据流图(分析系统是事务型还是变换型)4)得出系统数据字典1.软件系统需求描述:(从功能,性能上进行描述)2.软件系统数据流程图(由加工、数据流、数据存储、源点和终点四种元素组成):1)顶层数据流图2)1层数据流图3)2层数据流图3.软件系统数据字典1)数据流条目数据流:旅游地别名:描述:用来存储旅游地点信息定义:旅游地=区号+名称+人数位置:数据库数据流:游客别名:描述:用来存储游客信息定义:游客=身份证号+姓名+性别位置:数据库2)加工条目加工名:旅游管理系统加工编号:0层描述:对管理员添加旅游地点进行管理输入数据流:旅游地,游客输出数据流:旅游地,游客加工逻辑:若管理员输入密码正确则可以进行操作否则重新输入3)文件条目数据文件名:游客信息表简述:用于存放游客信息输入数据:游客信息输出数据:游客信息数据文件组成:游客信息表=身份证号+姓名+性别存储方式:关键码存取频率:经常数据文件名:旅游地点表简述:用于存放旅游地点信息输入数据:旅游地点信息输出数据:旅游地点信息数据文件组成:旅游地点表=区号+名称+人数存储方式:关键码存取频率:经常4. 实验小结实验二软件概要设计实验项目名称:软件概要设计实验目的:1)掌握系统总体结构的设计;2)掌握系统接口设计、数据结构设计等;3)掌握系统概要设计的步骤和方法。
实验内容主要解决实现该系统需求的程序模块设计问题(包括如何把该系统划分成若干个模块、决定各个模块之间的接口、模块之间传递的信息,以及数据结构、模块结构的设计等)。
实验步骤1)首先确定系统总体设计方案(分清系统是事物型还是加工型)。
旅店管理系统--数据结构课程设计报告报告

完美WORD格式西安电大课程设计报告课程名称数据结构设计题目旅店管理系统——床位的分配与回收专业计算机与信息工程系班级学号姓名完成日期 2012年6月8日课程设计任务书设计题目:模拟旅馆管理系统的一个功能——床位的分配与回收_________________________________________________________ 设计内容与要求:1.【问题描述】某旅馆有n个等级的房间,第I等级有a i个房间,每个等级有b i个床位(1≤i≤n)。
试模拟旅馆管理系统中床位分配和回收的功能,设计能为单个旅客分配床位,在其离店便回收床位(供下次分配)的算法。
2.【基本要求】(1)输入数据分配时,输入旅客姓名、年龄、性别、到达日期和所需房间等级。
回收时,输入房间等级、房间号和床位号。
(2)输出数据分配成功时打印旅客姓名、年龄、到达日期、房间等级、房间号码和床位号码。
分配不成功时,如所有等级均无床位,则打印“客满”信息;如旅客需要的等级均无空床位,则打印“是否愿意更换等级?”的询问信息。
若旅客愿意更换,则重新输入有关信息,再进行分配,否则分配工作结束。
指导教师:2012年 6月 8日课程设计评语成绩:指导教师:_______________年月日3. 数据结构本次数据结构课程设计,做的是旅店管理系统,定义了三个结构体链表,给等级链表设置了一个头结点,采用链表嵌套方法,等级链表嵌套房间链表,房间链表再嵌套旅客链表。
(1)对旅客结构体定义typedef struct customer{char name[15]; //旅客姓名int age; //旅客年龄int sex; //旅客性别int lv; //旅客住宿时的等级号int bed_num; //旅客的床位号int year; //开始住宿日期:年int month; //开始住宿日期:月int day; //开始住宿日期:日struct customer* next; //指向下一旅客}cus;typedef struct hotel_lv{int lv_num; //旅店等级号struct hotel_lv *next; //指向下一等级struct fangjian *fj_next; //指向房间}hotel_lv;(3)房间结构体定义typedef struct fangjian{int fj_num; //房间号int max; //房间的最大床位数目int mem_num; //房间内的当前人数struct fangjian *next; //指向下一房间struct customer *cus_next; //指向旅客}fangjian;4.总体设计(1)主函数(2)有旅客来住宿时:(3)有旅客来退房时:(4)查询旅客信息时:(5)统计旅店当前入住人数:(5)各函数名①初始化函数:void Init(hotel_lv *L)②判断是否客满:int full(hotel_lv *L)③打印旅客信息:void Pr_divide(cus* p,fangjian* q )④旅客住宿函数:void Pr_divide(cus* p,fangjian* q )⑤旅客退房函数:cus* Delete(hotel_lv *L)⑥查询旅客信息:void cx_customer(hotel_lv *L)⑦统计旅店当前入住人数:void Tongji_cus(hotel_lv *L)⑧主函数:void main()5. 详细设计关键步骤设计(1)初始化旅店函数采用链表方式,进行旅店的初始化操作,给旅店等级设置了头结点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计--------数据结构课程设计报告学号:1016020203姓名:张灿指导教师:曹春萍专业:计算机完成日期:2012.06.25目录A篇:旅游信息管理系统一、题目要求1、题目内容----------------------------------1二、程序设计目标1、题目分析----------------------------------12、功能简介----------------------------------23、数据结构----------------------------------2三、概要简述1、功能结构图---------------------------------32、模块分析-----------------------------------3四、详细设计1、结构体定义----------------------------32、程序流程图---------------------------5五、源程序代码1、源程序c++实现代码-------------------------6六、调试分析及测试结果1、运行结果截------------------------------14七、附录1、补充说明--------------------------------19八、程序小结1、报告总结———————————————19 B篇: B-树手工题一、题目要求1、题目内容-----------------------------------20二、运行过程1、从空树插入---------------------------------202、插入完成-----------------------------------253、依次删除要求点-----------------------------264、最终结果-----------------------------------28C篇:附加题一、题目1、题目内容—————————————————29二、程序设计目标1、功能简介—————————————————292、数据结构—————————————————29三、设计思路1、结构体定义————————————————292、功能结构图———————————————303、程序流程图———————————————30四、实现代码1、程序代码————————————————32五、程序调试以及运行结果1、调试结果及截图—————————————43六、报告总结1、报告总结————————————————44A篇:旅游信息管理系统一、题目要求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)、链表结点结构体typedef struct tourist{string name;int id;string sex;struct tourist *next;}Trist,*linklist;2)、二叉排序树结点结构体typedef struct Tree_Place{int area_code; //旅游地区号string area; //旅游地名称int count; //记录该旅游地报名游客人数struct Tree_Place *lchild,*rchild;Trist *list; //指向游客所在单链表的指针}Place,*TPlace;2、程序流程图五、源程序代码1、源程序c++实现代码#include<iostream>#include<stdlib.h>#include<string>#include<iomanip>using namespace std;#define MAX 50#define SIZE 12typedef struct tourist{char name[SIZE];int id;char sex[5];struct tourist *next;}Trist,*linklist;typedef struct Tree_Place{int code; //旅游地区号char area[SIZE]; //旅游地名称int count; //记录该旅游地报名游客人数struct Tree_Place *lchild,*rchild;Trist *list; //指向游客所在单链表的指针}Place,*TPlace;void Search_T(TPlace &tree,int co);void Mainlist(TPlace &tree);void Tour_1(TPlace &tree);void Tour_2(TPlace &tree);void Destory(TPlace &tree);void Init_L(linklist &head){head=NULL;}void Insert_L (TPlace &tree,TPlace &t,linklist &head){linklist tr;char c;int i=1,co,id;while(t->count<6&&i==1){cout<<"请输入你的身份证号:"<<endl;cin>>id;tr=(linklist)malloc(sizeof(Trist));tr->id =id;cout<<"输入姓名,性别:"<<endl;cin>>tr->name>>tr->sex;tr->next=head;head=tr;t->count++;cout<<"继续报名请按1,按0退出!"<<endl;cin>>i;}if(t->count>=6){cout<<"此旅游地人数已满,按'y'选择其他旅游地,其他键退出!"<<endl;cin>>c;if(c=='y'||c=='Y'){ cout<<"请重新输入区号"<<endl;cin>>co;Search_T(tree,co);}}else Tour_2(tree);}void Delet_L (linklist &head){linklist p,pro;pro=head;while(pro){p=pro ;pro=p->next ;free(p);}}void Insert_T(TPlace &tree,TPlace p){ //在二叉排序树中插入一个新结点if (tree==NULL) tree=p;else if(p->code<tree->code) Insert_T(tree->lchild,p);else if(p->code>tree->code) Insert_T(tree->rchild,p);}void Search_T(TPlace &tree,int co){char c;TPlace p;int code;p=tree;while(p&&p->code!=co ){if(p->code>co)p=p->lchild ;else p=p->rchild ;}if(!p){ cout<<"此旅游地点还未存在!"<<endl;system("pause");Tour_2(tree);} else{if(p->count>=6){cout<<"此旅游地人数已满,按'y'选择其他旅游地,其他键退出!"<<endl;cin>>c;if(c=='y'||c=='Y'){ cout<<"请重新输入区号"<<endl;cin>>code;Search_T(tree,code);}else Tour_2(tree);}else {cout<<"可以报名"<<endl;Insert_L(tree,p, p->list);Tour_2(tree);} }}TPlace Delete_T(TPlace &t,int co){TPlace p,parent,s,q;//parent指向要删除的节点的双亲,p指向要删除的节点p=t;parent=NULL;while(p){if(p->code==co)break;parent=p;if(p->code>co)p=p->lchild;elsep=p->rchild;}if(p==NULL) //不存在该树节点return t;if(p->lchild==NULL) //无左子树,右子树可有可无 {if(parent==NULL)t=p->rchild;elseif(parent->lchild==p)parent->lchild=p->rchild;elseparent->rchild=p->rchild;Delet_L (p->list); free(p);}else //有左子树,右子树可有可无{q=p;s=q->lchild; ////while(s->rchild){q=s;s=s->rchild;}if(q==p) //其左孩子没有右子树q->lchild=s->lchild;elseq->rchild=s->lchild;p->code=s->code; Delet_L (s->list);free(s);}return t;}void Fun1(TPlace &tree){char c;int n;TPlace p;cout<<"请输入插入地点个数:"<<endl;cin>>n;cout<<"依次输入各个旅游地点的区号和地名:"<<endl;for(int i=0;i<n;i++){p=(TPlace)malloc(sizeof(Place));cout<<"请输入第"<<i+1<<"个地点:"<<endl;cin>>p->code>>p->area ;p->lchild =p->rchild =NULL;p->list=NULL;p->count =0;Insert_T(tree,p);}cout<<"输入完成,输入y或者Y继续操作,其他键退出!";cin>>c;if(c=='y'||c=='Y') Fun1(tree);else {system("cls");Tour_1(tree);}}void Fun2(TPlace &tree,int x){int top=0;TPlace p,s[MAX];p=tree;while(p||top>0){while(p){s[top++]=p;p=p->lchild;}if(top>0){p=s[--top];cout<<setw(8)<<"区号:"<<p->code<<setw(10)<<"地名:"<<p->area<<setw(10)<<"人数:"<<p->count<<endl;p=p->rchild;}}if(tree==NULL)cout<<"还未录入旅游地!请稍后查询!"<<endl;cout<<"按任意键返回上一级菜单!"<<endl;system("pause");if(x==1)Tour_1(tree);if(x==2) Tour_2(tree);}void Fun3(TPlace &tree,int x){int n1=0,n2=0; char c;int top=0; int elem[MAX];TPlace p,s[MAX];p=tree;while(p||top>0){while(p){s[top++]=p;p=p->lchild;}if(top>0){p=s[--top];if(p->count<3&&x==1){cout<<setw(8)<<"区号:"<<p->code<<setw(10)<<"地名:"<<p->area<<setw(10)<<"人数:"<<p->count<<endl;elem[n1]=p->code ;n1++; } if(p->count<6&&x==2){cout<<setw(8)<<"区号:"<<p->code<<setw(10)<<"地名:"<<p->area<<setw(10)<<"人数:"<<p->count<<endl;;n2++; }p=p->rchild;}}if(x==1){cout<<"一共有"<<n1<<"各旅游景点人数少于三个"<<endl;cout<<"删除旅游地请输入D或者d,其他键返回菜单!"<<endl;cin>>c;if(c=='d'||c=='D') {for(int i=0;i<n1;i++) Delete_T(tree,elem[i]);cout<<"删除完成!"<<endl;} system("pause");Tour_1(tree);}if(x==2){cout<<"一共有"<<n2<<"个旅游景点仍可报名"<<endl;cout<<"按任意键返回上一级菜单!"<<endl;system("pause");Tour_2(tree);}}void Fun4(TPlace &tree){int co,id;TPlace p;linklist l,pre;p=tree;cout<<"输入要退出旅游地的区号和自己的身份证号:"<<endl;cin>>co>>id;while(p&&p->code!=co )if(p->code>co)p=p->lchild ;else p=p->rchild ;}if(!p){ cout<<"此旅游地点还未存在!"<<endl;system("pause");Tour_2(tree);}else{l=p->list;pre=l;while(l->id!=id){pre=l;l=l->next;}pre->next=l->next;free(l);p->count--;cout<<"输入要报名的地点区号:"<<endl; cin>>co;Search_T(tree,co);}}void Mainlist(TPlace &tree){system("cls");cout<<"******************************************************"<<endl<<endl;cout<<" 欢迎登陆旅游购票系统"<<endl;cout<<" 请选择登录身份:"<<endl;cout<<" 1、旅游公司管理人员"<<endl;cout<<" 2、游客"<<endl;cout<<" 3、退出程序"<<endl;cout<<"******************************************************"<<endl<<endl;int n,key,i=1;cin>>n;switch(n){case 3: Destory(tree);exit(0);case 1: do{cout<<"请输入登陆密码:";cin>>key;i++; }while(key!=12345&&i<=3); if(key==12345) Tour_1(tree);else Mainlist(tree);break;case 2: Tour_2(tree);break;default :cout<<"输入错误,请重新选择!"<<endl;system("pause"); Mainlist(tree);}void Tour_1(TPlace &tree){system("cls");int n;cout<<"******************************************************"<<endl<<endl;cout<<" 1、输入旅游地点 "<<endl;cout<<" 2、查询各旅游地游客人数"<<endl;cout<<" 3、显示不足三人的旅游地"<<endl;cout<<" 4、退出"<<endl;cout<<"******************************************************"<<endl<<endl;cin>>n;switch(n){case 1: Fun1(tree);break;case 2: Fun2(tree,1);break;case 3: Fun3(tree,1);break;case 4: Mainlist(tree);break;default :cout<<"输入错误,请重新输入!"<<endl;system("pause");Tour_1(tree);; }}void Tour_2(TPlace &tree){int code;system("cls");int n;cout<<"******************************************************"<<endl<<endl;cout<<" 1、输入旅游地区号 "<<endl;cout<<" 2、显示所有旅游地"<<endl;cout<<" 3、查询可报名地"<<endl;cout<<" 4、修改旅游地点"<<endl;cout<<" 5、退出"<<endl;cout<<"******************************************************"<<endl<<endl;cin>>n;switch(n){case 1: cout<<"请输入区号:"<<endl;cin>>code;Search_T(tree,code);break;case 2: Fun2(tree,2);break;case 3: Fun3(tree,2);break;case 4: Fun4(tree);break;case 5:Mainlist(tree);break;default :cout<<"输入错误,请重新输入!"<<endl;system("pause");Tour_2(tree);} }//销毁二叉树void Destory(TPlace &tree){if(!tree) {cout<<"此树已空!"<<endl;system("pause"); exit(0);}if(tree&&tree->lchild)Destory(tree->lchild);if(tree&&tree->rchild)Destory(tree->rchild);cout<<setw(5)<<tree->code<<setw(5)<<tree->area<<endl;Delet_L (tree->list);free(tree);}void main(){TPlace T=NULL;Mainlist(T);}六、调试分析及测试结果1、运行结果截图七、附录1、补充说明#include<stdlib.h> :包含分配空间的头文件#include<string> :包含对字符串进行操作的头文件#include<iomanip> :包含控制输出格式的头文件Destory 函数为释放内存,删除所建树的所有节点。