VC通讯录管理系统.docx

上传人:b****3 文档编号:5268814 上传时间:2022-12-14 格式: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

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

VC通讯录管理系统.docx

VC通讯录管理系统

《VC++项目开发》期末考评

学院:

计算机工程学院班级:

11计算机科学3班

学生姓名:

王志成学号:

2011404010306

设计地点(单位):

A5-102

设计题目:

通讯录管理系统

完成日期:

2014年6月13日

指导教师评语:

____________________________________________________________________________________________________________________________________________________________________________________________________________________________

成绩(五级记分制):

_________________

教师签名:

_________________________

摘要

通讯录是我们每个人必不可少的一个工具,此通讯录系统利用VC++设计完成,Access数据库。

本着人性化的设计,此系统包括了联系人的姓名、电话、地址、E-mail、分组和备注等信息,利用此系统可以对联系组进行查询、增加、删除等操作,利用此系统可以对联系人进行查询、增加、修改、删除等操作,基本上可以满足我们对通讯录的需要。

针对以上要求,简易通讯管理系统具有以下特点:

1.操作简单,所有人不需学习就可以使用。

2.输入简单,输入框都有相关提示,我们可以按照提示输入相关信息。

3.界面显示信息完整,界面上每一个编辑框显示一条联系人信息,很清楚地显示了联系人的全部信息。

关键字:

VC++通讯管理系统

目录

1.选题背景及设计1

1.1选题背景1

1.2通讯录制作的要求1

2.项目设计及实现1

2.1设计概述1

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

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

2.2项目总体设计3

2.2.1界面设计3

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

CString

m_company

编辑框

IDC_EDIT_PHONEINCOMPANY

CString

m_phoneInCompany

编辑框

IDC_EDIT_ADDRESS

CString

m_address

编辑框

IDC_EDIT_PHONEATHOME

CString

m_phoneInHome

编辑框

IDC_EDIT_MOBILE

CString

m_mobile

编辑框

IDC_EDIT_MAIL

CString

m_mail

编辑框

IDC_EDIT_QQ

CString

m_qq

编辑框

IDC_EDIT_MSN

CString

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

CString

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)查询功能的实现

//功能:

查询按钮响应

voidCMy113_306_Dlg:

:

OnOK()

{

CQueryPeopleDialogdlg;

if(dlg.DoModal()==IDOK)

{

//取得待查询联系人名

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(!

people.IsEOF())

{

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

","确认",

MB_YESNO|MB_ICONQUESTION)==IDNO)

{

break;//中断查询,跳出循环

}

}

}

people.Close();

db.Close();

}

3)添加功能的实现

/*增加按钮*/

voidCMy113_306_Dlg:

:

OnButtonAppend()

{

//输入合法

if(CheckInputInfo())

{

//取得当前选定组

intnGroupId=GetCurrentSelGroupId();

//取得界面数据

INTERFACECTRLDATAinterfaceCtrlData;

SwitchData(interfaceCtrlData,false);

CDatabasedatabase;

database.Open(_T("address"));

//生成插入指令

CStringstrSql;

if(nGroupId==-1)

{

CStringstrFormat="INSERTINTOpeople(fullName,sex,company,\

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

msn,memory)VALUES('%s',%d,'%s','%s','%s','%s','%s','%s','%s','%s','%s')";

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

{

CStringstrFormat="INSERTINTOpeople(groupId,fullName,sex,company,\

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

msn,memory)VALUES(%d,'%s',%d,'%s','%s','%s','%s','%s','%s','%s','%s','%s')";

strSql.Format(strFormat,

nGroupId,

interfaceCtrlData.strName,

interfaceCtrlData.bSex,

interfaceCtrlData.strCompany,

interfaceCtrlData.strPhoneInCompany,

interfaceCtrlData.strHomeAddress,

interfaceCtrlData.strPhoneInHome,

interfaceCtrlData.strMobile,

interfaceCtrlData.strMail,

interfaceCtrlData.strQq,

interfaceCtrlData.strMsn,

interfaceCtrlData.strMemory);

}

//执行插入

database.ExecuteSQL(strSql);

database.Close();

//清空界面显示

INTERFACECTRLDATAtemp;

SwitchData(temp,true);

//刷新Tree

RefurTree();

}

}

4)查询功能的实现

//功能:

更新当前联系人信息

voidCMy113_306_Dlg:

:

OnButtonEdit()

{

//输入合法

if(CheckInputInfo())

{

//取得界面数据

INTERFACECTRLDATAinterfaceCtrlData;

SwitchData(interfaceCtrlData,false);

//取得当前联系人ID

HTREEITEMhSelItem=m_tree_list.GetSelectedItem();

intnID;

nID=m_tree_list.GetItemData(hSelItem);

//更新数据

CDatabasedb;

db.Open("address");

CStringstrSql;

strSql.Format("UPDATEpeopleSETfullName='%s',\

sex='%d',\

company='%s',\

phoneInCompany='%s',\

homeAddress='%s',\

phineInHome='%s',\

mobile='%s',\

mail='%s',\

qq='%s',\

msn='%s',\

memory='%s'\

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);

db.Close();

}

}

5)修改功能的实现

//功能:

更新当前联系人信息

voidCMy113_306_Dlg:

:

OnButtonEdit()

{

//输入合法

if(CheckInputInfo())

{

//取得界面数据

INTERFACECTRLDATAinterfaceCtrlData;

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

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

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

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