古树名木管理系统
- 格式:doc
- 大小:308.00 KB
- 文档页数:23
基于GIS的广东省古树名木信息管理系统的设计与应用黄宁辉【摘要】将先进的GPS、GIS、数据库和计算机网络技术引入到古树名木的管理是一种创新.本文介绍了广东省古树名木信息管理系统的设计路线、关键技术、功能及应用情况.【期刊名称】《林业勘查设计》【年(卷),期】2012(000)003【总页数】3页(P110-112)【关键词】古树名木;管理信息系统【作者】黄宁辉【作者单位】广东省林业调查规划院【正文语种】中文古树名木,是指有百年以上树龄、稀有珍贵的树木,且具有历史价值或者重要纪念意义。
古树名木是林业资源的重要组成部分,是一项重要的自然资产。
随着城市规模的逐渐扩大,环境污染、病虫害等因素的影响,古树名木的生长环境受到了不同程度的破坏。
传统的古树名木管理与保护模式越来越满足不了社会发展与规划的需要,对古树名木进行数字化的管理与保护显得尤为重要。
近年来,广东省林业部门十分重视城市古树名木的管理和保护,采取科学化和信息化的手段,利用全球定位系统 (GPS)、地理信息系统 (GIS)等先进技术,开发了基于GIS的广东省古树名木信息管理系统,对全省的古树名木信息实现了数字化管理。
1 系统设计1.1 技术路线系统采用GPS-PDA进行数据采集,Sql server 2000数据库进行数据的存储管理,服务器端通过ArcSDE为应用程序提供空间数据存取及访问接口,客户端通过或ArcGIS Engine进行属性数据的存取。
局域网上系统维护及系统应用通过C/S模式实现。
图1 系统的技术路线图1.2 关键技术及特点1.2.1 采用GPS-PDA进行数据采集,可以帮助技术人员高效、快速准确地进行古树名木的导航定位,在实地调查中直接进行属性数据的录入,直接生成古树名木点状地理信息要素。
1.2.2 应用ArcGIS Engine开发古树名木管理信息系统。
ArcGIS Engine是一个地理信息系统开发工具包,开发人员可以从工具包中取出所需的组件,将其快速的组装在一起,构成所需要的应用程序。
古树名木管理系统功能及使用范围古树名木是人类文化遗产的重要组成部分,具有重要的生态、历史和文化价值。
为了保护和管理好这些珍贵的自然资源,古树名木管理系统应运而生。
本文将介绍古树名木管理系统的功能以及使用范围。
一、功能1. 古树名木信息登记:古树名木管理系统可以对各地的古树名木进行信息登记,包括树种、树龄、树高、树冠形态等基本信息,以及所在地的地理位置、保护单位等相关信息。
通过系统的信息登记功能,可以实现对古树名木的全面了解和统一管理。
2. 信息查询与浏览:用户可以通过古树名木管理系统进行古树名木的信息查询与浏览。
系统提供了多种查询方式,如按照地理位置、树种类型、保护单位等进行查询,方便用户快速找到所需信息。
3. 信息统计与分析:古树名木管理系统可以根据用户的需求,进行古树名木信息的统计与分析。
系统可以生成各类统计报表,如古树名木数量统计、树种分布情况分析等,帮助用户更好地了解古树名木的分布情况和特点。
4. 古树名木保护管理:古树名木管理系统提供了古树名木保护管理的功能。
用户可以在系统中录入古树名木的保护措施、修剪计划等信息,也可以记录古树名木的生长状况和变化情况,及时采取相应的保护措施。
5. 古树名木活动发布:古树名木管理系统可以发布古树名木保护活动的信息,包括古树名木保护讲座、参观活动等。
用户可以通过系统了解并参与相关活动,增加对古树名木保护的认识和参与度。
二、使用范围古树名木管理系统可以应用于各个层级的管理单位和个人,具有广泛的使用范围。
1. 国家级管理单位:古树名木是国家重要的自然遗产,国家级管理单位可以利用古树名木管理系统,全面了解和管理国内范围的古树名木资源。
2. 地方政府:地方政府可以利用古树名木管理系统,对本地区的古树名木进行信息登记和管理,制定相应的保护政策和措施。
3. 保护单位:古树名木保护单位可以利用古树名木管理系统,对所辖范围内的古树名木进行信息登记和管理,及时采取相应的保护措施。
浅谈古树名木保护管理古树名木作为自然遗产,是文化遗产和自然遗产的重要组成部分,它们是人类文明历史的见证和传承,具有重要的科学、生态和文化价值。
古树名木的保护管理是保护生态系统的重要一环,是防止生物多样性威胁和繁荣发展的关键一环。
古树名木保护的意义在古树名木的保护方面,应重点关注以下三个方面:1.科学保护科学保护是古树名木保护的基础,要维护其生长环境,确保其生物多样性,努力提高古树名木的健康程度。
古树名木一般具有光、温、水、土壤等一些生长环境条件,对于生长环境的改善、水土保持和病虫害防治等也必须及时加强。
2.文化保护古树名木也是人们历史文化的见证者和传承者,应该对其进行文化保护。
保护古树名木,就是保护历史、文化和传统文化的传承。
要弘扬文化历史,维护生物多样性,保护古树名木。
3.生态保护保护古树名木是保护生态系统的关键,其地位和作用也体现在生态保护上。
古树名木的保护不仅仅是对单个科目、物种的保护,还是对生态系统的维护和保护。
它相当于是一个自然生态系统中的关键生态因子,所以在保护古树名木时必须重视其生态保护的作用。
采取保护措施对古树名木进行保护,可以从以下方面入手:实行保护区划定,建立保护中心,起到重要的保护作用,对古树名木的维护会更加专业,对树木病虫害、人为破坏、树龄衰老都能够有效地保护。
2.加强管理加强对古树名木的管理,包括对生长环境的保护和修整、日常巡视、人工浇灌等,可以更好地保护树木,保持其健康。
3.普及知识对于大众普及保护古树名木的知识,宣传保护重要性可以提高公众保护意识,达到维护生态环境、防止生物多样性威胁的目的,这样才能使人们认识到保护生态环境和生物多样性的重要性。
4.建立数据库建立古树名木的数据库和监测系统,及时了解树木的生长状况,进行科学的保护和管理,防止树龄过大、病虫害等对树木造成危害。
综上所述,古树名木是具有珍贵历史、文化和自然遗产价值的生态资源。
保护古树名木,做到科学管理、文化保护和生态保护,并采取一系列措施来保护古树名木,才能得到可行的保护效益和经济效益。
北京市古树名木保护智慧管理系统(试行版)手机App安装及使用手册主管单位:首都绿化委员会办公室技术支持:北京林业大学、国家林业草原林业智能信息处理工程技术研究中心2022年10月目录一、系统安装说明 (1)(一)移动端安卓(Android)版安装说明 (1)(二)移动端iPhone(iOS)版安装说明 (3)二、系统使用说明 (3)1、手机APP(管理人员版) (4)2、手机APP(体检人员版) (13)3、手机APP(管护人员版) (43)4、手机APP(专家版) (49)5、手机APP(派单处理人员版) (55)三、联系技术支持 (62)I北京市古树名木保护智慧管理系统(试行版)手机App一、系统安装说明(一)移动端安卓(Android)版安装说明(1)安装RAR解压缩软件打开手机浏览器,用百度搜索引擎搜索“RAR”,找到“RAR解压帮手安卓免费下载”条目,点击“普通下载”如图1所示。
图 1 下载安装RAR软件询问是否下载此文件,选择“下载”。
下载完毕,点击“安装”。
提示授权点击“总是允许”,赋予访问权限。
(2)通过以下两种方式之一获取App安装文件,完成安装方式一:通过技术支持QQ群下载安装打开手机QQ,加入技术支持群(群号:477021646),如图2所示,在群文件中下载“古树名木智慧管理系统App安装文件”,解压缩后完成安装。
如果遇到安装问题,可查看QQ群文件“系统安装演示录像”,如图3所示。
图 2 从技术支持QQ群下载安装图 3 技术支持QQ群文件方式二:通过Web平台下载安装用电脑浏览器登录网址:,打开Web平台,从首页下载APP安装。
从首页还可以查看用户手册、技术支持等信息,如图4所示。
图 4 从Web平台下载安装安卓版首次下载后,后续版本支持在线升级。
(二)移动端iPhone(iOS)版安装说明目前APP已在苹果企业应用市场上架完毕。
请联系技术支持单位常润龙老师(131****6558)获得授权码,在系统自带的浏览器中打开即可完成安装。
古树名⽊信息化管理系统建设2019-09-131古树名⽊信息化管理系统建设需求古树见证着⾃然环境的变迁,被称为绿⾊⽂物和活化⽯,在城市建设中,随着建设不可避免的拆迁改造,⼀些古树名⽊已经找不到了踪影,有些古树名⽊还在建筑⼯地上没有任何防护措施,散落在社会街头及各个⾓落的古树⽣长状况令⼈堪忧,这些树⽊不同程度地存在病⾍害,树枝枯损、树根保护不⼒等情况,⼀些名⽊的枝⼲不同程度枯死。
会泽县多年来在古树名⽊保护管理过程中,收集了⼤量的数据,通过⼈⼯⼿段管理和维护这些信息资料,很难做到准确的查阅、动态监测、统计分析、开发利⽤等。
⽽应⽤先进的计算机技术和数据信息技术,可及时更新和便捷处理这些数据。
为此,2010年我们开始了会泽县古树名⽊信息管理系统的研究⼯作。
有了初步建设会泽县古树名⽊信息管理系统的需求,可依托先进的计算机技术和数据库信息技术,研发了⼀套集图像、表格、⽂字为⼀体的现代化图⽂数据管理系统。
2基本思路为了实现古树名⽊数据的动态管理及提⾼数字化⽔平,需建设的古树名⽊信息化管理系统应满⾜以下需求:(1)管理古树名⽊电⼦档案,实现档案资料的录⼊、修改以及树⽊的增加与删除。
(2)建⽴古树名⽊属性信息与空间信息的数据库。
(3)实现古树名⽊的查询定位,将图查属性与属性查图两者结合。
(4)提供报表输出打印功能。
数据库系统指在计算机系统中引⼊数据库后形成的系统。
数据库包括空间数据库和属性数据库,在两个数据库内的数据和信息进⾏更新、查询、分析统计和共享等操作。
可以⽅便在地图上查询每株古树名⽊的⽣长位置,为现场快捷查寻古树提供依据,并可根据树⽊的⽣长状况、⽣存环境、⽴地条件等指标的变化、及时更新数据库。
3技术⽀持⽬前ArcGIS和MIS技术已经成熟,各⾏业都相继建⽴⾃⼰的管理信息系统;⼀些⼤型数据库⼚商有的已在⾃⼰的数据库产品中加⼊空间数据库组建;⽹络技术也有了很⼤的发展,从技术⽅⾯为建⽴古树名⽊管理平台提供了保障。
浅谈古树名木保护中存在的问题与对策1. 引言1.1 古树名木的价值古树名木是指具有重要历史、文化和科学价值的古老树木。
这些树木不仅经历了岁月的洗礼,更承载着丰富的文化传承和历史记忆。
古树名木是自然与人类文明的交织之物,是生态系统中不可或缺的重要组成部分。
古树名木在生态环境中扮演着重要的角色。
它们承载着丰富的生物多样性,提供了物种的栖息地和食物来源。
古树名木的树干、树叶和树根也可以为土壤保持提供保护,减少水土流失和防止自然灾害的发生。
古树名木的存在可以带动整个生态系统的平衡和稳定。
古树名木承载着丰富的文化内涵和历史价值。
一棵古树可能见证过无数代人的兴衰和变迁,它们成为了历史的见证者和传承者。
古树名木还常常与古建筑、宗教寺庙、名人故居等历史遗迹相互呼应,构成了丰富多彩的人文景观。
古树名木代表着人类与自然和谐共生的理念,是我们自然与文化遗产的宝贵财富。
保护古树名木不仅是为了维护生态平衡,也是为了传承人类文明的精神财富。
我们应该倍加珍惜这些古老的生命,为它们保驾护航,让它们继续延续着历史的记忆,照亮人类前行的道路。
1.2 保护古树名木的重要性保护古树名木的重要性体现在多个方面。
古树名木是我国的传统文化遗产,承载着丰富的历史文化内涵,具有重要的历史、文化和艺术价值。
这些古树名木见证了历史的变迁,承载了许多故事和传说,是历史的见证者和传承者,对于弘扬中华文化,传承历史记忆具有重要意义。
古树名木也是生物多样性的重要组成部分,是生态系统的重要组成部分,对于保护生态平衡,维护生态环境具有重要作用。
古树名木还具有重要的科研价值和教育意义,通过对古树名木的保护和研究,可以更好地了解自然规律,推动生物科学的发展。
保护古树名木不仅仅是对自然环境的保护,更是对历史文化遗产和生物多样性的尊重。
只有加强对古树名木的保护,才能确保这些宝贵资源得到有效传承和保护,为后人留下宝贵的文化遗产和生态遗产。
在当今社会,加强古树名木保护工作已经成为当务之急,需要全社会共同努力,形成保护古树名木的良好氛围,共同致力于古树名木的保护和传承。
工程学院国脉信息学院《C语言程序设计》课程设计实验报告题目:城区古树名木信息管理系统专业:电子信息工程班级:(1)班学号:姓名:成绩:指导教师:完成日期:2011年 4 月 20 日四、系统结构图五、功能模块说明古树名木信息的录入、查询、修改、删除模块如下:1)、列表模块2)、录入模块3)查询模块4).*城区信息模块与古树名木养护信息的录入、查询、删除模块雷同。
六、运行情况1)、主菜单N开始读文件数据列出数据输入stree[i].number==s ?删除数据 Y 返回主函数 返回主函数输出数据 开始读文件数据输入numTree[i].numbe ==rnum ? 输出数据 返回主函数YN显示数据 修改数据 返回主函数一、课程设计目的1)对C各部分知识的综合应用能力2)提高程序设计的能力3)提升对于较大程序的抽象分析设计能力4)学习调试和测试的技巧二、课程设计内容1)熟悉C实验环境,按给定的上机步骤练习完成;2)熟悉C程序的编辑,编译,链接和运行的过程。
3)编译一个应用系统程序,形成一个软件系统。
三、数据结构设计及用法说明1、本程序使用到了三个struct,分别是(1)struct tree/*古树名木养护信息*/{ char number[5];/*编号*/char area[10];/*区号*/char name[100];/*树名*/char xueming[100];/*学名*/char branch[100];/*科属*/int age;/*树龄*/char day[11];/*确认时间*/int rank;/*保护级别*/char place[100];/*栽植地点*/}tree[MAX];(2)struct city/*城区信息*/{ char cityarea[7];/*区号*/char areaname[20];/*区名*/char management[30];/*主管部门*/char address[30];/*地址*/char tel[13];/*电话*/char worker[20];/*负责人*/}city[MAX];(3)struct protection/*古树名木养护信息*/{ char cityareas[7];/*区号*/char treenumber[5];/*古树名木编号*/char protecter[30];/*养护人*/char data[11];/*养护日期*/char measure[30];/*养护措施*/char state[20];/*生长状况*/}pro[MAX];2、本段程序在main函数中嵌套了所有子函数,包括“void Input();/* 古树基本信息录入*/”、“void Display();/*古树信息浏览*/、“void Find();/*古树信息查询*/”、“void Modify();/*删除*/”、“void Change();/*修改*/”、“void Inputcity();/* 城区信息录入*/”、“void Displaycity();/* 城区信息浏览*/”、“void Changecity();/* 城区信息修改*/”、“void Inputprotection();/* 养护信息录入*/”、“void Displayprotection();/* 养护信息浏览*/”、“void Changeprotection()/*修改*/”。
2)录入古树名木信息3)浏览古树名木信息4)查询古树名木信息(按古树名查找)(按编号查找)5)删除古树信息(删除后的信息浏览)6)录入城区信息6)城区信息浏览7)从城区信息中查询某城区的古树名木8)从城区信息中删除某古树名木9)录入古树名木养护信息10)浏览古树名木养护信息11)修改古树名木养护信息(修改后的古树名木养护信息浏览)12)退出系统七、设计体会和反思#include<stdio.h>#include<string.h>#include<stdlib.h>#include<conio.h>#define MAX 1000struct tree{char number[5];/*编号*/char area[10];/*区号*/char name[100];/*树名*/char xueming[100];/*学名*/char branch[100];/*科属*/int age;/*树龄*/char day[11];/*确认时间*/int rank;/*保护级别*/char place[100];/*栽植地点*/}tree[MAX];struct city{char cityarea[7];/*区号*/char areaname[20];/*区名*/char management[30];/*主管部门*/char address[30];/*地址*/char tel[13];/*电话*/char worker[20];/*负责人*/}city[MAX];struct protection{char cityareas[7];/*区号*/char treenumber[5];/*古树名木编号*/char protecter[30];/*养护人*/char data[11];/*养护日期*/char measure[30];/*养护措施*/char state[20];/*生长状况*/}pro[MAX];main()/*主函数*/{void Input();/* 古树名木基本信息录入*/void Display();/*浏览*/void Find();/*查询*/void Modify();/*删除*/void Change();/*修改*/void Inputcity();/* 城区基本信息录入*/void Displaycity();/* 城区基本信息浏览*/void Changecity();/* 城区基本信息修改*/void Inputprotection();/* 古树名木养护基本信息录入*/void Displayprotection();/* 古树名木养护基本信息浏览*/void Changeprotection();/*古树名木养护基本信息修改*/int m,n;printf("\n");printf(" 欢迎进入'城区古树名木信息管理系统' \n");printf("\n");printf("进入请按'1':");scanf("%d",&m);if(m==1){for(;;){printf("\n");printf(" 主菜单\n");printf("\n");printf(" 【1.古树信息录入】\n");printf(" 【2.古树信息浏览】\n");printf(" 【3.古树信息查询】\n");printf(" 【4.古树信息删除】\n");printf(" 【5.古树信息修改】\n");printf(" 【6.城区基本信息录入】\n");printf(" 【7.城区基本信息浏览】\n");printf(" 【8.城区基本信息修改】\n");printf(" 【9.古树名木养护基本信息录入】\n");printf(" 【10.古树名木养护基本信息浏览】\n");printf(" 【11.古树名木养护基本信息修改】\n");printf(" 【12.退出系统】\n");printf("请输入选择项(1-12):");scanf("%d",&n);printf("\n\n");if(n>0&&n<13){switch(n){case 1:Input();break;case 2:Display();break;case 3:Find();break;case 4:Modify();break;case 5:Change();break;case 6:Inputcity();break;case 7:Displaycity();break;case 8:Changecity();break;case 9:Inputprotection();break;case 10:Displayprotection();break;case 11:Changeprotection();break;case 12:printf(" 谢谢使用! \n");printf("\n");printf(" 再见! \n");printf(" \n");exit(0);}}else{printf(" \n");printf(" 输入错误! \n");printf("\n");printf(" 请退出! \n");printf(" \n");break;}}}else{ printf("\n\n\n\n");printf(" 输入错误! \n");printf("\n");printf(" 再见! \n");}}void Find()/*查询*/{FILE *fp;int i;int choose,t;char ans[100];do{printf("1.按古树名查找\n");printf("\n");printf("2.按编号查找\n");printf("\n");printf("返回主菜单(其他数字)\n");printf("\n");scanf("%d",&choose);if(choose==1){printf("输入所查古树名:\n");scanf("%s",ans);t=-1;if(choose==1){for(i=0;i<MAX;i++) if(strcmp(ans,tree[i].name)==0){t=i;fp=fopen("tree","rb");for(i=0;fread(&tree[i],sizeof(struct tree),1,fp)==1;i++)printf("%5s %5s %8s %8s %8s %2d %8s %8d %8s\n",tree[t].number,tree[t].area,tree[t].name ,tree[t].xueming,tree[t].branch,tree[t].age,tree[t].day,tree[t].rank,tree[t].place);}}if(t==-1) printf("不存在该信息\n");}else if(choose==2){printf("输入所查编号:\n");scanf("%s",ans);t=-1;if(choose==2){for(i=0;i<MAX;i++)if(strcmp(ans,tree[i].number)==0){ t=i;fp=fopen("tree","rb");for(i=0;fread(&tree[i],sizeof(struct tree),1,fp)==1;i++)printf("%5s %5s %8s %8s %8s %2d %8s %8d %8s\n",tree[t].number,tree[t].area,tree[t].name ,tree[t].xueming,tree[t].branch,tree[t].age,tree[t].day,tree[t].rank,tree[t].place);}}if(t==-1) printf("不存在该信息\n");}else return ;}while(1);}void Display()/*浏览*/{FILE *fp;int i;fp=fopen("tree","rb");printf("\n\n\n\n");printf(" 古树信息\n");printf("--------------------------------------------------------------------------------\n");printf("编号区号树名学名科属树龄确认时间保护级别栽植地点\n");printf("--------------------------------------------------------------------------------\n");for(i=0;fread(&tree[i],sizeof(struct tree),1,fp)==1;i++){printf("%5s %5s %8s %8s %8s %2d %8s %8d %8s\n",tree[i].number,tree[i].area,tree[i].name ,tree[i].xueming,tree[i].branch,&tree[i].age,tree[i].day,&tree[i].rank,tree[i].place);}fclose(fp);}void Input()/*输入*/{FILE *fp;int n;fp=fopen("tree","wb");for(n=0;n<MAX;n++){printf("n=%d 输入序号n(当输入n=-1时,返回),n=",n++);scanf("%d",&n);printf("\n");if(n==-1){fclose(fp);return;}else{printf("编号区号树名学名科属树龄确认时间保护级别栽植地点\n");scanf("%s %s %s %s %s %d %s %d %s",&tree[n].number,tree[n].area,tree[n].name,tree[n].x ueming,tree[n].branch,&tree[n].age,&tree[n].day,&tree[n].rank,tree[n].place);printf("\n");fwrite(&tree[n],sizeof(struct tree),1,fp);}fclose(fp);}void Modify()/*删除*/{FILE *fp;int i,flag,n,j;char s[5];fp=fopen("tree","rb+");rewind(fp);printf("\n\n");printf(" 古树信息\n");printf("--------------------------------------------------------------------------------\n");printf("编号区号树名学名科属树龄确认时间保护级别栽植地点\n");printf("--------------------------------------------------------------------------------\n");for(i=0;fread(&tree[i],sizeof(struct tree),1,fp)==1;i++){printf("%5s %5s %8s %8s %8s %2d %8s %8d %8s\n",tree[i].number,tree[i].area,tree[i].name ,tree[i].xueming,tree[i].branch,tree[i].age,tree[i].day,tree[i].rank,tree[i].place);}n=i;printf("输入待删除古树编号:\n");scanf("%s",&s);for(i=0,flag=1;flag&&i<n;i++){if(strcmp(s,tree[i].number)==0){for(j=i;j<n-1;j++){strcpy(tree[j].area,tree[j+1].area);strcpy(tree[j].number,tree[j+1].number);strcpy(tree[j].name,tree[j+1].name);strcpy(tree[j].xueming,tree[j+1].xueming);strcpy(tree[j].branch,tree[j+1].branch);tree[j].age=tree[j+1].age;strcpy(tree[j].day,tree[j+1].day);tree[j].rank=tree[j+1].rank;strcpy(tree[j].place,tree[j+1].place);}flag=0;}if(!flag)n=n-1;elseprintf("没有此号\n");fp=fopen("tree","wb");for(i=0;i<n;i++)fwrite(&tree[i],sizeof(struct tree),1,fp);fclose(fp);fp=fopen("tree","r");printf("\n\n");printf(" 古树信息\n");printf("--------------------------------------------------------------------------------\n");printf("编号区号树名学名科属树龄确认时间保护级别栽植地点\n");printf("--------------------------------------------------------------------------------\n");for(i=0;i<n;i++){fread(&tree[i],sizeof(struct tree),1,fp);printf("%5s %5s %8s %8s %8s %2d %8s %8d %8s\n",tree[i].number,tree[i].area,tree[i].name ,tree[i].xueming,tree[i].branch,tree[i].age,tree[i].day,tree[i].rank,tree[i].place);printf("\n");}fclose(fp);}void Change()/*修改*/{FILE *fp;int i,n;char number[5];int flag=0;printf("请输入要修改的古树编号:");scanf("%d",&number);for(i=0;i<=MAX;i++)if(strcmp(number,tree[i].number)==0){printf("\n\n");printf(" 古树信息\n" );printf("--------------------------------------------------------------------------------\n");printf("编号区号树名学名科属树龄确认时间保护级别栽植地点\n");printf("--------------------------------------------------------------------------------\n");printf("%5s %5s %8s %8s %8s %2d %8s %8d %8s\n",tree[i].number,tree[i].area,tree[i].name ,tree[i].xueming,tree[i].branch,tree[i].age,tree[i].day,tree[i].rank,tree[i].place);printf("--------------------------------------------------------------------------------------------------\n\n");n=i;flag=1;break;}if(flag==0){printf("\n\n");printf(" 输入错误!\n");printf("\n");printf(" 请返回!\n");printf("\n");return;}printf("\n\n");fp=fopen("tree","rb+");fseek(fp,n*sizeof(struct tree),0);printf("编号区号树名学名科属树龄确认时间保护级别栽植地点\n");scanf("%s %s %s %s %s %d %s %d %s",&tree[n].number,tree[n].area,tree[n].name,tree[n].x ueming,tree[n].branch,&tree[n].age,&tree[n].day,&tree[n].rank,tree[n].place);fwrite(&tree[i],sizeof(struct tree),1,fp);fclose(fp);fp=fopen("tree","rb");printf("\n\n");printf(" 古树信息\n");printf("--------------------------------------------------------------------------------\n");printf("编号区号树名学名科属树龄确认时间保护级别栽植地点\n");printf("--------------------------------------------------------------------------------\n");for(i=0;fread(&tree[i],sizeof(struct tree),1,fp)==1;i++){printf("%5s %5s %8s %8s %8s %2d %8s %8d %8s\n",tree[i].number,tree[i].area,tree[i].name ,tree[i].xueming,tree[i].branch,tree[i].age,tree[i].day,tree[i].rank,tree[i].place);}printf("----------------------------------------------------------------------------------\n\n");fclose(fp);}void Inputcity()/* 城区基本信息录入*/{FILE *fp;int n;fp=fopen("city","wb");for(n=0;n<MAX;n++){printf("n=%d 输入序号n(当输入n=-1时,返回),n=",n++);scanf("%d",&n);printf("\n");if(n==-1){fclose(fp);return;}else{printf(" 区号区名主管部门地址电话负责人\n");scanf("%s %s %s %s %s %s",city[n].cityarea,city[n].areaname,city[n].management,city[n].ad dress,city[n].tel,city[n].worker);printf("\n");fwrite(&city[n],sizeof(struct city),1,fp);}}fclose(fp);}void Displaycity()/* 城区基本信息浏览*/{void Modify();/*删除*/FILE *fp;int i,j,m,t,choose,cho;char ans[7];fp=fopen("city","rb");printf("\n");printf(" 城区基本信息\n");printf("-------------------------------------------------------\n");printf(" 区号区名主管部门地址电话负责人\n");printf("-------------------------------------------------------\n");for(i=0;fread(&city[i],sizeof(struct city),1,fp)==1;i++){printf("%s %s %s %s %s %s\n",city[i].cityarea,city[i].areaname,city[i].management,city[i].address,city[i].tel,city[i].worker);}printf("\n");printf("要查询某城区的古树名木目录请按1(返回主菜单请按其他数字):\n");scanf("%d",&choose);if(choose==1){printf("输入区号:\n");scanf("%s",ans);t=-1;if(choose==1){for(j=0;j<MAX;j++)if(strcmp(ans,city[j].cityarea)==0){for(m=0;m<MAX;m++)if(strcmp(city[j].cityarea,tree[m].area)==0){t=m;fp=fopen("tree","rb");printf("\n");printf(" 古树信息\n");printf("--------------------------------------------------------------------------------\n");printf("编号区号树名学名科属树龄确认时间保护级别栽植地点\n");printf("--------------------------------------------------------------------------------\n");for(m=0;fread(&tree[m],sizeof(struct tree),1,fp)==1;m++){printf("%5s %5s %8s %8s %8s %2d %8s %8d %8s\n",tree[t].number,tree[t].area,tree[t].name ,tree[t].xueming,tree[t].branch,tree[t].age,tree[t].day,tree[t].rank,tree[t].place);}}}printf("\n若要删除有关古树信息请按1(按其他数字返回):");scanf("%d",&cho);if(cho==1)Modify();else if(t==-1) printf("不存在该信息\n");}else return;}fclose(fp);}void Inputprotection()/* 古树名木养护基本信息录入*/{FILE *fp;int n;fp=fopen("protection","wb");for(n=0;n<MAX;n++){printf("n=%d 输入序号n(当输入n=-1时,返回),n=",n++);scanf("%d",&n);printf("\n");if(n==-1){fclose(fp);return;}else{printf("编号区号养护人养护日期养护措施生长状况\n");printf("------------------------------------------------------------\n");scanf("%s %s %s %s %s %s",pro[n].treenumber,pro[n].cityareas,pro[n].protecter,pro[n].data,pro[n ].measure,pro[n].state);printf("------------------------------------------------------------\n");fwrite(&pro[n],sizeof(struct protection),1,fp);}}fclose(fp);}void Changecity()/* 城区基本信息修改*/{FILE *fp;int i,n;char areanum[7];int flag=0;printf("请输入要修改信息的城区区号:");scanf("%s",&areanum);for(i=0;i<=MAX;i++)if(strcmp(areanum,city[i].cityarea)==0){printf("\n");printf(" 城区基本信息\n" );printf("------------------------------------------------------\n");printf(" 区号区名主管部门地址电话负责人");printf("-------------------------------------------------------\n");printf("%7s %s %s %s %s %s\n",city[i].cityarea,city[i].areaname,city[i].management,city[i].a ddress,city[i].tel,city[i].worker);printf("-----------------------------------------------------\n");n=i;flag=1;break;}if(flag==0){printf("\n");printf(" 输入错误!\n");printf("\n");printf(" 请返回!\n");printf("\n");return;}else{printf("\n");fp=fopen("city","rb+");fseek(fp,n*sizeof(struct city),0);printf(" 区号区名主管部门地址电话负责人\n");scanf("%s %s %s %s %s %s",city[n].cityarea,city[n].areaname,city[n].management,city[n].ad dress,city[n].tel,city[n].worker);fwrite(&city[i],sizeof(struct city),1,fp);fclose(fp);fp=fopen("city","rb");printf("\n\n\n\n");printf(" 城区基本信息\n ");printf("-------------------------------------------------------\n");printf(" 区号区名主管部门地址电话负责人\n");printf("-------------------------------------------------------\n");for(i=0;fread(&city[i],sizeof(struct city),1,fp)==1;i++){printf("%7s %s %s %s %s %s",city[i].cityarea,city[i].areaname,city[i].management,city[i].ad dress,city[i].tel,city[i].worker);}printf("-----------------------------------------------------\n");fclose(fp);}}void Displayprotection()/* 古树名木养护基本信息浏览*/{FILE *fp;int i;fp=fopen("protection","rb");printf("\n");printf(" 古树名木养护基本信息\n" );printf("-----------------------------------------------------------\n");for(i=0;fread(&pro[i],sizeof(struct protection),1,fp)==1;i++){printf("古树名木编号:%s\n",pro[i].treenumber);printf("区号: %s\n",pro[i].cityareas);printf("养护人: %s\n",pro[i].protecter);printf("养护日期:%s\n",pro[i].data);printf("养护措施:%s\n",pro[i].measure);printf("生长状况:%s\n",pro[i].state);printf("----------------------------------------------------------\n");}fclose(fp);}void Changeprotection()/* 古树名木养护基本信息修改*/{FILE *fp;int i,n;char number[5];int flag=0;printf("请输入要修改养护信息的古树名木编号:");scanf("%s",&number);for(i=0;i<=MAX;i++)if(strcmp(number,pro[i].treenumber)==0){printf("\n");printf(" 古树名木养护基本信息\n" );printf("-------------------------------------------------------------------------\n");printf("古树名木编号:%s\n",pro[i].treenumber);printf("区号:%s\n",pro[i].cityareas);printf("养护人:%s\n",pro[i].protecter);printf("养护日期:%s\n",pro[i].data);printf("养护措施:%s\n",pro[i].measure);printf("生长状况:%s\n",pro[i].state);printf("-------------------------------------------------------------------------\n");n=i;flag=1;break;}if(flag==0){printf("\n");printf(" 输入错误!\n");printf("\n");printf(" 请返回!\n");printf("\n");return;}printf("\n");fp=fopen("protection","rb+");fseek(fp,n*sizeof(struct protection),0);printf("编号: ");scanf("%s",pro[n].treenumber);printf("区号: ");scanf("%s",pro[n].cityareas);printf("养护人: ");scanf("%s",pro[n].protecter);printf("养护日期:");scanf("%s",pro[n].data);printf("养护措施:");scanf("%s",pro[n].measure);printf("生长状况:");scanf("%s",pro[n].state);fwrite(&pro[i],sizeof(struct protection),1,fp);fclose(fp);fp=fopen("protection","rb");printf("\n");printf(" 古树名木养护基本信息\n");printf("---------------------------------------------------------------\n");for(i=0;fread(&pro[i],sizeof(struct protection),1,fp)==1;i++){printf("编号:");printf("%s\n",pro[i].treenumber);printf("区号:");printf("%s\n",pro[i].cityareas);printf("养护人:");printf("%s\n",pro[i].protecter);printf("养护日期:");printf("%s\n",pro[i].data);printf("养护措施:");printf("%s\n",pro[i].measure);printf("生长状况:");printf("%s\n",pro[i].state);}printf("---------------------------------------------------------------\n");fclose(fp);}。