还剩28页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
课程设计报告课程名称面向对象程序设计C++设计题目图书管理系统专业计算机科学与技术姓名学号指导教师李晓虹2015年1月10日1系统需求分析在图书管理系统中,___为每个读者建立一个账户,账户内存储读者个人的详细信息,并依据读者类别的不同给每个读者发放借书卡(提供借书__、姓名、部门或班级等信息)读者可以凭借书卡在图书馆进行图书的借、还、续借、查询等操作,不同类别的读者在借书限额、还书期限以及可续借的次数上要有所不同借阅图书时,由___录入借书__,系统首先验证该__的有效性,若无效,则提示无效的原因;若有效,则显示__、姓名、借书限额、已借数量、可再借数量等信息,本次实际借书的数量不能超出可再借数量的值完成借书操作的同时要修改相应图书信息的状态、读者信息中的已借数量、在借阅信息中添加相应的记录归还图书时,由___录入借书__和待归还的图书编号,显示借书__、读者姓名、读书编号、读书名称、借书日期、应还日期等信息,并自动计算是否超期以及超期的罚款金额,若进行续借则取消超期和罚款等信息;若图书有损坏,由___根据实际情况从系统中选择相应的损坏等级,系统自动计算损坏赔偿金额完成归还操作的同时,修改相应图书信息的状态、修改读者信息中的已借数量、在借书信息中对相应的借书记录做标记、在还书信息中添加相应的记录图书___不定期地对图书信息进行添加、修改和删除等操作,在图书尚未归还的情况下不能对图书信息进行删除也可以对读者信息进行添加、修改、删除等操作,在读者还有未归还的图书的情况下不能进行删除读者信息可以方便地对三个表进行基本的查找、插入、删除、修改、添加以及浏览等基本操作该系统基于简单的基础数据库操作,目的在于模仿和学习现实生活中的学校学籍管理系统能够方便地对数据进行管理,通过计算机进行相应的操作,给使用者带来极大的方便,节省了更多的时间和人力物力财力通过对相应功能按钮的选择用户可以进行相应的操作,比如说用户__了浏览的功能,我们在设计的过程中设计该功能的时候考虑到该功能与报表相类似所以我们团队就决定用列表控件来显示用户选择的需要浏览的信息再比如说查找这一项功能在用户__查找这一按钮后,系统会弹出一个对话框,该框内有两个查询条件,用户可以根据自己所了解的额情况进行查询比如知道学生的姓名或者学号中的一个用户就可以用其中的一个条件进行查询达到了用多种方式方便查询的目的在用户输入了擦寻条件之后,系统会弹出相应的提示框,询问用户对查询的确认其他功能和该功能大同小异在这里就不一一叙述了但是值得一提的是删除功能模块删除功能模块相当重要,涉及到了数据库中的相当重要的知识,外码forigenkey的相应知识,以及删除的相应命令级联CASCAD删除,通过删除的约束大大地提高了系统数据的安全性以及数据的完整性2总体设计通过C++MFC编程并且使用ADO操作数据库技术其中数据库使用SQLServer2008数据库以及数据库操作语言SQL语句对数据库进行操作,在数据库中使用相应的表才存储相应的信息通过对数据库中的数据表的操作从而对相应的信息进行操作系统与数据库之间的数据交互如图2-1所示图2-13详细设计
3.1系统功能模块详细设计根据图书管理系统的需求分析,把系统的功能划分为两个个大模块,即___模块和用户模块其中___模块包括用户信息管理模块、图书信息管理模块、借阅管理模块、借阅历史模块、__修改模块、学生信息查询模块用户模块包括图书信息检索模块、借阅信息查询模块、借阅历史信息查询模块、__修改模块系统功能模块如图3-1所示图3-1图书管理系统功能模块图
3.2系统数据库详细设计本系统的后台数据库采用Oracle,它是以高级结构化查询语言SQL为基础的大型关系数据库,也是目前最流行的客户/服务器体系结构的数据库之一根据对系统的功能要求分析,得到了网上购物系统的E-R图,见图3-2所示图3-2图书管理系统的E-R图分析图书管理系统的E-R图,得到如下关系模式
(1)student借书证号,姓名,专业,性别,出生时间,借书量,照片;
(2)BOOK(I__N,书名,__,出版社,__,副本量,库存量);
(3)JY(借书证号,I__N,索书号,借书时间);
(4)JYLS(借书证号,I__N,索书号,借书时间,还书时间);
(5)Users借书证号,__,用户类型;4系统调试使用___账号_____001和__123456登录运行结果部分如下列图示图4-1图4-2图4-3图4-4图4-5图4-6图4-7图4-8图4-95结果分析通过第四项的测试,各项测试结果都能够正常显示,包括基本的数据库维护数据的增加、删除、修改和更新都能够实现,在数据约束范围内允许用户进行合法的操作(满足数据库的约束条件)6总结通过这次实践课程所做系统的练习,使得自己对C++类和对象的理解增加了不少,特别是又学到了粗浅的额ADO数据库操作技术,不仅锻炼了自己的自学能力以及资料查找能力,更是促进了自己专业技能的提高,在此次系统的实现过程中我深刻体会到C++类的作用以及C++面向对象的特点附程序源代码和运行截图部分源代码链接数据库:使用ADO链接数据库构造数据库连接类ADOConn数据库连接代码_bstr_tstrConnect=Provider=SQLOLEDB.1;Password=20130516185;PersistSecurityInfo=True;UserID=sa;InitialCatalog=XS;DataSour__=localhost;;voidADOConn::OinitDBConnect{//初始化OLE/COM库::CoInitializeNULL;try{//创建Connection对象m_pConnection.CreateInstan__ADODB.Recordset;m_pConnection.CreateInstan__ADODB.Connection;//设置连接字符串,必须是BSTR或者_bstr_t类型_bstr_tstrConnect=Provider=SQLOLEDB.1;Password=20130516185;PersistSecurityInfo=True;UserID=sa;InitialCatalog=XS;DataSour__=localhost;;//_bstr_tstrConnect=Provider=SQLOLEDB;Server=ntserver;Database=XS;uid=sa;pwd=20130516185;;m_pConnection-OpenstrConnectadModeUnknown;}//捕获异常catch_com_errore{//显示错误信息CStringstrMsg;strMsg.For__t_T错误描述inital%s\n错误消息%sLPCTSTRe.DescriptionLPCTSTRe.ErrorMessage;AfxMessageBoxstrMsg;}}_RecordsetPtrADOConn::GetRecordSet_bstr_tbstrSQL{try{//链接数据库,如果Connection对象为空则重新链接数据库ifm_pConnection==NULLOinitDBConnect;//创建记录集对象m_pRecordset.CreateInstan___uuidofRecordset;//取得表中的记录m_pRecordset-OpenbstrSQLm_pConnection.GetInte_____PtradOpenDynamicadLockOptimisticadCmdText;}catch_com_errore//捕捉异常{CStringstrMsg;strMsg.For__t_T错误描述GetRecordSet%s\n错误消息%sLPCTSTRe.DescriptionLPCTSTRe.ErrorMessage;AfxMessageBoxstrMsg;//显示错误信息}returnm_pRecordset;//返回记录集}BOOLADOConn::ExecuteSQL_bstr_tbstrSQL{//_variant_tRecordsAffected;try{//是否已经连接数据库ifm_pConnection==NULLOinitDBConnect;m_pConnection-ExecutebstrSQLNULLadCmdText;returntrue;}catch_com_errore{CStringstrMsg;strMsg.For__t_T错误描述ExecuteSQL%s\n错误消息%sLPCTSTRe.DescriptionLPCTSTRe.ErrorMessage;AfxMessageBoxstrMsg;returnfalse;}}voidADOConn::ExitConnect{//关闭记录集和链接ifm_pRecordset!=NULLm_pRecordset-Close;m_pConnection-Close;::CoUninitialize;//该函数的功能是关闭OLE/COM库,释放资源}
5.2全局类定义用户一经登录用户名和__便成为该用户在图书管理系统中获取对应权限内信息的唯一线索,因此定义全局类CGlobal5.3为每个用户表创建类(列举一个)用户表类相应功能实现代码voidCUsers::SetUserPwdCStringvUserPwd{UserPwd=vUserPwd;}voidCUsers::GetDataCStringcUserName{//连接数据库ADOConnm_AdoConn;m_AdoConn.OinitDBConnect;//设置SELECT语句_bstr_tvSQL;vSQL=SELECT*FROML_Gwhere借书证号=+cUserName;//执行SELECT语句_RecordsetPtrm_pRecordset;m_pRecordset=m_AdoConn.GetRecordSetvSQL;//返回各列的值ifm_pRecordset-adoEOF==1{CUsers;//AfxMessageBox请注册后再使用!;}else{UserName=atoicUserName;UserType=LPCTSTR_bstr_tm_pRecordset-GetCollecttype;UserPwd=LPCTSTR_bstr_tm_pRecordset-GetCollectpassword;}m_AdoConn.ExitConnect;}voidCUsers::sql_updateCStringcUserName{//链接数据库ADOConnm_Adoconn;m_Adoconn.OinitDBConnect;//设置INSERT语句_bstr_tvSQL;vSQL=;m_Adoconn.ExecuteSQLvSQL;m_Adoconn.ExitConnect;}voidCUsers::sql_deleteCStringcUserName{//链接数据库ADOConnm_Adoconn;m_Adoconn.OinitDBConnect;//设置INSERT语句_bstr_tvSQL;vSQL=DELETEFROML_GWHERE借书证号+cUserName;m_Adoconn.ExecuteSQLvSQL;m_Adoconn.ExitConnect;}voidCUsers::SetUserTypeintvUserType{UserType=vUserType;}CStringCUsers::GetUserType{returnUserType;}运行截图登录在登录界面如果用户有图书管理系统的账号(借书证号)和__则可以登录,如果是该校的学生但是没有账号可以先注册后在进行登录用户信息错误如果用户信息错误__和账号以及用户类型不匹配,则会弹出提示框提示“用户信息错误”注册模块___登录后的模块___登陆后的界面有相应的功能按钮图书管理按钮,用户管理按钮,借阅信息管理按钮,借阅历史管理按钮,修改__按钮,查看学生基本信息按钮___—图书管理模块___进入到图书管理界面后能实现检索,增加,修改,删除,浏览这五个功能___—图书管理模块—检索用户可以通过书名或者__进行图书的检索___--图书管理模块—增加___—图书管理模块—修改___修改图书信息前需要查找需要修改的图书,可将I__N或书名作为查找项,查找完成后则可以进行相应的修改操作___—图书管理模块—删除___修改图书信息前需要查找需要删除的图书,可将I__N或书名作为查找项,查找完成后则可以进行相应的删除操作___—图书管理模块—浏览___—用户管理模块___—用户管理模块—检索___—用户管理模块—浏览___—用户管理模块—增加___—用户管理模块—修改___—用户管理模块—删除___—借阅信息管理模块___—借阅信息管理模块—检索___—借阅信息管理模块—浏览___—借阅信息管理模块—增加___—借阅信息管理模块—修改___—借阅信息管理模块—删除___—借阅历史信息管理模块___—借阅历史信息管理模块—检索___—借阅历史信息管理模块—浏览___—借阅历史信息管理模块—增加___—借阅历史信息管理模块—修改___—借阅历史信息管理模块—删除___—修改_____—查看学生信息___—查看学生信息—检索___—查看学生信息—浏览用户—登录模块用户—登录后主界面用户—图书信息模块用户—图书信息模块—检索用户—图书信息模块—浏览用户—借阅信息模块用户—修改__模块。