1、第第12章章 图书借阅管理系统图书借阅管理系统本章知识点本章知识点p图书借阅管理系统总体设计图书借阅管理系统总体设计p图书借阅管理系统各模块详细设计图书借阅管理系统各模块详细设计p开发开发Visual Basic+OracleVisual Basic+Oracle数据库应用数据库应用系统的完整过程系统的完整过程12.1 系统总体设计系统总体设计p 系统功能描述系统功能描述p 创建数据库用户创建数据库用户p 数据库表结构设计数据库表结构设计系统功能描述系统功能描述 图书借阅管理系统 图书分类管理 图书基本信息管理 图书库存管理 借阅证管理 图书借阅管理 创建数据库用户创建数据库用户 -创建用户创
2、建用户 CREATE USER BOOKMANCREATE USER BOOKMAN IDENTIFIED BY BOOKMAN IDENTIFIED BY BOOKMAN DEFAULT TABLESPACE USERS DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;TEMPORARY TABLESPACE TEMP;-设置角色权限设置角色权限 GRANT CONNECT TO BOOKMAN;GRANT CONNECT TO BOOKMAN;GRANT RESOURCE TO BOOKMAN;GRANT RESOURCE TO BOO
3、KMAN;-设置系统权限设置系统权限 GRANT UNLIMITED TABLESPACE TO BOOKMAN;GRANT UNLIMITED TABLESPACE TO BOOKMAN;数据库表结构设计数据库表结构设计表表BookType-创建表创建表BookType CREATE TABLE BOOKMAN.BookType (TypeIdNumber Primary Key,TypeName Varchar2(50)NOT NULL,Describe Varchar2(400),UpperIdNumber );编号字段名称数据结构说 明1TypeIdNumber分类编号2TypeNam
4、eVarchar2 50分类名称3DescribeVarchar2 400描述信息4UpperIdNumber上级分类的编号数据库表结构设计数据库表结构设计表表BookInfo-创建表BookInfoCREATE TABLE BOOKMAN.BookInfo (BookNoVarchar2(50)Primary Key,BookNameVarchar2(50)NOT NULL,AuthorVarchar2(50)NOT NULL,PublisherVarchar2(50),PtimesVarchar2(50),BpriceNumber(8,2),BtypeNumber,TotalNumNumb
5、er,);编号字段名称数据结构说 明1BookNoVarchar2 50书号2BookNameVarchar2 50图书名称3AuthorVarchar2 50作者4PublisherVarchar2 50出版社5PtimesVarchar2 50版次6BpriceNumber(8,2)价格7BtypeNumber图书分类8TotalNumNumber当前库存数据库表结构设计数据库表结构设计表表StoreIn-创建表StoreInCREATE TABLE BOOKMAN.StoreIn (StoreIdVarchar2(50)Primary Key,BookNoVarchar2(50)NOT
6、NULL,BookNumNumber NOT NULL,StorePosVarchar2(200),EmpNameVarchar2(50),OptDateChar(10);编号字段名称数据结构说 明1StoreIdVarchar2 50入库编号2BookNoVarchar2 50书号3BookNumNumber入库数量4StorePosVarchar2 200图书存放位置5EmpNameVarchar2 50经办人6OptDateChar 10入库日期数据库表结构设计数据库表结构设计表表Books-创建表创建表BooksCREATE TABLE BOOKMAN.Books (BookNoVar
7、char2(50)Primary Key,BookNumNumber NOT NULL,CountNumNumber,EmpNameVarchar2(50),CountDateChar(10);编号字段名称数据结构说 明1BookNoVarchar2 50书号2BookNumNumber图书原始数量3CountNumNumber图书盘点数量4EmpNameVarchar2 50盘点人5CountDateChar 10盘点日期数据库表结构设计数据库表结构设计表表Cards-创建表创建表Cardsp CREATE TABLE BOOKMAN.Cardsp (CardnoVarchar2(50)Pr
8、imary Key,p DepName Varchar2(50)NOT NULL,p EmpNameVarchar2(50),p IdcardVarchar2(50),p CreateDateChar(10),p FlagNumber(1)p );编号字段名称数据结构说 明1CardnoVarchar2 50借阅证编号2DepNameVarchar2 50所属部门3EmpNameVarchar2 50员工姓名4IdcardVarchar2 50有效证件号码5CreateDateChar 10发证日期6FlagNumber 1挂失标记数据库表结构设计数据库表结构设计表表Cards-创建表创建表B
9、orrowCREATE TABLE BOOKMAN.Borrow (BidNumber Primary Key,BookNoVarchar2(50)NOT NULL,CardnoVarchar2(50)NOT NULL,BdateChar(10),RdateChar(10),RRdateChar(10),ForfeitNumber(8,2),FlagNumber(1);编号字段名称数据结构说 明1BidNumber编号2BookNoVarchar2 50书号3CardnoVarchar2 50借阅证编号4BdateChar 10借出日期5RdateChar 10应归还日期6RRDateChar
10、 10实际归还日期/挂失日期7ForfeitNumber(8,2)超期罚款金额8FlagNumber(1)借阅标记(0-借阅,1-续借,2-归还,3-挂失)数据库表结构设计数据库表结构设计表表Users-创建表创建表UsersCREATE TABLE BOOKMAN.Users(UserNameVarchar2(50)Primary Key,UserPwdVarchar2(50)NOT NULL );INSERT INTO BOOKMAN.Users VALUES(Admin,Admin)编号字段名称数据结构说 明1UserNameVarchar2 50用户名2UserPwdVarchar2
11、50密码12.2 设计工程框架设计工程框架p 创建工程创建工程p 添加模块添加模块p 添加类模块添加类模块创建工程创建工程p首先需要创建工程存储的目录。运行首先需要创建工程存储的目录。运行Visual Visual Basic 12.0Basic 12.0主程序,并选择新建主程序,并选择新建“标准标准EXEEXE”工程。新建工程后,在工程。新建工程后,在Visual BasicVisual Basic窗口中窗口中有一个缺省的窗体有一个缺省的窗体Form1Form1,在此基础上设计系,在此基础上设计系统的主界面。统的主界面。p选择选择“工程工程”菜单中的菜单中的“工程工程1 1属性属性”命令,命
12、令,在在“工程属性工程属性”对话框中,将工程名设置为对话框中,将工程名设置为BooksBooks。单击。单击“保存保存”按钮,将工程存储为按钮,将工程存储为Books.vbpBooks.vbp,将,将Form1Form1窗体保存为窗体保存为FrmMain.frxFrmMain.frx。添加模块添加模块p Const Const 用来管理工程中的常量;用来管理工程中的常量;p DbFunc DbFunc 用来管理工程中与数据库操作相关的声明、用来管理工程中与数据库操作相关的声明、变量和函数;变量和函数;p GeneralFunc GeneralFunc 用来管理工程中一些通用的自定义函数;用来管
13、理工程中一些通用的自定义函数;p Variable Variable 用来管理工程中的全局变量。用来管理工程中的全局变量。添加类模块添加类模块BookTypeBookType类的成员函数类的成员函数函数名具体说明Init初始化成员变量Delete删除指定的图书分类记录。参数TmpId表示要删除的图书类型编号GetId根据指定的图书分类名称,读取图书分类编号。参数TmpName表示指定的分类名称GetInfo读取指定的图书分类记录。参数TmpId表示要读取的图书分类编号GetName根据指定的图书分类编号,读取图书分类名称。参数TmpId表示指定的图书分类编号GetNewId生成新记录的图书分类
14、编号HaveSon判断指定的图书分类是否存在下一级分类。参数TmpUpperId表示指定的图书分类编号In_DB判断指定的图书分类名称是否已经在数据库中。参数TypeName表示指定的分类名称Insert插入新的图书分类记录Load_by_Upper读取指定图书分类的所有子分类。参数UpperId表示指定的图书分类的编号Update修改指定的图书分类记录。参数TmpId表示要修改的图书分类的编号表12.8 BookType类的成员函数添加类模块添加类模块 BookInfoBookInfo类的成员函数类的成员函数函数名具体说明Init初始化成员变量Delete删除指定的图书信息记录。参数TmpB
15、ookNo表示要删除的图书信息编号GetInfo读取指定的图书信息记录。参数TmpBookNo表示要读取的图书信息编号GetName根据指定的图书编号,读取图书信息名称。参数TmpBookNo表示指定的图书信息编号GetNo根据指定的图书名称,读取图书信息编号。参数TmpName表示指定的图书名称GetTotalNum返回指定图书的库存数量In_DB判断指定的图书名称是否已经在数据库中。参数TmpBookName表示指定的图书名称Insert插入新的图书信息记录Update修改指定的图书信息记录。参数OriBookNo表示要修改的图书编号UpdateStoreNum图书入库时,更改指定图书的基
16、本库存数量。参数OriBookNo表示要修改的图书编号,addNum表示入库的图书数量UpdateTotalNum图书盘点时,更改指定图书的库存数量。参数OriBookNo表示要修改的图书编号,CountNum表示入库的图书数量添加类模块添加类模块StoreInStoreIn类的成员函数类的成员函数函数名具体说明Init初始化成员变量HaveBook判断入库记录中是否包含指定的图书信息。参数TmpBookNo表示指定的图书编号GetInfo读取指定的入库记录。参数TmpStoreId表示要读取的入库记录编号Insert插入新的入库信息记录添加类模块添加类模块BookBook类的成员函数类的成员
17、函数函数名具体说明Init初始化成员变量Delete删除指定的库存图书记录。参数TmpNo表示要删除的图书编号GetNum读取指定图书的库存数量。参数TmpNo表示图书编号In_DB判断指定的图书是否已经在库存中。参数TmpNo表示图书编号Insert插入新的库存图书记录添加类模块添加类模块 CardsCards类的成员函数类的成员函数函数名具体说明Init初始化成员变量Delete删除指定的借阅证记录。参数TmpNo表示要删除的借阅证编号GetFlag读取指定借阅证的挂失标记。参数TmpNo表示指定的借阅证编号GetInfo读取指定的借阅证记录。参数TmpNo表示要读取的借阅证编号Inser
18、t插入新的借阅证记录Update修改指定的借阅证记录。参数TmpNo表示要修改的借阅证编号UpdateFlag更改借阅证的挂失状态。参数TmpNo表示要修改的借阅证编号,参数FlagNum表示挂失状态添加类模块添加类模块BorrowBorrow类的成员函数类的成员函数函数名具体说明Init初始化成员变量Delete删除指定的借阅记录。参数TmpId表示要删除的借阅编号GetInfo读取指定的借阅记录。参数TmpId表示要读取的借阅编号GetNewId生成新记录的借阅信息编号Insert插入新的借阅记录Update修改指定的借阅记录。参数TmpId表示要删除的借阅编号UpdateFlag更新借阅
19、标志。0表示借阅,1表示续借,2表示归还,3表示挂失UpdateLost更新图书挂失罚款记录及日期UpdateReturn更新图书归还日期添加类模块添加类模块UsersUsers类的成员函数类的成员函数函数名具体说明Init初始化成员变量Delete删除指定的用户记录。参数TmpUser表示要删除的用户名GetInfo读取指定的记录。参数TmpUser表示要读取数据的用户名In_DB判断指定的用户名是否已经在数据库中。参数TmpUsers表示用户名Insert插入新的用户记录Update修改指定的用户记录。参数TmpUser表示要修改的用户名12.3 系统主界面和登录模块设计系统主界面和登录模
20、块设计p设计主界面设计主界面 p设计登录模块设计登录模块主界面主界面主界面窗体的属性主界面窗体的属性窗体属性设置值具体说明名称FrmMain设置窗体名称BorderStyle1 Fixed Single设置窗体的边框属性Caption图书借阅管理系统窗体的标题条文本MaxButtonTrue取消最大化按钮MinButtonTrue激活最小化按钮PictureImgMain.jpg设置窗体背景StartUpPosition2 屏幕中心设置窗体弹出时,位置在屏幕中心登录窗体登录窗体12.4 图书分类管理模块设计图书分类管理模块设计p使用使用TreeViewTreeView控件管理图书分类的方法控件
21、管理图书分类的方法p设计图书分类信息编辑窗体设计图书分类信息编辑窗体p设计图书分类信息管理窗体设计图书分类信息管理窗体p设计图书分类选择窗体设计图书分类选择窗体添加控件添加控件 TreeView 控件 ImageList 控件 设计图书分类信息编辑窗体设计图书分类信息编辑窗体设计图书分类信息管理窗体设计图书分类信息管理窗体 设计图书分类选择窗体设计图书分类选择窗体窗体名为窗体名为FrmBookTypeSelFrmBookTypeSel12.5 图书信息管理模块设计图书信息管理模块设计p设计图书信息编辑窗体设计图书信息编辑窗体p设计图书信息管理窗体设计图书信息管理窗体p设计图书选择窗体设计图书选
22、择窗体设计图书信息编辑窗体设计图书信息编辑窗体p 图书信息编辑窗体可以用来添加和修改图书的基本信息,图书信息编辑窗体可以用来添加和修改图书的基本信息,窗体名称为窗体名称为FrmBookInfoEdit.FrmBookInfoEdit.设计图书信息管理窗体设计图书信息管理窗体p图书基本信息管理窗体的名称为图书基本信息管理窗体的名称为FrmBookInfoFrmBookInfo。设计图书选择窗体设计图书选择窗体p在图书借阅时,需要选择图书,选择图在图书借阅时,需要选择图书,选择图书窗体的名称为书窗体的名称为FrmBookSelFrmBookSel。12.6 图书库存管理模块设计图书库存管理模块设计
23、p设计图书库存编辑模块设计图书库存编辑模块p设计图书库存管理模块设计图书库存管理模块p设计库存盘点编辑模块设计库存盘点编辑模块p设计库存盘点管理模块设计库存盘点管理模块设计图书库存编辑模块设计图书库存编辑模块p创建一个新窗体,窗体名称设置为创建一个新窗体,窗体名称设置为FrmStoreInEditFrmStoreInEdit。设计图书库存管理模块设计图书库存管理模块p图书库存管理窗体的名称为图书库存管理窗体的名称为FrmStoreInFrmStoreIn,窗体布局如图,窗体布局如图12.1412.14所示。所示。设计库存盘点编辑模块设计库存盘点编辑模块p库存盘点的作用是直接修改图书的库存库存盘
24、点的作用是直接修改图书的库存数量,保证系统数据的准确性。库存盘数量,保证系统数据的准确性。库存盘点编辑窗体的名称为点编辑窗体的名称为FrmStoreCountEditFrmStoreCountEdit。设计库存盘点管理模块设计库存盘点管理模块p创建一个新窗体,窗体名称设置为创建一个新窗体,窗体名称设置为FrmStoreCountFrmStoreCount。12.7 借阅证件管理模块设计借阅证件管理模块设计p设计借阅证信息编辑窗体设计借阅证信息编辑窗体p设计借阅证信息管理窗体设计借阅证信息管理窗体p设计图书借阅记录窗体设计图书借阅记录窗体设计借阅证信息编辑窗体设计借阅证信息编辑窗体p借阅证信息编
25、辑窗体可以用来添加和修借阅证信息编辑窗体可以用来添加和修改借阅证信息。借阅证信息编辑窗体的改借阅证信息。借阅证信息编辑窗体的名称为名称为FrmCardsEditFrmCardsEdit。设计借阅证信息管理窗体设计借阅证信息管理窗体p借阅证信息管理窗体的名称为借阅证信息管理窗体的名称为FrmCardsFrmCards,窗体的布局如图,窗体的布局如图12.1812.18所示。所示。设计图书借阅记录窗体设计图书借阅记录窗体p图书借阅记录窗体的名称为图书借阅记录窗体的名称为FrmRecordFrmRecord,窗体布局如图窗体布局如图12.1912.19所示。所示。12.8 图书借阅管理模块设计图书借
26、阅管理模块设计p设计图书借阅信息编辑窗体设计图书借阅信息编辑窗体p设计图书借阅信息管理窗体设计图书借阅信息管理窗体p设计图书催还信息管理窗体设计图书催还信息管理窗体设计图书借阅信息编辑窗体设计图书借阅信息编辑窗体p图书借阅信息编辑窗体可以用来添加和图书借阅信息编辑窗体可以用来添加和修改图书借阅信息,包括图书续借、图修改图书借阅信息,包括图书续借、图书归还、图书挂失等。窗体名称为书归还、图书挂失等。窗体名称为FrmBorrowEditFrmBorrowEdit。设计图书借阅信息管理窗体设计图书借阅信息管理窗体p图书借阅信息窗体的名称为图书借阅信息窗体的名称为FrmBorrowFrmBorrow。设计图书催还信息管理窗体设计图书催还信息管理窗体p当读者在窗体当读者在窗体FrmBorrowFrmBorrow中单击中单击“图书催还图书催还”按钮时,将打开按钮时,将打开“图书催还记录图书催还记录”窗体,显示窗体,显示近期需要归还的图书记录。图书催还信息窗体近期需要归还的图书记录。图书催还信息窗体的名称为的名称为FrmPushFrmPush。