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

上传人:b****8 文档编号:27641862 上传时间:2023-07-03 格式:DOCX 页数:32 大小:1.55MB
下载 相关 举报
C课程设计图书管理系统7.docx_第1页
第1页 / 共32页
C课程设计图书管理系统7.docx_第2页
第2页 / 共32页
C课程设计图书管理系统7.docx_第3页
第3页 / 共32页
C课程设计图书管理系统7.docx_第4页
第4页 / 共32页
C课程设计图书管理系统7.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

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

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

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

C课程设计图书管理系统7

课程设计报告

 

课程名称:

面向对象程序设计C++

设计题目:

图书管理系统

专业:

计算机科学与技术

姓名:

学号:

指导教师:

李晓虹

 

2015年1月10日

 

1系统需求分析

在图书管理系统中,管理员为每个读者建立一个账户,账户内存储读者个人的详细信息,并依据读者类别的不同给每个读者发放借书卡(提供借书卡号、姓名、部门或班级等信息)。

读者可以凭借书卡在图书馆进行图书的借、还、续借、查询等操作,不同类别的读者在借书限额、还书期限以及可续借的次数上要有所不同。

借阅图书时,由管理员录入借书卡号,系统首先验证该卡号的有效性,若无效,则提示无效的原因;若有效,则显示卡号、姓名、借书限额、已借数量、可再借数量等信息,本次实际借书的数量不能超出可再借数量的值。

完成借书操作的同时要修改相应图书信息的状态、读者信息中的已借数量、在借阅信息中添加相应的记录。

归还图书时,由管理员录入借书卡号和待归还的图书编号,显示借书卡号、读者姓名、读书编号、读书名称、借书日期、应还日期等信息,并自动计算是否超期以及超期的罚款金额,若进行续借则取消超期和罚款等信息;若图书有损坏,由管理员根据实际情况从系统中选择相应的损坏等级,系统自动计算损坏赔偿金额。

完成归还操作的同时,

修改相应图书信息的状态、修改读者信息中的已借数量、在借书信息中对相应的借书记录做标记、在还书信息中添加相应

的记录。

图书管理员不定期地对图书信息进行添加、修改和删除等操作,在图书尚未归还的情况下不能对图书信息进行删除。

也可以对读者信息进行添加、修改、删除等操作,在读者还有未归还的图书的情况下不能进行删除读者信息。

可以方便地对三个表进行基本的查找、插入、删除、修改、添加以及浏览等基本操作。

该系统基于简单的基础数据库操作,目的在于模仿和学习现实生活中的学校学籍管理系统。

能够方便地对数据进行管理,通过计算机进行相应的操作,给使用者带来极大的方便,节省了更多的时间和人力物力财力。

通过对相应功能按钮的选择用户可以进行相应的操作,比如说用户点击了浏览的功能,我们在设计的过程中设计该功能的时候考虑到该功能与报表相类似所以我们团队就决定用列表控件来显示用户选择的需要浏览的信息。

再比如说查找这一项功能。

在用户点击查找这一按钮后,系统会弹出一个对话框,该框内有两个查询条件,用户可以根据自己所了解的额情况进行查询。

比如知道学生的姓名或者学号中的一个用户就可以用其中的一个条件进行查询。

达到了用多种方式方便查询的目的。

在用户输入了擦寻条件之后,系统会弹出相应的提示框,询问用户对查询的确认。

其他功能和该功能大同小异在这里就不一一叙述了。

但是值得一提的是删除功能模块。

删除功能模块相当重要,涉及到了数据库中的相当重要的知识,外码(forigenkey)的相应知识,以及删除的相应命令级联(CASCAD)删除,通过删除的约束大大地提高了系统数据的安全性以及数据的完整性。

 

2总体设计

通过C++MFC编程并且使用ADO操作数据库技术,其中数据库使用SQLServer2008数据库以及数据库操作语言SQL语句对数据库进行操作,在数据库中使用相应的表才存储相应的信息。

通过对数据库中的数据表的操作从而对相应的信息进行操作。

系统与数据库之间的数据交互如图2-1所示:

图2-1

3详细设计

3.1系统功能模块详细设计

根据图书管理系统的需求分析,把系统的功能划分为两个个大模块,即管理员模块和用户模块。

其中管理员模块包括:

用户信息管理模块、图书信息管理模块、借阅管理模块、借阅历史模块、密码修改模块、学生信息查询模块。

用户模块包括:

图书信息检索模块、借阅信息查询模块、借阅历史信息查询模块、密码修改模块。

系统功能模块如图3-1所示。

图3-1图书管理系统功能模块图

3.2系统数据库详细设计

本系统的后台数据库采用Oracle,它是以高级结构化查询语言(SQL)为基础的大型关系数据库,也是目前最流行的客户/服务器体系结构的数据库之一。

根据对系统的功能要求分析,得到了网上购物系统的E-R图,见图3-2所示。

图3-2图书管理系统的E-R图

分析图书管理系统的E-R图,得到如下关系模式:

(1)student(借书证号,姓名,专业,性别,出生时间,借书量,照片);

(2)BOOK(ISBN,书名,作者,出版社,价格,副本量,库存量);

(3)JY(借书证号,ISBN,索书号,借书时间);

(4)JYLS(借书证号,ISBN,索书号,借书时间,还书时间);

(5)Users(借书证号,密码,用户类型);

4系统调试

使用管理员账号10000001和密码123456登录运行结果部分如下列图示:

图4-1

图4-2

图4-3

图4-4

图4-5

图4-6

图4-7

图4-8

图4-9

5结果分析

通过第四项的测试,各项测试结果都能够正常显示,包括基本的数据库维护:

数据的增加、删除、修改和更新都能够实现,在数据约束范围内允许用户进行合法的操作(满足数据库的约束条件)。

6总结

通过这次实践课程所做系统的练习,使得自己对C++类和对象的理解增加了不少,特别是又学到了粗浅的额ADO数据库操作技术,不仅锻炼了自己的自学能力以及资料查找能力,更是促进了自己专业技能的提高,在此次系统的实现过程中我深刻体会到C++类的作用以及C++面向对象的特点。

 

附:

程序源代码和运行截图

部分源代码:

链接数据库:

使用ADO链接数据库构造数据库连接类ADOConn

数据库连接代码:

_bstr_tstrConnect="Provider=SQLOLEDB.1;Password=20130516185;PersistSecurityInfo=True;UserID=sa;InitialCatalog=XS;DataSource=localhost;";

voidADOConn:

:

OinitDBConnect()

{

//初始化OLE/COM库

:

:

CoInitialize(NULL);

try

{

//创建Connection对象

m_pConnection.CreateInstance("ADODB.Recordset");

m_pConnection.CreateInstance("ADODB.Connection");

//设置连接字符串,必须是BSTR或者_bstr_t类型

_bstr_tstrConnect="Provider=SQLOLEDB.1;Password=20130516185;PersistSecurityInfo=True;UserID=sa;InitialCatalog=XS;DataSource=localhost;";

//_bstr_tstrConnect="Provider=SQLOLEDB;Server=ntserver;Database=XS;uid=sa;pwd=20130516185;";

m_pConnection->Open(strConnect,"","",adModeUnknown);

}

//捕获异常

catch(_com_errore)

{//显示错误信息

CStringstrMsg;

strMsg.Format(_T("错误描述inital:

%s\n错误消息%s"),(LPCTSTR)e.Description(),(LPCTSTR)e.ErrorMessage());

AfxMessageBox(strMsg);

}

}

_RecordsetPtr&ADOConn:

:

GetRecordSet(_bstr_tbstrSQL)

{

try

{//链接数据库,如果Connection对象为空,则重新链接数据库

if(m_pConnection==NULL)

OinitDBConnect();

//创建记录集对象

m_pRecordset.CreateInstance(_uuidof(Recordset));

//取得表中的记录

m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

}

catch(_com_errore)//捕捉异常

{

CStringstrMsg;

strMsg.Format(_T("错误描述GetRecordSet:

%s\n错误消息%s"),(LPCTSTR)e.Description(),(LPCTSTR)e.ErrorMessage());

AfxMessageBox(strMsg);//显示错误信息

}

returnm_pRecordset;//返回记录集

}

BOOLADOConn:

:

ExecuteSQL(_bstr_tbstrSQL)

{

//_variant_tRecordsAffected;

try

{//是否已经连接数据库

if(m_pConnection==NULL)

OinitDBConnect();

m_pConnection->Execute(bstrSQL,NULL,adCmdText);

returntrue;

}

catch(_com_errore)

{

CStringstrMsg;

strMsg.Format(_T("错误描述ExecuteSQL:

%s\n错误消息%s"),(LPCTSTR)e.Description(),(LPCTSTR)e.ErrorMessage());

AfxMessageBox(strMsg);

returnfalse;

}

}

voidADOConn:

:

ExitConnect()

{

//关闭记录集和链接

if(m_pRecordset!

=NULL)

m_pRecordset->Close();

m_pConnection->Close();

:

:

CoUninitialize();//该函数的功能是关闭OLE/COM库,释放资源

}

5.2全局类定义

用户一经登录用户名和密码便成为该用户在图书管理系统中获取对应权限内信息的唯一线索,因此定义全局类:

CGlobal

5.3为每个用户表创建类(列举一个)

用户表类:

相应功能实现代码:

voidCUsers:

:

SetUserPwd(CStringvUserPwd)

{

UserPwd=vUserPwd;

}

voidCUsers:

:

GetData(CStringcUserName)

{

//连接数据库

ADOConnm_AdoConn;

m_AdoConn.OinitDBConnect();

//设置SELECT语句

_bstr_tvSQL;

vSQL="SELECT*FROML_Gwhere借书证号="+cUserName;

//执行SELECT语句

_RecordsetPtrm_pRecordset;

m_pRecordset=m_AdoConn.GetRecordSet(vSQL);

//返回各列的值

if(m_pRecordset->adoEOF==1)

{

CUsers();

//AfxMessageBox("请注册后再使用!

");

}

else

{

UserName=atoi(cUserName);

UserType=(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("type");

UserPwd=(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("password");

}

m_AdoConn.ExitConnect();

}

 

voidCUsers:

:

sql_update(CStringcUserName)

{

//链接数据库

ADOConnm_Adoconn;

m_Adoconn.OinitDBConnect();

//设置INSERT语句

_bstr_tvSQL;

vSQL="";

m_Adoconn.ExecuteSQL(vSQL);

m_Adoconn.ExitConnect();

}

voidCUsers:

:

sql_delete(CStringcUserName)

{

//链接数据库

ADOConnm_Adoconn;

m_Adoconn.OinitDBConnect();

//设置INSERT语句

_bstr_tvSQL;

vSQL="DELETEFROML_GWHERE借书证号"+cUserName;

m_Adoconn.ExecuteSQL(vSQL);

m_Adoconn.ExitConnect();

}

voidCUsers:

:

SetUserType(intvUserType)

{

UserType=vUserType;

}

CStringCUsers:

:

GetUserType()

{

returnUserType;

}

 

运行截图:

登录:

在登录界面如果用户有图书管理系统的账号(借书证号)和密码则可以登录,如果是该校的学生但是没有账号可以先注册后在进行登录。

用户信息错误:

如果用户信息错误密码和账号以及用户类型不匹配,则会弹出提示框提示“用户信息错误”。

注册模块:

管理员登录后的模块:

管理员登陆后的界面有相应的功能按钮:

图书管理按钮,用户管理按钮,借阅信息管理按钮,借阅历史管理按钮,修改密码按钮,查看学生基本信息按钮。

管理员—图书管理模块:

管理员进入到图书管理界面后能实现:

检索,增加,修改,删除,浏览这五个功能。

管理员—图书管理模块—检索:

用户可以通过书名或者作者进行图书的检索。

管理员--图书管理模块—增加:

管理员—图书管理模块—修改:

管理员修改图书信息前需要查找需要修改的图书,可将ISBN或书名作为查找项,查找完成后则可以进行相应的修改操作。

管理员—图书管理模块—删除:

管理员修改图书信息前需要查找需要删除的图书,可将ISBN或书名作为查找项,查找完成后则可以进行相应的删除操作。

管理员—图书管理模块—浏览:

管理员—用户管理模块:

管理员—用户管理模块—检索:

管理员—用户管理模块—浏览:

管理员—用户管理模块—增加:

管理员—用户管理模块—修改:

管理员—用户管理模块—删除:

管理员—借阅信息管理模块:

管理员—借阅信息管理模块—检索:

管理员—借阅信息管理模块—浏览:

管理员—借阅信息管理模块—增加:

管理员—借阅信息管理模块—修改:

管理员—借阅信息管理模块—删除:

管理员—借阅历史信息管理模块:

管理员—借阅历史信息管理模块—检索:

管理员—借阅历史信息管理模块—浏览:

管理员—借阅历史信息管理模块—增加:

管理员—借阅历史信息管理模块—修改:

管理员—借阅历史信息管理模块—删除:

管理员—修改密码:

管理员—查看学生信息:

管理员—查看学生信息—检索:

管理员—查看学生信息—浏览:

用户—登录模块:

用户—登录后主界面:

用户—图书信息模块:

用户—图书信息模块—检索:

用户—图书信息模块—浏览:

用户—借阅信息模块:

用户—修改密码模块:

 

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

当前位置:首页 > 初中教育 > 科学

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

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