ATM机系统分析与设计_第1页
ATM机系统分析与设计_第2页
ATM机系统分析与设计_第3页
ATM机系统分析与设计_第4页
ATM机系统分析与设计_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

A A T T M M 机机 系系 统统 分分 析析 与与 设设 计计 班级 班级 0707 软件工程软件工程 学号 学号 071164009071164009 姓名 姓名 闫亚培闫亚培 ATM 机系统的分析及设计 应用 UML 建模 1 第一章第一章 系统需求系统需求 ATM 机系统的域描述如下 在 ATM 机系统中 要为每名用户建立一个帐户 并给他们发放银行卡 银行卡可以提供卡号 用户姓名 账户中存储用户的个人信息 存款信息 取款信息和余额信息 持有银行卡的用户可以通过 ATM 自动取款机系统进行 存款 取款 查询余额的操作 在使用自动取款机时 需要插入用户的银行卡 并根据系统界面显示输入密 码 由系统判断该帐户是否有效 帐户密码是否正确 若密码输入不正确 则 再次显示让用户输入密码 若 3 次输入的密码均不正确 系统自动退出服务 若密码输入正确 则系统进入选择服务类型界面 1 存款 2 取款 3 查询余额 然后系统根据服务类型进行相应操作 若选择取款操作 系统确认取款请求以 后 会询问取款数额 系统界面显示输入数额请求 用户输入取款数额 系统 接到信息后发出确认取款请求 用户选择确认 系统选择确认后会向点钞机发 出钞请求 然后点钞机出钞 系统向用户发出去钞请求 用户取钞以后 系统 记录此次取款并自动计算余额 更新帐户信息 然后系统界面进入是否选择继 续服务界面 用户点击否 然后系统退出银行卡并提醒用户取卡 用户取走银 行卡 至此 取款业务完成 若选择存款业务 系统确认存款请求以后 系统 界面进入请放入存款界面 然后用户将存款放入存款口 系统提示点钞机进行 点钞 点钞完毕后 系统记录存款操作并更新余额 系统界面显示存款完毕 然后系统界面进入是否选择继续服务界面 用户点击否 则系统退出银行卡并 提示用户取卡 用户取走卡后 存款业务完成 若用户选择查询业务 若查询 余额 系统确认请求以后根据其账号信息查取余额 并在界面显示余额为多少 对上述 ATM 机系统的域描述进行分析 可以获得如下功能性需求 此软件的设计将实现银行ATM系统的基本功能 ATM系统一次服务一名 客户 客户插入一张ATM卡并进入个人数字识别号码 PIN 系统进行验证 通 过后客户 才能执行一种或更多操作 客户完成所有操作后 退卡 ATM系统必须向客户提供如下服务 1 客户可以做一次取款 取款金额必须是100元人民币的整数倍 在现金被 提取之前 必须得到银行的许可 2 客户可以做一次存款 客户把存款量输入到ATM系统中 必须从银行得到 许可 3 客户可以做一次转帐 4 客户可以进行一次详细账户信息查询 5 客户通过有效验证后可以更改密码 6 客户可以在取回磁卡是选择是否得到记录操作的打印凭条 ATM 系统将把每一处理传达到银行并且获得银行许可 如果银行确定 客户 PIN 是无效的 客户将被要求再进入 PIN 如果客户不能在五次尝试之 后成功地进入 PIN 客户的卡将被机器没收 而客户不得不联系银行取回它 ATM 机系统的分析及设计 应用 UML 建模 2 第二章第二章 需求分析需求分析 采用用例驱动的分析方法分析需求的主要任务是识别出系统中的参与者和 用例 并建立用例模型 在本系统中 参与者比较简单 不需要特别分析 2 1 识别参与者 通过对系统的分析 系统存在三个参与者 1 Custumer 用户 参与者描述如下 Custumer 描述 用户可以进行存款 取款 查询的业务 示例 持有银行卡的任何个人或组织 2 Bankserve 银行服务器 描述 Bankserve管理机器 示例 银行中央服务系统 3 Operator 银行服务人员 描述 负责开 关机器和往机器中放现金 示例 银行的工作人员 2 2 识别用例 前面已经识别出了参与者 通过对需求的进一步分析 可以确定系统中有 如下用例存在 1 Session 会话 当一名客户将一张ATM卡片插入机器时 一个Session开始 ATM系统读卡 如果 客户执行非法操作或卡片损坏 卡片将被退出 同时屏幕将显示出错信息 而 被Session异常中断 进行验证客户密码的登录功能 客户成功登录系统后 可以选择一种或多种操作 直至退卡 如果客户输入五次无效的PIN 则 Session被异常中断 ATM卡将被吞掉 2 Task 任务 Task是一种抽象的用例 表示所有类型的处理所共有的行为 Task的具体类型 按照适当的方式执行一定的操作 根据Task 存款 取款 转帐 查询 更改密 码 的事件流描述给出具体的处理 3 Deposit 存款 提供存款到帐户的功能 ATM 机系统的分析及设计 应用 UML 建模 3 4 Withdraw 取款 提供从账户取款的功能 5 Transfer 转账 提供转账功能 6 QueryAccount 查询余额 提供查询余额的功能 7 ChangePIN 更改密码 提供更改密码的功能 8 PrintReceipt 打印凭条 客户选择打印凭条 包括显示日期 时间 机器位置 操作 理由 数量 结 果类型 受到影响的原因和可供使用的选择 在识别出参与者和用例之后 要想建立用例图 还需要识别出他们之间的 关系 Degonit 存款 Withdraw 取款 Inquire 查询 这些动作是由 Custumer 用户 执行的 则在所以 Custumer 用户 和 Degonit 存款 Withdraw 取款 Inquire 查询 这些动 作之间是依赖关系 系统的用例图如下所示 QueryAccount WithDrawDeposit TransferChangePIN Customer PrintReceipt Session BankServe Task 图 2 1 系统用例图 ATM 机系统的分析及设计 应用 UML 建模 4 2 3 用例的事件流描述 用例的事件流是对完成用例行为所需的事件的描述 它描述系统应该做什 么 而不是描述系统应该怎样做 开始 只是对执行用例的常规流所需的步骤的简单描述 随着分析的进行 通过添入更多的详细信息 步骤不断细化 最后 将例外流添加到用例的事件 流描述中 ATM 机系统的用例事件流描述如下 2 312 31用例用例1 1 Login Login 登录登录 简要说明 本用例描述了客户如何登录到系统中 前提条件 无 后置条件 若成功 则客户登录到系统中 否则 系统状态不变 事件流 主事件流 当客户插入ATM卡到机器中时 用例Session启动 A 系统提示客户输入密码 B 客户输入自己的密码 提交 C 系统验证输入的密码 E 1 客户登录成功 替代流 E 1 若密码输入无效 系统提示错误信息 客户可以重新输入或终止用例 2 322 32用例用例2 2 epositeposit 存款 存款 简要说明 本用例描述了客户如何存款到机器中 前提条件 在本用例开始前 客户必须已经登录到系统中 后置条件 若用例成功 则客户账户中存款金额增加 否则 系统状态不变 事件流 主事件流 客户向系统输入存款金额并向机器输入现金时 用例启动 A 系统提示客户输入账号和存款金额 B 客户输入后提交 系统确认账户存在并有效 E 1 C 系统建立存款事件记录 并更新账户的相关信息 替代流 E 1 若账户不存在或无效 系统显示信息 客户可以重新输入或终止用例 ATM 机系统的分析及设计 应用 UML 建模 5 2 332 33用例用例3 3 withdrawwithdraw 取款 取款 简要说明 本用例描述了客户如何取款 前提条件 在本用例开始前 客户必须已经登录到系统中 后置条件 若用例成功 则客户账户中存款金额减少 否则 系统状态不变 事件流 主事件流 客户向系统输入取款金额时 用例启动 A 系统提示客户输入账号和取款金额 B 客户输入后提交 系统确认账户存在并有效 E 1 账户余额是否够支付 E 2 C 系统建立取款事件记录 并更新账户的相关信息 替代流 E 1 若账户不存在或无效 系统显示信息 客户可以重新输入或终止用例 E 2 若余额不足 系统显示信息 客户可以重新输入或终止用例 2 342 34用例用例4 4 ThransferThransfer 转账 转账 简要说明 本用例描述了客户如何将资金从一个账户转到另一个账户 前提条件 在本用例开始前 客户必须已经登录到系统中 后置条件 若用例成功 则客户账户中存款金额变化 否则 系统状态不变 事件流 主事件流 客户向系统输入转帐命令时 用例启动 A 系统提示客户输入账号和转账金额 B 客户输入后提交 C 系统确认资金转出账户是否存在并有效 当账户信息与客户一致 且账户非 冻结时有效 E 1 资金转出账户金额是否足够支付 E 2 D 系统为资金转出帐户建立转账事件记录 并更新账户的相关信息 E 存储转账记录 F 判断资金转入帐户与转出账户是否属于同一银行 如是 则执行分支流 S 1 如属于不同银行 则执行 E 2 替代流 E 1 若账户不存在或无效 系统显示信息 客户可以重新输入或终止用例 ATM 机系统的分析及设计 应用 UML 建模 6 E 2 若余额不足 系统显示信息 客户可以修改金额数目或终止用例 ATM 机系统的分析及设计 应用 UML 建模 7 第第 3 3 章章 静态结构模型静态结构模型 进一步分析系统需求 发现类以及类之间的关系 确定它们的静态结构和 动态行为 是面向对象分析的基本任务 系统的静态结构模型主要用类图和对 象图描述 3 1 定义系统对象 系统对象的识别可以通过寻找系统域描述和需求描述中的名词来进行 由分析可得 整个系统包括了帐户库 银行储户库及 ATM 系统 这些都是类 图中的候选对象 判断是否应该为这些候选对象创建类的方法是 是否有与该对象相关的身 份和行为 该系统中包括的类如下 边界类 边界类 1 CcardReader a 功能 1 告诉 ATM 机什么时候插进去卡 2 接收卡 3 读卡 4 保留卡 b 合作者 1 ATM 2 Session 3 Card 2 CcashDispenser a 功能 1 无现金交易 2 保持大量现金可用 3 初始化现金额 b 合作者 i Clog ii CTransaction 3 CCustomerConsole a 功能 1 显示消息 2 显示菜单并接受选择 ATM 机系统的分析及设计 应用 UML 建模 8 3 读入密码 4 接收现金 5 显示对话框接收用户操作 b 合作者 1 CTransaction 2 CSession 2 CKeyboard a 功能 从键盘上读入操作 b 合作者 CCustomerConsole 3 CScreen a 功能 显示界面和字符 b 合作者 CCustomerConsole 4 CCashReceiver a 功能 从用户那里接收现金 b 合作者 Clog 5 Cbank a 功能 1 和银行联系 2 向银行发信息 3 接收银行的信息 4 关闭同银行的联系 b 合作者 1 Clog 2 CSession 3 Cmessage 6 CoperatorPannel a 功能 1 通知 ATM 系统已关闭 2 通知 ATM 系统已开启 3 通知点钞机初始化现金 b 合作者 1 CATM 2 CCashDispenser ATM 机系统的分析及设计 应用 UML 建模 9 7 Cprinter a 功能 打印回单 b 合作者 1 CATM 2 CTransaction 3 Clog 4 CReceipt 实体类 实体类 1 Clog a 功能 1 Write log message from bank 2 Write log message from cardreader 3 Write log message from session 4 Write log message from Transaction b Collaborations 1 CBank 2 CCardreader 3 CTransaction 2 Cmessage a 功能 保留发送到银行服务器的信息 b Collorations 1 CBank 2 CTransaction 3 Creceipt a 功能 保留被打印的信息 b 合作者 Cprinter 4 CCard a 功能 保留银行卡内的信息 b 合作者 1 CCardReader 2 CSession 5 CAccount a 功能 保留余额信息 b 合作者 ATM 机系统的分析及设计 应用 UML 建模 10 CQueryAccount 控制类 控制类 1 CSession a 功能 1 执行会话 2 不执行无效的密码 3 允许客户选择交易 4 开始交易 b 合作者 1 CATM 2 CTransaction 3 CCustomerConsole 4 Clog 2 CTransaction a 功能 执行转账 b 合作者 1 CCustomerConsole 2 Clog 3 CBank 4 Cprinter 5 CWithDraw 6 CDeposit 7 CWithDraw 8 CTransfer 9 CInquery 10 CChangePIN 3 CATM a 功能 1 启动时打开开关 2 关闭时 开关关闭 3 启动一个新的会话时由客户卡插入 b 合作者 1 OperatorPanel 2 CashDispenser 3 NetworkToBank 4 CustomerConsole 5 Session 4 CWithDraw a 功能 执行取款操作 ATM 机系统的分析及设计 应用 UML 建模 11 b 合作者 CTransaction 5 CTransfer a 功能 执行转账业务 b 合作者 CTransaction 6 CDposit a 功能 执行存款操作 b 合作者 CTransaction 7 CChangePIN a 功能 执行修改密码操作 b 合作者 CTransaction 8 Cinquery a 功能 执行查询操作 b Collaborations CTransaction 其他类 CTimer a 功能 保持时间更新 b 合作者 Clog 上述类的关系如下图所示 ATM 机系统的分析及设计 应用 UML 建模 12 1 帐户库 许多单个的帐户组成了帐户库 帐户具有帐户类型 帐户号 余额三个 属性 持有帐户的用户是有身份的 具有相同名字和不同银行卡号码的用户也 是不同的 在这个系统中 帐户库有相关的行为 所以帐户库应该成为系统中 的一个对象 2 银行储户库 许多银行储户组成了储户库 储户有储户姓名 储户 ID 储户密码三 个属性 储户是有身份的 在这个系统中 储户库又相关的行为 所以银 行储户库也是系统的一个对象 3 ATM 机系统 ATM 机系统有 ATM 编号这一个属性 在这个系统中 每个 ATM 机系 统都是一个独一无二的个体 所以 ATM 机系统也是系统的一个对象 抽象出系统中的类后 需要确定这些对象的属性和行为 可以根据前 述的系统需求分析 用例图 用例的事件流描述和描述脚本的交互作用图 来确定并细化系统中的类 类的操作和属性 下面对系统中的类 类的属 性及操作逐一进行描述 对于账号库 帐户具有帐户类型 帐户号 余额三个属性 均为 private 其类型分别为 char int double 六个操作分别为 ATM 机系统的分析及设计 应用 UML 建模 13 setType getType getAccountNumbe setAccountNumbe caculateBalance getBalance 除 caculateBalance 为 protected 其余均为 public setType 设置帐户类型 返回类型为 void 参数类型为 char 输入帐户 类型 getType 获取帐户类型 返回类型为 char 无参数 setAccountNumbe 设置帐户号 返回类型为 void 参数类型为 int 输入 帐户号 资源来自 岁月联盟 getAccountNumbe 获取帐户号 返回类型为 int 无参数 caculateBalance 计算余额 返回类型为 void 参数为 double 第一个参 数为输入存取款数额 第二个参数为存款余额 既为输入也为输出 getBalance 获取帐户余额 返回类型为 double 无参数 对于银行储户库 储户姓名 储户 ID 储户密码三个属性 均为 private 其类型分别为 char int char 三个操作分别为 Degonit 存款 Withdraw 取款 和 Inquire 查询 Degonit 存款 进行存款操作 Withdraw 取款 进行取款操作 Inquire 查询 进行查询操作 对于 ATM 系统 只有一个编号的属性 该属性为 private 其类型为 char 三个操作分别为 Entercard 吞卡 Showbalabce 显示余额 Ejectcart 吐卡 Entercard 吞卡 进行吞卡操作 Showbalabce 显示余额 进行显示余额操作 Ejectcart 吐卡 进行吐卡操作 类帐户库 属性 方法见下图 3 1 类银行储户库属性 方法见下图 3 2 类 ATM 系统属性 方法见下图 3 3 该系统中的类如下 ATM 机系统的分析及设计 应用 UML 建模 14 银行类图如下 整个系统类图如下 ATM 机系统的分析及设计 应用 UML 建模 15 ATM 机系统的分析及设计 应用 UML 建模 16 第第 4 4 章章 动态行为模型动态行为模型 系统的动态行为模型由交互作用图 时序图和协作图 状态图 活动图描述 4 14 1 建立交互作用图建立交互作用图 描述系统用例的主要场景的交互作用图如下所示 4 1 14 1 1 SessionSession 当一名客户将一张 ATM 卡片插入机器时 一个 Session 开始 ATM 系统读 卡 如果客户执行非法操作或卡片损坏 卡片将被退出 同时屏幕将显示出错信 息 而被 Session 异常中断 进行验证客户密码的登录功能 客户成功登录系 统后 可以选择一种或多种操作 直至退卡 如果客户输入五次无效的 PIN 则 Session 被异常中断 ATM 卡将被吞掉 其顺序图如下所示 ATM 机系统的分析及设计 应用 UML 建模 17 CCardReader CSession CCustomerConsole CTask CNetToBank CLog while can t get a customer and try in limited times while customer when do other task SetPIN Integer SetTaskType Invalid PIN DoOtherTask Boolean this EjectCard MakeLoginLog CRecord ChooseTask InputPIN ReadCard MakeLogoutLog CRecord SendMessage CMessage RetainCard MakeRetainCardLog CRecord ChooseAccoount SetAccountID Integer RetainCard Wait GetTaskMessage CardInserted PerformTask 4 124 12 TaskTask ATM 机系统的分析及设计 应用 UML 建模 18 Task 是一种抽象的用例 表示所有类型的处理所共有的行为 Task 的具体 类型按照适当的方式执行一定的操作 根据 Task 存款 取款 转帐 查询 更改密码 的事件流描述给出具体的处理 其顺序图如下 CTask CCustomerConsole CNetToBank CLog CPrinter PerformTask CMessage DoTask MakeTaskLog CRecord MakeRecord CRecord 函 函 函 函 函 函 SetMessage CMessage GetTaskMesage except QueryAccount QueryAccountQueryAccount CMessage DoOtherTask Wait 4 134 13 DepositDeposit 插入用户的银行卡后 根据系统界面显示输入密码 由系统判断该帐户是 否有效 帐户密码是否正确 若密码输入不正确 则再次显示让用户输入密码 若 3 次输入的密码均不正确 系统自动退出服务 若密码输入正确 则系统进 入选择服务类型界面 选择存款业务 系统确认存款请求以后 系统界面进入 请放入存款界面 然后用户将存款放入存款口 系统提示点钞机进行点钞 点 钞完毕后 系统记录存款操作并更新余额 系统界面显示存款完毕 然后系统 界面进入是否选择继续服务界面 用户点击否 则系统退出银行卡并提示用户 取卡 用户取走卡后 存款业务完成 存款操作的顺序图如下 ATM 机系统的分析及设计 应用 UML 建模 19 CDeposit CCashContainer CCustomerConsole CCashReceiver GetTaskMessage DoTask ReciveCash PutCashIn GetDepositCashNumber ShowDepositCashNumber MakeSureDepositTheCash SetCashNumber Integer CashPutIn 4 144 14 WithDrawWithDraw 插入用户的银行卡 并根据系统界面显示输入密码 由系统判断该帐户是 否有效 帐户密码是否正确 若密码输入不正确 则再次显示让用户输入密码 若 3 次输入的密码均不正确 系统自动退出服务 若密码输入正确 则系统进 入选择服务类型界面 然后系统根据服务类型进行相应操作 若选择取款操作 系统确认取款请求以后 会询问取款数额 系统界面显示输入数额请求 用户 输入取款数额 系统接到信息后发出确认取款请求 用户选择确认 系统选择 确认后会向点钞机发出钞请求 然后点钞机出钞 系统向用户发出去钞请求 用户取钞以后 系统记录此次取款并自动计算余额 更新帐户信息 然后系统 界面进入是否选择继续服务界面 用户点击否 然后系统退出银行卡并提醒用 户取卡 用户取走银行卡 至此 取款业务完成 取款操作顺序图如下 ATM 机系统的分析及设计 应用 UML 建模 20 CWithDraw CCustomerConsole CCashContainer GetTaskMessage DoTask InputWithDrawCashNumber GetCashNumber DispenseCash Integer SetWithDrawCashNumber Integer ShowWithDrawMessage if have not enough cash 4 1 54 1 5 ChangePINChangePIN 插入用户的银行卡后 根据系统界面显示输入密码 由系统判断该帐户是否 有效 帐户密码是否正确 若密码输入不正确 则再次显示让用户输入密码 若 3 次输入的密码均不正确 系统自动退出服务 若密码输入正确 则系统进 入选择服务类型界面 选择修改密码业务 系统确认以后 系统进入修改密码 界面 根据提示输入新密码 点击确定 至此 修改密码操作完成 修改密码操作顺序图如下 ATM 机系统的分析及设计 应用 UML 建模 21 CChangePIN CCustomerConsole InputNewPIN GetTaskMessage DoTask InputNewPINAgain ShowNewPIN SetNewPIN Integer SetNewPIN Integer while not get the new PID DifferentPIN 4 164 16 TransferTransfer 插入用户的银行卡后 根据系统界面显示输入密码 由系统判断该帐户是 否有效 帐户密码是否正确 若密码输入不正确 则再次显示让用户输入密码 若 3 次输入的密码均不正确 系统自动退出服务 若密码输入正确 则系统进 入选择服务类型界面 选择转账业务 系统确认以后 系统进入转账界面 根 据提示转账号 转账金额 点击确定 至此 转账操作完成 转账操作顺序图如下 ATM 机系统的分析及设计 应用 UML 建模 22 CTransfer CCustomerConsole GetTaskMessage DoTask InputTransferCashNumber InputTransferAccountID SetTransferAccountID Integer SetTransferCashNumber Integer ShowTransferMessage 4 174 17 QueryAccountQueryAccount 插入用户的银行卡 并根据系统界面显示输入密码 由系统判断该帐户是否 有效 帐户密码是否正确 若密码输入不正确 则再次显示让用户输入密码 若 3 次输入的密码均不正确 系统自动退出服务 若密码输入正确 则系统进 入选择服务类型界面 用户选择查询业务 若查询余额 系统确认请求以后根 据其账号信息查取余额 并在界面显示余额为多少 查询操作的时序图如下 ATM 机系统的分析及设计 应用 UML 建模 23 CQueryAccount CCustomerConsole DoTask ShowQueryMessage 函 函 PerformTask函 函 函 函 4 24 2 建立状态图建立状态图 下图描述了顾客在 ATM 机上进行操作会经历的几种状态 及各种状态之 间转换的条件 因为是简化了的例子 所以除了等待顾客插入磁卡的起始状态 和结束服务的终止状态 顾客会处于输入密码 选择服务类型 存款及取款四 种状态 ATM 机系统的分析及设计 应用 UML 建模 24 读卡 有效卡 客户管理输入查询 密码 吞卡 插入ATM卡接受ATM卡 输入3次不正确 密 码 正 确 取 款 存 款继 续 服 务 退 出 服 务 退 出 服 务 退卡 存 款 取 款 输入不正确 选择服务类型 继 续 服 务 岁月联盟 插入磁卡后进入输密码状态 当密码输入正确时进入选择服务类型状态 当输入密码不正确时 停留在原状态 但如果三次不正确 服务结束 进入选 择服务类型后根据选择的不同 顾客可进入存款和取款状态 存 取款结束后 顾客既可以选择结束服务到最终状态 也可以选择继续服务回到选择服务类型 状态 通过状态图我们可以无歧义的了解各个活动角色是如何在不同状况下转换 的 转换的条件是什么 是否会出现死锁现象 是否有条件没考虑周全 是否 有状态无法达到 状态图可以帮助我们发现问题 并及时改正 ATM 机系统的分析及设计 应用 UML 建模 25 4 3 建立活动图建立活动图 这个活动

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论