毕业设计论文学生宿舍管理系统之宿舍分配、调整和回收.doc

上传人:sccc 文档编号:4876918 上传时间:2023-05-21 格式:DOC 页数:29 大小:1.03MB
返回 下载 相关 举报
毕业设计论文学生宿舍管理系统之宿舍分配、调整和回收.doc_第1页
第1页 / 共29页
毕业设计论文学生宿舍管理系统之宿舍分配、调整和回收.doc_第2页
第2页 / 共29页
毕业设计论文学生宿舍管理系统之宿舍分配、调整和回收.doc_第3页
第3页 / 共29页
毕业设计论文学生宿舍管理系统之宿舍分配、调整和回收.doc_第4页
第4页 / 共29页
毕业设计论文学生宿舍管理系统之宿舍分配、调整和回收.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《毕业设计论文学生宿舍管理系统之宿舍分配、调整和回收.doc》由会员分享,可在线阅读,更多相关《毕业设计论文学生宿舍管理系统之宿舍分配、调整和回收.doc(29页珍藏版)》请在三一办公上搜索。

1、毕业论文(设计)题 目:宿舍管理系统 之宿舍分配、调整和回收学 号: 姓 名: 系 别: 专业班级: 指导教师: 完成时间: 2011年 4 月 10 日 摘 要ABSTRACT第一章 功能分析11.1 功能需求11.1.1 基本功能需求11.1.2 基础数据11.1.3 信息维护11.1.4 用户界面需求11.2 性能需求11.2.1系统安全性11.2.2开发环境21.2.3 系统逻辑模型21.3 本章小结3第二章 相关知识点介绍42.1 软件工程42.2 C#知识介绍42.3 SQL Server 200842.4 本章小结5第三章 模块设计63.1 目标系统体系结构63.1.1 高校宿舍

2、管理系统软件结构图63.1.2基础数据模块结构图6第四章 模块详细设计74.1 系统功能模块图74.1.1 系统登陆模块74.1.2 系统管理模块74.1.3 宿舍分配模块74.1.4 宿舍调整模块84.1.5 宿舍回收模块84.2 系统的E-R图8第五章 数据库设计85.1 逻辑设计95.1.1 表单设计95.1.2 数据库关系设计11第六章 用户界面设计126.1 界面设计126.1.1 主界面具体模块126.1.2 登录界面设计126.1.3 宿舍分配136.1.4 宿舍分配146.1.5 宿舍回收156.1.6 超级管理员验证登陆166.1.7 修改管理员信息166.1.8 宿舍的智能

3、分配17第七章 模块测试217.1 白盒测试217.2单元测试217.3用户测试21结 论22总 结22致 谢23参考文献24参考附件248.1 附件A:主要代码248.2 附件B:软件使用说明书24摘 要在当今信息技术迅猛发展,知识更替日新月异的时代,信息技术为企业的发展提供了机遇,也带来了挑战。使用传统人工的方式管理排课存在着许多缺点,而使用计算机对人事信息进行管理,有着手工管理所无法比拟的优点,这些优点能够极大地提高人事信息管理的效率,也是企业走向科学化、正规化管理,与世界接轨的重要条件。高校学生宿舍管理系统的开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于后台数据

4、库的建立和维护要求建立起数据一致性和完整性强、数据安全性好的库。而对于前端应用程序的开发则要求应用程序能提供强大的数据操纵功能,界面友好、使用简单方便等特点。旧的手工纪录的宿舍管理方式已经不能适应高速发展的信息化时代,新的宿舍管理模块开发出来之后,学校的现有的宿舍信息管理将有很大的改观,由过去的人工方式转变为计算机方式,由效率低、数据冗余、易产生错误转变为检索迅速、查找方便、可靠性高、存储量大。这些优点能够极大地提高效率,也是学校科学化、正规化管理的重要条件。本模块是采用Microsoft Visual Studio 2008作为前台开发工具,SQL Server2008作为后台数据库平台的管

5、理系统。关键词 高校宿舍管理系统:Microsoft Visual Studio 2008;SQL Server2008AbstractIn todays rapid development of information technology, knowledge of the era of rapid change, information technology for the development of enterprise opportunities and challenges. The use of traditional management Timetable manually

6、, there are many shortcomings, and the use of computer information of personnel management, management can not be compared with hand the advantages of these benefits can greatly improve the efficiency of information management personnel as well as scientific enterprises, the informal management, and

7、 an important condition for the rest of the world. College student hostel management system including the background of the establishment and maintenance of database and application development front-end aspects. For the background of the establishment and maintenance of the database request to esta

8、blish data consistency and integrity, and data security of a good library. As for the front-end application requires the development of applications to provide powerful data manipulation capabilities, user-friendly, simple and easy to use. Manual records of the old hostel management has been unable

9、to adapt rapidly developing information age, the new hostel management system developed, the schools existing information management of the hostel will have a huge change from the past into the computer manually way, by the low efficiency, data redundancy and easy to generate an error into a search

10、prompt to find convenient, high reliability and large storage capacity. These advantages can greatly improve efficiency, but also schools scientific and standardized management of important conditions. The system is using Microsoft Visual Studio 2008 development tools as the future, SQL Server2008 a

11、s the back-end database management system platform. Keywords college dormitory management system: Microsoft Visual Studio 2008; SQL Server2008第一章 功能分析1.1 功能需求1.1.1 基本功能需求本模块主要实现的是寝室管理模块的宿舍分配、调整和回收,在设计时要尽可能贴近寝室问题,方便用户操作。具体基本功能如下:1、模块要求用户必须输入正确的用户名和密码才能进入系统。2、模块应该提供添加用户和用户的修改,删除功能。3、模块应提供学生入住寝室的功能和查询,

12、修改和删除功能。4、模块应提供学生寝室的调整功能,符号条件的床位进行调整。5、在添加用户时应提供是否存在此用户,不存在则添加,否则不予添加。6、模块既要提供批量宿舍的回收,也要提供个别宿舍的回收。7、模块还应提供宿舍智能分配功能。1.1.2 基础数据在整体设计中,我们将宿舍管理系统分为五个大的模块:系统登录模块、系统管理模块、宿舍手动分配模块、宿舍自动分配模块、宿舍调整模块、宿舍回收模块、每个模块将实现不同的功能。1.1.3 信息维护对宿舍进行维护,可对已存在的信息进行修改与删除操作,避免由于工作失误造成的信息录入错误,及时更改存储数据中存在的不足之处,使管理者时刻可以接收到第一手的变动资料,

13、便于对学校宿舍的管理。1.1.4 用户界面需求高校学生宿舍管理系统应提供简单、层次关系明了、清晰的操作界面,使用户一目了然。尽可能的为用户的录入、查询等功能操作提供方便。在设计方面最好不要让用户手动输入,即使必须手动输入,那么也只需输入少量的数字或字符就能完成功能。1.2 性能需求1.2.1系统安全性1、在添加管理员时要保证用户名不能重复,只有正确输入用户和密码才能进入本系统。没有管理员用户和密码的不能进入本系统。2、在添加信息时要提示一些必须填写的数据必须填,否则不予添加。3、退出系统应该是安全退出,不出现任何意外。4、确保再对数据进行操作时不会出息任何错误。5、保证每个客户端读取的数据都是

14、有效的,即不读脏数据。1.2.2开发环境本系统是以Windows 2008 Server系统为开发平台,用Visual Studio.NET中的C#编程语言和SQL Server 2008数据库来实现高校学生宿舍管理系统所需的功能。1.2.3 系统逻辑模型数据流程图描述数据流动、存储、处理的逻辑关系,也称为逻辑数据流程图,一般用DFD(Data Flow Diagram)表示。它有抽象性和概括性两个特性。它是一个分层的模型工具,它分为3个层次:总体图、零级图和细节图,分别描述系统的不同特征。数据流程图使用4种图形符号,表示为: 外部实体 数据处理 数据流 数据存储图2.1数据流程图图例图2.2

15、系统总体图图2.3系统零级图图2.4系统细节图1.3 本章小结本章具体介绍了系统的功能分析,包括功能需求和性能需求。通过对系统的需求分析得出了系统的总体设计,确定了系统的开发框架。本章对系统的功能作了简单的描述,得出了系统的主体流程。通过对系统的各项分析,得出了实现系统功能的基本方法,并确定使用的开发工具。第二章 相关知识点介绍2.1 软件工程软件工程是指导计算机软件开发和维护的一门学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效的维护它。(1) 软件工程的基本原理1、用分析阶段的

16、生命周期计划严格管理。2、坚持进行阶段评审。3、实行严格的产品控制。4、采用现代的程序设计技术。5、结果应能清楚地审查。6、开发小组的人员应该少而精。7、承认不断改进软件工程实践的必要性。2.2 C#知识介绍Visual Studio.NET 是Microsoft公司开发的一套完整的开发工具,用于生成 ASP Web 应用程序、XML Web services、桌面应用程序和移动应用程序。它包括:Visual Basic.NET、Visual C+.NET、Visual C#.NET 和 Visual J#.NET 等,而C#就是其中的一种。Microsoft C#(读作 C sharp)是一

17、种新的编程语言,它是为生成运行在 .NET Framework 上的、广泛的企业级应用程序而设计的。C# 从 Microsoft C 和 Microsoft C+ 演变而来,它是一种简单、现代、类型安全和面向对象的语言。C# 代码被作为托管代码编译,这意味着它能够从公共语言运行库的服务中受益。这些服务包括:语言互操作性、垃圾回收、增强的安全性以及改进的版本支持。C# 在 Visual Studio.NET 套件中作为 Visual C# 引入。对 Visual C# 的支持包括项目模板、设计器、属性页、代码向导、一个对象模型以及开发环境的其它功能。Visual C# 编程的库是 .NET Fr

18、amework。2.3 SQL Server 2008SQL Server 2008出现在微软数据平台上是因为它使得公司可以运行他们关键任务的应用程序,同时降低了管理数据基础设施和发送观察和信息给所有用户的成本。 这个平台有以下特点: 可信任的使得公司可以以很高的安全性、可靠性和可扩展性来运行他们关键任务的应用程序。 高效的使得公司可以降低开发和管理他们的数据基础设施的时间和成本。 智能的提供了一个全面的平台,可以在你的用户需要的时候给他发送观察和信息。2.4 本章小结本章重点介绍了开发“管理系统”所使用的开发工具与应用的数据库系统。对C# 的发展与相关控件技术进行了系统的介绍。SQL Ser

19、ver 2008 作为应用最广泛的数据库系统,它最大限度的支持了系统的需求,实现了系统的各项功能。两种工具有机的结合开发出的系统恰好地满足了用户的需求。第三章 模块设计3.1 目标系统体系结构3.1.1 高校宿舍管理系统软件结构图图4.1高校宿舍管理系统功能结构图3.1.2基础数据模块结构图图4.2基础数据结构图4.1.2 信息维护模块结构图图4.3信息维护结构图第四章 模块详细设计4.1 系统功能模块图图5.1系统功能模块UML用例图宿舍管理系统分为五个大的模块:系统登陆模块、系统管理模块、宿舍分配模块、宿舍调整模块、宿舍回收模块、每个模块将实现不同的功能,下面分别介绍每个模块。4.1.1

20、系统登陆模块登陆模块分为:超级用户登陆,普通用户登陆。1、 普通用户只有登陆系统的权限,给定的密码,用户名是不能修改的,这样也进一步保证的系统的安全性。2、 超级用户不仅有登录系统的权利,在验证超级用户身份后,还可以修改普通用户的用户名和密码。一般超级用户只能个别人拥有,如果需要修改登录信息,就必须提出申请给超级用户。4.1.2 系统管理模块系统管理模块为超级用户管理,其他用户无需管理。超级用户管理其它普通用户,但超级用户之间不能互相管理,即在一个超级用户登录时,不能看到其它超级用户的账号和密码。4.1.3 宿舍分配模块1、无需手动输入年级、系别、班级、宿舍号等。只需输入学号和姓名,在输入学号

21、时,只允许输入数字。2、在输入具体的床位后,检查这个床位是否可用,如果可用,则分配,否则不与分配。4.1.4 宿舍调整模块1、输入原来的床位信息:核实学生信息,避免错误调整。2、输入调整后的床位信息:核实该床位是否为空,如果为空,则允许调整。4.1.5 宿舍回收模块宿舍回收模块包括:批量回收,个别回收。1、 批量回收的条件只需选择年级(本科/专科)和系别就可以进行回收,还可以选择班级和性别。这样更人性化。2、 个别回收需要输入学号和姓名,验证正确性和出具相关证明后,给予回收,比如某同学中途退学等意外情况发生时的处理。4.2 系统的E-R图普通管理员超级管理员楼 房寝 室用户名密 码密 码用户名

22、管理NN管理NN包含N1寝室号床位号楼 号楼层号图5.2系统E-R图第五章 数据库设计数据库设计的意义由数据库结构设计的好坏来决定,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响,好的数据库结构设计会减少数据库的存储量,数据的完整性和一致性相比较高,系统具有较快的响应速度,能够简化基于此数据库应用程序的实现等等。5.1 逻辑设计数据库中应该有普通管理员表,超级管理员表,学生寝室表。每个表的字段在下面将详细介绍。5.1.1 表单设计1、 普通管理员结构表(user_id)表 6.1普通管理员表列表名字段名主键字段大小用户名yonghuming是Varchar(10)密 码p_w

23、ord否Varchar(10)普通管理员样表(uer_id)表6.2 普通管理员样表2、 超级管理员结构表(Super_admin)表6.3 超级管理员表 超级管理员样表(Super_admin)表6.4 超级管理员样表3、 学生寝室结构表(stu_mag)表6.5 学生寝室表列表名字段名主键字段大小学号Sno是char(11)姓名Sname否nchar(10)年级Grade否nchar(10)系别D_pat否nchar(10)班级Class否nchar(1)宿舍号Dormitory否nchar(12)房间号Room否nchar(3)床位号Beds否nchar(1)性别Sex否nchar(2)

24、入住时间Time否nvarchar(50)学生寝室样表(stu_mag)表6.6 学生寝室样表5.1.2 数据库关系设计图6.1宿舍管理系统关系图第六章 用户界面设计6.1 界面设计6.1.1 主界面具体模块在系统功能模块介绍时,我把整个系统分为宿舍管理,管理账号两个模块。如下图是我的宿舍管理系统的主界面:图7.1 具体模块6.1.2 登录界面设计图7.2 登录界面设计设计思想:当进入宿舍管理系统时必须在登录对话框中输入正确的用户名和密码才能进入主窗体。具体实现: (1).在实现该功能模块时,需要添加一个Windows窗体,使起Name为Login.cs,修改Text属性为“用户登录”,调整窗

25、体大小,修改MaximizeBox属性为false和添加相应的label控件、textBox控件、pictureBox控件、timer控件和button控件,并修改相关的属性使其如图7.2界面。(2).在实现登录功能时,需要用到用户表uer_id,在窗体的Load事件和命令按钮的Click事件中分别写入相应的代码来实现登录功能。(3).设置pictureBox控件为滚动显示。方法:添加一个timer,在Click事件中写入如下代码:if (pictureBox1.Location.X 296) pictureBox1.Left = pictureBox1.Left + 1; else pict

26、ureBox1.Left = 12; 6.1.3 宿舍分配图7.3 宿舍的分配设计思想:输入完整的信息后点击分配,然后跟新数据库。在没有输入完整信息时,点击分配,提示“请输入完整信息!”。具体实现: (1). 在实现该功能模块时,需要添加一个Windows窗体,使起Name为assign.cs,修改Text属性为“分配宿舍”,调整窗体大小,修改MaximizeBox属性为false和添加相应的label控件、textBox控件、pictureBox控件、DataGridView控件、panel、groupBox控件、comboBox控件和button控件,并修改相关的属性使其如图7.3界面。(

27、2).在输入信息时,为了使用户操作方便,除了学号和姓名外,所有信息都可以选择。在选择信息的同时在DataGridView控件中动态跟新宿舍信息,性别选择上,默认为男。(3).在按钮button上设置为条件,只有当信息完整和床位为空时,才跟新数据库。6.1.4 宿舍分配图7.4 宿舍调整输入原宿舍 图7.5 宿舍调整后的宿舍号设计思想: 在拿到相关证明后,填写原来宿舍信息和调整后的信息,点击分配。具体实现: (1).在实现该功能模块时,需要添加一个Windows窗体,使起Name为adjustment.cs,修改Text属性为“宿舍调整”,调整窗体大小,修改MaximizeBox属性为false

28、和添加相应的label控件、textBox控件、pictureBox控件、DataGridView控件、panel控件、comboBox控件、groupBox控件和button控件,并修改相关的属性使其如图7.4和图7.5界面。(2).在选择了宿舍号、房间号、床号后,该床的学生信息,自动加到下面的textbox控件中,并在DataGridView控件显示详细信息。在选择调整宿舍的信息后,如果床位为空,则允许调整。(3).在此模块中用到了两个DataGridView控件,而这两个DataGridView控件不能同步,所以要建立两个数据链接,使两个DataGridView控件独立。6.1.5 宿舍

29、回收图7.6 宿舍回收设计思想:宿舍回收要有批量回收和个别回收。具体实现:(1).在实现该功能模块时,需要添加一个Windows窗体,使起Name为recycle.cs,修改Text属性为“宿舍回收”,调整窗体大小,修改MaximizeBox属性为false和添加相应的label控件、textBox控件、pictureBox控件、DataGridView控件、panel控件、groupBox控件、comboBox控件和button控件,并修改相关的属性使其如图图7.6界面。(2).批量回收时,必须要输入年级和系别,班级和性别可以根据需要选择。在个别回收中,输入姓名和学号后,如果找到该生信息,就

30、会显示找到信息,详细信息后就会弹出DataGridView控件,显示具体的信息。6.1.6 超级管理员验证登陆图7.7 超级管理员验证设计思想:有了这超级管理员验证,提高安全性。具体实现:(1).在实现该功能模块时,需要添加一个Windows窗体,使起Name为admin.cs,修改Text属性为“超级管理员验证”,调整窗体大小,修改MaximizeBox属性为false和添加相应的label控件、textBox控件和button控件,并修改相关的属性使其如图图7.7界面。(2).输入用户名和密码后,与Super_admin数据表中的内容进行对比,如果验证成功,则允许登陆。6.1.7 修改管理

31、员信息图7.8 修改管理员信息设计思想:在超级管理员验证成功后,就可以修改普通管理员信息,还可以添加新的管理员。具体实现: (1).在实现该功能模块时,需要添加一个Windows窗体,使起Name为amendment.cs,修改Text属性为“修改管理员信息”,调整窗体大小,修改MaximizeBox属性为false和添加相应的DataGridView控件和button控件,并修改相关的属性使其如图图7.8界面。(2).利用DataGridView控件提供的列表来修改数据库,需要几个要点。1、将user_id表中的yonghuming设置没主键。2、在打开此窗口时,初始化一个Dataset,将

32、SqlDataAdapter检索到的数据放到Dataset(SqlDataAdapter.Fill(Dataset,“表名”)中。3、再将Dataset数据加载到DataGridView控件中。(做这个比较麻烦的原因是因为,在自动添加的DataGridView控件,不能对数据进行修改,即使修改数据也是只修改了表层数据,没有对数据库中的数据进行修改。所以,要手动将实际的数据表加载到DataGridView控件中。)4、最后,创建一个适配器SqlCommandBuilder,用于对数据库的更改。5、点击button控件,同时更新DataGridView控件列表和数据表中的内容。6.1.8 宿舍的智

33、能分配图7.8宿舍智能分配设计思想: 在学生宿舍分配时,如果系统能够提供分配信息,那么不仅能减少很多的工作量,而且还能保证不会由于输入错误而导致分配错误。所以,我设计了一个能够提供宿舍信息的模块。具体实现: 1、在实现该功能模块时,需要添加一个Windows窗体,使起Name为Autoassign.cs,修改Text属性为“宿舍智能分配”,调整窗体大小,添加相应的label控件、textBox控件、DataGridView控件3个、combox控件和button控件,并修改相关的属性使其如图图7.8界面。 2、实现智能(1)、将DataGridView当作一个显示平台,不用绑定(banding

34、)数据源。要使用数据时,动态生成想要的数据。(2)、在用户输入年级,系别,班级后点击查看详细信息,那么系统就自动生成三个供用户选择的宿舍信息,第一个是最好的选择,它是选择分配到该班级现有的房间中。第二个是选择分配到该系所在的宿舍中,这种情况一般是该生是第一个来报到的,那么就分配到系所在的宿舍。第三个是分配到年级所在的宿舍,这种情况是该年级第一个来报到的学生。(3)、要实现以上功能,就必须实现系统自动选择宿舍的功能,这也是该模块的核心部分。具体实现如下。(a)、建立三个查询:/该查询是选择班级所在的宿舍号和房间号SqlDataAdapter da3 = new SqlDataAdapter(se

35、lect distinct Dormitory as 宿舍号,Room as 房间号 from stu_mag t where Room = (select min(Room ) from stu_mag where Grade = + comboBox1.Text + and Sex= + comboBox6.Text + and D_pat = + comboBox4.Text + and Class= + comboBox5.Text + ) and D_pat = + comboBox4.Text + and Grade = + comboBox1.Text + and Class=

36、+ comboBox5.Text + , conn);/该查询时选择系别所在的宿舍号和房间号SqlDataAdapter da2 = new SqlDataAdapter(select distinct Dormitory as 宿舍号,Room as 房间号 from stu_mag t where Room = (select min(Room ) from stu_mag where Grade = + comboBox1.Text + and Sex= + comboBox6.Text + and D_pat = + comboBox4.Text + ) and D_pat = + c

37、omboBox4.Text + and Grade = + comboBox1.Text + , conn);/该查询是选择年级所在的宿舍号和房间号SqlDataAdapter da1 = new SqlDataAdapter(select distinct Dormitory as 宿舍号,Room as 房间号 from stu_mag t where Room = (select min(Room ) from stu_mag where Grade = + comboBox1.Text + and Sex= + comboBox6.Text + ) and Grade = + comb

38、oBox1.Text + , conn);(b)、接下来就要填充该房间的床位号。床位号填充原则是找到空床位,然后加填充到每行房间号的Items集合中。(由于代码数量多,所以只是说明思路和关键代码,详细代码在附件中体现)首先,要做的是查出该宿舍剩余床位,如果没有剩余床位,返回继续查询,直到有剩余床位为止。然后,在将查出的床位号放入datatable中,再将床位号放入Items中。关键代码:while (tag1 = 1) /清空datatable中的数据 rdt1.Rows.Clear(); SqlDataAdapter rda1 = new SqlDataAdapter(select Beds

39、 from stu_mag t where Room= + room1 + and Dormitory= + dormitory1 + , conn); rda1.Fill(rdt1); if (rdt1.Rows.Count != 8) /找到剩余床位号,结束循环 tag1 = 2; else /取出最后两位数 string room11 = room1.Substring(0, 1); string room12 = room1.Substring(room1.Length - 2);/如果已经到一层楼的最后一个房,那么就再上一楼 if (Convert.ToInt32(room12) =

40、 26) room12 = 01; if (Convert.ToInt32(room11) = 6) MessageBox.Show(房间已到最后一个!); else int newint = Convert.ToInt32(room11) + 1; room1 = newint.ToString() + room12; else dt1.Rows01 = (int.Parse(dt1.Rows01.ToString() + 1).ToString(); room1 = dt1.Rows01.ToString(); 第七章 模块测试7.1 白盒测试由于该模块是我独立完成,所以,每一步都是经过测

41、试而得,再此就不再赘述。7.2单元测试单元测试用我自己的话说就是编写一段功能代码后,不仅要保证代码能够通过编译,更要实现功能。单元测试还能保证功能代码的可移植行,尽量让代码独立。比如在我的在我的程序中,有一个宿舍批量回收的模块,其中,年级和系别是必须选择的,不然会报错。但还有两项是可以选择不填的,班级和性别,这就必须让程序员考虑周全,我必须保证这代码实现我希望的功能。而测试的过程就是单元测试。单元测试更准确的说法就是减少Bug,而且测试成本很低。7.3用户测试用户测试时用大量的数据来证明你系统的正确性。由于人力有限,用户测试都是由我自己完成。到目前为止,还没有发现数据异常。用例如下:登录:输入正确的用户名信息,系统登录,错误的用户信息,系统提示用户名或密码错误并清空密码框中的密码。宿舍分配:输入大量的数据,查看效果。当输入信息正确时,分配成功,信息不符规则或床位不可用就提示错误。后面的测试就不再赘述。第 21 页 共 24 页

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号