房地产信息管理系统的设计与开发.docx

上传人:小飞机 文档编号:2084556 上传时间:2023-01-08 格式:DOCX 页数:55 大小:3.42MB
返回 下载 相关 举报
房地产信息管理系统的设计与开发.docx_第1页
第1页 / 共55页
房地产信息管理系统的设计与开发.docx_第2页
第2页 / 共55页
房地产信息管理系统的设计与开发.docx_第3页
第3页 / 共55页
房地产信息管理系统的设计与开发.docx_第4页
第4页 / 共55页
房地产信息管理系统的设计与开发.docx_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《房地产信息管理系统的设计与开发.docx》由会员分享,可在线阅读,更多相关《房地产信息管理系统的设计与开发.docx(55页珍藏版)》请在三一办公上搜索。

1、Delphi + SQL Server2000房地产信息管理系统的设计与开发(讲义) 计算分院短学期教材(2)2房地产信息管理系统的设计与开发【摘要】该系统为满足中小房屋销售公司业务管理的需要,按照一般的房产销售管理业务流程,通过模块化设计,能够对楼盘、楼房、房屋、客户信息,房屋销售情况及员工业绩等多种信息进行全方位管理。系统由基础信息、房屋销售、统计报表和系统设置等四大模块组成。每个大的模块又由多个分模块组成,比如,房屋销售模块中又包括房屋销售管理、客户资料管理、销售收款管理和客户退款管理等,能够满足房屋销售业务各个环节的需要。系统的报表生成工具和分析工具使房屋销售情况和公司员工的业绩一目了

2、然。系统的设置模块除了密码等常规设置外,还有权限设置,不同权限的人员进入不同操作模块,使数据具有保密性。系统使用Delphi 7.0和SQL Server数据库为开发平台,系统具有很好的安全性。该系统还具有操作界面友好、使用方便、维护简单等显著特点,是中小房产企业管理销售业务的有力工具。 48浙江大学城市学院毕业论文目录目录Delphi + SQL Server20001第1章 概要11.1房地产信息管理系统的功能结构图:11.1.2 基础信息管理1第2章 数据库设计32.1房地产信息管理系统数据库的表32.1.1楼盘基本信息表的字段42.1.2 楼房信息表的字段52.1.3 房屋信息表的字段

3、52.1.4客户信息表的字段52.1.2 系统流程图6第3章 主窗体设计73.1主窗体界面设计73.1.1 主窗体界面设计概要73.1.2 主窗体界面详细设计83.2 主窗体的第一次代码设计153.3 数据模块设计16第4章 登录模块设计214.1 登录模块的窗体设计214.1.1 登录窗口样式215.1.2 登录模块的数据控件234.1.3 登录模块代码设计24第5章 功能模块设计305.1 房型资料录入模块设计305.1.1 在dm窗体中添加数据控件305.1.2 窗体详细设计315.1.3 房型资料录入窗体的代码设计325.2 楼盘楼房资料录入模块的设计395.2.1 做好连接数据表的准

4、备405.2.2 楼盘楼房资料录入模块的界面设计425.2.3 楼房资料录入模块的设计44第6章 数据统计报表的设计456.1 数据统计报表设计概述45参考文献46附录47浙江大学城市学院毕业论文图目录图目录图2.2 系统流程图6图3.1 主窗体页面7图3.2 一级菜单设计图8图3.3 【房屋销售管理】的二级菜单设计图9图3.4 其余三项菜单的二级菜单设计图9图3.5 菜单的详细内容10图3.6 设置image控件的”picture”属性以载入背景图10图3.7 载入背景图后的样式11图3.8 将StausBar1控件分成三段12图3.9 状态条第三段显示系统时间13图3.10 设计好的工具栏

5、14图3.11 设置快捷键的Layout属性14图3.12 选择DataModule窗体16图3.13 DataModule窗体中的连接控件17图3.14 fdc_conn控件的Connection属性17图3.15 数据库连接成功18图4.2 设置DBLookupCombobox1控件的属性22图4-3 为登录窗体访问数据库要求的数据控件23图4-4 登录用的用户表24图4-5 登录窗口29图4-6 预先窜放在f_user表的信息29图5.1 编辑CommandText属性30图5.2 编辑CommandText属性31图5-3 设计好的房型资料录入窗体32图5-4 房型资料录入窗体初始化时

6、的三个事件33三个事件的详细代码:33图5-4 编译好的房型资料录入窗体35图5-5 开始录入房型资料36图5-5 楼盘楼房资料录入模块运行结果39图5-5 楼房资料录入模块运行结果40图5-6 CommandText Editor窗口41图5-7 新添访问f_house和f_build表的数据控件42图5-8 楼盘楼房资料录入界面43浙江大学城市学院毕业论文表目录表目录表1 fdc.mdf数据库的表3表2 楼盘基本信息表f_build 的字段4表5 客户信息表f_customer 的字段5房地产信息管理系统的设计与开发 第1章 概要第1章 概要1.1房地产信息管理系统的功能结构图: 房地产信

7、息管理系统的功能很多,系统大而复杂,设计起来非常繁琐,尤其是销售部分,相互关联的部分很多,窗口套窗口。所以在设计之前,要把模块之间的关系梳理清除。系统由基础信息、房屋销售、统计报表和系统设置四个大的功能模块组成。 图1-1 房地产信息管理系统功能结构图1.1.2 基础信息管理房屋销售管理系统的基础信息中,关于楼房的信息有楼盘(即我们平时所说的小区)、楼房(即该小区中的第几号楼)、和房屋(即户)三层基础资料。首先是要建立一个楼盘(小区)的资料,即数据库中的f_build表(楼盘基本信息表),一个实用化的楼盘基本信息表有23项内容,比较复杂。接下来是建立每一座楼的基本信息,即数据库中f_house

8、表(楼房基本信息),表中的明细也有15项之多。关于楼房的第三项基本数据是具体到每一户,就是数据库中的f_room(房屋信息表),动手设计之前,一定要牢记这三张表。此外还有公司员工信息、客户信息等。房地产信息管理系统的设计与开发附录第2章 数据库设计2.1房地产信息管理系统数据库的表用SQL Server2000创建数据库,取名为fdc.mdf.数据库一共有30张表,表名见表1:表1 fdc.mdf数据库的表 表名称 功能描述f_appertain_house附属房产f_build楼盘基本信息f_buy_factor客户购买因素信息表f_buy_will客户购买意向f_customer客户信息f

9、_customer_change客户更换信息f_customwer_return退房信息表f_customer_work客户工作信息f_employees员工信息表f_family_structure家庭结构f_house楼房基本信息f_house_aspect楼房朝向信息表f_house_type楼房类型f_house_structure楼房结构f_mode房型基本信息表f_pay_item付款项目表f_pay_mode支付方式表f_pay_plan付款安排f_post岗位表f_price_reflect价格反映表f_require_area需求面积f_require_floor需求楼层f_

10、room_mode需求房型f_room房屋信息表f_room_format房屋格式表f_room_pay房屋付款f_standard装修及设备标准f_tube_net网管资料f_sys_company公司信息f_user用户资料在上述的30张表中,最重要的是下列三表,楼盘楼房房屋。1. f_build 楼盘基本信息。就是记录一个新建楼盘,即“小区”的所有信息;2. f_house 楼房基本信息。一个楼盘下面有多栋楼房,该表记录楼房信息。3. f_room 房屋基本信息。每栋楼房有多个户数,该表记录每户的信息。2.1.1楼盘基本信息表的字段表2 楼盘基本信息表f_build 的字段字段名称字段类

11、型主键允许为空默认值功能描述楼盘编号Varchar(20)是标识一个楼盘楼盘名称Varchar(20) 是地理位置Varchar(20)是占地面积Varchar(20) 是建筑面积Varchar(20)是建筑占地面积Varchar(20) 是道路广场占地面积Varchar(20)是建筑密度Varchar(20) 是容积率numeric(9)是绿化面积varchar(20) 是绿化率numeric(9)是开发日期datetime(8) 是time_default楼房数量numeric(9)是车位数numeric(9) 是房屋数量numeric(9)是出售数量numeric(9) 是预定数量num

12、eric(9)是出售未审核数量numeric(9) 是未出售数量numeric(9)是楼盘备注varchar(20) 是建档人员varchar(20)是建档日期datetime(8) 是time_default楼盘图片image是2.1.2 楼房信息表的字段楼房信息表f_house的字段如表3所示。2.1.3 房屋信息表的字段楼房信息表f_house的字段如表4所示。2.1.4客户信息表的字段表5列出的是客户信息表的字段。客户信息表也是本系统的重要数据表。表5 客户信息表f_customer 的字段字段名称字段类型主键允许为空默认值功能描述客户编号Numeric(9)是客户名称Varchar(

13、10) 是性别Varchar(2)是年龄Varchar(3) 是职业Varchar(16)是身份证号码Varchar(23) 是邮编Varchar(10)是联系方式varchar(15) 是工作单位varchar(40)是联系地址varchar(40) 是家庭结构varchar(16)是需求面积varchar(16) 是需求楼层varchar(11)是需求房型varchar(10) 是购买意向varchar(10)是价格反映varchar(10) 是支付方式varchar(10)是考虑因素varchar(10) 是信息来源varchar(10)是购房数量numeric(9) 是购房金额floa

14、t(8)是已付金额float(8) 是未付金额float(8)是备注varchar(100)建档人员varchar(10)建档日期datetime(8)修改人员varchar(8)修改日期datetime(8)2.1.2 系统流程图图2.2 系统流程图 第3章 主窗体设计3.1主窗体界面设计3.1.1 主窗体界面设计概要主界面首要任务是要通过主菜单给用户提供调用各功能模块的选择,因此设计菜单是主窗体设计的第一步。另外,与主菜单相配合的是工具条的设计。工具条上放了许多使用频率高的快捷键,以提高使用者的操作速度。另外,在主菜单的最下方有一个状态栏,该栏用于显示系统的当前状态,例如当前的操作员和系统

15、时间等。主窗体运行的结果如图3-1所示。状态条工具条主菜单图3.1 主窗体页面3.1.2 主窗体界面详细设计1. 启动Delphi 开发平台,将自动弹出的窗体设为主窗体,并命名。主窗体的name属性:mainform;主窗体的单元文件名:mainunit.pas;工程文件名:fdcbuilding.prj。1)主菜单设计向主窗体中拖放一个主菜单控件,使用它的默认名:Mainmenu1。在Mainmenu1 上按右键,从弹出的窗体中,选择“Menu Designer”以设计主菜单。主菜单的第一级有【房屋销售管理】、【数据统计报表】、【基本资料录入】、【系统设置】和【帮助】等5项。具体内容如图3-

16、1所示。这条线(分隔符)是在Caption属性中输入英文状态下的“-”号二级菜单一级菜单图3.2 一级菜单设计图2)设计二级菜单在Menu Designer 中按照图3.2 中的标识完成【房屋销售管理】菜单的二级菜单的设计。选择热键接着输入二级菜单名先输入一级菜单名 图3.3 【房屋销售管理】的二级菜单设计图接下来分别设计【数据统计表表】、【基本资料录入】、【系统设置】和【帮助】菜单的二级菜单。设计好的二级菜单如图3-4所示。 图3.4 其余三项菜单的二级菜单设计图至于【帮助】菜单的二级菜单只有“关于”和“帮助 F2” 这2项。我们可以展开Delphi 设计平台左上角的“object tree

17、view”视窗查看主窗体“MainForm”的全部菜单内容,如图3-5所示。 这是分隔符图3.5 菜单的详细内容3) 主窗体背景设计在主窗体(MainForm)中放入一个“image控件”,在它的“picture”属性中载入一张保存在本工程文件目下(根目录)的图片作为背景图。图3.6 设置image控件的”picture”属性以载入背景图定时器图3.7 载入背景图后的样式4) 主窗体的状态栏控件设计在主窗体的最下方添加TStatusBar(在控件栏的Win32页)组件,该组件用来显示主窗体运行时的状态,用默认名“StausBar1”。将StausBar1分成三个区域,分别是StatusPane

18、l1、StatusPanel2和StatusPanel3。第一个区域显示公司名称,第二个区域显示当前的操作员,第三个区域显示系统时间。为此,要在主窗体中添加一个时间控件。这些功能的实现是靠代码完成的,稍后介绍这些代码。将状态条分段的操作方法是:在StausBar1 控件上按鼠标右键,弹出“Editing StatusBar1.Panels” 编辑窗,在该编辑窗上面按右键,选择弹出窗的“Add”,将StatusBar1分成三段,分别是0-STatusPanel1、1-STatusPanel1、2-STatusPanel1。然后在其“Width”属性中设置每一段的宽度,如图3-8 所示。设置第一段

19、的宽度为150每选择一次Add就会增加一段图3.8 将StausBar1控件分成三段5) 状态栏的代码设计为了在状态栏的第一段中显示目前登录者的姓名,首先在主窗体的“public”域中声明一个UserName的字符串变量:publicname:string;username:string;为了在状态栏的第三段中显示目前的系统时间,要在主窗体中添加一个时间控件,双击主窗体中的定时器控件,在弹出的代码编写器中编写如下代码:procedure Tmainform.Timer1Timer(Sender: TObject);beginMainform.StatusBar1.Panels2.Text :=

20、现在时间: +datetimetostr(now);end;编译后就可以在状态条的第三段看到系统时间,如图3-9所示:工具栏显示系统时间图3.9 状态条第三段显示系统时间6) 主窗体工具栏的设计在主窗体中添加一个工具栏,工具栏上放置若干个快件键,以提供某些快速操作。添加工具栏的操作方法是:1. 从Win32页中拖放一个ToolBar1 控件到主窗体中。设置Align属性(对齐)为alNone;设置DragKind属性为dkDock。2. 从Additional 页中拖放10个SpeedButton按钮到ToolBar1上。这些SpeedButton按钮作为工具栏的快捷键;3. 给每个按钮添加上

21、相应的图标和文字。为了能给这些SpeedButton按钮添加上图标,首先要准备好图标(素材),并将他们存放在一个专门的文件夹中,然后在主窗体中添加一个ImageList 控件,使用默认名ImageList1。选择SpeedButton1,通过它的Glyph 属性添加上为它准备好的图标,并从它的Caption 属性中输入中文名。设计好的工具栏ToolBar1如图3-10所示:图3.10 设计好的工具栏A实现快捷键图标在上、文字在下的方法:如下图所示,先选中ToolBar上的一个快捷键,将它的Layout属性设置为blGlyphTop就可以了。把该键的Layout属性设置为blGlyphTop被选

22、中的快捷键 图3.11 设置快捷键的Layout属性7) 主窗体工具栏的拖曳工具栏不一定始终停靠在一个个固定的地方,而是随时可以变换地方,这就要用到控件的拖曳技术。ToolBar1的Align属性设置为:alNone,即不固定位置;ToolBar1的DranKInd属性设置为:dkDock;在主窗体的最下方添加一个Panel1组件,它的Heigh属性设为1;Align属性设为alBottem;Docksite设为True程序的相关代码:procedure TMainForm.FormCreate(Sender: TObject);begin toolbar1.Hide;end;procedur

23、e TMainForm.ToolBar1StartDock(Sender: TObject; var DragObject: TDragDockObject);begin panel1.Height:=1;end;procedure TMainForm.Panel1DockDrop(Sender: TObject; Source: TDragDockObject; X, Y: Integer);begin panel1.Height:=toolbar1.Height;end;3.2 主窗体的第一次代码设计主窗体的界面设计好后,着手编写主窗体初始化的三段代码,以便先让它空转起来。1)proced

24、ure FormShow(Sender: TObject);2)procedure FormCreate(Sender: TObject);3)procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); /按下F功能键所执行的功能4)为了在编译完成后能退出程序,可先编写主菜单“【系统设置】”中的“退出系统”项的代码:procedure TMainForm.N27Click(Sender: TObject); /退出系统菜单begin Close;end;由于内容较多,代码就不一一列出,具体的代码请参见程序

25、设计部分。同时要在主窗口的代码编辑窗口的public处设立如下变量,以备后用:public modelr,buildlr,comlr,emplr,sale,gather,plan,payreturn, saler,house,custpay,cust,custfx,user1,databack:boolean; name:string; username:string;3.3 数据模块设计在Delphi的数据库应用程序设计中,数据库与SQL Server 服务器的连接是通过数据模块(Data Module)来实现的。从菜单“File” | “New” | “Other” ,弹出选择“Data

26、Module”模版窗口,从该窗体中点选Data Module 项,如图3-12所示。点选Data Module图3.12 选择DataModule窗体窗体名:dm;单元文件名:dmunit.pac;Caption:dm。记住:主窗体和接下来完成的登录窗体都要“Uses dmunit.pas”!在新生成的Data Module窗体中,从“ADO”组件页中拖放连接数据库的“Connection” 组件,将其Name属性设为“fdc_conn”,再从“DataAceess”页中拖放一个“DataSource”控件将其Name属性设为“dsuser”,并给数据模版(窗体)命名为“dm” ,单元文件保存

27、为:“dmunit.pas” 。设计好的数据模块如图3-13所示。这些是登录页面访问f_User表所需的控件DataSource控件图3.13 DataModule窗体中的连接控件我们采用ADO数据库连接技术。设置fdc_conn控件的Connection属性,以实现连接FDC.mdb数据库。按下图首先选择提供程序“Microsoft OLE DB for SQL Server”,然后按右边所谓图示填写数据库所在的服务器名和将要连接的数据库“FDC”,最后确认数据库连接成功。要连接的数据库名选择服务器选择提供程序 图3.14 fdc_conn控件的Connection属性 图3.15 数据库连

28、接成功接下来在“dm”窗体中逐次添加以下数据控件:1) userdataSet 控件属性设置: Connection fdc_conn CommandText 点击 后面的,弹出下面的编辑窗体:选择左边的f_user表后,在这里书写select *from f_user 代码2) usertable 控件,这是ADO页的表控件,取名为:usertableUsertable的属性设置: 要连接到fdc_conn控件 要指定它要访问的数据表:f_user表。4)duser控件,这是一个datasource 控件,与usertable配套使用。duser控件的属性设置:指定它的DataSet5) d

29、userdataset 这是一个DataSource控件(在DataAccess页),取名为duserdataset,表示与前一个userdataset控件配套使用。duserdataset属性设置:指定它的DataSet 属性6) 另外放了两个控件,这是查询用的,其中控件要设置Connection属性:,DataSource1没有属性设置。注意:该Datamodule 即dm 窗体没有事件,也就是说demunit.pas 中不用编写代码。第4章 登录模块设计4.1 登录模块的窗体设计程序的启动画面消失后,将弹出登录窗体,用户通过输入用户名和密码就可以进入系统,然后根据用户权限打开相应的模块。

30、用户登录的作用是保护应用程序中的相关资料,以防止无关人员对程序信息的肆意破坏。当进入程序后,用户只能根据用户拥有的权限对程序中的相关模块进行相应的操作。为了防止无关人员在数据库中获取用户信息,而对应用程序进行操作,可以先对用户名和密码进行再加密后存入数据库中,这样用户名和密码就不太容易被盗取,使应用程序变得更加安全。当没有输入用户名和密码时,程序会提示“请输入正确的用户名和密码”,当用户名或,密码错误时,系统会提示:“对不起,没有这个用户名”或“密码错误”,系统重新回到登录窗口。一个用户最多允许输入三次用户名和密码,超过三次,系统将退出。 4.1.1 登录窗口样式 登录窗体的一般样式如图4-1

31、。 图4.1 登录窗体布局图窗体中的控件及其名称:窗体中用到的图片要事先准备好,保存在工程文件的根目录下。要注意的是,用户名后面的输入框采用的控件是位于DataControls页的DBLookupCombobox1。用它可以从下拉列表框中选择已经保存在User数据表中的用户,不必每次输入用户名。读取User表中的“用户名称”字段DBLookupCombobox1的属性设置图4-2所示:数据模块中的一个名为“dsuser”的Datasource控件 外形设置 图4.2 设置DBLookupCombobox1控件的属性5.1.2 登录模块的数据控件登录窗体中输入用户名和密码之后,点击键,程序代码就

32、去访问“FDC.mdf” 数据库中的“ User” 数据表,通过函数()将输入的用户名和密码与User 表中保存的数据是否一致。如果一致,程序就打开主窗体,供登录者进行所需的操作;否则会弹出提示框,要你输入正确的用户名和密码,而且最多只能连续输入三次,若三次都不成功,那么程序就退出。为了能够实现这些功能,我们必须在数据模块(DataModule)中放置如下数据控件:DataSource控件它的DataSet属性:UserDataSet ADODataSet控件它的CommandText属性:select * from f_user表控件,它的TableName属性:f_user图4-3 为登录

33、窗体访问数据库要求的数据控件登录系统时既要检查用户名是否存在,还要验证密码是否正确,而且还要获取用户的权限供后面窗体调用。用户名、密码和用户权限存储在f_user表中,字段名有用户编号、用户名称、和用户密码以及用户权限等多项,参见图4-4:代表用户有权进行房型录入操作图4-4 登录用的用户表4.1.3 登录模块代码设计登录模块的主要程序代码如下:unit loginunit;private Private declarations public times:integer; /设置一个计算登录次数的参数 Public declarations end;var loginform: Tlogin

34、form;implementationuses dmunit, mainunit; /登录窗口要与数据模块窗体和主窗体相关联$R *.dfmprocedure Tloginform.DBLookupComboBox1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); /当点击用户名输入框时执行的动作begin if key=13 then /按下回车键 edit1.SetFocus ;end;procedure Tloginform.DBLookupComboBox1Enter(Sender: TObject);begin

35、dblookupcombobox1.Color:=clcream;end;procedure Tloginform.DBLookupComboBox1Exit(Sender: TObject);begin dblookupcombobox1.Color:=clskyblue;end;procedure Tloginform.Edit1Enter(Sender: TObject);begin edit1.Color:=clcream; /Edit1是密码输入框end;procedure Tloginform.Edit1Exit(Sender: TObject);begin edit1.Color

36、:=clskyblue;end;procedure Tloginform.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin if key=13 then bitbtn1.SetFocus ;end;procedure Tloginform.BitBtn1Click(Sender: TObject); /按下键begin if dm.usertable.RecordCount=0 then begin Mainform.Username:=超级用户; mainform.StatusBar1.Panels1

37、.Text:=操作员: +mainform.username; mainform.modelr:=true;主窗体的状态条 mainform.buildlr:=true; mainform.emplr:=true; lr:=true; mainform.sale:=true; mainform.gather:=true; mainform.cust:=true;主窗体中的那些菜单因为登录的是“超级用户”所有的菜单都是可操作的 mainform.plan:=true; mainform.payreturn:=true; mainform.saler:=true; mainform.house:=

38、true; mainform.custpay:=true; mainform.custfx:=true; mainform.user1:=true; mainform.databack:=true; dm.usertable.Active:=false; close; end else begin if edit1.Texttrim(dm.usertable.FieldValues用户密码) then begin times:=times+1; /登录次数+1 if times3 then begin messagebox(self.Handle,用户名称或用户密码不正确,请重新输入,提示信息

39、,mb_iconinformation); edit1.SetFocus ; end else begin messagebox(self.Handle,您已经三次输入不正确,请退出,提示信息,mb_iconinformation); application.Terminate ; end; end else begin Mainform.Username:=dblookupcombobox1.text; mainform.StatusBar1.Panels1.Text:=操作员: +mainform.username; mainform.modelr:=dm.usertable.FieldV

40、alues房型录入; mainform.buildlr:=dm.usertable.FieldValues楼盘楼房录入; mainform.emplr:=dm.usertable.FieldValues员工资料录入; lr:=dm.usertable.FieldValues公司资料录入; mainform.sale:=dm.usertable.FieldValues房屋销售管理; mainform.gather:=dm.usertable.FieldValues收款管理; mainform.cust:=dm.usertable.FieldValues客户资料管理; mainform.plan:

41、=dm.usertable.FieldValues收款安排查询; mainform.payreturn:=dm.usertable.FieldValues给客户退款管理; mainform.saler:=dm.usertable.FieldValues销售代表统计; mainform.house:=dm.usertable.FieldValues楼房销售统计; mainform.custpay:=dm.usertable.FieldValues客户购订收款统计; mainform.custfx:=dm.usertable.FieldValues客户数据分析; mainform.user1:=dm.usertable.FieldValues用户管理; mainform.databack:=dm.usertable.FieldValues数据备份与恢复; mainform.name:=dm.usertable.FieldValues用户名称; dm.usertable.Active:=false; close; end; e

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号