课程设计屏幕保护.docx
《课程设计屏幕保护.docx》由会员分享,可在线阅读,更多相关《课程设计屏幕保护.docx(40页珍藏版)》请在冰豆网上搜索。
课程设计屏幕保护
XX大学
课程设计说明书
学生姓名:
学号:
学院:
专业:
题目:
指导教师:
2013年1月11日
1.设计目的:
通过设计,明确通讯录的设计思想和设计过程,扎实掌握VC、C++或C语言编程的整体框架和步骤,使学生具有一定综合分析问题和解决问题的能力。
2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等):
功能说明:
(1)该应用程序能管理通讯录数据库。
(2)可能通过单击工具条上箭头形状的按钮移动当前记录。
(3)可以通过单击相应的按钮实现记录的浏览、更新、添加和删除。
设计要求:
课程设计的目的在于培养学生的综合素质,要求学生做到:
(1)根据题目要求查阅有关资料,确定方案,写出设计方案;
(2)根据对选题的理解,消化查阅资料,给出相关设计的流程图;
(3)在C语言、C++或VC环境下,实现各项功能;
(4)对结果进行分析总结。
3.设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕:
4.设计工作任务:
(1)了解课题背景,掌握基本技术,制定程序设计框架。
(2)完成设计内容:
包括程序流程图和完成实现功能的程序代码,写出设计说明书。
(3)设计答辩。
工作量的要求:
(1)通过查阅资料了解与通讯录相关的知识,理解选题意义;
(2)掌握与通讯录相关的设计思想、原理、设计框架和步骤;
(3)完成通讯录的功能和程序代码的实现;
(4)通过实验验证程序代码的可行性;
(5)给出设计总结。
4.主要参考文献:
严华峰等.VisualC++课程设计案例精编(第一版).北京:
中国水利水电出版社。
中北大学教材:
《c程序设计》,《大学计算机应用基础》。
5.设计成果形式及要求:
程序运行结果;课程设计说明书。
一:
设计目的
通过设计,明确通讯录的设计思想和设计过程,扎实掌握VC、C++或C语言编程的整体框架和步骤,使学生具有一定综合分析问题和解决问题的能力。
二:
设计方案
建立设计流程图
通讯录的设计
建立需求分析
建立数据库系统
添加记录
删除记录
更新记录
浏览记录
信息修改
信息查询功能
退出通讯录数据库
编写程序并编译,建立可行性分析,得出结论
对此次程序进行分析和总结
结束
1:
建立通讯录数据库,利用officeaccess软件建立数据库作为数据源,并命名为accessbook,导入数据。
2:
作好记录,在控制面板上配置ODBC数据源,打开面板中的ODBCdatasource(32bit),
:
在用户DSN建数据源为AccessBook配置作为AccessBook.mdb,则相应数据源配置完毕,如图1-1所示。
1-1图
3:
创立数据源,点击“关于”选项,验证ODBC程序是否更新到罪行版本。
如图1-1所示。
4:
安装数据源,如1-2所示。
并命名为testdatabase,如图1-3.
1-2图
1-3图
5:
选择数据库,如1-4图所示,并选择已有的数据库系统AccessBook,确定好数据库名,点击确定,如1-4图所示。
6:
打开VisualC++6.0环境,并创建工程MFCAppWizard(exe),工程名为C02,如图1-5所示。
点击确定后,选择单个文档,如1-6,选择数据库查看文件支持如图1-7所示。
1-4图
1-5图
1-6图
1-7图
7:
取消选择“ActiveX’’复选框。
取消选择“打印和打印预览”复选框,单击完成按钮。
8:
打开对话框编辑器对话框IDD_C02_FORM,各控件如图1-8所示.
9:
设置如图所示1-9图。
1-8图
1-9图
10:
打开ClassWizard窗口,选择MessageMaps,在classname复选框选择CC02View,在ObjectsIds选择ID_RECORD_FIRST,选择COMMAND选项,单机Addfunction,添加响应函数OnRecordFirst,用同样的方式ID_RECORD_LAST,ID_RECORD_NEXT,ID_RECORD_PREV分别添加响应函数OnRecordLast,OnRecordNext,OnRecordPrev,如图1-10,单击确定。
二:
程序代码分析。
1-10图
定义类CC02的接口,定义有基类Crecordset派生的CC02Set类,并定义函数。
//C02Set.cpp:
implementationoftheCC02Setclass
#include"stdafx.h"
#include"C02.h"
#include"C02Set.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//CC02Setimplementation
IMPLEMENT_DYNAMIC(CC02Set,CRecordset)
CC02Set:
:
CC02Set(CDatabase*pdb)
:
CRecordset(pdb)
{
//{{AFX_FIELD_INIT(CC02Set)
m____ID=0;
m_column1=_T("");
m_column2=_T("");
m_column3=_T("");
m_column4=_T("");
m_nFields=5;
//}}AFX_FIELD_INIT
m_nDefaultType=dynaset;
}
CStringCC02Set:
:
GetDefaultConnect()
{
return_T("ODBC;DSN=AddressBook");
}
CStringCC02Set:
:
GetDefaultSQL()
{
return_T("select*from[通讯录]");
}
voidCC02Set:
:
DoFieldExchange(CFieldExchange*pFX)
{
//{{AFX_FIELD_MAP(CC02Set)
pFX->SetFieldType(CFieldExchange:
:
outputColumn);
RFX_Long(pFX,_T("[通讯录ID]"),m____ID);
RFX_Text(pFX,_T("[姓名]"),m_column1);
RFX_Text(pFX,_T("[分类]"),m_column2);
RFX_Text(pFX,_T("[电子邮件地址]"),m_column3);
RFX_Text(pFX,_T("[联系方式]"),m_column4);
//}}AFX_FIELD_MAP
}
/////////////////////////////////////////////////////////////////////////////
//CC02Setdiagnostics
#ifdef_DEBUG
voidCC02Set:
:
AssertValid()const
{
CRecordset:
:
AssertValid();
}
voidCC02Set:
:
Dump(CDumpContext&dc)const
{
CRecordset:
:
Dump(dc);
}
#endif//_DEBUG
(2)源文件CC02Set.cpp,实现CC02Set类的功能,初始化成员变量和数据库默认连接。
//C02Doc.cpp:
implementationoftheCC02Docclass
#include"stdafx.h"
#include"C02.h"
#include"C02Set.h"
#include"C02Doc.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//CC02Doc
IMPLEMENT_DYNCREATE(CC02Doc,CDocument)
BEGIN_MESSAGE_MAP(CC02Doc,CDocument)
//{{AFX_MSG_MAP(CC02Doc)
//NOTE-theClassWizardwilladdandremovemappingmacroshere.
//DONOTEDITwhatyouseeintheseblocksofgeneratedcode!
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//CC02Docconstruction/destruction
CC02Doc:
:
CC02Doc()
{
//TODO:
addone-timeconstructioncodehere
}
CC02Doc:
:
~CC02Doc()
{
}
BOOLCC02Doc:
:
OnNewDocument()
{
if(!
CDocument:
:
OnNewDocument())
returnFALSE;
//TODO:
addreinitializationcodehere
//(SDIdocumentswillreusethisdocument)
returnTRUE;
}
/////////////////////////////////////////////////////////////////////////////
//CC02Docserialization
voidCC02Doc:
:
Serialize(CArchive&ar)
{
if(ar.IsStoring())
{
//TODO:
addstoringcodehere
}
else
{
//TODO:
addloadingcodehere
}}
/////////////////////////////////////////////////////////////////////////////
//CC02Docdiagnostics
#ifdef_DEBUG
voidCC02Doc:
:
AssertValid()const
{
CDocument:
:
AssertValid();
}
voidCC02Doc:
:
Dump(CDumpContext&dc)const
{
CDocument:
:
Dump(dc);
}
#endif//_DEBUG
/////////////////////////////////////////////////////////////////////////////
//CC02Doccommands
(3)定义CC0View类。
在C02Wiew.h头文件CC0View类的接口,定义由基类CrecordView派生的类CC02View。
//C02View.cpp:
implementationoftheCC02Viewclass
#include"stdafx.h"
#include"C02.h"
#include"C02Set.h"
#include"C02Doc.h"
#include"C02View.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//CC02View
IMPLEMENT_DYNCREATE(CC02View,CRecordView)
BEGIN_MESSAGE_MAP(CC02View,CRecordView)
//{{AFX_MSG_MAP(CC02View)
ON_COMMAND(ID_RECORD_FIRST,OnRecordFirst)
ON_COMMAND(ID_RECORD_LAST,OnRecordLast)
ON_COMMAND(ID_RECORD_NEXT,OnRecordNext)
ON_COMMAND(ID_RECORD_PREV,OnRecordPrev)
ON_BN_CLICKED(IDC_BUTTON_ADD,OnButtonAdd)
ON_BN_CLICKED(IDC_BUTTON_DELETE,OnButtonDelete)
ON_BN_CLICKED(IDC_BUTTON_MODIFY,OnButtonModify)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//CC02Viewconstruction/destruction
CC02View:
:
CC02View()
:
CRecordView(CC02View:
:
IDD)
{
//{{AFX_DATA_INIT(CC02View)
m_pSet=NULL;
m_address=_T("");
m_mail=_T("");
m_name=_T("");
m_type=_T("");
//}}AFX_DATA_INIT
//TODO:
addconstructioncodehere
}
CC02View:
:
~CC02View()
{
}
voidCC02View:
:
DoDataExchange(CDataExchange*pDX)
{
CRecordView:
:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CC02View)
DDX_Text(pDX,IDC_EDIT_ADDRESS,m_address);
DDX_Text(pDX,IDC_EDIT_MAIL,m_mail);
DDX_Text(pDX,IDC_EDIT_NAME,m_name);
DDX_Text(pDX,IDC_EDIT_TYPE,m_type);
//}}AFX_DATA_MAP
}
BOOLCC02View:
:
PreCreateWindow(CREATESTRUCT&cs)
{
//TODO:
ModifytheWindowclassorstylesherebymodifying
//theCREATESTRUCTcs
returnCRecordView:
:
PreCreateWindow(cs);
}
voidCC02View:
:
OnInitialUpdate()
{
m_pSet=&GetDocument()->m_c02Set;
CRecordView:
:
OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
try
{
m_pSet=newCC02Set();
m_pSet->Open();
RefreshData();
}
catch(CDBException*pe)
{
AfxMessageBox(pe->m_strError);
pe->Delete();
}}
/////////////////////////////////////////////////////////////////////////////
//CC02Viewdiagnostics
#ifdef_DEBUG
voidCC02View:
:
AssertValid()const
{
CRecordView:
:
AssertValid();
}
voidCC02View:
:
Dump(CDumpContext&dc)const
{
CRecordView:
:
Dump(dc);
}
CC02Doc*CC02View:
:
GetDocument()//non-debugversionisinline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CC02Doc)));
return(CC02Doc*)m_pDocument;
}
#endif//_DEBUG
/////////////////////////////////////////////////////////////////////////////
//CC02Viewdatabasesupport
CRecordset*CC02View:
:
OnGetRecordset()
{
returnm_pSet;
}
/////////////////////////////////////////////////////////////////////////////
//CC02Viewmessagehandlers
voidCC02View:
:
OnRecordFirst()
{
//TODO:
Addyourcommandhandlercodehere
m_pSet->MoveFirst();
RefreshData();
}
voidCC02View:
:
OnRecordLast()
{
//TODO:
Addyourcommandhandlercodehere
m_pSet->MoveLast();
RefreshData();
}
voidCC02View:
:
OnRecordNext()
{
//TODO:
Addyourcommandhandlercodehere
m_pSet->MoveNext();
RefreshData();
}
voidCC02View:
:
OnRecordPrev()
{
//TODO:
Addyourcommandhandlercodehere
m_pSet->MovePrev();
RefreshData();
}
voidCC02View:
:
OnButtonAdd()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
try
{
m_pSet->AddNew();
UpdateData(TRUE);
m_pSet->m_column1=m_name;
m_pSet->m_column2=m_type;
m_pSet->m_column3=m_address;
m_pSet->m_column4=m_mail;
m_pSet->Update();
m_pSet->Requery();
}
catch(CDBException*pe)
{
AfxMessageBox(pe->m_strError);
pe->Delete();
}}
voidCC02View:
:
OnButtonDelete()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
try
{
m_pSet->Delete();
m_pSet->Requery();
RefreshData();
}
catch(CDBException*pe)
{
AfxMessageBox(pe->m_strError);
pe->Delete();
}}
voidCC02View:
:
OnButtonModify()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
try
{
m_pSet->Edit();
UpdateData(TRUE);
m_pSet->m_column1=m_name;
m_pSet->m_column2=m_type;
m_pSet->m_column3=m_address;
m_pSet->m_column4=m_mail;
m_pSet->Update();
}
catch(CDBException*pe)
{
AfxMessageBox(pe->m_strError);
pe->Delete();
}}
voidCC02View:
:
RefreshData()
{
m_name=m_pSet->m_column1;
m_type=m_pSet->m_column2;
m_address=m_pSet->m_column3;
m_mail=m_pSet->m_column4;
UpdateData(FALSE);
}
(4)mainfirm函数。
//CMainFramemessagehandlers
//MainFrm.cpp:
implementationoftheCMainFrameclass
#include"stdafx.h"
#include"C02.h"
#include"MainFrm.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//CMa