vb图书管理系统_小白是这样打造图书管理系统的(三)

f4457dc77d6468df85ae54ee301ee379.png WeChat @网管小贾 | www.sysadm.cc

在前文书中,我们介绍了一些前期需要准备的环境及数据结构。

前文回顾:

  • 《小白是这样打造图书管理系统的(一)》

  • 《小白是这样打造图书管理系统的(二)》

手中有粮,心中不慌,我们有了数据库测试数据,接下来就可以稳扎稳打继续下一步的内容啦!

我们说实现程序设计和操作,实际上就是实现对这些数据具体操作的体现。

比如,来了一本新书《网管小贾谈如何成为时间管理大师》。

既然来了,那我们就把它录入到系统中吧,这时系统中就多了一条记录。

还有,有一位小伙伴对《智取天狼星计划》这本小说非常感兴趣,一口气就借了五本。

这时由于读者借阅动作,于是就触发了图书状态(被借阅)的变化。

但是,书被借走了,问题也来了,我们在操作这些数据的时候,如果在客户端工具上直接动手操作SQL语句,那么我可以把手按在圣经上保证,你不是被烦死的,就是被累死的。

有这么可怕喵?

好了,道理大家都懂,那么要怎么解救劳苦大众于水深火热之中呢?

答案很简单哈,我们需要通过一些简便易用的操作界面,给它赋予相应的操作数据的功能,来代替繁冗复杂的数据库后台操作。

这个时候估计会有小伙伴举起了小手,没错,那就是传说中的人与数据交互的应用程序界面了。

第三弹:程序界面设计

使用基于程序界面组件的VB构建界面是非常简单的事。

根据主要实现 CRUD (增删改查)的功能,可以分别设计各自的界面。

以下简单给出我设计的参考样图,不要嫌丑哦,我相信你的艺术欣赏水平一定比我高那么一点点,肯定能设计出更美的界面。

人要脸,树要皮,我的程序封面也差不离。

fa16b016b2ba76016fe1ab7f2ae18d39.png

图书信息管理界面,以查询表格为主,添加删除等为辅。

5b51c091d47546676f03ad8af3bb6a9d.png

图书借阅操作界面,主要用于处理借阅及归还流程操作。

d5152b7354084bf9dfbc93f916551617.png

图书借阅记录界面,方便查询、或进一步处理借阅状态数据。

dcead57ab0ed1250a6b9185a6f1f8f8b.png

第四弹:程序代码实现

终于来到了我们的重点实验区。

要说界面设计,我们可能天生艺术细胞稀缺,后天有机会再补也行,但功能实现是最最主要要解决的问题,就必须要真正的做好它。

一、前期环境配置

在VB开发环境中,我们需要添加一些 引用部件

首先是引用,依次点击菜单 工程(P) > 引用(N)...

需要使用到 Microsoft ActiveX Data Objects 2.5 LibraryMicrosoft Data Formatting Object Library 6.0 (SP6)

前者是用来连接 SQL Server 数据库的,后者是用来格式化数据的。

680d014d5ad21c1ba4f4c1f0742c8af3.png

其次是部件,依次点击菜单 工程(P) > 部件(O)...

分别需要用到对话框、数据表格、选项卡等组件。

8ae79c656b614513fd4536580d0e9113.png

二、部分代码实现

我们以图书信息的增删改查为例,演示代码实现。

1、增
' ********添加图书,先判断是否已录入,如果已存在,则提示退出,否则添加新记录信息。********strSql = "SELECT TOP 1 book_ID FROM bms4l_Book WHERE book_ID='" & Trim(txtBookID.Text) & "'"    Set rst = SelectSQL(strSql, strmsg)        ' 如果bookID存在,则刷新使用最新时间做为ID编号    If rst.RecordCount = 0 Then        MsgBox "记录已存在!", vbCritical + vbOKOnly, "网管小贾的图书管理系统"        Exit Sub    End If        ' 添加新记录    strSql = "INSERT INTO dbo.bms4l_Book (book_ID,book_Title,book_Volume,book_Press,book_Author,book_ISBN,book_PublishTime,book_Price,book_DateStorage,book_BeLent,book_BeLentCounts,book_Remark)"    strSql = strSql & " VALUES('" & Trim(txtBookID.Text) & "','" & Trim(txtBookTitle.Text) & "','" & Trim(txtBookVolume.Text) & "','" & Trim(txtBookPress.Text) & "','" & Trim(txtBookAuthor.Text) & "','" & Trim(txtBookISBN.Text)    strSql = strSql & "','" & Trim(txtBookPublishTime.Text) & "','" & Trim(txtBookPrice.Text) & "','" & Trim(txtBookDateStorage.Text) & "','" & Trim(txtBookBeLent.Text) & "','0','" & Trim(txtBookRemark.Text) & "')"    Call ExecuteSQL(strSql, strmsg)        If InStr(1, strmsg, "执行成功") = 0 Then        MsgBox "数据库操作失败!请稍后重试!", vbCritical + vbOKOnly, "网管小贾的图书管理系统"    Else        MsgBox "添加图书成功!!", vbInformation + vbOKOnly, "网管小贾的图书管理系统"    End If
2、删
' ******** 找出ID,删除记录 ********strSql = "SELECT TOP 1 book_Title FROM dbo.bms4l_Book WHERE book_ID='" & tmpMsfgBookText & "'"    Set rst = SelectSQL(strSql, msg)        If rst.RecordCount > 0 Then                '如果选择的是存在的记录,则确认是否删除此记录        If MsgBox("真的要删除该记录吗??", vbQuestion + vbYesNo + vbDefaultButton2, "网管小贾的图书管理系统") = vbYes Then            strSql = "DELETE FROM dbo.bms4l_Book WHERE book_ID='" & tmpMsfgBookText & "'"            Call ExecuteSQL(strSql, msg)            If InStr(1, msg, "执行成功") = 0 Then                MsgBox "数据库操作失败!请稍后重试!", vbCritical + vbOKOnly, "网管小贾的图书管理系统"            Else                MsgBox "指定图书删除成功!!", vbInformation + vbOKOnly, "网管小贾的图书管理系统"            End If            cmdBookDelete.Enabled = False        End If    End If
3、改
' ******** 修改记录分两步,一是显示要修改的记录,二才是修改记录后保存。********` 一、选择需要修改的记录,然后显示记录内容    strSql = "SELECT TOP 1 * FROM dbo.bms4l_Book WHERE book_ID='" & tmpMsfgBookText & "'"    Set rst = SelectSQL(strSql, msg)        If rst.RecordCount > 0 Then                '如果选择的是存在的记录,则打开修改窗口        With frmBookModify                    '加载当前记录到各项目文本框中            .txtBookID.Text = Trim(rst("book_ID").value)            .txtBookTitle.Text = Trim(rst("book_Title").value)            .txtBookPress.Text = Trim(rst("book_Press").value)            .txtBookAuthor.Text = Trim(rst("book_Author").value)            .txtBookISBN.Text = Trim(rst("book_ISBN").value)            .txtBookPublishTime.Text = Trim(rst("book_PublishTime").value)            .txtBookPrice.Text = Trim(rst("book_Price").value)            .txtBookDateStorage.Text = Trim(rst("book_DateStorage").value)            .txtBookBeLent.Text = Trim(rst("book_BeLent").value)            .txtBookBeLentCounts.Text = Trim(rst("book_BeLentCounts").value)            .txtBookRemark.Text = Trim(rst("book_Remark").value)            .Show vbModal, Me                End With        End If' 二、修改记录并提交到数据库中    strSql = "UPDATE bms_book "    strSql = strSql & "SET book_ & Trim(txtBookTitle)    strSql = strSql & "', book_Volume='" & Trim(txtBookVolume)    strSql = strSql & "', book_Press='" & Trim(txtBookPress)    strSql = strSql & "', book_Author='" & Trim(txtBookAuthor)    strSql = strSql & "', book_ISBN='" & Trim(txtBookISBN)    strSql = strSql & "', book_PublishTime='" & Trim(txtBookPublishTime)    strSql = strSql & "', book_Price='" & Trim(txtBookPrice)    strSql = strSql & "', book_Remark='" & Trim(txtBookRemark)    strSql = strSql & "' WHERE book_ID='" & Trim(txtBookID.Text) & "'"    Call ExecuteSQL(strSql, strmsg)    If InStr(1, strmsg, "执行成功") = 0 Then        MsgBox "数据库操作失败!请稍后重试!", vbCritical + vbOKOnly, "网管小贾的图书管理系统"    Else        MsgBox "图书信息更新成功!", vbInformation + vbOKOnly, "网管小贾的图书管理系统"    End If
4、查

看似简单,实际还是比较复杂的,因为要构建筛选条件。

利用SQL语句的拼接,把每个需要筛选的条件字段连接起来,最后再拼接到 Where 关键字的后面。

举例:

如果想查询 id 等于 1name 等于 sysadm.cctime 等于 2020-11-11 的所有记录。

原始SQL语句应该是:SELECT * WHERE id=1 AND name='sysadm.cc'

那么我们参照原始SQL语句构建WHERE后面的条件语句,可以这个样子来做:

' 1.定义一个字符串变量Dim strSql AS String' 2.把每个字段条件写出来,然后依次拼接。'   注意,每一行最前面有个空格,用于拼接分隔的每个字段。'   拼接完成的strSql应该是这个样子滴:'   strSql = " id = 1 AND name = 'sysadm.cc' AND time = '2020-11-11'"strSql = strsql & " id = 1"strSql = strsql & " AND name = 'sysadm.cc'"strSql = strsql & " AND time = '2020-11-11'"' 3.最后拼接到 WHERE 关键字后就OK了'   实际完整SQL查询语句:'   strSql = "SELECT * FROM table WHERE id = 1 AND name = 'sysadm.cc' AND time = '2020-11-11'"strSql = "SELECT * FROM table WHERE" & strSql

好理解吧?

回到我们的图书管理系统,具体代码可能是这个样子的。

' ******** 构建Where查询条件 ********If chkBookID.value = vbChecked Then        If Trim(txtBookQueryBookID.Text) <> "" Then            strSql = "book_ID LIKE '%" & Trim(txtBookQueryBookID.Text) & "%'"        End If    End If        If chkBookTitle.value = vbChecked Then        If Trim(txtBookTitle.Text) <> "" Then            If Trim(strSql) <> "" Then                strSql = strSql & " AND book_Title LIKE '%" & Trim(txtBookTitle.Text) & "%'"            Else                strSql = "book_Title LIKE '%" & Trim(txtBookTitle.Text) & "%'"            End If        End If    End If        If chkBookAuthor.value = vbChecked Then        If Trim(txtBookAuthor.Text) <> "" Then            If Trim(strSql) <> "" Then                strSql = strSql & " AND book_Author LIKE '%" & Trim(txtBookAuthor.Text) & "%'"            Else                strSql = "book_Author LIKE '%" & Trim(txtBookAuthor.Text) & "%'"            End If        End If    End If        If chkBookDateStorage.value = vbChecked Then        If Trim(txtBookDateStorage(0).Text) = "" Or Trim(txtBookDateStorage(1).Text) = "" Then        Else            If IsDate(Trim(txtBookDateStorage(0).Text)) And IsDate(Trim(txtBookDateStorage(1).Text)) Then                If Trim(strSql) <> "" Then                    strSql = strSql & " AND book_DateStorage BETWEEN '" & Trim(txtBookDateStorage(0).Text) & "' AND '" & Trim(txtBookDateStorage(1).Text) & "'"                Else                    strSql = " book_DateStorage BETWEEN '" & Trim(txtBookDateStorage(0).Text) & "' AND '" & Trim(txtBookDateStorage(1).Text) & "'"                End If            Else                MsgBox "登记日期格式错误!", vbExclamation + vbOKOnly, ""                cmdBookQuery.Enabled = True                Exit Sub            End If        End If    End If        If chkBookPress.value = vbChecked Then        If Trim(txtBookPress.Text) <> "" Then            If Trim(strSql) <> "" Then                strSql = strSql & " AND book_Press LIKE '%" & Trim(txtBookPress.Text) & "%'"            Else                strSql = "book_Press LIKE '%" & Trim(txtBookPress.Text) & "%'"            End If        End If    End If    If chkBookBeLent.value = vbChecked Then        If Trim(cboBookBeLent.Text) <> "" Then            If Trim(strSql) <> "" Then                strSql = strSql & " AND book_BeLent='" & Trim(cboBookBeLent.Text) & "'"            Else                strSql = "book_BeLent='" & Trim(cboBookBeLent.Text) & "'"            End If        End If    End If    If chkBookBeLentCounts.value = vbChecked Then        If Trim(txtBookBeLentCounts(0).Text) <> "" And Trim(txtBookBeLentCounts(1).Text) <> "" Then            If IsNumeric(Trim(txtBookBeLentCounts(0).Text)) Or IsNumeric(Trim(txtBookBeLentCounts(1).Text)) Then                If Trim(strSql) <> "" Then                    strSql = strSql & " AND book_BeLentCounts BETWEEN '" & Trim(txtBookBeLentCounts(0).Text) & "' AND '" & Trim(txtBookBeLentCounts(1).Text) & "'"                Else                    strSql = "book_BeLentCounts BETWEEN '" & Trim(txtBookBeLentCounts(0).Text) & "' AND '" & Trim(txtBookBeLentCounts(1).Text) & "'"                End If            Else                MsgBox "借阅次数不是数字!", vbExclamation + vbOKOnly, ""                cmdBookQuery.Enabled = True                Exit Sub            End If        End If    End If' ******** 筛选条件有了,则构建完整的查询语句 ********    If strSql = "" Then        If MsgBox("没有选择任何查询条件。确定要查询所有图书记录吗??", vbQuestion + vbYesNo + vbDefaultButton2, "网管小贾的图书管理系统") = vbNo Then            cmdBookQuery.Enabled = True            Exit Sub        Else            strSql = "SELECT TOP 10000 * FROM dbo.bms4l_Book ORDER BY book_ID ASC"        End If    Else        strSql = "SELECT TOP 10000 * FROM dbo.bms4l_Book WHERE " & strSql & " ORDER BY book_ID ASC"    End If        msfgBook.Redraw = False    msfgBook.Tag = ""    Call fillGrid_Book(msfgBook, strSql)    Call ChangeMsflexGridColor(msfgBook)

基本的操作就这些了,包括读者信息等的操作都是大同小异的。

当然,如果需要实现更加复杂的业务逻辑,那就需要编写更多的代码。

除了这些基本的CRUD以外,在一个相对完整的系统程序中,还有一些相关的功能也是必备的。

例如,信息分类、用户登录或数据备份等等。

348abcac50817ae24a3b4e61cc731fb7.png

实现这些与CRUD数据操作本身关系不大、但又是系统必备的功能,实际上还是离不开我们前面讲到的后台数据、界面设计以及代码实现这几大步骤。

那么对于新手小白来说,这些看似简单其实本质却很虐人的变态功能,可能自己动手做起来非常要命。

好了,不用担心,现在我出现了!

那个...灯光师傅麻烦给这边打个灯光,谢谢!

咳咳...我想说的是,咳...现今流行WEB形式程序,那么以后有机会,我会介绍 PHP+MySql 形式的程序实现。

OK!我要找流浪哥打牌去了,我们下次再见!

欢迎小伙伴们留言给我吧!

前文回顾:

  • 《小白是这样打造图书管理系统的(一)》

  • 《小白是这样打造图书管理系统的(二)》

WeChat @网管小贾 | www.sysadm.cc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
摘要 图书馆管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。 主要应用的技术有microsoft visual basic 和 microsoft access 2003进行具体的设计和开发,并进行数据存储和数据处理。本系统能对图书实行管理,并能按客户端登录用户实行级权限管理:读者、图书管理员和教师。 本系统分用户登录、图书查询、借还图书,系统管理等四大功能模块。其中图书查询功能分为模糊查询、直接查询、多条件查询;系统管理则包括读者管理、图书信息管理、读者管理、管理员权限帐户管理等。图书分类管理,单文档多视图操作是本系统开发与设计中的难点。 本文针对目前高校系部图书管理实际,从系统的开发背景、需求分析、设计原则及开发过程等四个方面进行了全面的阐述。全文共分六章,第一章简明扼要地介绍本系统的开发背景、设计原则及设计目标;第二章简要地介绍了本系统的开发工具和相应技术,以及数据库设计;第章对系统的需求进行了全面的分析;第四章系统设计。本系统对于目前高校系部及中小型图书馆的建设有一定的指导意义。 关键词:信息管理系统 数据库 VISUAL BASIC ACCESS 控件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值