《小区物业管理系统分析与设计.ppt》由会员分享,可在线阅读,更多相关《小区物业管理系统分析与设计.ppt(97页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、面向面向对象需求象需求获取取在面向对象需求获取阶段,主要建立了用例模型和用户界面原形。用例模型描述了系统的业务概述、用例说明、角色、用例图、活动图。用户界面原形给出了每个用例对应的操作界面。一、系统业务概述这里主要描述了系统的职能,即系统有什么样的功能。这些功能以职能图的形式描述如下:小区物业管理系统 4社区管理 1收费管理 2资源设置 3行政人事 5系统管理 费用数据用数据录入:入:录入各项针对住户收费数据。包括住户水电数据、公共公摊水电数据、室内维修数据以及家政服务数据。费 用用 计 算:算:计算水电费、管理费和服务费。费 用用 收收 取:取:向住户发出交费通知单并登记住户交费信息。费 用
2、用 查 询:根据不同的查询条件查询住户交费信息记录以及月结处理记录,并可对查询结果进行编辑和删除。月月 结 处 理:理:统计一月内住户各项应交费用和实交费用,并计算滞纳金以及向未交清费用的住户发出催缴通知。1.1 费用数据录入1.2 费用计算1.3 费用收取1.4 费用查询1.5 月结处理1 收费管理 房房 产 资 源:源:描述了小区房产信息、小区中每一大楼信息以及每一大楼的每一房间信息。客客 户 资 料:料:描述了小区在主业主和租户的详细信息 收收费项目与目与标准:准:通过这里可以添加新的收费项目或收费标准,修改、删除已存在的收费项目或收费标准。参参 数数 设 置:置:添加、编辑、删除系统常
3、用的固定术语。2.1 房产资源2.2 客户资料2.3 收费项目与标准2.4 参数设置2 资源设置 员工档案:工档案:记录了员工的详细信息,并可对这些信息进行编辑、删除、查询并可打印查询结果,以及添加新的员工信息。工工资管理:管理:计算、统计员工工资,同时可对员工工资记录进行添加、删除、编辑、查询以及打印。工作管理:工作管理:工作安排信息的添加、删除、编辑、查询以及打印;并对员工出勤考核记录的添加、删除、编辑、查询及打印。奖罚记录:对员工奖罚记录的添加、删除、编辑、查询以及打印。3.1员工档案3.2工资管理3.3工作管理3.4奖罚记录3.5经费开销3.6入账管理3.7上级汇报3.8会议记录3.9
4、工资月结3 行政人事 经费开开销:经费开销的计算与统计;以及对开销记录的添加、删除、编辑、查询及打印。入入帐管理:管理:入帐计算与统计;以及对入账记录的添加、删除、编辑、查询及打印。上上级汇报:对经费开销、入帐信息以及重大事件信息的整理、统计与打印。会会议记录:会议记录信息的添加、删除、编辑、查询及打印。工工资月月结:统计员工工资的发放情况、以及对统计记录的添加、删除、编辑、查询及打印。保安巡保安巡逻:巡逻记录的添加、删除、编辑、查询及打印。车辆管理:管理:对住户车辆信息和外来车辆信息的添加、删除、编辑、查询及打印。同时可统计外来车辆收费。出租管理:出租管理:出租记录的添加、删除、编辑、查询及
5、打印;同时可统计租金,以及打印向业主发送的出租通知。客客户服服务:提供了对家政服务、室内维修、客户访问、客户投诉记录的添加、删除、编辑、查询及打印。保安巡逻车辆管理出租管理客户服务迁出转让重大事件社区清洁环境绿化4 社区管理 迁出迁出转让:迁出转让记录的添加、删除、编辑、查询及打印;以及对迁出转让业主信息的处理。重大事件:重大事件:重大事件记录的添加、删除、编辑、查询及打印;统计重大事件信息以及统计重大事件处理费。社区清社区清洁:社区卫生清洁记录的添加、删除、编辑及查询。环境境绿化:化:小区绿化维护记录的添加、删除、编辑及查询。操操 作作 员 管管 理:理:添加、删除、编辑操作员信息,以及设置
6、操作员权限。密密 码 设 置:置:用户可通过此功能修改自己的密码。操操 作作 日日 志:志:查看用户使用系统的历史记录。数据数据备份恢复:份恢复:对数据库中存储的数据进行备份或恢复。联 机机 帮帮 助:助:为用户提供了使用系统的详细帮助说明。关关 于于 本本 程程 序:序:显示系统的版权和其它基本信息。5 系统管理5.1 操作员管理5.2 密码设置5.3 操作日志5.4 数据备份恢复5.5 联机帮助5.6 关于本程序二、用例说明 这里将主要对系统管理和收费管理中涉及到的主要用例进行说明。用例说明的统一形式如下所示:用例名称:用例编号:描述:标识符:优先级:角色:前置条件:主事件流:1.2.其他
7、事件流:A1:A2:后置条件:特殊需求:登登录用例用例说明明 用例名称:登录 用例编号:描述:用户通过登录用例进入系统,然后进行对系统的使用。标识符:Login 优先级:A(高)角色:使用系统的所有用户 前置条件:用户拥有自己的用户名和密码主事件流:1、用户输入用户名和密码 2、系统判断数据库连接是否打开 A1:数据库连接未打开 3、在数据库中查询用户输入的用户名和密码是否存在 A2:查询结果记录为0 4、更新操作日志 5、显示主界面 6、用例结束 其他事件流:A1:数据库连接未打开 (1):打开数据库连接 (2):返回主事件流 3 A2:查询结果记录为0 (1):系统显示出错提示:无效的用户
8、名或密码 (2):返回主事件流 1后置条件:系统成功显示主界面,并将操作信息写到操作日志库 中 特殊需求:添加新操作添加新操作员用例用例说明明 用例名称:添加新操作员 用例编号:描述:通过添加新操作员,为系统添加新的用户。标识符:UserCreate 优先级:B(较高)角色:系统管理员 前置条件:用户已成功登录进入系统且具有此权限主事件流:1、打开数据库连接 2、操作员输入新用户名、密码和密码确认 3、查询数据库中的用户信息表搜索新用户名 A1:查询结果记录不为0 4、判断新密码是否为空 A2:新密码为空 5、判断新密码与密码确认是否一致 A3:新密码与密码确认不一致 6、将新用户名和密码插入
9、到数据库的用户信息表中 7、更新操作日志 8、用例结束其他事件流:A1:查询结果记录不为0 (1):系统显示提示信息:用户名已存在 (2):返回主事件流 2 A2:新密码为空 (1):系统显示提示信息:密码不能为空 (2):用户重新输入密码和密码确认 (3):返回主事件流4 A3:新密码与密码确认不一致 (1):系统显示提示信息:两次输入密码不一致 (2):用户重新输入密码和密码确认 (3):返回主事件流4 后置条件:系统成功将新用户信息插入到数据库的用户信息表中,并将操作信息写到操作日志库中 特殊需求:设置操作置操作员权限用例限用例说明明 用例名称:设置操作员权限 用例编号:描述:通过设置操
10、作员权限,限定操作员在系统中可使用的功能。标识符:OperatorPopedomSet 优先级:A(高)角色:系统管理员 前置条件:用户已成功登录进入系统且具有此权限主事件流:1、打开数据库连接 2、从系统功能模块列表中选择需要设置的操作 3、根据选择的操作在数据库中与所选择操作对应的表中设置 操作权限 4、在系统操作界面中设置没选择的功能操作不可用 5、更新操作日志 6、用例结束其他事件流:后置条件:系统成功为制定用户设置了在系统中可进行操作,并 将操作信息写到操作日志库中 特殊需求:密密码设置用例置用例说明明 用例名称:密码设置 用例编号:描述:通过密码设置,用户可以设置自己的密码。标识符
11、:PasswordSet 优先级:B(较高)角色:使用系统的所有用户 前置条件:用户已成功登录进入系统主事件流:1、打开数据库连接 2、操作员输入原密码、新密码和密码确认 3、查询数据库中的用户信息表搜索用户名和原密码 A1:查询结果记录为0 4、判断新密码是否为空 A2:新密码为空 5、判断新密码与密码确认是否一致 A3:新密码与密码确认不一致 6、更新原用户名和密码在数据库的用户信息表中所在的记录 7、更新操作日志 8、用例结束 其他事件流:A1:查询结果记录为0 (1):系统显示提示信息:原密码不正确 (2):返回主事件流 2 A2:新密码为空 (1):系统显示提示信息:密码不能为空 (
12、2):用户重新输入新密码和密码确认 (3):返回主事件流4 A3:新密码与密码确认不一致 (1):系统显示提示信息:两次输入密码不一致 (2):用户重新输入新密码和密码确认 (3):返回主事件流4后置条件:系统成功将用户的密码在数据库的用户信息表中更新,并将操作信息写到操作日志库中 特殊需求:数据数据备份用例份用例说明明用例名称:数据备份 用例编号:描述:通过数据备份保存数据库中的信息。标识符:DataBackup 优先级:A(高)角色:系统管理员 前置条件:用户已成功登录进入系统,且具有此权限主事件流:1、选择保存路径 2、复制数据库文件到指定路径 3、检测复制过程中是否出错 A1:复制过程
13、中出错 4、系统显示提示信息:成功备份数据 5、更新操作日志 6、用例结束其他事件流:A1:复制过程出错 (1):系统显示提示信息:备份数据出错 (2):返回主事件流6 后置条件:系统成功将数据库数据备份到用户指定的路径下,并将 操作信息写到操作日志库中 特殊需求:数据恢复用例数据恢复用例说明明 用例名称:数据恢复 用例编号:描述:通过数据恢复将指定数据库文件重写到数据库中。标识符:DataRestore 优先级:A(高)角色:系统管理员 前置条件:用户已成功登录进入系统,且具有此权限主事件流:1、关闭数据库连接 2、输出提示信息:导入数据将覆盖原有数据!是否继续导入?3、判断是否继续导入 A
14、1:不再导入 4、指定导入数据库文件路径 5、复制指定路径数据库文件到当前目录并重命名使之覆盖原 数据库文件 6、检测数据复制过程是否出错 A2:复制过程出错 7、系统显示提示信息:成功导入数据 8、重新打开数据库连接 9、更新操作日志 10、用例结束 其他事件流:A1:不再导入 (1):返回主事件流10 A2:复制过程出错 (1):系统显示提示信息:导入数据出错 (2):返回主事件流10 后置条件:系统成功将用户指定的路径下的数据库文件恢复到数据 库中,并将操作信息写到操作日志库中 特殊需求:住住户水水电数据数据录入用例入用例说明明用例名称:住户水电数据录入 用例编号:描述:通过此用例将住户
15、的水电数据录入到数据库的对应表中。标识符:DataRestore 优先级:A(高)角色:系统管理员、工程部的操作人员 前置条件:用户已成功登录进入系统,且具有此权限主事件流:1、打开数据库连接 2、选择录入方式 A1:单条录入 A2:批量录入 3、从界面读取数据 4、将读取到的数据插入到数据库对应表中 5、判断是否插入成功 A3:插入失败 6、更新操作日志 7、用例结束 其他事件流:A1:单条录入 (1):将数据写到主录入界面 (2):返回主事件流3 A2:批量录入 (1):打开批量录入界面 (2):将数据写到批量录入界面 (3):返回主事件流3 A3:插入失败 (1):系统显示提示信息:插入
16、数据到数据库失败 (2):返回主事件流7 后置条件:系统成功将用户输入的数据录入到数据库的对应表中,并将操作信息写到操作日志库中 特殊需求:三、角色 这里将主要对系统所涉及到的角色进行描述。统一描述形式如下所示:角色编号:角色名称:角色职责:其 它:角色编号:1 角色名称:系统管理员 角色职责:系统的管理和维护者。具有对系统使用的最高权限。其 它:由物业管理处的物业办公室人员担任角色编号:2 角色名称:普通用户 角色职责:系统的使用者,权限由系统管理员设定。其 它:是物业管理处的其它部门人员担任 角色编号:3 角色名称:时间 角色职责:按月备份系统数据 其 它:四、用例图 这里将列出系统管理和
17、收费管理所涉及到的用例图。对用例图的描述形式如下:图号:简称:Use Case:图号:简称:费用数据录入 Use Case:图号:简称:费用计算 Use Case:图号:简称:费用收取 Use Case:图号:简称:费用查询 Use Case:图号:简称:月结处理 Use Case:图号:5简称:系统管理 Use Case:五、活动图 这里将列出系统管理和收费管理所涉及到的活动图。对活动图的描述形式如下:图号:用例名称:Activity:图号:0.0用例名称:登录 Activity:图号:用例名称:添加新操作添加新操作员 Activity:图号:5.1.4用例名称:设置操作置操作员权限限 Ac
18、tivity:图号:5.2用例名称:密码设置 Activity:图号:5.4.1用例名称:数据备份 Activity:图号:5.4.2用例名称:数据恢复 Activity:图号:1.1.1用例名称:住户水电数据录入 Activity:六、用户界面原型 通过对系统管理和收费管理相关用例的检查,基于用户界面的完整性、易操作性和一致性,初步设计出与相关用例对应的用户界面。在面向对象分析阶段,主要进行了构架分析、用例实现的确定。构架分析主要确定了分析包、关键实体类。用例实现主要确定了实现用例的分析类、建立了分析类框图。一、分析包 通过对需求获取阶段建立的用例模型的分析,可将系统功能组织成大小适中的包。
19、之所以这样做是因为:这既便于实现和管理,同时也可以将变化局限于一个包内,减少由于需求变化对整个系统结构的影响。在把一个用例分配给一个具体的分析包时,需要注意包的内聚性,通常遵循的原则是将与一个业务过程相关的所有用例及有扩展关系和泛化关系的用例都放在一个包中。在对分析包的描述中,统一采用如下形式:包编号:包名:所在包:包含包:包含用例:其它:其中对所在包和包含包的描述统一采用:包名(包编号);对包含用例的描述统一采用:用例名(用例编号)。包编号:0 包名:main所在包:包含包:收费管理(1)、资源设置(2)、行政人事(3)、社区管理(4)、系统管理(5)包含用例:登录(0.0)其它:包编号:1
20、 包名:收费管理所在包:main(0)包含包:费用数据录入(1.1)、费用计算(1.2)、费用收取(1.3)、费用查询(1.4)、月结处里(1.5)包含用例:其它:包编号:2 包名:资源设置所在包:main(0)包含包:房产资源(2.1)、客户资料(2.2)、收费项目与标准(2.3)、参数设置(2.4)包含用例:其它:包编号:3 包名:行政人事所在包:main(0)包含包:员工档案(3.1)、工资管理(3.2)、工作管理(3.3)、奖罚记录(3.4)、经费开销(3.5)、入账管理(3.6)、上级汇报(3.7)、会议记录(3.8)、工资月结(3.9)包含用例:其它:编号:4 包名:社区管理所在包
21、:main(0)包含包:保安巡逻(4.1)、车辆管理(4.2)、出租管理(4.3)、客户服务(4.4)、迁出转让(4.5)、重大事件(4.6)、社区清洁(4.7)、环境绿化(4.8)包含用例:其它:包编号:5 包名:系统管理所在包:main(0)包含包:操作员管理(5.1)、数据备份恢复(5.4)包含用例:密码设置(5.2)、查看操作日志(5.3)、联机帮助(5.5)、关于本程序(5.6)其它:包编号:1.1 包名:费用数据录入所在包:收费管理(1)包含包:包含用例:住户水电数据录入(1.1.1)、公共公摊水电数据录入(1.1.2)、服务数据录入(1.1.3)、编辑数据(1.1.4)、保存结果
22、(1.1.5)其它:包编号:1.2 包名:费用计算所在包:收费管理(1)包含包:包含用例:计算水电费(1.2.1)、计算管理费(1.2.2)、计算服务费(1.2.3)其它:包编号:1.3 包名:费用收取所在包:收费管理(1)包含包:包含用例:预览住户交费通知单(1.3.1)、打印住户缴费通知单(1.3.2)、登记住户交费信息(1.3.3)、编辑住户缴费信息(1.3.4)、删除住户缴费信息(1.3.5)、保存结果(1.3.6)其它:包编号:1.4 包名:费用查询所在包:收费管理(1)包含包:包含用例:选择查询条件(1.4.1)、费用查询(1.4.2)、编辑查询结果(1.4.3)、删除查询结果(1
23、.4.4)、打印查询结果(1.4.5)、保存结果(1.4.6)其它:包编号:1.5 包名:月结处理所在包:收费管理(1)包含包:包含用例:统计未交费住户(1.5.1)、计算滞纳金(1.5.2)、预览催缴通知单(1.5.3)、打印催缴通知单(1.5.4)、费用统计(1.5.5)其它:包编号:5.1 包名:操作员管理所在包:系统管理(5)包含包:包含用例:添加操作员信息(5.1.1)、编辑操作员信息(5.1.2)、删除操作员信息(5.1.3)、设置操作员权限(5.1.4)其它:包编号:5.4 包名:数据备份恢复所在包:系统管理(5)包含包:包含用例:数据备份(5.4.1)、数据恢复(5.4.2)其
24、它:以上描述了系统所涉及到的一部分分析包,下面将建立这些包之间的联系。这种联系将以包图的形式给出。由于有的包的独立性,所以它不一定与其它包之间存在联系。对于这种情况将不在包图中画出。这里只针对包之间存在联系的包画出包图。main(0)内部包图收费管理(1)内部包图资源设置(2)内部包图行政人事(3)内部包图二、分析类分析类是通过对用例模型中每个用例的分析而得到的。它主要有三种类型:边界类、控制类和实体类。下面将对系统管理和收费管理相关分析包中的用例进行分析。分析结果以分析类框图的形式给出。main(0)包中登录用例的分析操作员管理(5.1)包中相关用例的分析数据备份恢复(5.2)包中相关用例的
25、分析系统管理(5)包中相关用例的分析费用数据录入(1.1)包中相关用例的分析费用计算(1.2)包中相关用例的分析费用收取(1.3)包中相关用例的分析费用查询(1.4)包中相关用例的分析月结处理(1.5)包中相关用例的分析 下面将对以上分析类框图中得到的分析类进行描述。描述形式统一如下:分析类名称:相关用例:标识符:主要属性:主要职责:分析类名称:登录窗体(CLoginDlg)相关用例:登录标识符:主要属性:主要职责:登录窗体是一个可见的用户界面,用户通过此界面进入系统。分析类名称:主程序窗体(CMainDlg)相关用例:标识符:主要属性:主要职责:主程序窗体是一个可见的用户界面,此界面是用户操
26、作的主要界面,系统的所有功能都通过此界面操作。分析类名称:用户信息(CUserInformation)相关用例:登录、添加操作员信息、编辑操作员信息、删除操作员信息标识符:主要属性:主要职责:用户信息是一个实体类,它与数据库中的用户信息表相对应,同时也提供了对用户信息的操作。分析类名称:操作员管理窗体(COperatorManageDlg)相关用例:添加、编辑、删除操作员信息,设置操作员权限标识符:主要属性:主要职责:操作员管理窗体是一个可见的用户界面,用户通过此界面对操作员的信息进行操作,同时可设置操作员的权限。分析类名称:控制权限(CControlPepedom)相关用例:设置操作员权限标
27、识符:主要属性:主要职责:控制权限类是一个边界类,它的职责是用户选择了操作员的权限后,设置此权限与系统相关的模块功能可用或不可用,同时也设置此权限与数据库中相应的表可操作或不可操作。分析类名称:权限信息(CPopedomInfo)相关用例:设置操作员权限标识符:主要属性:主要职责:权限信息类是一个实体类,它与数据库中的权限信息表相对应,同时提供了对权限信息的操作。分析类名称:密码设置窗体(CPasswordSetDlg)相关用例:密码设置标识符:主要属性:主要职责:密码设置窗体是一个可见的用户界面,用户通过此界面完成修改自己密码的业务。输入原密码、新密码和密码确认。分析类名称:数据备份恢复窗体
28、(CDataBackComebackDlg)相关用例:数据备份、数据恢复标识符:主要属性:主要职责:数据备份恢复窗体是一个可见的用户界面,用户通过此界面可以将当前的数据区信息备份到指定的磁盘路径,也可以将指定磁盘的数据库文件导入到数据库中。分析类名称:联机帮助窗体(CLineHelpDlg)相关用例:联机帮助标识符:主要属性:主要职责:联机帮助窗体是一个可见的用户界面,此界面为用户提供了对系统进行操作的帮助信息。分析类名称:关于本程序窗体(CAboutProcedureDlg)相关用例:关于本程序标识符:主要属性:主要职责:关于本程序窗体是一个可见的用户界面,用户通过此界面可以看到一些关于本程
29、序的信息,包括版本信息、开发信息等。分析类名称:费用数据录入窗体(CChargeDataInputDLg)相关用例:住户水电数据录入、公共公摊水电数据录入、服务数据录入、编辑数据、保存结果标识符:主要属性:主要职责:费用数据录入窗体是一个可见的用户界面,用户通过此界面将与用户交费的相关数据录入到数据库中;包括录入住户水电数据、公共公摊水电数据、服务数据。分析类名称:住户水电数据(CTeneWaterElectData)相关用例:住户水电数据录入、编辑数据标识符:主要属性:主要职责:住户水电数据类是一个实体类,它与数据库中的住户水电数据表对应,记录了住户水电数据信息。数据表中的每一个属性对应在类
30、中是一个数据成员;与表不同的是它封装了对数据的操作。分析类名称:公共水电数据(CPublicWaterElectData)相关用例:公共公摊水电数据录入、编辑数据标识符:主要属性:主要职责:公共水电数据是一个实体类,它与数据库中的公共水电数据表相对应,记录了公共公摊水电数据的信息,同时提供了对数据信息的操作。分析类名称:服务数据(CServeData)相关用例:服务数据录入、编辑数据标识符:主要属性:主要职责:服务数据类是一个实体类,记录了住户室内维修和家政服务数据信息,并提供了对数据信息的操作。分析类名称:费用计算窗体(CChargeCalculDlg)相关用例:计算水电费、计算管理费、计算
31、服务费标识符:主要属性:主要职责:费用计算窗体是一个可见的用户界面,用户通过此界面完成水电费、管理费和服务费的计算。分析类名称:房间信息(CRoomInfo)相关用例:计算水电费标识符:主要属性:主要职责:房间信息类是一个实体类,它与数据库中的房间信息表对应,同时提供了对房间信息的操作。分析类名称:费用信息(CChargeInfo)相关用例:计算水电费、计算管理费、计算服务费标识符:主要属性:主要职责:费用信息类是一个实体类,它与数据库中的费用信息表相对应,同时封装了对费用信息的操作。分析类名称:收费标准类(CChargeStandard)相关用例:计算水电费、计算管理费、计算服务费标识符:主
32、要属性:主要职责:收费标准类是一个实体类,它与数据库中的收费标准表相对应,同时封装了对收费标准信息的操作。分析类名称:费用收取窗体(CChargeGetDlg)相关用例:预览住户交费通知单,登记、编辑、删除住户交费信息,保存结果标识符:主要属性:主要职责:费用收取窗体是一个可见的用户界面,用户通过此界面完成交费通知单的打印、住户交费信息的处理等操作。分析类名称:打印预览界面(CPreviewInterface)相关用例:打印住户交费通知单标识符:主要属性:主要职责:打印预览界面类是一个可见的用户界面,用户通过此界面可以看到预打印的住户交费通知单,并且打印。分析类名称:住户交费信息(CTeleC
33、hargeHandinInfo)相关用例:登记、编辑、删除住户交费信息,保存结果标识符:主要属性:主要职责:住户交费信息类是一个实体类,它与数据库中的住户交费信息表相对应,同时封装了对缴费信息的操作。分析类名称:打印控制(CPrintControl)相关用例:打印住户交费通知单、打印催缴通知单标识符:主要属性:主要职责:打印控制类是一个控制类,通过此类完成与打印机的连接,并对打印机进行控制,完成打印操作。分析类名称:费用查询窗体(CChargeSearchDlg)相关用例:选择查询条件、费用查询、编辑查询结果、删除查询结果、保存结果标识符:主要属性:主要职责:费用查询窗体是一个可见的用户界面,用户通过此界面完成对相关费用信息的查询等操作。分析类名称:月结处理窗体(CChargeMonthDealDlg)相关用例:预览催缴通知单、统计未交费住户、计算滞纳金、费用统计标识符:主要属性:主要职责:月结处里窗体是一个可见的用户界面,用户通过此界面完成相关月结处理操作。分析类名称:费用统计信息(CChargeStatisticInfo)相关用例:费用查询、费用统计标识符:主要属性:主要职责:费用统计信息是一个实体类,它与数据库中的费用统计信息视图相对应,同时封装了对费用统计信息的操作。在面向对象设计阶段,主要对分析阶段得到的分析类进行详细设计,建立设计类图。谢谢观赏!谢谢观赏!
限制150内