C++图书馆管理系统课程设计报告.docx

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

C++图书馆管理系统课程设计报告.docx

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

C++图书馆管理系统课程设计报告.docx

C++图书馆管理系统课程设计报告

面向对象课程设计

图书馆管理系统

院(系)别

信息工程系

指导教师

2011-10-10—2011-10-21

课程设计任务书

图书管理系统C++语言课程设计

系(部)

信息工程系

信息管理与信息系统

学生姓名

10

月10

日至10

月21

共2

指导教师(签字)

系主任(签字)

一、

设计内容及要求

1.设计目的

学生根据所学的数据库原理与程序设计的知识,能够针对一个小型的数据库管理系统,进行系统的需求分析,系统设计,数据库设计,编码,测试等,完成题目要求的功能,从而达到掌握开发一个小型数据库的目的。

2.设计内容

1.必须设计的基本数据表:

图书基本信息表,借书卡信息表,借阅信息表,图书分类信息表,代码表等。

2.功能模块:

1)图书基本情况的录入、修改、删除等基本操作。

2)办理借书卡模块。

3)实现借书功能。

4)实现还书功能。

5)能方便的对图书进行查询。

6)对超期的情况能自动给出提示信息。

三、设计完成后提交的文件和图表

1.计算说明书部分

1.课程设计报告(3000—5000字),纸质打印稿

(1)需求分析(功能模块层次图)

(2)系统设计(包括详细设计和界面设计)(3)代码设计(主要功能函数)

(4)测试记录(测试各项功能的正确性、容错性)(5)课程设计总结

2.系统程序演示及答辩。

3.课程设计任务书。

2.图纸部分:

程序流程图

程序结束

 

五、主要参考资料

[1]BeckZaratian.MicrosoftVisualVisualC++6.0程序员指南.希望设备创作室译.北京:

北京希望电脑公司出品,1998

[2]RichardC.Leinecker,TomArcher.VisualC++6宝典.张艳,张谦译.北京:

电子工业出版社,1999

[3]李强,贾云霞.VisualC++项目开发实践.北京:

中国铁道出版社,2004

[4]郑莉,董渊,张瑞丰.C++语言程序设计.2003.

[5]李闽溟等.VisualC++6.0数据库系统开发实例导航[M].北京:

人民邮电出版社

[6]闪四清.《数据库系统原理与应用教程[M].清华大学出版社

成绩评定表

作品成绩

报告成绩

口试(答辩)成

总评成绩

摘要·····························2

1.图书管理系统概述················3

1.1图书管理系统总体设计思想·····31.2总体设计流程图···············4

2.图书管理系统详细设计·············52.1新建数据库(SQLserver)········52.2创建数据源···················52.3C++中MFC应用程序编程·····5

2.3.1

建立基本对话框并与数据库连

接································5

2.3.2主要功能函数源代码········73.课程设计总结和体会··············19

1

摘要

图书馆管理系统创建基于MFCAPPWizard[exe],利用SQLSERVE2000和

MFCODBC进行数据库的连接,在可视化的界面上进行用户名、图书及借书卡的查询、添加、修改、删除,对数据库表内的信息列表进行操作。

图书馆管理系统主要完成了用户登录功能、新建/删除用户功能、用户

管理功能,对数据库内图书、借书卡和用户信息进行查询、添加、删除、修改功能。

图书馆管理系统设计是有下列几步完成的:

首先对整体功能进行分析,

开始是用户登录,登陆成功后显示主界面,其分为图书资料、读者资料、借

书管理、还书管理和退出五个菜单;第二步是对五个菜单继续划分成具体的

类进行实现;第三步是根据课程设计的要求在数据库内的建立具体的表,并

且进行连接,及对数据库数据库内容的操作,与此同时完成界面的退出操作;第四步是对图书馆管理系统进行的全面优化,修改不足。

关键词:

MFC,数据库,图书,管理

2

1.图书管理系统概述

1.1图书管理系统总体设计思想

图书馆管理系统的功能为读者提供借书、还书和查询所需图书及图书、读者卡的管理等功能。

图书馆管理系统的功能模块有:

(1)登录界面些信息不被破坏。

(2)读者资料

只有管理员才能使用全部功能,更好的保护图书馆内的一

能实现对读者的显示、读者信息增加、读者查询、读者信

息修改和读者信息删除功能。

(3)图书资料

能实现对图书显示、图书信息增加、图书查询、图书信息

修改和图书信息删除功能。

(4)借书管理可与数据库中的图书信息表连接实现借书的功能。

(5)还书管理可与数据库中的图书信息表连接实现还书的功能

(6)退出

退出程序,结束运行。

通过SQLserver建立一个图书馆管理系统的数据库,在控制面板的管理工具上用手动方式添加数据源进行连接。

而与数据表的连接采用记录集的形式一一建立连接,可以进行图书资料和读者资料的管理,图书资料管理包括图书信息增加、图书查询、图书信息修改和图书信息删除四项,读者资料管理管理包括读者信息增加、读者查询、读者信息修改和读者信息删除。

用ODBC语言将数据库与C++连接起来,首先是登录界面,只有管理员才可进入。

登陆成功后,管理员可在系统界面进行读者资料、图书资料、借书管理、还书管理等功能,通过对话框的跳转实现借书、还书、图书新增、查询等功能。

在每个对话框都可实现新增、查询、删除、修改等功能顺利的对图书馆进行管理。

程序分为多个小模块,通过调用实现各种功能,增强了程序的可建设性。

1.2总体设计流程图

3

程序开始

程序结束

4

2.图书管理系统详细设计

2.1新建数据库(SQLserver)

新建数据库名为library,然后在数据库下建立五个表,分别为

BOOK、BORROW、CLERK、HISTORY、READER。

其中,BOOK是存放图书信息的,BORROW是存放借书信息的,CLERK是存放管理员信息的,READER是存放读者信息的。

然后设计各个表中的字段,并定义主键,然后输入数据即可。

2.2创建数据源

此次课程设计用ODBC语言将数据库与C++连接,在连接之前应创建数据源。

在控制面板上打开管理工具,可以找到数据源(ODBC),添加数据源,可以创建不同类型的数据库,此次设计用到了SQLServer,便选择其,打开SQLServer中的服务管理器可找到服务器的名称,将默认数据库改为自己的数据库。

点下一步直至完成。

这样,数据源创建成功了。

2.3C++中MFC应用程序编程

2.3.1建立基本对话框并与数据库连接其步骤如下所示

双击新建的对话框或建立类向导,如下图:

5

点击OK,则如下图所示:

在所示对话框中输入Name,然后Baseclass中选择CRecordset,点击

OK,出现下图:

6

既连接数据源,注意选择记录集类型为Dynaset。

点击OK,出现下图:

选择要连接的数据库表(此例选择dbo.BOOK),点击OK,就完成了与数据库

表的连接。

其他对话框同此例。

2.3.2主要功能函数源代码

登录函数

voidCLoginDlg:

:

OnConfirm()//登录函数

{

//TODO:

Addyourcontrolnotificationhandlercodehere

7

CClerkDataSetmrsDataSet;/*声明记录集*/

CStringmSqlStr;

UpdateData(TRUE);//将相应控件上的值反应到变量上

if(m_strName.IsEmpty())/*判断用户名信息是否为空*/

{

AfxMessageBox("请正确输入用户名!

");

return;

}

mSqlStr="SELECT*FROMCLERKWHERENAME='";//查询数据库中表CLERK中名字是输入的

mSqlStr=mSqlStr+m_strName;

mSqlStr=mSqlStr+"'ANDPASSWORD='";

mSqlStr=mSqlStr+m_strPassword;

mSqlStr=mSqlStr+"'";

if(!

mrsDataSet.Open(AFX_DB_USE_DEFAULT_TYPE,mSqlStr))

{

AfxMessageBox("CLERK表打开失败!

");

return;

}

if(!

mrsDataSet.IsEOF())

{

//Openallfunctionforuser

CDialog:

:

OnOK();

}

else

{

AfxMessageBox("登录失败,请重新输入!

");

return;

}

}

登录界面为

8

登录成功为

图书资料中的查询函数

voidCBookDlg:

:

OnEnquery()

{

//TODO:

AddyourcontrolnotificationhandlercodehereUpdateData(TRUE);

if(m_strBookIDQ.IsEmpty()&&m_strBookNameQ.IsEmpty())

{

9

m_rsDataSet.m_strFilter="";

m_rsDataSet.Requery();

DisplayRecord();

SetButtonState();

return;

}

BOOLmAll=FALSE;

if(!

m_strBookIDQ.IsEmpty())

{

m_rsDataSet.m_strFilter="BOOK_ID='"+m_strBookIDQ;m_rsDataSet.m_strFilter=m_rsDataSet.m_strFilter+"'";mAll=TRUE;

}

if(!

m_strBookNameQ.IsEmpty())

{

if(mAll)

{

m_rsDataSet.m_strFilter=m_rsDataSet.m_strFilter+"

ANDBOOK_NAME='";

m_rsDataSet.m_strFilter=m_rsDataSet.m_strFilter+

m_strBookNameQ;

m_rsDataSet.m_strFilter=m_rsDataSet.m_strFilter+"'";}

else

{

m_rsDataSet.m_strFilter="BOOK_NAME='"+

m_strBookNameQ;

m_rsDataSet.m_strFilter=m_rsDataSet.m_strFilter+"'";}

}

m_rsDataSet.Requery();

DisplayRecord();

SetButtonState();

}

10

图书资料中的修改函数

voidCBookDlg:

:

OnEdit()

{

//TODO:

Addyourcontrolnotificationhandlercodeherem_bEdit=TRUE;

SetButtonState();

SetTextState();

CWnd*pWnd;

pWnd=GetDlgItem(IDC_BOOKNAME);

pWnd->SetFocus();

}

图书资料中的删除函数

voidCBookDlg:

:

OnDelete()

{

//TODO:

Addyourcontrolnotificationhandlercodeherem_rsDataSet.Delete();

DisplayRecord();

SetButtonState();

}

图书资料中的增加函数

voidCBookDlg:

:

OnNew()

{

//TODO:

Addyourcontrolnotificationhandlercodeherem_strBookID="";

m_strBookName="";

m_strAuthor="";

m_strPress="";

m_strFlag="Y";

UpdateData(FALSE);

m_bEdit=TRUE;

m_bAdd=TRUE;

SetButtonState();

SetTextState();

11

CWnd*pWnd;

pWnd=GetDlgItem(IDC_BOOKID);

pWnd->SetFocus();

}

图书资料中的保存函数

voidCBookDlg:

:

OnSave()//保存书籍

{

//TODO:

AddyourcontrolnotificationhandlercodehereUpdateData(TRUE);

if(m_strBookID.IsEmpty()||m_strBookName.IsEmpty())

{

AfxMessageBox("请输入相应数据!

");

return;

}

if(m_bAdd)

{

m_rsDataSet.AddNew();

}

else

{

m_rsDataSet.Edit();

}

m_rsDataSet.m_AUTHOR=m_strAuthor;

m_rsDataSet.m_BOOK_NAME=m_strBookName;

m_rsDataSet.m_BOOK_ID=m_strBookID;

m_rsDataSet.m_PRESS=m_strPress;

m_rsDataSet.m_FLAG_BORROW=m_strFlag;

m_rsDataSet.m_PRESS_DATE=m_strPressDate;

m_rsDataSet.Update();

m_rsDataSet.Requery();

m_bAdd=FALSE;

m_bEdit=FALSE;

DisplayRecord();

SetButtonState();

12

SetTextState();

}

图书资料界面如下图所示:

读者资料界面如下图:

读者资料中的函数与图书资料中的函数基本一致。

借书函数

voidCBorrowDlg:

:

OnConfirm()

{

13

//TODO:

Addyourcontrolnotificationhandlercodehere

BOOLm_bCanBorrow;

BOOLm_bCanLendOut;

m_bCanBorrow=FALSE;

m_bCanLendOut=FALSE;

CStringmSqlStr;

UpdateData(TRUE);

if(!

m_rsReaderDataSet.Open(AFX_DB_USE_DEFAULT_TYPE))

{

AfxMessageBox("数据表打开错误!

");

return;

}

m_rsReaderDataSet.m_strFilter="READER_ID='"+m_strReaderID;m_rsReaderDataSet.m_strFilter=m_rsReaderDataSet.m_strFilter+

"'";

m_rsReaderDataSet.Requery();

if(!

m_rsReaderDataSet.IsEOF())

{

if(m_rsReaderDataSet.m_FLAG_BORROW=="Y")

{

mSqlStr="SELECT*FROMBORROWWHEREREADER_ID='"+

m_strReaderID;

mSqlStr=mSqlStr+"'";

if(!

m_rsDataSet.Open(AFX_DB_USE_DEFAULT_TYPE,mSqlStr))

{

m_rsReaderDataSet.Close();

AfxMessageBox("数据表打开错误!

");

return;

}

m_bCanBorrow=TRUE;

m_rsDataSet.Close();

}

}

m_rsReaderDataSet.Close();

if(!

m_bCanBorrow)

14

{

AfxMessageBox("读者不能借书!

");

return;

}

mSqlStr="SELECT*FROMBOOKWHEREBOOK_ID='"+m_strBookID;mSqlStr=mSqlStr+"'";if(!

m_rsBookDataSet.Open(AFX_DB_USE_DEFAULT_TYPE,mSqlStr))

{

AfxMessageBox("数据表打开错误!

");

return;

}

if(!

m_rsBookDataSet.IsEOF())

{

if(m_rsBookDataSet.m_FLAG_BORROW=="Y")

{

m_bCanLendOut=TRUE;

}

else

{

AfxMessageBox("此书不外借!

");m_rsBookDataSet.Close();

return;

}

}

else

{

AfxMessageBox("无此书!

");

m_rsBookDataSet.Close();

return;

}

m_rsBookDataSet.Close();

CStringm_strUserID;

m_strUserID=theApp.m_strUserName;

COleDateTimem_CurrentTime=COleDateTime:

:

GetCurrentTime();

CStringstrTime;

15

inty=m_CurrentTime.GetYear();

intm=m_CurrentTime.GetMonth();

intd=m_CurrentTime.GetDay();

strTime.Format("%d-%d-%d",y,m,d);

mSqlStr="INSERTINTOBORROW(READER_ID,BOOK_ID,BORROW_DATE,B_CLERK_ID)VALUES('";

mSqlStr=mSqlStr+m_strReaderID;

mSqlStr=mSqlStr+"','";

mSqlStr=mSqlStr+m_strBookID;

mSqlStr=mSqlStr+"','";

mSqlStr=mSqlStr+strTime;

mSqlStr=mSqlStr+"','";

mSqlStr=mSqlStr+m_strUserID;

mSqlStr=mSqlStr+"')";

CDatabasemDB;

if(!

mDB.Open(_T("Library")))

{

AfxMessageBox("无法打开数据库!

");

return;

}

try

{

mDB.ExecuteSQL(mSqlStr);

}

catch(CDBExceptione)

{

AfxMessageBox("执行错!

");

return;

}

mDB.Close();

AfxMessageBox("操作成功!

");

}

voidCBorrowDlg:

:

OnCancel()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

16

CDialog:

:

OnCancel();

}

借书界面

还书函数

voidCReturnDlg:

:

OnConfirm()

{

intrs;

CWnd*pWnd;

CStringm_strtmp;

rs=QryBorrow();

if(rs==1)

{

m_strtmp.Format("超期%d天,确认还书?

",m_Days);if(:

:

MessageBox(this->m_hWnd,m_strtmp,"提示",MB_YESNO)==IDYES){

Insert_History();

Delete_Borrow();

SetTxtNull();

}

else

{

return;

}

}

17

elseif(rs==2)

{

if(:

:

MessageBox(this->m_hWnd,"确认还书?

","提示",MB_YESNO)==IDYES)

{

Insert_History();

Delete_Borrow();

SetTxtNull();

}

else

{

return;

}

}

elseif(rs==0)

{

if(m_Book_ID=="")

return;

:

:

MessageBox(this->m_hWnd,"该书号信息不存在!

","警告",MB_OK);}

pWnd=GetDlgItem(IDC_BOOK_ID);

pWnd->SetFocus();

}

还书界面

18

退出函数

voidCLibraryDlg:

:

OnButtonGoodbye()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

intnResponse=MessageBox("真得要离开吗?

","退出提示",MB_YESNO);if(nResponse==IDYES)

{

OnOK();

}

}

退出界面

3.课程设计总结和体会

在此次图书管理课程设计过程中,有很多东西值得我们思考并总结。

设计过程大体可分为以下几个步骤:

  

(1)思考总体设计方案:

总体结构和模块外部设计,功能分配。

思考要实现整个程序大体需要的几个模块和其中用到的VisualC++语言基本操作符、语句等。

  

(2)画出总体设计方案流程图:

用流程图的形式展现你的基本编程思想。

  (3)流程图具体化:

即将流程图中的几大模块的具体实现思考清楚,可以用流程图的形式展现.并想好实现的关键代码。

19

  (4)编辑程序代码:

这是一个至关重要复杂而且需要反复修改的环节,在此环节中你将发现总体设计和模块思想会存在很多问题,需不断改进.如何实

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

当前位置:首页 > 初中教育 > 语文

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

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