c++图书管理系统范文.docx

上传人:b****4 文档编号:3827115 上传时间:2022-11-25 格式:DOCX 页数:43 大小:154.51KB
下载 相关 举报
c++图书管理系统范文.docx_第1页
第1页 / 共43页
c++图书管理系统范文.docx_第2页
第2页 / 共43页
c++图书管理系统范文.docx_第3页
第3页 / 共43页
c++图书管理系统范文.docx_第4页
第4页 / 共43页
c++图书管理系统范文.docx_第5页
第5页 / 共43页
点击查看更多>>
下载资源
资源描述

c++图书管理系统范文.docx

《c++图书管理系统范文.docx》由会员分享,可在线阅读,更多相关《c++图书管理系统范文.docx(43页珍藏版)》请在冰豆网上搜索。

c++图书管理系统范文.docx

c++图书管理系统范文

目录

1概述1

2需求分析1

3系统设计2

3.1总体设计框架2

3.2系统流程分析2

3.3数据库设计3

4系统实现过程4

4.1连接数据库4

4.2用户进入界面4

4.3系统的主界面6

4.4书库管理8

4.5借阅证管理24

4.6系统管理28

5总结30

6参考文献31

1概述

随着人们知识层次的提高图书馆成为日常生活中不可缺少的一部分。

而图书馆的存书量和业务量庞大,仅仅靠传统的记账式管理式不可行的。

图书馆管理系统应运而生,逐渐成为信息化建设的重要组成部分。

图书馆管理系统为学校或者社会型图书馆的管理员提供所有借阅者的详细信息,以及馆内库存的详细情况,对借书和还书两大功能进行合理操纵并登记。

本系统主要包括以下几个主要功能

(1)进入系统前需要身份验证、用户名、密码,输入正确后方可进入。

(2)用户可以根据需要进行书库管理。

(3)用户可以进行借书证的办理、查询、挂失等操作。

(4)用户可以添加账号和修改密码和退出系统等功能。

2需求分析

2.1数据库需求分析

通过对图书馆管理系统功能的分析和实际调查情况,图书馆管理系统需要包括以下数据库信息。

(1)管理员基本信息:

包括图书ID、密码等。

(2)图书信息:

包括图书ID、图书名称、作者、出版社、单价、入库时间、图书总量、现存总量。

(3)借书信息:

包括借书号、借阅卡号、所借图书的名字、借书日期。

(4)借阅卡信息:

包括借阅卡号、读者姓名、性别、出生日期、家庭住址、身份证号码、电话号码、现借书总数。

(5)罚金管理:

包括罚金号、借阅证号、图书号、借出时间、返还时间、罚金。

2.2系统功能分析

本系统功能模块主要包括以下几部分:

身份验证、书库管理、借阅证管理、系统管理和退出。

(1)身份验证:

提供系统的访问控制功能。

(2)书库管理:

包括新书登记、借书、还书、书籍挂失、图书信息查询、借书信息查询等功能。

(3)借阅证管理:

其提供办理借阅证、借阅证信息查询、借阅证挂失功能。

(4)系统管理:

包括添加账号、修改密码和退出系统等功能。

(5)系统管理:

其功能是为系统的使用者提供密码管理和数据备份、恢复管理。

3系统设计

3.1总体设计框架

系统总体设计图如下:

图1图书馆管理系统总计设计图

3.2系统流程分析

在系统运行时的动态模型应该由系统的流程决定。

当用户登录系统后,可以根据拥有的权限来进行书库的管理、借阅证的管理等操作,具体的流程如图2所示。

图2图书馆管理系统流程图

3.3数据库设计

基本表的设计如下:

(1)管理员基本信息表

管理员基本信息表(Admin_Info)包含了图书馆管理员的基本信息,其结构如表1所示。

表1管理员基本信息表

字段名称

数据类型

可否为空

约束条件

说明

WorkID

INTEGER

NOTNULL

主键

地方ID值

User_name

VARCHAR2(24)

NOTNULL

姓名

Password

VARCHAR2(24)

NOTNULL

密码

(2)图书信息表

图书信息表(Book_Info)包含了图书馆所有图书的基本信息,用来方便读者查询和借阅,其结构如表2所示。

表2:

图书信息表

字段名称

数据类型

可否为空

约束条件

说明

Book_ID

VARCHAR(50)

NOTNULL

主键

书籍ID值

Book_Name

VARCHAR(50)

NOTNULL

书名

Writer

VARCHAR(50)

NOTNULL

作者

Press

VARCHAR(50)

NOTNULL

出版社

Price

float

NOTNULL

单价

InLibrary_Data

DATA

NOTNULL

入库时间

Total_Amout

INTEGER

NOTNULL

总量

Now_Amount

INTEGER

NOTNULL

现存量

    

(3)借阅卡信息表

借阅卡信息表(Proof_Info)包含了所有读者的借阅卡信息,用来方便读者借阅和管理员,其结构如表3所示。

表3:

借阅卡信息表

字段名称

数据类型

可否为空

约束条件

说明

Proof_ID

VARCHAR(50)

NOTNULL

主键

借阅卡ID

Name

VARCHAR(50)

NOTNULL

姓名

Sex

VARCHAR(50)

NOTNULL

性别

Birth_Time

DATA

NOTNULL

出生日期

Address

VARCHAR(50)

NOTNULL

地址

ID_Number

VARCHAR(50)

NOTNULL

身份证号码

Tel_Number

VARCHAR(50)

NOTNULL

电话号码

Now_Borrow_Amount

INTEGER

NOTNULL

现借书总量

(4)借书信息表

借书信息表(Borrow_Info)包含了所有图书借阅的信息,用来方便管理员管理图书馆的图书出借情况,其结构如表4所示。

表4:

借书信息表

字段名称

数据类型

可否为空

约束条件

说明

BorrowID

INTEGER

NOTNULL

主键

借书ID

Proof_ID

VARCHAR(50)

NULL

外键(Proof_Info)

借书卡ID

Book_ID

VARCHAR(50)

NULL

外键(Proof_Info)

书籍ID

Borrow_Date

DATA

NULL

产品备注

(5)罚单信息表

罚单信息表(Punish_Info)包含了所有读者的罚金信息,用来方便管理员管理图书过期的情况,其结构表如表5所示。

表5罚单信息表

字段名称

数据类型

可否为空

约束条件

说明

Puni_ID

INTEGER

NOTNULL

主键

罚单ID

Proof_ID

VARCHAR(50)

NOTNULL

外键(Proof_Info)

借书卡ID

Book_ID

VARCHAR(50)

NOTNULL

外键(Proof_Info)

图书ID

Borrow_Date

DATA

NOTNULL

借出日期

Return_Date

DATA

NOTNULL

返还日期

Puni_Money

INTEGER)

NOTNULL

罚金

4系统实现过程

打开VisualC++6.0,新建工程名为“Library”的基于对话框的MFCAppWizard[exe]。

VisualC++6.0会自动生成一些类、文件和主题框架。

为了实现系统与数据库的连接,VisualC++6.0有支持ODBC的文件,只需在“stdafx.h”中添加#include"afxdb.h"即可实现和数据库的连接。

4.1连接数据库

当函数启动后,就要连接数据库,需要3个参数:

ODBC数据源名称、数据库用户名称、数据库用户密码。

登录到主界面之前,首先调用管理员登录模块。

从数据库中读入Admin_Info表中的内容,判断用户输入的用户名和密码是否正确。

4.2用户进入界面

功能:

当使用者使用此系统时,只有用户名和密码都正确时,才可以通过进入界面进入此系统的主界面。

其窗体如下:

图3登录界面

主要代码如下。

voidCLibraryDlg:

:

OnOK()

{

//TODO:

Addextravalidationhere

UpdateData();

if(m_strUsername.IsEmpty())

{

MessageBox("Pleaseinputyourusername!

","登录系统",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=newCLoginSet(&m_database);

//编写SQL语句

CStringstrSQL;

strSQL.Format("select*fromAdmin_InfowhereUser_Name='%s'ANDPassword='%s'",m_strUsername,m_strPassword);

//编写SQL语句结束

m_pLogset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);

if(m_pLogset->GetRecordCount()==0)

{

if(count<5)

{

MessageBox("登录失败!

","图书管理系统",MB_OK|MB_ICONERROR);

count++;

m_strPassword.Empty();

m_strUsername.Empty();

UpdateData(FALSE);

}

else

{

m_database.Close();

MessageBox("您登录失败超过5次,请与管理员联系!

","图书管理系统");

OnOK();

}

}

else

{

m_database.Close();

*b_Login=0;

CDialog:

:

OnOK();

}

}

4.3系统的主界面

功能:

本模块包含了系统的主对话框界面,其中包括书库管理、借阅证管理和系统管理3个部分。

其窗体如:

图4系统主界面

主要代码如下。

voidCLibDBSDlg:

:

OnOK()

{

//TODO:

Addextravalidationhere

CDialog:

:

OnOK();

}

voidCLibDBSDlg:

:

OnButtonNewBook()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CNewBooksDlgNewDlg;

NewDlg.DoModal();

}

voidCLibDBSDlg:

:

OnButtonBorrow()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CBorrowDlgdlg;

dlg.DoModal();

}

voidCLibDBSDlg:

:

OnButtonBookLost()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CBookLostDlgm_dlg;

m_dlg.DoModal();

}

voidCLibDBSDlg:

:

OnButtonCheckBooks()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CCheckBooksDlgdlg;

dlg.DoModal();

}

voidCLibDBSDlg:

:

OnButtonCheckBorrow()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CCheckBorrowDlgdlg;

dlg.DoModal();

}

voidCLibDBSDlg:

:

OnButtonMakeProof()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CNewProofDlgm_dlg;

m_dlg.DoModal();

}

voidCLibDBSDlg:

:

OnButtonCheckProof()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CCheckProofDlgm_dlg;

m_dlg.DoModal();

}

voidCLibDBSDlg:

:

OnButtonProofLost()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CProofLostDlgm_dlg;

m_dlg.DoModal();

}

voidCLibDBSDlg:

:

OnButtonModPasswd()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CChangePasswordDlgm_dlg;

m_dlg.DoModal();

}

voidCLibDBSDlg:

:

OnButtonAddUser()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CAddUserDlgm_dlg;

m_dlg.DoModal();

}

4.4书库管理

书库管理包括新书登记、借书/还书、书籍挂失、图书信息查询和借书信息查询5个部分,下面分别介绍这5部分的功能以及实现过程。

4.4.1新书登记

新书登记管理包括了新书入库、查询图书和显示所有图书的功能。

为了方便添加图书和查询所有图书的基本信息,可以创建一个对话框,界面如图5所示。

图5新书登记界面

(1)入库

入库是图书馆管理系统中最重要的功能之一,入库的实现过程是首先要输入书籍的各种信息,包括书的书号、书名、作者、出版社、价钱、总量、现存量等。

然后判断图书馆中是否存在这种图书,如果存在,那么只是简单的把库存的数量加上新加入的数量,如果不存在,那么就要新建记录。

其函数CNewBooksDlg:

:

OnButtonIn(),代码如下。

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->m_Total_Amount=m_pset->m_Total_Amount+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("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;

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

m_pset->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;

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_lNow=0;

m_lTotal=0;

m_dPrice=0.0;

UpdateData(FALSE);

return;

}

(2)查询

查询也是图书馆管理系统中一个很重要的功能,在很多的地方会用到,也是显示数据的一个功能函数。

实现的过程也是首先检查数据库是否打开,以及要查询的书号是否为空。

函数代码如下。

voidCNewBooksDlg:

:

OnButtonCheckBooks()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

UpdateData();

if(m_strBookID=="")

{

MessageBox("请正确填写信息,(书号?

)","新书登记");

return;

}

if(!

m_database.IsOpen())

{

if(!

m_database.Open(_T("Library")))

{

MessageBox("Cannotaccessthedatabase!

","新书登记");

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)

{

MessageBox("Nothisbookinthedatabase!

","新书登记");

m_database.Close();

return;

}

//处理表格

m_ctrList.DeleteAllItems();

m_pset->MoveFirst();

charbuf[50];

CDBVariantvarValue;

inti=0;

CStringstrBookName;

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

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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