VB Access图书管理系统_第1页
VB Access图书管理系统_第2页
VB Access图书管理系统_第3页
VB Access图书管理系统_第4页
VB Access图书管理系统_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

VB+Access设计图书管理系统

—>需求分析

在进行一个项目的设计之前,先要进行必要的需求分析。

现某图书馆需要管理其各种人员和图书信息,希望实现办公的信息化,通过建立一个图书管理系统来管理图书。

其完成的功能如下:

(1)可以实现图书的登记、借阅和赔偿的管理。

(2)可以实现对图书的各种信息的查询,包括逐个浏览,以及对图书信息的增加、删除和编辑操作。另外,可

以根据输入的信息来检索某个图书的信息。

(3)可以实现对管理人员的投诉管理。

(4)可以实现对值班人员的管理。

系统的功能模块图如图1所示。

本实例根据上面的设计规划出的实体有图书登记实体、图书借阅实体、图书赔偿实体、查询输出实体、值班管

理实体、投诉管理实体。各个实体具体的描述E-R图如下。

图书登记实体E-R图如图2所示。

图书借阅实体E-R图如图3所示。

图书管理系统

网值

期资

*

图1系统的功能模块图

图2图书登记实体E-R图

图3图书借阅实体E-R图

图书赔偿实体E-R图如图4所示。

图4图书赔偿实体E-R图

投诉管理实体E-R图如图5所示。

图5投诉管理实体E-R图

值班管理实体E-R图如图6所示。

查询输出实体E-R图如图7所示。

图7查询输出实体E-R图

二、结构设计

根据上面的需求分析,设计好数据库系统,然后开发应用程序可以考虑的窗体的系统,每一个窗体实现不同的

功能,可以设计下面的几个模块。

•图书管理模块:用来实现图刁的登记、借阅、赔偿。

•图书资料模块:用来实现图书的查询输出。

•值班管理模块:用来实现管理人员的值班浏览。

•投诉管理模块:用来实现对管理人员的投诉管理。

•系统管理模块:用来实现用户的增加、删除和修改等操作。

三、数据库设计

这里的数据库采用Access,用ADO作为连接数据对象。

1、建立Access数据库

启动Access,建立一个空的数据库book.mdb,如图8所示。

使用程序设计器建立系统需要的表格如下。

图书登记表,如图9所示。

•・«(■日

图8建立数据库book.mdb图9图书登记表

图书借阅表,如图10所示。图书赔偿表,如图11所示。

A

A

二・8文*

口1^5«BT

二“日”NUE

B«vn*

■.*«|m|M.

处直

MA4M"Q8

IHAMU.人皿

“基修・

Btui

Rtram

工♦*rr*

e«T0X“事*

*n«

He压・4iS<

图10图书借阅表图11图书赔偿表

图书资料表,如图12所示。系统管理表,如图13所示。

・■”制;&--X|•:「W&任电国

手it大小

殖"格式

"ae式*AW

・笈・KQ*W

MXMHva

”・tug

w寄SMHWI

ww<*«mtx<

wwx<

3W』e•”

jtrorws无e空手”・

利更而

n鬣・hciSJt

图12图书资料表图13系统管理表

投诉管理表,如图14所示。

图14投诉管理表

值班管理表,如图15所示。

图15值班管理表

2、连接数据

在VisualBasic环境下,选择•工程”-“引用”命令,在随后出现的对话框中选择“MicrosoftActiveXDataObjects

2.0Library",然后单击“确定”按钮,如图16所示。

图17ODBC对话框

单击“添加"按钮,出现“创建新数据源"对话框,如图18所示。

图18"创建新数据源"对话框

选择MicrosoftAccessDriver(*.mdb),单击“完成"按钮,出现如图19所示对话框。

ODBClicroroftAcceiric安装r?%

图19设宜连接数据源

在“数据源名”文本框中添加一个名字,单击“确定"按钮完成系统默认连接设置。然后在ODBC对话框中单击“确

定”按钮完成ODBC设置。

界面设计

设计好的界面如图20所示。

♦用书匿■有蛇居二0肉

图20图书管理系统界面

这是一个多文档界面(MDI)应用程序,可以同时显示多个文档,每个文档显示在各自的窗体中。MDI应用程序

中常有包含子菜单的“窗体”选项,用于在窗体或文档之间进行切换。

菜单应用程序中,有5个菜单选项,每个选项对应着E-R图的一个子项目。

1、创建主窗体

首先创建一个工程,命名为图书管理系统,选择“工程”一>“添加MDI窗体"命令,则在项目中添加了主窗体。该

窗体的一些属性如表1所示。

表1主窗体的属性

属性值

Caption图书管理系统

NameMain

MenuMainmenul

WindowstateMaxsize

Windowstate的值为Maxsize.即程序启动之后自动最大化。

将“菜单"组件从“工具箱"拖到窗体上。创建一个Text属性设置为“文件”的顶级菜单项,且带有名为“关闭”的子

菜单项。类似地创建一些菜单项,如表2所示。

表2菜单项表

菜单名称Text属性功能描述

Menulteml图书管理顶级菜单,包含子菜单

Menultem2图书登记调出图书登记窗体

Menultem3图书借阅调出图书借阅窗体

Menultem4图书赔偿调出图书赔偿窗体

Menultem5图书资料顶级菜单,包含子菜单

Menultem6查询输出调出查询输出窗体

Menultem7值班管理顶级菜单,没有子菜单

MenultemS投诉管埋顶级菜单,没有了菜单

Menultem9系统管理顶级菜单,为含子菜单

Menulteml0增加用户调出用户窗体

Menulteml1修改密码调出密码窗体

Menulteml2退出系统退出

主窗体如图21所示。

图21主窗体

2、创建各子窗体

选择“工程”一"添加窗体”命令,添加子窗体。

在新建VisualBasic工程时自带的窗体中,将其属性MIDChild改成True,则这个窗体成为MID窗体的子窗体。

在这个项目中,要创建的于谢体如表3所示。

表3所有子窗体

吊窗体名

Text

图书登记frmdengji

图书借阅frmjieyue

图书赔偿frmpeichang

增加新用户frmadduser

查询输出frmfind

登录系统frmlogin

修改密码frmchangepwd

下面分别给出这些子窗体,以及它们所使用的控件。

(1)图书登记了窗体如图22所示,其控件如表4所示。

图22图书登记子窗体

表4图书登记子窗体控件

控件类别控件Name控件Iext

Label1编号

Label2日名

LabelLabel3类型

Label4购买日期

Label5定价

Textl(空)

TextBoxText2(空)

Text3仁)

Text4(空)

Text5(空)

Commandl增加记录

Command2删除记录

Commands下一条

CommandButtonCommand4上一条

Commands第一条

Command6最后一条

Connnand7退出

ADODataAdodd(空)

DataGridDataGrid1(空)

图书借阅和图书赔偿子窗体分别如图23和图24所示,因为它们为控件与图书登记子窗体的雷同,在此不作介

绍。

图23图书借阅于窗体

图24图书赔偿子窗体

(2)增加用户子窗体如图25所示,其控件如表5所示。

图25增加用尸子防体

表5增加用户子窗体控件

归件类别控件Name控件Text

Labell输入用户名

Label2输入密码

Label

Label3确认密码

Label4选择权限

Textl(空)

TextBoxText2(空)

Text3(空)

ComboBoxCombi(空)

Commandl确定

CommandButton

Command2取消

(3)修改密码子窗体如图26所示。

图26修改密码子窗体

(4)库房管理子窗体如图27所示。

图27库房管理子窗体

其控件如表6所示。

表6库房管理子窗体控件

控件类别控件Name控件Text

TextBoxTextl(空)

ComboBoxCombol

MSFIexGridMSFIexGridl

(5)查询子窗体如图28所示,其控件如及7所示。

图28查询子窗体

表7查询子窗体控件

控件类别控件Name控件Text

OptionButtonOptionl按编号查询

Option2按购买日期查询

Label1从

Label2到

LabelLabel3从

Label4年

Label5月

Labelb日

Label7到

Label8年

Label9月

Label10日

Combo(O)ComboBoxCombol(空)

Combo(1)ComboBoxCombol(空)

Comboy(O)ComboBoxComboy(空)

Coniboy(1)ComboBoxComboy(空)

Combom(O)ComboBoxCombom(空)

Combom(1)ComboBoxCombom(空)

Combod(O)ComboBoxCombod(空)

Combod⑴ComboBoxCombod(空)

Commandl查询

CommandButton

Command2取消

(6)用户登录子窗体如图29所示.

(7)值班管理子窗体如图30所示,其控件如表8所示。

图29用户登录子窗体图30值班管理子窗体

(8)投诉管理子窗体如图31所示,其控件如表9所示。

限营区

.F」W6T出14小卬问

图31投诉管理子窗体

建立公共模块

1、显示目录

建立公共模块可以提高代码的效率,同时使得修改和维护代码都很方便。

创建公共模块的步躲如下:

⑴在菜单中选择“工程。“添加模块”命令,则出现模块对话框,如图32所示。

(2)选择模块图标后,单击“打开”按钮,则模块已经添加到项目中广。默认情况下名为Module'

图32模块对话框

(3)在模块中定义整个项目的公共变量。

PublicconnAsNewADODBConnection'标i己连接对象

PublicuserIDAsSiring,标记当前用户ID

PublicuserpowAsString,标记用户权限

PublicfindAsBoolean'标记查询

PublicsqlfindAsString'查询语句

Publicrs_data1AsNewADODB.Recordset

PublicfindokAsBoolean

PublicfrmdataAsBoolean

PublicConstkeyenter=13'enter键的ASCII码

在主窗体添加完菜单之后,就要为各个子菜单创建事件处理程序,

窗体代码

在本项目中,子菜单事件都是Click事件,这里先给出主窗体部分的代码。

下面是响应“增加用户”f菜单Click事件,调出增加用户窗体代码。

PrivateSubadduser_Click()

frmadduser.Show

EndSub

卜.面是响应“查询输出”子菜单Click事件,调出查询输出窗体代码。

PrivateSubchaxunshuchu_Click()

frmfind.Show

EndSub

下面是响应“退出"子菜单Click事件,调出退出窗体代码。

PrivateSubexit_Click()

UnloadMe

EndSub

下面是响应“图书登记”子菜单Click事件,调出图书登记窗体代码。

PrivateSubcheckin_Click()

frmdengji.Show

EndSub

下面是响应“修改密码”子菜单Click事件,调出修改密码窗体代码。

PrivateSubchangepwd_Click()

frmchangepwd.Show

EndSub

下面是响应“图书借阅”子菜单Click事件,调出图书借阅窗体代码。

PrivateSubborrow_Click()

frmjieyue.Show

EndSub

下面是响应“图书赔偿”子菜单Click事件,调出图书赔偿窗体代他。

PrivateSubtushupeichang_Click()

frmpeichang.Show1

EndSub

下面是响应“值班管理”菜单Click事件,调出值班管理窗体代码。

PrivateSubzhibanguanli_Click()

frmzhiban.Show1

EndSub

下面是响应“投诉管理”子菜单Click事件,调出投诉管理窗体代码。

PrivateSubtousuguanli_Click()

frmtousu.Show1

EndSub

2、各子窗体的代码

在各个子窗体建立好后,就可以根据各个子窗体的功能给它们添加相应代码了。

(1)图书登记了窗体代码

本窗体用来填写图书登记的信息,用ADO来连接数据库,是本窗体的重点。采用MDI的子程序,所以运行后,

它出现在生程序的界面下,如图33所示。

»■»***

:jTT|]

LI|**M<]►>1;

图34图书借阅子窗体运行效果

图35图书赔偿子窗体运行效果

(2)增加用户子窗体代码

增加用户子窗体是用来增加用户的用户名、密码和权限的。其运行效果如图36所示。

单击“确定”按钮后.还要返回一个信息框.提示成功信息.加图37所示。

图36增加用户子窗体运行效果图37成功信息框

窗体部分代码的思路是,收集输入的表中的字符串,然后与数据库中的系统的用户数据比较,如果不存在,则

允许添加。

PrivateSubCommand1_Click()

DimsqlAsString

Dimrs_addAsNewADODBRecordset

IfTrim(Textl.Text)=""Then

MsgBox"用户名不能为空”,vbOKOnly+vbExclamation,""

ExitSub

Textl.SetFocus

Else

sql="select*from系统管理"

rs_add.Opensql,conn,adOpenKeyset,adLockPessimistic

While(rs_add.EOF=False)

IfTrim(rsadd.Fields(O))=Trim(Text1.Text)Then

MsgBox”己有这个用户*vbOKOnly+vbExclamation,"M

Textl.SetFocus

Text1.Text=""

Text2.Text=""

Text3.Text

Combol.Text=""

ExitSub

Else

rs_add.MoveNext

EndIf

Wend

IfTrim(Text2.Text)<>Trim(Text3.Text)Then

MsgBox"两次密码不一致”,vbOKOnly+vbExclamation,""

Text2.SetFocus

Text2.Text=""

Text3.Text=""

ExitSub

ElselfTrim(Combol.Text)<>"system"AndTrim(Combo1.Text)<>"guest"Then

MsgBox”请选择正确的用户权限",vbOKOnly+vbExclamation,

Combol.SetFocus

Combol.Text=""

ExitSub

Else

rs.add.AddNew

rs_add.Fields(O)=Textl.Text

rs_add.Fields(1)=Text2.Text

rs_add.Fields(2)=Combol.Text

rs_add.Update

rsadd.Close

下面是返回成功信息对话框的代码:

MsgBox"添加用户成功",vbOKOnly+vbExclamation,""

UnloadMe

EndIf

EndIf

EndSub

(3)修改密码子窗体代码

修改密码子窗体是用来修改用户密码的。其运行效果如图38所示。

图38修改密码子窗体运行效果

在“确定”按钮的Click事件中添加如下代码:

PrivateSubCommand1_Click()

Dimrs_changAsNewADODB.Recordset

DimsqlAsString

IfTrim(Textl.Text)<>Trim(Text2.Text)Then

MsgBox"密码不一致!",vbOKOnly+vbExclamation,""

Textl.SetFocus

Textl.Text=""

Text2Text

Else

sql="select*from系统管理where用户名="'&userID&

rs_chang.Opensql,conn,adOpenKeyset,adLockPessimistic

rs_chang.Fields(1)=Textl.Text

rs_chang.Update

rs_chang.Close

MsgBox"密码修改成功",vbOKOnly+vbExclamation,""

UnloadMe

EndIf

EndSub

图7-39提示修改成功

在上述代码中,首先比较两个表中的数据是否一致,然后用rs_chang.Fields(1)=Textl.Text语句把代码输入

到数据库中。最后,用MsgBox"密码修改成功",vbOKOnly+vbExclamation,""语句弹出•个信息框,告诉修改

成功,如图39所示。

显示目录

(4)库房管理子窗体代码

库房管理子窗体是用来管理图书资料的。其运行效果如图40所示。

图40库房管理子窗体

实际上,设计库房管理子窗体的程序代码与增加用户子窗体的代码在思路上是完全相同的。就是在DataGrid

的文本框中显示图书进出的清单,最后把填写的明细存储到数据库中,

检查代码如下:

OptionExplicit

Dimrs_data2AsNewADODB.Recordset

Dimselect_rowAsString

Dimshowgrid2AsBoolean

Dimrs_customAsNewADODB.Recordset

DimjinchuAsString'进出库标志

DimmodifyAsBoolean'修改状态标忐

PrivateSubcmdexit_Click()

UnloadMe

EndSub

PrivateSubForm_Load()

OnErrorGoToloaderror

DimsqlAsString

sql="select*from图书资料"

rs_uuslum.CursurLuualiun=adUseClieril

rs_custom.Opensql,conn,adOpenKeyset,adLockPessimistic

WhileNotrs_custom.EOF

Combol.Additemrs_customFields(O)

rs_custom.MoveNext

Wend

findok=True

modify=False'非修改状态

showgrid2=False

displaygridl'调用显示Datagridl子程序

loaderror:

IfErr.Number<>0Then

MsgBoxErr.Description

EndIf

EndSub

'显示msflexgridlG程序

PublicSubdisplaygridl()

DimiAsInteger

OnErrorGoTodisplayerror

setgrid

setgridhead

MSFIexGridl.Row=0

IfNotrsdatalEOFThen

rs_dala1.MuveFirsl

DoWhileNotrs_data1.EOF

MSFIexGridl.Row=MSFIexGridl.Row+1

MSFIexGrid1.Col=0

IfNotlsNull(rs_data1.Fields(0))ThenMSFIexGridl.Text=rs_data1.Fields(0)Else

MSFIexGrid1.Text=""

MSFIexGrid1.Col=1

IfNotlsNull(rs_data1.Fields(1))ThenMSFIexGridl.Text=rs_data1.Fields(1)Else

MSFIexGridl.Text=""

MSFIexGrid1.Col=2

IfNotlsNull(rs_data1.Fields(2))ThenMSFIexGridl.Text=rs_data1.Fields(2)Else

MSFIexGridl.Text=""

MSFIexGrid1.Col=3

IfNotlsNull(rsdata1.Fields(3))ThenMSFIexGridl.Text=rs_data1.Fields(3)Else

MSFIexGrid1.Text=,'"

MSFIexGridl.Col=4

IfNotlsNull(rs_data1.Fields(4))ThenMSFIexGridl.Text=rs_data1.Fields(4)Else

MSFIexGridl.Text=""

MSFIexGridl.Col=5

IfNotlsNull(rs_data1.Fields(5))ThenMSFIexGridl.Text=rs_data1.Fields(5)Else

MSFIexGrid1.Text=""

rs_data1.MoveNext

Loop

EndIf

displayerror:

IfErr.Number<>0Then

MsgBoxErr.Description

EndIf

EndSub

PublicSubsetgrid()

DimiAsInteger

OnErrorGoToseterror

WithMSFIexGridl

.ScrollBars=flexScrollBarBoth

.FixedCols=0

.Rows=rs_data1.RecordCount+1

.Cols=6

.SelectionMode=flexSelectionByRow

Fori=0To.Rows-1

.RowHeight(i)=315

Next

Fori=0To.Cols-1

.ColWidth(i)=1300

Nexti

EndWith

ExitSub

selenur.

MsgBoxErr.Description

EndSub

PublicSubsetgridhead()

OnErrorGoTosetheaderror

MSFIexGrid1.Row=0

MSFIexGrid1.Col=0

MSFIexGridl.Text="编号"

MSFIexGrid1.Col=1

MSFIexGridl.Text="购买日期”

MSFIexGrid1.Col=2

MSFIexGridl.Text="书名"

MSFIexGrid1.Col=3

MSFIexGridl.Text="类型"

MSFIexGrid1.Col=4

MSFIexGridl.Text一定价"

MSFIexGrid1.Col=5

MSFIexGridl.Text="备注”

ExitSub

setheaderror:

MsgBoxErr.Description

EndSub

PrivateSubForm_Llnload(CancelAsInteger)

firiduk=False

rs_data1.Close

rs_custom.Close

EndSub

PrivateSubMSFIexGrid1_Click()

OnErrorGoTogriderror

DimgetrowAsLong

getrow=MSFIexGridl.Row

IfMSFIexGridl.Rows=1Then

MsgBox"无相关记录[vbOKOnly+vbExclamation,""

Else

select_row=MSFIexGridl.TextMatrix(getrow,0)

EndIf

griderror:

IfErr.Number<>0Then

MsgBoxErr.Description

EndIf

EndSub

PublicSubshowdata()

WithMSFIexGrid2

.Rows=rs_data2.RecordCount+1

,Row-0

IfNotrsdata2EOFThen

rsdala2.MuveFirsl

DoWhileNotrs_data2.EOF

.Row=.Row+1

.Col=0

IfNotlsNull(rs_data2.Fields(0))Then.Text=rs_data2.Fields(0)Else.Text=""

.Col=1

IfNotlsNull(rsdata2.Fields(1))Then.Text=rsdata2.Fields(1)Else.Text=""

.Col=2

IfNotlsNull(rs_data2.Fields(2))Then.Text=rs_data2.Fields(2)Else.Text=""

.Col=3

IfNotlsNull(rs_data2.Fields(3))Then.Text=rs_data2.Fields(3)Else.Text=""

.Col=4

IfNotlsNull(rs_data2.Fields(4))AndCDbl(rs_data2.Fields(4))<0Then

.Text=-CDbl(rs„data2.Fields(4))

Else

.Text=rs_data2.Fields(4)

EndIf

.Col=5

IfNotlsNull(rs_data2.Fields(5))Then.Text=rs_data2.Fields(5)Else.Text=""

.Col=6

IfNotlsNull(rs_data2.Fields(6))Then.Text=rs_data2.Fields(6)Else.Text=""

.Col=7

IfNotlsNull(rs_data2Fields(7))AndCDbl(rs_data2Fields(4))v0Then

.Text=-CDbl(rs_dala2.Fields(7))

Else

.Text=rs_data2.Fields(7)

EndIf

.Col=8

IfNotlsNull(rs_data2.Fields(3))Then.Text=rs_data2.Fields(8)Else.Text=""

rsdata2.MoveNext

Loop

rs_data2.MoveLast

EndIf

EndWith

EndSub

(5)查询子窗体代码

查询子窗体是用来查询库房中图书资料明细的。其运行效果如图41所示。

图41查询f窗体运行效果

在列表框中给出编号或年月日后,“查询"按钮的Click事件将给出与数据库查找比较的结果。

PrivateSubCommand1_Click()

OnErrorGoTocmderror

Dimfind_date1AsString

Dimfind_date2AsString

IfOption1.Value=TrueTher

sqlfind="select,from图书资料where编号between_

Combo1(0).Text&"andCombo1(1).Text&

EndIf

IfOption2.Value=TrueTher

find_date1=Format(CDate(Comboy(0).Text&_

Combom(0).Text&&Combod(O).Text),"yyyy-mm-dd")

find_date2=Format(CDate(Comboy(1).Text&_

Combom(1).Text&&Combod(l).Text),"yyyy-mm-dd")

sqlfind="select,from图书资料where购买日期between#"&

find_date1&"#"&"and"&"#"&find_date2&"#"

EndIf

rs_data1.Opensqlfind,conn,adOpenKeyset,adLockPessimistic

frmdatamanage.displaygridl

UnloadMe

cmderror:

IfErr.Number<>0Then

MsgBoxErr.Description

EndIf

EndSub

运行查询子窗体时,组合框中就已经从数据库中提取了货单号和年月日两个待查条件。

DimiAsInteger

DimsqlAsString

Iffindok=TrueThen

rsdatal.Close

EndIf

sql="select*from图书资料orderby编号desc"

rsJind.CursorLocation=adUseClient

rsJind.Opensql,conn,adOpenKeyset,adLockPessimistic

IfrsJind.EOF=FalseThen,添加编号

Withrsjind

DoWhileNot.EOF

Combo1(0).Addltem.Fields(O)

Combo1(1).Addltem.Fields(O)

.MoveNext

Loop

EndWith

EndIf

Fori=2001To2005,添加尼

Comboy(O).Additemi

Comboy(1).Addltemi

Nexti

Fori=1To12,添加月

Combom(0).Addltemi

Combom(1).Addltemi

Nexti

Fori=1To31'添加口

Combod(0).Addltemi

Combod(1).Addltemi

Nexti

EndSub

咨询完毕后,输出查询结果,如图42所示。

(7)值班管理子窗体代码

值班管理子窗体的作用站把值班人员的时间安排形成列表。运行的值班管理子窗体如图44所示。

图44运行的值班管理子窗体

先定义连接数据库的变量:

OptionExplicit

DimrszhibanAsNewADODBRecordset

然后列出窗体部分的代倘。

PrivateSubcmdadd_Click()

OnErrorGoToadderror

Ifcmdadd.Caption="新增记录"Then'当此按钮的状态为为“增加记录”时

cmdadd.Caption=”确定"’按钮名称改“确定”

cmddel.En

温馨提示

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

评论

0/150

提交评论