毕业设计论文基于ASP.NET和VC的网上购物系统.doc

上传人:sccc 文档编号:4859817 上传时间:2023-05-20 格式:DOC 页数:31 大小:653.02KB
返回 下载 相关 举报
毕业设计论文基于ASP.NET和VC的网上购物系统.doc_第1页
第1页 / 共31页
毕业设计论文基于ASP.NET和VC的网上购物系统.doc_第2页
第2页 / 共31页
毕业设计论文基于ASP.NET和VC的网上购物系统.doc_第3页
第3页 / 共31页
毕业设计论文基于ASP.NET和VC的网上购物系统.doc_第4页
第4页 / 共31页
毕业设计论文基于ASP.NET和VC的网上购物系统.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《毕业设计论文基于ASP.NET和VC的网上购物系统.doc》由会员分享,可在线阅读,更多相关《毕业设计论文基于ASP.NET和VC的网上购物系统.doc(31页珍藏版)》请在三一办公上搜索。

1、毕业论文(设计) 题 目基于ASP.NET和VC#的网上购物系统 学生姓名 学 号 20053308037 院 系 职业技术学院专 业 计算机科学与技术指导教师 二九 年 五 月 八 日目 录1. 引言12. 相关基本技术12.1 ASP.NET 2.0简介12.2 SQL Server2000简介22.3 VC#简介23. 系统需求33.1 设计目标33.2 需求分析43.2.1 角色识别43.2.2 客户功能43.2.3 管理功能43.2.4 角色模型图54. 系统总体设计54.1 系统业务流程54.1.1 客户端流程54.1.2 服务器端流程64.2 系统功能模块74.3 数据库设计85

2、. 系统具体实现105.1 前台用户功能实现105.1.1 用户的登陆和注册105.1.2 用户查看商品以及下订单145.2 后台管理功能175.2.1 商品管理185.2.2 会员管理215.2.3 仓库管理235.2.4 订单管理235.2.5 管理员信息管理246. 结束语26参考文献26致谢26基于ASP.NET和VC#网上购物系统*南京信息工程大学职业技术学院,南京 210044摘要:随着Internet的不断普及,人们对于互联网技术的要求已不单单是浏览一下网页,收发电子邮件,日益忙碌的人们开始追求足不出户的利用互联网这一强大的平台来实现网上购物。文中运用ASP.NET技术和SQL

3、Server数据库原理以及VC#语言,开发一个网上购物系统。文中首先讲述了系统开发需要的一些相关基本技术,其次进行了系统的需求分析,最后给出系统的总体设计以及系统的具体实现。关键字: ASP.NET ;SQL Server 2000 ;VC#1. 引言21世纪是网络飞速发展的时代,上网、创建网站已经成为热门话题。Internet技术得到持续、猛烈的发展,已经成为计算机产业的一个技术热点,越来越多的企业开始关注网络,许多人正在或正准备学习网络知识,进行网络开发或创建自己的网站。本次毕业设计基于ASP.NET和VC#网上购物系统,是在Windows XP下,以SQL Server 2000为数据库

4、开发平台,采用ASP.NET技术和SQL Server数据库原理以及VC#语言开发的。在本论文中详细地论述了网上购物系统的设计方案及实现,介绍了相关的基本技术,包括ASP.NET,SQL Server 2000和VC#语言的一些简介。讲述了系统的需求分析与设计目标,还有系统的总体设计,包括系统业务流程,系统功能模块和数据库的设计,以及系统的具体实现,包括前台和后台两个大的部分,前台部分由用户使用,主要包括用户的注册,管理个人信息,查询商品和购物车管理等功能;后台部分由管理员使用,主要包括商品管理,用户管理,仓库管理和订单管理等功能。2. 相关基本技术2.1 ASP.NET 2.0简介同ASP和

5、其他Web开发环境一样,ASP.NET也是建立在HTTP协议之上的,它利用HTTP命令和策略建立双向的、浏览器到服务器的通信和协作。真正使ASP.NET有别于其他Web开发技术的是它提出的抽象编程模型,即Web窗体模型。此外,整个ASP.NET平台是Microsoft.NET Framework的一部分。ASP.NET应用是一些已编译的代码部件,由一些可重用且可扩展的组件组成,可以用第一类语言(包括C#、Microsoft Visual Basic.NET、Microsoft Jscript.NET 和J#)创建,并且可以访问.NET Framework中整个类的层次结构。总之,ASP.NET

6、具有很多优势:在语法上,它与ASP兼容;它提供的面向对象特征与JSP应用相同。ASP.NET 提供了大量特别吸引人的功能、工具和强大的系统特征。ASP.NET是一个Web开发平台,提供了构建企业级应用所需的服务、变成模型和软件基础结构。ASP.NET是过去10年内先后发展起来的Web开发技术的颠峰一种在目前构建通过HTTP协议传输的分布式应用的技术中,Web开发技术建立在另一种技术的基础之上,并且每种技术都弥补了其前辈的缺陷。因此,ASP.NET是最先进、特征最丰富而且功能最强大的平台。2.2 SQL Server2000简介SQL Server 2000以其卓越的性能逐渐成为Windows操

7、作系统平台下进行数据库应用开发中较为理想的选择之一。SQL Server 2000由一系列相互协作的组件构成,能最大程度地满足Web站点和企业数据处理系统存储和分析数据的需要,这些组件主要包括: 关系数据库组件,包括数据库引擎本身和应用程序与数据库引擎间通信所涉及的组件。 数据库构架,描述SQL Server数据库中定义的逻辑组件,以及如何在数据库文件中真正实现这些组件。 关系数据库引擎构架,描述服务器引擎的各项功能。这些功能使服务器引擎得以高效地处理大量并发用户的数据要求。 管理构架与复制构架,管理构架描述SQL Server 2000附带的易用工具和减少日常管理任务的SQL Server动

8、态配置功能;复制构架描述SQL Server 2000的复制组件以及如何使用这些组件在数据库间分发数据。 应用程序开发构架,描述SQL Server 2000如何支持各类数据库编程API,使用能够创建可靠的数据库应用程序。其主要特点如下: (1)高性能设计,可充分利用WindowsNT的优势。 (2)系统管理先进,支持Windows图形化管理工具,支持本地和远程的系统管理和配置。(3)强壮的事务处理功能,采用各种方法保证数据的完整性。 (4)支持对称多处理器结构、存储过程,ODBC,并具有自主的SQL语言。 SQLServer以其内置的数据复制功能、强大的管理工具、与Internet的紧密集成

9、和开放的系统结构为广大的用户、开发人员和系统集成商提供了一个出众的数据库平台。2.3 VC#简介C#是用于创建运行在.NET公共语言运行库上的应用程序的语言之一,它从C语言和C+语言演化而来,是Microsoft专门为使用.NET平台而创建的,并且考虑了其他语言的许多优点。由于语法简单,使用C#开发应用程序比C+程序相对简单。但是,C#也是一种强大的语言,在C+中能完成的任务在C#中同样也能完成。C#的代码要比C+略长一些,这是因为C#是一种类型安全的语言(与C+不同),虽然C#的代码略长但其代码更健壮,调试也比较简单。C#是唯一为.NET Framework而设计的语言,是移植到其他操作系统

10、上的.NET版本中使用的主要语言,能使用.NET Framework代码库提供的每种功能。反之,如果要使用VB.NET等语言尽可能与其以前的语言类似,而且仍然遵循CLR,这些语言就不能完全支持.NET代码库的某些功能。使用C#可以创建下面列出的几种常见应用程序: Windows 应用程序 如Microsoft Office,有我们很熟悉的Windows外观和操作方式,使用.NET Framework的Windows From模块是一个控件,可以用于建立Windows用户界面(UI)。 Web 应用程序 这些是Web页,可以通过任何Web浏览器查看,.NET Framework包括一个动态生成W

11、eb内容的强大系统,就是我们所说的ASP.NET,可以使用C#通过Web From创建ASP.NET应用程序。 Web 服务 这是创建各种分布式应用程序的新方式,使用Web服务可以通过Internet虚拟交换数据,无论使用什么语言创建Web,也无论Web服务驻留在什么系统上,都使用一样简单的语法。C#提高了开发者的效率,同时也致力于消除编程中可能导致严重结果的错误。C#使C/C+程序员可以快速地进行网络开发,同时也保持了开发者所需要的强大性和灵活性。3. 系统需求3.1 设计目标网上购物系统,是一个典型的电子商务系统,可以为各类用户提供方便的在线购物消费环境,符合目前国内流行的电子商务模式。用

12、户可以在系统中实现登陆、注册、查询修改个人信息、浏览商品、下订单、处理订单等功能;管理员可以通过商品管理、会员管理、仓库管理、订单管理和管理员信息管理等管理功能来对系统进行维护更新。系统采用三层体系结构将应用程序划分为三个逻辑层面,这三个逻辑层如下:1. 用户界面层是用户与应用程序进行交互的端点。通常由WIN32或者基于浏览器的图形用户界面应用构成。在该层用户可以查看、输入和处理数据。从用户的角度来看,用户服务层就是整个应用。在该电子商务系统中,用户服务层由ASP.NET Web Forms构成,它可以让消费客户浏览和搜索产品,向购物车增加产品,并且下订单。2. 业务逻辑处理层也称为中间层或者

13、应用服务层,它负责封装事务处理、商务规则、数据访问及其他的核心应用逻辑。商务服务层可以有效地作为前台用户服务层和后台数据服务和数据存储之间的桥梁。在电子商务系统中,商务服务层将由在windows组件服务中执行的事务处理和非事务处理.NET服务组件构成。3. 数据存储层它负责检索和操作在数据存储中存储的数据。通过将数据访问和操作分离到独立的逻辑层中,就可以将商品服务层从附属数据存储的细节中抽象出去。在该电子商务系统中。数据服务层将实现为一组封装了SQL数据访问逻辑,并向商务组件返回结果集的存储过程。商务服务组件通过这些存储过程访问数据库中的数据。3.2 需求分析3.2.1 角色识别角色识别的任务

14、是找出所有可能与系统发生交互行为的外部实体,对象和系统。他们的行为不受系统的控制,但是可以提供输入给系统(即使用系统的功能,或者能够响应系统的服务请求,为系统提供服务的接口)。在前面的描述中已经知道,用户在访问系统时,可以浏览和查询商品,并使用购物车筛选自己中意的商品,购物完之后到服务台进行结帐,很显然系统存在这样的主要角色,于是定义该角色为前台客户。同样在系统的后台,也需要人员管理货物,查询,处理订单,管理注册用户,定义该角色为系统管理员。经过分析可以明确,本系统包含两个角色:前台用户,系统管理员。3.2.2 客户功能根据对当前网络上典型的商务网站的详细分析,客户界面就是用户在使用购物系统时

15、,系统提供给用户使用的浏览器显示界面,能够实现用户与系统的友好交互,并且能够对用户的使用给以人性化的引导与提示,功能具体如下:1. 前台用户的行为:管理个人信息,前台订单处理,购物,浏览信息。2. 管理个人信息的操作:用户注册,用户信息修改,用户登录,用户信息查看。3. 前台订单处理的操作:结帐,查看订单状态,取消订单。4. 购物车操作:浏览购物车,将商品放入购物车,取消购物车中的商品,清空购物车。5. 浏览信息:查看商品详细信息,查找商品。3.2.3 管理功能管理界面是系统提供给管理员进行系统的维护及管理的浏览器界面,能够实现系统管理员与系统的有效交互,使得系统管理员能够对商品,用户,以及整

16、个购物系统,进行有效的的维护与管理操作,功能具体如下:1. 系统管理员的行为:用户管理,后台订单管理,商品管理。2. 用户管理的操作:查看用户信息,修改用户信息,添加用户,删除用户。3. 后台订单管理的操作:查看订单,确认订单。4. 商品管理:查看商品列表,查看商品详细信息,添加商品,修改和删除商品。 3.2.4 角色模型图为了更好的理解角色,下面设计出了前台用户模型图和系统管理员模型图,具体如下:1. 前台用户模型:前台用户 管理个人信息 前台订单处理 浏览信息 购物 图1前台用户模型2. 系统管理员模型:用户管理后台订单管理商品管理系统管理员图2系统管理员模型4. 系统总体设计4.1 系统

17、业务流程4.1.1 客户端流程当以一个客户的身份进入系统后,该用户就可以浏览商品和搜索所需要的商品。系统中,只有登陆的注册用户才能够在线购买物品。因此当用户选中一本商品要将其放入购物车时,前提是必须已经登录本网站。如果有用户名和密码则可直接登录;如果没有,则需要注册新用户,然后登录。当成功登录后,用户就可以查看和管理自己的购物车,可以下订单,删除订单,以及查看和管理用户个人注册信息。当用户确定购买商品的时候就可以在购物车中结帐并提交订单,订单提交后用户仍可以继续购品,而后台服务器接受了客户提交的订单之后可以对订单进行处理。客户端流程图如下:用户 商品浏览 商品查询 购物车 取消订单 是否登录

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

19、管理 商品管理 订单管理 仓库管理 退出 否 是 图4 服务器端流程图整个系统的功能模块划分不仅包括系统的模块的划分还有系统的导航功能设置,用户登录以后进入在线购物模块,用户可以购物,也可以查看商品信息。当用户找到自己需要的商品以后可以查看商品的详细信息,然后点击购买。这时候如果用户选择购买的话,他可以将商品放到购物车中,然后用户就可以去查看购物车信息,购物车中罗列了用户购物的清单(订单),用户可以查看订单信息,修改订单信息。比如说查询所购买的商品,或者删除前面购买的商品。这时用户可以提交购物车到后台结帐,也可以选择继续购物。继续购物就是按照前面的流程在循环的走下去。用户提交订单以后,订单就不

20、能再被用户修改了。这个时侯用户的流程就走完了。服务器在收到用户提交的订单信息以后,可以确认用户的信息,可以管理订单,并决定发货。在整个系统中,根据角色划分出来的客户端和管理员两者所完成的任务各不相同。4.2 系统功能模块在系统功能模块中,更简洁的描述了前台用户和管理员所享有的主要功能,如下表所示:表1 功能模块划分表序号功能模块类型功能模块备注1前台用户管理个人信息用户注册,用户信息修改,用户登录,用户信息查看2前台用户前台订单处理结帐,查看订单状态,取消订单3前台用户购物浏览购物车,将商品放入购物车,取消购物车中的商品,清空购物车4系统管理员仓库管理查看物品所在的仓库号,添加仓库5系统管理员

21、用户管理管理员登录,后台验证,查看用户信息,修改用户信息,添加用户,删除用户6系统管理员后台订单管理查看订单,确认订单,修改订单状态,删除订单7系统管理员商品管理查看商品列表,查看商品详细信息,添加商品,修改商品,删除商品,浏览商品分类列表4.3 数据库设计根据网络用户需要,我们只建立起一个数据库,在此数据库基础上建立起如下表:系统管理员表 tb_Admin商品表 tb_GoodsInfo图片表 tb_Image用户表 tb_Member订单表 tb_OrederInfo仓库表 tb_StoreInfo下面详细说明所建立的各表的信息: 表2系统管理员表(tb_Admin)编号字段名称数据类型长

22、度说明1Admin_Idbigint8管理员ID2AdminNamevarchar50管理员登陆名3AdminPwdvarchar20管理员密码 表3商品表(tb_GoodsInfo)编号字段名称数据类型长度说明1GoodIDbigint8商品ID2GoodTypeIDbigint8所属类别3GoodNamevarchar50商品名称4GoodIntroducetext16商品介绍5GoodsPricebigint8商品价格6GoodsPhotovarchar50商品图片7GoodsIsNewchar10是否推荐该商品8GoodsDatedatetime8进货日期 表4 图片表(tb_Imag

23、e)编号字段名称数据类型长度说明1ImageIDbigint8图片ID2Imagevarchar50图片路径 表5用户表(tb_Member)编号字段名称数据类型长度说明1MemberIDbigint8会员ID2MemberNamevarchar50会员登陆名3MemberSexchar10会员性别4MemberPWDvarchar20会员登陆密码5MemberTNmamevarchar20会员真实姓名6MemberQuevarchar50密码提示问题7MemberAnsvarchar50提示问题答案8MemberPhonevarchar20会员联系电话9MemberEmailvarchar5

24、0会员Email地址10MemberCityvarchar20会员所在城市11MemberAdressvarchar50会员住址12MemberPostCodechar10住址邮编13MemberPhotovarchar50会员头像14MemberMoneybigint8会员冲值15MemberDatedatetime8会员注册日期 表6订单表(tb_OrderInfo)编号字段名称数据类型长度说明1OrderIDbigint8订单ID2OrderMembervarchar50订货人3GoodsIDbigint8商品ID4GoodsNamevarchar50商品名称5GoodsTypeIDbi

25、gint8所属类别ID6GoodsTypeNamevarchar50所属类别7GoodsPricebigint8商品价格8IsCheckoutchar10是否结帐9OrderDatedatetime8订货日期 表7仓库表(tb_StoreInfo)编号字段名称数据类型长度说明1StoreIDbigint8仓库ID2StoreNamevarchar50仓库名称另外,要声明的是,为了能更好的保持数据的一致性就需要通过程序来完成。5. 系统具体实现5.1 前台用户功能实现5.1.1 用户的登陆和注册用户登陆页面用于用户登陆和新用户的注册,只有在网上购物系统上注册后,才能在线购买商品。图5 用户登陆注

26、册图下面是登陆按钮的代码:protected void Button1_Click(object sender, EventArgs e) /判断用户输入的用户名和密码是否为空 if (TextBox1.Text = string.Empty | TextBox2.Text = string.Empty) Response.Write(alert(用户名和密码不能为空!); else /创建数据库对象,并读取Web.config文件中连接数据库的字符串SqlConnectioncon=newSqlConnection(ConfigurationManager.ConnectionStrings

27、con.ConnectionString); con.Open(); /定义查询用户输入的用户名和密码的字符串 string cmdtext = select MemberName,MemberPWD from tb_Mebmer where MemberName=MemberName and MemberPWD=MemberPWD; /定义参数并设置参数的值 SqlCommand cmd = new SqlCommand(cmdtext, con); cmd.Parameters.Add(MemberName, SqlDbType.VarChar, 50); cmd.ParametersMe

28、mberName.Value=this.TextBox1.Text.ToString(); cmd.Parameters.Add(MemberPWD,SqlDbType.VarChar,15); cmd.ParametersMemberPWD.Value=this.TextBox2.Text.ToString(); /执行查询操作,并将查询的结果保存到dr对象中 SqlDataReader dr=cmd.ExecuteReader(); /判断是否查询到用户登陆时输入的用户名和密码 if (dr.Read() Sessionname = this.TextBox1.Text; Response

29、.Redirect(admin.aspx); else Response.Write(alert(用户名或密码错误!); 用户点击注册按钮,将跳转注册页面,如图:图6 注册页面图其中会员登陆名和会员的密码不能为空,其他选填。其注册详细代码如下:protected void Button1_Click1(object sender, EventArgs e) /创建连接数据库对象,并读取Web.config文件中连接数据库的字符串SqlConnectioncon=newSqlConnection(ConfigurationManager.ConnectionStringscon.Connecti

30、onString); con.Open(); /定义用户注册用户名的字符串 string select = select MemberName from tb_Member where MemberName=MemberName; SqlCommand selcmd = new SqlCommand(select, con); /添加参数并设定参数的值 selcmd.Parameters.Add(MemberName, SqlDbType.VarChar); selcmd.ParametersMemberName.Value = this.tname.Text.ToString(); /执行查

31、询操作,并将查询的结果保存到dr读对象中 SqlDataReader dr = selcmd.ExecuteReader(); /判断用户是否存在 if (dr.Read() Response.Write(alert(用户存在!); return; dr.Close(); /定义插入用户注册信息的字符串 string cmdtext = insert into users(MemberName, MemberPWD, MemberSex,MemberTName, MemberQue,MemberAns,MemberPhone,MemberEmail,MemberCity,MemberAddre

32、ss,MemberPostCode,MemberPhoto,MemberMoney,MemberDate)values(MemberName,MemberPWD,MemberSex,MemberTName,MemberQue,MemberAns,MemberPhone,MemberEmail,MemberCity,MemberAddress,MemberPostCode,MemberPhoto,MemberMoney,MemberDate); SqlCommand cmd = new SqlCommand(cmdtext, con); /添加参数并设定参数的值 cmd.Parameters.A

33、dd(MemberName, SqlDbType.VarChar,50); cmd.ParametersMemberName.Value = this.tname.Text.ToString(); cmd.Parameters.Add(MemberPWD, SqlDbType.VarChar,20); cmd.ParametersMemberPWD.Value = this.tpass.Text.ToString(); cmd.Parameters.Add(MemberSex, SqlDbType.VarChar,10); cmd.ParametersMemberSex.Value = thi

34、s.tsex.Text.ToString(); cmd.Parameters.Add(MemberTName, SqlDbType.VarChar,20); cmd.ParametersMemberTName.Value =this.ttname.Text.ToString(); cmd.Parameters.Add(MemberQue, SqlDbType.VarChar,50); cmd.ParametersMemberQue.Value = this.tque.Text.ToString(); cmd.Parameters.Add(MemberAns, SqlDbType.VarChar

35、,50); cmd.ParametersMemberAns.Value = this.tans.Text.ToString(); cmd.Parameters.Add(MemberPhone, SqlDbType.VarChar,20); cmd.ParametersMemberPhone.Value = this.tphone.Text.ToString(); cmd.Parameters.Add(MemberEmail, SqlDbType.VarChar,20); cmd.ParametersMemberEmail.Value = this.temail.Text.ToString();

36、 cmd.Parameters.Add(MemberCity, SqlDbType.VarChar,50); cmd.ParametersMemberCity.Value = this.tcity.Text.ToString(); cmd.Parameters.Add(MemberAddress, SqlDbType.VarChar,50); cmd.ParametersMemberAddress.Value = this.taddress.Text.ToString();cmd.Parameters.Add(MemberPhostCode, SqlDbType.VarChar,10); cm

37、d.ParametersMemberPhostCode.Value = this.tphostcode.Text.ToString();cmd.Parameters.Add(MemberPhoto, SqlDbType.VarChar,50); cmd.ParametersMemberPhoto.Value = this.tphoto.Text.ToString();cmd.Parameters.Add(MemberMoney, SqlDbType.Int); cmd.ParametersMemberMoney.Value =int .Parse(this.tmoney.Text)cmd.Pa

38、rameters.Add(MemberDate, SqlDbType.DateTime,8); cmd.ParametersMemberDate.Value = this.tdate.Text.ToString(); cmd.ExecuteNonQuery(); con.Close(); Response.Write(alert(注册成功!);5.1.2 用户查看商品以及下订单图7 商品展示图在以上页面中,用户可以进行查询商品,点击左边商品类别将跳转到右面相应信息,还可通过查询条件关键字搜索用户所需要的商品,需知道商品的更多信息,可点击详细信息,例图:图8 商品详细信息图此处有购买按钮,其代码

39、如下:protected void btnShop_Click(object sender, EventArgs e) /查询用户是否登陆 if (SessionMName = null) Response.Write(alert(您还没有登录,请登录后再购买,谢谢合作!) ); else /连接数据库,获取数据库中商品表中所购买的商品的参数 sqlconn.Open(); string strid = Page.Request.QueryStringGoodsID; string sqlstrbind = select * from vb_GoodsInfo where GoodsID= +

40、 strid + ; SqlDataAdapter myda = new SqlDataAdapter(sqlstrbind, sqlconn); DataSet myds = new DataSet(); myda.Fill(myds, vb_GoodsInfo); DataRowView mydrv = myds.Tablesvb_GoodsInfo.DefaultView0; strGTypeID = Convert.ToString(mydrv.RowGoodsTypeID);stringsqlstr=insertintotb_OrderInfo+(OrderMember,GoodsID,GoodsName,GoodsTypeID,GoodsTypeName,GoodsPrice,IsCheckout) +

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号