版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、vc+图书管理系统课程设计报告 ( 2011 - 2012 年度第 2 学期) c+程序设计课程设计报告 图书管理系统的设计 专业 2012年6月 22日 学生姓名 班学级 号 指导教师 完成日期 图书管理系统的设计目 录目 录 . 2 1 概 述 . 11.1 课程设计目的 . 11.2 课程设计 录 . 19 附录1 源程序清单 . 19附录1.1系统登录模块源程序 . 19附录1.2系统主界面源程序 . 20附录1.3图书信息管理模块源程序 . 23附录1.4管理员、读者信息管理模块源程序 . 30附录1.5借还书管理模块源程序 . 44附录1.6罚金查询模块源程序 . 50程序设计课程
2、设计报告(2012)学生成绩管理系统的设计1 概 述1.1 课程设计目的1、巩固并加深学生对c+语言程序设计知识的理解;2、培养学生面向对象的程序设计思想,使学生认识面向过程和面向对象两种设计方法的区别;3、进一步掌握和应用vc+6.0集成开发环境;4、提高运用c+语言解决实际问题的能力;5、初步掌握开发小型实用软件的基本方法,能独立设计、实现基本的mis系统;6、掌握书写程序设计开发文档的能力(书写课程设计实验报告)。1.2 课程设计内容课题名称:图书管理系统的开发说明:实现简单图书信息的管理。要求:1)权限管理:增加或删除系统操作人员,并指定操作人员的权限;2)读者管理:设置不同的读者身份
3、,并对读者相关信息进行管理,包括建立新的读者,编辑已有的读者信息和删除读者信息的操作;3)图书类别的管理:对图书的类别进行管理;4)图书入库管理:录入新的图书信息;5)图书信息修改管理:对已有的图书信息进行修改,包括删除指定图书操作;6)图书借还管理:实现对图书的借出和归还的管理;7)图书查询管理:通过各种查询方式可以来进行查询,比如书号,书名,作者等;8)图书超期管理:对超期的情况能自动给出提示信息。2 系统需求分析2.1 系统目标实现简单图书信息的管理。如:登陆权限管理、读者管理、图书信息(入库、修改、借还、查询、超期)管理、罚金管理2.2 主体功能1)权限管理:增加或删除系统操作人员,并
4、指定操作人员的权限;2)读者管理:设置不同的读者身份,并对读者相关信息进行管理,包括建立新的读者,编辑已有的读者信息和删除读者信息的操作;3)图书类别的管理:对图书的类别进行管理;4)图书入库管理:录入新的图书信息;5)图书信息修改管理:对已有的图书信息进行修改,包括删除指定图书操作;6)图书借还管理:实现对图书的借出和归还的管理;7)图书查询管理:通过各种查询方式可以来进行查询,比如书号,书名,作者等;8)图书超期管理:对超期的情况能自动给出提示信息。2.3 开发环境vc+6.0集成开发环境、access2003数据库1图书管理系统的设计3 系统概要设计3.1 系统的功能模块划分整个图书管理
5、系统分为四个模块。分别为图书管理模块、借阅管理模块、读者管理模块和3.2 系统流程图 2程序设计课程设计报告(2012)4系统详细设计用access2003建立名为“library”的数据库,创建4个表,分别为:book,clerk,reader,borrow和fine。 利用odbc数据源管理器配置与数据库对应的数据源 3图书管理系统的设计 建立名为“library”的mfc单文档应用程序向导在名为stdafx.h的头文件中添加#include <afxdb.h>4.1 系统登录模块设计 添加系统登录对话框,属性设置为 4程序设计课程设计报告(2012) 创建一个新类,名为ccl
6、erkdataset,在base class中选择crecordset 添加消息映射5 图书管理系统的设计 最后输入按键的执行代码。4.2 系统主界面设计 其中信息可以查看管理员信息,图书信息,读者信息;日常工作中包含图书借阅,图书归还,缴纳罚款;查询中包含读者查询;帮助中可以查看系统帮助 6程序设计课程设计报告(2012)4.3图书信息管理模块设计 7图书管理系统的设计为idd_book_maintain添加成员变量创建一个新类,名为cbookdataset,方法步骤同cclerkdataset,添加消息映射最后输入按钮代码4.4 管理员、读者信息管理模块设计管理员信息管理 8程序设计课程设
7、计报告(2012)其中职位有为idd_clerk_maintain添加成员变量建立新类cclerkmdlg,按图书信息模块设计步骤做相似操作,添加消息映射 最后输入按钮代码 读者信息管理 9图书管理系统的设计建立新类creaderdataset,按上述步骤做相似操作,添加消息映射 最后输入按钮代码4.5 借书还书管理模块设计借书管理 建立新类lendoutdlg,按上述步骤做相似操作,添加消息响应最后输入按钮代码 还书管理 10程序设计课程设计报告(2012)建立新类creturnbookdlg,按上述步骤做相似操作,添加消息映射 最后输入代码4.6 借书、罚金查询查询模块设计借书查询 建立新
8、类creaderqrydlg,按上述步骤做相似操作,添加消息映射最后输入代码 11图书管理系统的设计罚金查询 建立新类cfinehistorydataset,按上述步骤做相似操作,添加消息映射 最后输入代码5 测试5.1 测试方案采用黑盒测试方法。对功能进行逐一测试,在输入合理及不合理的数据后测试系统的正常运作情况测试1:系统登录测试测试2:图书管理测试测试3:读者管理测试12程序设计课程设计报告(2012)测试4:管理员管理测试测试5:借书测试测试6:还书测试测试7:借书、罚金查询测试5.2 测试结果1、登录测试: 正确登录 错误登录 2、图书管理测试 新增13图书管理系统的设计 3、读者管
9、理测试修改 4、管理员管理测试查询 14程序设计课程设计报告(2012) 5、借书测试 借阅成功 借阅失败 15图书管理系统的设计 6、还书测试 7、借书、罚金查询测试 借书查询 16程序设计课程设计报告(2012) 罚金查询 6 小结 在这次的课程设计中,让我学到了很多在课堂上和书本上学不到的知识,我在这次课程设计中最大的收获有以下几方面:一、 领略到了数据库设计在计算机领域的重要性。数据库作为一个永久存储形式在17图书管理系统的设计应用中发挥着重要的作用。在数据库设计中,我明白了数据库设计不是范式越高越好的,我们要根据我们的应用来决定,一切应该以需求为首要选择。二、 对编程环境、一些控件的
10、使用和界面的设计更加熟悉。因为图书管理系统中设计到很多控件的使用,只有很好的使用这些控件才可以给出一个很好的界面呈现在用户面前。这样更有利于数据库和用户之间的交流。三、 利用软件工程学开发系统。虽然这个图书管理系统是一个小的系统,但从这个小的项目中也让我明白了数据库作为任何一个系统的后台的重要性,在开谭浩强. c谭浩强. c发系统设计和实现中学到和总结很多经验和教训。 参考文献 程序设计(第三版) . 北京:清华大学出版社, 2005 程序设计题解与上机指导(第三版) . 北京:清华大学出版社,18 12 2005程序设计课程设计报告(2012)附 录附录1 源程序清单附录1.1系统登录模块源
11、程序clogindlg:clogindlg(cwnd* pparent /*=null*/): cdialog(clogindlg:idd, pparent)/afx_data_init(clogindlg)m_strname = _t("");m_strpassword = _t("");/afx_data_initm_bsuccess = false;m_struserid = _t(""); void clogindlg:dodataexchange(cdataexchange* pdx) cdialog:dodataexcha
12、nge(pdx);/afx_data_map(clogindlg)ddx_text(pdx, idc_login_name, m_strname); ddv_maxchars(pdx, m_strname, 8);ddx_text(pdx, idc_login_password, m_strpassword); ddv_maxchars(pdx, m_strpassword, 8);/afx_data_map begin_message_map(clogindlg, cdialog)/afx_msg_map(clogindlg)on_bn_clicked(idc_confirm, onconf
13、irm)on_bn_clicked(idc_cancel, oncancel)/afx_msg_mapend_message_map() / clogindlg message handlers void clogindlg:onconfirm()/ todo: add your control notification handler code here cclerkdataset mrsdataset; /*声明记录集*/cstring msqlstr; updatedata(true); if (m_strname.isempty() /*判断用户名信息是否为空*/ afxmessage
14、box("请输入用户名!");return;19图书管理系统的设计 msqlstr = "select * from clerk where name=" msqlstr = msqlstr + m_strname;msqlstr = msqlstr + " and password="msqlstr = msqlstr + m_strpassword;msqlstr = msqlstr + "" if (!mrsdataset.open(afx_db_use_default_type, msqlstr) afxm
15、essagebox("clerk表打开失败!");return;if (!mrsdataset.iseof()/ open all function for userm_bsuccess = true;m_struserid = mrsdataset.m_clerk_id ;cdialog:onok();elseafxmessagebox("登录失败!");m_struserid = _t("");return; void clogindlg:oncancel()/ todo: add your control notificatio
16、n handler code herecdialog:oncancel();附录1.2系统主界面源程序void cmainframe:onloginin()/ todo: add your command handler code hereclogindlg mdlg;if (mdlg.domodal() = idok)m_blogin = true;m_strusername = mdlg.m_strname ;m_struserid = mdlg.m_struserid;elsem_blogin = false;m_strusername = _t("");m_stru
17、serid = _t("");cstring name;name = "当前用户:" + m_strusername;m_wndstatusbar.setpanetext(0,name);20程序设计课程设计报告(2012) void cmainframe:onupdatefine(ccmdui* pcmdui)/ todo: add your command update ui handler code here pcmdui->enable(m_blogin); void cmainframe:onupdatebookmaintain(ccmd
18、ui* pcmdui) / todo: add your command update ui handler code here pcmdui->enable(m_blogin); void cmainframe:onupdateconfigmaintain(ccmdui* pcmdui) / todo: add your command update ui handler code here pcmdui->enable(m_blogin); void cmainframe:onupdatelendout(ccmdui* pcmdui) / todo: add your comm
19、and update ui handler code here pcmdui->enable(m_blogin); void cmainframe:onupdateloginout(ccmdui* pcmdui) / todo: add your command update ui handler code here pcmdui->enable(m_blogin); void cmainframe:onupdatereadermaintain(ccmdui* pcmdui) / todo: add your command update ui handler code here
20、pcmdui->enable(m_blogin); void cmainframe:onupdatereturnback(ccmdui* pcmdui) / todo: add your command update ui handler code here pcmdui->enable(m_blogin); void cmainframe:onupdateusermaintain(ccmdui* pcmdui) / todo: add your command update ui handler code here pcmdui->enable(m_blogin); 21图
21、书管理系统的设计void cmainframe:onloginout()/ todo: add your command handler code here m_blogin = false;m_strusername = _t("");m_struserid = _t(""); cstring name;name = "当前用户:" + m_strusername; m_wndstatusbar.setpanetext(0,name); void cmainframe:onreadermaintain()/ todo: add yo
22、ur command handler code here creadermdlg mdlg;mdlg.domodal(); void cmainframe:onusermaintain()/ todo: add your command handler code here cclerkmdlg mdlg;mdlg.domodal(); void cmainframe:onbookmaintain()/ todo: add your command handler code here cbookmdlg mdlg;mdlg.domodal(); void cmainframe:onlendout
23、()/ todo: add your command handler code here clendoutdlg mdlg;mdlg.domodal(); void cmainframe:onfine()/ todo: add your command handler code here cfinedlg mdlg;mdlg.domodal(); void cmainframe:onreturnback()creturnbookdlg mdlg;mdlg.domodal();/ todo: add your command handler code here void cmainframe:o
24、nreaderqry()22程序设计课程设计报告(2012) / todo: add your command handler code here /creaderqry mdlg; creaderqrydlg mdlg; mdlg.domodal();附录1.3图书信息管理模块源程序void cbookmdlg:oncancelrec()/ todo: add your control notification handler code here m_badd = false;m_bedit = false;displayrecord();setbuttonstate(); settexts
25、tate(); void cbookmdlg:ondelete()/ todo: add your control notification handler code here m_rsdataset.delete();displayrecord();setbuttonstate(); void cbookmdlg:onedit()/ todo: add your control notification handler code here m_bedit = true;setbuttonstate();settextstate();cwnd *pwnd;pwnd = getdlgitem(i
26、dc_bookname);pwnd->setfocus(); void cbookmdlg:onenquery()/ todo: add your control notification handler code here updatedata(true);if (m_strbookidq.isempty() && m_strbooknameq.isempty() m_rsdataset.m_strfilter = ""m_rsdataset.requery();displayrecord();setbuttonstate();return;bool
27、 mall = false;if (!m_strbookidq.isempty()m_rsdataset.m_strfilter = "book_id=" + m_strbookidq ;23图书管理系统的设计m_rsdataset.m_strfilter = m_rsdataset.m_strfilter + ""mall = true;if (!m_strbooknameq.isempty()if (mall)m_rsdataset.m_strfilter = m_rsdataset.m_strfilter + " and book_nam
28、e=" m_rsdataset.m_strfilter = m_rsdataset.m_strfilter + m_strbooknameq; m_rsdataset.m_strfilter = m_rsdataset.m_strfilter + ""elsem_rsdataset.m_strfilter = "book_name=" + m_strbooknameq; m_rsdataset.m_strfilter = m_rsdataset.m_strfilter + "" m_rsdataset.requery();d
29、isplayrecord();setbuttonstate(); void cbookmdlg:onexit()/ todo: add your control notification handler code herecdialog:oncancel(); void cbookmdlg:onfirst()/ todo: add your control notification handler code hereif(!m_rsdataset.isbof()m_rsdataset.movefirst();displayrecord();setbuttonstate(); void cboo
30、kmdlg:onlast()/ todo: add your control notification handler code hereif(!m_rsdataset.iseof()m_rsdataset.movelast();displayrecord();setbuttonstate(); void cbookmdlg:onnew()24程序设计课程设计报告(2012)/ todo: add your control notification handler code here m_strbookid = ""m_strbookname = ""m
31、_strauthor = ""m_strpress = ""m_strflag = "y" / m_cntrposition.updatedata(false);m_bedit = true;m_badd = true;setbuttonstate();settextstate();cwnd *pwnd;pwnd = getdlgitem(idc_bookid);pwnd->setfocus(); void cbookmdlg:onnext()/ todo: add your control notification handl
32、er code here if(!m_rsdataset.iseof()m_rsdataset.movenext();displayrecord();setbuttonstate(); void cbookmdlg:onprior()/ todo: add your control notification handler code here if(!m_rsdataset.isbof()m_rsdataset.moveprev();displayrecord();setbuttonstate(); void cbookmdlg:onsave()/ todo: add your control
33、 notification handler code here updatedata(true);if (m_strbookid.isempty() | m_strbookname.isempty() afxmessagebox("请输入相应数据!");return;if (m_badd)m_rsdataset.addnew(); 25图书管理系统的设计elsem_rsdataset.edit();m_rsdataset.m_author = m_strauthor;m_rsdataset.m_book_name = m_strbookname; m_rsdataset.m
34、_book_id = m_strbookid;m_rsdataset.m_press = m_strpress;m_rsdataset.m_flag_borrow = m_strflag;/ m_rsdataset.m_flag_borrow = "y"m_rsdataset.update();m_rsdataset.requery();m_badd = false;m_bedit = false;displayrecord();setbuttonstate();settextstate(); bool cbookmdlg:displayrecord()if (m_rsda
35、taset.iseof() && m_rsdataset.isbof() m_strbookid = ""m_strbookname = ""m_strpress = ""m_strauthor = ""m_strflag = ""elseif (m_rsdataset.isbof()m_rsdataset.movenext();elseif (m_rsdataset.iseof()m_rsdataset.moveprev();m_strbookid = m_rsdataset.
36、m_book_id;m_strbookname = m_rsdataset.m_book_name; m_strpress = m_rsdataset.m_press;m_strauthor = m_rsdataset.m_author ;m_strflag = m_rsdataset.m_flag_borrow ; updatedata(false);return true; bool cbookmdlg:settextstate()26程序设计课程设计报告(2012)cwnd *pwnd; if (m_bedit)pwnd = getdlgitem(idc_bookname); pwnd-
37、>enablewindow(true);pwnd = getdlgitem(idc_bookid); if (m_badd)pwnd->enablewindow(true); elsepwnd->enablewindow(false); pwnd = getdlgitem(idc_author); pwnd->enablewindow(true);pwnd = getdlgitem(idc_press);pwnd->enablewindow(true);pwnd = getdlgitem(idc_pressdate); pwnd->enablewindow(
38、true);pwnd = getdlgitem(idc_flag_borrow); pwnd->enablewindow(true); elsepwnd = getdlgitem(idc_bookname); pwnd->enablewindow(false);pwnd = getdlgitem(idc_bookid); pwnd->enablewindow(false);pwnd = getdlgitem(idc_author); pwnd->enablewindow(false);pwnd = getdlgitem(idc_press);pwnd->enabl
39、ewindow(false);pwnd = getdlgitem(idc_pressdate); pwnd->enablewindow(false);pwnd = getdlgitem(idc_flag_borrow); pwnd->enablewindow(false);pwnd = getdlgitem(idc_bookname_q); pwnd->enablewindow(true);pwnd = getdlgitem(idc_bookid_q);pwnd->enablewindow(true);return true; bool cbookmdlg:setbut
40、tonstate()cwnd *pwnd; if(!m_rsdataset.isopen()pwnd = getdlgitem(idc_first);pwnd->enablewindow(false);pwnd = getdlgitem(idc_next);pwnd->enablewindow(false);pwnd = getdlgitem(idc_prior);pwnd->enablewindow(false);27图书管理系统的设计 pwnd = getdlgitem(idc_last); pwnd->enablewindow(false); pwnd = get
41、dlgitem(idc_new); pwnd->enablewindow(false); pwnd = getdlgitem(idc_edit); pwnd->enablewindow(false); pwnd = getdlgitem(idc_enquery); pwnd->enablewindow(false); pwnd = getdlgitem(idc_delete); pwnd->enablewindow(false); pwnd = getdlgitem(idc_save); pwnd->enablewindow(false); pwnd = getd
42、lgitem(idc_cancel_rec); pwnd->enablewindow(false); return true; if (m_bedit) pwnd = getdlgitem(idc_first); pwnd->enablewindow(false); pwnd = getdlgitem(idc_next); pwnd->enablewindow(false); pwnd = getdlgitem(idc_prior); pwnd->enablewindow(false); pwnd = getdlgitem(idc_last); pwnd->ena
43、blewindow(false); if (m_rsdataset.isbof() pwnd = getdlgitem(idc_first); pwnd->enablewindow(false); pwnd = getdlgitem(idc_prior); pwnd->enablewindow(false); 28 pwnd = getdlgitem(idc_new); pwnd->enablewindow(false); pwnd = getdlgitem(idc_edit); pwnd->enablewindow(false); pwnd = getdlgitem(
44、idc_enquery); pwnd->enablewindow(false); pwnd = getdlgitem(idc_delete); pwnd->enablewindow(false); pwnd = getdlgitem(idc_save); pwnd->enablewindow(true); pwnd = getdlgitem(idc_cancel_rec); pwnd->enablewindow(true); return true;程序设计课程设计报告(2012)elsepwnd = getdlgitem(idc_first);pwnd->ena
45、blewindow(true);pwnd = getdlgitem(idc_prior);pwnd->enablewindow(true); if (m_rsdataset.iseof()pwnd = getdlgitem(idc_next);pwnd->enablewindow(false);pwnd = getdlgitem(idc_last);pwnd->enablewindow(false);elsepwnd = getdlgitem(idc_next);pwnd->enablewindow(true);pwnd = getdlgitem(idc_last);p
46、wnd->enablewindow(true); if (m_rsdataset.isbof() && m_rsdataset.iseof() pwnd = getdlgitem(idc_edit);pwnd->enablewindow(false);pwnd = getdlgitem(idc_delete); pwnd->enablewindow(false); elsepwnd = getdlgitem(idc_edit);pwnd->enablewindow(true);pwnd = getdlgitem(idc_delete); pwnd->
47、;enablewindow(true); pwnd = getdlgitem(idc_new);pwnd->enablewindow(true);pwnd = getdlgitem(idc_enquery);pwnd->enablewindow(true);pwnd = getdlgitem(idc_save);pwnd->enablewindow(false);pwnd = getdlgitem(idc_cancel_rec); pwnd->enablewindow(false); return true; bool cbookmdlg:oninitdialog()c
48、dialog:oninitdialog(); 29图书管理系统的设计 / todo: add extra initialization here m_badd = false; m_bedit = false; if (!m_rsdataset.open(afx_db_use_default_type) afxmessagebox("数据打开失败!"); displayrecord(); setbuttonstate(); settextstate(); return true; / return true unless you set the focus to a control / exception: ocx property pages should return false附录1.4管理员、读者信息管理模块源程序管理员:void cclerkmdlg:oncancelrec()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《正弦量的基本概念》课件
- 《多层厂房设计》课件
- 《GIS程序设计》课件
- 天津市 二手房合同范本
- 2025年许昌道路货运输从业资格证模拟考试题库
- 2025年黄冈道路运输从业人员从业资格考试
- 2025年马鞍山货运从业资格模拟考
- 2025年三门峡道路运输从业资格证考试题和答案
- 2025年牡丹江年货运从业资格证考试从业从业资格资格题库及答案
- 2025年日喀则货运模拟考试
- 翻译美学视角下小说《长恨歌》英译研究
- 河北省石家庄市2023-2024学年六年级上学期期末科学试卷(含答案)
- 中国儿童呼吸道合胞病毒感染诊疗及预防指南(2024医生版)解读课件
- 火车站高铁站消防培训
- 机场跑道沥青路面施工方案
- 企业战略规划顾问协议
- 新版浙教版2024-2025学年度八年级数学上册几何复习专题卷含答案
- 《现代控制理论》全套课件(东北大学)
- 人教版八年级上册数学期末考试试卷附答案
- 中华民族共同体概论学习通超星期末考试答案章节答案2024年
- 2024年部编版语文六年级上册期末测试题及答案(一)
评论
0/150
提交评论