# **1 设计目的**
在校园火灾、地震、暴力危险发生时,使用系统可以快速帮助学生规划最佳逃生路线、巧妙避开风险危险楼宇、查询消防系统信息、进行安全普及教育等。
# **2 任务概述**
设计一个在校园火灾、暴力事件背景下规划逃生与教育使用。
\(1) 校园安防地图可视化;
\(2) 安防教育(文件读取);
(3)查找、修改某处防火器材损耗度,展示全部消防器材损耗度、并包括文件输出;
\(4) 校园逃生窗口全部路径可视化以及最短路径查询;
\(5) 躲避火源及暴恐路线(随机生成灾害点),路径点去除操作;
(6)使用冒泡排序、快速排序等选择最佳灭火器地点;
(7)休眠出队,排队等待逃出校园:
# **3 本设计采用的数据结构**
整个过程中主要采用图结构、邻接矩阵、迪杰斯特拉算法、冒泡排序、快速排序、线性表的查询、修改、队列。
```c++
typedef struct {
int b[20] = {1,0,1,1,0,0,1,1,1,0,1,0,1,1,0}; //是否有消防器材
float c[20] = {0.5,0,0.6,0.9,0,0,0.1,0.1,0.2,0,0.3,0,0.1,0.1,0};
}fire_data;
typedef struct {
int base;
int top;
int person_size;
}queue;
typedef struct {
int P[VNUM]; // 辅助数组
int Dist[VNUM]; // 存放最短路径,权值
int Mark[VNUM]; // 标记数组
}route;
```
# 4.系统功能模块结构图及主要函数说明
![](https://www.writebug.com/myres/static/uploads/2021/10/28/341d4ae0cc3f7b14887109ef85a3ab51.writebug)
图4.1
## 4.1功能函数:
```c++
void print_all_dist(route &r,int start) 打印路径
void Quckily_sort(fire_data &f, int low, int high) 快速排序
int Bubble(route &r, int q[], int is) 冒泡排序
void disaster(route &r, int start) 随机灾害生成、路径规划
void find_current_dist(route &r, int start) 最短路径
int find_home(fire_data f,int x) 找到最佳灭火器
float best_hit_fire(fire_data f) 排序后返回最小值
void Dijkstra(route &r,int start) 迪杰斯特拉算法、最短路径
void data_map() 地图信息打印
void fire_find(fire_data &f,int n) 查询灭火器
void fire_modify(fire_data &f,int n,float k) 灭火器信息修改
void fire_all(fire_data &f) 全部灭火器信息打印及输出文件
void menu() 菜单
void read_file() 文件读取
void stack_queue(queue &s) 排队出校园
```
## 4.2功能流程图
![](https://www.writebug.com/myres/static/uploads/2021/10/28/71f6e5cebf20032bca31c66477de5d8f.writebug)
## 4.3逃生地图说明:
![](https://www.writebug.com/myres/static/uploads/2021/10/28/ed5dc2cea8f4b2abe96066b3d6f6cda6.writebug)
最初的设计中,针对标志性建筑物我进行绘图,整体的地图参考于百度地图并进行标尺比对。
图4.3
# 5.程序运行数据及其结果
## 5.1校园安防地图可视化
![](https://www.writebug.com/myres/static/uploads/2021/10/28/eccc098c58921dea7754bd0e5c1593f6.writebug)
图5.1
键盘输入数据来源,根据地图模拟打印地图信息、结合百度地图规划路径长度并存储于邻接表中
## 5.2安防教育
![](https://www.writebug.com/myres/static/uploads/2021/10/28/a676eedb5e5baf5822b6ba8b8a130697.writebug)
图5.2
采用文件读取流、将txt文件修改格式为ASCI避免中文乱码影响。修改文件存储路径为绝对路径。
## 5.3查询某处防火器材损耗
![](https://www.writebug.com/myres/static/uploads/2021/10/28/1932d7d85537c905280a81d814e241b0.writebug)
图5.3
当数据真实存在时,修改并打印损耗度,当数据非真实存在时,修改信息驳回。
![](https://www.writebug.com/myres/static/uploads/2021/10/28/8c3e63de34d14444c8a3c42b9bd9c07e.writebug)
图5.4
## 5.4查询某处防火器材损耗
当学校更换消防安全设备时,我们对损耗度进行修改(同上两种情况)
![](https://www.writebug.com/myres/static/uploads/2021/10/28/128075a4ddc616977063632576da9b69.writebug)
![](https://www.writebug.com/myres/static/uploads/2021/10/28/520a54d4691b1404d6dc49255d1168e2.writebug)
图5.5
## 5.5全部防火器材信息导出
同时,我们可以对全部的消防器材信息进行导出。
![](https://www.writebug.com/myres/static/uploads/2021/10/28/a2e76565d17a75b9c448d859d7ec27f9.writebug)
图5.6
同时,我们可以考虑将其写入到txt文件中,我们采用文件输出流的方式进行,便于后续导入到数据库中。(甚至我们可以让他变为json数据)
![](https://www.writebug.com/myres/static/uploads/2021/10/28/05a16231ae9293542b960f2147be9837.writebug)
图5.7
## 5.6逃生窗口全部路径可视化
然后我们进行全部路径可视化,从某地到某地的路劲信息以及距离,全部可视。
![](https://www.writebug.com/myres/static/uploads/2021/10/28/906cfe73ed591c75f1eb1e16d4130f34.writebug)
图5.8
之后,我们输入当前所处位置,可以查询出到逃生窗口的最短路径(分别以一道门和八道们为例子。
## 5.7逃生窗口最短路径可视化
![](https://www.writebug.com/myres/static/uploads/2021/10/28/ffb214917264fce23e6296dc43d4eec6.writebug)
![](https://www.writebug.com/myres/static/uploads/2021/10/28/72228c40fbb55d9a93b5af3fc6cb24e8.writebug)
![](https://www.writebug.com/myres/static/uploads/2021/10/28/772c549b819abe0e807553ab0a3f2064.writebug)
图5.9
利用出队与线程休眠,我们随机生成一个校门口出校人数,在安保处指挥得当的情况下,我们按每秒一个人出校门的速度排序,利用队列顺序出栈。
## 5.8躲避火源及暴恐路线(随机生成灾害点)
![](https://www.writebug.com/myres/static/uploads/2021/10/28/bf51c9845836adb0abf887d48c15e284.writebug)
当暴恐事件发生时,总有一个楼宇充满危险,所以我们随机生成一个危险地址,重新规划逃生窗口,避开危险位置。
图5.10
## 5.9最佳灭火器选择地点
之后我们利用冒泡或快排进行排序,可以查询到最低损耗度的消防器材存放位置。
![](https://www.writebug.com/myres/static/uploads/2021/10/28/a53b92d33aa3c9411ae71057839785a0.writebug)
图5.11
# 6.课程设计心得
通过这次数据结构的编程题目,使我对C语言有了更深的了解,明白了在C中数据的流动和转移方法。从最初的不知道从何入手到最后编写程序的完成,虽然耗费了我们一定的时间跟精力,但同时我们也收获硕果累累,一方面使我对函数的运用有了更加深刻的了解,对面向对象语言更深层次的掌握和应用。在初始编程的过程中,出现了许多的错误,但通过改正,借阅书本,对程序的运行方式有了进一步体会
通过课程设计让我学习到一个程序正确运行需要各个子程序正确结合,以及严密的语法结构,还要有清晰的流程图。同时,在后期,我还将继续完善这个作品,将这个作品引入c语言easyx库进行整体的地图信息路径动画化,使其更加规范的拥有可以投入生活实用的可行性,并讲整体编译转移到vscode/clion中去。
该课设目前已上传到Github开源社区并进行实时更新与维护,后期将会增加更更多的有趣功能并增加动画,课设部署网址:
![](https://www.writebug.com/myres/static/uploads/2021/10/28/73172559ea4e4ebbc599d2198b9c0830.writebug)
该课设当前部署环境包括Windows以及信创操作系统(统信UOS上)
![](https://www.writebug.com/myres/static/uploads/2021/10/28/321e32ca5652842aeea3e7bf805b9eaa.writebug)
![](https://www.writebug.com/myres/static/uploads/2021/10/28/3a0096914554417056f902d147867ca9.writebug)
附录:
```c++
#
include < stdio.h > #include < string.h > #include < stdlib.h > #include < windows.h > #define MAX_LINE 100010# define M 99999# define VNUM 15
const char * a[] = {
"中北医院", "文体中心", "龙山公园", "科艺苑", "快递站", "龙山餐厅", "文韬", "唐久", "主楼", "八道们", "大田园",
基于C语言实现的(控制台)校园灾难消防系统【100012974】
版权申诉
176 浏览量
2023-07-18
14:27:30
上传
评论
收藏 1.61MB ZIP 举报
神仙别闹
- 粉丝: 2687
- 资源: 7642
最新资源
- Python 程序语言设计模式思路-结构型模式:组合模式:将对象组合成树形结构
- 毕业设计基于python矩阵分解的推荐算法研究源码+详细文档+全部数据资料 高分项目.zip
- 基于网络的入侵检测系统源码+数据集+详细文档(高分毕业设计).zip
- 微信小程序源码 旅行故事分享 - 面包旅行App界面设计与文本展示资源下载
- 微信小程序源码 创意互动游戏 - 你画我猜App下载
- 摸底考试_学生版20230305.py
- 课程设计基于FPGA数字钟课程设计源码+课设报告(95分以上).zip
- 基于Java的企业家申报系统设计源码
- Cesium案例,集成各种模型,推演,各种Cesium效果
- 基于Python的Struts2全漏洞扫描利用工具设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈