图书馆管理系统课程设计.docx

上传人:b****5 文档编号:12545176 上传时间:2023-04-20 格式:DOCX 页数:28 大小:170.69KB
下载 相关 举报
图书馆管理系统课程设计.docx_第1页
第1页 / 共28页
图书馆管理系统课程设计.docx_第2页
第2页 / 共28页
图书馆管理系统课程设计.docx_第3页
第3页 / 共28页
图书馆管理系统课程设计.docx_第4页
第4页 / 共28页
图书馆管理系统课程设计.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

图书馆管理系统课程设计.docx

《图书馆管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统课程设计.docx(28页珍藏版)》请在冰豆网上搜索。

图书馆管理系统课程设计.docx

图书馆管理系统课程设计

1引言

1.1课题背景

近年来,随着图书馆规模的不断扩大,图书数量也相应的增加,有关图书的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致图书馆管理上的混乱,人力与物力过多浪费,图书馆管理费用的增加,从而使图书馆的负担过重,影响整个图书馆的运作和控制管理,因此,必须制定一套合理、有效,规范和实用的图书管理系统,对图书资料进行集中统一的管理。

另一方面,IT产业和Internet获得了飞速发展,计算机应用已渗透到了各个领域,引起信息管理的革命,实现了信息的自动化处理,提高了处理的及时性和正确性。

图书管理工作面对大量的可模块化处理的信息,是当今信息革命的一个重要阵地。

我们开发图书管理信息系统就是采用现代化的信息管理方式代替手工管理方式,提高图书管理工作效率,作到信息的规范管理,科学统计和快速查询,让图书馆更好的为学校,社会服务。

1.2课程设计目的

因为图书馆的藏书种类多、数量多,将藏书准确地分门别类,快速检索,手工进行是非常困难的。

其次,借书、还书频率越大,说明图书馆的作用越大,然而随之而来的大量的借书、还书登记、实存图书的更新以及借出图书超期、遗失等的处理,其工作量之大,往往是人工操作所难以胜任的,而且经常会出现这样那样的差错。

同时,图书馆的图书应根据科学技术的发展和教学工作的需要及时添加和更新,然而由于藏书数量及图书种类越来越多,加上自然损耗,人为破坏,使图书的统计工作难以及时完成,藏书的更新也就很难有针对性地进行,藏书的知识结构得不到良好地控制。

使用图书借出与管理系统可以大大地提高工作效率,减少工作中可能出现的错误,是提高学校图书馆自动化水平的重要手段之一。

其开发主要包括后台数据库的建立和维护以及前端应用程序界面开发两个方面。

对于后台数据库的建立和维护要求建立起数据的一致性和完整性强、数据安全性好、符合3NF范式库。

而前端应用程序的开发则要求应用程序能提供强大的数据操纵功能,界面友好、使用简单方便等特点。

在中国软件行业日益进步的今天,利用这些资源来能有效地减轻工作人员的负担,同时能让读者更加方便的查询相关的信息。

通过学校图书借出与管理系统的设计,熟练掌握VisualC++、SQLServer2000等工具软件,系统地掌握需求分析、数据库设计、编码实现、测试等软件开发的流程,提高自身分析问题、解决问题的能力。

1.3课程设计任务

本课程设计任务是通过开发一个学校图书借出与管理的数据库系统,学习数据库系统的设计与开发,采用VisualC++和SQLServer2000等软件为开发工具。

通过对计算机硬件和软件解决方案的论证,对应用领域进行调查分析,参考各种资料和进行数据库系统开发实践。

同时,在此系统中,我们规定,读者可以免费借阅两个月,超过两个月的,每天罚款一角,此系统在老师和同学的指导和帮助,已经基本上成功地实现了设计任务书的要求,使得设计的数据库系统能够实现一般数据库的管理。

1.4开发工具的选用与介绍

本系统是经过实际的需求分析,采用Visualc++6.0作为开发工具而开发出来的单机版图书查询系统。

设计充分利用Visualc++6.0与SQLsever2000数据库技术的强大力量,提高了编程的效率和可靠性。

通过该系统,使图书馆的信息管理工作系统化、规范化、自动化,从而达到提高图书管理效率的目的。

微软公司的Visualc++6.0是Windows应用程序开发工具,是目前最为广泛的、易学易用的面向对象的开发工具。

Visualc++6.0提供了大量的控件,这些控件可用于设计界面和实现与数据库的连接等各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。

因而,实现本系统使用VC是一个相对较好的选择。

VC是极具特色和功能强大的软件,主要表现:

Visualc++不仅仅是一个编译器,更是一个全面的应用程序开发环境,从而可以充分利用具有面向对象特性的c++来开发出专业级的我windows应用程序。

MicrosoftSQLsever2000是Microsoft推出的OFFICE系列办公室自动化软件中的用于数据库管理系统。

它是一个中小型的数据库管理系统,提供了与其它数据库管理软件包的良好接口,能方便识别DBASE,FOXBASE,FOXPRO,PARADOX等数据库管理系统生成的数据库文件。

这也是其命名为SQLSEVER的由来。

它的数据库文件储存于扩展名为*.h的文件中,数据输入、查询非常方便。

SQL(StructuredQueryLanguage,结构化查询语言)是一种功能强大的数据库语言。

SQL通常使用于数据库的通信。

ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言。

SQL语句通常用于完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据。

使用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

n

n

1

n

n

n

借阅

1

1

还书信息

图3.6总E-R图

3.2逻辑结构设计

根据上述的概念结构设计出逻辑结构,将E-R图转换为关系模型。

读者模型(读者编号,读者姓名,读者身份证号)

管理员模型(管理员编号,管理员姓名,管理员密码)

图书模型(图书编号,图书名称,书籍作者,出版社名称,出版日期,是否借出)

借书信息模型(借书编号,读者编号,书籍编号,借书日期)

还书信息模型(还书编号,书籍编号,借书日期,应还书日期,超期天数)

管理模型(管理员编号,图书编号)

 

3.3数据库表结构设计

表3-1读者数据库表结构

表中列名

数据类型

可否为空

说明

Proof_Id

nvarchar

notnull(主键)

读者编号

Name

nvarchar

notnull

读者姓名

Id_Number

int

null

身份证号

表3-2管理员数据库表结构

表中列名

数据类型

可否为空

说明

administratorid

varchar

notnull(主键)

管理员编号

administratorname

varchar

notnull

管理员姓名

administratorpassword

varchar

notnull

管理员密码

表3-3图书数据库表结构设计

表中列名

数据类型

可否为空

说明

Book-ID

varchar

Notnull(主键)

图书编号

Name

varchar

Notnull

图书名称

writer

varchar

Notnull

书籍作者

press

varchar

Null

出版社名称

Inlibrary_Date

Datetime

Null

出版日期

Flag_Borrow

varchar

null

总存数

表3-4借书数据库表结构设计

表中列名

数据类型

可否为空

说明

Borrow_Id

Varchar

Notnull(外主键)

借书编号

Book-ID

Varchar

Notnull(外主键)

书籍编号

Borrow_date

Datetime

Notnull

借书时间

表3-5还书数据库表结构设计

表中列名

数据类型

可否为空

说明

Borrow_Id

varchar

Notnull

借书编号

Book_Id

varchar

Notnull(外主键)

书籍编号

Borrow_Date

Datetime

NotNull

借书日期

Return_Date

Datetime

NotNull

应还书日期

overdue

Datetime

NotNull

超期天数

 

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,

);

go

(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

(Borrow_Idvarchar(9)primarykey,/*此表的主码是Borrow_Id*/

Book_Idvarchar(9)notnull,

Borrow_Datedatetime,

Return_Datedatetime

Overduedatetime

foreignkey(Book_Id)referencessystem_books(Book_Id)/*Book_Id是外码*/

);

go

5.2索引的创建

uselibrarysystem

go

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");

}

CStringCUserSet:

:

GetDefaultSQL()

{

return_T("[dbo].[Admin_Info]");

}

voidCUserSet:

:

DoFieldExchange(CFieldExchange*pFX)

{

//{{AFX_FIELD_MAP(CUserSet)

pFX->SetFieldType(CFieldExchange:

:

outputColumn);

RFX_Text(pFX,_T("[User_Name]"),m_User_Name);

RFX_Text(pFX,_T("[Password]"),m_Password);

//}}AFX_FIELD_MAP

}

//CUserSetdiagnostics

#ifdef_DEBUG

voidCUserSet:

:

AssertValid()const

{

CRecordset:

:

AssertValid();

}

voidCUserSet:

:

Dump(CDumpContext&dc)const

{

CRecordset:

:

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();

m_pset->Update();

m_pset->Requery();

m_pset->Close();

m_database.Close();

MessageBox("Addingnewbookssuccessfully!

","新书入库登记");

OnButtonCheckBooks();

return;

}

m_pset->Close();

if(m_strBookID==""||m_strBookName==""||m_strWriter==""

||m_strPress==""||m_dPrice==0||m_lTotal==0

||m_lNow==0)

{

MessageBox("请正确填写要求的数据!

","新书登记入库");

m_database.Close();

return;

}

strSQL.Format("select*fromBook_Info");

m_pset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);

//if(m_pset->GetRecordCount()==0)

//{

//MessageBox("Therearenotanybookinformation!

","新书登记");

//}

m_pset->AddNew();

m_pset->SetFieldNull(&(m_pset->m_Book_ID),FALSE);

m_pset->m_Book_ID=m_strBookID;

m_pset->SetFieldNull(&(m_pset->m_Book_Name),FALSE);

m_pset->m_Book_Name=m_strBookName;

m_pset->SetFieldNull(&(m_pset->m_Writer),FALSE);

m_pset->m_Writer=m_strWriter;

m_pset->SetFieldNull(&(m_pset->m_Press),FALSE);

m_pset->m_Press=m_strPress;

CTimecurTime=CTime:

:

GetCurrentTime();

m_pset->SetFieldNull(&(m_pset->m_InLibrary_Date),FALSE);

m_pset->m_InLibrary_Date=curTime;

m_pset->Update();

m_pset->Requery();

m_pset->Close();

m_database.Close();

MessageBox("Addingnewbookssuccessfully!

","新书入库登记");

OnButtonCheckBooks();

m_strBookID.Empty();

m_strBookName.Empty();

m_strPress.Empty();

m_strWriter.Empty();

m_dPrice=0.0;

UpdateData(FALSE);

return;

}

voidCNewBooksDlg:

:

OnButtonCheckBooks()

{//TODO:

Addyourcontrolnotificationhandlercodehere

Upd

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1