C++课设图书出版管理系统.docx
- 文档编号:16656110
- 上传时间:2023-07-16
- 格式:DOCX
- 页数:25
- 大小:308.63KB
C++课设图书出版管理系统.docx
《C++课设图书出版管理系统.docx》由会员分享,可在线阅读,更多相关《C++课设图书出版管理系统.docx(25页珍藏版)》请在冰点文库上搜索。
C++课设图书出版管理系统
青岛理工大学
C++面向对象课程设计报告
院(系):
计算机工程学院
专业:
学生姓名:
班级:
学号:
题目:
图书出版管理系统
起迄日期:
设计地点:
计算机学院机房
指导教师:
完成日期:
2014年7月4日
目录
一、需求分析1
1.1系统设计的目的1
1.2系统功能设计1
二、设计内容1
2.1系统模块图1
2.1.1系统整体功能模块图1
2.1.2图书信息管理子模块1
2.1.3图书信息查询子模块2
2.2主程序及其主要模块的流程图3
2.2.1主程序流程图3
2.2.2图书信息管理流程图3
2.2.3增加图书记录的流程图4
2.2.4删除图书记录的流程图5
2.2.5按条形码查找图书销售信息流程图6
2.3编写程序代码6
三、调试分析8
3.1实际完成的情况说明8
3.2程序的性能分析8
3.3上机过程中出现的问题及其解决方案9
3.4程序中可以改进的地方说明9
3.5程序中可以扩充的功能及设计实现构想10
四、用户手册10
五、设计总结12
六、参考文献13
七、附录13
一、需求分析
1.1系统设计的目的
用VC++制作一个图书出版管理系统,它可以基本实现图书出版管理的大部分功能,通过计算机轻松地实现对图书出版信息的管理,节省大量的人力物力。
本系统采用DAO数据源创建方法。
在以DAO方式创建数据环境时,实现了数据源的引入和应用程序的制作。
在程序中我们利用了消息函数,并自己创建了一组数据记录导航程序和数据修改程序,程序利用了简单的消息映射过程代码,实现了对数据集的导航、浏览、增加和删除的功能。
1.2系统功能设计
图书出版管理系统除具有一般系统的数据处理功能,如数据录入、增加、修改、删除等,另外,还将涉及多个对话框及对话框之间的相互切换。
二、设计内容
2.1系统模块图
2.1.1系统整体功能模块图
如图所示,为系统整体功能模块图,该系统分为2大子系统,分别为图书信息管理子系统,图书信息查询子系统。
图2-1系统整体功能模块图
2.1.2图书信息管理子模块
在图书信息管理子系统中,其功能概述如下:
(1)添加图书信息,便于管理书籍
(2)删除图书信息,便于管理书籍
(3)查看图书信息,便于了解书籍基本情况
其功能细化图如下:
图2-2图书信息管理系统功能模块图
2.1.3图书信息查询子模块
在图书信息查询子系统中,其功能概述如下:
(1)查询图书类别信息,便于查看图书种类
(2)查询图书销售信息,便于了解图书销售情况
其功能细化图如下:
图2-3图书信息查询系统功能模块图
2.2主程序及其主要模块的流程图
2.2.1主程序流程图
图2-4主程序流程图
2.2.2图书信息管理流程图
图2-5图书信息管理流程图
2.2.3增加图书记录的流程图
图2-6增加图书记录的流程图
2.2.4删除图书记录的流程图
图2-7删除图书记录的流程图
2.2.5按条形码查找图书销售信息流程图
图2-6按条形码查找图书销售信息流程图
2.3编写程序代码
(1)“增加记录”命令按钮的过程代码如下所示:
voidCMyView:
:
OnBUTTONadd()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
m_pSet->AddNew();
UpdateData(FALSE);
}
(2)“删除记录”命令按钮的过程代码如下所示:
voidCMyView:
:
OnBUTTONdelete()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
m_pSet->Delete();
m_pSet->MoveNext();
if(m_pSet->IsEOF())
m_pSet->MoveLast();
if(m_pSet->IsEOF())
m_pSet->SetFieldNull(NULL);
UpdateData(FALSE);
}
(3)“刷新记录”命令按钮的过程代码如下所示:
voidCMyView:
:
OnBUTTONnew()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData();
m_pSet->Update();
m_pSet->Requery();
m_pSet->CancelUpdate();
}
(4)“下一条”命令按钮的过程代码如下所示:
voidCMyView:
:
OnBUTTONnext()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
m_pSet->MoveNext();
if(m_pSet->IsEOF())
{
MessageBox("已经是最后一条!
");
m_pSet->MovePrev();
UpdateData(FALSE);
return;
}
UpdateData(FALSE);
//m_pSet->MoveNext();
//RefreshData();
}
(5)“上一条”命令按钮的过程代码如下所示:
voidCMyView:
:
OnBUTTONfront()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
m_pSet->MovePrev();
if(m_pSet->IsEOF())
{
MessageBox("已经是第一条了!
");
m_pSet->MoveNext();
UpdateData(FALSE);
return;
}
UpdateData(FALSE);
}
(6)为选项按钮“图书销售”编制过程代码,该过程用于调用对话框IDD_DIALOG1;其代码如下所示:
voidCMyView:
:
OnRadio1()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
CMyDlg1MyDlg1;
MyDlg1.DoModal();
}
(7)为选项按钮“图书分类”编制过程代码,该过程用于调用对话框IDD_DIALOG1;其代码如下所示:
voidCMyView:
:
OnRadio2()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
CMyDlg2MyDlg2;
MyDlg2.DoModal();
}
三、调试分析
3.1实际完成的情况说明
能实现数据录入、增加、修改、删除、刷新操作,以及图书销售信息查询、图书分类信息查询。
这些功能均是以按钮形式单击触发事件实现。
以及图书基本信息的显示。
3.2程序的性能分析
本程序包含8个.cpp文件和9个.h头文件,在编译过程中须链接这些文件,花费较多时间及占用较多空间。
其次是与数据库的连接,因为本程序的数据库里有3个数据表,连接时均要花费时间。
3.3上机过程中出现的问题及其解决方案
(1)数据库与程序的连接。
由于本身对数据库的接触不多,导致在连接数据库这一块出现一些问题。
但通过上网查询这一方面的知识及询问老师,得到了解决。
(2)ActiveX控件的使用。
在实现查询功能时,需使用MicrosoftADODataControl,Version6.0控件和MicrosoftDataGridControl,Verison6.0控件。
由于自身笔记本电脑的配置较低,没有这些控件,导致只能在机房电脑完成这些功能。
(3)数据库连接过程中,由于使用的是包含3个数据表的数据库,而在连接数据库时,没有明确指定连接哪个数据表,导致主界面的增加、删除、刷新功能均出现“记录集是只读!
”的错误提醒。
(4)在编译过程中出现如下图错误,通过查阅资料得到解决。
3.4程序中可以改进的地方说明
(1)界面的美化。
界面可以再添加一些背景颜色、图片,按钮的布局可以再人性化、合理化。
(2)功能的完善。
增加、删除按钮可以对数据库里的3个数据表都进行操作。
3.5程序中可以扩充的功能及设计实现构想
(1)添加登录名、登陆密码功能;
(2)可以添加按条件搜索、树状查询等功能。
(3)为每个按钮添加帮助,当鼠标轻触该按钮时,能显示对该按钮功能的解释。
四、用户手册
1.本程序的开发环境是windowsXP系统,使用的平台为VC6开发平台,无需下载安装。
2.具体操作步骤:
打开带有MFC字样的图标的运用程序:
(1)连接数据库:
找到数据库的位置点击确定。
(2)出现系统主页面。
(3)用鼠标点击“增加记录”,就可以给数据库进行记录增加,然后“刷新纪录”。
用鼠标点击“删除记录”,就可以删除记录,然后“刷新纪录”。
注意:
“删除记录”只有在“增加记录”和“删除记录”之后使用。
(4)用鼠标点击“下一条”,“上一条”可以进行对数据库记录的查找浏览。
(5)选中“图书销售”,会弹出下面界面:
在此界面可以实现对销售情况的及时处理实现记录功能。
点击“确定”回到主系统界面。
(6)选中“图书分类”,会弹出下面界面:
在此界面可以实现对图书分类数据库修改的功能。
点击“确定”回到主系统界面。
五、设计总结
本次课程设计中我负责编写图书出版管理系统中的图书信息查询系统,为整个小组最终完成图书出版管理系统做出了一定的贡献。
通过本次的图书馆管理系统中的图书管理系统课程设计中学到了很多的东西,从一开始对MFC的不了解到慢慢熟练,本设计涵盖MFC和数据库二大部分的知识。
通过这个设计,不但使我学到了很多新的知识。
更重要的是在实际设计过程中使我对软件开发的过程有了更深的了解。
在设计的编码过程中主要用到了MFC编程和数据库两大部分的知识。
在此之前,我对MFC编程和数据库不是很熟悉。
在MFC部分编码的时候,我遇到的主要困难是数据库与MFC程序的连接以及如何为主页面中的变量添加与数据库的连接。
为此我查看了很多关于MFC编程的书,在解决问题的过程中,对MFC和数据库有了更深的了解。
对数据库部分主要使用了数据定义和数据操作两部分,数据定义用到了创建数据库,创建数据表的操作。
数据操作用到了数据插入和数据查询。
在查询方面主要使用的是ActiveX控件,如MicrosoftADODataControl,Version6.0控件和MicrosoftDataGridControl,Verison6.0控件。
通过本次课程设计,学会了用MFC制作数据库管理系统,也学会了如何将实际需求通过分析、设计转化为可以通过计算机操作来解决需求。
C++是一门面向对象的编程语言,在实际操作中有很大的便利性和实用性。
在课程设计中确实遇到了一些比较棘手的问题,比如在上面提到过的在数据库的链接过程中遇到的问题,以及在主界面对话框创建过程中遇到的问题,通过参考一些资料和相互请教也都得到了满意的答案。
其中,最关键的是在最初对系统的需求分析做的不够透彻,导致后续工作乃至编码时的修改工作量变大。
这让我花了很多时间考虑,越接近结束,就越是时常出现问题。
让我深刻的感受到知识的欠缺。
最后我们小组成功的设计整合出了完整的图书出版管理系统,这同时也让我体会到一个团体的重要性。
只有我们大家一起相互协作,才能完美的完成一项复杂的任务。
所以,这次的课程设计不仅仅是学到了知识,更是体会到了很多学习生活心得。
六、参考文献
1.郑莉.C++语言程序设计(第3版).北京:
清华大学出版社,2005.7
2.钱能.C++程序设计教程(第2版).北京:
清华大学出版社,2005.8
3.黄维通.VisualC++面向对象与可视化程序设计(第2版).北京:
清华大学出版社,2003.12
7、附录
#include"stdafx.h"
#include"图书出版管理系统.h"
#include"图书出版管理系统Set.h"
#include"图书出版管理系统Doc.h"
#include"图书出版管理系统View.h"
//新类的开始声明
#include"MyDlg1.h"
#include"MyDlg2.h"
//类的声明结束
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//CMyView
IMPLEMENT_DYNCREATE(CMyView,CRecordView)
//选项按钮的ID与标题的对应
BEGIN_MESSAGE_MAP(CMyView,CRecordView)
//{{AFX_MSG_MAP(CMyView)
ON_BN_CLICKED(IDC_BUTTONadd,OnBUTTONadd)
ON_BN_CLICKED(IDC_BUTTONdelete,OnBUTTONdelete)
ON_BN_CLICKED(IDC_BUTTONnew,OnBUTTONnew)
ON_BN_CLICKED(IDC_BUTTONnext,OnBUTTONnext)
ON_BN_CLICKED(IDC_BUTTONfront,OnBUTTONfront)
ON_BN_CLICKED(IDC_RADIO1,OnRadio1)
ON_BN_CLICKED(IDC_RADIO2,OnRadio2)
//}}AFX_MSG_MAP
//Standardprintingcommands
ON_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()
/////////////////////////////////////////////////////////////////////////////
//CMyViewconstruction/destruction
CMyView:
:
CMyView()
:
CRecordView(CMyView:
:
IDD)
{
//{{AFX_DATA_INIT(CMyView)
m_pSet=NULL;
//}}AFX_DATA_INIT
//TODO:
addconstructioncodehere
}
CMyView:
:
~CMyView()
{
}
voidCMyView:
:
DoDataExchange(CDataExchange*pDX)
{
CRecordView:
:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMyView)
DDX_FieldText(pDX,IDC_EDITbookID,m_pSet->m_bookID,m_pSet);
DDX_FieldText(pDX,IDC_EDITauthor,m_pSet->m_author,m_pSet);
DDX_FieldText(pDX,IDC_EDITbookname,m_pSet->m_bookname,m_pSet);
DDX_FieldText(pDX,IDC_EDITprice,m_pSet->m_price,m_pSet);
DDX_FieldText(pDX,IDC_EDITpublish,m_pSet->m_publish,m_pSet);
DDX_FieldText(pDX,IDC_EDITtypeID,m_pSet->m_typeID2,m_pSet);
DDX_FieldText(pDX,IDC_EDITISBN,m_pSet->m_ISBN,m_pSet);
//}}AFX_DATA_MAP
}
BOOLCMyView:
:
PreCreateWindow(CREATESTRUCT&cs)
{
//TODO:
ModifytheWindowclassorstylesherebymodifying
//theCREATESTRUCTcs
returnCRecordView:
:
PreCreateWindow(cs);
}
voidCMyView:
:
OnInitialUpdate()
{
m_pSet=&GetDocument()->m_mySet;
CRecordView:
:
OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
}
/////////////////////////////////////////////////////////////////////////////
//CMyViewprinting
BOOLCMyView:
:
OnPreparePrinting(CPrintInfo*pInfo)
{
//defaultpreparation
returnDoPreparePrinting(pInfo);
}
voidCMyView:
:
OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)
{
//TODO:
addextrainitializationbeforeprinting
}
voidCMyView:
:
OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)
{
//TODO:
addcleanupafterprinting
}
/////////////////////////////////////////////////////////////////////////////
//CMyViewdiagnostics
#ifdef_DEBUG
voidCMyView:
:
AssertValid()const
{
CRecordView:
:
AssertValid();
}
voidCMyView:
:
Dump(CDumpContext&dc)const
{
CRecordView:
:
Dump(dc);
}
CMyDoc*CMyView:
:
GetDocument()//non-debugversionisinline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyDoc)));
return(CMyDoc*)m_pDocument;
}
#endif//_DEBUG
/////////////////////////////////////////////////////////////////////////////
//CMyViewdatabasesupport
CRecordset*CMyView:
:
OnGetRecordset()
{
returnm_pSet;
}
/////////////////////////////////////////////////////////////////////////////
//CMyViewmessagehandlers
voidCMyView:
:
OnBUTTONadd()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
m_pSet->AddNew();
UpdateData(FALSE);
}
voidCMyView:
:
OnBUTTONdelete()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
m_pSet->Delete();
m_pSet->MoveNext();
if(m_pSet->IsEOF())
m_pSet->MoveLast();
if(m_pSet->IsEOF())
m_pSet->SetFieldNull(NULL);
UpdateData(FALSE);
}
voidCMyView:
:
OnBUTTONnew()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData();
m_pSet->Update();
m_pSet->Requery();
m_pSet->CancelUpdate();
}
voidCMyView:
:
OnBUTTONnext()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
m_pSet->MoveNext();
if(m_pSet->IsEOF())
{
MessageBox("已经是最后一条!
");
m_pSet->MovePrev();
UpdateData(FALSE);
return;
}
UpdateData(FALSE);
//m_pSet->MoveNext();
//RefreshData();
}
voidCMyView:
:
OnBUTTONfront()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
m_pSet->MovePrev();
if(m_pSet->IsEOF())
{
MessageBox("已经是第一条了!
");
m_pSet->MoveNext();
UpdateData(FALSE);
return;
}
UpdateData(FALSE);
}
voidCMyView:
:
OnRadio1()
{
//TODO:
Addyourcontrolnotific
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 图书 出版 管理 系统