WUST 2017级 数据结构课设 景区信息管理系统

该课程设计任务旨在通过实现景区信息管理系统,让学生掌握数据结构应用、算法编写及程序设计。系统需使用图来存储景区景点信息,提供创建、查询、导航、最短路径搜索等功能,要求用C/C++/Java完成,并撰写设计报告。
摘要由CSDN通过智能技术生成

2017级数据结构课程设计任务书

【设计目的】

数据结构是计算机学科实践性很强的一门核心课程。课程设计是加强学生实践能力的一个强有力手段,要求学生掌握数据结构的应用、算法的编写、类C语言的算法转换成C/C++/Java程序并上机调试的基本方法,还要求学生在完成程序设计的同时能够写出比较规范的设计报告。严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用。

【设计要求】

1、课程设计时间为1.5周;

2、每个学生必须独立完成;

3、设计语言C/C++/Java不限;

4、课余时间完成源程序和课程设计报告等文档书写工作,上机时间做调试和验收工作。

5、上机任务

1)选择并定义合适的数据结构;

2)根据程序所要完成的基本要求,设计出必要的操作;

3)设计出主程序(main函数),使其成为完整的程序,也可以进行可视化程序设计。

6、上机时间:上午8:20~11:50,下午2:10~5:00

7、无论在校外、校内,都要严格遵守学校和所在单位的学习和劳动纪律、规章制度,学生有事离校必须请假。课程设计期间,无故缺席按旷课处理;缺席时间达四分之一以上者,其成绩按不及格处理。

【题目】图的操作和应用之景区信息管理系统

现有一个景

2017级数据结构课程设计任务书

【设计目的】

数据结构是计算机学科实践性很强的一门核心课程。课程设计是加强学生实践能力的一个强有力手段,要求学生掌握数据结构的应用、算法的编写、类C语言的算法转换成C/C++/Java程序并上机调试的基本方法,还要求学生在完成程序设计的同时能够写出比较规范的设计报告。严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用。

【设计要求】

1、课程设计时间为1.5周;

2、每个学生必须独立完成;

3、设计语言C/C++/Java不限;

4、课余时间完成源程序和课程设计报告等文档书写工作,上机时间做调试和验收工作。

5、上机任务

1)选择并定义合适的数据结构;

2)根据程序所要完成的基本要求,设计出必要的操作;

3)设计出主程序(main函数),使其成为完整的程序,也可以进行可视化程序设计。

6、上机时间:上午8:20~11:50,下午2:10~5:00

7、无论在校外、校内,都要严格遵守学校和所在单位的学习和劳动纪律、规章制度,学生有事离校必须请假。课程设计期间,无故缺席按旷课处理;缺席时间达四分之一以上者,其成绩按不及格处理。

【题目】图的操作和应用之景区信息管理系统

现有一个景区,景区里面有若干个景点,景点之间满足以下条件:

(1) 某些景点之间铺设了道路(相邻

(2) 这些道路都是可以双向行驶的(无向图

(3) 从任意一个景点出发都可以游览整个景区(连通图)

开发景区信息管理系统,对景区的信息进行管理。使用图的数据结构保存景区景点信息,为用户提供创建图查询景点信息旅游景点导航搜索最短路径铺设电路规划等功能。

区,景区里面有若干个景点,景点之间满足以下条件:

(1) 某些景点之间铺设了道路(相邻

(2) 这些道路都是可以双向行驶的(无向图

(3) 从任意一个景点出发都可以游览整个景区(连通图)

开发景区信息管理系统,对景区的信息进行管理。使用图的数据结构保存景区景点信息,为用户提供创建图查询景点信息旅游景点导航搜索最短路径铺设电路规划等功能。

// ScenicAreaInfoMS.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include "pch.h"


//----------【忽略安全检测】----------------
#define _CRT_SECURE_NO_WARNINGS


//----------【头文件】------------------
#include<stdlib.h>
#include<string.h>
#include<string>
#include<iostream>
#include<fstream>
#include<graphics.h>
#include<conio.h>
#include<math.h>

using namespace std;

//----------【自定义最大顶点数】-----------
#define MAX_VERTEX_NUM 20

//----------【图形缩小倍数】---------------
constexpr auto ShrinkFactor = 2;

//----------【顶点圆圈半径】--------------
constexpr auto VexR = 20;

//----------【主函数功能函数】----------
bool CreateGraph();			//创建景区景点图
void GetSpotInfo();			//查询景点信息
void TravelPath();			//规划游览景点路线
void FindShortPath();		//搜索景点最短路径
void DesignPath();			//铺设电路规划
void ModifiedGraph();		//修改图保存文件
void menu();				//显示主页面菜单
void menu_6();				//显示页面6菜单
void LoginCheck();			//登录验证函数


//----------【修改图保存文件】所属函数----------
void menu60();//输出当前景点信息
void menu61();//页面6函数
void menu62();
void menu63();
void menu64();
void menu65();
void menu66();


//----------【主函数功能函数辅助图解函数】---------------------
void ShowGetSpotInfo(int nVex);		//图解查询景点信息


//----------【景点、道路、路径、用户设为结构体】-----------
struct Vex             	//景点结构【相当于图的结点】vertex:顶点
{								//对应Vex.txt文件
	int num;			//景点编号
	char name[20];		//景点名字
	char desc[1024];	//景点描述
	int x, y;			//位置
};

struct Edge            	//道路结构【相当于图的弧】Edge:边缘
{								//对应Edge.txt文件
	int vex1;			//边的第一个顶点
	int vex2;			//边的第二个顶点
	int weight;			//权重
};

typedef struct Path        				//路径结构
{
	int vexs[MAX_VERTEX_NUM];			//用数组保存一条路径
	Path *next = NULL;					//指向下一条路径
}*PathList;                             //指针型结构体【路径】变量

struct User
{
	int userNum;
	char userName[20];
	char passWord[1024];
};

//----------【无向图设为类(结构体也行)】------------------
class UDGraph
{
private:	//图成员
	int m_adjacentMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];						//【弧组】存储类型为邻接矩阵
	Vex	m_aVexs[MAX_VERTEX_NUM];												//【顶点组】图包含的顶点数组
	int m_nVexNum;																//【顶点数】当前图的顶点个数
	int pathCount;																//【路径数】记录已输出的路径数

public:		//成员函数
	void Init();																//【图初始化】设置图基本信息
	int InsertVex(Vex sVex);													//【插入顶点】将顶点sVex保存到邻接矩阵
	int InsertEdge(Edge sEdge);													//【插入边缘】将边 sEdge保存到邻接矩阵
	Vex GetVex(int nVex);														//【查询顶点】返回指定顶点信息
	int getEdgeWeight(int vex1, int vex2);										//【查询边长】返回两顶点之间权重距离
	int FindEdge(int nVex, Edge aEdge[]);										//【查询边缘】查询与指定顶点相连的边
	int GetVexnum(void);														//【查顶点数】获取当前顶点数
	void DFSbyRecursive(int nVex, bool bVistd[], int &nIndex, PathList &pList);	//【深度搜索】递归方式深度优先搜索
	void DFSTraverse(int nVex, PathList &pList);								//【深搜应用】调用深度优先搜索
	int FindShortPath(int nVexStart, int nVexEnd, Edge aPath[]);				//【最短路径】寻找两点间最短路径
	int FindMinTree(Edge aPath[]);												//【图最小树】寻找最小生成树
	int InsertNewVex(Vex v);													//【插入】景点
	int InsertNewEdge(Edge e);													//【插入】道路
	void DeleteVex(int vexnum);													//【删除】景点
	void DeleteEdge(int vex1, int vex2);										//【删除】道路
	void AmendVex(int vexnum, Vex v);											//【修改】景点
	void AmendEdge(int vex1, int vex2, Edge e);									//【修改】道路
	void MemoryToFiles();														//将内存数据写入文件
}m_Graph;  		//默认图


//----------【MD5相关】------------------
#define shift(x, n) (((x) << (n)) | ((x) >> (32-(n))))//右移的时候,高位一定要补零,而不是补充符号位
#define F(x, y, z) (((x) & (y)) | ((~x) & (z)))
#define G(x, y, z) (((x) & (z)) | ((y) & (~z)))
#define H(x, y, z) ((x) ^ (y) ^ (z))
#define I(x, y, z) ((y) ^ ((x) | (~z)))
#define A 0x67452301
#define B 0xefcdab89
#define C 0x98badcfe
#define D 0x10325476

unsigned int strlength;		//strBaye的长度

unsigned int atemp;			//A,B,C,D的临时变量
unsigned int btemp;
unsigned int ctemp;
unsigned int dtemp;

const unsigned int k[] = {
		0xd76aa478,0xe8c7b756,0x242070db,0xc1bdceee,
		0xf57c0faf,0x4787c62a,0xa8304613,0xfd469501,0x698098d8,
		0x8b44f7af,0xffff5bb1,0x895cd7be,0x6b901122,0xfd987193,
		0xa679438e,0x49b40821,0xf61e2562,0xc040b340,0x265e5a51,
		0xe9b6c7aa,0xd62f105d,0x02441453,0xd8a1e681,0xe7d3fbc8,
		0x21e1cde6,0xc33707d6,0xf4d50d87,0x455a14ed,0xa9e3e905,
		0xfcefa3f8,0x676f02d9,0x8d2a4c8a,0xfffa3942,0x8771f681,
		0x6d9d6122,0xfde5380c,0xa4beea44,0x4bdecfa9,0xf6bb4b60,
		0xbebfbc70,0x289b7ec6,0xeaa127fa,0xd4ef3085,0x04881d05,
		0xd9d4d039,0xe6db99e5,0x1fa27cf8,0xc4ac5665,0xf4292244,
		0
在旅游景区,经常会遇到游客打听从一个景点到另一个景点的最短路径和最短距离,这类游客不喜欢按照导游图的线路来游览,而是挑选自己感兴趣的景点游览。为于帮助这类游客信息查询,就需要计算出所有景点之间最短路径和最短距离。算法采用迪杰斯特拉算法或弗洛伊德算法均可。建立一个景区旅游信息管理系统,实现的主要功能包括制订旅游景点导游线路策略和制订景区道路铺设策略。 任务中景点分布是一个无向带权连通图,图中边的权值是景点之间的距离。 (1)景区旅游信息管理系统中制订旅游景点导游线路策略,首先通过遍历景点,给出一个入口景点,建立一个导游线路图,导游线路图用有向图表示。遍历采用深度优先策略,这也比较符合游客心理。 (2)为了使导游线路图能够优化,可通过拓朴排序判断图中有无回路,若有回路,则打印输出回路中的景点,供人工优化。 (3)在导游线路图中,还为一些不愿按线路走的游客提供信息服务,比如从一个景点到另一个景点的最短路径和最短距离。在本线路图中将输出任意景点间的最短路径和最短距离。 (4)在景区建设中,道路建设是其中一个重要内容。道路建设首先要保证能连通所有景点,但又要花最小的代价,可以通过求最小生成树来解决这个问题。本任务中假设修建道路的代价只与它的里程相关。 归纳起来,本任务有如下功能模块:(1)创建景区景点分布图;(2)输出景区景点分布图(邻接矩阵)(3)输出导游线路图;(4)判断导游线路图有无回路;(5)求两个景点间的最短路径和最短距离;(6)输出道路修建规划图。(7)主程序用菜单选项供用户选择功能模块。  
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值