VC++通讯录管理系统课程设计报告.docx
《VC++通讯录管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《VC++通讯录管理系统课程设计报告.docx(11页珍藏版)》请在冰豆网上搜索。
VC++通讯录管理系统课程设计报告
Vc++设计与开发
题目:
通讯录管理系统
班级:
11级计算机科学与技术1班
学号:
2013ZSB040105
姓名:
李鹏翔
摘要
通讯录使我们每个人必不可少的一个工具,此通讯录系统利用VC++设计完成,ACCESS数据库。
本着人性化的设计,此系统包括了联系人的学号,姓名、电话、家庭住址、E-mail、qq、和宿舍等信息,利用此系统可以对联系人进行查询、增加、修改、删除等操作,基本上可以满足我们对通讯录的所需。
对于通讯录功能的实现采用添加控件的方法,在程序设计中,采用了面向对象解决问题的方法。
程序通过调试运行,初步实现了设计目标,并且经过适当完善后,将可以应用在商业中解决实际问题。
针对以上要求,简易通讯管理系统具有以下特点:
1,操作简单,所有人不需学习就可以用的系统。
2,输入简单,输入框都有相关提示,我们可以按照提示输入相关信息。
3界面显示信息完整,界面上每一个编辑框显示一条联系人信息,很清楚地显示了联系人的全部信息。
关键字:
VC++,通讯录管理系统,acesss数据库.
一引言
计算机有着广泛的应用,通讯录是它的应用之一。
计算机本身有着许多传统系统文件无法超越的优点,比如检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
利用这些优点提高通信录管理的效率,是企业的高效化、正规化正确选择与世界接轨的重要条件。
本次设计主要实现通讯录的查询、添加、修改、删除等功能,进行控件添加、编写代码的程序设计。
人际交往是非常普遍,同时也非常重要的,大量的人员交往和联系,能够达到信息的交流,共同完成合作项目,随着各种信息量的剧增,单独处理好联系通讯录有非常重要的意义,信息分类能使事务处理条理清晰,通讯录可以单独处理人力资源信息,提高管理工作效率。
通过通讯录这样的系统,可以做到信息的规范管理、科学统计和快速的查询,从而减少管理方面的工作量。
二数据库设计
用MicrosoftAccess创建的联系人信息数据student.accdb结构如下。
1联系人信息表,表名为student,结构如图一所示。
图一
2相关测试数据,如图二所示。
图二
三功能模块设计
1通讯录管理系统模块
。
图三:
在MicrosoftVisualC++中用MFC可以实现系统程序的编写,实现运行结果可视化,MFC的好处是简化Windows操作,把经常使用而有复杂、烦琐的操作,封装成各种类(MFC程序框架),它使程序员从繁杂的编程中解脱出来,提高了编程和代码效率。
用消息驱动机制来实现代码的添加[1],产生消息。
在MFC中建立一个单文档应用程序,加入数据库支持,选择对应的数据源。
采用模块化原理可以使软件结构清晰,容易设计也容易阅读和理解,也易于测试和调度,所以它有利于提高软件的可靠性和可修改性。
主、副界面如图四、图五所示。
图四
图五
2系统的主要功能
通讯录管理系统的主要功能有查询、添加、删除、修改。
当实现查询功能时,联系人的姓名不能为空,若为空,会弹出一个对话框,通知用户“要查询的姓名不能为空”,若查询的联系人不在系统里,则有提示消息“没有查到你要找的姓名”;实现修改功能时,选择要修改的信息,输入正确的信息,单击“确定”;实现删除功能时,选择要删除的信息,单击“确定”。
同时系统还可以浏览上一条记录、下一条记录、第一条记录、最后一条记录,为用户提供方便。
3.系统的主要文件
这个通讯录管理系统的应用程序名称是Ex_ODBC29。
主要的.cpp文件有Ex_ODBC29View.cpp和InfoDlg.cpp,主要的.h文件有Ex_ODBC29View.h和InfoDlg.h
Ex_ODBC29View.cpp里主要有实现查询功能的CEx_ODBC29View:
:
OnButtonQuery()函数,实现添加功能的CEx_ODBC29View:
:
OnRecAdd()函数,实现修改功能的voidCEx_ODBC29View:
:
OnRecEdit()函数,实现删除功能的CEx_ODBC29View:
:
OnRecDel()
OnButtonQuery()函数的内容和功能:
m_strQuery是控件IDC_EDIT_QUERY的变量,这个变量用来判断查询的姓名是否为空关闭记录集,m_pSet->m_strFilter.Format("pname='%s'",m_strQuery)语句用于指定查询的条件,pname是表connection的字段名;m_pSet->m_strSort="ptelephone"语句用于按ptelephone字段从小到大排序,ptelephone是表connection的字段名;UpdateData(FALSE)自动更新表单中控件显示的内容。
MessageBox("要查询的联系人不能为空!
"),MessageBox("没有查到你要找的联系人!
")用于反馈用户操作。
OnRecAdd()函数的内容和功能:
由于增加和显示记录在同一个界面出现,容易造成误操作。
因此,在修改和添加记录数据之前,往往设计一个对话框用于获得所需要的数据,然后用该数据进行当前记录的编辑。
这样就能避免它们的相互影响,且保证代码的相对独立性。
获得所需数据的对话框名为“联系人信息表”,对话框资源的ID号是IDD_INFO_TABLE,对话框资源对应的类名为CInfoDlg,要进行添加操作,首先为这个类添加一个对象[2],以便引用控件变量,添加完信息确定之后,“联系人信息表”的内容传值给主界面对应的变量,如m_pSet->m_ptelephone=dlg.m_strPersonTelephone。
OnRecEdit()函数的内容和功能:
修改函数首先选中要修改的信息,即把主界面的信息传值给“联系人信息表”如dlg.m_strPersonTelephone=m_pSet->m_ptelephone;确定修改信息,则把“联系人信息表”的信息传值给主界面如m_pSet->m_ptelephone=dlg.m_strPersonTelephone;完成修改操作,也引用了系统功能函数m_pSet->Edit()修改当前记录,m_pSet->Update()将新记录存入数据库。
OnRecDel()函数的内容和功能:
引用系统功能函数m_pSet->Delete()删除当前记录,m_pSet->GetStatus(status)获取当前记录集状态,if(status.m_lCurrentRecord==0)若当前记录索引号为0(0表示第1条记录),m_pSet->MoveNext()则下移一个记录,否则m_pSet->MoveFirst()移动到第1个记录处。
InfoDlg.cpp文件中的CInfoDlg:
:
OnOK()函数内容和功能:
用于控制不正确的操作,例如当添加信息时若姓名和号码为空则不能进行操作,用判断语句来实现if(m_strPersonName.IsEmpty())MessageBox("姓名不能为空!
");
Else
if(m_strPersonTelephone.IsEmpty())
MessageBox("学号不能为空!
");
在Ex_ODBC29View.cpp文件处的开始处增加语句#include“InfoDlg.h”
添加消息映射函数
用MFCClassWizard为各控件添加消息如图11所示
如图11添加消息映射函数
添加控件变量
为CEx_ODBC29View的控件添加相关联的数据成员,如图12所示
如图12添加相关联的数据成员
为CInfoDlg的控件添加控件变量,如如图13所示
如图13添加CInfo的成员变量
4主要类的实现
功能的实现主要由CEx_ODBC29View和CInfoDlg这两个类实现。
在OnButtonQuery()函数中,使用CRecordSet类的成员变量m_strFilter,m_strSort和成员函数Open可以对表进行记录的查询和排序。
单击“查询“按钮,将编辑框中的姓名对数据表进行查询,并将查找的记录显示在添加的控件中。
UpdateData()实现控件数据的输入和读取,TrimLeft()是CString类的一个成员函数,用于去除字符串左边的空格,if(m_strQuery.IsEmpty())判断查询内容是否为空,执行MessageBox("要查询的联系人不能为空!
")if(m_pSet->IsOpen())判断记录集是否打开,如果打开,则先关闭。
m_pSet->m_strFilter.Format("pname='%s'",m_strQuery)语句用于指定查询的条件,m_pSet->m_strSort="ptelephone"语句用于按ptelephone字段从小到大排序,m_pSet->Open()打开记录集,if(!
m_pSet->IsEOF())如果打开记录集有记录,UpdateData(FALSE)自动更新表单中控件显示的内容,若没有这个记录执行MessageBox("没有查到你要找的联系人!
")。
在OnOK()函数中,UpdateData()实现控件数据的输入和读取,TrimLeft()用于去除字符串左边的空格,if(m_strPersonName.IsEmpty())判断姓名是否为空执行MessageBox("姓名不能为空!
")if(m_strPersonTelephone.IsEmpty())判断学号是否为空,执行MessageBox("学号不能为空!
")
在OnRecAdd()函数中,因为添加在另一个对话框中进行,所以首先要为两个对话框的控件变量建立联系,所以定义一个CInfoDlg类的对象dlg,if(dlg.DoModal()==IDOK)DoModal是CDialog基类成员函数,用于将对话框模式方式来显示,m_pSet->AddNew()在表的末尾增添新记录,数据由控件向相关联的成员变量复制m_pSet->m_ptelephone=dlg.m_strPersonTelephone,依次完成其他几个变量复制,m_pSet->Update()将新记录存入数据库,m_pSet->Requery()刷新记录集。
在OnRecEdit()函数中,因为是修改首先要知道修改的内容,把要修改的内容传到修改对话框中dlg.m_strPersonTelephone=m_pSet->m_ptelephone,依次完成其他信息的传递,if(dlg.DoModal()==IDOK)表示确认修改内容,m_pSet->Edit()修改当前记录,m_pSet->m_ptelephone=dlg.m_strPersonTelephone修改当前记录字段值,m_pSet->Update()将修改结果存入数据库,UpdateData(FALSE)数据由控件相关联的成员变量向控件传输。
在OnRecDel()函数中,m_pSet->GetStatus(status)获取当前记录集状态,m_pSet->Delete()删除当前记录if(status.m_lCurrentRecord==0)若当前记录索引号为0,m_pSet->MoveNext()下移一记录m_pSet->MoveFirst()移动到第一个记录,UpdateData(FALSE)控件显示成员变量的值。
5图形界面设计
控件的布局如下图6,图7,图8,图9,图10
如图6
如图7
如图8
如图9,如图10
四设计总结
通过通讯录管理系统课程设计,我学到了很多东西,感受到计算机的强大功能和巨大用处,在做的过程中遇到的一些困难,在同学热心帮助下顺利解决了,与同学之间的讨论让我受益匪浅,我明白了讨论和独立思考的重要性,我相信在以后的学习的过程中,我会不断前进。
通讯录管理系统的主要内容有用MicrosoftAccess建立一个数据表,用ODBC连接数据源[3],用MFC建立一个单文档应用程序,在对话框设计模板中添加必要的控件,为控件添加相关联变量,选择变量的类型、类别,设定变量的大小,变量的大小。
用MFCClassWizard为控件添加消息映射,为消息函数OnButtonQuery()、OnRecAdd()、OnRecEdit()、OnRecDel()、OnOK()添加代码,实现查询、添加、修改、删除功能。
通过设计基本满足了通讯录系统的需求,但是这个设计比较简单,一些其他方面的功能没有得到体现,比如联系人的生日,日期,记录的统计。
参考文献
[1]郑阿奇VisualC++实用教程.第3版.北京:
电子工业出版社.
[2]谭浩强..C++程序设计.北京:
清华大学出版社,2004
[3]陈卫卫.VisualC++数据库编程技术与实例.人民邮电出版社
[4]管西京深入体验vc++项目开.发清华大学出版社
WelcomeTo
Download!
!
!
欢迎您的下载,资料仅供参考!