数据库ATM管理系统_第1页
数据库ATM管理系统_第2页
数据库ATM管理系统_第3页
数据库ATM管理系统_第4页
数据库ATM管理系统_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、长 沙 学 院课程设计说明书题目ATM系统系(部)数学与计算机科学系专业(班级) 姓名 学号 指导教师杨刚、刘刚钦起止日期2016.05.272016.06.03课程设计任务书课程名称:软件工程基础实训设计题目:ATM系统已知技术参数和设计要求:1 实训目的要求通过本实训,应能够对SQLServer2008工具的了解,与数据库语法的能力。1)了解SQL的简史和功能特性。2)掌握E-R图的绘制和数据库的设计。3)掌握T-SQL的语法知识,并能够熟练运用它。4)掌握事务与存储过程的使用。2 问题描述(功能要求):本次案例将完成一个ATM银行取款机系统的数据库。(1) 创建BankDB数据库。并保存

2、在D:ATM文件夹下。(2) 创建用户信息表(userinfo)(3) 创建银行卡信息表(cardinfo)(4) 创建交易信息表(transinfo)(5) 添加各种约束关系: 为userinfo表中客户ID(customerID)添加主键约束。 为userinfo表中客户的身份证(PID)添加唯一约束 为useinfo表中的身份证号码添加检查约束,长度为15或者18 为userinfo表中的客户电话号码添加检查约束。 为cardinfo表中的卡号ID(cardID)添加主键约束 为cardinfo表中的卡号ID(cardID)添加约束,必须是以 1010 3576开头,长度为12 为car

3、dinfo表中的货币类型(curType)添加默认约束,默认为RMB。 为cardinfo表中的存款类型添加约束,只能是活期、定活两便和定期。 cardinfo表中开卡日期默认为当天日期。 cardinfo表中的开户金额不能低于1元。 cardinfo表中的余额不能低于1元。 cardinfo表中的密码长度为6位数。默认为88888。 cardinfo表中是否挂失只能是是和否。默认为否 添加userinfo表与cardinfo表的外键约束。 transinfo表中的交易日期默认为当天。 交易类型只能是存入和支取。 添加cardinfo表与transinfo表的外键约束。(6)开户(7)取钱(8

4、)存钱(9)查询余额(10)转账(11)交易统计3. 运行环境要求:(1)客户端:windows操作系统,SQL Server 2008数据库客户端(2)服务器:SQL Server 2008数据库服务器、3. 技术要求:1)掌握E-R图的绘制和数据库的设计。2)掌握T-SQL的语法知识,并能够熟练运用它。3)掌握事务与存储过程的使用。4) 触发器(选做)设计工作量:20课时工作计划:(1) 2013级软件工程所有班级8课时: 设计,数计系机房/普通教室。8课时:上机、调试。数计系机房4课时:答辩。数计系机房。(具体时间地点老师先申请,机动安排)指导教师签名:日期:教研室主任签名: 日期:系主

5、任签名: 日期:长沙学院课程设计鉴定表姓名 学号 专业软件工程班级5设计题目ATM系统指导教师杨刚、刘钢钦指导教师意见:评定等级: 教师签名: 日期: 答辩小组意见:评定等级:答辩小组长签名:日期:教研室意见:教研室主任签名: 日期: 系(部)意见:系主任签名:日期:说明课程设计成绩分“优秀”、“良好”、“及格”、“不及格”四类;目 录一、引言11.1编写目的11.2参考资料1二、需求规约22.1业务描述22.1.1经济可行性22.1.2技术可行性22.1.3操作可行性22.2 需求分析32.2.1功能需求32.2.2数据需求42.2.3性能需求4三、数据库环境说明5四、数据库的命名规则54.

6、1 数据库对象命名规则54.2 数据项编码规则5五、逻辑设计6六、物理设计86.1 表汇总86.2 表的基本信息86.3 视图的设计116.4存储过程、函数及触发器的设计11七、安全性设计227.1 防止用户直接操作数据库的方法227.2 用户帐号密码的加密方法227.3 角色与权限22八、数据库管理与维护说明23一、引言1.1 编写目的通过数据库ATM实训进一步掌握数据库系统的理论和方法。培养和锻炼开发管理信息系统的能力。为今后信息系统开发打下良好的基础。 本文档是ATM系统设计文档的组成部分数据库是一门应用性很强的专业课在学习时必须注意理论与实践相结合。本次课程环节旨在培养学生在本课程范围

7、内初步掌握解决实际应用问题时所应具备的查阅资料、综合运用所学知识的能力为毕业设计及今后从事专业工作打下基础。 本课程环节要求学生了解企业管理信息系统后台数据库的设计、配置过程掌握管理信息系统的开发方法。主要包括需求分析、数据分析、系统逻辑模型设计方法功能设计、物理模型设计方法系统的实现等方法。完成一个小型系统后台数据库的设计与配置。目的是明确数据库的表名、字段名等数据信息用来指导后期的数据库脚本的开发设计该数据库的目的是设计一个ATM系统能够按照一定条件查询、统计交易信息可以模拟完成开户、存款、取款、转账、注销、挂失、激活、修改密码、查询等业务。1.2 参考资料资料名称作者文件编号、版本数据库

8、系统概论王珊、萨师煊2006年5月第4版现代软件工程孙涌2003年8月第1-246版 精通SQL server 2000数据库管理与开发于松涛2003年10月 二、 需求规约2.1 业务描述随着科技的发展,人们生活水平的不断提高,高性能高效率的产品越来越受到人们的欢迎。 ATM自动取款机是一种非常智能的机器,人们可以直接与它交互,代替以前的手工操作,大大提高了银行的工作效率。针对银行业务种类繁多、客户需求量大等现象,为了减少银行人员的工作任务,方便客户,使用户自己就可以在ATM机上存款、取款、查询余额、转账、修改密码、打印凭条、退卡等基础功能。在这样的需求下我们模拟开发了ATM自动取款机系统。

9、2.1.1经济可行性本系统其他应用软件、硬件系统也易于获得.因此,开发成本较低。而引进使用本系统后,与传统方式相比,具有高效率、低成本、高质量的特点,可以节省不少人力、物力及财力。所以,从经济的角度来看,该系统可行。2.1.2技术可行性开发工具:VS2005 数据库环境:SQL Server 2008系统环境:Microsoft Windows 2000或以上版本。系统实现依靠相对熟悉的c语言和SQL Server2008数据库系统,其基本操作实质还是对数据库进行添加、删除、查找等操作。2.1.3操作可行性系统采用菜单式,实现用户与数据库的交互,界面简洁友好,操作方便。2.2 需求分析需求分析

10、是软件设计的一个重要的环节。本阶段对订票系统的应用情况作全面调查,以确定系统目标,并对系统所需要的基础数据以及数据处理要求进行分析,从而确定用户的需求。用户对系统的需求我们从以下几方面进行分析。2.2.1功能需求ATM是最普遍的自助银行设备,可以提供最基本的银行服务之一,即出钞交易,有些全功能的产品还可以提供信封存款业务。在ATM自动取款机上也可以进行账户查询、修改密码和转账的业务。作为自助式金融服务终端,除了提供金融业务功能之外,ATM自动取款机还具有维护、测试、事件报告、监控和管理等多种功能。 ATM自动取款机系统,是一个有终端机,ATM系统,数据库组成的应用系统。系统功能有用户在ATM上

11、提取现金、查询账户余额、修改密码及转账功能。ATM自动取款机系统向用户提供一个方便、简单、及时、随时随地可以随心所欲存取款的互联的现代计算机化的网络系统。可以大大减少工作人员,节约人力资源的开销,同时由于手续程序减少也可以减轻业务员的工作负担,有效地提高了整体的工作效率和精确度。减少了用户办理业务的等待时间;用户可以随时随地可以随心所欲存取款,并且操作简单易懂;用户还可以选择在柜台办理业务或自己在自动提款机和自动取款机办理业务。(1)在银行卡信息管理部分,要求: 2a可以查询银行卡拥有者的相应信息。 b.可以对银行卡拥有者信息进行添加及删除的操作。 (2)在用户信息管理部分,要求: a.可以查

12、询开户信息。 b.可以对账户信息进行维护,包括添加及删除的操作。 (3)在账户交易信息管理部分,要求:。 a.可以浏览账户交易基本信息。 b.可以对账户信息进行维护操作。 (4)在用户视图信息管理部分,要求: a可以浏览用户视图信息。 b可以维护用户视图相关信息。2.2.2数据需求信息需求,即在系统中需要处理哪些数据。根据对ATM系统的分析,本系统的信息需求如表2-1所示。表2-1信息输入输出 信息输入信息处理信息输出输入个人信息及开户银行卡信息 更新系统中的银行卡信息,将新信息存入系统数据库操作反馈(如开户成功)输入用户号、卡号 检索系统数据库符合用户需求的银行卡信息输入客户的名字检索系统数

13、据库以得到订票记录,删除用户请求的订票记录,更新系统数据库操作反馈(如注销成功等)输入个人信息、开户银行卡信息及充值的金额 更新系统中的银行卡信息,将新信息存入系统数据库操作反馈(如存款成功)输入个人信息、开户银行卡信息及支取的金额 更新系统中的银行卡信息,将新信息存入系统数据库操作反馈(如取款成功)输入2个人信息、2张银行卡信息及转账的金额 更新系统中的银行卡信息,将新信息存入系统数据库操作反馈(如转账成功)2.2.3性能需求为了保证系统能够长期、安全、稳定、可靠、高效的运行,本系统应该满足以下的性能需求。1.准确性和及时性系统处理的准确性和及时性是系统的必要性能。系统应能及时而且准确的根据

14、用户权限及所输入的信息做出响应。由于本系统的查询功能对于整个系统的功能和性能完成举足轻重。作为系统的很多数据来源,而车票的数量和时间又影响用户的决策活动,其准确性和及时性很大程度上决定了系统的成败。在系统开发过程中,必须采用一定的方法保证系统的准确性和及时性。2.易用性本系统是直接面对用户的,而用户往往对计算机并不是非常熟悉。这就要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面,从而保证系统的易用性。三、 数据库环境说明数据库实例数据库系统数据库部署环境数据库设计工具数据库存放位置说明ATM管理系统SQL Server200

15、8Window 7SQL Server存放位置,绝对路径/相对路径D:/Program完整的存款取款转账流程四、数据库的命名规则4.1 数据库对象命名规则数据库对象命名规则备注表Tbl_功能描述字符串例如:Cardinfo银行卡信息表视图View_功能描述字符串例如:银行卡信息总表视图存储过程Procedure_功能描述字符串例如:CreateID存储过程 触发器Insert_功能描述字符串例如:Decre 注销银行卡4.2 数据项编码规则 数据项命名规则数据类型长度范围备注CardID1010 3576 XXXXchar14位银行卡号CurType默认为 RMBChar5位货币类型Savin

16、gType活期,定期,定活两期char15位存款类型OpenDate年-月-日-时-分-秒varchar20位开户时间OpenMoney数字varchar10位开户金额Balance数字varchar10位余额Pass数字varchar6位密码IsReportLoss是,否varchar8位挂失状态五、逻辑设计(1) 关系模式: 用户信息(顾客号,开户名,身份证号,地址,联系电话) 交易信息(交易编码,交易日期,卡号,交易类型,交易金额) 银行卡信息(卡号,货币类型,开户日期,开户金额,密码,是否挂失,存储类型) (2) 关系图: 密码存储类型是否挂失开户金额开户日期备注交易金额交易类型卡号交

17、易日期交易编号联系电话身份证号地址开户名顾客号银行卡信息交易信息用户信息包含进行货币类型卡号 图5.1系统总体结构E-R图图5.2逻辑关系图六、物理设计6.1 表汇总表名功能说明用户实体信息表存储客户的相关信息及其数据类型以及相关的约束银行卡信息表存储银行卡的相关信息及其数据类型以及相关的约束交易信息表存储交易的相关信息及其数据类型以及相关的约束6.2 表的基本信息用户实体信息表表名用户实体信息表数据库用户主键用户号其他排序字段无索引字段用户号序号字段名称数据类型(精度范围)允许为空Y/N唯一Y/N区别度默认值约束条件/说明1CustomerIDintNY高用户号/主键2CustomerNam

18、evarchar(8)NN中用户名3PIDchar(18)NN中身份证4Telephonevarchar(11)NN中联系电话5U_Addressvarchar(50)NN中地址sql脚本create table Userinfo-用户实体信息表(CustomerID int primary key, -主键约束用户IDCustomerName varchar(8) not null, PID char(18) check(len(PID)=15 or len(PID)=18)unique, -身份证号码约束Telephone varchar(11) check(len(Telephone)=

19、11)unique, -电话号码约束U_Address varchar(50) ) ;备注银行卡信息表表名银行卡信息表数据库用户主键银行卡号其他排序字段用户号 升序索引字段银行卡号序号字段名称数据类型(精度范围)允许为空Y/N唯一Y/N区别度默认值约束条件/说明1CardIDchar(30)NY高1010 3576银行卡号/主键2CurTypechar(5)NN中RMB币种3SavingTypechar(15)NN中活期,定期,定活两期存储类型4OpenDatedatetimeNN中开户时间5OpenMoneymoneyNN中开户金额6BalancemoneyNN中余额7Passchar(6)

20、NN中密码8IsReportLosschar(8)NN中是/否挂失状态9CustomerIDintNN中用户号/外键sql脚本create table Cardinfo -银行卡信息表(CardID char(30) check (CardID like 1010 3576 % and len(CardID)=14) primary key, -卡号 主键约束CurType char(5) default (RMB), -货币类型 默认为RMBSavingType char(15) check -存款类型(SavingType like 活期or SavingType like 定期or Sa

21、vingType like 定活两便) , OpenDate datetime default (getdate() not null, -开户日期OpenMoney money check (OpenMoney=1) not null, -开户金额Balance money check(Balance =1) not null, -余款Pass char(6) default () not null, IsReportLoss char(8) check -挂失(IsReportLoss like 是or IsReportLoss like 否) default 否not null, Cus

22、tomerID int not null ,foreign key(CustomerID) references Userinfo(CustomerID)on delete cascade);备注交易信息表表名交易信息表数据库用户主键身份证号码其他排序字段无索引字段身份证号码序号字段名称数据类型(精度范围)允许为空Y/N唯一Y/N区别度默认值约束条件/说明1TransIDintNY高交易编号2TransDatedatetimeNN中交易日期3CardIDchar(30)NN中银行卡/外键4TransTypechar(10)NY高存入,支取交易类型5TransMoneymoneyNN中交易金额6

23、RemarktextNN中备注sql脚本create table TransInfo -交易信息表( TransID int identity not null, -交易编号TransDate datetime default(getdate(), -交易日期CardID char(30) not null foreign key(CardID) references CardInfo(CardID), -卡号外键约束TransType char(10) check (TransType like 存入or TransType like 支取), -交易类型TransMoney money c

24、heck (TransMoney0 ), Remark text );备注6.3 视图的设计图6.3.1 银行卡信息总表视图6.4存储过程、函数及触发器的设计触发器1:注销卡信息DecreUSE ATM bankGO/* Object: Trigger dbo.Decre Script Date: 06/06/2016 06:30:46 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER trigger dbo.Decre on dbo.Cardinfo after delete as declare CardID char(19),Cus

25、tomerID int select CardID=CardID,CustomerID=CustomerID from deleted begin print 开始注销用户信息 delete from Userinfo where CustomerID=CustomerID print 恭喜您的用户信息注销成功 end 图6.4.1注销用户银行卡存储过程1:开户CreateIDUSE ATM bankGO/* Object: StoredProcedure dbo.CreateID Script Date: 06/06/2016 06:33:19 */SET ANSI_NULLS ONGOSE

26、T QUOTED_IDENTIFIER ONGOALTER proc dbo.CreateID CardID varchar(30), SavingType char(15), OpenMoney money, Balance money, CustomerID intas if exists (select CardID from Cardinfo where CardID = CardID ) print该卡号已被注册 else if OpenMoney 1 print开户金额不能低于一元 else begin insert into Cardinfo(CardID,SavingType,

27、OpenDate,OpenMoney,Balance,CustomerID) values (CardID ,SavingType,GETDATE(),OpenMoney, Balance, CustomerID) print开户成功 end 图6.4.2存储过程开户的实现图6.4.3开户约束的实现存储过程2:存钱 InputMoneyUSE ATM bankGO/* Object: StoredProcedure dbo.InputMoney Script Date: 06/06/2016 06:36:23 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER

28、 ONGOALTER proc dbo.InputMoney CardID char(19), inputmoney money as begin if (select isreportloss from Cardinfo where CardID=CardID)=是 print 该账户正在挂失中,无法进行交易 else begin update Cardinfo set Balance=Balance+inputmoney where CardID=CardID print交易成功 insert into TransInfo(CardID,TransMoney,TransDate,Trans

29、Type,Remark) values (CardID,inputmoney ,getdate(),存入,余额增加+convert(char(19),inputmoney) if(error0) rollback; return; endend图6.4.4存储过程存钱的实现图6.4.5存钱的挂失约束存储过程3:取款 TakeMoneyUSE ATM bankGO/* Object: StoredProcedure dbo.TakeMoney Script Date: 06/06/2016 06:40:01 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER O

30、NGOALTER proc dbo.TakeMoney CardID char(16),-卡号 takemoney money,-取款金额 Pass char(6) -密码asbegin if (select isreportloss from Cardinfo where CardID=CardID)=是 print 该账户正在挂失中,无法进行交易 else if not EXISTS( select CardID from CardInfo where CardID=CardID and Pass=Pass) print 账号或密码输入不正确请重新输入 else if (select Ba

31、lance from Cardinfo where CardID = CardID and Pass = Pass) takemoney print 卡上余额不足 else begin begin tran insert into TransInfo(CardID , TransType , TransMoney , Transdate,Remark) values (CardID ,支取 ,takemoney ,GETDATE(),余额减少+convert(char(19),takemoney) update Cardinfo set Balance =Balance-takemoney w

32、here CardID = CardID and Pass=Pass print取款成功 if(ERROR 0) begin rollback transaction end else commit tran print 卡号:+CardID+余额减少+convert(char(19),takemoney) print 交易成功 endend 图6.4.6存储过程取款的实现存储过程4:查询 InquireUSE ATM bankGO/* Object: StoredProcedure dbo.Inquire Script Date: 06/06/2016 06:45:26 */SET ANSI

33、_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER proc dbo.InquireCardID varchar(16),Pass varchar(6)asprint查询if (exists(select * from cardinfo where CardID=CardID) and Pass=(select Pass from cardinfo where CardID=CardID)select CardID as 卡号,CurType as 币种,SavingType as 存款类型,Balance as 余额from cardinfowhere Ca

34、rdID=CardIDelseprinterror图6.4.7存储过程查询的实现存储过程5:转账 TransaccountsUSE ATM bankGO/* Object: StoredProcedure dbo.Transaccounts Script Date: 06/06/2016 06:42:25 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER proc dbo.Transaccounts CardID char(16), -减钱卡号CardID2 char(16), -加钱卡号transmoney money as begin

35、 tran -开始执行事务 declare money int -转账出钱-转出的金额 select money=Balance-transmoney -验证是否超额 from Cardinfo where CardID=CardID if (money 1) -验证余额 begin insert transinfo(CardID,TransMoney,TransDate,TransType,Remark) values(CardID,transmoney,getdate(),支取,余额减少+convert(char(19),transmoney) update Cardinfo set Ba

36、lance=Balance-transmoney where CardID=CardID and Balance-transmoney0 update Cardinfo -转账进钱+转出的金额 set Balance=Balance+transmoney where CardID2=CardID insert transinfo(CardID,TransMoney,TransDate,TransType,Remark) values(CardID2,transmoney,getdate(),存入,余额增加+convert(char(19),transmoney) print 卡号:+CardI

37、D+余额减少+convert(char(19),transmoney) print 卡号:+CardID2+余额增加+convert(char(19),transmoney) print 恭喜您转账成功 commit tran if (error0) rollback tran return 0 end else begin print 余额不足无法转账 commit tran end图6.4.8存储过程转账的实现 图6.4.9 转账额度不足约束存储过程6:注销 D_eleteUSE ATM bankGO/* Object: StoredProcedure dbo.D_elete Script

38、 Date: 06/06/2016 06:48:08 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER proc dbo.D_eleteCardID char(16), Pass char(6) as begin transaction if EXISTS( select CardID from cardinfo where CardID=CardID and Pass=Pass)-核对卡号 begin print开始注销卡信息 delete from cardinfo where CardID=CardID and Pass=Pass

39、print 注销成功 commit tran end else begin print 您的卡不存在无需注销 rollback tran end图6.4.9存储过程注销失败的实现七、安全性设计7.1 防止用户直接操作数据库的方法(1)用户标识和鉴定 用户标识和鉴别是系统提供的最外层安全保护措施。其方法是由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供机器使用权。 (2)存取控制 数据库安全性所关心的主要是DBMS的存取控制机制。数据库安全最重要的一点就是确保只授权给由资格的用户访问数据库的权限,同时令所有未授权的人员无法接近数据,这主要通

40、过数据库系统的存取控制机实现。 (3)数据加密 数据加密是防止数据库中数据在存储和传输中关系的有效字段。加密的基本思想是根据一定的算法讲原始数据变换为不可直接识别的格式,从而使得不知道解密算法的人无法获知数据的内容。7.2 用户帐号密码的加密方法存储在Users表中的密码字段(PasswordCode)值不能以明文显示,应做适当的加密后再存入数据库。加密方法:使用SQL Server 2000提供的加密函数pwdencrypt(参数11)和加密比较函数pwdcompare(参数12,参数23),根据pwdcompare函数的返回值4判断密码是否相等。注:1:预加密的字符串2:预比较的字符串明文

41、3:已加密字段的值,T-SQL中为PWD字段名4:返回值为1时说明密码相等,返回值为0时密码不相等7.3 角色与权限确定每个角色对数据库表的操作权限,如创建、检索、更新、删除等。每个角色拥有刚好能够完成任务的权限,不多也不少。在应用时再为用户分配角色,则每个用户的权限等于他所兼角色的权限之和。角色可以访问的表与列操作权限管理员可访问所有表完全控制权限Admin可访问所有表部分控制权限八、数据库管理与维护说明数据库维护计划设定完成之后,如果SQL Server代理是启动的,那么在管理SQL Server代理作业下面会自动生成若干自动维护的工作条目,并且每个条目都有相应的计划表,这个才是正常的。系

42、统每天凌晨自动更新系统,删除未销卡记录。数据库维护计划非常强大,里面有各式各样对数据库的维护/备份操作,每样都可以设定不同的Schedule,当然,每设定一项,在JOB里面就会自动多出来一条。SQL Server Agent服务的正常运作是这一切的基础。系统每天凌晨更新后,自动备份数据库。对于本数据的管理与维护,例如数据库的备份与恢复,可以使用数据库中的exp命令和imp命令具体实用说明请参照oracle相关书籍或使用企业管理器中的“所有任务”“备份数据库(B)”菜单项和 “还原数据库(R)”菜单项操作。附代码建表代码create table Userinfo-用户实体信息表(CustomerID int primary key, -主键约束用户IDCustome

温馨提示

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

评论

0/150

提交评论