[软件管理系统类精品]基于ASP.NET购物系统设计.doc

上传人:文库蛋蛋多 文档编号:2385109 上传时间:2023-02-17 格式:DOC 页数:23 大小:453.50KB
返回 下载 相关 举报
[软件管理系统类精品]基于ASP.NET购物系统设计.doc_第1页
第1页 / 共23页
[软件管理系统类精品]基于ASP.NET购物系统设计.doc_第2页
第2页 / 共23页
[软件管理系统类精品]基于ASP.NET购物系统设计.doc_第3页
第3页 / 共23页
[软件管理系统类精品]基于ASP.NET购物系统设计.doc_第4页
第4页 / 共23页
[软件管理系统类精品]基于ASP.NET购物系统设计.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《[软件管理系统类精品]基于ASP.NET购物系统设计.doc》由会员分享,可在线阅读,更多相关《[软件管理系统类精品]基于ASP.NET购物系统设计.doc(23页珍藏版)》请在三一办公上搜索。

1、摘 要随着Internet的迅速发展,越来越多的企业开始建设自己的网站。现代企业需要的是一个功能强大的,能提供完善的电子商务服务的交互式动态商务网站。ASP.NET是Microsoft公司推出的一种交互式动态Web应用程序开发工具。 ASP.NET可以在数据库的配合下,开发出功能强大的Web应用程序。整个购物系统是采用B/S(browser/server)三层结构,利用ASP.NET作为动态网站开发工具,以SQL Server 2000作为系统的后台数据库。通过对购物系统进行需求分析、对系统总体架构进行设计,系统主要实现了以下功能:会员注册与管理,商品陈列上架,商品分类管理,商品检索,用户购物

2、车,订单生成与管理,会员购物积分,网上安全支付等功能。关键词: 电子商务 ASP.NET SQL Server基于ASP.NET购物系统设计1引言随着Internet的迅速发展,越来越多的企业开始建设自己的网站。很多企业都已不满足于建立一个简单的仅仅能够发布信息的静态网站。现代企业需要的是一个功能强大,能够提供完善的电子商务服务的交互式动态商务网站。ASP.NET是Microsoft公司推出的一种交互式动态Web应用程序开发工具。 ASP.NET可以在数据库的配合下,开发出功能强大的Web应用程序。本设计的任务是通过调查、分析、开发等过程来实现网上购物系统的设计。网上购物系统是实现在线购物的一

3、套基于Web的电子商务系统,主要功能包括:1. 客户端:用户注册与登录,商品检索,购物车;2. 管理后台:用户管理,商品管理,仓库管理,订单管理、后台管理等。所开发的网上商城统包括客户端与管理后台两个大功能模块。采用ASP.NET开发,后台数据库采用SQL Server 2000。要求熟悉ASP.NET开发环境,对ASP.NET开发有较深的认识。了解数据库的基本应用,要求能做到界面友好,功能明确,易于操作。本系统属于典型的网上商城系统,是针对网上购物而开发设计的。针对日渐突出的网络安全问题,要着重考虑在线交易的安全性。2相关技术2.1开发背景随着信息技术在国际贸易和商业领域的广泛应用,利用计算

4、机技术、网络通信技术和Internet来实现商务活动的国际化、信息化和无纸化,已成为现代商务发展的方向。电子商务(Electronic Commerce)正是为了适应这种以全球为市场的变化而出现和发展起来的。它可以使销售商与供应商更紧密地联系起来,以更有效地满足客户的需求,也可以让商家在全球范围内选择最佳供应商,在全球市场上销售产品。电子商务基于网络技术网络技术提供了实现电子商务的技术平台,而电子商务是网络技术的最新应用和最终目标。2.2ASP.NET简介作为战略产品,ASP.NET不仅仅是Active Server Page(ASP)的下一版本;它还提供了一个统一的Web开发模型,其中包括开

5、发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括Visual Basic、.NET、C#和JScript)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。ASP.

6、NET可以无缝地与HTML编辑器和其他编程工具(包括MicrosoftVisual Studio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.NET设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。2.3ADO.NET简介ADO.NET是由.NET framework为与数据库中的数据进行交互而提供的一组对象类的名称。面向对象编程的有关主要优点是可以把各种

7、复杂的功能封装在一个自包含的单元中,接着要处理的就是个定义好的接口,它由方法和属性组成。在ADO.NET中,在网站得到数据请求时,连接就会被建立,传送数据,完毕后连接关闭。接着,访问者就可以修改数据,但这些修改不会在数据源中立即更新在用访问者所做的修改更新数据库之前,必须重新打开连接。其优点是效率高,可伸缩性好。如果不使用这种断开连接的模型,就意味着必须一直打开连接,直到每个用户的会话结束为止。在Web上,有上千个并行用户,给每个用户打开连接在系统资源上是非常昂贵的。使用断开连接的数据可以使应用程序的效率高的多。2.4ASP.NET开发环境1. Microsoft Visual Studio

8、2005。2. SQL Server 2000数据库环境。SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS)。经过多年发展,SQL Server 2000是Microsoft公司于2000年推出的版本。安装使用方便。就网上购物系统的开发,采用较为成熟稳定的SQL Server 2000是不错的选择。3. IISV5.1。在Windows XP Professional操作系统中,采用ASP.NET架设web应用程序,要安装的Internet Information Services(IIS)5.1。IIS 5.1是客户端使用的Web服务器。在Windows X

9、P Professional的环境下进行ASP.NET的开发,IIS是必需的。2.5ASP.NET技术的优点ASP.NET并不仅仅是一个新版本,而是Web应用程序编程方面的一个全新概念和方法。ASP.NET中的新功能并不是对ASP的改进,设计它的初衷是为用户提供最佳的应用程序架构。这就意味着在许多领域中,ASP.NET与ASP是不兼容的,不过从长远来说这是一件好事。这表明ASP.NET为应用程序的开发提供了一个功能强的多的平台,同时它也具备了更多的优点。ASP.NET与ASP是互不干扰的。即使两者之间有许多不同,但安装ASP.NET并不会破坏现有的应用程序。这是因为处理现有的ASP页仍使用和以

10、前一样的机制,而新的架构则负责处理ASP.NET页。之所以如此是由于ASP.NET页有一个新的文件扩展名(.aspx),也就是说它们的处理方式和ASP页是不同的。ASP.NET摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C+,VB,JS等,使得开发方式更为灵活。ASP.NET是编译性的编程框架,运行是服务器上的编译好的公共语言运行时库代码,可以利用早期绑定,实施编译来提高效率。ASP.NET把界面设计和程序设计以不同的文件分离开,复用性和维护性得到了提高。相对于ASP而言,ASP.NET中对代码和控件的封装在程度上讲,是非常彻底的,安全性和稳定性大大提高。2.6B/

11、S结构的优越性B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet的兴起,对C/S结构的一种变化或者改进的结构。在B/S结构下,用户界面完全通过www浏览器实现,部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构。B/S结构利用不断成熟和普及的浏览器技术实现原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放,在特定的应用中无论是Client端,还是Server端都需要特定的软件,没能达到人们真正期望的开放;B/S结构则不同,

12、它的前端是以TCP/IP协议为基础的,企业的www服务器可以接受安装有Web浏览器的Internet终端的访问,用户只需通过Web浏览器,各种处理任务都可以调用系统资源来完成。这样大大简化了客户端,减轻了系统维护与升级的成本和工作量,降低了总体使用成本。软件系统的改进和升级越来越频繁,在B/S结构下,无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的工作量,所有的操作只需要针对服务器进行,如果是异地只需要把服务器连接上网即可立即进行维护和升级,这对人力、时间、费用的节省是相当可观的。总而言之,B/S结构的好处在于:1. 利用单一的访问点,用户可以在任何地点访问信息。2. 对于这种资源

13、,无论是文本还是多媒体信息,均采用同样的界面。3. 对于所有的信息,无论基于何种平台,都采用同样的界面访问,即实现了平台的无关性。3系统需求3.1设计目标网上购物商城系统,是一个典型的电子商务系统,可以为各类用户提供方便的在线购物消费环境,符合目前国内流行的电子商务模式。用户可以在系统中实现注册、浏览商品、搜索查询商品、下定单、查看购物车等功能;管理员可以通过用户管理、定单管理、商品管理、等管理功能来对系统进行维护更。系统采用三层体系结构将应用程序划分为三个逻辑层面,这三个逻辑层如下:1. 用户界面层是用户与应用程序进行交互的端点。通常由WIN32或者基于浏览器的图形用户界面应用构成。在该层用

14、户可以查看、输入和处理数据。从用户的角度来看,用户服务层就是整个应用。在该电子商务系统中,用户服务层由ASP.NET Web Forms构成,它可以让消费客户浏览和搜索产品,向购物车增加产品,并且下订单。2. 业务逻辑处理层也称为中间层或者应用服务层,它负责封装事务处理、商务规则、数据访问及其他的核心应用逻辑。商务服务层可以有效地作为前台用户服务层和后台数据服务和数据存储之间的桥梁。在电子商务系统中,商务服务层将由在windows组件服务中执行的事务处理和非事务处理.NET服务组件构成。3. 数据存储层它负责检索和操作在数据存储中存储的数据。通过将数据访问和操作分离到独立的逻辑层中,就可以将商

15、品服务层从附属数据存储的细节中抽象出去。在该电子商务系统中。数据服务层将实现为一组封装了SQL数据访问逻辑,并向商务组件返回结果集的存储过程。商务服务组件通过这些存储过程访问数据库中的数据。3.2需求分析3.2.1角色识别角色识别的任务是找出所有可能与系统发生交互行为的外部实体,对象和系统。他们的行为不受系统的控制,但是可以提供输入给系统(即使用系统的功能,或者能够响应系统的服务请求,为系统提供服务的接口)。在前面的描述中已经知道,用户在访问系统时,可以浏览和查询商品,并使用购物车筛选自己中意的商品,购物完之后到服务台进行结帐,并保留订单以便收到货物时进行核对,很显然系统存在这样的主要角色,于

16、是定义该角色为前台客户。同样在系统的后台,也需要人员商品管理,订单管理,仓库管理,后台管理。经过分析可以明确,本系统包含两个角色:前台用户,系统管理员。3.2.2客户功能根据对当前网络上典型的商务网站的详细分析,客户界面就是用户在使用购物系统时,系统提供给用户使用的浏览器显示界面,能够实现用户与系统的友好交互,并且能够对用户的使用给以人性化的引导与提示,功能具体如下:1. 前台用户的行为:更新个人信息,购物车查询,浏览商品信息、查询商品。2. 管理个人信息的操作:用户注册,用户信息修改,用户登录,用户信息查看。3. 前台订单处理的操作:结帐,查看订单状态,取消订单。4. 购物车操作:浏览购物车

17、,将商品放入购物车,取消购物车中的商品,修改购物车中商品的数量,清空购物车。5. 浏览信息:查看商品详细信息,查找商品。3.2.3管理功能管理界面是系统提供给管理员进行系统的维护及管理的浏览器界面,能够实现系统管理员与系统的有效交互,使得系统管理员能够对商品,用户,以及整个购物系统,进行有效的的维护与管理操作,功能具体如下:1. 系统管理员的行为:用户管理,订单管理,商品管理、仓库管理、后台管理。2. 用户管理的操作:管理员登录,后台验证,查看用户信息,修改用户信息,添加用户,删除用户。3. 后台订单管理的操作:查看订单信息,查询订单,删除订单。4. 商品管理:查看商品列表,查看商品详细信息,

18、添加商品,修改商品,删除商品,查询商品。3.2.4角色模型图为了更好的理解角色,下面设计出了前台用户模型图和系统管理员模型图,具体如下:1.前台用户模型:前台用户 管理个人信息 查询商品信息 浏览商品信息 查看购物车信息 图.前台用户模型2.系统管理员模型:用户管理订单管理商品管理系统管理员后台管理仓库管理图.系统管理员模型3.2.5功能模块划分表.功能模块列表序号功能模块类型功能模块备注1前台用户管理个人信息用户注册,用户信息修改,用户登录,用户信息查看2前台用户前台订单处理结帐,查看订单状态,取消订单3前台用户购物浏览购物车,将商品放入购物车,取消购物车中的商品,修改购物车中商品的数量,清

19、空购物车4前台用户浏览信息查看商品详细信息,查找商品5系统管理员用户管理管理员登录,后台验证,查看用户信息,修改用户信息,添加用户,删除用户6系统管理员后台订单管理查看订单,确认订单,修改订单状态,删除订单7系统管理员商品管理查看商品列表,查看商品详细信息,添加商品,修改商品,删除商品,添加商品分类,删除商品分类,浏览商品分类列表模块功能列表是根据模块完成任务的不同进行划分的,一共包括7大模块,其中与前台相关的共有4个,与后台相关的共有3个。这些功能模块是建立在对系统的需求分析和设计的基础上的,是从大的方面对系统进行的很粗糙的划分,进入系统详细设计阶段将会对系统进行更加精细的划分设计。任何系统

20、的功能的实现都离不开角色的参与,为了赋予不同的角色不同的功能和权限,也为了一定程度上确保系统交易的安全性和顺利进行,系统设计必须对系统的各种用户进行管理,从模块功能列表可以看出,系统提供用户登录,用户注册,用户信息查看,用户信息修改的功能。用户登录后是为了从后端数据库中核实用户的登录名和密码,防止非法用户下订单,确保系统的安全性和秩序。其他的功能也是最大限度的保证系统的顺利进行和安全性。3.3系统运行配置操作系统:Windows 2000 Server/Professional、Windows XP Professional。CPU:没有很高的要求,只要能够顺利运行Windows系列操作系统就

21、可以了。当然,CPU的处理速度越快,运行代码的效率越高。目前的电脑几乎都可满足。内存:如果使用Windows 2000或Windows XP建议使用256MB以上内存。服务器端:IIS V5.1或者更高版本。开发环境:Microsoft Visual Studio 2005。数据库:SQL Server 2000。4系统设计4.1系统业务流程4.1.1客户端流程当以一个客户的身份进入系统后,该用户就可以浏览商品和搜索所需要的商品(搜索包括分类查找和关键字查找)。系统中,只有注册用户才能够在线购品。因此当用户选中一本商品要将其放入购物车时,前提是必须已经登录本网站。如果有用户名和密码则可直接登录

22、;如果没有,则需要注册新用户,然后登录。当成功登录后,用户就可以查看和管理自己的购物车,可以修改订购数量,可以删除订单,还可以查看和管理用户个人注册信息。当用户确定购买商品的时候就可以在购物车中结帐并提交订单,订单提交后用户仍可以继续购品,而后台服务器接受了客户提交的订单之后可以对订单进行处理。结帐方式是在客户提交订单之后,如果用户在订单提交后就马上进行支付,支付完毕后,服务器端就把订单的状态修改为已支付状态,然后通过现实中的物流途径发出货物。客户端流程图如下:用户 商品浏览 商品查询 购物车 修改订购数 取消订单 是否登录 用户注册 用户登录 结帐 服务器端 新用户 未登录 已登录 图.客户

23、端流程图4.1.2服务器端流程在服务器端,系统管理员要进入管理员界面,首先也必须进行验证登录,这时系统从数据库表中查找进行用户输入的用户,并验证密码是否正确,如果不正确那么系统提示返回,重新登录。如果正确则进入管理员界面,进入后面的工作流程。这时管理员可以进行管理操作,比如用户管理操作(查看用户信息,修改用户信息,添加用户,删除用户),商品管理操作(查看商品列表,查看商品详细信息,添加商品,修改商品,删除商品),订单管理操作。操作完之后管理员退出系统。服务器端流程图如下:管理员 帐户验证 验证成功 用户管理 商品管理 订单管理 商品分类管理 退出 否 是 图.服务器端流程图整个系统的功能模块划

24、分不仅包括系统的模块的划分还有系统的导航功能设置,用户登录以后进入在线购物模块,用户可以购物,也可以查看商品信息,查询商品可以通过关键字,也可以通过分类查询。当用户找到自己需要的商品以后可以选择购买,也可以查看商品的详细信息。这时候如果用户选择购买的话,他可以选择购买的数量,并将商品放到购物车中,这个时候用户就可以去查看购物车信息,购物车中罗列了用户购物的清单(订单),用户可以查看订单信息,修改订单信息。比如说修改商品的购买数量,或者删除前面购买的商品。这时用户可以提交购物车到后台结帐,也可以选择继续购物。继续购物就是按照前面的流程在循环的走下去。用户提交订单以后,订单就不能再被用户修改了。这

25、个时侯用户的流程就走完了。服务器在收到用户提交的订单信息以后,可以确认用户的信息,可以管理订单,比如删除订单或者修改订单的状态,把未付款状态修改成已付,并决定发货(通过修改发货状态信息)。在整个系统中,根据角色划分出来的客户端和管理员两者所完成的任务各不相同。4.2系统功能模块1. 客户端主要功能模块包括:个人信息管理,购物车处理,浏览商品信息。2. 管理员主要功能模块包括:用户管理,订单管理,商品管理,商品分类管理。系统的功能模块,可以分为客户端与服务器端两部分,功能模块图具体如下:网上商店 客 户 端 管 理 员 管理个人信息 购物车信息 购物信息查询 浏览商品信息 用户管理 订单管理 商

26、品管理 仓库管理 图.系统的功能模块图4.3数据库设计数据库在一个电子商务系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率,以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。4.3.2数据库设计所有表名都以tb加”_”加各表描述的拼音的第一个字母(长度要小于6),如:用户信息表(tb_Member),如:用户信息表的“注册用户名”字段:(MemberName)。在线商店数据库中各个表的设计结果如下:1. 用户信息表用于存储用户注册信息,如用户编号,用户名、用户密码、用户性别等,如下表如示:表.3.2.用户信息表(tb_Member)2

27、.商品类别表。 系统中把商品分为若干类,可以提高商品的管理和查询效率。商品大类表用于存储商品的大类分类信息,具体如下表所示:表.3.2.2商品大类表(tb_GoodsType)3. 商品信息表。包括的字段有,商品的价格,商品的图片,商品的名称等,具体如下表所示:表.商品小类表(tb_GoodsInfo)4.订单表。包括的字段订单ID号,商品ID、商品类别ID、商品名称,商品价格,等,具体如下表所示:表.订单表(tb_OrderInfo)5. 图片表。包括的字段是图片ID,图片名称表.图片表(tb_Image)9.管理员表。包括的字段是管理员ID、管理员名字、管理员密码。 在系统中管理员分为系统

28、管理员。管理员类型表是用于存储管理员的类型信息,具体如下表所示:表.管理员类型表(tyb_glylx)前台功能的设计和实现5.1前台主界面前台主是系统提供给用户使用的浏览器界面,其中能够实现如下功能:1.,登录,以及个人信息修改。2. 查看商品详细信息。3. 商品选购。4. 购物车功能。5. 购物信息查询。6.交易条款查看实现显示界面如下面两个图所示:5.2 用户登陆和注册模块1)会员注册模块实现代码如下:protected void btnLogin_Click(object sender, EventArgs e) SqlConnection sqlconn = new SqlConnec

29、tion(ConfigurationManager.AppSettingsConnectionString); sqlconn.Open(); SqlCommand sqlcom = new SqlCommand(proMemberInfo, sqlconn); sqlcom.CommandType = CommandType.StoredProcedure; sqlcom.Parameters.Add(MemberName, SqlDbType.VarChar, 20).Value=txtMName.Text.Trim(); sqlcom.Parameters.Add(MemberPwd,

30、SqlDbType.VarChar, 20).Value = txtMPwd.Text.Trim(); SqlDataReader read = sqlcom.ExecuteReader(); if (txtMCode.Text.Trim() = labCode.Text.Trim() if (read.Read() SessionMName = txtMName.Text; Response.Redirect(./Index.aspx); else Response.Write(alert(您输入的用户名或密码错误,请重新输入!);location=javascript:history.go

31、(-1);); else Response.Write(alert(验证码输入有误,请重新输入!);location=javascript:history.go(-1);); 界面如下:5.2.1 会员登陆界面2)用户注册模块:实现代码如下:protected void btnRegister_Click(object sender, EventArgs e) string sqltest = select * from tb_Member where MemberName= + this.txtLoginName.Text + ; sqlconn.Open(); SqlCommand sql

32、com = new SqlCommand(sqltest, sqlconn); SqlDataReader read = sqlcom.ExecuteReader(); read.Read(); if (read.HasRows) if (this.txtLoginName.Text.Trim() = readMemberName.ToString().Trim() Response.Write(alert(该会员已经注册过);localtion=Register.aspx); return; string sqlstr = insert into tb_Member + (MemberNam

33、e,MemberSex,MemberPWD,MemberTName, + MemberQue,MemberAns,MemberPhone,MemberEmail,MemberCity,MemberAddress,MemberPostCode,MemberPhoto) + values( + txtLoginName.Text + , + ddlSex.SelectedValue + , + txtPwd.Text + , + txtTName.Text + , + txtQuePwd.Text + , + txtAnsPwd.Text + , + txtTel.Text + , + txtEm

34、ail.Text + , + ddlCity.SelectedValue + , + txtAddress.Text + , + txtPostCode.Text + , + ddlPhoto.Text + ); sqloperate.DataCom(sqlstr); sqlconn.Close(); SessionregName = txtLoginName.Text.Trim(); Response.Redirect(SuccReg.aspx); 界面如下:5.2.2 会员注册界面5.3 购物车模块实现代码如下: protected void lbtnCheck_Click(object

35、sender, EventArgs e) if (labMoney.Text = ) Response.Write(alert(您的购物车中没有任何物品);); else string sqlstr = select MemberName,MemberMoney from tb_Member where MemberName= + SessionMName.ToString() + ; sqlconn.Open(); SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlconn); DataSet myds = new DataSet();

36、myda.Fill(myds, tb_Member); DataRowView mydrv = myds.Tablestb_Member.DefaultView0; string MPrice = Convert.ToString(mydrv.RowMemberMoney); string sqlstrshop1 = update tb_Member set MemberMoney= + (Convert.ToInt32(MPrice) - Convert.ToInt32(labMoney.Text) + where MemberName= + SessionMName.ToString()

37、+ ; sqloperate.DataCom(sqlstrshop1); string sqlstrshop2 = update tb_OrderInfo set IsCheckout=是 where OrderMember= + SessionMName.ToString() + ; sqloperate.DataCom(sqlstrshop2); Response.Redirect(SuccShop.aspx); 实现界面如下:图5.3商品界面5.4 商品信息查看模块实现代码如下: 实现界面如下:5.4 商品信息界面 致 谢参 考 文 献1Ollie Cornes,崔洪斌ASP.NET入门经典北京:清华大学出版社,20022廖信彦交互式Web数据库程序设计北京:中国铁道出版社,20043张海藩软件工程北京:人民邮电出版社,20054廖疆星中文Dreamweaver网页设计教程北京:冶金工业出版社,20035杜兆将SQL Server 数据库管理与开发教程北京:北京大学出版社,2006

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号