c++面对对象课程设计报告通讯应用程序.docx

上传人:b****7 文档编号:11423541 上传时间:2023-03-01 格式:DOCX 页数:30 大小:738.11KB
下载 相关 举报
c++面对对象课程设计报告通讯应用程序.docx_第1页
第1页 / 共30页
c++面对对象课程设计报告通讯应用程序.docx_第2页
第2页 / 共30页
c++面对对象课程设计报告通讯应用程序.docx_第3页
第3页 / 共30页
c++面对对象课程设计报告通讯应用程序.docx_第4页
第4页 / 共30页
c++面对对象课程设计报告通讯应用程序.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

c++面对对象课程设计报告通讯应用程序.docx

《c++面对对象课程设计报告通讯应用程序.docx》由会员分享,可在线阅读,更多相关《c++面对对象课程设计报告通讯应用程序.docx(30页珍藏版)》请在冰豆网上搜索。

c++面对对象课程设计报告通讯应用程序.docx

c++面对对象课程设计报告通讯应用程序

《面向对象课程设计》

报告

 

 

设计(论文)题目:

通讯录应用程序

学院名称:

电子与信息工程学院

专业:

计算机科学与技术

班级:

计科11-4班

姓名:

薛祥清

学号:

11401010410

指导教师:

周林华

2012年9月17日

通讯录应用程序

目录

1、目标与要求………………………………………………………<2>

2、程序操作要求及说明……………………………………………<2>

2.1按钮要求………………………………………………………<2>

2.2输入要求………………………………………………………<2>

3、程序设计分析………………………………………………………<2>

3.1程序框架流程图………………………………………………<3>

3.2设计思路………………………………………………………<3>

3.3类声明与主要算法实现代码………………………………………<4>

4、实现步骤……………………………………………………………<6>

4.1程序项目创建…………………………………………………<7>

4.2界面及控件设计………………………………………………<8>

4.3按钮及编辑框属性……………………………………………<9>

4.4编辑框绑定变量………………………………………………<9>

5、程序模块设计代码与调试…………………………………………<10>

5.1浏览……………………………………………………………<10>

5.2添加……………………………………………………………<12>

5.3修改……………………………………………………………<13>

5.4保存……………………………………………………………<13>

5.5删除……………………………………………………………<18>

5.6▲、▼…………………………………………………………<20>

六、课程设计总结………………………………………………………<21>

 

目标与要求:

写通讯录应用程序

要求:

(1)能够实现通讯录中数据的浏览、删除和添加以及修能。

(2)利用文件存储通讯录中的数据。

程序操作要求:

2.1按钮:

程序共有七个操作按钮:

【浏览】、【添加】、【修改】、【保存】、【删除】、【▲】(上一页)、【▼】(下一页)。

操作需遵守以下规则:

1、先点击按钮【浏览】,再进行其他操作。

2、进行添加、修改时候输入结束后必须点击【保存】进行联系人的信息保存,否则会造成添加、修改信息丢失。

2.2输入:

该程序输入部分包括姓名、电话号码、邮箱地址、现住地址(其中包括省份、城市、街道)、所属群组。

输入要求:

1、姓名、所属群组输入可以使任意字符。

2、现住地址包括三部分从左到右为:

省份、城市、街道。

3、电话号码栏只能输入数字,输入其他字符程序会提示输入错误。

4、邮箱地址输入包括字母、数字、符号【@】和【.】,输入其他时程序会提醒输入错误。

程序设计分析:

3.1程序框架流程图:

 

 

3.2设计思路:

如上流程图所示为该程序的使用流程。

打开通讯录程序点击浏览,利用fstream类读取文件中联系人的个数,赋予m_total在编辑框里显示。

再利用CFile类读取文件联系人具体信息,并写入双向队列dequep中。

并显示队列中第一个元素。

接下来可分为五种操作:

1.[▲]:

将队尾的元素加入队列头部,删除队尾元素,并显示第一个元素。

2.[▼]:

将队首的元素加入队列尾部,删除队首元素,并显示第一个元素。

3.[添加]:

点击浏览按编辑框里的提示输入联系人的具体信息。

4.[修改]:

点击修改跳出提示对话框,关闭后进行修改。

5.[保存]:

修改和添加后的操作,先判断输入有没错误,再将队列的元素个数写进文件中,再进行循环的联系人信息保存:

将队首元素写进文件,再将队首元素添到队尾,最后删除队首元素。

6.[删除]:

删除队首元素后进行文件的保存。

3.3类声明与主要算法实现代码:

//街道类------------------------------------------------------

classsite

{

private:

CStringsheng;

CStringshi;

CStringstreet;

public:

voidgetsite(CStringsheng,CStringshi,CStringstreet);

~site(){}

CStringshowsheng();

CStringshowshi();

CStringshowstreet();

};

voidsite:

:

getsite(CStringshe,CStringsh,CStringstr)//构造函数

{

sheng=she;

shi=sh;

street=str;

};

CStringsite:

:

showsheng()

{

returnsheng;

};

CStringsite:

:

showshi()

{

returnshi;

};

CStringsite:

:

showstreet()

{

returnstreet;

};

//信息类继承街道类--------------------------------------

classpeople:

publicsite

{

private:

CStringname;

CStringnum;

CStringemail;

CStringzhu;

public:

people(CStringna,CStringnu,CStringem,CStringshe,CStringsh,CStringstr,CStringzh);

CStringshowname();

CStringshownum();

CStringshowemail();

CStringshowzhu();

~people(){}

};

people:

:

people(CStringna,CStringnu,CStringem,CStringshe,CStringsh,CStringstr,CStringzh)//构造函数

{

getsite(she,sh,str);

name=na;

num=nu;

email=em;

zhu=zh;

};

CStringpeople:

:

showname()

{

returnname;

};

CStringpeople:

:

shownum()

{

returnnum;

};

CStringpeople:

:

showemail()

{

returnemail;

};

CStringpeople:

:

showzhu()

{

returnzhu;

};

实现步骤:

4.1程序项目创建:

打开MicrosofVisualC++6.0,在文件中点击新建,在弹出框内选择MFCAppWizard[exe]工程,输入工程名:

通讯录及保存位置,点击确定,如下图。

将弹出的对话框MFCAppWizard-step1对话框,选择基本对话框,点击完成,如下图。

这样,MFCAppWizard就建立了一个基本对话窗口的程序框架,如下图。

4.2界面及控件设计:

按钮:

以按钮【浏览】为例:

点击控件上图标

在对话框的合适位置制作一个按钮,并将按钮的标题改为(浏览)。

双击按钮就可以进行后台代码的编写。

其他按钮均可以按这种方法制作。

编辑框:

以【姓名】编辑框为例:

点击控件上图标

在对话框的合适位置制作一个编辑框,然后绑定变量:

右击—建立类向导—MemberVariables—AddVariable…—输入变量名,选好变量类型—OK。

提示对话框:

右击工作区间

—插入Dialog—弹出新建的对话框—双击新建对话框—OK—输入类名aa—OK—确定。

主对话框跳转到提示对话框代码:

类名变量名;

变量名.DoModal();

界面及控件完成后如图所示:

4.3按钮及编辑框属性:

对象

ID

标题或说明

编辑框

IDC_EDIT1

姓名

编辑框

IDC_EDIT2

电话号码

编辑框

IDC_EDIT3

邮箱地址

编辑框

IDC_EDIT4

住址省份

编辑框

IDC_EDIT5

群组

编辑框

IDC_EDIT6

人数

编辑框

IDC_EDIT7

城市

编辑框

IDC_EDIT8

街道

按钮

IDC_BUTTON1

浏览

按钮

IDC_BUTTON2

添加

按钮

IDC_BUTTON3

修改

按钮

IDC_BUTTON4

保存

按钮

IDC_BUTTON5

删除

按钮

IDC_BUTTON6

按钮

IDC_BUTTON7

4.4编辑框绑定变量:

程序模块设计代码与调试:

5.1浏览:

//按钮“浏览”将文件中的信息读取到队列中,并显示队列头一个类的信息

voidCMyDlg:

:

OnButton1()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

UpdateData(true);

ifstreammy("data.txt",ios_base:

:

in);

inttt;

my.read(reinterpret_cast(&tt),sizeof(int));

my.close();

while(!

p.empty())p.pop_front();

CFilemFile;

TCHAR*pszFileName=_T("date.txt");

mFile.Open(pszFileName,CFile:

:

modeRead);

CArchivear(&mFile,CArchive:

:

load);

for(inti=0;i

{

ar>>a.name>>a.num>>a.email>>a.sheng>>a.shi>>a.street>>a.zhu;

peopleaa(a.name,a.num,a.email,a.sheng,a.shi,a.street,a.zhu);

p.push_front(aa);

}

ar.Close();

mFile.Close();

m_total=tt;

//如果文件中没有存入任何信息则显示“无”-------------------

if(tt==0)

{

wuxinxiassa;

assa.DoModal();

m_name="无";

m_num="无";

m_email="无";

m_add="无";

m_add1="无";

m_add2="无";

m_zhu="无";

}

else

{

m_name=p.front().showname();

m_num=p.front().shownum();

m_email=p.front().showemail();

m_add=p.front().showsheng();

m_add1=p.front().showshi();

m_add2=p.front().showstreet();

m_zhu=p.front().showzhu();

}

UpdateData(false);

}

5.2添加:

//按钮“添加”,输出提示文字---------------------------------------

inttian=0;

voidCMyDlg:

:

OnButton2()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

UpdateData(true);

tian=1;

m_name="姓名";

m_num="电话号码";

m_email="邮箱地址";

m_add="省/直辖市/自治区";

m_add1="城市";

m_add2="街道";

m_zhu="分类";

UpdateData(false);

}

5.3修改:

//按钮“修改”,跳出一个对话框提示“修改”---------------------------

voidCMyDlg:

:

OnButton3()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

xiugaisa;

sa.DoModal();

}

5.4保存:

//按钮“保存”添加、修改后都要进行保存,进行文件的写入------------------

voidCMyDlg:

:

OnButton4()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

UpdateData(true);

//检查添加、修改后的电话号码、邮箱地址格式有没错误。

(电话只允许数字、邮箱可以有字母,数字“@”和“.”)---------

intff=0,gg=0;

for(intii=0;ii

{

if(m_num[ii]<'0'||m_num[ii]>'9')

{

ff=1;

break;

}

}

for(intiii=0;iii

{

if((m_email[iii]>='0'&&m_email[iii]<='9')||(m_email[iii]>='A'&&m_email[iii]<='Z')||(m_email[iii]>='a'&&m_email[iii]<='z')||(m_email[iii]=='@')||(m_email[iii]=='.'))

{

}

else

{

gg=1;

break;

}

}

//输入电话号码邮箱格式错误时跳出对话框提示--------------------------

if(ff==1&&gg==0)

{

npeopledlg;

dlg.DoModal();

}

elseif(gg==1&&ff==0)

{

xemaildaa;

daa.DoModal();

}

elseif(ff==1&&gg==1)

{

xnumemailddd;

ddd.DoModal();

}

if(tian==1)

{

peopleaa(m_name,m_num,m_email,m_add,m_add1,m_add2,m_zhu);

p.push_front(aa);

m_total=p.size();

}

else

{

peopleaa(m_name,m_num,m_email,m_add,m_add1,m_add2,m_zhu);

p.pop_front();

p.push_front(aa);

}

tian=0;

inttotal;

//将队列的头一个类写入文件,再利用函数push_brak()、pop_front()进行循环保存-----------

ofstreammyfile("data.txt",ios_base:

:

out);

total=p.size();

myfile.write(reinterpret_cast(&total),sizeof(int));

myfile.close();

TCHAR*pszFileName=_T("date.txt");

CFilemFile;

mFile.Open(pszFileName,CFile:

:

modeCreate|CFile:

:

modeNoTruncate|CFile:

:

modeWrite);

CArchivear(&mFile,CArchive:

:

store);

for(inti=0;i

{

ar<

p.push_back(p.front());

p.pop_front();

}

ar.Close();

mFile.Close();

//跳出对话框提示保存成功----------------------------------------

if(ff==0&&gg==0)

{

bokdd;

dd.DoModal();

}

ff=gg=0;

UpdateData(false);

}

 

保存成功提示:

 

电话号码输错提示:

邮箱地址输错提示:

邮箱及电话号码输错提示:

5.5删除:

//按钮“删除”,利用队列函数pop_front()删除头一个类---------------

voidCMyDlg:

:

OnButton5()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

UpdateData(true);

inttt;

p.pop_front();

 

//删除后判断队列是否为空。

若空则显示“无”,否则显示队列头一个类----

if(p.empty())

{

m_total=0;

m_name="无";

m_num="无";

m_email="无";

m_add="无";

m_zhu="无";

tt=0;

}

else

{

m_name=p.front().showname();

m_num=p.front().shownum();

m_email=p.front().showemail();

m_add=p.front().showsheng();

m_add1=p.front().showshi();

m_add2=p.front().showstreet();

m_total=p.size();

m_zhu=p.front().showzhu();

tt=p.size();

}

//将队列的头一个类写入文件,再利用函数push_brak()、pop_front()进行循环保存------------

ofstreammyfile("data.txt",ios_base:

:

out);

myfile.write(reinterpret_cast(&tt),sizeof(int));

myfile.close();

TCHAR*pszFileName=_T("date.txt");

CFilemFile;

mFile.Open(pszFileName,CFile:

:

modeCreate|CFile:

:

modeNoTruncate|CFile:

:

modeWrite);

CArchivear(&mFile,CArchive:

:

store);

for(inti=0;i

{

ar<

p.push_back(p.front());

p.pop_front();

}

ar.Close();

mFile.Close();

//跳出对话框提示删除成功----------------------------------------

sokdd;

dd.DoModal();

UpdateData(false);

}

5.6▲、▼:

//利用函数push_front()、pop_break()进行循环显示------------------

voidCMyDlg:

:

OnButton6()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

UpdateData(true);

p.push_front(p.back());

p.pop_back();

m_name=p.front().showname();

m_num=p.front().shownum();

m_email=p.front().showemail();

m_add=p.front().showsheng();

m_add1=p.front().showshi();

m_add2=p.front().showstreet();

m_zhu=p.front().showzhu();

UpdateData(false);

}

//利用函数push_brak()、pop_front()进行循环显示---------------------

voidCMyDlg:

:

OnButton7()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

UpdateData(true);

p.p

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1