自己用java做的客户资源管理系统 可以完美运行,内附完整代码.doc

上传人:文库蛋蛋多 文档编号:2387628 上传时间:2023-02-17 格式:DOC 页数:63 大小:893.38KB
返回 下载 相关 举报
自己用java做的客户资源管理系统 可以完美运行,内附完整代码.doc_第1页
第1页 / 共63页
自己用java做的客户资源管理系统 可以完美运行,内附完整代码.doc_第2页
第2页 / 共63页
自己用java做的客户资源管理系统 可以完美运行,内附完整代码.doc_第3页
第3页 / 共63页
自己用java做的客户资源管理系统 可以完美运行,内附完整代码.doc_第4页
第4页 / 共63页
自己用java做的客户资源管理系统 可以完美运行,内附完整代码.doc_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《自己用java做的客户资源管理系统 可以完美运行,内附完整代码.doc》由会员分享,可在线阅读,更多相关《自己用java做的客户资源管理系统 可以完美运行,内附完整代码.doc(63页珍藏版)》请在三一办公上搜索。

1、 数据库课设报告:客户资源管理系统,实现客户,产品,合同的增删查改,附有完整代码,以及数据库表的建立,经运行,没有错误,可以连接数据库以及操作数据库里的数据- 1 - 目 录目 录 2引 言31 系统分析4 1.1 需求分析4 1.1.1 系统实现功能4 1.1.2 工能模块分析4 1.2 可行性分析4 1.2.1 可行性分析目的5 1.2.2 技术可行性5 1.2.3 经济可行性5 1.2.4 操作可行性5 2 系统设计 6 2.1 设计思想6 2.2 设计目标6 2.3 系统结构设计7 2.4 开发及运行环境设计7 2.4.1硬件平台 7 2.4.2软件平台 6 2.5 数据库设计83 详

2、细设计 8 3.1 详细设计概要 9 3.2 系统整体界面设计 10 3.3 系统框架设计 12 3.4 系统模块详细设计 13 3.4.1 系统模块详细设计概要 13 3.4.2 录入模块详细设计 14 3.4.2.1 录入模块功能 14 3.4.2.2 录入模块流程 14 3.4.2.3 录入模块界面设计 14 3.4.3 查询模块详细设计 15 3.4.3.1 查询模块功能15 3.4.3.2 查询模块流程15 3.4.3.3 查询模块界面设计15 3.4.4 修改模块详细设计 15 3.4.4.1 修改模块功能16 3.4.4.2 修改模块流程16 3.4.4.3 修改模块界面设计17

3、 3.4.5 删除模块详细设计 18 3.4.5.1 删除模块功能18 3.4.5.2 删除模块流程18 3.4.5.3删除模块界面设计 224 系统使用说明 19 4.1 系统运行环境 19 4.1.1 客户端配置 19 4.2 系统帮助 25 4.3 结 语 20参考文献 21附 录 22后 记 26引 言客户资源管理(Customer Resource Management 简称CRM)简单的说就是对客户的一些资料进行有效的管理,以前我们是人工来管理客户的信息,但如今已是信息化时代,我们需要通过计算机技术来对其进行高效的管理才能有利于一个企业更好的发展。客户管理系统是一个智能化的信息处理

4、系统,它将企业的经营、管理以客户为中心,通过系统管理员就可以轻松有效的对客户的信息进行操作管理。如今的信息技术飞跃发展,各个公司、企业都在不断的提高自己的信息化管理水平,他们也都认识到,高效的信息化管理对公司、企业的不断发展起到决定性的作用,也特别是对于所经营的客户群的信息管理显得尤为重要。由此,如今的绝大多数公司、企业都抛弃了以往的人工管理方式,转而使用高效的信息化管理方式。正是在于此背景之下,客户资源管理系统必然的诞生了,它也成为了各个公司、企业的必然选择。如今的客户资源管理系统可以说的层出不穷,不同规模和性质的公司、企业根据其具体情况而选择不同的客户资源管理系统来对其客户信息进行高效的管

5、理,但是不管它怎么变,它的核心还是一样的,都是对客户的信息进行管理和维护。由此我们可知,客户资源管理系统的市场潜力是非常之大的,而对于此系统的开发,可以使用不同的开发语言如C+、VB、Java等,而开发出来的系统表现形式主要为Web网站形式和桌面窗口软件形式。为了实现本系统,我以桌面窗口软件形式和面向对象的Java编程语言为基础,通过Java集成开发工具MyEclipse6.0来整合当前最为流行的SSH框架(Struts、Hibernate和String三个开源框架的整合框架)以及较为轻量级的Ajax框架Jquery进行有效的开发。数据库用MySQL来开发实现,在系统开发过程中以面向对象的思想

6、来对数据库进行操作和管理。整个系统,界面虽然简洁,但各个功能基本都很好的得以实现,操作上显得很容易。1 系统分析1.1 需求分析111 系统实现功能通过调查分析研究,本系统主要实现以下功能:1不同的员工类型,具有不同的职权来对系统进行相关的操作;不同的客户信息具有不同的级别。并对其进行分组管理。2系统的客户管理,销售管理,合同管理功能齐全。3实现客户的关系维护功能,合作关系的加深或决裂。4根据本公司的业务需求,添加自定义数据内容。5系统要有审批的工作流设置。6新建产品的一些基本信息资料,即产品信息管理。112 功能模块分析1、登入管理系统管理模块主要是用来实现对整个系统的一些设置和管理,其中又

7、分为了几个小的模块,即员工管理、权限管理和部门管理三个小模块。员工管理也就是对系统的用户进行管理,它记录了系统用户的信息,包括用户名、密码等,在这个模块中可以对系统用户信息进行查询、修改、删除以及添加新的用户操作;权限管理是用来设计系统用户的权限,对不同的用户分配不同的权限;部门管理则是用来对企业的部门进行有效管理,可以对部门进行增、删、改、查操作。2、产品管理客户管理模块是整个系统的重点,该模块主要用于对客户信息进行管理并将客户信息作为连接其余系统模块的主线。此模块下设置了客户信息管理和级别管理两个小模块。客户信息管理模块的主要功能就是将企业掌握的客户信息进行详细的管理,并可以方便的对客户信

8、息进行添加、修改以及查询和删除操作;级别管理模块则是用来设置不同的客户具有不同的级别,也可对其进行增、删、改、查操作。3、客户管理该模块主要是为了对公司的产品进行一个有效的管理,在此模块下又分为了产品信息管理和类别管理两个小模块。产品信息管理是对公司产品进行详细管理,根据公司的具体情况,可以新建产品,并对产品进行修改、查询和删除操作;类别管理则是用来设置公司经营的产品类别,当公司经营范围扩大,增加了新类型在产品时,我们就可在系统中增设新的产品类别等。 4、合同管理此模块是用来管理公司与客户之间或者公司与供应商之间签订的有效合同。1.2 可行性分析 121 可行性分析目的进行可行性分析是为了用最

9、小的代价在尽可能很短的时间里,来确定我们所面对的问题是否可以解决,其目的不是为了来解决问题,而是为了来确定问题是不是可以被我们解决,从而为以后的工作起一个决定性的作用。在可行性分析阶段我们要搞清问题的定义,能清楚的列举出目标系统存在的一些约束和限制,从而对技术可行性以及经济可行性和操作可行性三个方面进行分析研究。 122 技术可行性进行本系统的开发需要用到的知识技术有:1、 Java程序开发语言2、Spring框架技术,并能使用Java集成开发工具MyEclipse对这个框架进行整合开发。3、MySQL数据库开发知识。以上的这些知识技术是开发本系统所需要用到的,而我现在已经较好的把这些知识点和

10、技术掌握了,在指导老师的精心指导之下我可以对该系统进行开发了。 123 经济可行性经济可行性研究的是对开发软件的成本估算和成本效益分析,以确定待开发软件是否有开发的价值。对于本系统的开发,能帮助公司对客户的信息管提高工作效率,并且能非常方便的对其进行一系列的管理和维护,是以前的手工管理不能做到的。而且如今的信息化管理显得尤为重要,公司要想更好的发展就得花费一定的资金来购买此系统产品,而开发此系统并不需要投入多大的人力和物力,只需掌握相关的知识和技术就能很快的得以实现,因此在经济上是可行的。 124 操作可行性本系统乃是一个人机交互式的网站系统,系统的界面简洁友好,不需要深入的对其进行研究,很容

11、易让人操作。系统用户只需登陆到系统中,根据自己的权限和公司的具体要求就可对系统的一些相应信息进行操作了,如果在系统操作过程中实在还存在某些不解,可查找系统帮助信息进行理解。2 系统设计 2.1 设计思想其实一个系统的总体设计一般都是由两个阶段组成:系统设计,用来确定系统的具体实施方案;结构设计,用来确定系统软件的具体结构。系统设计是从系统的总体目标出发,根据我们在需求分析阶段对系统逻辑功能的要求来考虑系统所要用到的技术以及经济开销和系统的运行环境等方面的条件,确定系统的总体设计方案,从而确保系统的总体目标的实现。本系统的结构图采用的是数据流程图映射方法,该方法结合数据流程图以及其各级的细化图,

12、按照自顶向下的原则依次将数据流程图中的那些逻辑处理映射到结构图中去,从而成为一个个的模块。此方法简单、方便,它使数据流程图与结构图建立起了对应统一的关系,使设计达到一致的效果。系统分为多个模块,各个模块之间没有过多的相互作用,每个模块完成一个相应的子功能,从而实现模块的独立化。由于模块的独立程度又由内聚和耦合两个标准来进行衡量,因此要做到模块的独立化就得尽量使模块的划分做到高内聚和低耦合。耦合是对一个软件结构内不同模块之间互连程度的度量。耦合强弱取决于模块之间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据,在软件设计中应该追求尽可能低耦合的系统。由此可知影响软件复杂程度的一个重要因

13、素就是耦合,所以我们在开发系统时应该采取以下的设计原则:尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合。22设计目标系统的总体设计目标就是为了建立一个统一的信息管理平台,以公司经营的客户群为中心来对客户的详细信息进行有效的管理,加强同客户的交流和感情的建立,从而提高客户对公司的满意程度,也为公司的不断发展起到推动性的作用。其实本系统要实现的一系列操作都是在对数据进行操作,也主要就是对数据进行增加、修改、查询和删除四项操作。那么对数据如何去实现有效的管理,则需要对其进行认真的分析和设计。通过对本系统的分析后,本系统需要达到的主要设计目标有:1、首先我们应该确定,系统的最

14、终效果要达到一个友好的人机交互模式,系统界面简洁友好,信息的查询要灵活、方便、快捷和准确。2、对系统用户的输入数据要作严格的验证,尽可能排除可能出现的错误。 3、系统各个模块的增、删、改、查要设计得当。4、系统要有相应的帮助信息,以便用户在操作过程中查看。5、系统运行要稳定,而且也要安全可靠。23系统结构设计结构化设计方法就是把数据流图表示的逻辑模型用结构图层次的方式表现出来。结构化设计的核心其实就是把模块分解设计,采用自顶向下、逐层分解的方法,从而把整个系统划分成多个子模块,使其完成不同的功能,这样也就使得模块具有了一定的独立性,最终降低了系统的复杂性。本系统的功能结构如图2-1所示:查询合

15、同查询客户查询产品客户资源管理系统身份验证合同管理客户管理产品管理增加客户修改客户删除客户增加产品修改产品删除产品增加合同修改合同删除合同图2-1:功能结构图24开发及运行环境设计 241 硬件平台1、CPU:CPU233MHZ以上;2、内存:256MB以上;3、硬盘:40G以上; 242 软件平台1、操作系统:Windows win7;2、数据库:MySQL;3、Java开发工具包:JDK Version1.6.0;4、分辨率:最佳效果为1024768。5、Java开发集成工具:MyEclipse6.5;25数据库设计在系统设计时,我们应该考虑如何用数据模型来描述数据的结构和语义,用以实现对

16、现实世界的抽象。在目前广泛使用的数据库模型分为两种类型,一种是独立于计算机系统的“概念数据模型”(如“实体联系模型”);另一种是直接面向数据库逻辑结构的“结构数据模型”。在本系统中我所采用的是“实体联系模型”(E-R模型)来描述数据库的结构和语义,实现对现实世界的抽象。本系统使用的数据库是MySQL数据库,系统数据库名称为kehuguanli,数据库kehuguanli中所包含的数据表如下所示:(1) customer(客户信息表) 字段名数据类型长度是否主键客户IDint5是姓名char5否地址char5否邮编char15否职业char4否所在公司char30否电子邮件char15否电话ch

17、ar15否手机char200否表2-1:表customer的结构 (2)productmessage(产品信息表)字段名数据类型长度是否主键产品IDint5是产品名称char5否产品价格echar50否销售数量int10否表2-3:表productmessage的结构 (3)contract(合同表)字段名数据类型长度是否主键合同IDint5是客户姓名char20否合同名称char20否合同日期char20否负责人char15否合同金额char15否表2-8:表contract的结构3 详细设计3.1 详细设计概要详细设计的目的是为了确定应该怎样具体地实现符合要求的系统,在这个阶段的设计中我们

18、应该对所要开发的系统有一个更加详细的描述,以方便在编码的过程中能把它直接翻译成程序语言书写的程序。3.2 系统整体界面设计经过需求分析和系统设计之后,我们就可以对系统的界面进行详细的设计。首先我们应该设计好系统界面布局的整体框架,不错,要想进入本客户资源管理系统,前提条件你必须是该系统的用户,进入系统前必须经过系统用户登陆界面进行验证之后才可进入,进入系统后就可以看到系统的整体框架了。系统登陆界面和进入系统后的显示界面分别如图所示:图3-1:系统登录界面 图3-2:系统主界面图3-3:添加产品界面图3-4:删除产品界面 图3-5:查询产品界面 图3-6:修改产品界面 图3-6:帮助关于提示界面

19、3.3 系统框架设计由于本系统是在Java语言的基础上使用Spring框架技术来进行的开发,在开发本系统编码之前,首先我们要在MyEclipse集成开发工具中整合好Spring这个框架,并对其相应的环境和配置进行设置。本系统在MyEclipse中开发的项目名称为:123123,在MyEclipse中的系统项目结构如图3-3所示:图3-3:系统项目结构3.4 系统模块详细设计 341系统模块详细设计概要由前面的系统分析和系统设计我们已知,本系统是围绕以客户为中心来对信息进行有效的管理,而所有的这些管理操作其实都是在对相应的数据进行操作,基本上实现的也就是对数据的增加、查询、修改和删除这四项操作。

20、所以在此所谓的系统模块详细设计就是指的对这四项功能模块实现的设计。因为系统的每个模块几乎都要进行反复的增、删、改、查操作,所以设计好这四项操作功能模块就显得尤为重要了。 342录入模块详细设计 3.4.2.1录入模块功能录入模块的功能主要就是对一系列基本信息的录入,如要添加客户或产品时就要把其相关信息录入到系统中。在设计录入操作时,我们要求数据能够正确的保存到数据库中, 3.4.2.2录入模块流程开 始输入数据内容输入是否有效保存输入内容结 束错误提示 3.4.2.3录入模块界面设计进入系统后,根据具体的需要,在左边的功能模块导航栏中,用鼠标单击相关的超级链接就可在内容显示区中显示出相关的页面

21、。如我要增加产品信息,单击左边的“产品管理”,再点增加产品就会在内容区弹出创建新的添加产品界面页面,如图3-3所示,填写完产品信息后单击“存入数据库”按钮,通过验证若信息无误后就可以把所填写的信息保存到数据库中。 图3-3:信息录入界面 343查询模块详细设计 3.4.3.1查询模块功能查询模块的功能主要就是对保存在数据库中的相关信息进行查找,然后把查找出来的信息通过页面显示出来供用户查看和维护。 3.4.3.2查询模块流程开 始输入查询内容点击查询按钮查询是否成功显示查询内容结 束未成功提示 3.4.3.3查询模块界面设计图3-4:合同信息查询界面 344修改模块详细设计 3.4.4.1修改

22、模块功能修改模块就是当某些信息发生变化时,我们就要对其保存在数据库中的信息进行相应的修改,从而保证数据的时效性。其实修改模块的设计是在录入模块的基础上进行了一些改动,也就是当你查找出某条信息时想对其进行修改,单击其对应的一个“修改”链接,就会跳转到一个修改界面,此时也就相当于对数据再次进行一次录入了。 3.4.4.2修改模块流程开 始输入修改内容输入是否有效保存修改内容结 束错误提示点击“修改”链接进入修改界面 3.4.4.3修改模块界面设计在图3-4中我们单击所显示的一行用户信息的操作字段下的“修改”链接,跳转到一个和录入信息基本相同的修改界面,文本域处可根据需要进行相应的修改,修改完后单击

23、“确认修改”按钮通过验证即可生效。图3-6:合同信息修改界面345删除模块详细设计3.4.5.1删除模块功能删除模块的功能就是对系统中无效的信息从数据库中给删除掉。该功能模块较为简单,并不需要过多的设计。我们只需在相关信息栏的操作字段下单击“删除”链接,然后弹出一个确认框,单击“确定”按钮则会从数据库中删除该条数据信息,单击“取消”按钮则会返回原界面。3.4.5.2删除模块流程开 始单击“删除”链接确定是否删除删除该信息结 束取消删除3.4.5.3删除模块界面设计如图3-4,在显示的用户信息栏操作字段下单击“删除”链接,就会弹出一个确认框,如图3-7所示,若选择“确定”按钮后则会成功删除该条数

24、据信息。注意:在进行“删除”操作时一定要考虑清楚。 图3-7:信息删除确认4 系统使用说明4.1 系统运行环境411客户端配置CPU速度:P4 1.4G HZ以上;内存:256MB以上;操作系统:Windows win7、 WindowsXP以上中的一种;4.2 系统安装指南1、安装JDK:下载jdk-1_6_0_04-windows-i586-p.exe,然后安装完毕之后,进行一下环境配置。如我安装的位置是:C:Program FilesJavajdk1.6.0_04,然后单击我的电脑属性高级环境变量,在系统变量Path中添加:C:Program FilesJavajdk1.6.0_04bi

25、n;再在用户变量中新建一个JAVA_HOME变量,值为:.;C:Program FilesJavajdk1.6.0_04即可。2、下载MySQL数据库,根据提示进行安装,默认用户名为:sa,设置密码为a20101991。4.3系统帮助系统用户进入系统后,若对于该系统简洁友好的界面操作上还有什么疑虑的话,可单击页“帮助”超级链接,有一些简单信息供系统用户查看。如图4-4所示:图4-4:系统简介界面结 语 通过自己的努力和在指导老师的全面指导下,该客户资源管理系统最终得以完成。系统充分的运用到了Java程序语言、MySQL数据知识,并有效的使用了Spring框架技术来进行开发,使系统的层次性分明,

26、各模块之间的耦合度降低。系统总共实现了三大功能模块,其分别是:产品管理、客户管理、合同管理。所有的模块中基本都实现了增、删、改、查四项数据操作功能。系统整体界面给人一种清爽、简洁、友好的感觉,系统操作简单明了,由于系统设计到的方面较多,在技术上还有一定的难度,所以,系统的安全性做的不够好。在整个系统的开发过程中,它让我把以往的知识很好的回顾了一遍,同时也让我学到了一些新的知识和技术。在这次设计的系统开发过程中对我来说,确实是很幸苦的,因为你得学会自己去解决问题,去查找知识和技术,但是通过自己实实在在的去做完系统后,我的收获却是很大的。我从中学到了以下几点:学会自己去解决问题,寻求问题的答案,即

27、自我学习能力和解决问题的能力;做事一定要仔细,不可粗枝大叶;做事之前一定要周密的思考,全面分析你要去面对的事情,不可走一步做一步;遇到问题时不可浮躁,要有耐心,从而最终解决问题;学习之后要善于对其进行总结分析,这样你才能真正的不断进步。参考文献1孙卫琴JAVA面向对象编程M.电子工业出版社,2006.2Bruce EckelJava编程思想M机械工业出版社,2008.3孙鑫Java Web开发详解M电子工业出版社,2008.4刘斌精通Java Web整合开发M.电子工业出版社,2007.5陈刚Eclipse从入门到精通M.清华大学出版社,2007.6客户资源管理现状及发展程序员杂志J曾炼软件工

28、程专栏,2003附 录系统主要程序:下面为系统的连接数据库的代码:/导入sql数据库包import java.sql.*;/创建数据库连接类public class DBConnect/静态方法提高数据库的连接效率public static Connection getConn() throws Exception/加载JDBC驱动Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);/以系统用户身份,连接数据库StudentManagerreturn DriverManager.getConnection(jdbc:odbc:sun2,sa,a2010199

29、1);下面为程序的入口/导入包import java.awt.*;import javax.swing.*;/创建主系统类class Mainpublic static void main (String args)/创建主界面 MainFrame frame=new MainFrame();/获取屏幕尺寸Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();/获取主界面的窗体尺寸Dimension frameSize =frame.getSize();/令主界面窗体居中 if(frameSize.heightscre

30、enSize.height)frameSize.height=screenSize.height;if(frameSize.widthscreenSize.width)frameSize.width=screenSize.width;frame.setLocation(screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2);/令主界面显示frame.setVisible(true);合同管理模块中action里的几个主要程序:/增加合同的actionpublic void actionPerform

31、ed(ActionEvent e)/获取用户输入的信息String hetongID=jTextField1.getText();String kehuxingming=jTextField2.getText();String hetongmingcheng=jTextField3.getText();String hetongriqi=jTextField4.getText();String fuzheren=jTextField5.getText();String hetongjiner=jTextField6.getText();tryst.executeUpdate(insert in

32、to contract values(+hetongID+,+kehuxingming+,+hetongmingcheng+,+hetongriqi+,+fuzheren+,+hetongjiner+);/清空文本行的内容jTextField1.setText();jTextField2.setText();jTextField3.setText();jTextField4.setText();jTextField5.setText();jTextField6.setText();/利用消息对话框提示删除操作成功JOptionPane.showMessageDialog(this,插入成功!)

33、;catch(Exception ex)/利用消息对话框提示不能插入,并显示异常的信息JOptionPane.showMessageDialog(this,输入数据错误或者数据库不允许插入!);ex.printStackTrace();/删除合同的actionpublic void actionPerformed(ActionEvent e)/获取用户输入的合同IDString hetongID=jTextField1.getText();/要求用户确认删除if(JOptionPane.showConfirmDialog(this,确认要删除吗?)=JOptionPane.YES_OPTION

34、)try/利用st对象执行SQL删除操作st.executeUpdate(delete from contract where 合同ID=+hetongID+);/利用消息对话框提示删除操作成功JOptionPane.showMessageDialog(this,删除操作成功!);/清空输入合同ID的文本行jTextField1.setText();catch(Exception ex)/利用消息对话框提示不能删除JOptionPane.showMessageDialog(this,删除操作执行失败!);/查询合同的actionpublic void actionPerformed(Actio

35、nEvent e)/获取用户输入的产品IDString hetongID=jTextField1.getText();/清空文本区原有的内容jTextArea1.setText();try/利用st对象执行SQL语句,返回结果集对象ResultSet rs=st.executeQuery(select * from contract where 合同ID=+hetongID+);/处理结果集:逐条显示结果集中的记录if(rs.next()jTextArea1.setText(rs.getString(合同ID)+ +rs.getString(客户姓名)+ +rs.getString(合同名称)

36、+ +rs.getString(合同日期)+ +rs.getString(负责人)+ +rs.getString(合同金额)+n);/清空文本行的内容jTextField1.setText();elseJOptionPane.showMessageDialog(this,没有这个合同信息!);catch(Exception ex)/利用消息对话框提示查询失败JOptionPane.showMessageDialog(this,查询失败!);/修改合同的actionpublic void actionPerformed(ActionEvent e)if(e.getSource()=jButton

37、1)ResultSet rs;String hetongID=jTextField0.getText();/产品IDtry/利用st对象执行SQL语句,返回结果集对象rs=st.executeQuery(select * from contract where 合同ID=+hetongID+);/处理结果集:逐条显示结果集中的记录/此处没有使用while,因为学号是唯一的,而姓名不是,所以在InquireOnNamePanel.java里使用了whileif(rs.next()jTextField1.setText(rs.getString(合同ID);jTextField2.setText(rs.getString(客户姓名);jTextField3.setText(rs.getString(合同名称);jTextField4.setText(rs.getString(合同日期);jTextField5.setText(rs.getString(负责人);jTextField6.setText(rs.getString(合同金额);else

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号