版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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) 创建一个
6、新类,名为cclerkdataset,在base class中选择crecordset 添加消息映射5 图书管理系统的设计 最后输入按键的执行代码。4.2 系统主界面设计 其中信息可以查看管理员信息,图书信息,读者信息;日常工作中包含图书借阅,图书归还,缴纳罚款;查询中包含读者查询;帮助中可以查看系统帮助 6程序设计课程设计报告(2012)4.3图书信息管理模块设计 7图书管理系统的设计为idd_book_maintain添加成员变量创建一个新类,名为cbookdataset,方法步骤同cclerkdataset,添加消息映射最后输入按钮代码4.4 管理员、读者信息管理模块设计管理员信息管理
7、8程序设计课程设计报告(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图书管理系统的
9、设计 3、读者管理测试修改 4、管理员管理测试查询 14程序设计课程设计报告(2012) 5、借书测试 借阅成功 借阅失败 15图书管理系统的设计 6、还书测试 7、借书、罚金查询测试 借书查询 16程序设计课程设计报告(2012) 罚金查询 6 小结 在这次的课程设计中,让我学到了很多在课堂上和书本上学不到的知识,我在这次课程设计中最大的收获有以下几方面:一、 领略到了数据库设计在计算机领域的重要性。数据库作为一个永久存储形式在17图书管理系统的设计应用中发挥着重要的作用。在数据库设计中,我明白了数据库设计不是范式越高越好的,我们要根据我们的应用来决定,一切应该以需求为首要选择。二、 对编程
10、环境、一些控件的使用和界面的设计更加熟悉。因为图书管理系统中设计到很多控件的使用,只有很好的使用这些控件才可以给出一个很好的界面呈现在用户面前。这样更有利于数据库和用户之间的交流。三、 利用软件工程学开发系统。虽然这个图书管理系统是一个小的系统,但从这个小的项目中也让我明白了数据库作为任何一个系统的后台的重要性,在开谭浩强. c谭浩强. c发系统设计和实现中学到和总结很多经验和教训。 参考文献 程序设计(第三版) . 北京:清华大学出版社, 2005 程序设计题解与上机指导(第三版) . 北京:清华大学出版社,18 12 2005程序设计课程设计报告(2012)附 录附录1 源程序清单附录1.
11、1系统登录模块源程序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(cdataex
12、change* pdx) cdialog:dodataexchange(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)o
13、n_bn_clicked(idc_confirm, onconfirm)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.isem
14、pty() /*判断用户名信息是否为空*/ afxmessagebox("请输入用户名!");return;19图书管理系统的设计 msqlstr = "select * from clerk where name=" msqlstr = msqlstr + m_strname;msqlstr = msqlstr + " and password="msqlstr = msqlstr + m_strpassword;msqlstr = msqlstr + "&q
15、uot; if (!mrsdataset.open(afx_db_use_default_type, msqlstr) afxmessagebox("clerk表打开失败!");return;if (!mrsdataset.iseof()/ open all function for userm_bsuccess = true;m_struserid = mrsdataset.m_clerk_id ;cdialog:onok();elseafxmessagebox("登录失败!");m_struserid = _t(&am
16、p;quot;");return; void clogindlg:oncancel()/ todo: add your control notification 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_s
17、truserid = mdlg.m_struserid;elsem_blogin = false;m_strusername = _t("");m_struserid = _t("");cstring name;name = "当前用户:" + m_strusername;m_wndstatusbar.setpanetext(0,name);20程序设计课程设计报告(2012) void cmainframe:onupdatefine(ccmdui* pcmdui)/ todo: add
18、 your command update ui handler code here pcmdui->enable(m_blogin); void cmainframe:onupdatebookmaintain(ccmdui* pcmdui) / todo: add your command update ui handler code here pcmdui->enable(m_blogin); void cmainframe:onupdateconfigmaintain(ccmdui* pcmdui) / todo: add your command update
19、 ui handler code here pcmdui->enable(m_blogin); void cmainframe:onupdatelendout(ccmdui* pcmdui) / todo: add your command update ui handler code here pcmdui->enable(m_blogin); void cmainframe:onupdateloginout(ccmdui* pcmdui) / todo: add your command update ui handler code here pcmdui-&a
20、mp;gt;enable(m_blogin); void cmainframe:onupdatereadermaintain(ccmdui* pcmdui) / todo: add your command update ui handler code here pcmdui->enable(m_blogin); void cmainframe:onupdatereturnback(ccmdui* pcmdui) / todo: add your command update ui handler code here pcmdui->enable(m_blogin)
21、; void cmainframe:onupdateusermaintain(ccmdui* pcmdui) / todo: add your command update ui handler code here pcmdui->enable(m_blogin); 21图书管理系统的设计void cmainframe:onloginout()/ todo: add your command handler code here m_blogin = false;m_strusername = _t("");m_struserid = _t(&a
22、mp;quot;"); cstring name;name = "当前用户:" + m_strusername; m_wndstatusbar.setpanetext(0,name); void cmainframe:onreadermaintain()/ todo: add your command handler code here creadermdlg mdlg;mdlg.domodal(); void cmainframe:onusermaintain()/ todo: add your command handler code
23、here cclerkmdlg mdlg;mdlg.domodal(); void cmainframe:onbookmaintain()/ todo: add your command handler code here cbookmdlg mdlg;mdlg.domodal(); void cmainframe:onlendout()/ todo: add your command handler code here clendoutdlg mdlg;mdlg.domodal(); void cmainframe:onfine()/ todo: add your command handl
24、er code here cfinedlg mdlg;mdlg.domodal(); void cmainframe:onreturnback()creturnbookdlg mdlg;mdlg.domodal();/ todo: add your command handler code here void cmainframe:onreaderqry()22程序设计课程设计报告(2012) / todo: add your command handler code here /creaderqry mdlg; creaderqrydlg mdlg; mdlg.domodal();附录1.3
25、图书信息管理模块源程序void cbookmdlg:oncancelrec()/ todo: add your control notification handler code here m_badd = false;m_bedit = false;displayrecord();setbuttonstate(); settextstate(); void cbookmdlg:ondelete()/ todo: add your control notification handler code here m_rsdataset.delete();displayrecord();setbut
26、tonstate(); void cbookmdlg:onedit()/ todo: add your control notification handler code here m_bedit = true;setbuttonstate();settextstate();cwnd *pwnd;pwnd = getdlgitem(idc_bookname);pwnd->setfocus(); void cbookmdlg:onenquery()/ todo: add your control notification handler code here updatedata(t
27、rue);if (m_strbookidq.isempty() && m_strbooknameq.isempty() m_rsdataset.m_strfilter = ""m_rsdataset.requery();displayrecord();setbuttonstate();return;bool mall = false;if (!m_strbookidq.isempty()m_rsdataset.m_strfilter = "book_id=" + m_strbookidq ;
28、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_name=" m_rsdataset.m_strfilter = m_rsdataset.m_strfilter + m_strbooknameq; m_rsdataset
29、.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();displayrecord();setbuttonstate(); void cbookmdlg:onexit()/ todo:
30、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 cbookmdlg:onlast()/ todo: add your control notification handler code
31、 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_strauthor = ""m_strpress = &a
32、mp;quot;"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 handler code here if(!m_r
33、sdataset.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 notification handle
34、r 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_book_id = m
35、_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_rsdatase
36、t.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_rsd
37、ataset.moveprev();m_strbookid = m_rsdataset.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_
38、bedit)pwnd = getdlgitem(idc_bookname); pwnd->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->enablewindo
39、w(true);pwnd = getdlgitem(idc_pressdate); pwnd->enablewindow(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_a
40、uthor); pwnd->enablewindow(false);pwnd = getdlgitem(idc_press);pwnd->enablewindow(false);pwnd = getdlgitem(idc_pressdate); pwnd->enablewindow(false);pwnd = getdlgitem(idc_flag_borrow); pwnd->enablewindow(false);pwnd = getdlgitem(idc_bookname_q); pwnd->enablewindow(
41、true);pwnd = getdlgitem(idc_bookid_q);pwnd->enablewindow(true);return true; bool cbookmdlg:setbuttonstate()cwnd *pwnd; if(!m_rsdataset.isopen()pwnd = getdlgitem(idc_first);pwnd->enablewindow(false);pwnd = getdlgitem(idc_next);pwnd->enablewindow(false);pwnd = getdlgitem(idc_prior
42、);pwnd->enablewindow(false);27图书管理系统的设计 pwnd = getdlgitem(idc_last); pwnd->enablewindow(false); pwnd = getdlgitem(idc_new); pwnd->enablewindow(false); pwnd = getdlgitem(idc_edit); pwnd->enablewindow(false); pwnd = getdlgitem(idc_enquery); pwnd->enablewindow(false);
43、 pwnd = getdlgitem(idc_delete); pwnd->enablewindow(false); pwnd = getdlgitem(idc_save); pwnd->enablewindow(false); pwnd = getdlgitem(idc_cancel_rec); pwnd->enablewindow(false); return true; if (m_bedit) pwnd = getdlgitem(idc_first); pwnd->enablewindow(false); pwnd = getdl
44、gitem(idc_next); pwnd->enablewindow(false); pwnd = getdlgitem(idc_prior); pwnd->enablewindow(false); pwnd = getdlgitem(idc_last); pwnd->enablewindow(false); if (m_rsdataset.isbof() pwnd = getdlgitem(idc_first); pwnd->enablewindow(false); pwnd = getdlgitem(idc_prior); pwnd
45、->enablewindow(false); 28 pwnd = getdlgitem(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 = getd
46、lgitem(idc_save); pwnd->enablewindow(true); pwnd = getdlgitem(idc_cancel_rec); pwnd->enablewindow(true); return true;程序设计课程设计报告(2012)elsepwnd = getdlgitem(idc_first);pwnd->enablewindow(true);pwnd = getdlgitem(idc_prior);pwnd->enablewindow(true); if (m_rsdataset.iseof()pwn
47、d = getdlgitem(idc_next);pwnd->enablewindow(false);pwnd = getdlgitem(idc_last);pwnd->enablewindow(false);elsepwnd = getdlgitem(idc_next);pwnd->enablewindow(true);pwnd = getdlgitem(idc_last);pwnd->enablewindow(true); if (m_rsdataset.isbof() && m_rsdataset.i
48、seof() 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->enablewindow(true); pwnd = getdlgitem(idc_new);pwnd->
49、;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()cdialog:oninitdialog(); 29图书管理系统的设计 / todo: a
50、dd 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()/ tod
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 面膜促销广告语
- 拍卖公司员工劳动合同(31篇)
- 音乐课的教学反思
- 课题研究学习心得体会范文(32篇)
- 吉林省长春市(2024年-2025年小学五年级语文)统编版能力评测(下学期)试卷及答案
- 内蒙古呼和浩特市(2024年-2025年小学五年级语文)人教版摸底考试(上学期)试卷及答案
- 2024年苯酐催化剂项目资金需求报告代可行性研究报告
- 高二化学选修四第一次月考试卷教案
- 绿色建筑 被动式超低能耗公共建筑设计规范编制说明
- 上海市市辖区(2024年-2025年小学五年级语文)统编版小升初真题(下学期)试卷及答案
- 病原生物与免疫课程标准
- 火电厂工艺流程教学课件
- 波形护栏施工应急预案
- 违规违纪检讨书范文
- 信息技术应用于高三化学复习课教学的研究的开题报告
- 2023上海高三高考英语模拟试卷20套(含答案)
- 罗大佑的歌词集
- 日.却诺木的诗集
- 康复护理学综述
- 传染病及其预防传染病
- 通风管道系统的设计计算
评论
0/150
提交评论