图书馆管理系统课程设计.doc_第1页
图书馆管理系统课程设计.doc_第2页
图书馆管理系统课程设计.doc_第3页
图书馆管理系统课程设计.doc_第4页
图书馆管理系统课程设计.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向图书馆信息管理的数据库系统设计与实现 第26页 共26页1 引言1.1课题背景近年来,随着图书馆规模的不断扩大,图书数量也相应的增加,有关图书的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致图书馆管理上的混乱,人力与物力过多浪费,图书馆管理费用的增加,从而使图书馆的负担过重,影响整个图书馆的运作和控制管理,因此,必须制定一套合理、有效,规范和实用的图书管理系统,对图书资料进行集中统一的管理。另一方面,IT产业和Internet获得了飞速发展,计算机应用已渗透到了各个领域,引起信息管理的革命,实现了信息的自动化处理,提高了处理的及时性和正确性。图书管理工作面对大量的可模块化处理的信息,是当今信息革命的一个重要阵地。我们开发图书管理信息系统就是采用现代化的信息管理方式代替手工管理方式,提高图书管理工作效率,作到信息的规范管理,科学统计和快速查询,让图书馆更好的为学校,社会服务。1.2课程设计目的因为图书馆的藏书种类多、数量多,将藏书准确地分门别类,快速检索,手工进行是非常困难的。其次,借书、还书频率越大,说明图书馆的作用越大,然而随之而来的大量的借书、 还书登记、实存图书的更新以及借出图书超期、遗失等的处理,其工作量之大,往往是人工操作所难以胜任的,而且经常会出现这样那样的差错。同时,图书馆的图书应根据科学技术的发展和教学工作的需要及时添加和更新,然而由于藏书数量及图书种类越来越多,加上自然损耗,人为破坏,使图书的统计工作难以及时完成,藏书的更新也就很难有针对性地进行,藏书的知识结构得不到良好地控制。使用图书借出与管理系统可以大大地提高工作效率,减少工作中可能出现的错误,是提高学校图书馆自动化水平的重要手段之一。其开发主要包括后台数据库的建立和维护以及前端应用程序界面开发两个方面。对于后台数据库的建立和维护要求建立起数据的一致性和完整性强、数据安全性好、符合3NF范式库。而前端应用程序的开发则要求应用程序能提供强大的数据操纵功能,界面友好、使用简单方便等特点。在中国软件行业日益进步的今天,利用这些资源来能有效地减轻工作人员的负担,同时能让读者更加方便的查询相关的信息。通过学校图书借出与管理系统的设计,熟练掌握Visual C+、SQL Server 2000等工具软件,系统地掌握需求分析、数据库设计、编码实现、测试等软件开发的流程,提高自身分析问题、解决问题的能力。1.3课程设计任务本课程设计任务是通过开发一个学校图书借出与管理的数据库系统,学习数据库系统的设计与开发,采用Visual C+和SQL Server2000等软件为开发工具。通过对计算机硬件和软件解决方案的论证,对应用领域进行调查分析,参考各种资料和进行数据库系统开发实践。同时,在此系统中,我们规定,读者可以免费借阅两个月,超过两个月的,每天罚款一角,此系统在老师和同学的指导和帮助, 已经基本上成功地实现了设计任务书的要求,使得设计的数据库系统能够实现一般数据库的管理。1.4开发工具的选用与介绍本系统是经过实际的需求分析,采用Visual c+ 6.0作为开发工具而开发出来的单机版图书查询系统。设计充分利用Visual c+ 6.0与SQL sever 2000数据库技术的强大力量,提高了编程的效率和可靠性。通过该系统,使图书馆的信息管理工作系统化、规范化、自动化,从而达到提高图书管理效率的目的。微软公司的Visual c+ 6.0是Windows应用程序开发工具,是目前最为广泛的、易学易用的面向对象的开发工具。Visual c+ 6.0提供了大量的控件,这些控件可用于设计界面和实现与数据库的连接等各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。因而,实现本系统使用VC是一个相对较好的选择。VC是极具特色和功能强大的软件,主要表现:Visual c+ 不仅仅是一个编译器,更是一个全面的应用程序开发环境,从而可以充分利用具有面向对象特性的c+来开发出专业级的我windows应用程序。Microsoft SQL sever 2000是Microsoft推出的OFFICE系列办公室自动化软件中的用于数据库管理系统。它是一个中小型的数据库管理系统,提供了与其它数据库管理软件包的良好接口,能方便识别DBASE,FOXBASE,FOXPRO,PARADOX等数据库管理系统生成的数据库文件。这也是其命名为SQL SEVER的由来。它的数据库文件储存于扩展名为*.h的文件中,数据输入、查询非常方便。SQL(Structured Query Language,结构化查询语言)是一种功能强大的数据库语言。SQL通常使用于数据库的通信。ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言。SQL语句通常用于完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据。使用SQL的常见关系数据库管理系统有:Oracle、 Sybase、 Microsoft SQL Server、 SQL sever、 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图读者管理员借书信息图书借阅归还管理nnn1nnn借阅11还书信息图3.6 总E-R图3.2逻辑结构设计根据上述的概念结构设计出逻辑结构,将E-R图转换为关系模型。读者模型(读者编号,读者姓名,读者身份证号)管理员模型(管理员编号,管理员姓名,管理员密码)图书模型(图书编号,图书名称,书籍作者,出版社名称,出版日期,是否借出)借书信息模型(借书编号,读者编号,书籍编号,借书日期) 还书信息模型(还书编号,书籍编号,借书日期,应还书日期,超期天数) 管理模型(管理员编号,图书编号)3.3数据库表结构设计表3-1 读者数据库表结构表中列名数据类型可否为空说明Proof_Idnvarcharnot null(主键)读者编号Namenvarcharnot null读者姓名Id_Numberintnull身份证号表3-2 管理员数据库表结构表中列名数据类型可否为空说明administratoridvarcharnot null(主键)管理员编号administratornamevarcharnot null管理员姓名administratorpasswordvarcharnot null管理员密码 表3-3 图书数据库表结构设计表中列名数据类型可否为空说明Book-IDvarcharNot null(主键)图书编号NamevarcharNot null图书名称writervarcharNot null书籍作者pressvarcharNull 出版社名称Inlibrary_DateDatetimeNull出版日期Flag_Borrowvarcharnull总存数 表3-4 借书数据库表结构设计表中列名数据类型可否为空说明Borrow_IdVarcharNot null(外主键)借书编号Book-IDVarcharNot null(外主键)书籍编号Borrow_dateDatetimeNot null借书时间表3-5 还书数据库表结构设计表中列名数据类型可否为空说明Borrow _IdvarcharNot null借书编号Book_IdvarcharNot null(外主键)书籍编号Borrow_DateDatetimeNot Null借书日期Return_DateDatetimeNot Null应还书日期overdueDatetimeNot Null超期天数4物理结构设计数据库物理设计阶段的任务是根据具体计算机系统(DBMS和硬件等)的特点,为给定的数据库模型确定合理的存储结构和存取方法。所谓的“合理”主要有两个含义:一个是要使设计出的物理数据库占用较少的存储空间,另一个对数据库的操作具有尽可能高的速度。主要体现在后者。(1)建立索引:对图书表在Book_Id上建立聚集索引,在Name、auther、press上建立非聚集索引。对读者表在Proof_Id列上建立聚集索引对借书表在Book_Id上建立聚集所以,在Proof_Id上建立非聚集索引对还书表在Book_Id上建立聚集索引,在Proof_Id上建立非聚集索引。对管理员表在administratorid列上建立聚集索引。(2)存储结构确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。将日志文件和数据库对象(表、索引等)分别放在不同的磁盘可以改进系统性能。所以系统将日志文件和数据文件存放在不同磁盘上。5数据库建立5.1 表头的创建(1)创建数据库,该数据库的名称是libraryCreate datebase librarygo(2)管理员表建立,该管理员的名称是Administratorcreate table system_Administrator (administratorid varchar(9)primary key, /* 此表的主码是administratorid*/ administratorname varchar(9)not null , administratorpassword varchar(2) not null, );go(3)图书表的建立,该表的名称system_bookscreate table system_books( Book_Id varchar(20) primary key, /*此表的主码是Book_Id */name varchar(30) Not null, writer varchar(30), press varchar(30) , Inlibrary_Date datetime,Flag_Borrow varchar(10) Not null); go(4)借书表建立,该表的名称是system_borrowcreate table system_borrow ( Borrow_Id varchar(9)primary key, /*此表的主码是Borrow_Id */ Book-Id varchar(9)not null, Borrow_date datetime,foreign key (Book-Id) references system_books(Book-Id), /* Book-Id是外码*/);Go(5)还书表建立,该表的名称是system_returncreate table system_return( Borrow_Id varchar(9)primary key, /*此表的主码是Borrow_Id */ Book_Id varchar(9)not null, Borrow_Date datetime, Return_Date datetime Overdue datetime foreign key (Book_Id) references system_books (Book_Id) /* Book_Id是外码*/);go5.2 索引的创建use librarysystemgocreate index system_books_index_name on system_books(name)create index reader_index_Proof_Id on reader (Proof_Id)create index borrow_index_ Borrow_Id on borrow_record(Borrow_Id)create index return_index on system_return(Borrow_Id)createindex system_Administrato_index_Administrato on system_ 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_INITm_nDefaultType = snapshot;CString CUserSet:GetDefaultConnect()return _T(ODBC;DSN=Library);CString CUserSet:GetDefaultSQL()return _T(dbo.Admin_Info);void CUserSet: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/ CUserSet diagnostics#ifdef _DEBUGvoid CUserSet:AssertValid() constCRecordset:AssertValid();void CUserSet:Dump(CDumpContext& dc) constCRecordset:Dump(dc);#endif /_DEBUG6.2系统主界面的实现我们可以分析出该图书馆图书查询系统流通子模块大致可以分为四个功能模块:图书资料信息模块、读者资料,借书/还书模块。通过对用户需求的分一下系统主界面的具体实现,从而对各个功能模块从总体上有一个认识,也对各个功能模块的具体实现指明了方向。系统主界面是整个图书馆图书查询系统的操作界面,在主界面上通过对菜单和工具栏按钮的操作即可实现整个图书馆图书查询系统的各项功能。主界面如图6.2所示。图6.2 主界面示意图主要代码如下void CNewBooksDlg:OnButtonIn() / TODO: Add your control notification handler code hereUpdateData();if(m_strBookID.Compare()=0)Message Box(请正确填写要求的数据,新书入库登记);return;if(!m_database.IsOpen()if(!m_database.Open(_T(Library)MessageBox(Cannot access database!,新书登记);return;CBookSet *m_pset=new CBookSet(&m_database);/判断书库中是否有该书,进行相应操作/有,把数量加到库中CString strSQL;strSQL.Format(select * from Book_Info where Book_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(Adding new books successfully!,新书入库登记);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 * from Book_Info);m_pset-Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);/if(m_pset-GetRecordCount()=0)/MessageBox(There are not any book information!,新书登记);/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;CTime curTime=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(Adding new books successfully!,新书入库登记);OnButtonCheckBooks();m_strBookID.Empty();m_strBookName.Empty();m_strPress.Empty();m_strWriter.Empty();m_dPrice=0.0;UpdateData(FALSE);return;void CNewBooksDlg:OnButtonCheckBooks() / TODO: Add your control notification handler code hereUpdateData();if(m_strBookID=)MessageBox(请正确填写信息,(书号?),新书登记);return;if(!m_database.IsOpen()if(!m_database.Open(_T(Library)MessageBox(Cannot access the database!,新书登记);return;CBookSet *m_pset=new CBookSet(&m_database);CString strSQL;strSQL.Format(select * from Book_Info where Book_ID=%s,m_strBookID);m_pset-Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);if(m_pset-GetRecordCount()=0)MessageBox(No this book in the database!,新书登记);m_database.Close();return;/处理表格m_ctrList.DeleteAllItems();m_pset-MoveFirst();char buf50;CDBVariant varValue;int i=0;CString strBookName;while(!m_pset-IsEOF()m_ctrList.InsertItem(i,buf);m_ctrList.SetItemText(i,0,m_strBookID);m_pset-GetFieldValue(1,strBookName);m_ctrList.SetItemText(i,1,strBookName);m_pset-GetFieldValue(2,strBookName);m_ctrList.SetItemText(i,2,strBookName);m_pset-GetFieldValue(3,strBookName);m_ctrList.SetItemText(i,3,strBookName);m_pset-GetFieldValue(4,varValue);sprintf(buf,%.2f,varValue.m_dblVal);m_ctrList.SetItemText(i,4,buf);m_pset-GetFieldValue(5,varValue);sprintf(buf,%d-%d-%d,varValue.m_pdate-year,varValue.m_pdate-month,varValue.m_pdate-day);m_ctrList.SetItemText(i,5,buf);m_pset-GetFieldValue(6,varValue);sprintf(buf,%d,varValue.m_lVal);m_ctrList.SetItemText(i,6,buf);m_pset-GetFieldValue(7,varValue);sprintf(buf,%d,varValue.m_lVal);m_ctrList.SetItemText(i,7,buf);i+;m_pset-MoveNext();UpdateData(FALSE);m_pset-Close();m_database.Close();void CNewBooksDlg:OnButtonCheckAll() / TODO: Add your control notification handler code hereif(!m_database.IsOpen()if(!m_database.Open(_T(Library)MessageBox(Cannot access the database!,新书登记);return;/打开数据库的连接,并且捕获异常CBookSet *m_pset=new CBookSet(&m_database);CString strSQL;strSQL.Format(select * from Book_Info);TRYm_pset-Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);CATCH(CDBException,ex)AfxMessageBox(OK1);AfxMessageBox (ex-m_strError);AfxMessageBox (ex-m_strStateNativeOrigin);AND_CATCH(CException,e)TCHAR szError100;e-GetErrorMessage(szError,100);AfxMessageBox (szError);END_CATCHif(m_pset-GetRecordCount()=0)MessageBox(书库中没有任何书籍信息!,新书登记);m_database.Close();return;/处理表格9m_ctrList.DeleteAllItems();m_pset-MoveFirst();char buf50;CDBVariant varValue;int i=0;CString strBookName;while(!m_pset-IsEOF()int temp=0;m_ctrList.InsertItem(i,buf);m_pset-GetFieldValue(short)0,m_strBookID);m_ctrList.SetItemText(i,0,m_strBookID);m_pset-GetFieldValue(1,strBookName);m_ctrList.SetItemText(i,1,strBookName);m_pset-GetFieldValue(2,strBookName);m_ctrList.SetItemText(i,2,strBookName);m_pset-GetFieldValue(3,strBookName);m_ctrList.SetItemText(i,3,strBookName);m_pset-GetFieldValue(4,varValue);sprintf(buf,%.2f,varValue.m_dblVal);m_ctrList.SetItemText(i,4,buf);m_pset-GetFieldValue(5,varValue);sprintf(buf,%d-%d-%d,varValue.m_pdate-year,varValue.m_pdate-month, varValue.m_pdate-day);m_ctrList.SetItemText(i,5,buf);m_pset-GetFieldValue(6,varValue);sprintf(buf,%d,varValue.m_lVal);m_ctrList.SetItemText(i,6,buf);m_pset-GetFieldValue(7,varValue);sprintf(buf,%d,varValue.m_lVal);m_ctrList.SetItemText(i,7,buf);i+;m_pset-MoveNext();UpdateData(FALSE);m_pset-Close();m_database.Close();m_strBookID.Empty();UpdateData(FALSE);void CNewBooksDlg:OnButtonBack() / TODO: Add your control notification handler code hereif(m_database.IsOpen()m_database.Close();OnOK();void CNewBooksDlg:OnClose() OnButtonBack(); 6.3图书信息模块的界面实现主要是实现对图书信息的查询。此模块还可以实现对图书信息的删除,修改,用户可以输入有关图书的某一方面或若干方面的信息,点击相关按钮,就可以实现所需要的功能。图书查询模块如图6.3所示。图6.3 图书查询模块示意图其相关代码如下所示Private Sub Command1_Click()sqlsearchbook = 与数据库建立连接cn.OpenProvider=Microsoft.Jet.OLEDB.3.51;Data Source=E:shejidb1.mdb; Persist Security Info=Falsers_Book.Open sqlsearchbook, cn, adOpenStatic, adLockReadOnlySet DataGrid1.DataSource = rs_BookIf rs_Book.EOF Or rs_Book.BOF ThenMessageBox (查无此书!)End Ifif(m_pset-GetRecordCount()=0)MessageBox(No this book in the database!,新书登记);m_database.Close();return;DataGrid1.Refresh End If End Sub7 课程设计总结在本次课程设计的软件开发的过程中,我全面实践一个面向数据库的应用系统的开发过程,学习了很多有关的知识。这样的项目对我学过的数据结构,程序设计,数据库,软件工程等课程是一个综合性很高的实践。一些以前没有学得很杂实的课程的内容,由于需要在实践中运用,刚开始我也感到很头痛。但回过头再去看有关的教科书,经过一段时间的钻研,对与这些知识点的相关的背景,概念和解决方案理解得更透彻了,学习起来也越来越有兴趣,越来越轻松

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论