SQL+VB图书管理系统数据库+源代码+论文本图书管理系统是针对各学校的小型图书馆而开发的,能够实现小型图书馆管理方面的一些简单功能。当然,由于软件开发过程中的一些原因,软件中不可避免的存在一些问题,可能不能真正的满足您的需求。图书管理系统项目进程 时间 设计的主题名称 设计者 数据库设计 2008-12-11 主窗体(frm_main)设计 (星期四) 基础设置 读者信息管理设计 2008-12-18 图书信息管理设计 (星期四) 图书罚款管理设计 报表管理设计、测试并维护该系统 2008-12-25 系统管理设计、测试并维护该系统 (星期四) 帮助设计、测试并维护该系统 说明:本计划只列出大体框架设计,具体的设计由设计者自行安排,但在计划时间内必须完成任务。论文答辩提纲一、本图书管理系统的主要功能 (一)基础设置 1、图书征订设置 图书征订设置主要实现图书征订方面的一些基本信息,能够查看图书征订信息并实现对其的一些基本功能操作,如图书征订的添加、修改、删除和查询。在查询中,可以从所有图书征订信息、征订编号、图书方面进行查询,若未选择查询的信息或选择出错,将提示选择错误信息。 2、出版社信息设置 该菜单项主要实现对图书出版社信息的一些信息,能够查看出版社信息并实现对其的一些基本功能操作,如出版社的添加、修改、删除。 3、图书注销设置 图书注销设置主要实现对图书注销的一些信息,能够查看图书注销信息并实现对其的一些基本功能操作,主要是图书的破损和丢失方面,如图书注销的添加、修改、删除。 (二)图书信息管理 1、图书信息设置 图书信息设置主要实现图书信息的一些基本功能,如图书信息查询、删除、修改、更新等。查询可从图书ID、图书名称、图书类型以及所有图书信息。修改和删除操作主要通过输入图书ID或图书名称来进行一系列修改及删除。 2、图书借阅信息管理 图书借阅信息管理主要实现图书借阅信息查询和图书借阅、续借及还书设置的操作。 图书借阅信息查询是通过两大方面:输入图书ID或书名,输入借书证号或读者姓名。 3、图书类型设置 图书类型设置主要实现图书类型的一些基本功能,如图书类型删除、修改、更新等。 (三)读者信息管理 读者信息管理有以下操作:读者信息查询、读者信息更新、膝盖、删除。 (四)、图书罚款管理 关于图书罚款的操作如图书丢失罚款的设置、图书国企罚款的设置等。 (五)、报表管理 报表管理主要打印图书和读者的一些基本信息。 三、系统管理 本系统管理分为管理员和操作员,管理员主要维护本系统,定时检测系统。操作员实现系统的功能操作,如图书信息征订、读者信息管理、借阅续借还书等操作437
SQL+VB图书管理系统(数据库+源代码+论文)1、课程设计目的随着学校的图书馆规模不断扩大,学校对于图书管理的功能需求也相应增强,有关图书、读者的各种信息量也成倍增长。为了提高图书管理工作的效率,实现信息的规范管理、科学统计和快速查询,需要设计一个图书管理系统。2、课程设计题目和要求2.1 课程设计题目图书管理系统2.2 课程设计要求(1)界面设计要求尽量友好、美观,应提供登录界面,并考虑用户权限问题;(2)对各种信息应提供录入、修改、删除和查询功能;(3)具有对图书的基本信息和借阅信息进行统计的功能;(4)具有数据备份与恢复等功能;(5)能够新增、修改和删除用户信息,图书信息,读者信息等;(6)能够按用户的要求生成图书信息报表和读者信息报表。
3、课程设计报告内容3.1系统设计3.1.1 系统功能分析根据对我院图书馆及图书信息进行的调查和分析,图书管理系统应该具有以下功能:①图书馆中图书征订、出版社信息、图书注销信息的录入、修改、删除和查询。②读者基本信息的的录入、修改、删除、查询和统计。③图书管理信息的录入、修改、删除和查询。④图书借阅、归还、续借、逾期罚款的录入、修改、删除、查询和统计。⑤系统用户信息的录入、修改、删除和查询。⑥系统数据的备份和恢复3.1.2 系统功能模块设计对系统功能分析中的各项功能进行集中、分块,按照结构化程序设计的要求,得到如下图所示的系统功能模块图。3.2数据库设计3.2.1 数据库需求分析根据对我院图书馆及图书信息进行的调查和分析,系统中各种功能所需的数据项和数据结构如下:①图书征订信息:征订编号、图书ID、订购者、备注等;②出版社信息:出版社编号、出版社名称、出版社地址、e_mail等;③图书注销信息:注销编号、图书ID、注销时间、操作员等;④读者基本信息:读者编号、借书证号、读者姓名、读者性别、民族、政治面貌、出生年月、读者类别、家庭住址、相片等;⑤读者类别信息:读者类别编号、读者类别、可借书数、可续借次数等⑥图书信息:条形码、图书ID、图书名称、状态、作者、图书类型、借出量、现存量、操作员、内容简介等;⑦图书类型信息:类型编号、图书类型、可借天数等; ⑧图书借阅信息:借书编号、图书ID、借书证号、备注等;⑨图书丢失信息:丢失编号、图书ID、读者编号、操作员、是否赔偿等;⑩用户信息:用户名、密码、用户权限、备注等。3.2.2 数据库逻辑结构设计 根据数据库需求分析,本系统的数据库逻辑结构设计如下。①读者信息设计 ②读者类别信息设计 ③图书注销信息设计 ④图书征订信息设计 ⑤图书借阅信息设计 ⑥图书信息设计
SQL+VB图书信息管理系统论文⑦用户信息设计 ⑧图书归还信息设计 3.3 界面设计3.3.1 系统主界面设计 3.3.2 图书征订设置界面设计 其中“新增”记录和“修改”记录界面相同,设计如下:
注:出版社设置界面设计、图书注销设置界面设计与图书征订设置界面设计类似,在此略。3.3.3 图书信息管理界面设计1.图书信息查询选项界面与查询结果显示界面设计 注:其中,“读者信息查询”与此界面相似,故在此略。2.图书信息修改和删除过滤界面设计 注:其中,“读者信息修改与删除”界面与此界面相似,故在此略。3.图书信息更新结果显示界面设计 其中“新增”记录界面相同,设计如下: 注:其中,“读者信息新增”界面与此界面相似,故在此略。3.3.4 图书借阅界面设计1.图书借阅查询界面设计
SQL+VB图书管理系统(数据库+源代码+论文)注:其中图书逾期罚款查询、图书丢失罚款查询界面设计和图书借阅信息查询界面设计相同,故在此略。2.借书还书续借界面设计 其中,“借书新增”和“续借新增”界面相同,界面设计如下: 注: “归还新增”界面与其相似,故在此略。3.3.5 读者管理界面设计 “读者类别查询”界面设计如下: 注:其中,“图书类型查询”界面与此界面公用,故在此略。3.3.6 用户信息界面设计 3.4 代码设计3.4.1 标准模块代码设计 Public strcnn As StringPublic strfind As StringPublic adocnn As New ADODB.ConnectionPublic adorst As New ADODB.RecordsetType Login yhqx As String yhm As String End TypePublic yh_login As LoginPublic Sub ShowData(sql As String, ctr As Control)Dim cnn As New ADODB.ConnectionDim rst As New ADODB.RecordsetDim i As Integer, j As Integer, k As Integercnn.Open strcnnrst.Open sql, cnn, adOpenStatic, adLockReadOnlyWith ctr.Rows = rst.RecordCount + 1.Cols = rst.Fields.CountFor i = 0 To .Cols - 1 .TextMatrix(0, i) = rst.Fields(i).NameNext iFor j = 1 To .Rows - 1 For k = 0 To .Cols - 1 .TextMatrix(j, k) = rst.Fields(k).Value & "" Next k rst.MoveNextNext jrst.Closecnn.CloseEnd WithEnd SubPublic Function Update(sql As String) As LongDim cnn As New ADODB.ConnectionDim cmd As New ADODB.CommandOn Error GoTo labcnn.Open strcnncnn.BeginTranscmd.ActiveConnection = cnncmd.CommandType = adCmdTextcmd.CommandText = sqlcmd.Executecnn.CommitTranscnn.CloseUpdate = ErrExit Functionlab:If cnn.State = 1 Then cnn.RollbackTrans cnn.CloseEnd IfMsgBox Err.DescriptionUpdate = ErrEnd FunctionPublic Sub PanDuan() Dim sql As String, sql1 As String, strSql1 As String Dim strSql2 As String, strSql3 As String, strSql4 As String If Frm_jhx.Txt_txm.Text <> "" And Frm_jhx.Txt_tsid.Text <> "" And Frm_jhx.Txt_tsmc.Text <> "" _ And Frm_jhx.Txt_dzlb.Text <> "" And Frm_jhx.Txt_dzxm.Text <> "" And Frm_jhx.Txt_jszh.Text <> "" Then If Frm_jhx.Cmd_jhxs.Caption = "借出此书" Then If MsgBox("是否借出此书?", vbOKCancel + vbQuestion, "询问") = vbOK Then sql = "select * from 图书借阅 where 借书证号='" + Trim(Frm_jhx.Txt_jszh.Text) + "'" ShowData sql, Frm_jhx.MSFlexGrid1 Frm_jhx.StatusBar1.Panels(1).Text = "总共有" & Frm_jhx.MSFlexGrid1.Rows - 1 & "条记录" strSql1 = "select 状态 from 图书信息 where 图书ID='" + Trim(Frm_jhx.Txt_tsid.Text) + "'" ShowData strSql1, Frm_data2.MSFlexGrid2 If Trim(Frm_data2.MSFlexGrid2.TextMatrix(Frm_data2.MSFlexGrid2.Row, 0)) = "借出" Then MsgBox "此书籍库存量为0不可借!", vbOKOnly + vbInformation, "信息" Exit Sub End If Frm_data2.MSFlexGrid2.Clear Frm_data2.MSFlexGrid2.Cols = 2 Frm_data2.MSFlexGrid2.Rows = 2 strSql2 = "select * from 图书罚款 where 图书ID='" + Trim(Frm_jhx.Txt_tsid.Text) + "'" ShowData strSql2, Frm_data2.MSFlexGrid2
SQL+VB图书管理系统(数据库+源代码+论文) If Trim(Frm_data2.MSFlexGrid2.TextMatrix(Frm_data2.MSFlexGrid2.Row, 6)) = "否" Then MsgBox "此书籍逾期欠款,请先交款!", vbOKOnly + vbInformation, "信息" Frm_yqjk.Show 1 Exit Sub End If Frm_data2.MSFlexGrid2.Clear Frm_data2.MSFlexGrid2.Cols = 2 Frm_data2.MSFlexGrid2.Rows = 2 strSql3 = "select * from 图书丢失 where 图书ID='" + Trim(Frm_jhx.Txt_tsid.Text) + "'" ShowData strSql3, Frm_data2.MSFlexGrid2 If Trim(Frm_data2.MSFlexGrid2.TextMatrix(Frm_data2.MSFlexGrid2.Row, 7)) = "否" Then MsgBox "此书籍丢失未赔偿,请先赔偿!", vbOKOnly + vbInformation, "信息" Frm_dspc.Show 1 Exit Sub End If Frm_data2.MSFlexGrid2.Clear Frm_data2.MSFlexGrid2.Cols = 2 Frm_data2.MSFlexGrid2.Rows = 2 strSql4 = "select * from 读者信息 where 借书证号='" + Trim(Frm_jhx.Txt_jszh.Text) + "'" ShowData strSql4, Frm_data2.MSFlexGrid2 If Trim(Frm_data2.MSFlexGrid2.TextMatrix(Frm_data2.MSFlexGrid2.Row, 7)) = "普通读者" And Frm_jhx.MSFlexGrid1.Rows = 4 Then MsgBox "该读者借书数量已达到上限!", vbOKOnly + vbInformation, "信息" Exit Sub ElseIf Trim(Frm_data2.MSFlexGrid2.TextMatrix(Frm_data2.MSFlexGrid2.Row, 7)) = "高级读者" And Frm_jhx.MSFlexGrid1.Rows = 6 Then MsgBox "该读者借书数量已达到上限!", vbOKOnly + vbInformation, "信息" Exit Sub End If Frm_tsjyxz.Caption = "图书借阅新增" Frm_tsjyxz.Toolbar1.Buttons(3).Caption = "确认借书" Frm_tsjyxz.Show 1 End If End If If Frm_jhx.Cmd_jhxs.Caption = "归还此书" Then If MsgBox("是否归还此书?", vbOKCancel + vbQuestion, "询问") = vbOK Then sql = "select * from 图书归还 where 图书ID='" + Frm_jhx.Txt_tsid.Text + "'" ShowData sql, Frm_jhx.MSFlexGrid1 Frm_jhx.StatusBar1.Panels(1).Text = "总共有" & Frm_jhx.MSFlexGrid1.Rows - 1 & "条记录" strSql1 = "select * from 图书借阅 where 图书ID='" + Trim(Frm_jhx.Txt_tsid.Text) + "'" ShowData strSql1, Frm_data2.MSFlexGrid2 If Frm_data2.MSFlexGrid2.TextMatrix(Frm_data2.MSFlexGrid2.Row, 0) = "借书编号" Then MsgBox "您未借阅此图书!", vbOKOnly + vbInformation, "信息" Frm_jhx.MSFlexGrid1.Clear Frm_jhx.MSFlexGrid1.Cols = 2 Frm_jhx.MSFlexGrid1.Rows = 2 Frm_jhx.StatusBar1.Panels(1).Text = "总共有0条记录" Exit Sub Else Frm_tsghsz.Show 1 End If End If End If If Frm_jhx.Cmd_jhxs.Caption = "续借此书" Then If MsgBox("是否续借此书?", vbOKCancel + vbQuestion, "询问") = vbOK Then sql = "select * from 图书借阅 where 借书证号='" + Trim(Frm_jhx.Txt_jszh.Text) + "'" ShowData sql, Frm_jhx.MSFlexGrid1 Frm_jhx.StatusBar1.Panels(1).Text = "总共有" & Frm_jhx.MSFlexGrid1.Rows - 1 & "条记录" strSql1 = "select * from 图书借阅 where 图书ID='" + Trim(Frm_jhx.Txt_tsid.Text) + "'" ShowData strSql1, Frm_data2.MSFlexGrid2 If Frm_data2.MSFlexGrid2.TextMatrix(Frm_data2.MSFlexGrid2.Row, 0) = "借书编号" Then MsgBox "您未借阅此图书!不能续借!", vbOKOnly + vbInformation, "信息" Frm_jhx.MSFlexGrid1.Clear Frm_jhx.MSFlexGrid1.Cols = 2 Frm_jhx.MSFlexGrid1.Rows = 2 Frm_jhx.StatusBar1.Panels(1).Text = "总共有0条记录" Exit Sub End If strSql1 = "select 状态 from 图书信息 where 图书ID='" + Trim(Frm_jhx.Txt_tsid.Text) + "'" ShowData strSql1, Frm_data2.MSFlexGrid2
SQL+VB图书信息管理系统论文 If Trim(Frm_data2.MSFlexGrid2.TextMatrix(Frm_data2.MSFlexGrid2.Row, 0)) = "借出" Then MsgBox "此书籍库存量为0不可借!", vbOKOnly + vbInformation, "信息" Exit Sub End If Frm_data2.MSFlexGrid2.Clear Frm_data2.MSFlexGrid2.Cols = 2 Frm_data2.MSFlexGrid2.Rows = 2 strSql2 = "select * from 图书罚款 where 图书ID='" + Trim(Frm_jhx.Txt_tsid.Text) + "'" ShowData strSql2, Frm_data2.MSFlexGrid2 If Trim(Frm_data2.MSFlexGrid2.TextMatrix(Frm_data2.MSFlexGrid2.Row, 6)) = "否" Then MsgBox "此书籍逾期欠款,请先交款!", vbOKOnly + vbInformation, "信息" Frm_yqjk.Show 1 Exit Sub End If Frm_data2.MSFlexGrid2.Clear Frm_data2.MSFlexGrid2.Cols = 2 Frm_data2.MSFlexGrid2.Rows = 2 strSql3 = "select * from 图书丢失 where 图书ID='" + Trim(Frm_jhx.Txt_tsid.Text) + "'" ShowData strSql3, Frm_data2.MSFlexGrid2 If Trim(Frm_data2.MSFlexGrid2.TextMatrix(Frm_data2.MSFlexGrid2.Row, 7)) = "否" Then MsgBox "此书籍丢失未赔偿,请先赔偿!", vbOKOnly + vbInformation, "信息" Frm_dspc.Show 1 Exit Sub End If Frm_data2.MSFlexGrid2.Clear Frm_data2.MSFlexGrid2.Cols = 2 Frm_data2.MSFlexGrid2.Rows = 2 strSql4 = "select * from 读者信息 where 借书证号='" + Trim(Frm_jhx.Txt_jszh.Text) + "'" ShowData strSql4, Frm_data2.MSFlexGrid2 If Trim(Frm_data2.MSFlexGrid2.TextMatrix(Frm_data2.MSFlexGrid2.Row, 7)) = "普通读者" And Frm_jhx.MSFlexGrid1.Rows = 4 Then MsgBox "该读者借书数量已达到上限!", vbOKOnly + vbInformation, "信息" Exit Sub ElseIf Trim(Frm_data2.MSFlexGrid2.TextMatrix(Frm_data2.MSFlexGrid2.Row, 7)) = "高级读者" And Frm_jhx.MSFlexGrid1.Rows = 6 Then MsgBox "该读者借书数量已达到上限!", vbOKOnly + vbInformation, "信息" Exit Sub End If Frm_tsjyxz.Caption = "图书续借新增" Frm_tsjyxz.Toolbar1.Buttons(3).Caption = "确认续借" Frm_tsjyxz.Show 1 End If End If End IfEnd SubPublic Sub MoveFirst(ctr As Control)With ctr .Row = 1 .Col = 0 .RowSel = .Row .ColSel = .Cols - 1End WithEnd Sub
Public Sub MovePre(ctr As Control)With ctr If .Row > 1 Then .Row = .Row - 1 .Col = 0 .RowSel = .Row
SQL+VB图书信息管理系统论文 .ColSel = .Cols - 1 End IfEnd WithEnd SubPublic Sub MoveNext(ctr As Control)With ctr If .Row < .Rows - 1 Then .Row = .Row + 1 .Col = 0 .RowSel = .Row .ColSel = .Cols - 1 End IfEnd WithEnd SubPublic Sub MoveLast(ctr As Control)With ctr .Row = .Rows - 1 .Col = 0 .RowSel = .Row .ColSel = .Cols - 1End WithEnd SubPublic Sub Main()strcnn = "provider=sqloledb.1;integrated security=sspi;database=tushu"frm_login.ShowEnd Sub3.4.2 图书征订设置界面代码设计Private Sub Form_Load() Dim sql As String sql = "select * from 图书征订" ShowData sql, Me.MSFlexGrid1 Me.MSFlexGrid1.ColAlignment(0) = flexAlignCenterCenter Me.MSFlexGrid1.ColWidth(1) = 1000 Me.MSFlexGrid1.ColWidth(2) = 1500 Me.MSFlexGrid1.ColWidth(3) = 1500 Me.MSFlexGrid1.ColWidth(10) = 2500 Me.StatusBar1.Panels(1).Text = "总共有" & Me.MSFlexGrid1.Rows - 1 & "条记录"
End Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Dim sql As String, rtn As LongSelect Case Button.IndexCase 1 Frm_zdxz.Caption = "图书征订添加" Frm_zdxz.Show 1 Me.StatusBar1.Panels(1).Text = "总共有" & Me.MSFlexGrid1.Rows - 1 & "条记录"Case 2 With Frm_zdxz .Caption = "图书征订修改" .Txt_zdbh.Text = Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.Row, 0) .Txt_tsid.Text = Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.Row, 1) .Txt_dgname.Text = Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.Row, 2) .Txt_lxfs.Text = Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.Row, 3) .Txt_dgsl.Text = Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.Row, 4) .Txt_dgdj.Text = Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.Row, 5) .Dtpk_dgrq.Value = Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.Row, 6) .Cmb_sfys.Text = Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.Row, 7) .Dtpk_ysrq.Value = Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.Row, 8) .Cmb_czy.Text = Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.Row, 9) .Txt_bz.Text = Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.Row, 10) .Show 1 End WithCase 3 If MsgBox("确定要删除吗?", vbYesNo + vbQuestion, "提示") = vbYes Then sql = "delete from 图书征订 where 征订编号='" _ + Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.Row, 0) + "'" rtn = Update(sql) If rtn = 0 Then sql = "select * from 图书征订" ShowData sql, Me.MSFlexGrid1 MsgBox "删除成功!", vbOKOnly + vbInformation, "提示" Me.StatusBar1.Panels(1).Text = "总共有" & Me.MSFlexGrid1.Rows - 1 & "条记录"
SQL+VB图书管理系统(数据库+源代码+论文) MsgBox "出现系统错误!请重启本系统!" End If End IfCase 5 Frm_zdcx.Show 1Case 7 MoveFirst Me.MSFlexGrid1Case 8 MovePre Me.MSFlexGrid1Case 9 MoveNext Me.MSFlexGrid1Case 10 MoveLast Me.MSFlexGrid1Case 12 Unload Me
End SelectEnd Sub其中“新增”记录和“修改”记录界面代码设计如下:Private Sub Form_Resize() UpDown1.Value = Txt_dgsl.TextEnd Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Dim sql As String, rtn As LongSelect Case Button.IndexCase 3 If Trim(Txt_zdbh.Text) = "" Or Trim(Txt_tsid.Text) = "" Then MsgBox "请填写相关信息!", vbOKOnly + vbInformation, "提示" Exit Sub End If If Me.Caption = "图书征订添加" Then sql = "insert into 图书征订 values('" + Trim(Txt_zdbh.Text) + "','" _ + Trim(Txt_tsid.Text) + "','" + Trim(Txt_dgname.Text) + "','" _ + Trim(Txt_lxfs.Text) + "','" + Trim(Txt_dgsl.Text) + "','" _ + Trim(Txt_dgdj.Text) + "','" + Trim(Dtpk_dgrq.Value) + "','" _ + Trim(Cmb_sfys.Text) + "','" + Trim(Dtpk_ysrq.Value) + "','" _ + Trim(Cmb_czy.Text) + "','" + Trim(Txt_bz.Text) + "')" Else sql = "update 图书征订 set 征订编号='" + Trim(Txt_zdbh.Text) _ + "',图书ID='" + Trim(Txt_tsid.Text) _ + "',订购者='" + Trim(Txt_dgname.Text) + "',订购者联系方式='" _ + Trim(Txt_lxfs.Text) + "',订购数量='" _ + Trim(Txt_dgsl.Text) + "',订购单价='" _ + Trim(Txt_dgdj.Text) + "',订购日期='" _ & Me.Dtpk_dgrq.Value & "',是否验收='" _ + Trim(Cmb_sfys.Text) + "',验收日期='" _ & Me.Dtpk_ysrq.Value & "',操作员='" _ + Trim(Cmb_czy.Text) + "',备注='" _ + Trim(Txt_bz.Text) + "' where 征订编号='" _ + Frm_zdsz.MSFlexGrid1.TextMatrix(Frm_zdsz.MSFlexGrid1.Row, 0) _ + "'" End If rtn = Update(sql) If rtn = 0 Then If Me.Caption = "图书征订添加" Then MsgBox "图书征订信息添加成功!", vbOKOnly + vbInformation, "提示" Else MsgBox "图书征订信息修改成功!", vbOKOnly + vbInformation, "提示" End If sql = "select * from 图书征订" ShowData sql, Frm_zdsz.MSFlexGrid1 Unload Me ElseIf rtn = -2147217873 Then MsgBox "征订编号已存在!请重新输入!", vbOKOnly + vbExclamation, "警告" Txt_zdbh.Text = "" Txt_zdbh.SetFocus ElseIf rtn = -2147217833 Then MsgBox "输入信息超过指定长度!请重新输入!", vbOKOnly + vbExclamation, "警告" ElseIf rtn = -2147217900 Then MsgBox "请不要输入单引号等非法字符!", vbOKOnly + vbExclamation, "警告" Else MsgBox "出现系统错误!请重启本系统!", vbOKOnly + vbExclamation, "警告" End If
SQL+VB图书管理系统(数据库+源代码+论文)Case 5 Unload MeEnd SelectEnd Sub
Private Sub UpDown1_Change()
Txt_dgsl.Text = UpDown1.Value + 1End Sub
3.4.3 借书还书续借界面代码设计
Private Sub Cmb_dzxx_Click() Select Case Cmb_dzxx.Text Case "读者类别" Txt_find2.SetFocus Case "借书证号" Txt_find2.SetFocus End SelectEnd Sub
Private Sub Cmb_tsxx_Click() Select Case Cmb_tsxx.Text Case "条形码" Txt_find1.SetFocus Case "图书ID" Txt_find1.SetFocus End Select
End Sub
Private Sub Cmd_find1_Click() Dim sql As String If Txt_find1.Text = "" Then sql = "select * from 图书信息" ShowData sql, Frm_data1.MSFlexGrid1 Frm_data1.Show 1 Txt_find2.SetFocus Exit Sub End If Select Case Cmb_tsxx.Text Case "条形码" sql = "select * from 图书信息 where 条形码 like '%" + Trim(Txt_find1.Text) + "%'"
Case "图书ID" sql = "select * from 图书信息 where 图书ID like '%" + Trim(Txt_find1.Text) + "%'" Case "图书名称" sql = "select * from 图书信息 where 书名 like '%" + Trim(Txt_find1.Text) + "%'" End Select ShowData sql, Frm_data1.MSFlexGrid1 If Frm_data1.MSFlexGrid1.Rows <= 1 Then MsgBox "对不起!没有找到符合条件的记录!请重新输入查询内容!", vbOKCancel + vbExclamation, "提示" Frm_jhx.Txt_find1.Text = "" Frm_jhx.Txt_find1.SetFocus Exit Sub End If Frm_data1.Show 1 Frm_jhx.Txt_find1.Text = "" Frm_jhx.Txt_find2.SetFocus
End Sub
Private Sub Cmd_find2_Click() Dim sql As String If Txt_find2.Text = "" Then sql = "select * from 读者信息" ShowData sql, Frm_data2.MSFlexGrid1 Frm_data2.Show 1 If Txt_txm.Text <> "" And Txt_tsid.Text <> "" And Txt_tsmc.Text <> "" Then 'Call PanDuan
SQL+VB图书管理系统(数据库+源代码+论文) Txt_txm.Text = "" Txt_tsid.Text = "" Txt_tsmc.Text = "" Else End If Txt_find1.SetFocus Exit Sub End If Select Case Cmb_dzxx.Text Case "读者姓名" sql = "select * from 读者信息 where 读者姓名 like '%" + Trim(Txt_find2.Text) + "%'"
Case "借书证号" sql = "select * from 读者信息 where 借书证号 like '%" + Trim(Txt_find2.Text) + "%'" Case "读者类别" sql = "select * from 读者信息 where 读者类别 like '%" + Trim(Txt_find2.Text) + "%'" End Select ShowData sql, Frm_data2.MSFlexGrid1
If Frm_data2.MSFlexGrid1.Rows <= 1 Then MsgBox "对不起!没有找到符合条件的记录!请重新输入查询内容!", vbOKCancel + vbExclamation, "提示" Frm_jhx.Txt_find2.Text = "" Frm_jhx.Txt_find2.SetFocus Exit Sub End If Frm_data2.Show 1 If Txt_txm.Text <> "" And Txt_tsid.Text <> "" And Txt_tsmc.Text <> "" Then 'Call PanDuan Txt_txm.Text = "" Txt_tsid.Text = "" Txt_tsmc.Text = "" Else End If Frm_jhx.Txt_find2.Text = "" Frm_jhx.Txt_find1.SetFocus
End Sub
Private Sub Cmd_hs_Click() Call HuanShuEnd Sub
Private Sub Cmd_jhxs_Click() Call PanDuanEnd Sub
Private Sub Cmd_js_Click(Index As Integer) Call JieShuEnd Sub
Private Sub Cmd_xj_Click() Call XuJieEnd Sub
Private Sub Form_Load() Dim str As String, sql As String Image1.Picture = Image2.Picture Cmd_jhxs.Picture = Image2.Picture Cmd_jhxs.Caption = "借出此书"
Cmb_tsxx.Text = "图书名称" Cmb_dzxx.Text = "读者姓名" Lab_year.Caption = year(Now) Lab_month.Caption = month(Now) Lab_day.Caption = day(Now) Select Case Weekday(Date)
SQL+VB图书管理系统(数据库+源代码+论文) Case 1 str = "星期日" Case 2 str = "星期一" Case 3 str = "星期二" Case 4 str = "星期三" Case 5 str = "星期四" Case 6 str = "星期五" Case 7 str = "星期六" End Select Lab_weekday.Caption = str End Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) Select Case Button.Index Case 2 If MsgBox("您确定要清屏吗?", vbOKCancel + vbQuestion, "询问") = vbOK Then Me.MSFlexGrid1.Clear Me.MSFlexGrid1.Cols = 2 Me.MSFlexGrid1.Rows = 2 Me.StatusBar1.Panels(1).Text = "总共有0条记录" End If Case 4 Call JieShu Case 5 Call HuanShu Case 6 Call XuJie Case 8 Unload Me End SelectEnd Sub
Private Function JieShu() Image1.Picture = Image2.Picture Label3.Caption = "借" Label2.Caption = "书" Cmd_jhxs.Picture = Image2.Picture Cmd_jhxs.Caption = "借出此书" Me.MSFlexGrid1.Clear Me.MSFlexGrid1.Cols = 2 Me.MSFlexGrid1.Rows = 2 Me.StatusBar1.Panels(1).Text = "总共有0条记录" Call PanDuanEnd Function
Private Function HuanShu() Image1.Picture = Image3.Picture Label3.Caption = "还" Label2.Caption = "书" Cmd_jhxs.Picture = Image3.Picture Cmd_jhxs.Caption = "归还此书" Me.MSFlexGrid1.Clear Me.MSFlexGrid1.Cols = 2 Me.MSFlexGrid1.Rows = 2 Me.StatusBar1.Panels(1).Text = "总共有0条记录" Call PanDuanEnd Function
Private Function XuJie() Image1.Picture = Image4.Picture Label3.Caption = "续" Label2.Caption = "借" Cmd_jhxs.Picture = Image4.Picture Cmd_jhxs.Caption = "续借此书" Me.MSFlexGrid1.Clear Me.MSFlexGrid1.Cols = 2 Me.MSFlexGrid1.Rows = 2 Me.StatusBar1.Panels(1).Text = "总共有0条记录" Call PanDuanEnd Function其中“借书新增”记录和“续借新增”记录界面代码设计如下: Private Sub Form_Load() Dim sql As String, sql1 As String, sql2 As String sql = "select * from 图书借阅" ShowData sql, Me.MSFlexGrid1 Me.StatusBar1.Panels(1).Text = "总共有" & Me.MSFlexGrid1.Rows - 1 & "条记录" Me.Height = 7155 Me.Width = 8685 Me.Txt_tsid.Text = Frm_jhx.Txt_tsid.Text Me.Txt_jszh.Text = Frm_jhx.Txt_jszh.Text Me.Txt_jysj.Text = Date Me.Txt_czy.Text = yh_login.yhm Me.Txt_year.Text = year(Date) Me.Txt_month.Text = month(Date) Me.Txt_day.Text = day(Date) sql1 = "select 可借书天数,读者类别 from 读者类别 where 读者类别 in(select 读者类别 from 读者信息 where 借书证号='" + Trim(Frm_jhx.Txt_jszh.Text) + "')" ShowData sql1, Me.MSFlexGrid2 sql2 = "select * from 图书类型 where 图书类型 in(select 图书类型 from 图书信息 where 图书ID='" + Trim(Frm_jhx.Txt_tsid.Text) + "')"
SQL+VB图书管理系统(数据库+源代码+论文)ShowData sql2, Me.MSFlexGrid3 If Int(Me.MSFlexGrid2.TextMatrix(Me.MSFlexGrid2.Row, 0)) >= Int(Me.MSFlexGrid3.TextMatrix(Me.MSFlexGrid3.Row, 2)) Then Me.Txt_zeng.Text = Me.MSFlexGrid3.TextMatrix(Me.MSFlexGrid3.Row, 2) Else Me.Txt_zeng.Text = Me.MSFlexGrid2.TextMatrix(Me.MSFlexGrid2.Row, 0) End If Call RiQi Me.Txt_yhsj.Text = Me.Txt_year1.Text & "-" & Me.Txt_month1.Text & "-" & Me.Txt_day1End Sub
Private Sub Form_Resize()UpDown1.Value = Int(Txt_xjcs.Text) - 1End Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Dim sql As String, sql1 As String, sql2 As String, sql3 As String, rtn As LongSelect Case Button.IndexCase 3 If Trim(Txt_jybh.Text) = "" Then MsgBox "请填写借阅编号!", vbOKOnly + vbInformation, "提示" Exit Sub End If sql = "insert into 图书借阅 values('" + Trim(Txt_jybh.Text) + "','" + Trim(Txt_tsid.Text) + "','" _ + Trim(Txt_jszh.Text) + "','" + Trim(Txt_jysj.Text) + "','" + Trim(Txt_yhsj.Text) + "','" _ + Trim(Txt_czy.Text) + "','" + Trim(Txt_xjcs.Text) + "','" + Trim(Txt_bz.Text) + "')" rtn = Update(sql) If rtn = 0 Then MsgBox "借书成功!", vbOKOnly + vbInformation, "信息" sql = "select 状态,现存量,借出量 from 图书信息 where 图书ID='" + Me.Txt_tsid.Text + "'" ShowData sql, Me.MSFlexGrid2 sql1 = "update 图书信息 set 现存量='" & (Int(Me.MSFlexGrid2.TextMatrix(Me.MSFlexGrid2.Row, 1)) - 1) & "',借出量='" _ & (Int(Me.MSFlexGrid2.TextMatrix(Me.MSFlexGrid2.Row, 2)) + 1) & "' where 图书ID='" + Me.Txt_tsid.Text + "'" Update (sql1) Me.MSFlexGrid2.Clear Me.MSFlexGrid2.Cols = 2 Me.MSFlexGrid2.Rows = 2 sql2 = "select 状态,现存量 from 图书信息 where 图书ID='" + Me.Txt_tsid.Text + "'" ShowData sql, Me.MSFlexGrid2 If Trim(Me.MSFlexGrid2.TextMatrix(Me.MSFlexGrid2.Row, 1)) = 0 Then sql3 = "update 图书信息 set 状态='借出' where 图书ID='" + Me.Txt_tsid.Text + "'" Update (sql3) End If Me.MSFlexGrid2.Clear Me.MSFlexGrid2.Cols = 2 Me.MSFlexGrid2.Rows = 2 ElseIf rtn = -2147217873 Then MsgBox "借阅编号已存在!请重新输入!" Txt_jybh.Text = "" Txt_jybh.SetFocus ElseIf rtn = -2147217833 Then MsgBox "输入信息超过指定长度!请重新输入!" ElseIf rtn = -2147217900 Then MsgBox "请不要输入单引号等非法字符!" Else MsgBox "出现系统错误!请重启本系统!" End IfCase 5 sql = "select * from 图书借阅" ShowData sql, Me.MSFlexGrid1 Me.StatusBar1.Panels(1).Text = "总共有" & Me.MSFlexGrid1.Rows - 1 & "条记录" sql1 = "select * from 图书借阅 where 借书证号='" + Frm_jhx.Txt_jszh.Text + "'" ShowData sql1, Frm_jhx.MSFlexGrid1 Frm_jhx.StatusBar1.Panels(1).Text = "总共有" & Frm_jhx.MSFlexGrid1.Rows - 1 & "条记录"Case 7 Unload MeEnd SelectEnd Sub
Private Sub UpDown1_Change()Txt_xjcs.Text = UpDown1.Value + 1End Sub
Private Function RiQi() Dim day As Integer, day1 As Integer Dim month As Integer, month1 As Integer Dim year As Integer Select Case Int(Me.Txt_month.Text) Case 1, 3, 5, 7, 8, 10, 12 day = Int(Me.Txt_day.Text) + Int(Me.Txt_zeng.Text) If day > 31 Then day1 = day Mod 31 month = Int(Me.Txt_month.Text) + day \ 31 Me.Txt_day1.Text = day1 Me.Txt_month1.Text = month Else Me.Txt_day1.Text = day Exit Function End If
SQL+VB图书管理系统(数据库+源代码+论文) If month > 12 Then month1 = month Mod 12 year = Int(Me.Txt_year.Text) + month \ 12 Me.Txt_month1.Text = month1 Me.Txt_year1.Text = year End If Case 4, 6, 9, 11 day = Int(Me.Txt_day.Text) + Int(Me.Txt_zeng.Text) If day > 30 Then day1 = day Mod 30 month = Int(Me.Txt_month.Text) + day \ 30 Me.Txt_day1.Text = day1 Me.Txt_month1.Text = month Else Me.Txt_day1.Text = day Exit Function End If If month > 12 Then month1 = month Mod 12 year = Int(Me.Txt_year.Text) + month \ 12 Me.Txt_month1.Text = month1 Me.Txt_year1.Text = year End If Case 2 If Int(Me.Txt_year.Text) Mod 4 = 0 And Int(Me.Txt_year.Text) Mod 100 <> 0 Or Int(Me.Txt_year.Text) Mod 400 = 0 Then day = Int(Me.Txt_day.Text) + Int(Me.Txt_zeng.Text) If day > 29 Then day1 = day Mod 29 month = Int(Me.Txt_month.Text) + day \ 29 Me.Txt_day1.Text = day1 Me.Txt_month1.Text = month Else Me.Txt_day1.Text = day Exit Function End If If month > 12 Then month1 = month Mod 12 year = Int(Me.Txt_year.Text) + month \ 12 Me.Txt_month1.Text = month1 Me.Txt_year1.Text = year End If Else day = Int(Me.Txt_day.Text) + Int(Me.Txt_zeng.Text) If day > 28 Then day1 = day Mod 28 month = Int(Me.Txt_month.Text) + day \ 28 Me.Txt_day1.Text = day1 Me.Txt_month1.Text = month Else Me.Txt_day1.Text = day Exit Function End If If month > 12 Then month1 = month Mod 12 year = Int(Me.Txt_year.Text) + month \ 12 Me.Txt_month1.Text = month1 Me.Txt_year1.Text = year End If End If End SelectEnd Function3.4.4 图书信息查询界面代码设计Private Sub Cmb_cxtj_Click()If Cmb_cxtj.Text = "图书ID" Then Label2.Visible = True Txt_cxnr.Visible = True Command1.Visible = False Txt_cxnr.Locked = False Txt_cxnr.Text = "" Txt_cxnr.SetFocusElseIf Cmb_cxtj.Text = "图书名称" Then Label2.Visible = True Txt_cxnr.Visible = True Command1.Visible = False Txt_cxnr.Locked = False Txt_cxnr.Text = "" Txt_cxnr.SetFocus
ElseIf Cmb_cxtj.Text = "图书类型" Then Label2.Visible = True Txt_cxnr.Visible = True Command1.Visible = True Txt_cxnr.Locked = True Txt_cxnr.Text = "" Txt_cxnr.SetFocus ElseIf Cmb_cxtj.Text = "所有图书信息" Then Label2.Visible = False Txt_cxnr.Visible = False Command1.Visible = FalseEnd If
Me.MSFlexGrid1.Clear Me.MSFlexGrid1.Rows = 2 Me.MSFlexGrid1.Cols = 2 Me.StatusBar1.Panels(1).Text = "总共有0条记录"End Sub
Private Sub Command1_Click()Dim sql As Stringsql = "select * from 图书类型"ShowData sql, Frm_find.MSFlexGrid1strfind = "tscx"Frm_find.Show 1End Sub
Private Sub Command2_Click() Dim sql As String Select Case Cmb_cxtj.Text Case "请选择查询条件" MsgBox "选择错误!请选择查询条件!", vbCritical + vbOKCancel, "提示" Exit Sub
SQL+VB图书管理系统(数据库+源代码+论文)Case "图书ID" If Txt_cxnr.Text = "" Then MsgBox "请输入图书ID!", vbCritical + vbOKCancel, "提示" Txt_cxnr.SetFocus Exit Sub Else sql = "select * from 图书信息 where 图书ID like '%" + Trim(Txt_cxnr.Text) + "%'" Txt_cxnr.SetFocus End If Case "图书名称" If Txt_cxnr.Text = "" Then MsgBox "请输入图书名称!", vbCritical + vbOKCancel, "提示" Txt_cxnr.SetFocus Exit Sub Else sql = "select * from 图书信息 where 图书名称 like '%" + Trim(Txt_cxnr.Text) + "%'" Txt_cxnr.SetFocus End If Case "图书类型" If Txt_cxnr.Text = "" Then MsgBox "请单击按钮选择图书类型!", vbCritical + vbOKCancel, "提示" Txt_cxnr.SetFocus Exit Sub Else sql = "select * from 图书信息 where 图书类型='" + Trim(Txt_cxnr.Text) + "'" Txt_cxnr.SetFocus End If Case "所有图书信息" sql = "select * from 图书信息" End Select ShowData sql, Me.MSFlexGrid1 Me.StatusBar1.Panels(1).Text = "总共有" & Me.MSFlexGrid1.Rows - 1 & "条记录" If Frm_tscx.MSFlexGrid1.Rows <= 1 Then MsgBox "对不起!没有找到符合条件的记录!请重新输入查询内容!", vbOKCancel + vbInformation, "提示" Txt_cxnr.Text = "" Txt_cxnr.SetFocus Exit Sub End If End Sub
Private Sub Form_Load()Label2.Visible = False Txt_cxnr.Visible = False Command1.Visible = False Me.MSFlexGrid1.ColAlignment(0) = flexAlignCenterCenter Me.MSFlexGrid1.ColWidth(0) = 1800 Me.MSFlexGrid1.ColWidth(1) = 1000 'Me.MSFlexGrid1.ColWidth(2) = 4500 End Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Select Case Button.Index Case 3 MoveFirst Me.MSFlexGrid1 Me.StatusBar1.Panels(1).Text = "总共有" & Me.MSFlexGrid1.Rows - 1 & "条记录" Case 4 MovePre Me.MSFlexGrid1 Me.StatusBar1.Panels(1).Text = "总共有" & Me.MSFlexGrid1.Rows - 1 & "条记录" Case 5 MoveNext Me.MSFlexGrid1 Me.StatusBar1.Panels(1).Text = "总共有" & Me.MSFlexGrid1.Rows - 1 & "条记录" Case 6 MoveLast Me.MSFlexGrid1 Me.StatusBar1.Panels(1).Text = "总共有" & Me.MSFlexGrid1.Rows - 1 & "条记录" Case 8 Frm_tscx.Refresh Case 9 Unload MeEnd SelectEnd Sub3.4.5 用户登录界面代码设计Private Sub cmb_qx_Click()On Error GoTo labDim cnn As New ADODB.ConnectionDim rst As New ADODB.RecordsetDim sql As Stringsql = "select * from 用户 where 用户权限='" + cmb_qx.Text + "'"cnn.Open strcnnrst.Open sql, cnn, 3, 1cmb_yhm.ClearDo While Not rst.EOFcmb_yhm.AddItem rst!用户名rst.MoveNextLooprst.Closecnn.CloseExit Sublab:MsgBox "请您先附加数据库!", vbExclamation, "提示"
End SubPrivate Sub Command1_Click()Dim cnn As New ADODB.ConnectionDim rst As New ADODB.RecordsetDim sql As String
SQL+VB图书管理系统(数据库+源代码+论文)If cmb_yhm.Text = "" Then MsgBox "请输入身份用户名!" Exit SubEnd IfIf InStr(1, Trim(txt_mm.Text), ",") <> 0 Then MsgBox "请不要输入单引号等非法字符!" txt_mm.Text = "" txt_mm.SetFocus Exit SubEnd If
sql = "select * from 用户 where 用户名='" + cmb_yhm.Text _ + "' and 用户密码='" + Trim(txt_mm.Text) + "'"cnn.Open strcnnrst.Open sql, cnn, 3, adLockOptimisticIf rst.RecordCount > 0 Then MsgBox "密码输入正确!欢迎登录!", vbOKOnly + vbInformation, "信息" yh_login.yhqx = rst!用户权限 yh_login.yhm = rst!用户名 Unload Me Frm_main.Show 1Else MsgBox "密码错误!请重新输入!", vbOKOnly + vbExclamation, "信息" txt_mm.Text = "" txt_mm.SetFocusEnd IfEnd Sub
Private Sub Command2_Click()If MsgBox("你确定要退出吗?", vbQuestion + vbOKCancel, "提示") = vbOK Then EndEnd IfEnd Sub
Private Sub Form_Load()cmb_qx.AddItem "管理员"cmb_qx.AddItem "操作员"End Sub
Private Sub Frame1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)lblfj.ForeColor = vbBlacklblfj.FontUnderline = FalseEnd Sub
Private Sub lblfj_Click()Dim cnn As New ADODB.ConnectionDim cmd As New ADODB.CommandDim sql As Stringsql = "exec sp_attach_db 'tushu'," _+ "'" + App.Path + "\DataBase\tushu_Data.MDF'," _+ "'" + App.Path + "\DataBase\tushu_Log.LDF'"
On Error GoTo labcnn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI"cnn.BeginTranscmd.ActiveConnection = cnncmd.CommandType = adCmdTextcmd.CommandText = sqlcmd.Executecnn.CommitTranscnn.CloseMsgBox "数据库附加成功!", vbInformation, "提示"Exit Sublab:If cnn.State = 1 Then cnn.RollbackTrans cnn.CloseEnd IfMsgBox "数据库已附加!", vbExclamation, "提示"End Sub
Private Sub lblfj_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)lblfj.ForeColor = vbBluelblfj.FontUnderline = TrueEnd Sub3.4.6 系统数据备份与恢复代码设计①数据备份代码如下:
SQL+VB图书管理系统(数据库+源代码+论文)Private Sub sjbf_Click()Dim sql As String, rtn As Stringsql = "backup database tushu to disk='" + App.Path + "\bak\data.bak' with init"rtn = Update(sql)If rtn = 0 Then MsgBox "备份完毕!", vbOKOnly + vbInformation, "提示"Else MsgBox "备份失败!", vbOKOnly + vbInformation, "提示"End IfEnd Sub……②数据恢复代码如下:Private Sub Timer1_Timer()Timer1.Enabled = FalseDim sql As String, strcnn As StringDim cnn As New ADODB.ConnectionDim cmd As New ADODB.Commandsql = "restore database tushu from disk='" _ + Left(App.Path, Len(App.Path) - 3) + "\bak\data.bak'"strcnn = "provider=sqloledb.1;integrated security=sspi"On Error GoTo labcnn.Open strcnncnn.BeginTranscmd.ActiveConnection = cnncmd.CommandType = adCmdTextcmd.CommandText = sqlcmd.Executecnn.CommitTranscnn.CloseMe.HideMsgBox "系统数据恢复成功!"Shell Left(App.Path, Len(App.Path) - 3) + "\图书管理系统.exe", vbNormalFocusEndExit Sublab:Me.HideMsgBox "系统数据恢复失败!"Shell Left(App.Path, Len(App.Path) - 3) + "\图书管理系统.exe", vbNormalFocusEnd
End Sub4、总结(体会) 通过本次本次课程设计了解到了一个简单的系统开发的具体流程,同时了解到团队合作的重要性,复杂的系统的开发需要多人合作靠个人开发效率低,不符合商业的要求,团体合作。参考书目:[1] 李晓黎等,Visual Basic+SQL Server数据库应用系统开发与实例,人民邮电出版社出版[2] 赵松涛,Visual Basic+SQLServer 2000系统开发实录,电子工业出版社出版[3] 刘韬等,Visual Basic数据库系统开发实例导航,人民邮电出版社出版