vc课设报告.docx
- 文档编号:16728443
- 上传时间:2023-07-16
- 格式:DOCX
- 页数:13
- 大小:159.11KB
vc课设报告.docx
《vc课设报告.docx》由会员分享,可在线阅读,更多相关《vc课设报告.docx(13页珍藏版)》请在冰点文库上搜索。
vc课设报告
VC++课程设计报告
一、课程设计的目的和要求:
1、计算机科学与技术专业所开设的windows课程设计是教学实践环节中一项重要内容,进行此课程设计的旨在:
提高和加强学生的计算机应用与软件开发能力,使生由初学者向专业的程序员过渡。
培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应计算机产业日新月异发展的形势。
学习和掌握windows程序设计方法以及上机调试技巧,为今后学习其它专业课程打好基础。
本次课程设计是以学生独立思考解决问题为主,教师指导为辅,结合上机操作,完成指定的任务,作出设计报告。
2、本课设题目及意义
1、在现代社会中,我们会接触到很多的人,会和很多人联系。
亲人,同学,朋友,老师,同事等等……他们的联系方式会很难记忆,尤其是各种通讯方式和手段高度发达的今天,手机,qq邮箱,工作单位,等基本信息量大大增加。
通讯方式的多样性尤其增加儿了记忆的难度。
所以通讯录便在这种情况下在人们的日常生活中发挥着中要作用。
2、通讯录得功能如下:
向前或向后浏览通讯录信息
增加、修改和删除通讯录信息
通过文件导入到出通讯录信息
二、系统功能设计
通讯录的功能要求中要用到对数据信息的操作:
将通讯录得数据以某种形式存放,当需要时,可以通过载入来恢复数据。
目前数据存放主要有两种形式:
文件和数据库。
两种方式各有特色:
文件建档,容易操作,但安全性不高。
数据库相对来说操作及运行较为复杂,但安全性较高,较大型的信息管理系统一般都适用于这种数据存放方式。
本通讯录是基于单文档的采用文件的应用程序。
文档/视图结构是MFC中专门用于开发基于文档的应用程序的框架,在这个框架中,数据的维护及显示分别是由两个不同又彼此紧密相关的对象——文档和视图负责的。
另外,本程序的一大特色就是通过屏蔽当前无效的界面和信息提示来实现的了减少使用者的错误操作,提高了程序的可实用性。
三、文本档和视图及数据联系概况说明
MFC应用程序中,文档视图结构用来将数据本身与数据的显示以及用户对数据的相互处理互相隔离。
在这种模式中,文档负责管理和维护数据,如从磁盘中取出数据或是将修改的数据存入磁盘中。
而视图类则负责从文档类中将文档的数据取出来显示给用户,并接受用户的修改,然后将修改的结果反馈给文档类,由文档类将修改保存磁盘文件中。
视图和文档类的交互是通过文档类的公共成员变量或成员函数来实现的。
四、文档/视图结构示意图和文档的示意图
文档/视图结构示意图和文档的创建示意图
五、单文档主界面控件添加设计
六、程序开发主要步骤
1、首先定义一个新类CPerson
在CPerson类头文件中定义相关变量(代表人员信息),在CPerson类cpp文件中初始化人员信息。
2、定义文档类数据成员变量m_PresonList
3、初始化文档类成员
4、定义视图类其他数据成员
5,、初始化视图类的数据成员
6、建立文档类和视图类数据成员之间的联系(重要环节)
7、编写命令按钮执行代码(重要环节)
8、释放链表对象空间
9、编写读写列表头文件
七、部分程序执行效果演示
初始效果演示:
添加完毕之后效果:
注意此时只有“继续添加”和“添加完毕”两个按钮可用,其余均不可用,
浏览页面
此时按钮均可用
修改记录也只有按钮“向前浏览”和“向后浏览”可用
关闭程序后文件存在桌面
打开此时保存在桌面的文件效果如图,并且原始记录数据依然保留,也已可以继续添加
八、调试、问题解决及心得体会
在最初接触VC++时觉得很迷茫,一头雾水,怎么是这样啊,自己都什么也没写啊,居然就有了这么多的代码啊,而且都看不懂,心里很怵。
后来通过练习知道了,慢慢懂了一些它的机制就觉得它没有那么可怕了,但是真正自己来做一个比较大的程序,要在它的平台下完成一些自己的设想还是有难度的,因为很多函数之前都没有接触过,虽然上网查了,但是还是在用的过程中共出现了这样那样的问题,比如说没弄清函数的返回值啊,没有注意这个函数是VC++哪个基类的成员函数啊……
不过还好,在自己上网搜索之后,在请教了班里学得好的同学之后,还有请教了大三的学长们。
很多问题终于得到了解决。
通过课设认识到了自己的不足,但也有收获,明白了什么东西都得自己亲自动手才算自己真正学了,会用,才算是学会了。
对自己的目标和要求是以后多练,多找找有难度的题目使自己的技术得到迅速提高。
感谢老师给我们了这次课设的机会,并对我们在课设中遇到问题悉心指导,也要感谢课设过程中共给我帮助的同学们。
九、部分关键代码实现分析
初始化视图类的数据成员
voidCAddressBookView:
:
OnInitialUpdate()
{
CFormView:
:
OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
CAddressBookDoc*pDoc=GetDocument();//获得文档类指针
m_PersonViewList=&(pDoc->m_PersonList);//视图类指针指向文档类对象
m_Position=m_PersonViewList->GetHeadPosition();//获得头结点位置
CPerson*pListDoc=(CPerson*)m_PersonViewList->GetAt(m_Position);//获得头一个数据
m_strName=pListDoc->m_Name;
m_strPhone=pListDoc->m_Phone;
m_strCompany=pListDoc->m_Company;
m_strEmail=pListDoc->m_Email;//将表头结点数据赋给视图类成员变量
UpdateData(false);//刷新窗口
((CDialog*)this)->GotoDlgCtrl(GetDlgItem(IDC_EDIT_NAME));//将光标停在姓名编辑框
例如,为姓名编辑框添加消息映射函数
voidCAddressBookView:
:
OnChangeEditName()
{
UpdateData(true);//界面的值传递到变量
CAddressBookDoc*pDoc=GetDocument();//获得文档类指针
CPerson*pListDoc=(CPerson*)m_PersonViewList->GetAt(m_Position);//获得当前结点
pListDoc->m_Name=m_strName;//将更改过的姓名添加到结点
pDoc->SetModifiedFlag();//设置文档数据被修改标志
}
添加记录消息映射函数
voidCAddressBookView:
:
OnButtonAdd()
{
m_strName="";
m_strPhone="";
m_strCompany="";
m_strEmail="";//清空编辑框
UpdateData(false);//刷新界面
CPerson*pListDoc=newCPerson();
m_Position=m_PersonViewList->AddTail(pListDoc);
//新建空人员信息添加至链表,并将当前位置移至该处
CAddressBookDoc*pDoc=GetDocument();//获得文档指针
pDoc->SetModifiedFlag();//设置文档被修改标置
og*)this)->GotoDlgCtrl(GetDlgItem(IDC_EDIT_NAME));//姓名编辑框获得焦点
}
向后浏览按钮
voidCAddressBookView:
:
OnButtonNext()
{
POSITIONm_templeposition;//定义一个临时位置指针
m_templeposition=m_Position;//并使其指向当前结点的前驱结点
m_PersonViewList->GetNext(m_templeposition);//获得当前结点位置的后一个
if(m_templeposition==NULL)
{//若到链表尾结点
AfxMessageBox(_T("已到表尾!
"));
}
else
{
m_Position=m_templeposition;//当前指针定位到后一个
CPerson*pListDoc=(CPerson*)m_PersonViewList->GetAt(m_Position);
//获得前一个人员的信息
m_strName=pListDoc->m_Name;
m_strPhone=pListDoc->m_Phone;
m_strCompany=pListDoc->m_Company;
m_strEmail=pListDoc->m_Email;//赋值给视图类数据成员
UpdateData(false);//刷新窗口
}
编写读写列表文件代码
为类添加串行化代码宏
classCPerson:
publicCObject
{
public:
DECLARE_SERIAL(CPerson)//对类进行串行化宏定义
CPerson();
virtual~CPerson();
CStringm_Name;//姓名
CStringm_Phone;//电话
CStringm_Company;//公司
CStringm_Email;//Email
}
#include"stdafx.h"
#include"AddressBook.h"
#include"Person.h"
#ifdef_DEBUG
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#definenewDEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
//Construction/Destruction
//////////////////////////////////////////////////////////////////////
IMPLEMENT_SERIAL(CPerson,CObject,0)
CPerson:
:
CPerson()
{
//初始化人员信息(m_Name,m_Phone,m_Company,m_Email)
m_Name="";//姓名
m_Phone="";//电话
m_Company="";//公司
m_Email="";//Email
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vc 报告