VC通讯录管理系统文档格式.docx

上传人:b****5 文档编号:8454394 上传时间:2023-05-11 格式:DOCX 页数:21 大小:342.30KB
下载 相关 举报
VC通讯录管理系统文档格式.docx_第1页
第1页 / 共21页
VC通讯录管理系统文档格式.docx_第2页
第2页 / 共21页
VC通讯录管理系统文档格式.docx_第3页
第3页 / 共21页
VC通讯录管理系统文档格式.docx_第4页
第4页 / 共21页
VC通讯录管理系统文档格式.docx_第5页
第5页 / 共21页
VC通讯录管理系统文档格式.docx_第6页
第6页 / 共21页
VC通讯录管理系统文档格式.docx_第7页
第7页 / 共21页
VC通讯录管理系统文档格式.docx_第8页
第8页 / 共21页
VC通讯录管理系统文档格式.docx_第9页
第9页 / 共21页
VC通讯录管理系统文档格式.docx_第10页
第10页 / 共21页
VC通讯录管理系统文档格式.docx_第11页
第11页 / 共21页
VC通讯录管理系统文档格式.docx_第12页
第12页 / 共21页
VC通讯录管理系统文档格式.docx_第13页
第13页 / 共21页
VC通讯录管理系统文档格式.docx_第14页
第14页 / 共21页
VC通讯录管理系统文档格式.docx_第15页
第15页 / 共21页
VC通讯录管理系统文档格式.docx_第16页
第16页 / 共21页
VC通讯录管理系统文档格式.docx_第17页
第17页 / 共21页
VC通讯录管理系统文档格式.docx_第18页
第18页 / 共21页
VC通讯录管理系统文档格式.docx_第19页
第19页 / 共21页
VC通讯录管理系统文档格式.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

VC通讯录管理系统文档格式.docx

《VC通讯录管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《VC通讯录管理系统文档格式.docx(21页珍藏版)》请在冰点文库上搜索。

VC通讯录管理系统文档格式.docx

2.2.2主窗体界面控件设计3

2.2.3添加组界面设计4

2.2.4查询界面设计4

2.3详细设计及功能实现4

2.3.1对数据库表及操作界面的操作设计4

2.3.2功能实现7

3.系统的测试12

3.1添加组的测试12

3.2查询操作的测试13

3.3删除组及组内成员测试13

4.总结14

参考文献14

通讯录管理系统

1.选题背景及设计

1.1选题背景

对于即将走入社会的人群,已经认识的或者将要认识的人会越来越多,更新麻烦、查询困难等缺点,是纸质通讯录所不能克服的。

因此,现实中,纸质的通讯录已经不能满足我们的要求。

在此情况下,迫切需要一个电子版的通讯录来满足我们的需求。

1.2通讯录制作的要求

通讯录管理系统采用ODBC、Access数据库作为软件的后台,用微软公司的快速开发工具MicrosoftVisualC++6.0/MFC开发软件的前台界面及功能实现部分,制作的通讯录能够用SQL(结构化查询语言)实现对数据库中的数据的多功能查询,插入,以及删除等操作,而且要求界面良好。

通讯录内的人员信息要按组进行分类,方便查询、管理。

用户可以随时对组内成员很方便地进行增、删、改、查操作,实现方便地管理。

通讯录制作的内容包括以下部分:

1)要求通讯录界面中要包含组

组名有“我的好友”、“朋友”、“同学”、“同事”和“未分组”等信息;

2)成员信息内容的信息展示

成员信息内容的信息包括“姓名”、“性别”、“工作单位”、“办公电话”、“住址”、“住宅电话”、“手机”、“邮箱”、“QQ”、“MSN”和“备注”等信息;

3)通讯录的操作功能

通讯录的操作功能有“增加组”、“查询”、“增加”、“更新”、“删除”和“退出”等信息通讯录分组列表显示以及单击组名后,显示该列表内的成员名;

其中,当单击“增加组”按钮时,系统弹出一个“创建新组”对话框;

当单击“查询”

2.项目设计及实现

2.1设计概述

用MicrosoftAccess创建的联系人信息数据库address.mdb结构如下:

2.1.1分组信息表groupInfo的结构及数据

1)分组信息表的结构如下:

图1groupInfo表结构

2)相关测试数据如下:

图2相关测试数据

2.1.2组内成员信息表People的结构及数据

组内成员住处表的结构如下:

图3组内成员表

相关测试数据,如下:

图4相关测试数据

2.2项目总体设计

2.2.1界面设计

图5主界面

2.2.2主窗体界面控件设计

添加十个静态文本框,标题分别设为“姓名”、“性别”、“工作单位”、“办公电话”、“住址”、“住宅电话”、“手机号码”、“邮箱”、“QQ”、“MSN”,ID号不变,另添加9个编辑框和2个单选按钮,其控件ID号及变量名设置如下表所示:

控件类型或功能

控件ID号

变量类型

变量名

编辑框

IDC_EDIT_NAME

CString

m_name

IDC_EDIT_COMPANY

m_company

IDC_EDIT_PHONEINCOMPANY

m_phoneInCompany

IDC_EDIT_ADDRESS

m_address

IDC_EDIT_PHONEATHOME

m_phoneInHome

IDC_EDIT_MOBILE

m_mobile

IDC_EDIT_MAIL

m_mail

IDC_EDIT_QQ

m_qq

IDC_EDIT_MSN

m_msn

单选按钮

IDC_RADIO_MAN

int

m_sex

IDC_RADIO_WEMAN

-

表1

添加一个树状控件和6个Button按钮,按钮控件ID号及功能如下表所示:

按钮名称

按钮ID号

添加组

IDC_BUTTON_APPENDGROUP

查询

IDOK

添加

IDC_BUTTON_APPEND

修改

IDC_BUTTON_EDIT

删除

IDC_BUTTON_REMOVE

退出

IDCANCEL

表2

2.2.3添加组界面设计

图6创建新组界面

2.2.4查询界面设计

图7查询界面

2.3详细设计及功能实现

2.3.1对数据库表及操作界面的操作设计

1)CGroupInfo类绑定操作

新建一个基类为CRecordSet的类CGroupInfo,绑定数据库的groupInfo表,数据表的字段名和类变量的对应关系设计如下表所示:

数据表字段名

变量名称

groupName

m_groupName

id

long

m_id

表3

2)CPeolpe类绑定操作

新建一个基类为CRecordSet的类CPeople,绑定数据库的People表,数据表的字段名和类变量的对应关系设计如下:

3)INTERFACECTRLODATA类

将界面的变量定义成一个结构体:

/*界面编辑信息*/

typedefstruct

{

CStringstrName;

boolbSex;

CStringstrCompany;

CStringstrPhoneInCompany;

CStringstrHomeAddress;

CStringstrPhoneInHome;

CStringstrMobile;

CStringstrMail;

CStringstrQq;

CStringstrMsn;

CStringstrMemory;

}INTERFACECTRLDATA;

//interfacectrldata

classCMy113_306_Dlg:

publicCDialog

//Construction

public:

CMy113_306_Dlg(CWnd*pParent=NULL);

//standardconstructor

//DialogData

//{{AFX_DATA(CMy113_306_Dlg)

enum{IDD=IDD_MY113_306__DIALOG};

CTreeCtrlm_tree_list;

CStringm_address;

CStringm_company;

CStringm_mail;

CStringm_memory;

CStringm_mobile;

CStringm_msn;

CStringm_phoneInHome;

CStringm_phoneInCompany;

CStringm_qq;

intm_sex;

CStringm_name;

//}}AFX_DATA

//ClassWizardgeneratedvirtualfunctionoverrides

//{{AFX_VIRTUAL(CMy113_306_Dlg)

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);

//DDX/DDVsupport

//}}AFX_VIRTUAL

//Implementation

protected:

HICONm_hIcon;

//Generatedmessagemapfunctions

//{{AFX_MSG(CMy113_306_Dlg)

virtualBOOLOnInitDialog();

afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam);

afx_msgvoidOnPaint();

afx_msgHCURSOROnQueryDragIcon();

virtualvoidOnCancel();

afx_msgvoidOnButtonAppend();

afx_msgvoidOnSelchangedTreeList(NMHDR*pNMHDR,LRESULT*pResult);

afx_msgvoidOnClickTreeList(NMHDR*pNMHDR,LRESULT*pResult);

afx_msgvoidOnButtonRemove();

afx_msgvoidOnButtonAppendgroup();

afx_msgvoidOnButtonEdit();

virtualvoidOnOK();

afx_msgvoidOnRadioMan();

afx_msgvoidOnRadioWeman();

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

private:

boolRemovePeople(intid);

boolRemoveGroup(intid);

voidRefurTree();

intGetCurrentSelGroupId();

voidCollapseTree();

voidInitTreeList();

voidSwitchData(INTERFACECTRLDATA&

info,boolflag);

CDatabasem_database;

boolCheckInputInfo();

};

2.3.2功能实现

1)添加组功能的实现

//功能:

增加组

voidCMy113_306_Dlg:

:

OnButtonAppendgroup()

CAppendNewGroupDialogdlg;

if(dlg.DoModal()==IDOK)

{

RefurTree();

}

}

2)查询功能的实现

//功能:

查询按钮响应

OnOK()

CQueryPeopleDialogdlg;

//取得待查询联系人名

CStringstrPeopleName=dlg.m_peopleName;

//执行查询

CDatabasedb;

CPeoplepeople(&

db);

CStringstrSql;

strSql.Format("

SELECT*FROMpeopleWHEREfullName='

%s'

\

ORDERBYgroupIdDESC,id"

strPeopleName);

people.Open(AFX_DB_USE_DEFAULT_TYPE,strSql);

if(people.GetRecordCount()==0)

{

MessageBox("

没有找到要查询的联系人!

"

"

提示"

\

MB_OK|MB_ICONINFORMATION);

return;

}

//显示结果

while(!

people.IsEOF())

//取得联系人ID

intnId;

nId=people.m_id;

HTREEITEMhtiItem=m_tree_list.GetRootItem();

while(NULL!

=htiItem)

{

m_tree_list.GetItemData(htiItem);

m_tree_list.Select(htiItem,TVGN_CARET);

//清空联系人信息

INTERFACECTRLDATAtemp;

SwitchData(temp,true);

//选中组下的联系人

HTREEITEMhPeople=m_tree_list.GetChildItem(htiItem);

while(NULL!

=hPeople)

{

if(nId==m_tree_list.GetItemData(hPeople))

{

m_tree_list.Select(hPeople,TVGN_CARET);

gotoSEEKEND;

}

hPeople=m_tree_list.GetNextSiblingItem(hPeople);

}

htiItem=m_tree_list.GetNextSiblingItem(htiItem);

}

SEEKEND:

//移至下条记录

people.MoveNext();

if(!

if(MessageBox("

还有满足条件的联系人,继续查看下一条吗?

确认"

MB_YESNO|MB_ICONQUESTION)==IDNO)

break;

//中断查询,跳出循环

}

people.Close();

db.Close();

3)添加功能的实现

/*增加按钮*/

OnButtonAppend()

//输入合法

if(CheckInputInfo())

//取得当前选定组

intnGroupId=GetCurrentSelGroupId();

//取得界面数据

INTERFACECTRLDATAinterfaceCtrlData;

SwitchData(interfaceCtrlData,false);

CDatabasedatabase;

database.Open(_T("

address"

));

//生成插入指令

if(nGroupId==-1)

CStringstrFormat="

INSERTINTOpeople(fullName,sex,company,\

phoneInCompany,homeAddress,phineInHome,mobile,mail,qq,\

msn,memory)VALUES('

%d,'

'

)"

;

strSql.Format(strFormat,

interfaceCtrlData.strName,

interfaceCtrlData.bSex,

interfaceCtrlData.strCompany,

interfaceCtrlData.strPhoneInCompany,

interfaceCtrlData.strHomeAddress,

interfaceCtrlData.strPhoneInHome,

interfaceCtrlData.strMobile,

interfaceCtrlData.strMail,

interfaceCtrlData.strQq,

interfaceCtrlData.strMsn,

interfaceCtrlData.strMemory);

else

INSERTINTOpeople(groupId,fullName,sex,company,\

phoneInCompany,homeAddress,phineInHome,mobile,mail,qq,\

msn,memory)VALUES(%d,'

nGroupId,

}

//执行插入

database.ExecuteSQL(strSql);

database.Close();

//清空界面显示

INTERFACECTRLDATAtemp;

SwitchData(temp,true);

//刷新Tree

}

4)查询功能的实现

更新当前联系人信息

OnButtonEdit()

//取得当前联系人ID

HTREEITEMhSelItem=m_tree_list.GetSelectedItem();

intnID;

nID=m_tree_list.GetItemData(hSelItem);

//更新数据

db.Open("

);

UPDATEpeopleSETfullName='

sex='

%d'

company='

phoneInCompany='

homeAddress='

phineInHome='

mobile='

mail='

qq='

msn='

memory='

WHEREid=%d"

interfaceCtrlData.strName,\

interfaceCtrlData.bSex,\

interfaceCtrlData.strCompany,\

interfaceCtrlData.strPhoneInCompany,\

interfaceCtrlData.strHomeAddress,\

interfaceCtrlData.strPhoneInHome,\

interfaceCtrlData.strMobile,\

interfaceCtrlData.strMail,\

interfaceCtrlData.strQq,\

interfaceCtrlData.strMsn,\

interfaceCtrlData.strMemory,\

nID

);

db.ExecuteSQL(strSql);

5)修改功能的实现

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2