VB+Access设计图书管理系统-源码+图示
基于VB+ACCESS的图书馆管理系统的设计
的性能。 4.2.4 数据的完整性和一致性 为了保证数据库的完整性和一致性,设计人员在设计过 程中会设计较多的表间关联,因为,这样能降低数据的冗余。 建立表间关联后,对父表和子表的删除、插入、更新等操作 都是要占用系统资源的。 4.2.5 事务的使用 事务是必须一次完成的一组操作。虽然这些操作是单个 的操作,但数据库系统能够保证这组操作要么全部都完成, 要么一点都不做。正是大型数据库的这一特性,使得数据的 完整性得到了极大的保证。 4.2.6 数据库性能调整 在计算机硬件配置和网络设计确定的情况下 , 影响到应 用系统性能的因素主要是数据库性能和客户端程序设计。大 部分数据库设计员首先进行逻辑设计,然后再进行物理设计。 通过数据库逻辑设计,可以去除了所有冗余数据,从而提高 了数据吞吐速度,保证了数据的完整性,也清晰地表达了数 据元素之间的关系。 4.2.7 数据类型的选择 数据类型的合理选择对于数据库的性能和操作具有很大 的影响。 4.3 系统功能流程图 系统功能流程图如图 1 所示。
1 背景分析
当今是信息的时代,在各行业各领域都离不开对大量信 息的综合处理和科学使用。而计算机则被广泛应用于信息管 理当中。计算机能够对各类信息进行快速管理。使用计算机 进行信息处理和综合使用,不仅大大提高了工作效率,而且 在安全性方面,也有保证。对于要处理和使用大量、复杂的 信息,计算机能够充分体现出它的优越性。计算机对信息进 行高效管理的前提是需开发好相应的信息管理系统。在图书 馆日常运作和管理中,图书的入库、藏书的分类和读者借阅 等各方面的管理,都包含大量信息数据的处理。以往,对以 上信息的管理,主要是使用文本、表格等纸介质的手工处理, 对于图书借阅的基本情况,例如读者借书时间、还书时间、 借阅权限、借书超期等核对和统计等,一般使用人工检查核 实、手抄登记,因为数据较多,抄写登记工作量大,往往容 易出错。工作效率非常低,管理不科学。虽然图书馆已配用 计算机,但是较多是用于简单的资料输入和保存,缺乏规范、 高效的管理系统。基于这一现状,有必要建立一个性能良好 的图书管理系统,使图书管理工作系统、高效、规范。本系 统就是针对图书馆信息管理而设计的。
vb图书管理系统源代码
Borbook:Public sqltxt As StringPublic rno As String '保存读者借书证号Public bno As String '保存读者图书编号Public xm As String '保存读者姓名Public dw As String '保存读者单位Public rs As ADODB.RecordsetPrivate Sub Comm1_Click()rno = Trim(Text1(0).Text)If rno = "" ThenMsgBox "借书证号不能为空,请输入", vbOKOnly, "信息提示"Comm2.Enabled = FalseElsesqltxt = "select * from reader where 借书证号='" + rno + "'"Set rs = exesql(sqltxt)If rs.RecordCount = 0 ThenMsgBox "该读者未登记,不能借书", vbOKOnly, "信息提示"Comm2.Enabled = FalseElseText2(0).Text = rs.Fields("姓名")Text2(1).Text = str(rs.Fields("借书总数"))Text2(2).Text = str(rs.Fields("借书总数") - rs.Fields("已借书数"))If Val(Trim(Text2(2).Text)) > 0 Thenxm = rs.Fields("姓名")dw = rs.Fields("单位")Comm2.Enabled = TrueElseMsgBox "该读者已借满图书,不能再借!", vbOKOnly, "信息提示"Comm2.Enabled = FalseEnd IfEnd IfEnd IfEnd SubPrivate Sub Comm2_Click()If Val(Trim(Text2(2).Text)) = 0 ThenMsgBox "该读者已借满图书,不能再借!", vbOKOnly, "信息提示"Comm2.Enabled = FalseExit SubEnd Ifbno = Trim(Text1(1).Text)If bno = "" ThenMsgBox "图书编号不能为空,请输入", vbOKOnly, "信息提示"Comm2.Enabled = FalseElsesqltxt = "select * from book where 图书编号='" + bno + "'"Set bs = exesql(sqltxt)If bs.RecordCount = 0 ThenMsgBox "图书编号不对旳,请重新输入", vbOKOnly, "信息提示"ElseIf bs.Fields("借否") = "借" ThenMsgBox "该图书编号相应旳图书已借出,不能再借!", vbOKOnly, "信息提示"Elsesqltxt = "select * from borrow"Set brs = exesql(sqltxt)brs.AddNewbrs.Fields("图书编号") = bnobrs.Fields("书名") = bs.Fields("书名")brs.Fields("作者") = bs.Fields("作者")brs.Fields("出版社") = bs.Fields("出版社")brs.Fields("借书证号") = rnobrs.Fields("姓名") = xmbrs.Fields("单位") = dwbrs.Fields("借书日期") = Datebrs.Updatebs.Fields("借否") = "借"bs.Updaters.Fields("已借书数") = rs.Fields("已借书数") + 1rs.UpdateText2(2).Text = str(rs.Fields("借书总数") - rs.Fields("已借书数"))End IfEnd IfEnd IfEnd SubPrivate Sub retCom_Click()Unload MeEnd SubPrivate Sub Form_Load()Comm2.Enabled = FalseEnd SubPrivate Sub DataGrid1_Click()End SubPrivate Sub Form_Load()'阐明:为什么使用recs,而不直接使用adodc1.recordset.recordcount?在调用edbook1窗体添加一种记录(拟定)后,再'返回到本表单,若不在Form_Activate()事件过程中调用adodc1.refresh进行刷新,adodc1.recordset.recordcount值'仍未增1,这样调用encomm过程时出错;若在Form_Activate()事件过程中调用adodc1.refresh进行刷新,'adodc1.recordset.recordcount值增1了,调用encomm过程时也对旳,但返回本窗体时,目前行总是第一行,显然也不行,'由于顾客在添加或修改后但愿在datagrid1中显示目前操作旳那条记录.recs = Adodc1.Recordset.RecordCountEnd SubPrivate Sub Form_Activate()DataGrid1.SetFocusCall encommEnd SubPrivate Sub Comm1_Click()flag = 1edbook1.Show vbModalEnd SubPrivate Sub Comm2_Click()flag = 2edbook1.Show vbModalEnd SubPrivate Sub Comm3_Click()If MsgBox("真旳要删除[" + Trim(Adodc1.Recordset.Fields("书名")) + "]吗?", vbYesNo, "信息提示") = vbYes ThenAdodc1.Recordset.Deleterecs = recs - 1Call encommEnd IfEnd SubPrivate Sub Comm4_Click()Unload MePrivate Sub selcmd1_Click() '拟定Dim str As Stringstr = "" '条件体现式If Trim(Text1(0).Text) <> "" ThenIf str = "" Thenstr = "图书编号='" + Trim(Text1(0).Text) + "'"Elsestr = str + " and 图书编号='" + Trim(Text1(0).Text) + "'"End IfEnd IfIf Trim(Text1(1).Text) <> "" ThenIf str = "" Thenstr = "书名='" + Trim(Text1(1).Text) + "'"Elsestr = str + " and 书名='" + Trim(Text1(1).Text) + "'"End IfEnd IfIf Trim(Text1(2).Text) <> "" ThenIf str = "" Thenstr = "作者='" + Trim(Text1(2).Text) + "'"Elsestr = str + " and 作者='" + Trim(Text1(2).Text) + "'"End IfEnd IfIf Trim(Text1(3).Text) <> "" ThenIf str = "" Thenstr = "出版社='" + Trim(Text1(3).Text) + "'"Elsestr = str + " and 出版社='" + Trim(Text1(3).Text) + "'"End IfEnd IfIf Trim(Text1(4).Text) <> "" ThenIf str = "" Thenstr = "借否='" + Trim(Text1(4).Text) + "'"Elsestr = str + " and 借否='" + Trim(Text1(4).Text) + "'"End IfEnd IfIf str <> "" ThenAdodc1.RecordSource = "select * from book where " + strAdodc1.RefreshElseAdodc1.RecordSource = "select * from book"Adodc1.RefreshEnd Ifrecs = Adodc1.Recordset.RecordCountIf recs = 0 ThenMsgBox "没有任何满足条件旳记录", vbOKOnly, "信息提示" End IfCall encommEnd SubPrivate Sub selcmd2_Click() '重置Text1(0).Text = ""Text1(1).Text = ""Text1(2).Text = ""Text1(3).Text = ""Text1(4).Text = ""End SubPrivate Sub encomm() '自定义子过程:判断Adodc1中与否存在记录If recs = 0 ThenComm2.Enabled = FalseComm3.Enabled = FalseElseComm2.Enabled = TrueComm3.Enabled = TrueEnd IfEnd SubPrivate Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer) Call endata(KeyAscii)End SubEdbook1:Dim rs As ADODB.RecordsetPrivate Sub Form_Load()If flag = 2 Then '修改操作Text1(0).Text = edbook.Adodc1.Recordset.Fields("图书编号") & ""Text1(1).Text = edbook.Adodc1.Recordset.Fields("分类号") & ""Text1(2).Text = edbook.Adodc1.Recordset.Fields("书名") & ""Text1(3).Text = edbook.Adodc1.Recordset.Fields("作者") & ""DataCombo1.Text = edbook.Adodc1.Recordset.Fields("出版社") & ""Text1(4).Text = edbook.Adodc1.Recordset.Fields("定价") & ""Text1(5).Text = edbook.Adodc1.Recordset.Fields("入库日期") & ""Text1(0).Enabled = FalseElse '添加操作Text1(5).Text = DateEnd IfEnd SubPrivate Sub Form_Activate()Adodc1.Refresh '数据源刷新End SubPrivate Sub Comm1_Click()If Trim(Text1(0).Text) = "" Or Trim(Text1(2).Text) = "" Or Trim(Text1(3).Text) = "" Or Trim(Text1(5).Text) = "" ThenMsgBox "加*数据项不能为空,请重新设立", vbOKOnly, "信息提示"Exit SubEnd IfIf flag = 1 Then '添加操作sqltxt = "select * from book where 图书编号='" + Trim(Text1(0).Text) + "'" '对book中记录进行判断Set rs = exesql(sqltxt)If rs.RecordCount <> 0 ThenMsgBox "存在相似旳图书编号", vbOKOnly, "信息提示"Text1(0).SetFocusrs.CloseExit SubElsers.CloseEnd Ifedbook.Adodc1.Recordset.AddNewedbook.Adodc1.Recordset.Fields("图书编号") = Trim(Text1(0).Text)edbook.Adodc1.Recordset.Fields("分类号") = Trim(Text1(1).Text)edbook.Adodc1.Recordset.Fields("书名") = Trim(Text1(2).Text)edbook.Adodc1.Recordset.Fields("作者") = Trim(Text1(3).Text)edbook.Adodc1.Recordset.Fields("出版社") = Trim(DataCombo1.Text)edbook.Adodc1.Recordset.Fields("定价") = Val(Trim(Text1(4).Text))edbook.Adodc1.Recordset.Fields("入库日期") = Format(Trim(Text1(5).Text), "yyyy-mm-dd")edbook.Adodc1.Recordset.Fields("借否") = "否"edbook.Adodc1.Recordset.Updaterecs = recs + 1Else '修改操作edbook.Adodc1.Recordset.Fields("图书编号") = Trim(Text1(0).Text)edbook.Adodc1.Recordset.Fields("分类号") = Trim(Text1(1).Text)edbook.Adodc1.Recordset.Fields("书名") = Trim(Text1(2).Text)edbook.Adodc1.Recordset.Fields("作者") = Trim(Text1(3).Text)edbook.Adodc1.Recordset.Fields("出版社") = Trim(DataCombo1.Text)edbook.Adodc1.Recordset.Fields("定价") = Val(Trim(Text1(4).Text))edbook.Adodc1.Recordset.Fields("入库日期") = Format(Trim(Text1(5).Text), "yyyy-mm-dd")edbook.Adodc1.Recordset.UpdateEnd IfUnload MeEnd SubPrivate Sub Comm2_Click()Unload MeEnd SubPrivate Sub selcom_Click()tna = "press"cap = "出版社"edrec.Show vbModalEnd SubPrivate Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)If Index = 1 ThenIf KeyAscii = 13 Thensqltxt = "select * from book where 分类号='" + Trim(Text1(1).Text) + "'" '对book中记录进行判断Set rs = exesql(sqltxt)If rs.RecordCount > 0 ThenText1(2).Text = rs.Fields("书名")Text1(3).Text = rs.Fields("作者")Text1(4).Text = rs.Fields("定价")DataCombo1.Text = rs.Fields("出版社")rs.CloseText1(5).SetFocusElseCall endata(KeyAscii)End IfEnd IfElseCall endata(KeyAscii)End IfEnd SubPrivate Sub DataCombo1_KeyPress(KeyAscii As Integer) Call endata(KeyAscii)End SubDim msg As StringPrivate Sub Form_Load()recs = Adodc1.Recordset.RecordCountEnd SubPrivate Sub Form_Activate()Call encommEnd SubPrivate Sub Comm1_Click()flag = 1edlev1.Show vbModalEnd SubPrivate Sub Comm2_Click()flag = 2edlev1.Show vbModalEnd SubPrivate Sub Comm3_Click()If MsgBox("真旳要删除[" + Trim(Adodc1.Recordset.Fields("级别")) + "]吗?", vbYesNo, "信息提示") = vbYes ThenAdodc1.Recordset.Deleterecs = recs - 1Call encommEnd IfEnd SubPrivate Sub Comm4_Click()Unload MeEnd SubPrivate Sub encomm()If recs = 0 ThenComm2.Enabled = FalseComm3.Enabled = FalseElseComm2.Enabled = TrueComm3.Enabled = TrueEnd IfEnd SubDim cond As StringPrivate Sub Form_Load()If flag = 2 ThenText1(0).Text = edlev.Adodc1.Recordset.Fields("级别")Text1(1).Text = edlev.Adodc1.Recordset.Fields("过期罚款")Text1(2).Text = edlev.Adodc1.Recordset.Fields("借书总数")Text1(3).Text = edlev.Adodc1.Recordset.Fields("借书天数")End IfEnd SubPrivate Sub Comm1_Click()If Trim(Text1(0).Text) = "" Or Trim(Text1(1).Text) = "" Or Trim(Text1(2).Text) = "" Or _ Trim(Text1(3).Text) = "" ThenMsgBox "数据项不全,请重新设立", vbOKOnly, "信息提示"Text1(0).SetFocusExit SubEnd IfIf flag = 1 Then '添加操作If edlev.Adodc1.Recordset.RecordCount > 0 Then '原记录个数大于0cond = "级别='" + Trim(Text1(0).Text) + "'"edlev.Adodc1.Recordset.MoveFirst '每次从头开始查找edlev.Adodc1.Recordset.Find (cond)If Not edlev.Adodc1.Recordset.EOF() ThenMsgBox "存在完全相似旳记录", vbOKOnly, "信息提示"Text1(0).SetFocusExit SubEnd IfEnd Ifedlev.Adodc1.Recordset.AddNewedlev.Adodc1.Recordset.Fields("级别") = Trim(Text1(0).Text)edlev.Adodc1.Recordset.Fields("过期罚款") = Val(Trim(Text1(1).Text))edlev.Adodc1.Recordset.Fields("借书总数") = Val(Trim(Text1(2).Text))edlev.Adodc1.Recordset.Fields("借书天数") = Val(Trim(Text1(3).Text))edlev.Adodc1.Recordset.Updaterecs = recs + 1Else '修改操作n = edlev.Adodc1.Recordset.AbsolutePositioncond = "级别='" + Trim(Text1(0).Text) + "'"edlev.Adodc1.Recordset.MoveFirst '每次从头开始查找edlev.Adodc1.Recordset.Find (cond)If Not edlev.Adodc1.Recordset.EOF() And edlev.Adodc1.Recordset.AbsolutePosition <> n ThenMsgBox "存在完全相似旳记录", vbOKOnly, "信息提示"edlev.Adodc1.Recordset.MoveFirst '这两个语句恢复原记录位置edlev.Adodc1.Recordset.Move (n - 1)Text1(0).SetFocusExit SubEnd Ifedlev.Adodc1.Recordset.MoveFirst '这两个语句恢复原记录位置edlev.Adodc1.Recordset.Move (n - 1)edlev.Adodc1.Recordset.Fields("级别") = Trim(Text1(0).Text)edlev.Adodc1.Recordset.Fields("过期罚款") = Val(Trim(Text1(1).Text))edlev.Adodc1.Recordset.Fields("借书总数") = Val(Trim(Text1(2).Text))edlev.Adodc1.Recordset.Fields("借书天数") = Val(Trim(Text1(3).Text))edlev.Adodc1.Recordset.UpdateEnd IfUnload MeEnd SubPrivate Sub Comm2_Click()Unload MeEnd SubEdreader:Private Sub DataGrid1_Click()End SubPrivate Sub Form_Load()recs = Adodc1.Recordset.RecordCountEnd SubPrivate Sub Form_Activate()DataGrid1.SetFocusCall encommEnd SubPrivate Sub Comm1_Click()flag = 1edreader1.Show vbModalEnd SubPrivate Sub Comm2_Click()flag = 2edreader1.Show vbModalEnd SubPrivate Sub Comm3_Click()If MsgBox("真旳要删除[" + Trim(Adodc1.Recordset.Fields("姓名")) + "]吗?", vbYesNo, "信息提示") = vbYes ThenAdodc1.Recordset.Deleterecs = recs - 1Call encommEnd IfEnd SubPrivate Sub Comm4_Click()Unload MeEnd SubPrivate Sub selcmd1_Click() '设立条件拟定Dim str As Stringstr = "" '条件体现式If Trim(Text1(0).Text) <> "" ThenIf str = "" Thenstr = "借书证号='" + Trim(Text1(0).Text) + "'"Elsestr = str + " and 借书证号='" + Trim(Text1(0).Text) + "'"End IfEnd IfIf Trim(Text1(1).Text) <> "" ThenIf str = "" Thenstr = "姓名='" + Trim(Text1(1).Text) + "'"Elsestr = str + " and 姓名='" + Trim(Text1(1).Text) + "'"End IfEnd IfIf Trim(Text1(2).Text) <> "" ThenIf str = "" Thenstr = "单位='" + Trim(Text1(2).Text) + "'"Elsestr = str + " and 单位='" + Trim(Text1(2).Text) + "'"End IfEnd IfIf Trim(Text1(3).Text) <> "" ThenIf str = "" Thenstr = "级别='" + Trim(Text1(3).Text) + "'"Elsestr = str + " and 级别='" + Trim(Text1(3).Text) + "'"End IfEnd IfIf Trim(Text1(4).Text) <> "" ThenIf str = "" Thenstr = "性别='" + Trim(Text1(4).Text) + "'"Elsestr = str + " and 性别='" + Trim(Text1(4).Text) + "'"End IfEnd IfIf str <> "" ThenAdodc1.RecordSource = "select * from reader where " + strAdodc1.RefreshElseAdodc1.RecordSource = "select * from reader"Adodc1.RefreshEnd Ifrecs = Adodc1.Recordset.RecordCountIf recs = 0 ThenMsgBox "没有任何满足条件旳记录", vbOKOnly, "信息提示" End IfCall encommEnd SubPrivate Sub selcmd2_Click() '设立条件重置Text1(0).Text = ""Text1(1).Text = ""Text1(2).Text = ""Text1(3).Text = ""Text1(4).Text = ""End SubPrivate Sub encomm() '自定义子过程:判断Adodc1中与否存在记录If recs = 0 ThenComm2.Enabled = FalseComm3.Enabled = FalseElseComm2.Enabled = TrueComm3.Enabled = TrueEnd IfEnd SubPrivate Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer) Call endata(KeyAscii)End SubEdreader1:Dim rs As ADODB.RecordsetPrivate Sub Form_Load()If flag = 2 Then '修改操作Text1(0).Text = edreader.Adodc1.Recordset.Fields("借书证号") & ""Text1(1).Text = edreader.Adodc1.Recordset.Fields("姓名") & ""If edreader.Adodc1.Recordset.Fields("性别") = "男" Thenopt1.Value = TrueElseopt2.Value = TrueEnd IfDataCombo2.Text = edreader.Adodc1.Recordset.Fields("单位") & ""DataCombo1.Text = edreader.Adodc1.Recordset.Fields("级别") & ""Text1(2).Text = edreader.Adodc1.Recordset.Fields("过期罚款") & ""Text1(3).Text = edreader.Adodc1.Recordset.Fields("借书总数") & ""Text1(4).Text = edreader.Adodc1.Recordset.Fields("借书天数") & ""Text1(5).Text = edreader.Adodc1.Recordset.Fields("登记日期") & ""Text1(0).Enabled = FalseElse '添加操作Text1(5).Text = DateEnd IfEnd SubPrivate Sub Form_Activate()Adodc1.Refresh '数据源刷新Adodc2.Refresh '数据源刷新DataCombo1.RefreshDataCombo2.RefreshEnd SubPrivate Sub Comm1_Click()If Trim(Text1(0).Text) = "" Or Trim(Text1(1).Text) = "" Or Trim(Text1(5).Text) = "" Or Trim(DataCombo1.Text) = "" ThenMsgBox "加*数据项不能为空,请重新设立", vbOKOnly, "信息提示"Exit SubEnd IfIf flag = 1 Then '添加操作sqltxt = "select * from reader where 借书证号='" + Trim(Text1(0).Text) + "'" '对reader中记录进行判断Set rs = exesql(sqltxt)If rs.RecordCount <> 0 ThenMsgBox "存在相似旳借书证号", vbOKOnly, "信息提示"Text1(0).SetFocusrs.CloseExit SubElsers.CloseEnd Ifedreader.Adodc1.Recordset.AddNewedreader.Adodc1.Recordset.Fields("借书证号") = Trim(Text1(0).Text)edreader.Adodc1.Recordset.Fields("姓名") = Trim(Text1(1).Text)If opt1.Value = True Thenedreader.Adodc1.Recordset.Fields("性别") = "男"Elseedreader.Adodc1.Recordset.Fields("性别") = "女"End Ifedreader.Adodc1.Recordset.Fields("单位") = Trim(DataCombo2.Text)edreader.Adodc1.Recordset.Fields("级别") = Trim(DataCombo1.Text)edreader.Adodc1.Recordset.Fields("过期罚款") = Trim(Text1(2).Text)edreader.Adodc1.Recordset.Fields("借书总数") = Val(Trim(Text1(3).Text))edreader.Adodc1.Recordset.Fields("借书天数") = Val(Trim(Text1(4).Text))edreader.Adodc1.Recordset.Fields("已借书数") = 0edreader.Adodc1.Recordset.Fields("登记日期") = Format(Trim(Text1(5).Text), "yyyy-mm-dd")edreader.Adodc1.Recordset.Updaterecs = recs + 1Else '修改操作edreader.Adodc1.Recordset.Fields("借书证号") = Trim(Text1(0).Text)edreader.Adodc1.Recordset.Fields("姓名") = Trim(Text1(1).Text)If opt1.Value = True Thenedreader.Adodc1.Recordset.Fields("性别") = "男"Elseedreader.Adodc1.Recordset.Fields("性别") = "女"End Ifedreader.Adodc1.Recordset.Fields("单位") = Trim(DataCombo2.Text)edreader.Adodc1.Recordset.Fields("级别") = Trim(DataCombo1.Text)edreader.Adodc1.Recordset.Fields("过期罚款") = Trim(Text1(2).Text)edreader.Adodc1.Recordset.Fields("借书总数") = Val(Trim(Text1(3).Text))edreader.Adodc1.Recordset.Fields("借书天数") = Val(Trim(Text1(4).Text))edreader.Adodc1.Recordset.Fields("登记日期") = Format(Trim(Text1(5).Text), "yyyy-mm-dd")edreader.Adodc1.Recordset.Updateedreader.Adodc1.Recordset.UpdateEnd IfUnload MeEnd SubPrivate Sub Comm2_Click()Unload MeEnd SubPrivate Sub selcom1_Click()edlev.Show vbModalEnd SubPrivate Sub selcom2_Click()tna = "depart"cap = "单位"edrec.Show vbModalEnd SubPrivate Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)Call endata(KeyAscii)End SubPrivate Sub DataCombo1_LostFocus()If Adodc1.Recordset.RecordCount > 0 ThenIf Trim(DataCombo1.Text) <> "" ThenAdodc1.Recordset.MoveFirstAdodc1.Recordset.Find ("级别='" & Trim(DataCombo1.Text) & "'")Text1(2).Text = Adodc1.Recordset.Fields("过期罚款")Text1(3).Text = Adodc1.Recordset.Fields("借书总数")Text1(4).Text = Adodc1.Recordset.Fields("借书天数")End IfElseMsgBox "没有任何级别项可选,请设立", vbOKOnly, "信息提示" End IfEnd SubPrivate Sub DataCombo1_KeyPress(KeyAscii As Integer)Call endata(KeyAscii)End SubPrivate Sub DataCombo2_KeyPress(KeyAscii As Integer)endata (KeyAscii)End SubDim msg As StringPrivate Sub Form_Load()Adodc1.RecordSource = "select * from " + tnaAdodc1.Refreshrecs = Adodc1.Recordset.RecordCountDataGrid1.Columns(0).Caption = capDataGrid1.Columns(0).DataField = "fn"End SubPrivate Sub Form_Activate()Call encommEnd SubPrivate Sub Comm1_Click()flag = 1edrec1.Show vbModalEnd SubPrivate Sub Comm2_Click()flag = 2edrec1.Show vbModalEnd SubPrivate Sub Comm3_Click()If MsgBox("真旳要删除[" + Trim(Adodc1.Recordset.Fields("fn")) + "]吗?", vbYesNo, "信息提示") = vbYes ThenAdodc1.Recordset.Deleterecs = recs - 1Call encommEnd IfEnd SubPrivate Sub Comm4_Click()Adodc1.Recordset.UpdateBatchAdodc1.Recordset.CloseUnload MeEnd SubPrivate Sub encomm()If recs = 0 ThenComm2.Enabled = FalseComm3.Enabled = FalseElseComm2.Enabled = TrueComm3.Enabled = TrueEnd IfEnd SubDim cond As StringPrivate Sub Form_Load()Label1.Caption = capIf flag = 1 ThenText1.Text = ""ElseText1.Text = edrec.Adodc1.Recordset.Fields("fn")End IfEnd SubPrivate Sub Comm1_Click()If Trim(Text1.Text) = "" ThenMsgBox "数据项不能为空,请重新设立", vbOKOnly, "信息提示"Text1.SetFocusExit SubEnd IfIf flag = 1 Then '添加操作If edrec.Adodc1.Recordset.RecordCount > 0 Then '原记录个数大于0cond = "fn='" + Trim(Text1.Text) + "'"edrec.Adodc1.Recordset.MoveFirst '每次从头开始查找edrec.Adodc1.Recordset.Find (cond)If Not edrec.Adodc1.Recordset.EOF() ThenMsgBox "存在完全相似旳记录", vbOKOnly, "信息提示"Text1.SetFocusExit SubEnd IfEnd Ifedrec.Adodc1.Recordset.AddNewedrec.Adodc1.Recordset.Fields("fn") = Trim(Text1.Text)edrec.Adodc1.Recordset.Updaterecs = recs + 1Else '修改操作n = edrec.Adodc1.Recordset.AbsolutePositioncond = "fn='" + Trim(Text1.Text) + "'"edrec.Adodc1.Recordset.MoveFirst '每次从头开始查找edrec.Adodc1.Recordset.Find (cond)If Not edrec.Adodc1.Recordset.EOF() And edrec.Adodc1.Recordset.AbsolutePosition <> n ThenMsgBox "存在完全相似旳记录", vbOKOnly, "信息提示"edrec.Adodc1.Recordset.MoveFirst '这两个语句恢复原记录位置edrec.Adodc1.Recordset.Move (n - 1)Text1.SetFocusExit SubEnd Ifedrec.Adodc1.Recordset.MoveFirst '这两个语句恢复原记录位置edrec.Adodc1.Recordset.Move (n - 1)edrec.Adodc1.Recordset.Fields("fn") = Trim(Text1.Text)edrec.Adodc1.Recordset.UpdateEnd IfUnload MeEnd SubPrivate Sub Comm2_Click()Unload MeEnd SubMenu:Private Sub MDIForm_Load()If Not userlevel = "系统管理员" Thenmenu21.Enabled = Falsemenu31.Enabled = Falsemenu41.Enabled = Falsemenu42.Enabled = FalseEnd IfEnd SubPrivate Sub menu11_Click()borbook.Show vbModalEnd SubPrivate Sub menu12_Click()retbook.Show vbModalEnd SubPrivate Sub menu13_Click()EndEnd SubPrivate Sub menu21_Click()edbook.Show vbModalEnd SubPrivate Sub menu22_Click()qubook.Show vbModalEnd SubPrivate Sub menu31_Click()edreader.Show vbModalEnd SubPrivate Sub menu32_Click()qureader.Show vbModalEnd SubPrivate Sub menu41_Click()setuser.Show vbModalEnd SubPrivate Sub menu42_Click()If MsgBox("本功能要清除系统中所有数据,真旳初始化吗?", vbYesNo, "确认初始化操作")= vbYes ThenCall deldata("book")Call deldata("reader")Call deldata("borrow")Call deldata("rlevel")Call deldata("depart")Call deldata("press")Call deldata("oper")MsgBox "系统初始化完毕,下次只能以1234/1234(顾客名/口令)进入本系统", vbOKOnly, "信息提示"End IfEnd SubPass:Public n As IntegerPrivate Sub Command1_Click()Dim mrc As ADODB.Recordsettxtsql = "select * from oper where 顾客名='" & _Trim$(Text1(0).Text) & "'" & " And 口令= '" & Trim$(Text1(1).Text) + "'"Set mrc = exesql(txtsql)If mrc.RecordCount = 0 Then '未找到顾客记录n = n + 1If n < 3 ThenMsgBox "没有这个顾客,继续登录", vbOKOnly + vbExclamation, "信息提示"Text1(0).Text = ""Text1(1).Text = ""Text1(0).SetFocusElseMsgBox "已登录失败三次,退出系统", vbOKOnly + vbExclamation, "信息提示"mrc.CloseUnload MeEnd IfElse '找到合法顾客记录userlevel = Trim(mrc.Fields("级别"))mrc.CloseUnload Memenu.Show '调用menu窗体End IfEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()n = 0 'n保存登录旳次数End SubPrivate Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)Call endata(KeyAscii)End SubQubook:Private Sub Comm1_Click()Dim sqltxt As StringIf Adodc1.Recordset.Fields("借否") = "借" Thenno = Trim(Adodc1.Recordset.Fields("图书编号"))sqltxt = "select * from borrow where 图书编号='" + no + "'"Set rs = exesql(sqltxt)If rs.RecordCount = 0 ThenMsgBox "该图书没有借书记录", vbOKOnly, "信息提示"ElseMsgBox "图书编号:" + no + Chr(10) + Chr(13) + _"书名:" + Trim(rs.Fields("书名")) + Chr(10) + Chr(13) + _"借书人:" + Trim(rs.Fields("姓名")) + Chr(10) + Chr(13) + _"单位:" + Trim(rs.Fields("单位")) + Chr(10) + Chr(13) + _"借书日期:" + Format(rs.Fields("借书日期"), "yyyy.mm.dd"), vbOKOnly, "查找成果"End Ifrs.CloseElseMsgBox "该书没有外借,不能显示借书人", vbOKOnly, "信息提示"End IfEnd SubPrivate Sub Comm2_Click()Unload MeEnd SubPrivate Sub Form_Activate()Adodc1.RefreshDataGrid1.RefreshDataGrid1.SetFocusCall encommEnd SubPrivate Sub selcmd1_Click() '设立条件拟定Dim str As Stringstr = "" '条件体现式If Trim(Text1(0).Text) <> "" ThenIf str = "" Thenstr = "图书编号='" + Trim(Text1(0).Text) + "'"Elsestr = str + " and 图书编号='" + Trim(Text1(0).Text) + "'"End IfEnd IfIf Trim(Text1(1).Text) <> "" ThenIf str = "" Thenstr = "书名='" + Trim(Text1(1).Text) + "'"Elsestr = str + " and 书名='" + Trim(Text1(1).Text) + "'"End IfEnd IfIf Trim(Text1(2).Text) <> "" ThenIf str = "" Thenstr = "作者='" + Trim(Text1(2).Text) + "'"Elsestr = str + " and 作者='" + Trim(Text1(2).Text) + "'"End IfEnd IfIf Trim(Text1(3).Text) <> "" ThenIf str = "" Thenstr = "出版社='" + Trim(Text1(3).Text) + "'"Elsestr = str + " and 出版社='" + Trim(Text1(3).Text) + "'"End IfEnd IfIf Trim(Text1(4).Text) <> "" ThenIf str = "" Thenstr = "借否='" + Trim(Text1(4).Text) + "'"Elsestr = str + " and 借否='" + Trim(Text1(4).Text) + "'"End IfEnd IfIf Trim(Text1(5).Text) <> "" ThenIf str = "" Thenstr = "定价=" + Trim(Text1(5).Text)Elsestr = str + " and 定价=" + Trim(Text1(5).Text)End IfEnd IfIf str <> "" ThenAdodc1.RecordSource = "select * from book where " + strAdodc1.RefreshElseAdodc1.RecordSource = "select * from book"Adodc1.RefreshEnd IfIf Adodc1.Recordset.RecordCount = 0 ThenMsgBox "没有任何满足条件旳记录", vbOKOnly, "信息提示"。
VB计算机图书管理系统毕业设计
VB计算机图书管理系统毕业设计摘要在图书管理系统用计算机管理图书是一种计算机应用技术的创新,在计算机还未普及之前图书管理都是由图书管理人员手工记帐的方式来操作的.现在一般的图书馆都是采用计算机作为工具的实用的计算机图书管理程序来帮助图书馆管理员进行更有效的图书管理.图书管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
对于前者要求建立起数据一致性和完整性强、数据安全性好的库。
而对于后者则要求应用程序功能完备,易使用等特点。
关键词:图书,面向对象,软件工程,VB技术,Access数据库目录第1章绪论11.1系统开发背景11.2系统的可行性研究11.3系统实施计划2第2章VISUAL BASIC技术 32。
1 VISUAL BASIC的简介和特点32。
2数据库简介32.3本系统用到的主要技术42.3.1 VB技术42。
3.2 Access数据库技术4第3章系统分析与总体设计 53.1 系统的需求分析53.1。
1用户需求分析53.1。
2 系统功能分析63.1.3 系统运行需求63。
2 系统的设计73。
2.1 目标设计73.2.2系统建设目标的可行性73.2。
3系统模块划分73。
3 系统结构8第4章数据库设计与维护84。
1 数据库的设计84。
2 数据库的维护104.3 数据库的具体设计10第5章系统详细设计与实现145。
1系统登陆界面145.2系统主界面145.3各个子窗体代码165.3。
1图书登记子窗体代码165。
3。
2图书借阅子窗体代码185.3.3增加用户子窗体代码195。
3。
4修改密码子窗体代码205。
3。
5查询子窗体代码215.3.6用户登录子窗体代码245.3。
7查询借书信息子窗体代码255.3。
8还书信息子窗体代码26第6章总结29致谢30参考文献31第1章绪论1。
1系统开发背景在图书管理系统用计算机管理图书是一种计算机应用技术的创新,在计算机还未普及之前图书管理都是由图书管理人员手工记帐的方式来操作的。
高校图书管理系统课程设计论文vb+access1
If rs.RecordCount > 0 Then
If Text1.Text <> "" Then
Set rs1 = New ADODB.Recordset
Dim TextUserName
学院课程设计说明书
图书管理系统
学生学号:
学生姓名:
专业班级:
指导教师:
起止日期:
课程设计任务书
一、设计题目:图书管理系统
二、设计目的
1.掌握应用Access设计小型数据库的方法;
2.掌握应用Visual Basic开发系统界面;
3.培养把所学知识运用到具体对象,并能求出解决方案的能力。
三、设计任务及要求
周安排
设 计 内 容
设计时间
第一周
学习与图书管理系统相关的Access数据库知识,收集设计数据库的相关数据,学习Visual Basic程序设计知识及与图书管理系统相关的知识。
2011.11.7
~
2011.11.14
第二周
实现发挥与创新要求的部分内容,完成并提交系统设计作品及课程设计说明书,课程设计答辩。
10
非空
xb
性别
否
文本
10
有效性规则
yhm
用户名
否
文本
10
非空
kl
口令
否
文本
10
非空
二、读者基本情况表包含其属性的字段名称、字段是否设为主键、数据类型、字段大小及是否非空或相关属性的说明如表3-2所示。
图书管理系统(VB)
摘要图书馆信息管理系统是一种在学校中常用的一种系统。
它从图书的入库登记到查询浏览,从读者的管理到图书的借阅,形成了一个整体自动化管理模式。
本论文以学校的图书馆为例。
系统主要有三个方面的内容:一方面是图书管理,主要包括新书入库图书整理图书信息的修改等方面。
一方面是图书借阅,主要包括图书的借阅和归还。
第三方面是信息查询,主要包括图书目录查询读者信息查询等。
论文设计以这三个方面展开,形成一套完整的图书馆信息管理系统。
本设计为图书管理系统,是根据图书馆,用户,管理员等的实际情况为基础,是数据库系统的开发。
把它们转变为有效的数据库设计。
把设计转变为实际的数据库,并且这些数据库带有功能完备、高效能的应用。
因此本人结合开入式图书馆的要求,对数据库管理系统、SQL语言原理、VB 应用程序设计,VB数据库技术进行了较深入的学习和应用,主要完成对图书管理系统的需求分析、功能模块划分、数据库模式分析,并由此设计了数据库结构和应用程序。
系统运行结果证明,本文所设计的图书管理系统可以满足借阅者、图书馆管理员的需要。
关键词:图书,Visualbasic6.0,ACCESS,借阅AbstractThe library information management system is one kind in the school the commonly used one kind of system. It goes into storage from the books registers to the inquiry browsing, from reader's management to books borrowing, has formed a whole automation management pattern. The present paper take the school library as an example. The system mainly has three aspects the contents: On the one hand is the books management, mainly includes the new book to go into storage books reorganization books information aspect and so on revision. On the one hand is the books borrows, mainly includes the books to borrow and to return. The third aspect is the information inquiry, mainly includes the library catalog to inquire the reader information inquiry and so on. The paper design launches by these three aspects, forms a set of complete libraries information management system.This design for the books management system management system, is acts according to the library, the user, the manager and so on the actual situation is a foundation, is the database system development. Transforms them into the effective database design. Transforms the design into the reality database, and these databases have the function to be complete, the high efficiency application.Therefore myself unify enter the type library the request, to the database management system, the SQL language principle, the VB application programming, the VB data bank technology has carried on the thorough study and the application, mainly completes to the books management system management system demand analysis, the function module division, the database pattern analysis, and from this has designed the database structure and the application procedure. The system movement result proved, this article designs the books management system management system may satisfied borrowing, librarian's need.Key word: The books, Visualbasic6.0, ACCESS, borrows目录摘要 (I)ABSTRACT ........................................................... I I 第一章绪论.. (1)1.1课题背景 (1)1.2课题来源和意义 (2)1.3国内外发展概况 (2)1.4系统可行性分析 (3)第二章系统开发技术 (5)2.1系统的架构 (5)2.2系统运行环境操作系统 (5)2.3系统开发环境 (5)2.4开发工具 (6)第三章总体设计 (9)3.1 系统调查 (9)3.2 数据字典 (10)3.3 软件模块结构设计 (11)3.4 数据库设计 (12)3.4.1 概念结构设计 (13)第四章系统实现 (17)4.1登录界面 (17)4.2 系统主界面 (18)4.3 模块功能的实现 (19)第五章结束语 (30)致谢 (31)参考文献 (32)第一章绪论1.1课题背景数据库应用系统开发简介在数据库应用系统开发之前,对开发数据库的基本概念应当了解,对数据库的结构、开发数据库应用程序的步骤、开发体系及方法都应当有相当清晰的了解和认识。
VB图书管理系统源代码
VB图书管理系统源代码Dim yhm As String, mm As String Private Sub Command1_Click()If Text1.Text <> "" Thenyhm = Trim(Text1.Text)mm = Trim(Text2.Text)Do While NotIf Adodc1.Recordset("用户名") = yhm ThenIf Adodc1.Recordset("密码") = mm ThenMsgBox "登录成功!", , "提示"Unload Me第二界面.ShowExit SubElseMsgBox "密码错误,请再输入!!!", , "提示"Text2.Text = ""Text2.SetFocusExit SubEnd IfElseEnd IfLoopIf ThenMsgBox "你的用户名或密码不正解,请重新输入", , "提示"Text1.SetFocusElseMsgBox "请输入您的用户名!!!", , "提示"Text1.Text = ""Text1.SetFocusEnd IfEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()End SubPrivate Sub Form_Load()End SubPrivate Sub Label1_Click()登录界面.ShowPrivate Sub Form_Load()End SubPrivate Sub Label2_Click() 库存管理.ShowEnd SubPrivate Sub Label3_Click() 借阅管理.ShowEnd Sub Private Sub Label1_Click() 信息设置.ShowEnd SubPrivate Sub Label4_Click() 系统维护.ShowEnd SubPrivate Sub Command1_Click() On Error Resume NextText1.SetFocusEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()End SubPrivate Sub Command1_Click() 图书信息设置.ShowEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()End SubPrivate Sub Form_Load()End SubPrivate Sub Label1_Click() 图书信息设置.ShowEnd SubPrivate Sub Label2_Click() 图书信息设置.ShowEnd SubPrivate Sub Label3_Click() 图书信息设置.ShowEnd SubPrivate Sub Label4_Click()挂失.ShowEnd SubPrivate Sub Label5_Click() 图书信息设置.ShowEnd SubPrivate Sub Form_Load()End SubPrivate Sub Label1_Click() 图书信息设置.ShowEnd SubPrivate Sub Label2_Click() 库存图书查询.ShowEnd SubPrivate Sub Command1_Click()tsmc = Text1.TextDo While NotIf Adodc1.Recordset("图书名称") = tsmc Then MsgBox "查找成功!", , "提示"ElseMsgBox "查找条件不能为空!", , "提示"End IfEnd IfEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()End SubPrivate Sub Command1_Click() On Error Resume NextText1.SetFocusEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()End SubPrivate Sub Form_Load()End SubPrivate Sub Label1_Click() 用户管理.ShowEnd SubPrivate Sub Label2_Click() 登录界面.ShowEnd SubPrivate Sub Label3_Click() 修改密码.ShowEnd Sub Private Sub Label4_Click()End SubPrivate Sub Form_Load()End SubPrivate Sub Label2_Click()读者信息设置.ShowEnd SubPrivate Sub 信息设置界面_Click() 图书信息设置.ShowEnd SubDim yhm As String, mm As StringPrivate Sub Command1_Click()If Text1.Text <> "" Thenyhm = Trim(Text1.Text)mm = Trim(Text2.Text)xmm = Trim(Text3.Text)Do While NotIf Adodc1.Recordset("用户名") = yhm ThenIf Adodc1.Recordset("密码") = mm ThenAdodc1.Recordset("密码") = xmmExit SubElseMsgBox "两次输入的密码不一样,请重新输入!!!", , "提示"Text2.Text = ""Text2.SetFocusExit SubEnd IfElseEnd IfEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()End SubPrivate Sub Command1_Click() 登录界面.ShowEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()End Sub。
图书管理系统(VB版)
图书管理系统一.图书管理系统需求分析及设计概要1. 系统的功能要求根据高校图书管理的实际要求,结合本系统开发的要求,对与所要介绍的“图书管理系统”的需求实现如下功能:1、书籍管理部分:这一部分包括书籍类别管理和书籍信息管理两部分,其中书籍类别管理包括添加书籍类别、修改书籍类别等;书籍信息管理包括书籍信息的添加、书籍信息的修改、书籍信息的查询、书籍信息的删除等。
2、读者管理部分:这一部分包括读者类别管理和读者信息管理两部分。
其中读者类别管理包括添加读者类别、修改读者类别;读者信息管理包括添加读者信息、修改读者信息、删除读者信息、查询读者信息等。
3、借阅管理部分:这一部分包括借书信息管理和还书信息管理两部分。
其中,借书信息管理包括借书信息的添加、借书信息的修改、借书信息的查询等;还书信息管理部分包括还书信息的添加、还书信息的修改、还书信息的查询等4、系统管理:包括修改系统用户密码,增加新用户以及退出系统等。
2.系统的需求分析图书馆是一家所有工作手工操作的机构,随着计算机的发展,更多的图书馆采用计算机图书管理系统来实现,这样可以得到更好的管理。
目前,从设计一—采购——编目——流通——管理,一体化的图书馆系统。
主要表现在:(一)采购,对新书的目录,要查存,判断图书馆是不是已经订过了,要人工查阅帐本完成,是很麻烦的事。
(二)验证,要填写两个帐本和盖章,而且在帐本上面很多信息是重复的。
(三)编目,通过手工对书编目,对不同种类的书都要查找书是否已有,如果没有的话对新的书进行查阅中图法宝典来要编目,并且还有填写跟书卡,和大量的查阅用的卡片。
这块消耗的人力最大了。
(四)流通,在借书的时候要填写跟书卡和借书证并保管跟书卡做为借条;在还书的时候工作人员先要花一定时间把保管的跟书卡先找出来,再填写跟书卡和借书证。
然后再把跟书卡和书夹在一起,工作人员要消耗很多时间,大大降低了工作效率。
(五)无法统计书的阅读次数、当天的借还数目等很多统计信息。
用VB设计图书管理系统
VB课程设计报告目录摘要关键字一系统规划1.1系统功能描述1.2功能模块划分1.3 E-R图二系统界面的开发2.1登录界面2.2用户管理界面三系统的详细设计3.1登录界面代码3.2各功能代码四心得体会及认识致谢摘要随着人类社会的发展,人类对知识的需求也不断地增长。
在这种形势下,书籍就渐渐地成为人们获取并增长知识的主要途径,而图书馆就自然而然地在人们的生活中占据了一定的位置。
如何科学地管理图书馆不但关系到读者求知的方便程度,也关系到绘本馆的发展,因此,开发一套完善的图书管理系统就必不可少了,图书管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
经过分析,使用Microsoft公司的Visual Basic6.0为开发工具,利用其提供的各种面向对象的可视化开发平台作为开发工具,采用面向对象技术,图形化的应用开发环境,尤其是它有一个功能极其强大的集成环境提供给开发人员,使得开发人员可通过菜单、界面、图形浏览工具、对话框以及嵌入的各种生成器来轻松地完成各种复杂的操作。
开发过程中不断修正和改进,直到形成用户满意的可行系统。
本文介绍了在Visual Basic6.0环境下采用"自上而下地总体规划,自下而上地应用开发"的策略开发本系统的详细过程,提出实现图书信息管理、资源共享的基本目标,从而推动迈向数字化图书馆的步伐,并阐述系统结构设计和功能设计,从图书的入库登记、借阅登记到查询浏览,形成了一个整体自动化管理模式,从软件工程的角度进行了科学而严谨的阐述。
关键词:图书管理系统;借阅;浏览;编辑;Visual Basic 6.0一系统规划1.1主要功能录入、删除、修改及查询1.2模块结构划分此功能分为几个模块读者种类信息:读者基本信息书籍信息借书信息还书信息1.3建立如下E-R图二系统界面的开发2.1 用户登录用户登录界面1、输入账号与密码点击“登录”直接登录进入管理界面。
图书管理系统VB+access计算机专业毕业设计论文
计算机毕业论文论文题目图书管理系统院(系)名称计算机学院专业名称计算机科学与技术班级学生姓名学号指导教师姓名毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:日期:年月日导师签名:日期:年月日第一章 Visual Basic 企业版简介Visual Basic(VB)是一种由微软公司开发的包含协助开发环境的事件驱动编程语言。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图 28 查询子窗体 表 7 查询子窗体控件 控 件 类 别控件 Name 控件 Text OptionButton Option1 按编号查询 Option2 按购买日期查询 Label Label1 从 Label2 到 Label3 从 Label4 年 Label5 月 Label6 日 Label7 到 Label8 年 Label9 月 Label10 日 Combo(0) ComboBox Combo1 (空) Combo(1) ComboBox Combo1 (空) Comboy(0) ComboBox Comboy ( 空 ) Comboy(1) ComboBox Comboy ( 空 ) Combom(0) ComboBox Combom ( 空 ) Combom(1) ComboBox Combom ( 空 ) Combod(0) ComboBox Combod ( 空 ) Combod(1) ComboBox Combod ( 空 ) CommandButton Command1 查询 Command2 取消 (6) 用户登录子窗体如图 29 所示。 (7) 值班管理子窗体如图 30 所示,其控件如表 8 所示。
图 7 查询输出实体 E-R 图 二、结构设计 根据上面的需求分析,设计好数据库系统,然后开发应用程序可以考虑的窗体的系统,每一 个窗体实现不同的功能,可以设计下面的几个模块。 ● 图书管理模块:用来实现图书的登记、借阅、赔偿。 ● 图书资料模块:用来实现图书的查询输出。 ● 值班管理模块:用来实现管理人员的值班浏览。 ● 投诉管理模块:用来实现对管理人员的投诉管理。 ● 系统管理模块:用来实现用户的增加、删除和修改等操作。 三、数据库设计 这里的数据库采用 Access,用 ADO 作为连接数据对象。 1、建立 Access 数据库 启动 Access,建立一个空的数据库 book.mdb,如图 8 所示。 使用程序设计器建立系统需要的表格如下。 图书登记表,如图 9 所示。
(3) 修改密码子窗体如图 26 所示。 图 26 修 改 密 码 子 窗 体 (4) 库 房 管 理 子 窗 体 如 图 27 所 示 。
ห้องสมุดไป่ตู้
图 27 库房管理子窗体
其控件如表 6 所示。
表 6 库房管理子窗体控件 MSFlexGrid MSFlexGrid1
控 件 类 别控件 Name 控件 Text TextBox Text1 (空) ComboBox Combo1 (5) 查询子窗体如图 28 所示,其控件如表 7 所示。
图 8 建立数据 库 book.mdb 图 9 图书登记表图书借阅表,如图 10 所示。图书赔偿表,如图 11 所示。
• •
上一
图 10 图书借阅表 图 11 图书赔偿表图书资料表,如图 12 所示。系统管理表,如图 13 所示。
图 12 图书资料表 图 13 系统管理表投诉管理表,如图 14 所示。
图 20 图书管理系统界面 这是一个多文档界面(MDI)应用程序, 可以同时显示多个文档, 每个文档显示在各自的窗体中。 MDI 应用程序中常有包含子菜单的“窗体”选项,用于在窗体或文档之间进行切换。 菜单应用程序中,有 5 个菜单选项,每个选项对应着 E-R 图的一个子项目。 1、创建主窗体 首先创建一个工程,命名为图书管理系统,选择“工程”→“添加 MDI 窗体”命令,则在项目中 添加了主窗体。该窗体的一些属性如表 1 所示。 表 1 主窗体的属性 属 性值 Caption 图书管理系统 Name Main Menu Mainmenu1 Windowstate Maxsize Windowstate 的值为 Maxsize,即程序启动之后自动最大化。 将“菜单”组件从“工具箱”拖到窗体上。 创建一个 Text 属性设置为“文件”的顶级菜单项, 且带有名为“关 闭”的子菜单项。类似地创建一些菜单项,如表 2 所示。 表2 菜 单 项 表 菜 单 名 称 Text 属性功 能 描 述 MenuItem1 图书管理顶级菜单,包含子菜单 MenuItem2 图书登记调 出 图 书 登 记 窗 体 MenuItem3 图 书 借 阅 调 出 图 书 借 阅 窗 体 MenuItem4 图 书 赔 偿 调 出 图 书 赔 偿 窗 体 MenuItem5 图书资料顶级菜单, 包含子菜单 MenuItem6 查询输出调出查询输出窗体 MenuItem7 值班管理 顶级菜单,没有子菜单 MenuItem8 投诉管理顶级菜单,没有子菜单 MenuItem9 系统管理顶级菜单,包含 子菜单 MenuItem10 增加用户调出用户窗体 MenuItem11 修改密码调出密码窗体 MenuItem12 退出系统 退出 主窗体如图 21 所示。
图 17 ODBC 对话框 单击“添加”按钮,出现“创建新数据源”对话框,如图 18 所示。
图 18 “创建新数据源”对话框 选择 Microsoft Access Driver(*.mdb),单击“完成”按钮,出现如图 19 所示对话框。
图 19 设置连接数据源 在“数据源名”文本框中添加一个名字, 单击“确定”按钮完成系统默认连接设置。 然后在 ODBC 对话框中单击“确定”按钮完成 ODBC 设置。 界面设计 设计好的界面如图 20 所示。
一、需求分析 在进行一个项目的设计之前,先要进行必要的需求分析。 现某图书馆需要管理其各种人员和图书信息,希望实现办公的信息化,通过建立一个图书管理系统来管理 图书。其完成的功能如下: (1) 可以实现图书的登记、借阅和赔偿的管理。 (2) 可以实现对图书的各种信息的查询,包括逐个浏览,以及对图书信息的增加、删除和编辑操作。另外, 可以根据输入的信息来检索某个图书的信息。 (3) 可以实现对管理人员的投诉管理。 (4) 可以实现对值班人员的管理。 系统的功能模块图如图 1 所示。 本实例根据上面的设计规划出的实体有图书登记实体、图书借阅实体、图书赔偿实体、查询输出实体、值 班管理实体、投诉管理实体。各个实体具体的描述 E-R 图如下。 图书登记实体 E-R 图如图 2 所示。 图书借阅实体 E-R 图如图 3 所示。
图 21 主窗体 2、创建各子窗体
选择“工程”→“添加窗体”命令,添加子窗体。 在新建 Visual Basic 工程时自带的窗体中,将其属性 MIDChild 改成 True,则这个窗体成为 MID 窗体 的子窗体。 在这个项目中,要创建的子窗体如表 3 所示。 表 3 所有子窗体 子 窗 体 名 Text 图 书 登 记 frmdengji 图 书 借 阅 frmjieyue 图 书 赔 偿 frmpeichang 增 加 新 用 户 frmadduser 查询输出 frmfind 登录系统 frmlogin 修改密码 frmchangepwd 下面分别给出这些子窗体,以及它们所使用的控件。 (1) 图书登记子窗体如图 22 所示,其控件如表 4 所示。
图 23 图书借阅子窗体 图 24 图 书 赔 偿 子 窗 体 (2) 增 加 用 户 子 窗 体 如 图 25 所 示 , 其 控 件 如 表 5 所 示 。
图 25 增加用户子窗体 表 5 增加用户子窗体控件 控 件 类 别控件 Name 控件 Text Label Label1 输入用户名 Label2 输入密码 Label3 确认密码 Label4 选 择权限 TextBox Text1 (空) Text2 (空) Text3 (空) ComboBox Comb1 (空) CommandButton Commandl 确定 Command2 取消
图 16 引用 ADO 连接数据库 下:
在程序设计的公共模块中,先定义 ADO 连接对象。语句如
Public conn As New ADODB.Connection ' 标记连接对象 然后在子程序中,用如下的语句即可打开数据库: Dim connectionstring As String connectionstring = "provider=Microsoft.Jet.oledb.4.0; data source=book.mdb" conn.Open connectionstring 3、设置 ODBC VB 的 ADO 对象是通过 ODBC 来访问数据库,所以还要建立 ODBC 数据引擎接口。 打开控制面板中的“管理工具”→“数据源”(ODBC),出现如图 17 所示的对话框。
图 29 用户登录子窗体 图 30 值班管理子窗体 (8) 投诉管理子窗体如图 31 所示,其控件如表 9 所示。
图 31 投诉管理子窗体 建立公共模块 1、显示目录 建立公共模块可以提高代码的效率,同时使得修改和维护代码都很方便。 创建公共模块的步骤如下: (1) 在菜单中选择“工程”→“添加模块”命令,则出现模块对话框,如图 32 所示。 (2) 选择模块图标后,单击“打开”按钮,则模块已经添加到项目中了。默认情况下名为 Module1。
图 32 模块对话框 (3) 在模块中定义整个项目的公共变量。 Public conn As New ADODB.Connection ' 标记连接对象 Public userID As String ' 标记当前用户 ID Public userpow As String ' 标记用户权限 Public find As Boolean ' 标记查询 Public sqlfind As String ' 查询语句 Public rs_data1 As New ADODB.Recordset Public findok As Boolean Public frmdata As Boolean Public Const keyenter = 13 ' enter 键的 ASCII 码
图 14 投诉管理表
值班管理表,如图 15 所示。
图 15 值班管理表 2、连接数据在 Visual Basic 环境下,选择“工程”→“引用”命令,在随后出现的对话框中选择 “Microsoft ActiveX Data Objects 2.0 Library”,然后单击“确定”按钮,如图 16 所示。