酒店管理系统课程设计.docx

上传人:小飞机 文档编号:2034631 上传时间:2023-01-02 格式:DOCX 页数:43 大小:450.80KB
返回 下载 相关 举报
酒店管理系统课程设计.docx_第1页
第1页 / 共43页
酒店管理系统课程设计.docx_第2页
第2页 / 共43页
酒店管理系统课程设计.docx_第3页
第3页 / 共43页
酒店管理系统课程设计.docx_第4页
第4页 / 共43页
酒店管理系统课程设计.docx_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《酒店管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《酒店管理系统课程设计.docx(43页珍藏版)》请在三一办公上搜索。

1、目录第1章 需求分析11.1 系统概述11.2 系统功能需求分析1第2章 管理系统平台的选用22.1 数据库系统的选择原则22.2 系统开发工具的选择2第3章 酒店管理概述33.1系统数据需求33.2系统业务功能的需求33.3系统性能需求:3第4章 系统总体设计54.1 系统功能模块设计54.2 系统结构设计74.3系统数据流程图84.4 E-R图94.5 系统的运行要求9第5章 详细设计与实现105.1 数据库设计105.2 创建主窗体以及主要窗体135.3 代码设计19第6章 系统评价286.1 系统的测试286.2要注意到的问题296.3 将来可能提出的要求29结 论30参考文献31第1

2、章 需求分析1.1 系统概述 随着社会经济的发展,酒店、宾馆在服务行业扮演着越来越重要的角色。酒店行业的竞争表现在管理和服务水平的竞争,它影响到酒店的形象和声誉。这就要求通过先进的管理来提高服务质量,尽可能做到让客户满意。因此,非常需要一套酒店管理系统来对客房信息,经营情况以及客户信息进行管理。酒店管理系统为管理者制定决策判断提供了可行依据。判断提供迅速高效的、系统化的服务,避免手工处理的繁琐与误差,成为酒店、宾馆经营的重中之重。但是目前商业性的酒店管理软件大多数是舍用于大、中型酒店,其操作复杂,收费昂贵,还需专业维护。这就造成了很多小型酒店以及小型宾没有客房的管理软件,对于其宾馆的经营造成管

3、理的繁琐与混乱。所以开发一款社用于小型酒店或小型宾馆的客房管理软件时必须的。1.2 系统功能需求分析该系统的功能需求有如下几个方面:(1) 客房管理。主要用于对客房信息进行维护。功能包括对客房信息的添加、修改和删除已有的客户信息,对客房信息进行查询。(2) 住宿管理。主要用于对入住信息进行维护。功能包括对入住信息的添加、修改和查询。(3) 结算管理。主要用于对客房结账和对结算历史信息的查询。功能包括结账(计算费用、记录结账信息)和结算查询。第2章 管理系统平台的选用2.1 数据库系统的选择原则1、数据库系统采用易于集成的,开放的技术。2、产品质量优异,可靠性高,适于长期运行,能支持关键应用。3

4、、数据安全,保安型高。4、能提供分布式数据库功能。5、支持多种开发环境,软件开发容易。6、扩充性和升级能力强。2.2 系统开发工具的选择本次系统设计选用的是Visual Basic作为开发工具,因为Visual Basic 具有以下优越的功能:简单,易学,易用(1)快速完成应用任务(2)使用方便的工具栏(3)支持中英文输入法(4)用项目管理器统一界面第3章 酒店管理概述3.1系统数据需求1) 数据录入和处理的准确性和实时性。2) 数据的一致性与完整性。3) 数据的共享与独立性。3.2系统业务功能的需求(1) 实现客房信息管理功能(2) 实现客户信息管理功能(3) 实现预定管理功能(4) 实现入

5、住管理功能(5) 实现消费记账功能(6) 实现收银退房功能综上,我们将系统的功能大体划分为三大模块:权限管理:包括管理员的登录前台管理:包括客户信息的录入、客户预订和入住登记以及结算的管理等。后台报表管理:包括报表的打印3.3系统性能需求:为了保证系统能够长期、安全、稳定、可靠、高效的运行,系统应该满足以下的性能需求:(1)系统处理的准确性和及时性系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足用户对信息的处理。(2)系统的开放性和系统的可扩充性系统在开发过程中,应该充分考虑以后的可扩充性。例如系统权

6、限和客房信息设置等模块也会不断的更新和完善。所有这些都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。(3)系统的易用性本酒店客房管理系统面向的用户是酒店内工作人员,而有些使用人员往往对计算机并不是非常熟悉,所以系统操作上要求简单、方便、快捷,便于用户使用。这就要求系统能够提供良好的用户接口,易用的人机交互界面。(4)系统的响应速度系统设计中摒弃大量数据冗余,提出了优化数据库的解决方案,大量使用存储过程,大大提高系统响应时间和速度。第4章 系统总体设计本部分主要介绍

7、系统要实现的功能,搭好设计的总体框架,使我们对要开发的系统有一个系统、全面、确切的认识。4.1 系统功能模块设计结合前面需求分析阶段的结果进行综合处理,确定了客房管理系统需要完成的功能,主要划分为以下模块:1. 结算管理(1)结账 (2)结账查询2. 客房信息管理(1)设置客房标准添加客房标准 修改客房标准 删除客房标准(2)设置客房信息添加客房信息 修改客房信息 添加客房类型 查询客房信息3. 住宿信息管理(1) 添加入住信息 (2) 修改入住信息(3) 查询入住信息模块设计图如下: 酒店管理系统酒店入住管理酒店客户管理酒店管理员管块数据统计模块酒店退房管理客户房号客户姓名客户性别客户房费酒

8、店管理模块查询客户信息添加客户信息删除客户信息维护客户信息客房信息管理客房类别管理添加客房信息查询客房信息删除客房信息维护客房信息添加类别信息查询类别信息删除类别信息维护类别信息添加管理员信息删除管理员信息管理整个酒店信息管理管理员管理权限管理图4-1系统功能模块图4.2 系统结构设计系统的主要结构:系统的封面以表单开始,要求用户输入登录,若密码错误,则自动退出,否则出现系统主菜单,接受用户的操作,操作完毕后用户可以从系统菜单中退出系统,系统运行的步骤如图:前台管理员酒店客房管理系统客户客户信息登记表结帐单4.3系统数据流程图查询客户登记结算入住登记入住信息退房需求结算信息信息核查客户信息查询

9、结果客户需求描述入住信息表旅客信息表客房信息表客户信息表消费结算表图4-3 系统数据流程图4.4 E-R图4.5 系统的运行要求软、硬件环境:硬件:客户机(CPU P200以上,内存:32M以上)、数据库服务器(CPU PIII800以上,内存:256M或以上。以Microsoft windows操作系统为工作平台。以Microsoft Visual Basic 6.0为开发工具。数据库环境是Microsoft Office Access 2003。第5章 详细设计与实现5.1 数据库设计(1)数据库需求分析设计的数据库系统应用于酒店管理系统,所以必须充分满足酒店客房管理系统的各种要求。此系统

10、要求记录每一次酒店客户的住宿登记、调房登记和退宿结账的操作信息,并允许系统用户对这些信息进行查询。另外,必须建立一些辅助项目表为这些操作信息提供数据来源。通过以上的分析,数据库设计必须满足以下几点: (1)记录酒店客户住宿登记操作的信息。 (2)记录酒店客户退房结账操作的信息。 (3)记录酒店客房的相关信息。 (4)记录酒店客户的客房预订信息。 (5)记录系统用户的用户名、密码和操作权限。 (2)建立Access数据库及表在一个酒店管理系统中,数据库的地位是非常重要的,是一个系统正常运行的基础。本系统的数据库是采用Microsoft公司的Access 2003设计的。在数据库的设计过程中,首先

11、是收集、分析需求;再从需求抽象出一般的实体、关系和他们的属性;再将这些实体、关系和属性按照一定的规则转化为二元表结构。本系统中共有4数据表表3-1为Usersinfo管理员资料数据表。管理员资料数据表记录了所有管理的基本资料,管理员可添加、删除和查询该表。该表包括管理员ID、姓名、密码和权限等资料。表3-1为UsersInfo管理员资料数据表字段名类型大小说明姓名Text20管理人员帐号(主键)密码Text20管理人员密码(主键)权限Text1管理人员权限如下图所示:表3-2为add旅客入住登记表。add日主登记表记录了入住旅客的基本个人信息、房间号、登记号等。表3-2旅客信息表为旅客的个人信

12、息加入住客房信息数据结构表字段名类型大小说明登记号Text8旅客入住号(主键)姓名Text8旅客姓名(不为空)身份证号码Text18旅客身份证号(不为空)房间号Text3入住房间号(不为空)登记日期Text日期/时间旅客入住时间(不为空)性别Text3旅客性别籍贯Text8旅客籍贯如下所示:表3-3为room资料数据表。room料数据表记录了room基本资料,可供查询。该表主要包括了房间号、客房等级、客房类型、客房价格、客房状态、客房备注信息等基本资料。表3-2room资料数据表字段名类型大小说明房间号Text3房间号(主键)客房等级Text8客房等级客房类型Text8客房类型(不为空)客房价

13、格数字单精度型客房价格(不为空)客房状态Text3客房状态(不为空)客房备注信息备注8客房备注信息如下所示:表3-4为quit资料数据表。quit资料数据表记录了所有退房的基本资料,管理员可添加、删除和查询该表。类型的基本资料,包括登记号、登记日期、退房日期、付款金额、退房备注信息。表3-4为quit资料数据表字段名类型大小说明登记号Text8旅客入住号(主键)登记日期日期/时间旅客登记时间(不为空)退房时间日期/时间旅客退房时间(不为空)付款金额Text单精度型付费金额(不为空)退房备注信息Text8退房备注信息如下所示:连接数据库:由于本系统是采用ADO对象访问数据库的技术,所以在VB中需

14、要添加ADO库。添加的方法是在VB中选择“工程”“引用”命令,在对话框中选择Microdoft ActiveX Data Objects 2.0 Library,单击“确定”按钮。在程序设计的公共模块中,先定义ADO连接对象。语句如下:Public conn As New ADODB.connection 标记连接对象Dim connection As StringConnectionString = provider=microsoft.jet.oledb.4.0; & data source=carshale.mdbconn.Open ConnectionString5.2 创建主窗体以及

15、主要窗体建立主窗体:单击”工程”-”添加MDI窗体”菜单,在弹出的对话框中单击”打开”按钮则为当前项目添加了一个MDI窗体。设置好MDI窗体属性后,设置此项目的属性。单击”工程”-”工程1属性”菜单,进入项目属性设置窗体。在此项目属性窗体中通用选项卡的启动对象中选择MDIfrmMain项,将这一多文档窗体作为程序的启动窗体。图41 菜单结构(1)登录模块的设计:此模块的功能是检查管理员是否有进入系统的权限。用到的主要控件为二个text、两个label和两个Button按钮。窗体界面如图4-2所示。图4-2 登录窗体的界面在此模块中管理员可以选择相应的管理员帐号进行登录,减去了忘记帐号或帐号名输

16、入不方便的烦恼。(2)主页面模块的设计:此模块是系统服务器端的主要控制界面,通过菜单的选择,可以控制系统的所有功能,窗体界面如图4-3,4-4所示。主界面的设计步骤:1)设计主界面控件布局:在主界面的布局中使用了工具栏(ToolBar)、时钟控件(timer)和图象列表(ImageList)等非Vb标准控件。2)工具栏的设置: 给工具栏添加按钮3)添加菜单:菜单的使用是为了更好的给用户提供功能指引。 工具栏列表系统通过Timer控件在状态栏中显示系统的当前时间,Timer控件的时间间隔是1000,也就是1秒钟,这样状态栏中的时间每秒钟都会变化,达到显示系统时钟的目的,具体实现代码为:Priva

17、te Sub Timer1_Timer() StatusBar1.Panels(2).Text = Date & & TimeEnd Sub(4)创建系统主界面当系统运行时,首先进入登录界面,当输入帐号,密码合法时,则启动系统主界面。图4-4 系统主窗体的界面5)用户进入客房需要必要的登记来完成如图:图4-5用户登记界面图4-6已经登记的用户(6)退房信息:当旅客离开宾馆时,需要为其办理退房手续,在这过程中需要在旅客退房信息表中添加记录信息,以及修改客房信息表,改变客房状态。旅客退房信息窗体,工作界面设计情况如图:图4-7退房登记表(7)查询住户信息:此界面用于查询房间状态如是否有所需的类型或

18、是否为空房或满房,可以全部浏览,也可以按照查询条件来查找,如图:图4-8 客房状态界面(8)查询客房:客查询窗体主要功能是实现客房信息查询显示,查询方式可以是按旅客姓名,登记号也可以按房间号查询。工作界面如图: 图4-9查询住户登记表(9)客房情况打印表:图4-10客房情况打印表5.3 代码设计一、酒店管理信息系统程序代码:Private Sub CmdOK_Click() Dim s1 As StringDim i As IntegerDim j As IntegerDim a(18) As Stringj = Len(txtUserName.Text)s1 = txtUserName.Te

19、xtDim c As Integerc = 1For i = 1 To ja(i) = Mid(s1, i, 1) 逐一判断字符的合格化If a(i) = ThenMsgBox Error, vbOKOnly, ErrorExit SubElseIf a(i) = ThenMsgBox Error, vbOKOnly, ErrorExit SubElseIf a(i) = = ThenMsgBox Error, vbOKOnly, ErrorExit SubElseIf a(i) = ThenMsgBox Error, vbOKOnly, ErrorExit SubElseIf a(i) =

20、ThenMsgBox Error, vbOKOnly, ErrorExit SubElseIf a(i) = , ThenMsgBox Error, vbOKOnly, ErrorExit SubElseIf a(i) = ThenMsgBox Error, vbOKOnly, ErrorExit SubEnd Ifc = c + 1txtUserName.SetFocus Next iDim strusername As StringDim strpassword As StringStatic intlogintimes As IntegerIf Trim(txtUserName.Text

21、) = ThenMsgBox 用户名不能为空!, vbOKOnly + vbCritical, 错误Exit SubEnd Ifopentable adousers, usersinfoadousers.Refreshadousers.Recordset.Find 姓名= & & txtUserName.Text & , , adSearchForward, 1If Not adousers.Recordset.EOF Thenstrusername = adousers.Recordset!姓名strpassword = adousers.Recordset!密码Elsestrusernam

22、e = strpassword = End IfIf strusername = txtUserName.Text And strpassword = txtPassword.Text Thenadousers.Recordset.CloseUnload Me frmmdi.ShowElseMsgBox 用户名或密码不对!, vbOKOnly + vbInformation, 提示intlogintimes = intlogintimes + 1If intlogintimes = 3 Thenadousers.Recordset.CloseEndEnd IftxtPassword.SetFo

23、cusSendKeys HOME+ENDEnd IfEnd SubPrivate Sub cmdcancel_click()Unload MeEnd SubOption ExplicitPrivate Sub Command1_Click()With frmmdi.adoroom.RecordsetIf Not txtroomno.Locked ThenIf Trim(txtroomno.Text) = ThenMsgBox 房间号不能为空!, vbOKOnly + vbInformation, 提示txtroomno.SetFocusExit SubEnd IfEnd If!房间号 = Tr

24、im(txtroomno.Text)!客房等级 = Trim(txtroomgrade.Text)!客房类型 = Trim(txtroomtype.Text)!客房价格 = Trim(txtroomprice.Text)!客房状态 = Trim(txtroomstatus.Text)!客房备注信息 = txtroominfo.TextUpdateUnload MeEnd WithEnd SubPrivate Sub Command2_Click()Unload MeEnd Sub 退房登记实现代码:Private Sub CmdOK_Click()With frmmdi.adoquit.Rec

25、ordsetIf Not txtbookno.Locked Then If Trim(txtbookno.Text) = ThenMsgBox 登记号不能为空!, vbOKOnly + vbInformation, 提示txtbookno.SetFocusExit SubEnd Iffrmmdi.adoguest.Recordset.Find 登记号= & Trim(txtbookno.Text) & , , adSearchForward, 1If frmmdi.adoguest.Recordset.EOF Then MsgBox 非法登记号!, vbOKOnly + vbInformati

26、on, 提示 txtbookno.SetFocusSendKeys HOME+ENDtxtpaymoney.Text = Exit SubEnd Iffrmmdi.adoquit.Recordset.Find 登记号= & Trim(txtbookno.Text) & , , adSearchForward, 1If Not frmmdi.adoquit.Recordset.EOF Then 有就提示,然后退出MsgBox 已经有相同登记号!, vbOKOnly + vbInformation, 提示txtbookno.SetFocusSendKeys HOME+ENDtxtpaymoney.

27、Text = Exit SubEnd If.AddNew!登记号 = Trim(txtbookno.Text)End If!付款金额 = Val(Trim(txtpaymoney.Text)!登记日期 = Trim(txtbookdate.Text)!退房时间 = dtpquitdate.TextUpdateIf Trim(txtinfo.Text) = ThenMsgBox 备注不能为空!, vbOKOnly + vbInformation, 提示txtinfo.SetFocusEnd If!退房备注信息 = txtinfo.TextUpdateUnload Mefrmmdi.adoroom

28、.Recordset!客房状态 = 空With frmmdi.adoguest.RecordsetDeleteEnd WithEnd WithEnd SubPrivate Sub Command1_Click()If optroom Thenopentable frmmdi.Adoroom1, select * from room where (room.房间号) like & Trim(txtvalue.Text) & % & )ElseIf optgrade Thenopentable frmmdi.Adoroom1, select * from room where (room.客房等级

29、) like & Trim(txtvalue.Text) & % & ) ElseIf opttype Thenopentable frmmdi.Adoroom1, select * from room where (room.客房类型) like & Trim(txtvalue.Text) & % & )End IfdtgroomqueryinforefreshEnd SubPrivate Sub CmdOK_Click() Dim s1 As StringDim i As IntegerDim j As IntegerDim a(18) As Stringj = Len(txtUserNa

30、me.Text)s1 = txtUserName.TextDim c As Integerc = 1For i = 1 To ja(i) = Mid(s1, i, 1)If a(i) = ThenMsgBox Error, vbOKOnly, ErrorExit SubElseIf a(i) = ThenMsgBox Error, vbOKOnly, ErrorMsgBox Error, vbOKOnly, ErrorExit SubElseIf a(i) = = ThenMsgBox Error, vbOKOnly, ErrorExit SubElseIf a(i) = ThenMsgBox

31、 Error, vbOKOnly, ErrorExit SubElseIf a(i) = ThenMsgBox Error, vbOKOnly, ErrorExit SubElseIf a(i) = , ThenMsgBox Error, vbOKOnly, ErrorExit SubElseIf a(i) = ThenMsgBox Error, vbOKOnly, ErrorExit SubEnd Ifc = c + 1txtUserName.SetFocusNext iDim strusername As StringDim strpassword As StringStatic intl

32、ogintimes As IntegerIf Trim(txtUserName.Text) = ThenMsgBox 用户名不能为空!, vbOKOnly + vbCritical, 错误Exit SubEnd Ifopentable adousers, usersinfoadousers.Refreshadousers.Recordset.Find 姓名= & & txtUserName.Text & , , adSearchForward, 1If Not adousers.Recordset.EOF Thenstrusername = adousers.Recordset!姓名strpa

33、ssword = adousers.Recordset!密码Elsestrusername = strpassword = End IfIf strusername = txtUserName.Text And strpassword = txtPassword.Text Thenadousers.Recordset.CloseUnload Mefrmmdi.ShowElseMsgBox 用户名或密码不对!, vbOKOnly + vbInformation, 提示intlogintimes = intlogintimes + 1If intlogintimes = 3 Thenadouser

34、s.Recordset.CloseEndEnd IftxtPassword.SetFocusSendKeys HOME+ENDEnd IfEnd SubPrivate Sub cmdcancel_click()Unload MeEnd Sub二、主控制窗体代码:Option ExplicitPrivate Sub MDIForm_Load()App.Title = 宾馆客房管理系统opentable adoroom, roomopentable Adoroom1, roomopentable adoguest, guestopentable Adoguest1, guestopentable

35、adoquit, quitStatusBar1.Panels(1).Text = 欢迎登陆宾馆管理系统StatusBar1.Panels(2).Text = Date & & TimeEnd SubPrivate Sub mnuCascade_Click()frmmdi.Arrange vbCascadeEnd SubPrivate Sub mnudenglu_Click()frmLogin.ShowEnd SubPrivate Sub mnuExit_Click()Unload MeEnd SubPrivate Sub mnuGuest_Click()frmGuestInfo.ShowEnd

36、 SubPrivate Sub mnuHor_Click()frmmdi.Arrange vbTileHorizontalEnd SubPrivate Sub mnuin_Click()frmusers.ShowEnd SubPrivate Sub mnuqueryguest_Click()frmqueryinfo.ShowEnd SubPrivate Sub mnuqueryroom_Click()frmqueryroom.ShowEnd SubPrivate Sub mnuQuit_Click()frmquitinfo.ShowEnd upPrivate Sub mnuver_Click(

37、)frmmdi.Arrange vbTileVerticalEnd SubPrivate Sub Timer1_Timer()StatusBar1.Panels(2).Text = Date & & TimeEnd SubPrivate Sub toolbar1_buttonclick(ByVal button As MSComctlLib.button)Select Case button.Index第6章 系统评价6.1 系统的测试在完成了系统界面设计及编码等工作后,为了使系统能够稳定地运行,测试是必不可少的,本系统采取的测试方案如下。 1.单元测试 主要采用白盒法,即对系统代码中所有可能

38、运行到的语句设置测试数据,以保证其处理结果正确。 2.集成测试 采用白盒法与黑盒法并用的方案,首先对窗体上各成员的工作原理进行测试,检测它们之间的逻辑关系是否正确、能否实现各自的功能,并使用错误测试数据以检测系统的健壮性。如选择系统中模块的实施部分,输入数据,看界面上的功能键能否运行起来。 3.确认测试 主要采用黑盒法,以检测各模块之间、以及窗体与数据库之间的接口是否正确,系统功能是否能得到实现等。 在以上测试的基础上对系统功能进行整体的测试,依次检验系统功能是否符合系统设计的要求。6.2要注意到的问题VB 连接数据库,数据库的应用,程序的 简单设计, 以及一些开发的程序的步骤, 大致的知道一

39、些 VB 的开发过程, 但本程序有一点不足之处是安全性能很不理想,完全没有涉及到对 特殊字符的过滤,很有可能导致整个程序崩溃,所有努力将付之东流。 还有就是数据库的安全性不是很理想,建议用 Oracle 10i,这版本的数 据库在我看来性能是相对的高的,也是很理想的。 还有对于程序中的数据库中的路径要相对复杂点,那样防止非授权 用下载数据库很有很大的帮助。 也就是说安全性能会得到很大的提高的6.3 将来可能提出的要求随着计算机技术的飞速发展,计算机在学校信息化建设的普及,利用计算机实现管理酒店记录势在必行。越来越多的大型企业重视信息化建设,利用先进的计算机和网络技术改善内部管理系统,使酒店人员

40、能可更加便捷的处理酒店各项事宜。结 论课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,遇到了各种各样的问题,在设计的过程中也发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。通过这次课程设计,我的专业能力和综合素质都得到了提升,同时也让我对今后的学习、工作充满了激情和期待。参考文献1 刘天惠. Visual Basic程序设计教程M.清华大学出版社,2006.2:165-2242 刘新民,蔡琼,白康生编著.Visual Basic 6.0程序设计M.北京:清华大学出版社,2004.3:20-253 周升,李静编著.Visual Basic 6.0程序设计艺术M.南京:南京大学出版社,2008.4 :65-904 李微,周见明,张冲编著.Visual Basic 6.0 数据库应用与开发.M.上海:上海交大出版社,2006.2:123-160

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号