⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.vb

📁 图书馆管理系统,是数据库的课程设计,报告里面包含了需求分析数据字典概念结构设计逻辑结构设计数据库物理设计数据库实施
💻 VB
📖 第 1 页 / 共 5 页
字号:
        End Try

        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''读取学生信息,读取学生个人信息
        sqlstr = "select * from studentinfo where id=" & stuID & ""
        Try
            objDS = GetData(sqlstr)
            user_name.Text = objDS.Tables(0).Rows(0)("name").ToString
            user_learnid.Text = objDS.Tables(0).Rows(0)("learnid").ToString
            user_class.Text = showclassname(objDS.Tables(0).Rows(0)("class"))
            user_phone.Text = objDS.Tables(0).Rows(0)("phone").ToString
            user_logins.Text = objDS.Tables(0).Rows(0)("logins").ToString
            user_lastlogin.Text = objDS.Tables(0).Rows(0)("lastlogin").ToString
            If objDS.Tables(0).Rows(0)("islock") = 1 Then islock = True
        Catch
            MsgBox("读取学生数据错误。", MsgBoxStyle.Information + MsgBoxStyle.OKOnly, "错误")
        End Try

        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''读取图书馆公告信息
        sqlstr = "select * from board order by addtime" '搜索全部公告记录
        Try
            objDS = GetData(sqlstr)
            For i = 0 To objDS.Tables(0).Rows.Count - 1
                dboard(i) = objDS.Tables(0).Rows(i)("content").ToString + "(" + changetime(objDS.Tables(0).Rows(i)("addtime").ToString) + ")"
            Next
        Catch
            MsgBox("读取图书馆公告信息错误。", MsgBoxStyle.Information + MsgBoxStyle.OKOnly, "错误")
        End Try
        board.Text = "    请遵守图书馆管理规定。"
        Timer1.Interval = boardflash
        Timer1.Start() '公告刷新开始
        Call readlandbook()
    End Sub

    Private Sub ShowData(ByVal rt As Integer)
        Dim li As New ListViewItem
        li.SubItems.Clear()
        li.SubItems(0).Text = objDS.Tables(0).Rows(rt)("id").ToString
        li.SubItems.Add(objDS.Tables(0).Rows(rt)("name").ToString)
        li.SubItems.Add(objDS.Tables(0).Rows(rt)("author").ToString)
        li.SubItems.Add(showclassify(objDS.Tables(0).Rows(rt)("classify")))
        li.SubItems.Add(objDS.Tables(0).Rows(rt)("bookconcern").ToString)
        li.SubItems.Add(changetime(objDS.Tables(0).Rows(rt)("addtime").ToString))
        li.SubItems.Add(objDS.Tables(0).Rows(rt)("amount").ToString)
        li.SubItems.Add(objDS.Tables(0).Rows(rt)("remain").ToString)
        li.SubItems.Add(objDS.Tables(0).Rows(rt)("loandegree").ToString)
        list_book.Items.Add(li) '插入到   list_book
    End Sub

    Function showclassname(ByVal classid) As String
        sqlstr2 = "select * from class where id=" & classid & ""
        objDS2 = GetData(sqlstr2)
        If objDS2.Tables(0).Rows.Count > 0 Then
            Return objDS2.Tables(0).Rows(0)("name").ToString
        Else
            Return "不详"
        End If
    End Function

    Function changetime(ByVal time As String)
        Return Mid(time, 1, InStr(time, " ") - 1) '截取空格前的数据
    End Function

    Sub readlandbook()
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''读取学生借阅图书信息
        Dim item As String, sitem() As String, j As Integer
        sqlstr = "select * from landinfo where studentid=" & stuID & " and hadreturn= 0"
        Try
            landinfo_info.Items.Clear()
            objDS = GetData(sqlstr)
            If objDS.Tables(0).Rows.Count <> 0 Then
                hadloadnum = objDS.Tables(0).Rows.Count
                landinfo_hadnum.Text = hadloadnum.ToString & " 本"  '已借图书数目
                landinfo_cannum.Text = (canlandnum - hadloadnum).ToString & " 本"
                If canlandnum - hadloadnum <= 0 Then
                    btland.Enabled = False '如果已经不能再借,按钮"借阅"不可按
                    Menu_land.Enabled = False
                Else
                    btland.Enabled = True
                    Menu_land.Enabled = True
                End If
                For j = 0 To objDS.Tables(0).Rows.Count - 1
                    sqlstr2 = "select * from bookinfo where id=" & objDS.Tables(0).Rows(j)("bookid").ToString & "" '将图书自动编号转化为图书名,并显示在Checkedlistbox中
                    objDS2 = GetData(sqlstr2)
                    If objDS2.Tables(0).Rows.Count > 0 Then
                        landinfo_info.Items.Add(objDS2.Tables(0).Rows(0)("name").ToString & "                 ," & objDS2.Tables(0).Rows(0)("id").ToString, False)  '将书的ID存储在书名中,以便后面读取更新数据库
                    Else
                        landinfo_info.Items.Add("不详                 ,0")
                    End If
                Next
            Else
                landinfo_hadnum.Text = "0 本" '已借图书数目
                landinfo_cannum.Text = canlandnum.ToString & " 本"  '可以借阅图书的数目
                btland.Enabled = True
                Menu_land.Enabled = True
            End If
        Catch
            MsgBox("图书借阅错误。", MsgBoxStyle.Information + MsgBoxStyle.OKOnly, "错误")
        End Try
    End Sub

    Function showclassify(ByVal classifyid) As String
        sqlstr2 = "select * from classify where id=" & classifyid & ""
        objDS2 = GetData(sqlstr2)
        If objDS2.Tables(0).Rows.Count > 0 Then
            Return objDS2.Tables(0).Rows(0)("name").ToString
        Else
            Return "不详"
        End If
    End Function

    Function hadlandnum()
        Dim sqlstrnum As String, objDSnum As DataSet
        sqlstrnum = "select * from landinfo where studentid=" & stuID & " and hadreturn=0"
        objDSnum = GetData(sqlstrnum)
        Return objDSnum.Tables(0).Rows.Count
    End Function

    Private Sub list_dy_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles list_dy.SelectedIndexChanged
        Select Case list_dy.Text
            Case ""
                listby = "name"
            Case "编号"
                listby = "id"
            Case "书名"
                listby = "name"
            Case "分类"
                listby = "classify"
            Case "作者"
                listby = "author"
            Case "出版社"
                listby = "bookconcern"
            Case "进馆时间"
                listby = "addtime"
            Case "总数量"
                listby = "amount"
            Case "剩余数量"
                listby = "remain"
            Case "借阅次数"
                listby = "loandegree"
        End Select
        showlist("system")
    End Sub

    Function showlist(ByVal sf As String)  '固定查询列表函数
        If sf = "system" Then
            If listby = "" Then listby = "name"
            sqlstr = "select * from bookinfo order by " + listby + " " + condition + ""
        Else
            If listall <> "classify" Then
                sqlstr = "select * from bookinfo where " + listall + " LIKE '%" + filter2(list_keyword.Text) + "%'"
            Else '如果以分类查询
                Dim m As Integer
                sqlstr2 = "select id from classify where name LIKE '%" + filter2(list_keyword.Text) + "%'"
                objDS2 = GetData(sqlstr2)
                For m = 0 To objDS2.Tables(0).Rows.Count - 1
                    sqlstr = "select * from bookinfo where classify = " & objDS2.Tables(0).Rows(m)("id") & ""
                    Try
                        objDS = GetData(sqlstr)
                        list_book.Items.Clear()
                        For i = 0 To objDS.Tables(0).Rows.Count - 1
                            Call ShowData(i)
                        Next
                    Catch
                        MsgBox("图书读取错误。", MsgBoxStyle.Information + MsgBoxStyle.OKOnly, "错误")
                    End Try
                Next
            End If
        End If
        Try
            objDS = GetData(sqlstr)
            list_book.Items.Clear()
            For i = 0 To objDS.Tables(0).Rows.Count - 1
                Call ShowData(i)
            Next
        Catch
            MsgBox("图书读取错误。", MsgBoxStyle.Information + MsgBoxStyle.OKOnly, "错误")
        End Try
    End Function

    Function filter2(ByVal fString) '输入过滤,过滤掉敏感字符 ' " + &
        If fString.length <> 0 Then
            fString = Replace(fString, Chr(34), "") '过滤"
            fString = Replace(fString, Chr(38), "") '过滤&
            fString = Replace(fString, Chr(39), "") '过滤'
            fString = Replace(fString, Chr(43), "") '过滤+
            fString = Replace(fString, Chr(124), "") '过滤|
            list_keyword.Text = fString
            Return fString
        End If
    End Function

    Private Sub list_condition_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles list_condition.SelectedIndexChanged
        If listby = "" Then listby = "name"
        Select Case list_condition.Text
            Case ""
                Menu_byantitone.Checked = False
                Menu_byjust.Checked = True
                condition = "DESC"
            Case "正序"
                Menu_byantitone.Checked = False
                Menu_byjust.Checked = True
                condition = "DESC"
            Case "倒序"
                Menu_byantitone.Checked = True
                Menu_byjust.Checked = False
                condition = ""
        End Select
        showlist("system")
    End Sub

    Private Sub search_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles search.Click
        Dim cansearch As Boolean
        cansearch = True
        If listall = "" Then
            MessageBox.Show("查询对象不能为空", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error)
            list_listall.Focus()
            cansearch = False
        ElseIf list_keyword.Text = "" Then
            MessageBox.Show("查询关键字不能为空", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error)
            list_keyword.Focus()
            cansearch = False
        End If
        If cansearch Then showlist("custom")
    End Sub

    Private Sub btstop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btstop.Click '公告控制
        boardctr()
    End Sub

    Function boardctr()
        If ctrlboard Then
            btstop.Text = "继续"
            Menu_stop.Text = "继续"
            Timer1.Stop()
            ctrlboard = False
        Else
            btstop.Text = "停止"
            Menu_stop.Text = "停止"
            Timer1.Start()
            ctrlboard = True
        End If
    End Function

    Private Sub btland_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btland.Click '点击借阅按钮
        If Not islock Then
            If canland = 1 Then
                land()
            Else
                MessageBox.Show("图书馆暂时没开放", "公告", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
        Else
            MessageBox.Show("由于你借阅的某本书超过时,被暂时锁定。" & ControlChars.CrLf & "请归还该书,锁定自动解除。", "公告", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End If
    End Sub

    Function land()
        '先判断该书是否已经借阅了,然后判断该书是否有剩余,最后更新数据库
        If viewbookid <> 0 Then
            Dim canland As Boolean = True
            Try
                sqlstr = "select * from landinfo where bookid=" & viewbookid & " and studentid=" & stuID & " and hadreturn=0" '判断该书是否已经借阅了
                objDS = GetData(sqlstr)
                If objDS.Tables(0).Rows.Count > 0 Then
                    MsgBox("你已借过该书。", MsgBoxStyle.Information + MsgBoxStyle.OKOnly, "错误")
                    canland = False
                End If

                sqlstr = "select * from bookinfo where id=" & viewbookid & " and remain<=0" '判断该书是否有剩余
                objDS = GetData(sqlstr)
                If objDS.Tables(0).Rows.Count > 0 Then
                    MsgBox("该书没有剩余了。", MsgBoxStyle.Information + MsgBoxStyle.OKOnly, "错误")
                    canland = False
                End If

                If canland Then '更新数据库,添加表landinfo,更新表bookinfo,studentinfo
                    Try
                        sqlstr = "insert into landinfo(bookid,studentid,shouldreturntime) values(" & viewbookid & "," & stuID & ",'" & DateAdd("y", canlanddays, Now()) & "')"
                        objDS = GetData(sqlstr) '添加表landinfo
                    Catch
                        MessageBox.Show("添加表landinfo行错误", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    End Try

                    Try
                        sqlstr = "update studentinfo set lands=lands+1 where id=" & stuID & ""
                        GetData(sqlstr) '更新数据库表studentinfo
                    Catch
                        MessageBox.Show("更新表studentinfo错误", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    End Try

                    Try
                        sqlstr = "update bookinfo set amount=amount+1,remain=remain-1,loandegree=loandegree+1 where id=" & viewbookid & ""
                        GetData(sqlstr) '更新数据库表bookinfo
                    Catch
                        MessageBox.Show("更新表bookinfo错误", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    End Try
                    Call readlandbook()
                    Mess

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -