安庆师范学院学报(自然科学版)
Journal of Anqing Teachers College (Natural Science )
Feb .2001Vol .7NO .1
用V B 开发电子阅览室收费系统
朱弋玮,刘 翔
(安徽师范大学图书馆, 安徽芜湖 241000)
摘 要:针对图书馆电子阅览室收费与管理麻烦这一现实问题,探索用VB 开发电子阅览室收费系统,该系统能提高管理效率,降低工作人员的劳动强度。
关键词:VB;数据库;条形码;控件
中图分类号:G 252.2 文献标识码:A 文章编号:1007-4260(2001)01-0050-05
1 引言
图书馆电子阅览室是现代化图书馆的重要组成部分。随着越来越多的图书馆计算机及网络环境的建立,各图书馆为了方便读者需求,纷纷建立了电子阅览室。但是收费管理问题相当麻烦,有的仍采用票据式的方法,这不但给读者造成不便也于现代化的图书馆很不相称。V B (M i-cr o so ft Visual Basic)即为数据库应用程序的开发提供了包括数据库管理器、数据库控件和数据库对象在内的一些功能强大的工具。利用这些工具可方便地编写出基于数据库的应用程序,可以方便的开发各种面向对象的应用系统。
2 系统功能及模块构成
当读者交付一定的费用后即为其帐户上增加一定的上机时间。读者上机时,只需要携带印有其帐户条形码的上机证即可。帐户由条形码识别机读出并从其帐户上扣除相应的本次上机时间。当读者帐户上的时间不足时,系统会提出警告乃至拒绝上机。当读者不慎遗失上机证,可为其挂失并办理新证,保证合法读者的继续使用。另外,本系统还具有上机时间统计功能,系统可以统计出任意天数内的上机时间、年报、月报,并具有直观的柱状图分析,使统计结果一目了然。本系统共分五大主要模块
2.1登录模块
登录模块是防止非法管理员擅自进入本管理系统。当程序被打开时自动加载本模块,要求管理员在下列表框中选择本人姓名后,在密码框输入密码。如果密码输入正确
则允许管理员进入本管理系统,相应的按钮可用,否则拒绝进入本管理系统,相应的按钮仍旧保持无效状态。如果以总管的身份登录则拥有最高的权限,如增加、删除管理员,统计上机时间。代码如下:O ption Compar e Database O ption Ex plicit Pr iv ate Sub Co mbo8
Aft erU pdate()
If N ot 管理员="总管"T hen
Comma nd1.Ena bled=F alse ’使按扭禁用Comma nd2.Ena bled=F alse Comma nd 3.Ena bled =F alse End If
M e.Recor dset Clone.FindF ir st "[管理员]='"&M e![Co mbo 8]&"'"
M e.Bo okmar k=M e.R eco rdsetClo ne.Boo kma rk T ex t 2.SetF ocus End Sub
Pr iv ate Sub Co mmand1Click()
'修改密码
Dim a A s Str ing ,b A s St ring ,c A s String
1a =InputBo x (" 请输入旧密码
If N ot a =""T hen If a =密码T hen
b =Input Bo x (" 请输入新密码
作者简介:朱戈玮(19-),女,江苏常州人,安徽师范大学图书馆馆员,从事图书馆管理工作。
基金项目:安徽师范大学青年科学基金资助
收稿日期:2000-11-09
If N ot b=""T hen
c=InputBox("请重新输入新密码以便检验新密码
If N ot c=""T hen
If b=c T hen
密码=c
M sgBox" 恭喜,"+管理员+"您已经成功起用新密码!
Else
M sgBox" 检验新密码不正确,请重新修改!
End If
Else
M sg Bo x" 密码不正确,请重新输入!
Go T o1
End If
End If
End If
End If
End Sub
'增加管理员
Pr iv ate Sub Co mmand2Click()
Dim a As Str ing,b A s St ring,c A s String
a=Input Bo x(" 请输入新管理员姓名
If N ot a=""T hen
1 b=InputBox(" 请输入密码
If N ot b=""T hen
c=InputBox("请重新输入密码以便检验新密码
If N ot c=""T hen
If b=c T hen
密码=c
M sg Box" 恭喜,您已经成功增加新管理员" +a,v bInfor matio n
Do Cmd.Go T oR ecor d,,acN ewR ec
管理员=a
密码=c
Else
M sgBox" 检验密码不正确,请重新输入密码!
G oT o1
End If
End I f
End If
Else
End If
M e.Refr esh
End Sub
'删除管理员
Pr iv ate Sub Co mmand3Click()
Dim a A s Str ing,d A s Boo lean,rst A s Recor dset
If N ot管理员="总管"T hen '禁止删除总管
a=管理员
d=Co nfir m("确认删除管理员"+a+"吗?")
If d=T r ue T hen
Set r st=M e.R ecor dsetClone
r st.F indF ir st"[管理员]='"&M e![Co mbo8]&"'"
r st.Delete
Combo8.Value=N u11
M e.Refr esh
r st.Close
M sg Bo x" 您已经成功删除管理员"+a,v bInfor ma-tio n
End I f
Eles
M sg Bo x" 您不能删除总管!
End Sub
Pr iv ate Sub Fo rm L o ad()
Comma nd1.Ena bled=F alse
Comma nd2.Ena bled=F alse
Comma nd3.Ena bled=F alse
Comma nd4.Ena bled=F alse
End Sub
Pr iv ate Sub T ex t2A fter U pdat e()
M e.R eco rdsetClo ne.F indF ir st"[管理员]='"&M e! [Co mbo8]&"'"
M e.Bo okmar k=M e.R eco rdsetClo ne.Boo kma rk
If T ext2.T ex t=密码T hen
M sg Bo x" "+管理员+"您已成功登陆本系统
Comma nd1.Ena bled=T rue
Comma nd4.Ena bled=T rue
If管理员="总管"T hen
Comm and2.Ena bled=T r ue
Comm and3.Ena bled=T r ue
End If
Else
・
51
・
第1期朱弋玮,刘翔:用V B开发电子阅览室收费系统M sgBox" 密码不对请重新输入!
End If
End sub
Pr iv ate Sub Co mmand4Click()
O n Er ro r G oT o Er r Co mmand4Click
Dim st DocN ame A s String
Dim st LindCriter ia A s St ring
stDo cN ame="电子阅览室管理"
Do Cm d.OpenFo rm stDo cNa me,,,stL inkCrit eria
Do Cm d.Close acF or m,"登陆电子阅览室管理系统" Ex it Com mand4Click:
Ex it Sub
Err Comm and4Click:
M sg Bo x Er r.Description
Resume Ex it Com mand4Click
End Sub
2.2增加读者与挂失模块
本模块的功能是增加新的上机证和对遗失的上机证挂失。本模块设计的关键是当用户单击增加读者按钮时自动产生一个不重复的新帐号,这一功能的实现关键是使用V B中的Rnd函数产生一个随机数作为帐号并使用F ind-fir st方法在帐号字段中查找是否有重复帐号,如果有重复执行上述过程直到没有重复帐号为止。当用户单击挂失按扭时将在证件状况字段自动记录挂失时间,记录挂失时间的目的不仅可以向管理员提供挂失的有关信息,更重要的是每当运行电子阅览室管理模块时,此模块会自动检测证件状况,字段是否写入挂失时间,如果写入将禁止使用该证,实现挂失目的。以下是这一过程的部分源代码。
Do Cmd.GoT oR eco rd,,acN ewR ec
Dim myv alue
Dim rst A s Recor dset
Set r st=Fo rms!增加客户与挂失.Recor dsetClone
I Rnd(2)
myv alue=I nt((999999-0+1)*Rnd+0)
rst.FindF ir st"帐号="&my value
If r st.N oM atch T hen
帐号=my value
Else
Go T o1
End If
2.3电子阅览室管理模块
因为本模块在日常使用中最为平凡,所以设计中力求让使用方法最为简便,在使用中管理员只需要两次使用手持式条形码识别器即可完成全部操作。读者上机时,当管理员用条形码识别器读出读者上机证上的条形码帐号后,本模块首先检查此证是否合法,包括此证是否挂失、帐号上的剩余时间是否充足,若该证已经挂失则显示一条消息通知管理员并拒绝使用,若帐号上的剩余时间不足则显示一条消息要求增加帐号上的时间。若条件满足则继续检查增加时间框中是否有要为此帐号增加的时间,若有则增加相应的时间并使用OpenRecor dset方法向增加时间表中记录增加的相应时间和执行此操作的管理员,同时记录读者上机的开始时间。读者下机时,管理员再次用条形码识别器读出读者上机证上的条形码帐号,本模块自动计算出读者的上机时间并从帐号中扣除。此模块设计的关键是采用多条嵌套的条件判断语句,需经过严密的构思才能保证正常的运行,部分代码如下。
If N o t证件状况="没有挂失"T hen
Dim s A s Str ing
s=证件状况
Beep
M sg Bo x s+
Comm and17.Enabled=F alse
增加时间=0
G oT o1
ElseI f No t增加时间.T ex t=0T hen
Dim x A s Dat e,z As Str ing,n A s St ring
Dim f As Boo lean
Dim dbsdzg l A s Database,r stdzg l A s Reco rdset
x=剩余时间
增加时间.SetFo cus
z=增加时间.T ext
n=姓名
Beep
f=Confir m("确认为客户"+n+"增加"+z+""+"分钟吗?")
If N o t f T hen
增加时间.SetFo cus
增加时间=0
G oT o1
Else
剩余时间=x+增加时间.T ex t
Set dbsdzgl=Cur r entD b()
Set r stdzg l=dbsdzgl.o penReco rdset("sjtj")
r st dzgl.AddN ew
r st dzgl!帐号=帐号
r st dzgl!姓名=姓名
r st dzgl!学号=学号
r st dzgl!系别=系别
・
52
・安庆师范学院学报(自然科学版)2001年r st dzgl!Index=Dat e
r st dzgl!增加时间=增加时间.T ex t
r st dzgl!输入时间=N ow
r st dzgl.U pdate
增加时间.Set Fo cus
增加时间=0
Go T o l
End lf
Elself N ot(1sN ull(开始时间))A nd No t(1sNull(上机时间))T hen
开始时间=N ull
上机时间=N ull
End If
If lsNull(开始时间)T hen
lf剩余时间<=1T hen
Beep
M sgBox"剩余时间过少,请增加时间!
开始时间=N ull
上机时间=N ull
Go T o1
Elself剩余时间<=60A nd剩余时间>1T hen
t=剩余时间
Beep
M sg Bo x" 注意:剩余时间只有"+t+"分钟!
开始时间=N ow
Else
开始时间=N ow
End If
Else
上机时间=N ow-开始时间
y=剩余时间
剩余时间=y-Ho ur(上机时间)*60-M inute(上机时间)
End lf
Else
Beep
M sg Bo x"您输入的帐号"+d+"没有找到!
T ex tZ H.SetFo cus
T ex tZ H=N u11
End If
2.4制作上机证模块
该模块的功能是制作读者的上机证。此模块设计的关键是将读者的帐号以条形码表示,以便于条形码识别器的识别。条形码的编码方法有多种,国内外较通用的有五取二码、五取三码和CO DE39码。本模块采用CODE39码,此码在国际上应用很广,它由5条线条和4个间隙构成一个九位二进制数。在这九位二进制数中,取三位为“1”,其余六位为“0”,故又称九中取三码。可表达:10个十进制数(0至9),26个英文字母,7个特殊符号和一个“空格”符,共44个字符。用COD E39码表示字符的格式为*数字*,数字前后的符号“*”是作为标记所表达信息的起始和终止的控制符。用A CCESS的报表设计器设计出证件的外观和相应字段的来源表,将帐号字段的字体设置为COD E39码字体(可用Windo ws9.X和W indow s2000的造字程序生成)操作系统并将表达式改为T r im("*"+ [帐号]+"*")即可。
2.5时间统计模块
此模块的功能是实现对任意一段时间范围内读者上机时间的统计。在此模块中使用M icr osoft Char t技术可使用诸如柱形图、饼图、XY散点图等二维、三维图形清晰直观地对读者上机时间按系别进行总量统计以及按日期进行统计。在V B中使用M icro so ft Char t contr ol6.0控件即可实现相应的功能。当用户每单击一次Command3按扭则变换一次图表显示方式,部分源代码如下。
O ption Ex plicit
'定义一个常数
Const Reco rdN umbeR=10
'定义模块级变量
Dim arr V alues(1T o5,1T o5)
Pr iv ate Sub Co mmand1Click()
Dim M ath A s Lo ng
Dim Phys A s L ong
Dim Chem A s L ong
Dim Chin A s L ong
Dim Fo re A s L ong
Dim number As Integ er
Dim sjsj A s String
Dim i A s Integer
'从数据库取出各系的合计上机时间
M at h=D ata1.Recor dset.F ields("数学系")
Phy s=Datal.R eco rdset.F ields("物理系")
Chem=Datal.R eco r dset.Fields("化学系")
Chin=Datal.R eco r dset.Fields("中文系")
F or e=Datal.R eco rdset.F ields("外语系")
sjsj=D atal.Reco rdset.F ields("上机时间")
'L abels
ar rV alues(1, 1)=sjsj
’Ser ies l values.
ar rV alues(2,2)=M ath
・
53
・
第1期朱弋玮,刘翔:用V B开发电子阅览室收费系统
’Ser ies 2v alues ar rV alues(3,3)=Phys ’Ser ies 3v alues ar rV alues(4,4)=Chin ’Ser ies 4v alues ar rV alues (5,5)=Fo re End Sub
Pr iv ate Sub Co mmand 2Click ()
’这段代码可以到利用M SChar 控件来
’绘制图表
’M SChar t 控件名为M SChartl M SChart 1.Char tDat a=arr V alues End Sub
Pr iv ate Sub Co mmand 3Click ()’选择图表类型,用户每单击一次则变换一种图表显示方
式。
If M SChar tl .chaJt T ype =10T hen M SChart l.char tT ype=0 Else
M SChar tl.cha rtT ype=M SChart 1.char tT y pe+1End lf End Sub
Pr iv ate Sub Co mmand4Click()
U nload M e End End Sub 3 结束语
该系统投入使用不但可大大提高电子阅览室的管理效率,而且降低了工作人员的劳动强度,实现了对电子阅览室的收费和日常运行的分开管理。
[参考文献]
[1] M icrosoft Corporation.M icrosoft Visual Basic 6.0程序指
南[M ].北京:北京希望电脑公司出品,1998.1491.
[2] M icrosoft Corporation.M icrosoft Visual Basic 6.0数据库
应用大全[M ].北京:北京希望电脑公司出品,1998.1912.[3] 清汉计算机工作室.M icros oft Visual Bas ic 6.0数据库开发
实例[M ].北京:机械工业出版社,2000.434.
C ompile the fees -collection system of electric reading room with microsoft visual basic
ZHU Yi-w ei,LIU Xiang
(Anhu i Normal University,W uhu 241000,China)
Abstract :Based on ex perience o f w or k,t he author pr obes into the develo pment of t he fees-collec-tion system o f electr onic r eading r oo m Keywords :V B;database;bar co de;activ ex
(上接第49页)
lf recT able(i).st rT blN ame=strT blN ame T hen r ecT able(i).blnChanged=Yes Ex it F or End lf N ext l End Sub
采用这种改进后的方案,对系统速度将不会产生明显的影
响。这种方案的缺点是,如果某个用户非正常退出,他对数据表的更改不会在表t blT a ble
U pdat e 中反映出来。
[参考文献]
[1] “M icrosoft Acces s 高级开发及技术库大全[M ].北京:人民
邮电出版社,曾凡奎.1996.12.
[2] “SQL Server 7.0数据库系统管理与应用开发”
[M ].北京:人民邮电出版社,袁鹏飞.1999.5.
The design and implementation of self -backup in the desktop database system
LIN Ji -cheng
(T he M ath.Dept.of Anqing T eachers College,Anqing 246011,China)
Abstract :In this ar ticle ,author described a new wa y which acco mplish data backup based o n dat a t able auto matically.T hen implemental method w as discussed in det ail.Keywords :database ;data backup ;aut omatica lly
・
54・安庆师范学院学报(自然科学版)2001年下载本文