




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
青岛理工大学 University Of Science & Technology Qingdao C+面向对象课程设计告设计地点 计算机学院机房 时 间 6月23日 至7月5日 学 院 计算机工程学院 专业班级 软件112班 姓 名 何金荣 学 号 201107225 指导教师 房斐斐 题 目 图书出版管理系统 完成时间 2013 年 7 月一需求分析书是知识的海洋,图书馆是书的海洋,我们都知道,图书馆数目繁多,对图书馆书籍的管理是一项庞大的任务。只有把图书馆的书目管理好,才能保障学生正常学习和阅读。因此我们要应用我们所学的知识,创建一个合理,全面,并且简单,易于使用的图书馆书籍管理系统。首先,我们创建的图书管理系统要求界面美观,让广大读者在点击进入系统时,有满目一新的感觉;然后,为了方便读者查询,借阅,我们设计的图书管理系统要实现以下功能:1. 读者通过此系统可以进行图书馆书目的总体浏览;2. 图书馆管理员可以通过此系统新增或删除书目记录;3. 在系统主控界面可以对所有书目按照图书编号进行排序;4. 读者可以直接点击查询图书销售情况和图书分类;5. 读者可以直接点击图书列表进行查看图书馆里现有的图书。 二设计内容 (一) 系统总体设计包括以下三个层次:1. 系统主界面分为四个区:记录编辑区,查询区,记录操作区,显示信息区。2. 在记录操作区可以通过按钮实现显示下一条记录,上一条记录,可以查看相应记录。3. 通过单击“新增记录”按钮,弹出“新增记录”对话框,在“新增记录”对话框中输入新的书目记录,单击确定便可新增一条记录。4. 通过单击“删除记录”按钮,可以将记录编辑区当前显示的记录删除。5. 通过单击“刷新纪录”按钮,可以查看刚刚新增或是删除后的图书。6. 通过单击“排序记录”按钮,可以在显示信息区显示排序后的书目。7. 通过单击“第一条记录按钮”,可以在记录编辑区显示书目编号排在第一的书目。8. 通过单击“最后一条”按钮,可以在纪录编辑区显示书目排在最后的图书信息。9. 在查询区,点击“图书销售”,弹出“图书销售”对话框,对话框中显示图书ID,出售价格,出售数量三大数据。10. 在查询区,点击“图书分类”,弹出“图书分类”对话框,对话框中显示分类ID和分类名称。11. 在查询区,通过点击“图书显示”可以查看图书馆目前现有的图书以及一些相关的信息。(二)数据库设计(1)此课设用到了三个数据库表,通过Access来建立,下图为出版图书基本信息表: (2)下图为图书出售信息表:(3)下图为图书分类表: 系统主控界面书目浏览书目记录管理快速运用上一记录下一记录增加记录删除记录排序记录跳回到第一条记录书目查询图书销售情况查询图书分类查询书目精确检索在记录编辑区显示该条记录在记录编辑区显示该条记录打开增加数据对话框删除当前记录编辑区显示记录在显示信息区按顺序显示排列后的记录点击直接跳转到第一条书目打开图书销售对话框打开图书分类对话框查询并在记录编辑区显示要检索的书目(二) 出版图书基本信息模块图 出版图书基本信息图书作者出版日期图书编号分类号图书名称图书价格图书出版社图书出版商 (三)图书销售信息模块图图书销售销售图书分类图书分类号销售图书价格销售图书数量销售图书编号(四)增加记录模块图增加记录图书编号图书分类号图书名称作者售价图书出版社图书出版地(五)数据结构说明及算法流程图: 系统自带函数,本人为定义:DoModal():切换到新界面 AddNew():增加记录 Delete():删除记录Update(): 刷新记录 Order():记录排序 Movefirst():指针指到第一个记录MoveNext():指针指到下一个记录 MovePrev():指针指到上一个记录MoveLast():指针指到最后一个记录系统界面结束增加记录删除记录记录排序修改记录图书销售图书分类所有图书显示刷新记录开始三调试分析1.本系统为图书出版管理系统,主要用于对图书的销售,分类以及现存图书的三大模块进行管理,当运行程序后,进入“图书出版管理系统界面”,在此界面里,有图书编号,图书名称,分类号,作者,售价,出版社等,其次还有对这些数据的操作,比如有增加,删除,排序功能,当点击“图书销售”后进入另一个界面,在“图书销售浏览查询”界面中,可以清楚看到关于图书销售的一些信息,比如销售编号,数量,分类号等,还可在此界面中增加,修改,删除各种销售图书信息。当点击“图书分类”按钮后,进入另一个界面,在“图书分类浏览查询”界面中,可以查看各种图书的分类,以及图书分类号。当点击“图书显示”按钮后,进入“显示所有图书”界面后,可以查看目前图书馆的图书量以及相关图书信息。2.本系统主要实现了图书出版管理的方便性,实时操作性,让图书管理系统更好的发挥了它的作用。3.在刚刚开始做图书出版管理系统的时候,脑海里完全一片茫然,由于第一次接触MFC,所有在上机的过程中,遇到了很多的问题,比如在重新建立一个对话框的时候,必须得为其写一个类,而且为派生类,这个问题困扰着我;还有图书的各个信息,必须得另外用一个变量来代替,必须得相对应等等问题。最后,在老师的耐心的教导和和同学的热情帮助下,我还是完成了这次课设。4.此次我做的这个系统虽然满足了图书出版管理系统的基本要求,但某些地方还是得以改进,比如在查询方面,可以改进按编号查询或者按图书名称查询,或者为其设置登录权限,等等这些我都还得努力,只是目前自己只能做到这一步,希望老师给予我这次课设一个评价,我也会努力改进,争取做得更好!四用户手册本系统是在宏碁电脑上运行的,运行环境为 Windows 32 旗舰版 操作系统,下面是程序执行后的结果与相关的截图:1. 统主控界面如图:该系统主要具有增加记录,删除记录,刷新纪录,排序记录,显示上一记录,下一记录,第一条记录,显示图书销售,图书分类数据表和全部图书基本信息的功能。当运行程序后,出项下面的界面,在此界面中可以操作相关的图书信息。 2. “上一记录”模块:当点击“上一记录”按钮,记录编辑区的数据自动显示成为上一条的信息。当数据已经是第一条的时候,会出现下“图1”提示对话框: 图1 图23.“下一记录”模块:当点击“下一记录”按钮时,记录编辑区的数据会自动显示成为下一条的信息。当数据已经是最后一条的纪录时,会出现上“图2”提示对话框:4. “增加记录”模块:当点击“增加记录”按钮时,界面会自动的弹出如下对话框: 此时用户只需要自己手动的在各自编辑框中修改数据,点击确定便可以完成增加功能;如果要放弃增添数据,只需要单击“取消”按钮便可以执行操作了。单击确定后,可以在主界面,通过上下翻记录,查看刚才增加的数据。5.“删除记录”模块: 当点击“删除记录”按钮时,界面所显示的数据就会被从数据库中删除,会出现如下效果: 当单击“删除纪录”按钮时,此时当前纪录全被删除,如此删除就这样实现了。 6. “排序记录”模块:当点击“排序记录”按钮时,系统会自动按照图书编号的大小顺序改变记录的顺序,此时再单击上下记录时会发现其顺序发生变化,而且主页面会显示序号最小的记录: 图1-执行排序功能之前界面 当单击“记录排序”按钮后,记录自动跳到编号最小的图书记录,截图如下 图2-执行排序功能之后界面7.“第一条记录”模块:顾名思义“第一条记录”按钮执行的功能就是将主界面的数据返回第一条记录。其效果如下图: 8.“图书销售”模块:此模块主要功能是应用“图书销售”选项按钮,用于调用图书销售对话框。调用的图书销售的对话框用于显示图书销售数据表的相关信息。其效果如图所示: 当点击“确定”按钮时,系统会自动返回主界面。9.“图书分类”模块:此模块主要功能是应用“图书分类”选项按钮,用于调用图书分类对话框。调用的图书分类对话框用于显示图书分类数据表的相关信息。该模块主要是用于图书分类编码查询,他是前面两个模块的辅助功能模块其效果如图所示: 当单击“确定”按钮时,系统会自动返回主界面。12. 显示所有记录模块该模块主要是插入RemoteData和DBGrid控件,当登录界面时,会显示出版图书信息数据表的内容。让用户一目了然的看到其系统中已储存的记录。其效果如图所示: 五设计总结谈到学习的心得体会,我个人感觉,这是一个很系统的过程。计算机软件课程设计这门课,在学习它之前,我是一种感受,学习的过程中是一种感受,学习完了之后,又是另一种感受。学习这门课之前,我初初看到课表上写着“软件课程设计”,感觉这应该是一门很深奥的的课,我开始怀疑自己仅有的一点C语言知识,不足以成为学习软件设计这样一门如此高深的课程的基础。于是我上图书馆借阅各种各样的有关“VC+”“软件工程设计”一类书。看了之后我发现很多专业知识我根本看不懂。我开始恐慌,这样薄弱的基础,我怎么可能学好“软件课程设计”这门课?带着几分恐惧,我走入了这门课的课堂。第一节课,老师给我们详细的讲解了这门课的学习目标以及教学的要求,给我们布置了学习任务,并且讲了很多很有用的学习方法。听了第一节课,在老师的耐心解说指导后,我是受益匪浅,心中对于这门课的恐惧消失了,我对这门课有了正确的认识,并且明确了学习的目的,随后,我又给自己制定了详细的学习计划。与同学组队后,我们就商量选定了课题,开始分工做。起初做的时候,没有遇到什么大问题,但是整个系统做完,正值我们沾沾自喜之际,却发现我们做的系统存在很多问题,运行不了。我们每天对着电脑,调试程序,一遍又一遍的试,也不知道试了多少遍,都还是无法运行。那时的我们,像两只折翼的小鸟,就要放弃飞翔。可是又一想,这点困难算什么,这只是专业学习的一个开始,如果我们连这点困难都克服不了,以后还怎么去学习更加高深的专业知识。于是我们就找老师,找学长学姐,找同学帮忙。老师要指导那么多学生,很忙很忙,但还是很耐心很认真的给每一个提问的同学讲解;学长学姐们也很热心的给予我们很多帮助;我们同学之间交流也相互学到了很多东西。大家共同努力,持之以恒,最后我们解决了所有棘手的问题,我们设计的系统成功运行了。做完这个课题,学完这门课,再回首看看整个学习的过程,从一头雾水到信誓旦旦,从信誓旦旦到灰心丧气,从灰心丧气到持之以恒我真的收获了很多,不仅学到了好多“软件课程设计”的知识,掌握了软件编程的基本原理和基本方法,掌握了软件的分析、设计、实现、调试等步骤,初步培养学生开发软件的能力。为后续相关课程的学习和毕业设计打下坚实基础。更重要的是,我明白了,计算机科学真的是一门集科学与技术为一体的学科,要把它学好真的不容易,所以首先我要端正自己的学习态度,以严谨求实的心态去对待后面的学习旅程,再者是,不管以后的学习中遇到什么困难,我都要持之以恒去克服它,绝不中途放弃! 最后要感谢每天在教室忙碌着,为同学们解答各种疑难问题的老师们,甚至是课后,还在实验室给同学们各种指导。非常感谢您们!六参考文献1郑莉C+语言程序设计(第3版)北京:清华大学出版社,2005.72钱能C+程序设计教程(第2版)北京:清华大学出版社,2005.83. 黄维通. Visual C+面向对象与可视化程序设计(第2版).北京:清华大学出版社,2003.124. 刘路放. Visual C+与面向对象程序设计教程(第二版). 北京:高等教育出版社,2007.85. 潘爱民. COM原理与应用.北京:清华大学出版社,1999.11五 主要程序清单1) 上一记录 void CMyView:OnButtonprev() /上一条记录/ TODO: Add your control notification handler code herem_pSet - MovePrev ();if (m_pSet - IsBOF() MessageBox (记录已经在第一条!);m_pSet - MoveNext ();UpdateData (FALSE);return;UpdateData (FALSE);2) 下一记录 void CMyView:OnButtonnext() /下一条记录/ TODO: Add your control notification handler code herem_pSet - MoveNext ();if (m_pSet - IsEOF() /判断是否到记录尾MessageBox (记录已经在最后一条!);m_pSet - MovePrev ();UpdateData (FALSE);return;UpdateData (FALSE);3) 增加记录 void CMyView:OnButtonaddnew() /增加记录/ TODO: Add your control notification handler code hereUpdateData(TRUE); /更新变量到控件m_pSet-AddNew();/指向增加按钮 ZENGJIA a;a.DoModal();a.m_bianhao=m_pSet-m_bookbh;a.m_fenleihao=m_pSet-m_fnh;a.m_mingcheng=m_pSet-m_bookname;a.m_zuozhe=m_pSet-m_auther;a.m_shoujia=m_pSet-m_price;a.m_chubanshe=m_pSet-m_pubname;a.m_chubandi=m_pSet-m_pubaddress;m_pSet-Update();m_pSet-Requery();MessageBox(添加成功!);m_pSet-Close();4) 删除记录 void CMyView:OnButtondelete() /删除记录/ TODO: Add your control notification handler code herem_pSet - Delete ();m_pSet - MoveNext ();/移动游标到下一条记录if (m_pSet - IsEOF() /判断是否为记录尾m_pSet - MoveLast ();/移动游标到组后一条if (m_pSet - IsEOF () /判断是否为记录头m_pSet - SetFieldNull (NULL);/清空数据区UpdateData (FALSE);/更新变量到控件5) 排序记录void CMyView:OnButtonpdate() m_pSet-Close();m_pSet-m_strSort=图书ID;m_pSet-Open();UpdateData(FALSE);/m_pSet-CancelUpdate();6) 第一条记录 void CMyView:OnButtonfirst() /第一条记录/ TODO: Add your control notification handler code herem_pSet - MoveFirst ();if (m_pSet - IsBOF ()/判断是否到记录头MessageBox (记录已经在第一条!);m_pSet - MoveNext ();UpdateData (FALSE);return;UpdateData (FALSE);/更新变量到控件7) 图书销售 void CMyView:OnRadio1() CMyDlg1 MyDlg1;/进行调用图书销售对话框 MyDlg1.DoModal();8) 图书分类 void CMyView:OnRadio2() / TODO: Add your control notification handler code hereCMyDlg2 MyDlg2;/进行调用图书分类对话框MyDlg2.DoModal();9) 查询记录 void CMyView:OnButtonQuery() UpdateData(); m_query.TrimLeft();if(m_query.IsEmpty()MessageBox(要查询的图书名称不能为空);return;if(m_pSet-IsOpen()m_pSet-Close();/如果记录集打开,则先关闭m_pSet-m_strFilter.Format(图书名称=%s,m_query);/用来指定查询条件m_pSet-m_strSort=图书名称;m_pSet-Open();if(!m_pSet-IsEOF()/如果打开记录集,有记录UpdateData(FALSE);/自动更新表中控件显示的内容else MessageBox(没有找到你要查找的图书!);10) 增加记录的对话框中确定按钮 void CADDDlg:OnOK() CDialog:OnOK(); UpdateData(TRUE);11) 图书销售对话框 / MyDlg1.cpp : implementation file/#include stdafx.h#include 图书出版管理系统.h#include MyDlg1.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CMyDlg1 dialogCMyDlg1:CMyDlg1(CWnd* pParent /*=NULL*/): CDialog(CMyDlg1:IDD, pParent)/AFX_DATA_INIT(CMyDlg1)/ NOTE: the ClassWizard will add member initialization here/AFX_DATA_INITvoid CMyDlg1:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CMyDlg1)/ NOTE: the ClassWizard will add DDX and DDV calls here/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CMyDlg1, CDialog)/AFX_MSG_MAP(CMyDlg1)/ NOTE: the ClassWizard will add message map macros here/AFX_MSG_MAPEND_MESSAGE_MAP()/ CMyDlg1 message handlers12) 图书分类对话框 / MyDlg2.cpp : implementation file/#include stdafx.h#include 图书出版管理系统.h#include MyDlg2.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CMyDlg2 dialogCMyDlg2:CMyDlg2(CWnd* pParent /*=NULL*/): CDialog(CMyDlg2:IDD, pParent)/AFX_DATA_INIT(CMyDlg2)/ NOTE: the ClassWizard will add member initialization here/AFX_DATA_INITvoid CMyDlg2:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CMyDlg2)/ NOTE: the ClassWizard will add DDX and DDV calls here/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CMyDlg2, CDialog)/AFX_MSG_MAP(CMyDlg2)/ NOTE: the ClassWizard will add message map macros here/AFX_MSG_MAPEND_MESSAGE_MAP()/ CMyDlg2 message handlers13) 系统其他进程程序清单/ 图书出版管理系统View.cpp : implementation of the CMyView class/#include stdafx.h /预编译头文件是在编译所有Code之前,首先进行的动作。通过解析这个文件,取得定义的结构和参数。#include 图书出版管理系统.h#include 图书出版管理系统Set.h#include 图书出版管理系统Doc.h#include 图书出版管理系统View.h#include MyDlg1.h#include MyDlg2.h#include MyDlg3.h#include ZENGJIA.h#include MyDlg3.h#ifdef _DEBUG /如果定义啦_DEBUG 就是 在Debug模式下(但定义了一个DEBUG符号)#define new DEBUG_NEW#undef THIS_FILE /取消以前对THIS_FILE的定义 static char THIS_FILE = _FILE_; /声明并初始化THIS_FILEO数组,数据的初始数据为该文件的文件名本文来#endif/ CMyViewIMPLEMENT_DYNCREATE(CMyView, CRecordView) /通过DECLARE_DYNCREATE宏来使用IMPLEMENT_DYNCREATE宏,CMyView为派生类,CRecodView为基类BEGIN_MESSAGE_MAP(CMyView, CRecordView)/AFX_MSG_MAP(CMyView)ON_BN_CLICKED(IDC_BUTTONDELETE, OnButtondelete)ON_BN_CLICKED(IDC_BUTTONUPDATE, OnButtonupdate)ON_BN_CLICKED(IDC_BUTTONORDER, OnButtonorder)ON_BN_CLICKED(IDC_BUTTONFIRST, OnButtonfirst)ON_BN_CLICKED(IDC_BUTTONNEXT, OnButtonnext)ON_BN_CLICKED(IDC_BUTTONPREV, OnButtonprev)ON_BN_CLICKED(IDC_BUTTONLAST, OnButtonlast)ON_BN_CLICKED(IDC_RADIO1, OnRadio1)ON_BN_CLICKED(IDC_RADIO2, OnRadio2)ON_BN_CLICKED(IDC_RADIO3, OnRadio3)ON_BN_CLICKED(IDC_BUTTONADDNEW, OnButtonaddnew)/AFX_MSG_MAP/ Standard printing commandsON_COMMAND(ID_FILE_PRINT, CRecordView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, CRecordView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CRecordView:OnFilePrintPreview)END_MESSAGE_MAP()/ CMyView construction/destructionCMyView:CMyView() /构造函数: CRecordView(CMyView:IDD)/AFX_DATA_INIT(CMyView)m_pSet = NULL;/AFX_DATA_INIT/ TODO: add construction code hereCMyView:CMyView()/析构函数void CMyView:DoDataExchange(CDataExchange* pDX)/实现数据交换CRecordView:DoDataExchange(pDX);/AFX_DATA_MAP(CMyView)DDX_FieldText(pDX, IDC_EDITAUTHER, m_pSet-m_auther, m_pSet);DDX_FieldText(pDX, IDC_EDITBOOKBH, m_pSet-m_bookbh, m_pSet);DDX_FieldText(pDX, IDC_EDITBOOKNAME, m_pSet-m_bookname, m_pSet);DDX_FieldText(pDX, IDC_EDITFNH, m_pSet-m_fnh, m_pSet);DDX_FieldText(pDX, IDC_EDITPRICE, m_pSet-m_price, m_pSet);DDX_FieldText(pDX, IDC_EDITPUBADDRESS, m_pSet-m_pubaddress, m_pSet);DDX_FieldText(pDX, IDC_EDITPUBNAME, m_pSet-m_pubname, m_pSet);/AFX_DATA_MAPBOOL CMyView:PreCreateWindow(CREATESTRUCT& cs) /创建窗体/ TODO: Modify the Window class or styles here by modifying/ the CREAT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 我心中的未来城市想象画想象写物结合类作文12篇范文
- 金融咨询服务协议
- 门面租房协议书合同
- 2022学年上海复旦附中高一(下)期末历史试题及答案
- 2021学年上海华二紫竹高一(下)期中地理试题及答案
- 《中国古代文化史讲座:中华传统文化教育教案》
- 工地无伤赔偿协议书
- 八月装修公司活动方案
- 公交公司为民活动方案
- 公交宣传活动方案
- 《redis讲解》PPT课件
- TOM全面品质管理PPT课件
- 风机基础施工强条执行记录表
- (完整版)澳洲不随行父母同意函
- 模具报价表精简模板
- 客诉处理与应对技巧
- 哈工大桥梁基础与墩台复习总结盛洪飞
- 框架六层中学教学楼工程施工方案
- 浅析Zabbix平台在电力企业信息设备监控中的应用
- 螯合树脂资料
- 电力工程监理规划
评论
0/150
提交评论