C++课程设计-图书管理系统7.doc
《C++课程设计-图书管理系统7.doc》由会员分享,可在线阅读,更多相关《C++课程设计-图书管理系统7.doc(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课 程 设 计 报 告 课程名称:面向对象程序设计C+ 设计题目:图书管理系统 专 业:计算机科学与技术 姓 名: 学 号: 指导教师:李 晓 虹 2015 年 1 月 10 日1系统需求分析在图书管理系统中,管理员为每个读者建立一个账户,账户内存储读者个人的详细信息,并依据读者类别的不同给每个读者发放借书卡(提供借书卡号、姓名、部门或班级等信息)。读者可以凭借书卡在图书馆进行图书的借、还、续借、查询等操作,不同类别的读者在借书限额、还书期限以及可续借的次数上要有所不同。借阅图书时,由管理员录入借书卡号,系统首先验证该卡号的有效性,若无效,则提示无效的原因;若有效,则显示卡号、姓名、借书限额、
2、已借数量、可再借数量等信息,本次实际借书的数量不能超出可再借数量的值。完成借书操作的同时要修改相应图书信息的状态、读者信息中的已借数量、在借阅信息中添加相应的记录。归还图书时,由管理员录入借书卡号和待归还的图书编号,显示借书卡号、读者姓名、读书编号、读书名称、借书日期、应还日期等信息,并自动计算是否超期以及超期的罚款金额,若进行续借则取消超期和罚款等信息;若图书有损坏,由管理员根据实际情况从系统中选择相应的损坏等级,系统自动计算损坏赔偿金额。完成归还操作的同时,修改相应图书信息的状态、修改读者信息中的已借数量、在借书信息中对相应的借书记录做标记、在还书信息中添加相应的记录。图书管理员不定期地对
3、图书信息进行添加、修改和删除等操作,在图书尚未归还的情况下不能对图书信息进行删除。也可以对读者信息进行添加、修改、删除等操作,在读者还有未归还的图书的情况下不能进行删除读者信息。可以方便地对三个表进行基本的查找、插入、删除、修改、添加以及浏览等基本操作。该系统基于简单的基础数据库操作,目的在于模仿和学习现实生活中的学校学籍管理系统。能够方便地对数据进行管理,通过计算机进行相应的操作,给使用者带来极大的方便,节省了更多的时间和人力物力财力。通过对相应功能按钮的选择用户可以进行相应的操作,比如说用户点击了浏览的功能,我们在设计的过程中设计该功能的时候考虑到该功能与报表相类似所以我们团队就决定用列表
4、控件来显示用户选择的需要浏览的信息。再比如说查找这一项功能。在用户点击查找这一按钮后,系统会弹出一个对话框,该框内有两个查询条件,用户可以根据自己所了解的额情况进行查询。比如知道学生的姓名或者学号中的一个用户就可以用其中的一个条件进行查询。达到了用多种方式方便查询的目的。在用户输入了擦寻条件之后,系统会弹出相应的提示框,询问用户对查询的确认。其他功能和该功能大同小异在这里就不一一叙述了。但是值得一提的是删除功能模块。删除功能模块相当重要,涉及到了数据库中的相当重要的知识,外码(forigen key)的相应知识,以及删除的相应命令级联(CASCAD)删除,通过删除的约束大大地提高了系统数据的安
5、全性以及数据的完整性。2总体设计通过C+ MFC编程并且使用ADO 操作数据库技术,其中数据库使用 SQL Server2008 数据库 以及数据库操作语言SQL语句对数据库进行操作,在数据库中使用相应的表才存储相应的信息。通过对数据库中的数据表的操作从而对相应的信息进行操作。系统与数据库之间的数据交互如图2-1所示:图2-13详细设计3.1系统功能模块详细设计根据图书管理系统的需求分析,把系统的功能划分为两个个大模块,即管理员模块和用户模块。其中管理员模块包括:用户信息管理模块、图书信息管理模块、借阅管理模块、借阅历史模块、密码修改模块、学生信息查询模块。用户模块包括:图书信息检索模块、借阅
6、信息查询模块、借阅历史信息查询模块、密码修改模块。系统功能模块如图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(借书证号,IS
7、BN,索书号,借书时间);(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-95结果分析通过第四项的测试,各项测试结果都能够正常显示,包括基本的数据库维护:数据的增加、删除、修改和更新都能够实现,在数据约束范围内允许用户进行合法的操作(满足数据库的约束条件)。6总结通过这次实践课程所做系统的练习,使得自己对C+ 类和对象的理解增加了不少,特别是又学到了粗浅的额ADO 数据库操作技
8、术,不仅锻炼了自己的自学能力以及资料查找能力,更是促进了自己专业技能的提高,在此次系统的实现过程中我深刻体会到C+类的作用以及C+面向对象的特点。附:程序源代码和运行截图部分源代码:链接数据库:使用ADO链接数据库构造数据库连接类ADOConn数据库连接代码:_bstr_t strConnect=Provider=SQLOLEDB.1;Password=20130516185;Persist Security Info=True;User ID=sa;Initial Catalog=XS;Data Source=localhost;void ADOConn:OinitDBConnect()/初
9、始化OLE/COM库:CoInitialize(NULL);try/创建Connection对象m_pConnection.CreateInstance(ADODB.Recordset);m_pConnection.CreateInstance(ADODB.Connection);/设置连接字符串,必须是BSTR或者_bstr_t 类型_bstr_t strConnect=Provider=SQLOLEDB.1;Password=20130516185;Persist Security Info=True;User ID=sa;Initial Catalog=XS;Data Source=lo
10、calhost;/_bstr_t strConnect=Provider=SQLOLEDB;Server=ntserver;Database=XS;uid=sa;pwd=20130516185;m_pConnection-Open(strConnect,adModeUnknown);/捕获异常catch(_com_error e)/显示错误信息CString strMsg;strMsg.Format(_T(错误描述inital:%sn错误消息%s), (LPCTSTR)e.Description(),(LPCTSTR)e.ErrorMessage();AfxMessageBox(strMsg)
11、;_RecordsetPtr& ADOConn:GetRecordSet(_bstr_t bstrSQL)try/链接数据库,如果Connection对象为空,则重新链接数据库if(m_pConnection=NULL)OinitDBConnect();/创建记录集对象m_pRecordset.CreateInstance(_uuidof(Recordset);/取得表中的记录m_pRecordset-Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);catch(_com
12、_error e)/捕捉异常CString strMsg;strMsg.Format(_T(错误描述GetRecordSet:%sn错误消息%s), (LPCTSTR)e.Description(),(LPCTSTR)e.ErrorMessage();AfxMessageBox(strMsg);/显示错误信息return m_pRecordset;/返回记录集BOOL ADOConn:ExecuteSQL(_bstr_t bstrSQL)/ _variant_t RecordsAffected;try/是否已经连接数据库if(m_pConnection=NULL)OinitDBConnect(
13、);m_pConnection-Execute(bstrSQL,NULL,adCmdText);return true;catch(_com_error e)CString strMsg;strMsg.Format(_T(错误描述ExecuteSQL:%sn错误消息%s), (LPCTSTR)e.Description(),(LPCTSTR)e.ErrorMessage();AfxMessageBox(strMsg);return false;void ADOConn:ExitConnect()/关闭记录集和链接if(m_pRecordset!=NULL)m_pRecordset-Close(
14、);m_pConnection-Close();:CoUninitialize();/该函数的功能是关闭OLE/COM库,释放资源5.2全局类定义用户一经登录用户名和密码便成为该用户在图书管理系统中获取对应权限内信息的唯一线索,因此定义全局类:CGlobal53为每个用户表创建类(列举一个)用户表类:相应功能实现代码:void CUsers:SetUserPwd(CString vUserPwd)UserPwd=vUserPwd;void CUsers:GetData(CString cUserName)/连接数据库 ADOConn m_AdoConn; m_AdoConn.OinitDBCo
15、nnect(); /设置SELECT语句 _bstr_t vSQL; vSQL=SELECT * FROM L_G where 借书证号=+cUserName; /执行SELECT语句 _RecordsetPtr m_pRecordset; m_pRecordset=m_AdoConn.GetRecordSet(vSQL); /返回各列的值 if(m_pRecordset-adoEOF=1) CUsers();/AfxMessageBox(请注册后再使用!); else UserName=atoi(cUserName); UserType=(LPCTSTR)(_bstr_t)m_pRecord
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程设计 图书 管理 系统
限制150内