c++图书管理系统范文(共34页).doc

上传人:飞****2 文档编号:13848884 上传时间:2022-05-01 格式:DOC 页数:34 大小:261KB
返回 下载 相关 举报
c++图书管理系统范文(共34页).doc_第1页
第1页 / 共34页
c++图书管理系统范文(共34页).doc_第2页
第2页 / 共34页
点击查看更多>>
资源描述

《c++图书管理系统范文(共34页).doc》由会员分享,可在线阅读,更多相关《c++图书管理系统范文(共34页).doc(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上2006级信息与计算科学专业课程设计潍坊学院数学与信息科学学院课程设计报告书课题名称姓 名学 号专 业班 级指导教师2009年06 月26日专心-专注-专业一、设计任务及要求:设计任务:通过所学过的Visual Basic、C+:面向对象程序设计、数据库系统概论和软件工程理论、方法与实践及相关资料的查询,设计一个仓库管理系统,使之具有一般的仓库所需要的功能。要 求: 1.分析设计仓库管理系统所要应用的功能,正确做出分析设计图。2.运用所学的知识和相关资料的查询,上机编写及调试源程序,进一步提高编程技巧及调试程序能力。3.所设计的系统能够正确的运行,且认真书写课程设计说

2、明书。4.遵守课程设计要求和机房管理制度,服从指导教师的安排,确保课程设计的顺利完成。指导教师签名: 年 月 日 二、指导教师评语及成绩:成绩: 指导教师签名: 年 月 日 目录1 概述随着人们知识层次的提高图书馆成为日常生活中不可缺少的一部分。而图书馆的存书量和业务量庞大,仅仅靠传统的记账式管理式不可行的。图书馆管理系统应运而生,逐渐成为信息化建设的重要组成部分。图书馆管理系统为学校或者社会型图书馆的管理员提供所有借阅者的详细信息,以及馆内库存的详细情况,对借书和还书两大功能进行合理操纵并登记。本系统主要包括以下几个主要功能(1)进入系统前需要身份验证、用户名、密码,输入正确后方可进入。(2

3、)用户可以根据需要进行书库管理。(3)用户可以进行借书证的办理、查询、挂失等操作。(4)用户可以添加账号和修改密码和退出系统等功能。2 需求分析2.1数据库需求分析通过对图书馆管理系统功能的分析和实际调查情况,图书馆管理系统需要包括以下数据库信息。 (1)管理员基本信息:包括图书ID、密码等。(2)图书信息:包括图书ID、图书名称、作者、出版社、单价、入库时间、图书总量、现存总量。(3)借书信息:包括借书号、借阅卡号、所借图书的名字、借书日期。(4)借阅卡信息:包括借阅卡号、读者姓名、性别、出生日期、家庭住址、身份证号码、电话号码、现借书总数。(5)罚金管理:包括罚金号、借阅证号、图书号、借出

4、时间、返还时间、罚金。2.2系统功能分析本系统功能模块主要包括以下几部分:身份验证、书库管理、借阅证管理、系统管理和退出。(1)身份验证:提供系统的访问控制功能。(2)书库管理:包括新书登记、借书、还书、书籍挂失、图书信息查询、借书信息查询等功能。(3)借阅证管理:其提供办理借阅证、借阅证信息查询、借阅证挂失功能。(4)系统管理:包括添加账号、修改密码和退出系统等功能。(5)系统管理:其功能是为系统的使用者提供密码管理和数据备份、恢复管理。3系统设计3.1 总体设计框架系统总体设计图如下:图书馆管理系统身份验证书库管理新书登记借书/还书书籍挂失图书信息查询查询借书信息查询借阅证管理办理借阅证借

5、阅证查询借阅证挂失系统管理添加帐号修改密码退出 图1 图书馆管理系统总计设计图3.2系统流程分析在系统运行时的动态模型应该由系统的流程决定。当用户登录系统后,可以根据拥有的权限来进行书库的管理、借阅证的管理等操作,具体的流程如图2所示。登录界面用户验证登录失败登录成功书库管理系统管理借阅管理退出系统图2 图书馆管理系统流程图3.3 数据库设计基本表的设计如下:(1) 管理员基本信息表 管理员基本信息表(Admin_Info)包含了图书馆管理员的基本信息,其结构如表1所示。表1 管理员基本信息表字 段 名 称数 据 类 型可 否 为 空约 束 条 件说 明WorkIDINTEGERNOT NUL

6、L主键地方ID值User_nameVARCHAR2(24)NOT NULL无姓名PasswordVARCHAR2(24)NOT NULL无密码(2) 图书信息表图书信息表(Book_Info)包含了图书馆所有图书的基本信息,用来方便读者查询和借阅,其结构如表2所示。表2:图书信息表字 段 名 称数 据 类 型可 否 为 空约 束 条 件说 明Book_IDVARCHAR(50)NOT NULL主键书籍ID值Book_NameVARCHAR(50)NOT NULL无书名WriterVARCHAR(50)NOT NULL无作者PressVARCHAR(50)NOT NULL无出版社Priceflo

7、atNOT NULL无单价InLibrary_DataDATANOT NULL无入库时间Total_AmoutINTEGERNOT NULL无总量Now_AmountINTEGERNOT NULL无现存量(3) 借阅卡信息表借阅卡信息表(Proof_Info)包含了所有读者的借阅卡信息,用来方便读者借阅和管理员,其结构如表3所示。表3:借阅卡信息表字 段 名 称数 据 类 型可 否 为 空约 束 条 件说 明Proof_IDVARCHAR(50)NOT NULL主键借阅卡IDNameVARCHAR(50)NOT NULL无姓名SexVARCHAR(50)NOT NULL无性别Birth_Tim

8、eDATANOT NULL无出生日期AddressVARCHAR(50)NOT NULL无地址ID_NumberVARCHAR(50)NOT NULL无身份证号码Tel_NumberVARCHAR(50)NOT NULL无电话号码Now_Borrow_AmountINTEGERNOT NULL无现借书总量(4) 借书信息表借书信息表(Borrow_Info)包含了所有图书借阅的信息,用来方便管理员管理图书馆的图书出借情况,其结构如表4所示。表4:借书信息表字 段 名 称数 据 类 型可 否 为 空约 束 条 件说 明BorrowIDINTEGERNOT NULL主键借书IDProof_IDVA

9、RCHAR(50)NULL外键(Proof_Info)借书卡IDBook_IDVARCHAR(50)NULL外键(Proof_Info)书籍IDBorrow_DateDATANULL无产品备注 (5) 罚单信息表 罚单信息表(Punish_Info)包含了所有读者的罚金信息,用来方便管理员管理图书过期的情况,其结构表如表5所示。表5 罚单信息表字 段 名 称数 据 类 型可 否 为 空约 束 条 件说 明Puni_IDINTEGERNOT NULL主键罚单IDProof_IDVARCHAR(50)NOT NULL外键(Proof_Info)借书卡IDBook_IDVARCHAR(50)NOT

10、NULL外键(Proof_Info)图书IDBorrow_DateDATANOT NULL无借出日期Return_DateDATANOT NULL无返还日期Puni_MoneyINTEGER)NOT NULL无罚金4系统实现过程打开Visual C+6.0,新建工程名为“Library”的基于对话框的MFC AppWizardexe。Visual C+6.0会自动生成一些类、文件和主题框架。为了实现系统与数据库的连接,Visual C+6.0有支持ODBC的文件,只需在“stdafx.h”中添加#include afxdb.h即可实现和数据库的连接。4.1 连接数据库 当函数启动后,就要连接数

11、据库,需要3个参数:ODBC数据源名称、数据库用户名称、数据库用户密码。登录到主界面之前,首先调用管理员登录模块。从数据库中读入Admin_Info表中的内容,判断用户输入的用户名和密码是否正确。4.2 用户进入界面功能:当使用者使用此系统时,只有用户名和密码都正确时,才可以通过进入界面进入此系统的主界面。其窗体如下:图3 登录界面主要代码如下。 void CLibraryDlg:OnOK() / TODO: Add extra validation hereUpdateData();if(m_strUsername.IsEmpty()MessageBox(Please input your

12、username!,登录系统,MB_OK|MB_ICONEXCLAMATION);m_strUsername.Empty();UpdateData(FALSE);return;if(!m_database.IsOpen()/连接数据源if(!m_database.Open(_T(Library)MessageBox(连接数据库失败!,图书管理系统,MB_OK|MB_ICONINFORMATION);return;CLoginSet *m_pLogset=new CLoginSet(&m_database);/编写SQL语句CString strSQL;strSQL.Format(select

13、* from Admin_Info where User_Name=%s AND Password=%s,m_strUsername,m_strPassword);/编写SQL语句结束m_pLogset-Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);if(m_pLogset-GetRecordCount()=0)if(countOpen(AFX_DB_USE_DEFAULT_TYPE,strSQL);if(m_pset-GetRecordCount()!=0)m_pset-Edit();m_pset-m_Total_Amount=m_pset-m_Total_Amo

14、unt+m_lTotal;m_pset-m_Now_Amount=m_pset-m_Now_Amount+m_lNow;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_

15、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_pse

16、t-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;m_pset-SetFieldNull(&(m_pset-m_Price),FALSE);m_ps

17、et-m_Price=m_dPrice;m_pset-SetFieldNull(&(m_pset-m_Total_Amount),FALSE);m_pset-m_Total_Amount=m_lTotal;m_pset-SetFieldNull(&(m_pset-m_Now_Amount),FALSE);m_pset-m_Now_Amount=m_lNow;CTime curTime=CTime:GetCurrentTime();m_pset-SetFieldNull(&(m_pset-m_InLibrary_Date),FALSE);m_pset-m_InLibrary_Date=curTi

18、me;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_lNow=0;m_lTotal=0;m_dPrice=0.0;UpdateData(FALSE);return;(2)查询查询也是图书馆管理系统中一个很

19、重要的功能,在很多的地方会用到,也是显示数据的一个功能函数。实现的过程也是首先检查数据库是否打开,以及要查询的书号是否为空。函数代码如下。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(Canno

20、t 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()

21、;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-GetFieldValu

22、e(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_pdat

23、e-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();Upda

24、teData(FALSE);m_pset-Close();m_database.Close();(3)显示全部书籍相应的SQL语句为if exists (select * from dbo.sysobjects where id = object_id(Ndbo.Book_Info) and OBJECTPROPERTY(id, NIsUserTable) = 1)drop table dbo.Book_InfoGO然后依次插入列表空间中。4.4.2 借书/还书借书/还书管理是图书馆管理系统中最重要的模块,包括了查询书籍、查询借阅信息和借书、还书等功能。为了方面,建立了一个对话框,界面如图6所

25、示图6借书/还书管理界面(1) 借书借书是图书馆管理系统中最基本的功能,处理函数的代码如下所示。void CBorrowDlg:OnButtonOk() / TODO: Add your control notification handler code hereUpdateData();if(m_strProofID=|m_strBookID=)MessageBox(输入的域不完整,请重新输入!,借书管理,MB_ICONERROR);m_strProofID.Empty();m_strBookID.Empty();UpdateData(FALSE);return;if(!m_database

26、.IsOpen()if(!m_database.Open(_T(Library)MessageBox(Cannot access the database!,借书管理);return;CString strSQL;/判断借书人是否有资格strSQL.Format(select * from Proof_Info where Proof_ID=%s, m_strProofID);CProofSet *m_pProof=new CProofSet(&m_database);m_pProof-Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);if(m_pProof-GetRe

27、cordCount()=0)MessageBox(数据库中没有这个人的信息,借书/还书,MB_ICONINFORMATION);m_pProof-Close();m_database.Close();return;CDBVariant varValue;m_pProof-GetFieldValue(7,varValue);if(varValue.m_iVal=4)/如果不满足条件MessageBox(你不能借书超过4本!,借书/还书,MB_OK|MB_ICONINFORMATION);m_pProof-Close();m_database.Close();return;/满足条件/借书量加一m

28、_pProof-Edit();m_pProof-m_Now_Borrow_Amount+;m_pProof-Update();m_pProof-Requery();m_pProof-Close();/Book_Info表中,现存数量减一strSQL.Format(select * from Book_Info where Book_ID=%s,m_strBookID);CBookSet *m_pBook=new CBookSet(&m_database);m_pBook-Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);if(m_pBook-GetRecordCount

29、()=0)MessageBox(对不起,图书馆现在没有这本书!,借书/还书,MB_ICONINFORMATION);m_pBook-Close();m_database.Close();return;m_pBook-Edit();m_pBook-m_Now_Amount-;m_pBook-Update();m_pBook-Requery();m_pBook-Close();/将借书信息存入借书信息表中strSQL.Format(select * from Borrow_Info);CBorrowSet *m_pBorrow=new CBorrowSet(&m_database);m_pBorr

30、ow-Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);if(m_pBorrow-GetRecordCount()=0)MessageBox(数据库中没有借书信息!,借书/还书,MB_OK|MB_ICONINFORMATION);m_pBorrow-AddNew();m_pBorrow-SetFieldNull(&(m_pBorrow-m_Proof_ID),FALSE);m_pBorrow-m_Proof_ID=m_strProofID;m_pBorrow-SetFieldNull(&(m_pBorrow-m_Book_ID),FALSE);m_pBorrow-m_B

31、ook_ID=m_strBookID;CTime curTime=CTime:GetCurrentTime();m_pBorrow-SetFieldNull(&(m_pBorrow-m_Borrow_Date),FALSE);m_pBorrow-m_Borrow_Date=curTime;m_pBorrow-m_BorrowID=m_pBorrow-GetRecordCount();m_pBorrow-Update();m_pBorrow-Requery();m_pBorrow-Close();m_database.Close();MessageBox(借书成功!,借书/还书,MB_OK|MB

32、_ICONINFORMATION);RefreshData();(2) 还书还书的处理函数的实现过程与借书类似,就是借书的逆过程。其代码如下。void CBorrowDlg:OnButtonReturn() / TODO: Add your control notification handler code hereUpdateData();if(m_strProofID=|m_strBookID=)MessageBox(输入的域不完整,请重新输入!,借书管理,MB_ICONERROR);m_strProofID.Empty();m_strBookID.Empty();UpdateData(F

33、ALSE);return;if(!m_database.IsOpen()if(!m_database.Open(_T(Library)MessageBox(Cannot access the database!,借书管理);return;CString strSQL;/借书信息表中是否有借书人的信息strSQL.Format(select * from Borrow_Info where Proof_ID=%s AND Book_ID=%s,m_strProofID,m_strBookID);CBorrowSet *m_pBorrow=new CBorrowSet(&m_database);m_pBorrow-Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);if(m_pBorrow-GetRecordCount()=0)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁