




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/VB实训指导书——图书信息管理系统广西机电职业技术学院一、实训周的具体按排和要求1、实训对象:07级电子商务专业学生2、实训时间:1周3、实训内容:开发图书信息管理系统4、实训目的:(1)进一步熟悉VB的集成开发环境,掌握VB设计应用程序的主要步骤,从而加深对面向可视化对象编程方法的认识。(2)了解并初步掌握用VB开发应用程序界面、图形图像、数据库、多媒体等实用内容。(3)通过实训稳固一学期来所学到的VB知识,熟练掌握计算机操件技能,培养开发的思想,同时产生浓厚的兴趣,为今后进一步学习打下基础。5、实训要求说明:①指导书给出的内容只是完成根本功能,其它功能请查阅相关参考书。②实训上机期间,每个学生都要认真听从指导老师及实验老师的指挥,按时按量独立完成实训的内容。如有违纪者,将取消其实训的上机资格,并且其实训成绩当零分处理。③实训期间要严格按照实训报告格式要求认真书写实训报告(电子档与手写稿(或打印稿)),实训结束后将实训作品和实训报告一起上交指导老师批改、评分。eq\o\ac(○,4)实训后期,将酌情安排现场测试与辩论,并将此项分数按一定比例打入实训成绩总评。二、实训报告(设计说明书)书写的格式要求1、实训报告封面要依次填写设计的科目、题目、专业、班级、姓名、学号、日期、指导老师等工程。2、报告内页书写的具体内容应包含以下几个方面:实训名称:即实训题目。实训目的:即通过本次实训要得到哪些方面的主要训练,将学会掌握哪些相关专业技能。实训环境:既设备(硬件、系统平台)、开发工具、方法手段等。实训方案:做出本次实训的总体方案并制定出实施方案的具体步骤(可按完成功能模块来划分)及进度安排,列出时间表。关键技术与解决途径:本次实训的技术要点(可按实训方案里制定的具体步骤一一编写),并要求写出如何解决这些技术要点(要求编写源代码并附上代码说明,必要时请附上截图)。自我评价:即总结本次实训的个人心得体会。包括对这次实训任务完成情况的评价;实训的收获与预期目标是否一致的评价以及对实训组织、安排、管理等方面的评价。这局部不仅要求写出问题,更希望写出你的建议。三、实训成绩的评定标准指导老师根据学生实训期间的表现、实训内容的完成情况以及所写的实训报告(设计说明书)给予该生优、良、中、及格、不及格等综合评定等级,并作为该实训课程的期评成绩上报成绩。四、本次实训的具体内容:图书信息管理系统系统功能分析:读者根本信息的输入读者根本信息的查询(要求能按读者编号进行查询)读者根本信息的修改图书信息的输入图书信息的修改借阅信息的查询(要求能根据人来查书、根据书来查人)读者借书读者还书以下是附加的功能:(选做)根据读者姓名来查询读者信息根据书名来查询图书信息利用新窗口来修改读者信息和图书信息系统功能模块:一、图书信息管理系统功能介绍1.主界面图1程序运行后主界面的效果如图1所示。可以看到,窗体的上部是菜单栏,包含3个菜单项,即:读者管理、图书管理和借阅管理。2.读者管理 选择菜单“读者管理〞,如图2所示,该菜单项中有4个子菜单项:显示所有读者、查询一个读者、增加一个读者和删除一个读者。 选择菜单“读者管理→显示所有读者〞,则在主界面的数据表格中列出所有的读者信息,如图3所示。 选择菜单“读者管理→查询一个读者〞,弹出对话框如图4所示,要求输入要查询的读者编号信息。输入读者编号后单击“查询〞按钮,则在主界面的数据表格中列出该读者的信息;否则,系统提示用户“查无此人〞。 选择菜单“读者管理→增加一个读者〞,弹出对话框如图5所示,要求输入读者编号和读者姓名,输入完整的信息后单击保存按钮,系统判断是否可以向数据库中添加该读者信息,如果添加成功,则在主界面的数据表格中列出数据库中所有的读者信息。 选择菜单“读者管理→删除一个读者〞,弹出对话框如图6所示,要求输入读者编号,输入完整的信息后单击“删除〞按钮,若该删除操作成功,则在主界面的数据表格中显示剩余的所有读者信息。图2图3图4图5图63.图书管理 选择菜单“图书管理〞,如图7所示,该菜单项中有4个子菜单项:显示所有图书、查询单册、增加新书和删除图书。该菜单项功能与读者管理局部类似,在此不再重复。4.借阅管理 选择菜单“借阅管理〞,如图8所示。该菜单项中有5个子菜单项:显示所有借阅情况、借书、还书、根据书来查人和根据人来查书。图7图8 选择菜单“借阅管理→显示所有借阅情况〞,则在主界面的数据表格中显示所有的借阅记录。 选择菜单“借阅管理→借书〞,弹出对话框如图9所示,要求用户输入所借图书编号和读者编号。输入完整的信息后单击“借书〞按钮,如果借书成功,则在主界面的数据表格中列出当前读者的借阅情况。 选择菜单“借阅管理→还书〞,弹出对话框如图10所示,要求输入所借图书编号,输入完整的信息后单击“还书〞按钮,如果还书成功,则在主界面的数据表格中列出当前读者还书后的借阅情况。图9图10 选择菜单“借阅管理→根据人来查书〞,弹出对话框如图11所示,要求输入读者编号,输入完整的信息后单击“查询〞按钮,如果查询操作成功,则在主界面的数据表格中列出当前读者所有的借阅情况。 选择菜单“借阅管理→根据书来查人〞,弹出对话框如图12所示,系统显示相应的信息提示,如果查询操作成功,则在主界面的数据表格中列出当前图书的借阅情况。图11图12二、创立数据库 翻开Access,建立一个名为bookdb的数据库,数据库中有两张数据表:book、borrow和reader。三张表的字段信息如下:表1book表项内容字段名称数据类型字段大小bookid文本15bookname文本100bookstate文本4(将bookid字段设为主键)表2borrow表项内容字段名称数据类型字段大小bookid文本15readerid文本15(将bookid字段设为主键)表3reader表项内容字段名称数据类型字段大小readerid文本15readername文本20booknum文本4(将readerid字段设为主键)三、创立数据源(ODBC) 基于SQL的ODBC(OpenDataBaseConnectivity,开放式数据库连接)是Microsoft公司在1989年退出的连接外部数据库的标准,若采用这套标准,一个应用程序就可以通过一组通用的代码访问不同的数据库管理系统。 在WindowsXP操作系统环境下,本实例的ODBC设置步骤如下:进入“控制面板→管理工具〞,双击“数据源(ODBC)〞,出现“ODBC数据源管理器〞,如图13所示。图13图14单击“添加〞按钮,出现创立数据源对话框,如图14所示。选择“DriverDoMicrosoftAccess(*.mdb)〞,单击完成按钮,出现ODBCMicrosoftAccess安装对话框,如图15所示,在数据源一项中输入“book〞。单击“选择……〞按钮,出现选择数据库对话框,如图16所示,首先选择数据库所在的驱动器,然后在目录中选择数据库的路径,这样在“数据库名〞一栏中就会列出相应的Access数据库,然后单击选定数据库“bookdb〞。图15图16单击确定按钮,系统自动返回ODBC数据源管理器,数据源“book〞创立成功。四、图书管理系统实现 该图书管理系统的工程名称为BookManSys.vbp,该工程包含所有文件如图17所示。 图171.新建工程新建工程,并在工程资源管理器中将工程名称属性改为:BookManSys.vbp。选择菜单“工程→部件〞,从控件列表中选中如下选项: MicrosoftADODataControl6.0(OLEDB) MicrosoftDataGridControl6.0(OLEDB)在“工程资源管理器〞窗口中单击鼠标右键,选择“添加→添加模块〞。单击翻开按钮,然后在该模块的“代码编辑窗口〞中添加代码如下:PublicActFlagAsBoolean2.FrmMain窗体FrmMain窗体的设计步骤如下:选中“Form1〞窗体,将该窗体的“名称〞属性改为“frmMain〞,“Caption〞属性改为“图书管理系统〞。在窗体上设计一个菜单,该菜单结构见表4。在窗体上添加一个框架控件(Frame),将其“Caption〞属性删除,“BorderStyle〞属性选择“0-None〞。在Fram1中添加一个数据表格(DataGrid),将其“名称〞属性设置为“DataGrid〞,“Visible〞属性设置为False。向窗体中添加两个ADO数据控件(Adodc),将“Adodc1〞的“名称〞属性设置为“Adodc〞,将“Adodc2〞的“名称〞属性设置为“AdodcTemp〞,“Visible〞属性均设置为False。这两个控件属性列表中的“ConnectionString〞属性值均按如下方法设置。单击,弹出属性页对话框,如图18所示。单击“生成〞按钮,进入“数据链接属性〞对话框,如图19所示。图18图19选择“MicrosoftOLEDBProviderforODBCDrivers〞,单击“下一步〞按钮,由“提供者〞选项卡跳到“连接〞选项卡,如图20所示。选中“使用数据源名称〞,在该项下拉列表中选择“book〞,然后单击“确定〞按钮,系统自动回到属性页对话框,单击确定按钮即可。图20进入frmMain窗体的代码视图,添加如下代码:PublicSubDisplayGrid(CaptionStrAsString)'将临时ADO数据控件中的RecordSource属性赋值给和数据表格相连的ADO数据控件Adodc.RecordSource=AdodcTemp.RecordSourceAdodc.Refresh'将数据表格绑定到ADO数据控件SetDataGrid.DataSource=AdodcDataGrid.Refresh'修改数据表格的标题DataGrid.Caption=CaptionStr'将数据表格设置为用户可见DataGrid.Visible=TrueEndSub 表4菜单结构设置菜单项名称读者管理ReaderMan….显示所有读者DispAllReader….查询一个读者FindOneReader….增加一个读者AddReader….删除一个读者DelReader图书管理BookMan….显示所有图书DispAllBook….查询单册FindOneBook….增加新书AddBook….删除图书DelBook借阅管理BorrowMan….显示所有借阅情况DispAllBor….借书Borrow….还书Return….根据人来查书ReaderToBook….根据书来查人BookToReader3.显示所有读者选择菜单“读者管理→显示所有读者〞,在代码编辑窗口中添加以下代码:PrivateSubDispAllReader_Click()DimRecCountAsInteger'从数据库表"reader"中查找所有的读者记录AdodcTemp.RecordSource="selectreaderidas"&"读者编号"&_",readernameas"&"读者姓名"&",booknumas"&"借阅图书册数"_&"fromreader"AdodcTemp.RefreshRecCount=AdodcTemp.Recordset.RecordCount'如果查到的记录数>0,则显示所有读者信息,否则提示"未查到任何读者记录",然后显示一个空'的数据表格。IfRecCount>0ThenDisplayGrid("显示所有读者")ElseMsgBox"未查到任何读者记录!",,"提示"DisplayGrid("显示所有读者")ExitSubEndIfEndSub4.查询一个读者选择菜单“读者管理→查询一个读者〞,在代码编辑窗口中添加以下代码:PrivateSubFindOneReader_Click()DimRecCountAsInteger'将标志变量置为假ActFlag=False'显示查询一个读者窗体frmFindOneReader.ShowvbModal'若是在查询一个读者窗体中已经将ActFlag修改为True时,则查看所查到的记录条数,如果查到的'记录条数>0时,刷新数据表格,显示查询结果IfActFlagThenRecCount=AdodcTemp.Recordset.RecordCountIfRecCount>0ThenDisplayGrid("查询一个读者")EndIfEndIfActFlag=FalseEndSub为工程添加一个新的窗体,将新窗体的“名称〞属性改为“frmFindOneReader〞,“Caption〞属性改为“查询一个读者〞。在窗体上添加一个框架控件(Frame)和一个ADO数据控件(Adodc),在Frame1中添加一个命令按钮(CommandButton)、一个标签(Label)和一个文本框(TextBox)。修改frmFindOneReader窗体控件的属性,见表5。表5frmFindOneReader窗体控件属性控件名称属性名称属性设置值Frame1Caption输入查询条件Label1Caption读者编号Text1名称TxtReaderidTextCommand1名称CmdFindCaption查询Adodc1名称AdodcVisibleFalse根据frmMain主界面中设置Adodc控件的方法来设置本窗体的Adodc的属性,完成以上操作后frmFindOneReader窗体的效果如图21所示。 图21 双击“查询〞按钮,在代码编辑窗口中添加以下代码:PrivateSubCmdFind_Click()DimRecCountAsInteger'判断用户是否输入了读者编号信息,如果没有输入信息,则发出提示退出子程序IfTrim(TxtReaderid.Text)=""ThenMsgBox"查询条件不能为空,请填写!",,"提示"ExitSubEndIf'根据读者编号查询读者信息Adodc.RecordSource="selectreaderidas"&"读者编号"_&",readernameas"&"读者姓名"&",booknumas"_&"借阅图书册数"&"fromreaderwherereaderid="&"'"_&Trim(TxtReaderid.Text)&"'"Adodc.Refresh'如果查到该读者信息则释放当前窗体,回到主界面在数据表格上显示查到的读者信息RecCount=Adodc.Recordset.RecordCountIfRecCount>0ThenfrmMain.AdodcTemp.RecordSource="selectreaderidas"_&"读者编号"&",readernameas"&"读者姓名"_&",booknumas"&"借阅图书册数"_&"fromreaderwherereaderid="_&"'"&Trim(TxtReaderid.Text)&"'"frmMain.AdodcTemp.Refresh'将标志变量置为真ActFlag=TrueUnloadMeElse'如果没有查到该读者的信息则发出提示,退出子程序MsgBox"查无此人!",,"提示"ExitSubEndIfEndSub5.增加一个读者选择菜单“读者管理→增加一个读者〞,在代码编辑窗口中添加以下代码:PrivateSubAddReader_Click()'将标志变量置为假ActFlag=False'显示增加一个读者窗体frmAddReader.ShowvbModalIfActFlagThen'如果需要刷新数据表格,则显示所有读者信息DispAllReader_ClickEndIfActFlag=FalseEndSub为工程添加一个新的窗体,讲窗体的名称属性改为“frmAddReader〞,Caption属性改为“增加一个读者〞。在窗体上添加一个框架控件(Frame),然后在Frame1中添加一个命令按钮,两个标签,两个文本框和一个ADO数据控件(Adodc)。修改frmAddReader窗体控件的属性,见表6。表6frmAddReader窗体控件属性控件名称属性名称属性设置值Frame1Caption输入数据Label1Caption读者编号Label2Caption读者姓名Text1Text名称TxtReaderidText2Text名称TxtReaderNameCommand1名称CmdSaveCaption保存Adodc1名称AdodcVisibleFalse运用frmMain主界面中设置Adodc的方法来设置本窗体的Adodc,完成后的frmAddReader窗体效果如图22所示。图22双击“保存〞按钮,在代码编辑窗口中添加以下代码:PrivateSubCmdSave_Click()DimRecCountAsInteger'判断是否输入了读者编号和读者姓名,如果没有输入信息,则发出提示并退出子程序IfTrim(TxtReaderid.Text)=""OrTrim(TxtReaderName.Text)=""ThenMsgBox"请将内容填写完整!",,"提示"ExitSubEndIf'根据读者编号信息查找该读者是否已经存在Adodc.RecordSource="select*fromreaderwherereaderid="_&"'"&Trim(TxtReaderid.Text)&"'"Adodc.Refresh'如果该读者已经存在,则发出提示,并退出子程序RecCount=Adodc.Recordset.RecordCountIfRecCount>0ThenMsgBox"已经存在此读者编号,请重新设置!",,"提示"ExitSubEndIf'向数据库表"book"中添加新的读者记录Adodc.RecordSource="select*fromreader"Adodc.RefreshAdodc.Recordset.AddNewAdodc.Recordset.Fields("readerid")=Trim(TxtReaderid.Text)Adodc.Recordset.Fields("readername")=Trim(TxtReaderName.Text)Adodc.Recordset.Fields("booknum")=0Adodc.Recordset.UpdateAdodc.Refresh'将标志变量置为真ActFlag=TrueUnloadMeEndSub6.删除一个读者选择菜单“读者管理→删除一个读者〞,在代码编辑窗口中添加以下代码:PrivateSubDelReader_Click()'将标志变量置为假ActFlag=False'显示删除一个读者窗体frmDelReader.ShowvbModal'判断是否需要刷新数据表格,如果需要则在主界面的数据表格中显示所有的读者信息IfActFlagThenDispAllReader_ClickEndIfActFlag=FalseEndSub为工程添加一个新的窗体,将新窗体的“名称〞属性改为“frmDelReader〞,“Caption〞属性改为“删除一个读者〞。在窗体上添加一个框架控件(Frame),在Frame1中添加一个命令按钮、一个标签、一个文本框和一个ADO数据控件。修改frmDelReader窗体控件的属性,见表7。表7FrmDelReader窗体控件属性控件名称属性名称属性设置值Frame1Caption输入编号Label1Caption读者编号Text1名称TxtReaderidTextCommand1名称CmdDelCaption删除Adodc1名称AdodcVisibelFalse运用frmMain主界面中设置Adodc的方法来设置本窗体的Adodc,完成后的frmDelReader窗体效果如图22所示。图22双击“删除〞按钮,在代码编辑窗口中添加以下代码:PrivateSubCmdDel_Click()DimRecCountAsInteger'判断是否输入了读者编号信息,如果没有输入则发出提示并退出子程序IfTrim(TxtReaderid.Text)=""ThenMsgBox"请填入编号信息!",,"提示"ExitSubEndIf'根据读者编号查找读者信息Adodc.RecordSource="select*fromreaderwherereaderid="_&"'"&Trim(TxtReaderid.Text)&"'"Adodc.Refresh'如果没有该读者信息则提示"查无此人!"信息,退出子程序RecCount=Adodc.Recordset.RecordCountIfRecCount<1ThenMsgBox"查无此人!",,"提示"ExitSubEndIf'根据读者编号信息从数据库表"borrow"中查找该读者的借阅记录Adodc.RecordSource="select*fromborrowwherereaderid="_&"'"&Trim(TxtReaderid.Text)&"'"Adodc.Refresh'如果存在该读者的借阅记录,提示"此人有书未归还,故不能删除!"信息,退出子程序RecCount=Adodc.Recordset.RecordCountIfRecCount>0ThenMsgBox"此人有书未归还,故不能删除!",,"提示"ExitSubEndIf'从数据库表"reader"中找到该读者记录,删除Adodc.RecordSource="select*fromreaderwherereaderid="_&"'"&Trim(TxtReaderid.Text)&"'"Adodc.RefreshAdodc.Recordset.DeleteAdodc.Refresh'将标志变量置为真ActFlag=TrueUnloadMeEndSub7.显示所有图书选择菜单“图书管理→显示所有图书〞,在代码编辑窗口中添加以下代码:PrivateSubDispAllBook_Click()DimRecCountAsInteger'从数据库表"book"中查找所有的图书记录AdodcTemp.RecordSource="selectbookidas"_&"图书编号"&",booknameas"&"图书名称"_&",bookstateas"&"此书是否已借出"&"frombook"AdodcTemp.Refresh'如果查到的记录数>0则刷新数据表格显示查到的图书信息,否则提示"未查到任何图书记录!"信息'并刷新数据表格显示空表RecCount=AdodcTemp.Recordset.RecordCountIfRecCount>0ThenDisplayGrid("显示所有图书")ElseMsgBox"未查到任何图书记录!",,"提示"DisplayGrid("显示所有图书")ExitSubEndIfEndSub8.查询单册选择菜单“图书管理→查询单册〞,在代码编辑窗口中添加以下代码:PrivateSubFindOneBook_Click()DimRecCountAsInteger'将标志变量置为假ActFlag=False'显示查询单册窗体frmFindOneBook.ShowvbModal'判断是否需要刷新数据表格IfActFlagThenRecCount=AdodcTemp.Recordset.RecordCountIfRecCount>0ThenDisplayGrid("查询单册")EndIfEndIfActFlag=FalseEndSub为工程添加一个新的窗体,将新窗体〞(名称)〞属性改为〞frmFindOneBook〞,〞caption〞属性改为“查询单册〞。在窗体添加一个框架控件(Frame)和一个ADO数据控件(Adodc),在〞Frame1”中添加一个命令按钮(CommandButton)、一个标签(label)和一个文本框(textbox)。修改frmFindOneBook窗体控件的属性如表8所示:表8frmFindOneBook窗体控件属性控件名称属性名称属性设置值Frame1Caption输入查询条件labelCaption图书编号Text1名称txtbookidtextCommand1名称CmdfindCaption查询Adodc1名称Adodcvisiblefalse根据“frmMain〞主界面中的设置“Adodc〞的方法来设置本窗体的“Adodc〞的“connectionstring〞属性。双击“查询〞按钮,在代码编译窗口中添加以下代码:PrivateSubCmdFind_Click()DimRecCountAsInteger'判断是否输入了图书编号,如果没有输入信息,则发出提示,并退出子程序IfTrim(TxtBookid.Text)=""ThenMsgBox"查询条件不能为空,请填写!",,"提示"ExitSubEndIf'根据图书编号查找该图书信息Adodc.RecordSource="selectbookidas"&"图书编号"_&",booknameas"&"图书名称"&",bookstateas"_&"此书是否已借出"&"frombookwherebookid="&"'"_&Trim(TxtBookid.Text)&"'"Adodc.Refresh'如果查到的记录数>0,则返回主界面在数据表格中显示查到的图书信息RecCount=Adodc.Recordset.RecordCountIfRecCount>0ThenfrmMain.AdodcTemp.RecordSource="selectbookidas"_&"图书编号"&",booknameas"&"图书名称"_&",bookstateas"&"此书是否已借出"_&"frombookwherebookid="&"'"&Trim(TxtBookid.Text)_&"'"frmMain.AdodcTemp.RefreshActFlag=TrueUnloadMeElse'若没查到该图书信息,则提示"查无此书!"信息,退出子程序MsgBox"查无此书!",,"提示"ExitSubEndIfEndSub9.添加新书选择菜单“图书管理→增加新书〞,在代码编辑窗口中添加以下代码:PrivateSubAddBook_Click()'将标志变量置为假ActFlag=False'显示增加新书窗体frmAddBook.ShowvbModal'判断如果需要刷新数据表格,则在主界面中显示所有的图书信息IfActFlagThenDispAllBook_ClickEndIfActFlag=FalseEndSub为工程添加一个新的窗体,将新窗体“(名称)〞属性改为“frmAddBook〞,“caption〞属性改为“增加新书〞。在窗体上添加一个框架控件(frame),在“frame1〞中添加一个命令按钮(commandbutton)、两个标签(label)、两个文本框(textbox)和一个ADO数据控件(Adodc),如下表所示:控件名称属性名称属性设置值Frame1Caption输入数据Label1Caption图书编号Label2Caption图书名称Text1名称txtbookidtextText2名称txtbooknametextCommand1名称CmdsaveCaption保存Adodc1名称Adodcvisiblefalse根据〞frmMain〞主界面中的设置“Adodc〞的方法来设置本窗体的“Adodc〞的“connectionstring〞属性。双击“保存〞按钮,在代码编辑窗口中添加以下代码:PrivateSubCmdSave_Click()DimRecCountAsInteger'判断是否输入了图书编号和图书名称信息,如果没有输入则发出提示并退出子程序IfTrim(TxtBookid.Text)=""OrTrim(TxtBookName.Text)=""ThenMsgBox"请将内容填写完整!",,"提示"ExitSubEndIf'根据图书编号查找是否存在该图书记录,如果存在,则提示"已经存在此图书编号,请重新设置!"'则提示退出子程序Adodc.RecordSource="select*frombookwherebookid="&"'"&Trim(TxtBookid.Text)&"'"Adodc.RefreshRecCount=Adodc.Recordset.RecordCountIfRecCount>0ThenMsgBox"已经存在此图书编号,请重新设置!",,"提示"ExitSubEndIf'在数据库表"book"中添加该新书记录Adodc.RecordSource="select*frombook"Adodc.RefreshAdodc.Recordset.AddNewAdodc.Recordset.Fields("bookid")=Trim(TxtBookid.Text)Adodc.Recordset.Fields("bookname")=Trim(TxtBookName.Text)Adodc.Recordset.Fields("bookstate")="否"Adodc.Recordset.UpdateAdodc.Refresh'将标志变量置为真ActFlag=TrueUnloadMeEndSub10.删除图书选择菜单“图书管理→删除图书“,在代码编辑窗口中添加以下代码:PrivateSubDelBook_Click()'将标志变量置为假ActFlag=False'显示删除图书窗体frmdelbook.ShowvbModal'判断是否需要刷新数据表格,如果需要的话则在数据表格中显示所有的图书记录IfActFlagThenDispAllBook_ClickEndIfActFlag=FalseEndSub为工程添加一个新的窗体,将新窗体“(名称)〞属性改为“frmdelbook〞,“caption〞属性改为“删除图书〞。在窗体上添加一个框架控件(Frame),在〞Frame1”中添加一个命令按钮(commandbutton)、一个标签(label)、一个文本框(textbox)和一个ADO数据控件(Adodc),如下表所示:控件名称属性名称属性设置值Frame1Caption输入编号Label1Caption图书编号Text1名称txtbookidTextCommand1名称CmddelCaption删除Adodc1名称Adodcvisiblefalse根据“frmMain〞主界面中的设置“Adodc〞的方法来设置本窗体的“Adodc〞的“connectionstring〞属性,完成以上操作后frmDelBook窗体效果如下列图所以:双击“删除〞按钮,在代码编辑窗口中添加以下代码:PrivateSubCmdDel_Click()DimRecCountAsInteger'判断是否输入图书编号,如果没有输入数据,则发出提示并退出子程序IfTrim(TxtBookid.Text)=""ThenMsgBox"请填入编号信息!",,"提示"ExitSubEndIf'根据图书编号从数据库表"book"中查找该图书的记录。Adodc.RecordSource="select*frombookwherebookid="_&"'"&Trim(TxtBookid.Text)&"'"Adodc.RefreshRecCount=Adodc.Recordset.RecordCount'如果没有该图书的信息,则提示"查无此书!"信息,退出子程序IfRecCount<1ThenMsgBox"查无此书!",,"提示"ExitSubEndIf'如果该图书已经借出,则提示"此书尚未归还,故不能删除!"并退出子程序IfAdodc.Recordset.Fields("bookstate")="是"ThenMsgBox"此书尚未归还,故不能删除!",,"提示"ExitSubEndIf'删除该图书记录Adodc.Recordset.DeleteAdodc.Refresh'将标志变量置为真ActFlag=TrueUnloadMeEndSub11.显示所有借阅情况选择菜单“借阅管理→显示所有借阅记录〞,进入代码编辑窗口中添加代码如下:PrivateSubDispAllBor_Click()DimRecCountAsInteger'用多表连接查询语句查询所有的图书借阅记录AdodcTemp.RecordSource="selectborrow.readeridas"_&"读者编号"&",reader.readernameas"&"读者姓名"_&",borrow.bookidas"&"所借图书编号"&",book.booknameas"_&"所借图书名称"&"fromborrow,reader,book"_&"whereborrow.readerid=reader.readeridand"_&"borrow.bookid=book.bookid"AdodcTemp.RefreshRecCount=AdodcTemp.Recordset.RecordCountIfRecCount>0Then'如果查到的记录数>0,则在数据表格中显示所有的借阅记录DisplayGrid("显示所有借阅情况")Else'否则,提示"没有任何借阅记录!"信息并显示一个空表MsgBox"没有任何借阅记录!",,"提示"DisplayGrid("显示所有借阅情况")ExitSubEndIfEndSub12.借书选择菜单“借阅管理→借书〞,在代码编辑窗口中添加以下代码:PrivateSubBorrow_Click()DimRecCountAsInteger'将标志变量置为假ActFlag=False'显示借书窗体frmborrow.ShowvbModal'判断是否需要刷新数据表格,如果需要则显示刚刚借书读者的借阅记录IfActFlagThenRecCount=AdodcTemp.Recordset.RecordCountIfRecCount>0ThenDisplayGrid("此人借阅记录")EndIfEndIfActFlag=FalseEndSub为工程添加一个新的窗体,将新窗体〞(名称)〞属性改为〞Frmborrow〞,〞Caption〞属性改为“借书〞。在窗体上添加一个框架控件(Frame),在Frame1中添加一个命令按钮(Commandbutton)、两个标签(Label)、两个文本框(Textbox)和一个ADO数据控件(Adodc)。修改frmborrow窗体控件的属性,如下表:控件名称属性名称属性设置值Frame1Caption输入数据Label1Caption图书编号Label2Caption读者编号Text1名称TxtbookidTextText2名称TxtReaderidTextCommand1名称CmdborrowCaption借书Adodc1名称AdodcVisibleFalse根据“frmMain〞主界面中设置“Adodc〞的方法来设置来本窗体的“Adodc〞的“Connectionstring〞属性。双击“借书〞按钮,在代码编辑窗口中添加以下代码:PrivateSubCmdBorrow_Click()DimRecCount1AsIntegerDimRecCount2AsIntegerDimBookStateStrAsString'判断是否输入了图书编号和读者编号,如果没有输入,则发出提示并退出子程序IfTrim(TxtBookid.Text)=""OrTrim(TxtReaderid.Text)=""ThenMsgBox"各项数据请填写完整!",,"提示"ExitSubEndIf'根据图书编号查询该图书记录是否存在Adodc.RecordSource="select*frombookwherebookid="&"'"&Trim(TxtBookid.Text)&"'"Adodc.RefreshRecCount1=Adodc.Recordset.RecordCountIfRecCount1>0ThenBookStateStr=Adodc.Recordset.Fields("bookstate")IfBookStateStr="是"Then'根据读者编号查找该读者记录是否存在Adodc.RecordSource="select*fromreaderwherereaderid="_&"'"&Trim(TxtReaderid.Text)&"'"Adodc.RefreshRecCount2=Adodc.Recordset.RecordCountIfRecCount2<1Then'如果该图书存在并且已经借出,又不存在此读者,则提示"该书已经借出,也无此人!"MsgBox"该书已经借出,也无此人!",,"提示"ExitSubElse'如果该图书存在并且已经借出,而存在此读者,则提示"该书已经借出,您不能借阅此书!"MsgBox"该书已经借出,您不能借阅此书!",,"提示"ExitSubEndIfEndIf'根据读者编号查找该读者记录Adodc.RecordSource="select*fromreaderwherereaderid="_&"'"&Trim(TxtReaderid.Text)&"'"Adodc.RefreshRecCount2=Adodc.Recordset.RecordCountIfRecCount2<1Then'如果该图书存在,没有借出,然而此读者不存在,则提示"查无此人!"MsgBox"查无此人!",,"提示"ExitSubEndIfEndIf'根据图书编号查找该图书的记录Adodc.RecordSource="select*frombookwherebookid="_&"'"&Trim(TxtBookid.Text)&"'"Adodc.RefreshRecCount1=Adodc.Recordset.RecordCountIfRecCount1<1Then'根据读者编号查找此读者记录Adodc.RecordSource="select*fromreaderwherereaderid="_&"'"&Trim(TxtReaderid.Text)&"'"Adodc.RefreshRecCount2=Adodc.Recordset.RecordCountIfRecCount2<1Then'如果既没有此图书也没有此读者,则提示"查无此书,也无此人!"信息MsgBox"查无此书,也无此人!",,"提示"ExitSubElse'如果没有此图书,但是有此读者,则提示"查无此书!"信息MsgBox"查无此书!",,"提示"ExitSubEndIfEndIf'根据图书编号查到在数据库表"book"中该图书的记录Adodc.RecordSource="select*frombookwherebookid="_&"'"&Trim(TxtBookid.Text)&"'"Adodc.Refresh'将该图书的记录是否借出状态修改为"是"Adodc.Recordset.Fields("bookstate")="是"Adodc.Recordset.UpdateAdodc.Refresh'在数据库表"borrow"中添加一条相应的借阅记录Adodc.RecordSource="select*fromborrow"Adodc.RefreshAdodc.Recordset.AddNewAdodc.Recordset.Fields("bookid")=Trim(TxtBookid.Text)Adodc.Recordset.Fields("readerid")=Trim(TxtReaderid.Text)Adodc.Recordset.UpdateAdodc.Refresh'在数据库表"reader"中查找到该读者的记录Adodc.RecordSource="select*fromreaderwherereaderid="_&"'"&Trim(TxtReaderid.Text)&"'"Adodc.Refresh'将该读者得借阅册数加"1"Adodc.Recordset.Fields("booknum")=Adodc.Recordset.Fields("booknum")+1Adodc.Recordset.UpdateAdodc.Refresh'修改主界面临时ADO数据控件的RecordSource属性,以备刷新数据表格用frmmain.AdodcTemp.RecordSource="selectborrow.readeridas"_&"读者编号"&",reader.readernameas"&"读者姓名"_&",borrow.bookidas"&"所借图书编号"&",book.booknameas"_&"所借图书名称"&"fromborrow,reader,bookwhere"_&"borrow.readerid=reader.readeridandborrow.bookid=book.bookid"_&"andborrow.readerid="&"'"&Trim(TxtReaderid.Text)&"'"frmmain.AdodcTemp.Refresh'将标志变量置为真ActFlag=TrueUnloadMeEndSub13.还书选择菜单“借阅管理→还书〞,在代码编辑窗口中添加以下代码:PrivateSubReturn_Click()DimRecCountAsInteger'将标志变量置为假ActFlag=False'显示还书窗体frmreturn.ShowvbModal'判断是否需要刷新数据表格,如果需要的话,则在数据表格中显示"该书原读者未还书记录"IfActFlagThenRecCount=AdodcTemp.Recordset.RecordCountDisplayGrid("该书原读者未还书记录")EndIfActFlag=FalseEndSub为工程添加一个新的窗体,将新窗体“(名称)〞属性改为“frmReturn〞,“Caption〞属性改为“还书〞。在窗体上添加一个框架控件(Frame),在〞Frame1”中添加一个命令按钮(Commandbutton),一个标签(Label),一个文本框架(TextBox)和一个ADO数据控件(Adodc).修改frmReturn窗体控件的属性,如下表所示:控件名称属性名称属性设置Frame1Caption输入数据Label1Caption图书编号Text1名称TxtbookidTextCommand1名称CmdreturnCaption还书Adodc1名称AdodcVisibleFalse运用“frmMain〞主界面中设置“Adodc〞的方法来设置本窗体的“Adodc〞的“ConnectionString〞属性。双击“还书〞按钮,在代码编辑窗口中添加以下PrivateSubCmdReturn_Click()DimRecCountAsIntegerDimDelReaderidStrAsString'判断是否输入了所还图书的图书编号IfTrim(TxtBookid.Text)=""ThenMsgBox"请将数据填写完整!",,"提示"ExitSubEndIf'根据图书编号查找图书记录Adodc.RecordSource="select*frombookwherebookid="&"'"&Trim(TxtBookid.Text)&"'"Adodc.RefreshRecCount=Adodc.Recordset.RecordCount'如果图书记录数为0,则提示"查无此书!"信息,退出子程序IfRecCount<1ThenMsgBox"查无此书!",,"提示"ExitSubEndIf'根据图书编号在数据库表"borrow"中查找该图书得借阅记录Adodc.RecordSource="select*fromborrowwherebookid="_&"'"&Trim(TxtBookid.Text)&"'"Adodc.RefreshRecCount=Adodc.Recordset.RecordCount'如果没有查到该图书的借阅记录,则提示"此书并未被借出,故不需归还!",退出子程序IfRecCount<1ThenMsgBox"此书并未被借出,故不需归还!",,"提示"ExitSubEndIf'用变量DelReaderidStr记录借阅该图书的读者编号DelReaderidStr=Adodc.Recordset.Fields("readerid")'删除在"borrow"表中该图书的借阅记录Adodc.Recordset.DeleteAdodc.Refresh'根据图书编号从数据库表"book"中查找该图书的记录Adodc.RecordSource="select*frombookwherebookid="&"'"&Trim(TxtBookid.Text)&"'"Adodc.RefreshRecCount=Adodc.Recordset.RecordCount'将该图书的是否借出字段值修改为"否"IfRecCount>0ThenAdodc.Recordset.Fields("bookstate")="否"Adodc.Recordset.UpdateEndIf'根据读者编号查找该读者的记录Adodc.RecordSource="select*fromreaderwherereaderid="_&"'"&DelReaderidStr&"'"Adodc.RefreshRecCount=Adodc.Recordset.RecordCountIfRecCount>0Then'将该读者的借阅册数减1Adodc.Recordset.Fields("booknum")=Adodc.Recordset.Fields("booknum")-1Adodc.Recordset.UpdateAdodc.RefreshEndIf'用将多表连接查询语句来查询该图书原借阅读者的所有现有借阅记录frmmain.AdodcTemp.RecordSource="selectborrow.readeridas"_&"读者编号"&",reader.readernameas"&"读者姓名"_&",borrow.bookidas"&"所借图书编号"&",book.booknameas"_&"所借图书名称"&"fromborrow,reader,bookwhere"_&"borrow.readerid=reader.readeridandborrow.bookid=book.bookid"_&"andborrow.readerid="&"'"&DelReaderidStr&"'"frmmain.AdodcTemp.Refresh'将标志变量置为真ActFlag=TrueUnloadMeEndSub14.根据人来查书选择菜单“借阅管理→根据人来查书〞,在代码编辑窗口中添加以下代码:PrivateSubReaderToBook_Click()DimRecCountAsInteger''将标志变量置为假ActFlag=False'显示根据人来查书窗体frmreadertobook.ShowvbModal'判断是否需要在数据表格中显示"根据人来查书"IfActFlagThenRecCount=AdodcTemp.Recordset.RecordCountIfRecCount>0ThenDisplayGrid("根据人来查书")EndIfEndIfActFlag=FalseEndSub为工程添加一个新的窗体,将新窗体“(名称)〞属性改为“frmReaderToBook〞,“Caption〞属性改为“根据人来查书〞。在窗体上添加一个框架控件(Frame),在“Frame1〞中添加一个命令按钮(commandbutton),一个标签(Label)、一个文本框(Textbox)和一个ADO数据控件(Adodc).修改frmReaderToBook窗体控件的属性,如下表所示:控件名称属性名称属性设置值Frame1Caption输入查询条件Label1Caption读者编号Text1名称TxtreaderidTextCommand1名称CmdFindCaption查询Adodc1名称AdodcVisibleFalse根据“frmMain〞主界面中设置“Adodc〞的方法来设置本窗体的“Adodc〞的“ConnectionString〞属性。双击“查询〞按钮,在代码编辑窗口中添加以下代码:PrivateSubCmdFind_Click()DimRecCountAsInteger'判断是否输入了读者编号信息,如果没有输入数据,则发出提示并退出子程序IfTrim(TxtReaderid.Text)=""ThenMsgBox"请输入查询条件!",,"提示"ExitSubEndIf'根据读者编号查找该读者记录Adodc.RecordSource="select*fromreaderwherereaderid="_&"'"&Trim(TxtReaderid.Text)&"'"Adodc.RefreshRecCount=Adodc.Recordset.RecordCount'如果查到的记录条数为0,则提示"查无此人!"信息,退出子程序IfRecCount<1ThenMsgBox"查无此人!",,"提示"ExitSubEndIf'根据读者编号在数据库表"borrow"中查找该读者得借阅记录Adodc.RecordSource="
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度出租车租赁合同书出租车租赁与网约车平台互联互通服务协议
- 二零二五年度手房购房合同模板:带装修包税费二手房买卖合同书
- 二零二五年度模具设计归属权及国际许可合同
- 2025年度炊事员意外伤害保险聘用合同
- 二零二五年度年委托付款协议书(文化演艺活动赞助协议)
- 二零二五年健身中心租赁合同及健身教练培训基地建设
- 二零二五年度打架事件证据收集与法律支持协议
- 人力资源管理师考试的常见问题及试题及答案
- 2025年度汽车转让协议模板:含汽车抵押贷款及还款计划
- 金属物理学 金属的塑性变形1学习资料
- 境外项目合作居间协议书范本
- 缘物寄情 课件-2024-2025学年高中美术人教版(2019)选择性必修2 中国书画
- 9.3溶质的质量分数(第1课时溶质的质量分数)+教学设计-2024-2025学年九年级化学人教版(2024)下册
- 北师大版数学八年级下册全册教案及反思
- 九宫数独200题(附答案全)
- 2016-2023年北京电子科技职业学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
- 彭永新职业决策自我效能感
- 柔道技术与欣赏
- 四川省建设工程工程量清单计价管理办法规定(共21页)
- DCA-X86100D86105C光示波器使用说明
- 抗性淀粉的简介和其制备
评论
0/150
提交评论