图书租借系统.docx

上传人:b****5 文档编号:5984394 上传时间:2023-01-02 格式:DOCX 页数:53 大小:436.89KB
下载 相关 举报
图书租借系统.docx_第1页
第1页 / 共53页
图书租借系统.docx_第2页
第2页 / 共53页
图书租借系统.docx_第3页
第3页 / 共53页
图书租借系统.docx_第4页
第4页 / 共53页
图书租借系统.docx_第5页
第5页 / 共53页
点击查看更多>>
下载资源
资源描述

图书租借系统.docx

《图书租借系统.docx》由会员分享,可在线阅读,更多相关《图书租借系统.docx(53页珍藏版)》请在冰豆网上搜索。

图书租借系统.docx

图书租借系统

附加实例2——图书租赁系统

目前租书社与读书社,每天都要处理图书、读书会员、借书、还书等信息,并且需要将这些记录保存在数据库中。

手动记录这些数据会耗费大量时间,如果做一个程序通过电脑来管理会更方便、省时。

本章将详细介绍一个关于图书租赁的信息管理系统,逐步向读者演示如何通过VisualBasic实现管理信息系统。

2.1系统分析

一个完善的的图书租赁系统应包括除借书、还书外还要对图书信息及会员信息进行管理。

对这些信息的处理操作有添加记录、删除记录、修改记录等。

2.1.1功能需求分析

根据与图书租赁系统有关操作发生交互对象入手,可以分析出系统的功能需求有图书租赁管理、图书管理、会员管理、操作员管理。

1.图书租赁管理

图书租赁管理是本软件最常用的操作,其功能如下。

(1)外借图书:

向外租赁图书给会员,此操作需要记录会员信息、所借图书信息、及借阅时间。

(2)归还图书:

会员来读书社还书,此操作需要记录会员信息、所还图书及还书时间。

(3)租赁记录查询:

对会员所借及所还图书进行查询,此操作需要联合查询会员信息、图书信息、会员租赁记录,可完成显示全部借阅记录,或未还记录。

(4)租赁数据设定

对每本每天需要的租金进行设定。

2.图书管理

图书是图书租赁系统管理的目标对象,图书管理应包括查找图书、添加图书、删除图书、修改图书、显示全部图书等。

3.会员管理

会员是图书租赁系统的服务对象,只有对已存在系统中的会员才能提供图书租赁服务。

会员管理功能包括添加会员、删除会员、修改会员、查找会员、会员充值及会员记录查询等。

4.操作员管理

操作员是本系统的使用者,操作员必须输入用户名与密码才能登录系统进行各种操作,本功能应包括添加、删除操作员及密码设置及修改等功能,本例只有修改管理员密码的功能,系统中只有一个管理员用户,如果读者对此感受兴趣可自行添加其它功能。

2.1.2数据需求分析

为了实现图书租赁系统所需要的所有功能,图书租赁系统由六个表组成。

图书表保存图书信息,会员表保存会员信息,借书记录保存租赁记录,vipaccount表保存会员的帐号信息及现借书数量,loginaccount保存操作员信息包括操作员用户名和密码,zujin保存每天每本书的租金,会员帐号最低余额。

2.2系统设计

根据前面对系统功能需求及数据需求的分析,本节对这些功能模块及数据库存设计进行介绍。

2.2.1系统功能模块设计

系统功能模块由一个公用模块和若干子模块组成,公用模块是在其它几个子模块都能用到的一些功能,放到一个公用的模块中。

1.系统公用模块

系统公用模块名为module1,其中opendate过程负责连接数据库。

2.系统各子模块

图18-1系统各子模块的组成

按照各子模块的逻辑组成关系如图18-1所示。

其中图书租赁管理模块包括借书管理、还书管理、租赁记录查询及租赁数据设定;图书管理包括图书信息的添加、删除、修改等操作;会员管理包括会员信息的添加、删除、修改等;操作员管理信息。

2.2.2系统数据库设计

根据系统数据库需要分析,下面对我们需要的数据库表的设计进行详细介绍,我们使用SQLSERVER数据库,首先在SQLSERVER中使用在前面章节中介绍的方法创建图书租赁系统数据库,然后建立6个表,每个表的属性分别如表18-1至18-6所示。

表18-1图书表属性

字段名

字段说明

数据类型

字段大小

是否允许为空

默认值

bookno

图书编号

Char

5

Bookname

图书名称

Char

30

Booktype

图书类型

Char

10

Bookpubdate

出版日期

Char

10

Writer

作者

Char

6

Price

单价

Money

8

Bookintor

图书简介

Text

16

lended

是否被借出

Char

1

0

表18-2会员表属性

字段名

字段说明

数据类型

字段大小

是否允许为空

默认值

Id

会员编号

Char

5

Name

会员姓名

Char

6

Age

年龄

Char

3

Sex

性别

Char

2

Addr

联系地址

Char

50

Mbphone

手机

Char

11

Tele

电话

Char

12

表18-3借书记录表属性

字段名

字段说明

数据类型

字段大小

是否允许为空

默认值

Vipid

会员编号

Char

5

Bookno

图书编号

Char

5

Lendeddate

借出日期

Char

10

Returned

是否归还

Char

1

0

returneddate

归还日期

Char

10

表18-4vipaccount表属性

字段名

字段说明

数据类型

字段大小

是否允许为空

默认值

Id

会员编号

Char

5

Pass

密码

Char

11

Account

帐户余额

Money

8

0

Bkamount

借书数量

Char

3

0

表18-5loginaccount表属性

字段名

字段说明

数据类型

字段大小

是否允许为空

默认值

Users

用户

Char

11

Pass

密码

Char

11

表18-6zujin表属性

字段名

字段说明

数据类型

字段大小

是否允许为空

默认值

Zujin

每本第天租金

Money

8

1

Mini

会员账户最低余额

Money

8

2.3系统实现

按照上面的需求分析我们创建了程序所需要的数据库和表,下面我们来看程序的实现部分,即如何通过VB编程访问上面那些表和实现上面所述的图书租赁系统所需要的功能。

2.3.1新建工程

打开VisualBasic出现VB新建工程向导如图18-2所示,选择标准EXE工程并打开。

进入IDE开发环境。

图18-2新建工程向导

2.3.2创建公用模块和登录模块

(1)将默认窗体“form1”改为“frmlogin”。

添加一个标准模块Module1添加步骤为:

选择【工程】→【添加模块】菜单命令,然后在打开的“添加模块”对话框中单击【打开】按钮,这时工程资源管理器如图18-3所示。

图18-3添加标准模导块

(2)添加标准模块代码如下:

PubliccnAsNewADODB.Connection

PublicrsAsNewADODB.Recordset

PublicSubopendata()

cn.Open"Provider=SQLOLEDB.1;PersistSecurityInfo=False;UserID=sa;pwd=;InitialCatalog=图书租赁系统;DataSource=(local)"

EndSub

标准模块中定义了cn(数据库连接)和rs(记录集)两个公用变量及opendata过程。

Opendata过程用来打开数据库连接。

(3)双击工程资源管理器窗体中的frmlogin,打开登录窗体,设计登录窗体界面如图18-4所示。

图18-4登录窗体界面

登录窗体的负责操作员使用本系统时的密码校验,必须输入正确密码才能使用本系统。

管理员帐号保存在loginaccount表中,建表时添加一条记录users和pass的值都为“admin”

(4)编写登录窗体代码:

确定按钮代码:

PrivateSubCommand1_Click()

IfLen(Text1.Text)>0Then

DimsqlstrAsString

sqlstr="select*fromloginaccountwhereusers='"&Text1.Text&"'"

rs.Opensqlstr,cn,adOpenDynamic,adLockOptimistic

Ifrs.RecordCount>0Then

IfText2.Text=Trim(rs.Fields

(1).Value)Then

frmmain.Show

UnloadMe

Else

MsgBox("密码错误")

EndIf

Else

MsgBox("没有此用户")

EndIf

rs.Close

Else

MsgBox("请输入用户")

EndIf

EndSub

Sql变量为字符串型变量,用来保存SQL语句。

“&”为字符串连接符。

rs的open方法返回一个记录集,这个记录集保存在rs中,open方法的用法请参考前面章节的内容介绍。

Frmmain.show调用主窗体。

unload语句可以将窗体或控件从内存中卸载,恢复内存空间,me是指自己也就是登录窗体。

取消按钮代码:

PrivateSubCommand2_Click()

End

EndSub

用户单击取消按钮时会结束程序运行。

窗体加载时代码:

PrivateSubForm_Load()

rs.CursorLocation=adUseClient

rs.CursorType=adOpenStatic

opendata

EndSub

窗体加载时打开数据连接,CursorLocation定义定义游标类型为客户端型,CursorType指示当从指定的查询中打开一个结果集时所使用的游标缺省类型adOpenStatic为只读。

2.3.3创建主窗体frmmain.frm

选择【工程】→【添加窗体】菜单命令,打开“添加窗体”对话框,如图18-5所示。

图18-5“添加窗体”对话框

直接单击对话框中的【打开】按钮,创建了一个窗白窗体,由于程序使用了SSTAB控件。

首先引入此控件,此控件的文件名为TABCTL32.OCX。

选择【工程】→【部件】菜单命令,打开“部件”对话框,如图18-6所示。

有时系统中找不到此文件,本例提供了此文件,位于“光盘\chap18\”文件夹中,单击图18-6中的【浏览】按钮,找到该文件夹选中“TABCTL32.OCX”,单击【打开】按钮,返回到“部件”对话框,单击【确定】按钮,此时工具箱中添加了SSTab控件,图标为“

”。

图18-6添加SStab控件到工具箱

在新建窗体中放置一个Sstab控件,如图18-7所示。

图18-7在窗体中添加SSTab控件

在此控件上单击右键将打开一个菜单,在打开的菜单上左键单击【属性】菜单命令后打开如图18-8所示的属性页

图18-8SSTab控件的属性页

将TabCount(页面个数)和TabsPerRow(每行页数)都设为4并单击【应用】按钮,然后单击CurrentTab后面的“<>”两个按钮,可在0至3之间前后翻页。

从第一个到第四个依次改变它们的TabCaption属性值为“图书租赁管理”、“图书管理”、“会员管理”、“操作员管理”设计完如图18-9所示。

图18-9SSTab控件设置完后界面

添加主窗体菜单,按Ctrl+E快捷键打开“菜单编辑器”对话框,如图18-10所示。

图18-10“菜单编辑器”对话框

主窗体菜单属性如表18-7所示。

表18-7主窗体菜单属性表

标题

名称

属性

图书租赁系统

Mzl

主菜单

借书管理

Mlend

一级子菜单

还书管理

Mreturn

一级子菜单

租赁记录查询

Mseek

一级子菜单

租赁数据设定

Minfo

一级子菜单

图书管理

Mbk

主菜单

查找图书

Mbkseek

一级子菜单

添加图书

Mbkadd

一级子菜单

删除图书

Mbkdel

一级子菜单

编辑图书

Mbkedit

一级子菜单

显示全部数据

Mshowallbk

一级子菜单

会员管理

Mvip

主菜单

添加

Mvipadd

一级子菜单

删除

Mvipdel

一级子菜单

编辑

Mvipedit

一级子菜单

查找会员

Mvipseek

一级子菜单

会员充值

Mvipincharge

一级子菜单

修改密码

Mchgpass

一级子菜单

显示全部

Mshowallvip

一级子菜单

操作员管理

Mop

主菜单

修改管理员密码

Mchgadminpass

一级子菜单

关于

Mabout

主菜单

2.3.4创建图书租赁模块

图书租赁模块是本系统中使用最频繁的模块,具体的创建步骤如下:

(1)在SSTab控件第一页添加四个命令按钮,分别命名为cmdlend、cmdreturn、cmdseek、cmdinfo,对应的caption属性分别为借书管理、还书管理、租赁记录查询、租赁数据设定,如图18-11所示。

图18-11图书租赁管理模块

(2)编写【辑借书管理】按钮代码如下:

PrivateSubcmdlend_Click()

frmlend.Show

EndSub

Frmlend.show命令可以打开借书管理窗体(frmlend.frm)。

(3)创建借书管理窗体。

选择【工程】→【添加窗体】菜单命令打开“添加窗体”对话框,单击该对话框中的【打开】按钮添加一个新窗体,将其名称改为“frmlend”。

在借书管理窗体中放置数个标签、文本框和按钮,设计的界面如图18-12所示。

图18-12借书管理窗体

借书管理窗体主要控件的属性设置如表18-8所示。

表18-8借书管理窗体主要控件属性

对象

属性

说明

Form

名称

Frmmain

窗体名称

Caption

借书管理系统

窗体标题

Text

名称

Txtvipid

会员编号

名称

Txtvipname

会员姓名

名称

Txtbkamount

已借图收量

名称

Txtbkno

图书编号

名称

Txtbkname

图书名称

名称

Txtbktype

图书类型

名称

Txtpubdate

出版日期

CommandButton

名称

Cmdlend

按钮名称

Caption

借出

按钮标题

名称

Cmdrelend

按钮名称

Caption

重借

按钮标题

名称

Cmdend

按钮名称

Caption

退出

按钮标题

(4)编写借书管理窗体代码:

借出命令按钮代码

PrivateSubcmdlend_Click()

Iftxtvipid.Text=""Ortxtbkno.Text=""Then

‘判断会员编号和图书编号是否为空

MsgBox("请填写完整信息")

txtvipid.SetFocus

Else

IfMsgBox("信息无误,同意借出吗?

",vbYesNo)=vbYesThen

Setrs=Nothing

rs.CursorLocation=adUseClient

rs.Open"select*from图书表wherebookno='"&txtbkno.Text&"'",cn,adOpenDynamic,adLockOptimistic

Ifrs.Fields!

lended="1"Then

txtbkno.Text=""

txtbkname.Text=""

txtbktype.Text=""

txtpubdate.Text=""

MsgBox("此书已借出!

")

txtbkno.SetFocus

ExitSub

EndIf

Setrs=Nothing

rs.Open"select*fromvipaccountwhereid='"&txtvipid.Text&"'",cn,adOpenDynamic,adLockOptimistic

IfTrim(rs.Fields!

pass)<>Trim(InputBox("请输入读者的会员密码:

"))Then

MsgBox("读者的密码有误,对不起不能借给读者书")

ExitSub

EndIf

Setrs=Nothing

sqlstr="updatevipaccountsetbkamount=bkamount+1whereid='"&txtvipid.Text&"'"

rs.Opensqlstr,cn,adOpenDynamic,adLockOptimistic

Setrs=Nothing

rs.Open"update图书表setlended='1'wherebookno='"&txtbkno.Text&"'",cn,adOpenDynamic,adLockOptimistic

Setrs=Nothing

sqlstr="insertinto借书记录(vipid,bookno,lendeddate)values('"&txtvipid.Text&"','"&txtbkno.Text&"','"&Date&"')"

rs.Opensqlstr,cn,adOpenDynamic,adLockOptimistic

MsgBox("借出成功!

")

UnloadMe

EndIf

EndIf

EndSub

Setfocus方法设定哪个控件具有焦点。

VbYesNo定义消息框显示的提示按钮为“是”和“否”。

Setrs=nothing语句将rs变量从内存中卸载,同时关闭以前打开的记录集。

rs.fields!

lended引用lended字段返回lended字段的值,若lended字段值为1时说明此书已借出,退出过程,停止借出,如果为0继续借出,借出前要求会员输入密码,会员密码保存在vipaccount表中,密码不正确时退出过程,如果密码校验成功则更新vipaccount表中的bkamount字段,即会员未还图书的数量加1,并将图书表中借出图书的lended字段的值更新为1,同时在借书记录表中插入一条借书记录。

重借按钮代码:

PrivateSubcmdrelend_Click()

txtvipid.Text=""

txtvipname.Text=""

txtbkamount.Text=""

txtbkno.Text=""

txtbkname.Text=""

txtbktype.Text=""

txtpubdate.Text=""

txtvipid.SetFocus

EndSub

此过程负责清空填写的所有信息,并使txtvip获得焦点。

退出按钮代码:

PrivateSubcmdend_Click()

UnloadMe

EndSub

此过程很简单调用unload语句卸载借书管理窗体,me代表当前窗体。

(5)编写图18-11中的【还书管理】按钮代码如下:

PrivateSubtxtreturn_Click()

frmreturn.Show

EndSub

Frmreturn.show命令可以打开还书管理窗体(frmreturn.frm)。

(6)创建归还图书窗体。

选择【工程】→【添加窗体】菜单命令将打开“添加窗体”对话框,直接单击该对话框中的【确定】按钮后,添加一个新窗体,将其名称改为“frmreturn”,在窗体中放置数个文本标签、文本框和按钮,如图18-13所示。

窗体中主要控件的属性设置如表18-9所示。

图18-13归还图书窗体

表18-9归还图书窗体的主要控件属性表

对象

属性

说明

Form

名称

Frmreturn

窗体名称

Caption

归还图书

窗体标题

Text

名称

Txtvipid

会员号

名称

Txtvipname

会员姓名

名称

Txtbkamount

已借图书量

名称

Txtbkno

图书编号

名称

Txtbkname

图书名称

名称

Txtbktype

图书类型

名称

Txtbkpubdate

出版日期

CommandButton

名称

Cmdreturn

按钮名称

Caption

归还

按钮标题

Name

Cmdrereturn

按钮名称

Caption

续还

按钮标题

Nam

Cmdexit

按钮名称

Caption

退出

按钮标题

(7)编写归还窗体代码:

归还按钮代码:

PrivateSubcmdreturn_Click()

DimdaysAsInteger

DimmoneyAsSingle

Iftxtvipid.Text=""Ortxtbkno.Text=""Then

MsgBox("请填写完整信息")

txtvipid.SetFocus

Else

Setrs=Nothing

rs.CursorLocation=adUseClient

sqlstr="select*from借书记录wherevipid='"&txtvipid.Text&"'andbookno='"&txtbkno.Text&"'andreturned='0'"

rs.Opensqlstr,cn,adOpenDynamic,adLockOptimistic

Ifrs.RecordCount>0Then

days=Date-CDate(rs.Fields!

lendeddate)

Ifdays=0Thendays=1

Setrs=Nothing

rs.Open"select*fromzujin",cn,adOpenDynamic,adLockOptimistic

money=days*rs.Fields(0).Value

IfMsgBox("信息无误,同意借出吗?

",vbYesNo)=vbYesThen

Setrs=Nothing

rs.Open"update图书表setlended='0'wherebookno='"&txtbkno.Text&"'",cn,adOpenDynamic,adLockOptimistic

Setrs=Nothing

rs.Open"updatevipaccountsetbkamount=bkamount-1,account=account-"&money&"whereid='"&txtvipid.Text&"'",cn,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1