图书馆管理系统课程设计Word文档下载推荐.docx
《图书馆管理系统课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统课程设计Word文档下载推荐.docx(28页珍藏版)》请在冰点文库上搜索。
使用SQL的常见关系数据库管理系统有:
Oracle、Sybase、MicrosoftSQLServer、SQLsever、Ingress等等。
虽然绝大多数的数据库系统使用SQL,但是它们同样有它们自立另外的专有扩展功能用于它们的系统。
但是,标准的SQL命令,比如"
Select"
、"
Insert"
Update"
Delete"
Create"
和"
Drop"
常常被用于完成绝大多数数据库的操作。
2系统结构分析
2.1需求分析
图书馆管理系统是适应时代发展的需要,提高管理的效率而开发设计的,本系统主要实现对图书信息的管理,主要功能为管理有关读者,书籍的信息等。
及时为工作人员和读者提供最新的信息和最方便的操作方法。
实现学校图书馆管理的系统化、规范化和自动化以及对图书资料的集中统一的管理。
通过系统分析,本系统结构分为一下几个模块:
(1)读者信息管理模块
此模块的功能主要是读者基本信息的输入、查询、修改,包括读者证编号、读者姓名,身份证等。
(2)管理员信息管理模块
此模块的功能包括创建读者用户信息、删除读者用户信息、删除图书信息。
(3)图书信息管理模块
此模块的功能主要是书籍库存信息的输入、查询、修改,包括书籍条码书籍名称、作者姓名、出版社名称、出版日期、是否能借出。
(4)借书信息管理模块
此模块的功能主要是信息的输入、查询、修改,包括读者姓名、读者编号,书籍编号、书籍名称、借书日期等。
(5)还书信息管理模块
此模块的功能主要是还书信息的输入、查询、修改,包括读者姓名、书籍编号、借书日期、应还书日期、罚款金额等。
2.2功能模块图
(1)根据上述的功能,可以设计出系统的总体功能模块。
功能模块图如图2.1。
图2.1功能模块图
(2)读者信息管理模块的功能主要是读者基本信息的输入、查询、修改,包括读者借书证编号、读者姓名、读者性别等。
管理员信息管理如图2.2所示。
图2.2读者信息管理
(3)管理员信息管理模块功能包括创建读者用户信息、删除读者用户信,添加图书信息、删除图书信息。
管理员信息管理如图2.3所示。
图2.3管理员信息管理
(4)图书信息管理模块的功能主要是图书信息的输入、查询、修改,包括书籍编号,书籍名称、作者姓名、出版社名称,出版日期,是否借出。
图书信息管理如图2.4所示。
图2.4图书信息管理
(5)借书信息管理模块的功能主要是借书信息的输入、查询、修改,包括借书证编号、读者姓名、书籍编号、书籍名称。
借书信息管理如图2.5所示。
图2.5借书信息管理
(6)还书信息管理模块的功能主要是超期还书输入、查询、修改,读者姓名,书籍编号、还书日期,应还书日期,罚款金额等。
还书信息管理如图2.6所示。
图2.6还书信息管理
3数据库设计
3.1概念设计
根据所要实现的功能设计,建立它们之间的关系,进而实现逻辑结构功能。
图书馆管理系统可以划分的实体有:
读者信息实体、图书实体、管理员实体,借书信息实体,还书信息实体,下面用E-R图一一描述这些实体。
图3.1读者信息实体
图3.2管理员信息实体
图3.3图书信息实体
图3.4借书信息实体
图3.5还书信息实体
(2)根据分E-R图,设计出了如下所示的总的E-R图
读者
管理员
借书信息
图书
借阅
归还
管理
n
1
还书信息
图3.6总E-R图
3.2逻辑结构设计
根据上述的概念结构设计出逻辑结构,将E-R图转换为关系模型。
读者模型(读者编号,读者姓名,读者身份证号)
管理员模型(管理员编号,管理员姓名,管理员密码)
图书模型(图书编号,图书名称,书籍作者,出版社名称,出版日期,是否借出)
借书信息模型(借书编号,读者编号,书籍编号,借书日期)
还书信息模型(还书编号,书籍编号,借书日期,应还书日期,超期天数)
管理模型(管理员编号,图书编号)
3.3数据库表结构设计
表3-1读者数据库表结构
表中列名
数据类型
可否为空
说明
Proof_Id
nvarchar
notnull(主键)
读者编号
Name
notnull
读者姓名
Id_Number
int
null
身份证号
表3-2管理员数据库表结构
administratorid
varchar
管理员编号
administratorname
管理员姓名
administratorpassword
管理员密码
表3-3图书数据库表结构设计
Book-ID
Notnull(主键)
图书编号
Notnull
图书名称
writer
书籍作者
press
Null
出版社名称
Inlibrary_Date
Datetime
出版日期
Flag_Borrow
总存数
表3-4借书数据库表结构设计
Borrow_Id
Varchar
Notnull(外主键)
借书编号
书籍编号
Borrow_date
借书时间
表3-5还书数据库表结构设计
Borrow_Id
Book_Id
Borrow_Date
NotNull
借书日期
Return_Date
应还书日期
overdue
超期天数
4物理结构设计
数据库物理设计阶段的任务是根据具体计算机系统(DBMS和硬件等)的特点,为给定的数据库模型确定合理的存储结构和存取方法。
所谓的“合理”主要有两个含义:
一个是要使设计出的物理数据库占用较少的存储空间,另一个对数据库的操作具有尽可能高的速度。
主要体现在后者。
(1)建立索引:
对图书表在Book_Id上建立聚集索引,在Name、auther、press上建立非聚集索引。
对读者表在Proof_Id列上建立聚集索引
对借书表在Book_Id上建立聚集所以,在Proof_Id上建立非聚集索引
对还书表在Book_Id上建立聚集索引,在Proof_Id上建立非聚集索引。
对管理员表在administratorid列上建立聚集索引。
(2)存储结构
确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。
将日志文件和数据库对象(表、索引等)分别放在不同的磁盘可以改进系统
性能。
所以系统将日志文件和数据文件存放在不同磁盘上。
5数据库建立
5.1表头的创建
(1)创建数据库,该数据库的名称是library
Createdatebaselibrary
go
(2)管理员表建立,该管理员的名称是Administrator
createtablesystem_Administrator
(administratoridvarchar(9)primarykey,/*此表的主码是administratorid*/
administratornamevarchar(9)notnull,
administratorpasswordvarchar
(2)notnull,
);
(3)图书表的建立,该表的名称system_books
createtablesystem_books
(Book_Idvarchar(20)primarykey,/*此表的主码是Book_Id*/
namevarchar(30)Notnull,
writervarchar(30),
pressvarchar(30),
Inlibrary_Datedatetime,
Flag_Borrowvarchar(10)Notnull);
go
(4)借书表建立,该表的名称是system_borrow
createtablesystem_borrow
(Borrow_Idvarchar(9)primarykey,/*此表的主码是Borrow_Id*/
Book-Idvarchar(9)notnull,
Borrow_datedatetime,
foreignkey(Book-Id)referencessystem_books(Book-Id),/*Book-Id是外码*/
);
Go
(5)还书表建立,该表的名称是system_return
createtablesystem_return
Book_Idvarchar(9)notnull,
Borrow_Datedatetime,
Return_Datedatetime
Overduedatetime
foreignkey(Book_Id)referencessystem_books(Book_Id)/*Book_Id是外码*/
5.2索引的创建
uselibrarysystem
createindexsystem_books_index_nameonsystem_books(name)
createindexreader_index_Proof_Idonreader(Proof_Id)
createindexborrow_index_Borrow_Idonborrow_record(Borrow_Id)
createindexreturn_indexonsystem_return(Borrow_Id)
createindexsystem_Administrato_index_Administratoonsystem_Administrato(Administratorid)
6图书馆管理系统的具体实现
6.1读者登陆界面的实现
图6.1登陆界面示意图
其实现代码如下所示
CUserSet:
:
CUserSet(CDatabase*pdb)
:
CRecordset(pdb)
{
//{{AFX_FIELD_INIT(CUserSet)
m_User_Name=_T("
"
m_Password=_T("
m_nFields=3;
//}}AFX_FIELD_INIT
m_nDefaultType=snapshot;
}
CStringCUserSet:
GetDefaultConnect()
return_T("
ODBC;
DSN=Library"
GetDefaultSQL()
[dbo].[Admin_Info]"
voidCUserSet:
DoFieldExchange(CFieldExchange*pFX)
//{{AFX_FIELD_MAP(CUserSet)
pFX->
SetFieldType(CFieldExchange:
outputColumn);
RFX_Text(pFX,_T("
[User_Name]"
),m_User_Name);
[Password]"
),m_Password);
//}}AFX_FIELD_MAP
//CUserSetdiagnostics
#ifdef_DEBUG
AssertValid()const
CRecordset:
AssertValid();
Dump(CDumpContext&
dc)const
Dump(dc);
#endif//_DEBUG
6.2系统主界面的实现
我们可以分析出该图书馆图书查询系统流通子模块大致可以分为四个功能模块:
图书资料信息模块、读者资料,借书/还书模块。
通过对用户需求的分一下系统主界面的具体实现,从而对各个功能模块从总体上有一个认识,也对各个功能模块的具体实现指明了方向。
系统主界面是整个图书馆图书查询系统的操作界面,在主界面上通过对菜单和工具栏按钮的操作即可实现整个图书馆图书查询系统的各项功能。
主界面如图6.2所示。
图6.2主界面示意图
主要代码如下
voidCNewBooksDlg:
OnButtonIn()
{//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData();
if(m_strBookID.Compare("
)==0)
{
MessageBox("
请正确填写要求的数据"
"
新书入库登记"
return;
}
if(!
m_database.IsOpen())
if(!
m_database.Open(_T("
Library"
)))
{
MessageBox("
Cannotaccessdatabase!
新书登记"
return;
}
CBookSet*m_pset=newCBookSet(&
m_database);
//判断书库中是否有该书,进行相应操作
//有,把数量加到库中
CStringstrSQL;
strSQL.Format("
select*fromBook_InfowhereBook_ID='
%s'
m_strBookID);
m_pset->
Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
if(m_pset->
GetRecordCount()!
=0)
{
m_pset->
Edit();
Update();
Requery();
Close();
m_database.Close();
MessageBox("
Addingnewbookssuccessfully!
OnButtonCheckBooks();
if(m_strBookID=="
||m_strBookName=="
||m_strWriter=="
||m_strPress=="
||m_dPrice==0||m_lTotal==0
||m_lNow==0)
请正确填写要求的数据!
新书登记入库"
select*fromBook_Info"
//if(m_pset->
GetRecordCount()==0)
//{
//MessageBox("
Therearenotanybookinformation!
//}
AddNew();
SetFieldNull(&
(m_pset->
m_Book_ID),FALSE);
m_Book_ID=m_strBookID;
m_Book_Name),FALSE);
m_Book_Name=m_strBookName;
m_Writer),FALSE);
m_Writer=m_strWriter;
m_Press),FALSE);
m_Press=m_strPress;
CTimecurTime=CTime:
GetCurrentTime();
m_InLibrary_Date),FALSE);
m_InLibrary_Date=curTime;
m_database.Close();
MessageBox("
OnButtonCheckBooks();
m_strBookID.Empty();
m_strBookName.Empty();
m_strPress.Empty();
m_strWriter.Empty();
m_dPrice=0.0;
UpdateData(FALSE);
return;
OnButtonCheckBooks()
Upd