图书管理系统详细设计_第1页
图书管理系统详细设计_第2页
图书管理系统详细设计_第3页
图书管理系统详细设计_第4页
图书管理系统详细设计_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

(图书管理系统』具体设计说明书

2024年10月

目录

1引言错误!未定义书签。

1.1编写目的错误!未定义书签。

1.2项目背景错误!未定义书签。

1.3定义错误!未定义书签。

1.4参考资料错误!未定义书签。

2总体设计错误!未定义书签。

2.1需求概述错误!未定义书签。

2.2软件结构错误!未定义书签。

3程序描述错误!未定义书签。

3.101登陆模块错误!未定义书签。

3.202管理模块错误!未定义书签。

3.3031图书信息查询模块错误!未定义书签。

3.4032学生信息查询模块错误!未定义书签。

3.5021入库管理模块错误!未定义书签。

3.6022学生借书模块错误!未定义书签。

3.7023学生还书模块错误!未定义书签。

3.8024图书注销模块错误!未定义书签。

3.9接口设计错误!未定义书签。

3.10测试要点错误!未定义书签。

文档名称:具体设计规格说明书

项目名称:图书馆管理系统

项目负责人:陈新光

编写陈新光年月日

校对所有•小组成员年月H

审核所有小组成员年月日

批准穆老师年月日

开发单位_________________________________________

成员:05055202陈愉悦

05055102韩璐

05055203方丹婷

05055101傅瑜婷

05055302王燕

05055301陈思

05055306陈新光

05055329于小会

1引言

1.1编写目的

图书管理系统具体设计是设计的第二个阶段,这个阶段的重要任务是在图书管理系统概耍设计书基础

上,对概要设计中产生的功能模块进行过程描述,设il•功能模块的内部细节,涉及算法和具体数据结构,

2总体设计

2.1需求概述

按照需求分析文档中的规格规定,使用条形码扫描器进书、管书、还书,使得信息传递准确、流畅。

同时,系统最大限度地实现易安装,易维护性,易操作性,运营稳定,安全可靠。

2.2软件结构

系统由3大模块,6小模块组成:

序号编号名称

1,01登陆模块

2,02管理模块

3,031图书信息查询模块

4,032学生信息查询模块

5,021入库管理模块

6,022学生借书模块

7,023学生还书模块

8,024图书注销模块

9,040基础信息设立

3程序描述

3.101登陆模块

具体格式见下表:

功能编号01功能名称登陆模块内容功能流程图

所属业务图书馆管理所属项目图书馆管理

系统

编写人陈新光完毕时间2023-11-26页码第5页

3.1.1功能流程图

功能流程图如下图所示。

X—

登陪.jsp一提交所填内容一A:[录甯昌程:一成功一A量陆数据处理.”p-执行数据阵掾作床;是否成功;一成功T管理.j印

~___J

需要说明的问题:

(1)录入项检测使用javascript实现(各项必须非空)

(2)登陆Jsp页面也包含查询按钮,在此的登陆Jsp提交的数据只是用户

名和密码。

3.1.2功能描述

(1)功能类型:查询数据

(2)功能描述:提高系统的安全性

(3)前提业务:无

(4)后继业务:02(管理模块)

(5)功能约束:权限约束

(6)约束描述:

(7)操作权限:图书馆管理员

3.1.3界面设计

(1)基础信息解决

动作说明:

动作编号动作名称动作描述

A01登陆点击登陆按钮提交数据

到登陆数据解决.jsp页面

A02重至点击退重全按钮将当前

信息恢复原先状态

A03图书信息查询点击将页面转至到国书

信息查询.jsp页面

A04学生信息查询点击将页面转至学生信

息查询.jsp页面

A05基础信息点击将显示基础信息

(2)数据规定

(1)功能类型:数据查询

(2)数据描述:

页面显小录入字段如下:

字段名称长度录入方式是否非空项数据检查默认显示

管理员ID10文本框YN

管理员密码15passwordYN

3.1.4登陆数据解决.jsp的内部逻辑

登陆数据解决:

关键点两点:1,数据库连接;2,记录登陆信息及信息解决;

1,数据库连接:

如下:

publicclasslib_system_ConnextendsObject{

publiclib_system_Conn(){

)

privateConnectionconn=null;

privateResultSetrs;

Stringre=*'

//设立你的数据库ip

Stringdbip="127.0.0.1”;

//设立你的数据库用户名和密码:

Stringuse=nrootH;

Stringpass='*860409";

//设立您的数据库名

StringdbName="lib_system";

publicjava.sql.ConnectiongetConn(){

try{

Class.forNair.e("org.gjt.mm.mysql.Drivern).nevzlnstance();

Stringurl

=*'jdbc:mysql://"+db=p+":3306/,,+dbName+,,?user="+use+"&password=',+pass+

"&useUnicode=true&characterEncoding=GBKH;

conn=DriverManager.getConnection(url);

)

catch(Exceptione){

e.printStackTrace();

)

returnthis.conn;

)

)

//在Mysql建立lib_system数据库,之后将与数据操作相关数据与该数据库相连:

2,记录登陆信息及信息解决:

当用户点击“登陆”按钮之后,数据将提交到登卷数据解决Jsp页面。取得帐

号密码这两个从页面传入的值,然后跟数据库当中管理员表中的账号和密码比

较。假如对的的话,在JSP的SESSION中存入一个标记属性,表达当前己有管

理员登陆了。解决完毕后,跳转到管理页面,假如失败,则提醒登陆失败,并重

新进入到登陆页面。

具体的逻辑如下:

<%

Stringusername=ParamUtiLgetString(request,',adniin_ID");

〃取得用户名

Stringpassword二ParamUtil.getString(request,“admin_passworcT);

//取得密码

StringcrroMsg=,,H;

〃错误码

if(username!=null&&password!=nuH)

try

SkinUtil.login(request,response,admin_ID,admin_password);

〃在JSP的session中存如一个标记属性,表达当前已有管理员登陆了

Session.setAttribute("admin」D'',admin_ID);

response.sendRedirect("login_process.jsp");

)

catch(UserNotFoundExceptione)

(

crroMsg二”错误的用户名和密码";

response.sendRedirect("login_process.jsp?,,+response.encodeURL(erroMsg));

)

else{

oul.prinlln("请填写好你的个人信息!)

)

%>

3.1.5存储分派

管理员表:(admin)

序号字段名类型长度精度小数默认允许主键说明

位数值空

1(admin_ID)管理员Int10

ID

2(adminpassword)Char15

管理员密码

3(adminquanxian)Nvarchar15

权限

3.202管理模块

具体格式见下表

功能编号02功能名称管理模块内容功能流程图

所属业务图书馆管理所属项目图书馆管理

系统

编写人陈新光完毕时间2023-11-26页码第8页

3.2.1功能流程图

功能流程图如下所示:

需要说明的问题:

在选择相应的业务时,需要在当前的页面显示;并且在管理页面内,默认显

示图书查询页面。

3.2.2功能描述

(1)功能类型:其他

(2)功能概述:总体归纳图书馆管理功能

(3)前提业务:登陆模块(01)

(4)后续业务:021,022,023,024,03

(5)功能约束:权限约束

(6)约束描述:

(7)操作权限:图书馆管理人员

3.2.3界面设计

(1)基本信息解决

动作说明如下:

动作编号动作名称动作描述

A01入库管理点击按钮将页面转至入

库管理.jsp页面

A02学生借书点击按钮将由曲转至学

生借书Jsp页面

A03学生还书点击按钮将页面转至学

生还书.jsp页面

A04图书注销点击按钮将页面转至图

书注销.jsp贝面

A05图书查询点击按钮将页面转至图

书查询Jsp页面

(2)数据规定

功能类型:其他

3.3031图书信息查询模块

具体格式如下:

功能编号031功能名称图书信息查内容功能流程图

询模块

所属业务图书馆管理所属项目图书馆管理

系统

编写人陈新光完毕时间2023-11-26页码第10页

3.3.1功能流程图

功能流程图如下图:

jsp一提交所也内容一A录*呼腕一成功一A图”第y处一执行数据H操作A./是否成功一成功f作询结果.j即

V-W-jCz**.JSP

需要说明的问题:

录入项检测使用javascript来实现(各项非空);

操作权限:面向所有用户

3.3.2功能描述

(1)功能类型:查询数据

(2)功能概述:显示查询结果

(3)前提业务:无

(4)后继业务:

(5)功能约束:没有约束;

(6)约束描述:

(7)操作权限:面向所有用户

3.3.3界面设计

(1)基础信息解决

下表是动作说明:

动作编号动作名称动作描述

A01拟定点击按钮提交数据到图|

书查询数据解决Jsp页面

A02学生信息查询点击按钮将页面转至学

生信息查询.jsp页面

(2)数据规定

(1)功能类型:数据查询

(2)数据描述:

页面显示字段见下表:

字段名称长度录入方式是否非空项数据检查默认显不

请选择查询20下拉列表YN

类型

请输入查询200文本框YN

内容

(3)图书信息查询的输出项

书名

图书类型

作者

译者

ISBN

出版社

价格

书架名称

现存量

简介

书名

图书类型

3.3.4模块内部逻辑

1,Search.jsp用于显示界面的内容,给用户显示一个查询接M

2,Lib_query.jsp用来调度所有的页面,它根据传入的参数来决定包

含哪一个jsp页面来显示内容;

在lib_query.jsp页面中,

它根据,专入的参数来决定包含哪一个jsp页面来显示内容;则可

以通过<jsp:includepage=,,<%=%>”/>,运用jsp:include标签来

被动态加载发送到相应页面;

3,chuli.jsp用来解决数据查询和显示查询到的结果列表。

在这个页面中,数据规定是以列表的形式显示到输出页面。

由于查询到的结果也许过多,所以采用分页形式显示;

对于分页功能的内部逻辑:

4,View.jsp用来显示查询到的图书的各项属性。

3.3.5存储分派

图书目录文献(Book):

序号字段名类型长度精度小数位数默认值允许空主键说明

1(BookID)图书编号Int101V自动编号

2(TXM)条形码nvarchar20

3(Title)书名nvarchar200

4(TSLX)图书类型Nvarchar50J

5(Author)作者Nvarchar20

6(Translalor)译者Nvarchar20V

7(ISBN)ISBNNvarchar20

8(CBS)出版社Nvarchar30

10(SJMC)书架名称Nvarchar20

11(XCL)现存量Sinallint2

12(KCZL)库存总量Smallint2V

13(RKSJ)入库时间Datatime

14(CZY)操作员Nvarchar10

15(JJ)简介Nvarchar200

16(JCCS)借出次数Smallint2

17(SFzhuxiao)是否注销Nvarchar2

18(BookZT)图书状态nvarchar50■J

借书文献表(JSWJB):

序号字段名类型长度精度小数默认允许主键外键说明

位数值空

1(JYID)Int101V自动

借阅编号编号

2(BookID)Int10

图书编号

3(SluID)学Ini10V

生编号

4(JYSJ)借Daiatimc8J

阅时间

5(DQSJ)至ijDatatime8J

期时间

6(XJCS)续Smallint2J

借次数

7(CZY)操Nvarchar10J

作员

8(ZT)状态navarchar50J

3.4032学生信息查询模块

具体格式如下:

功能编号032功能名称学生信息查内容功能流程图

询模块

所属业务图书馆管理所属项目图书馆管理

系统

编写人陈新光完毕时间2023-11-26页码第12页

3.4.1功能流程图

功能流程图如下图:

^7—-

学生怙息ifiMjsp—提交所填内罂险一成功一A学生蠹。警掂一执行收照库操作足杏成功)——成功一,学生,鸳彻站

T失败1

需要说明的问题:

录入项检测使用javascript来实现(各项非空);

操作权限:面向所有用户

3.4.2功能描述

(8)功能类型:查询数据

(9)功能概述:显示查询结果

(10)前提业务:无

(11)后继业务:

(12)功能约束:没有约束;

(13)约束描述:

(14)操作权限:面向所有用户

3.4.3界面设计

(4)基础信息解决

下表是动作说明:

动作编号动作名称动作描述

A01拟定点击按钮提交数据到图

书查询数据解决.jsp页而

A02图书信息查询点击按钮将灾囿转至图

书信息查询.jsp页面

(5)数据规定

(3)功能类型:数据查询

(4)数据描述:

页面显示字段见下表:

字段名称长度录入方式是否非空项数据检查默认显示

请输入学号10文本框YN

(6)学生信息查询的输出项

学生学号

姓名

性别

生日

证件号码

联系电话

登记H期

有效期至

己借书数

3.4.4模块内部逻辑

5,Search.jsp用于显示界面的内容,给用户显示一个查询接口

6,Index.jsp用来调度所有的页面,它根据传入的参数来决定包含哪

一个jsp页面来显示内容;

在index.jsp页面中,

它根据,’专入的参数来决定包含哪一个jsp页面来显示内容;则可

以通过<jsp:includepage="<%=%>”/>,运用jsp:include标签来

被动态加载发送到相应页面;

7,List.jsp用来显示查询到的结果列表。

8,View.jsp用来显示查询到的学生的各项属性。

★★注释:学生信息查询模块与图书查询模块属于同一类功能。实现

可以完全类似。

3.4.5存储分派

学生文献:

序号字段字段名类型长度精度小数默认允许主键说明

位数值空

1XSID学生编号Int101J自动

编号

2Name姓名nvarchar10

3Sex性别nvarchar2

4ZJH证件号码nvarchar25V

5LXDH联系电话nvarchar40

6DJRQ登记日期datetime8v,

7YXQZ有效期至datetime8V

8YJSS已借书数smallint2v,

9RulelD学生规则int10

ID

10ZT是否挂失nvarchar2

借书文献:

序号字段名类型长度精度小数位默认值允许空主键外键说明

1借阅编Int101J自动

号编号

2图书编Int10J

3学生编In(10J

4借阅时Datatime8V,

5到期时Datatime8

6续借次Smallint2J

7操作员Nvarchar10V

8状态navarchar50V

3.5021入库管理

具体格式如下:

功能编号021功能名称入库管理模内容功能流程图

所属业务图书馆管理所属项目图书馆管理

系统

编写人陈新光完毕时间2023-11-27页码第16页

3.5.1功能流程图

:成功一►显示玷JR.j印

(1)执行数据库操作的时候要验证权限

(2)录入项检查用javascript来实现(选项非空)

3.5.2功能描述

(1)功能类型:添加数据

(2)功能描述:增长图书目录文献中的图书信息。

(3)前提业务:管理模块

(4)后继业务:无

(5)功能约束:权限约束

(6)约束描述:无

(7)操作权限:图书馆管理人员

3.5.3界面设计

1,基础信息解决

动作说明如下表:

动作编号动作名称动作描述

A01保存点击按钮提交数据到入

库数据解决.jsp页面

A02退出点击按钮将当前页面关

2,数据描述

(1)功能类型:数据增长。

(2)数据描述:

页面录入字段见下表:

字段名称长度录入方式是否非空项数据检查默认显示

书号30文本框YN

条形码20文本框YN

书名200文本框YN

作者20文本框YN

出版社30文本框YN

版次50文本框YN

图书类别20文本框YN

单价8文本框YN

录入时间默认系统时年月日只需程序记显示在入库

间,格式:录界面

录入人默认系统登只需程序记显示在入库

陆人员录界面

3,入库数据解决内部逻辑:

图竹入库采用表格进行多行添加:

运用javaBean来编写一个BookBean来管理图书。

在BookBean类中增长记录的公共接口来实现入库数据的添加。

具体的类设计如下:

Publicintinsert(Hashtablehash){

intintID=makeID(,'Book","BookID";,H,nn,true);

Vectorvect=newVector();

vect.addC'Book");

vect.add(addVector("BookID,',String.valueOf(intID),,,NUMM));

vect.add(addVector("Title,,,ds.toString((String)hash.get(uTITLEw)),n

CHAR"));

vecl.add(addVeclor("Aulhor",ds.toSlring((Slring)hash.get("AUTHOR

"))JCHAR”));

vect.add(addVector("ISBN'\ds.toString((String)hash.get("ISBN")),M

CHAR"));

OOOOOOOOOOOOOOOOOOOO//尚有其他选工贝,ij卜.各工IO

returninsertRecord(vecl);

该方法有一个参数,是java.utiLHashlable类,在调用该方法

前,先用和hashtable的put方法将字段名和该条记录的值存入

hashtable中,然后将这个hashtable作为参数传入insert方法中。

在insert方法的最后,调用ParcntBcan中的inscrtRccord方

法,insertRecord可以根据传入的参数自动的生成增长记录的SQL

语句并通过JDBC发送到数据库。

正对ParentBean类:重要是实现对数据库的各种操作:如与

数据库的连接,对数据库的操作。

3.5.4存储分派

图书目录文献:

序号字段名类型长度精度小数位数默认值允许空主键说明

1图书编号Int101自动编号

2条形码nvarchar20

3书名nvarchar200

4图书类型Nvarchar50

5作者Nvarchar20

6译者Nvarchar20

7ISBNNvarchar20

8出版社Nvarchar30V

9价格Money8V

10书架名称Nvarchar20

11现存量Smallint2V

12库存总量Smallint2

13入库时间Datatime8

14操作员Nvarchar10

15简介Nvarchar200V

16借出次数Smallint2

17是否注销Nvarchar2

18图书状态nvarchar50

入库表:

序号字段名类型长度精度小数位默认值允许空主键外键说明

1书号Nvarchar301自动

编号

2条形码Nvarchar20

3书名Nvarchar200

4作者Nvarchar20

5出版社Nvarchar30■J

6版次Nvarchar50

7图书类Nvarchar20

8存放位Nvarchar20V

9单价Money8

10入库数Smallint2

11金额Money8

12经手人Nvarchar10

13票号Nvarchar30

14操作员Nvarchar10

15H期Datatimc8J

注:

3.6022学生借书模块

具体格式如下:

功能编号022功能名称学生借书模内容功能流程图

所属业务图书馆管理所属项目图书馆管理

系统

编写人陈新光完毕时间2023-11-27页码第21页

3.6.1功能流程图

ffifi.jxp——畏交所仇内f-A成*昌益一成功一A检查学生欠款:信义一执行致雷库操作A欠峡是否也麻!一未也般一■处理信“数罪.j*

'失败1,[

夫欧足评.IA功>

T

显示学生借书信

息.jxp

需要说明的问题:

(1)在进行借书,修改数据信息时,应先查询学生的欠款信息,如欠款

超额,则运用javascript实现信息提醒,拒绝借书,如无超额,则

接受借书。

(2)为便于以后的恢复操作,此修改操作只在表中做一个标志,并不是

真正的对其修改;

3.6.2功能描述

(1)功能类型:修改数据和查询数据

(2)功能描述:更新学生借书文献,图书目录文献等中的信息;

(3)前提业务:管理模块

(4)后继业务:无

(5)功能约束:权限约束

(6)约束描述:

(7)操作权限:图书馆管理人员

3.6.3界面设计

1,基础信息解决

动作说明如下:

动作编号动作名称动作描述

AO1重置点击按钮将文本框内的

所有数据清空

A02提交点击按钮将数据提交到

解决学生超额信息页面

A03取消将当前页面关闭,并取消

借阅

2,数据描述

(1)功能类型:修改数据和查询数据

(2)界面设计:

书籍借阅管理

学生证件号码:|

书籍条形码:|

।重置I।取消

(3)数据字段描述:

字段名称长度录入方式是否非空项数据检查默认显示

学生证件号10文本框YN

书籍条形码10文本框YN

3,图竹借阅数据解决内部逻辑

If(strEdit.equals(u1,,)){

If(学生超额I学生不存在){

ifSuccess=false;

)else{

1f(!bb.IsValid(hash)){

〃新增操作

Intintdel[]=bb.addBorrow(hash);

If(intdel==null){

ifSuccess=false;

)else{

For(inti=O;i<intdel.length;i++){

%><scripl>alert(t€<%=inldel[i]%>,,);</script><%

If(intdel[i]!=l)

ifSuccess=false;

)

)

)

}

If(!ifSuccess){

%>vscript>alerl("借阅失败!M);</script><%

)else{

%><scripl>alert("借阅成功!M);</script><%

)

}

执行的过程如下:

一方面要验证学生信息是否存在和学生的欠款是否超额,也就是说学生是否

可以借书,图书是否在馆等,在拟定合法之后调用bb.addBorrow(hash)来完毕借

阅流程。流程其实就是对几个表进行增改的操作。

关于addBorrow(hash)的算法:

publicint[]addBorrow(Hashlablehash)

(

System.out.print】n("批量解决新增借阅…。");

Stringsql="M;

intintID=makeID(,,JYWJB,';,JYIDM,",','',',true);

StringstrID=String.valueOf(inlID);

StringstrZJH=ds.toString((String)hash.get("ZJH"));〃证件号

StringstrTXM=ds.toString((String)hash.get("TXM"));〃条形码

StringstrJYSJ=ds.toString((String)hash.get("JYSJ"));〃借阅时间

StringstrXSID=〃学生ID

StringstrBOOKID=〃图书ID

StringstrDQSJ=〃到期时间

StringstrXJCS、心;〃续借次数

〃根据学生证件号取的学生ID

〃根据学生ID取得规则ID,然后取得可以借阅天数,

sql="selectStudent.RulelD,Student.XSID,Rule.KJYSJ"

+"fromStudengt,RULEM

+"whereStudent.ZJH-"+strZJH+,"and

Student.RuleID=Rule.RuleID

HashtablehashReId=(Hashlable)searchOneData(sql);

strXSID=ds.toString((String)hashReId.get("XSID"));

StringstrKJYSJ=ds.toString((String)hashReld.get("KJYSJ"));

〃根据条形码取得图书ID

sql=uselectBOOKIDfromBookwhereTXM=H,+strTXM+;

HashtablehashBKID=(Hashtable)searchOneData(sql);

strBOOKID=ds.toString((String)hashBKID.get("BOOKID"));

〃新增操作

createStalement();

clearBatch();

sql="insertintoJSWJB(JYID,XSID,BOOKID,JYSJ,DQSJ,ZT,XJCS)"

+Mvalues(,,+strID+,,;,+strXSID+*,,',+strBOOKID+,\",+strJYSJ

+'",to_char((to_date(,"+strJYSJ+',',,yyyy-MM-dd,)+',+strKJYSJ+,,),,yyyy-MM-dd'

)”

+”,'"+strZero+'”J'+strZero+”')”;

addBatch(sql);

sql二"updateBooksetZT^借出,whereBOOKID="+strBOOKID;

addBatch(sql);

sql=uupdateStudentsetYJSS=YJSS+1whereXSID="+strXSID;

addBatch(sql);

intresult[]=executeBatch();

closeStmO;

returnresult;

)

而对于取消按钮事件,由于要实现取消借阅,所以需要调用delBorrow(String

id)来取消借阅操作;算法如下:

publicint[]delBonow(Stringid)

(

System.ouLprintln("批量解决取消借阅。。。。。");

Stringsql="”;

sql=nselectBOOKIDfromJSWJBwhereJYID=u+id;

Hashtablehash=(Hashtable)searchOneData(sql);

StringstiBOOKlD=(String)hash.get(,,BOOKIDM);

createStateinent();

clearBatch();

sql=HupdateJSWJBsetZT=,H+strOne+H,whereJYID="+id;

addBatch(sql);

sql="updateBOOKsetZT='可借'whereBOOKID=H+strBOOKID;

addBatch(sql);

intresult[]=executeBatch();

closeSlmO:

returnresult;

3.6.4存储分派

借书文献:

序号字段名类型长度精度小数位默认值允许空主键外键说明

1借阅编Int101自动

号编号

2图书编In(10

3学生编Int10

4借阅时Datatime8V

5到期时Datatime8V

6续借次Smallinl2

7操作员Nvarchar10

8状态navarchar50

罚款单:

序号字段名类型长度精度小数位

温馨提示

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

评论

0/150

提交评论