通讯录系统程序设计报告专业班级:电创新1301班项目名称:通讯录系统程序设计(address book system)小组成员:陈灯念(组长)罗晶晶杨苒晨于桐桐盛超群指导老师:张丽静完成日期:2013年1月2日教师评价:目录一、系统简介1. 目标功能2. 实现功能3. 未实现功能二、成员分工及完成情况三、数据库1. 登录数据库2. 查询数据库3. 老师通讯信息数据库4. 同学信息数据库四、具体模块设计1. 登录部分2. 主界面3. 单击同学按钮4. 单击老师按钮5. 单击按姓名查找按钮6. 单击按学号查找按钮功能五、项目总结一系统简介①目标功能:1.电创新1301班的同学可以用个人姓名作为用户名,个人学号作为密码,进行登录界面的登录。
若姓名与密码匹配,则登录成功。
若输入的姓名不是电创新1301班同学的姓名或用户名与密码不匹配或密码错误,则弹出消息框显示“登录错误,请重试!”2.登录后显示主界面。
(1)双击“同学”按钮,弹出对话框,可依次查看电创新1301班同学通讯信息。
(2)单击“老师”按钮,弹出对话框,可依次查看电创新1301班老师通讯信息。
(3)单击“朋友”按钮,弹出对话框,可依次查看自己的朋友的通讯信息。
(4)单击“家人”按钮,弹出对话框,可依次查看自己的家人通讯信息。
(5)单击“按姓名查询”按钮,弹出一个对话框,键盘输入被查询人(须为电创新1301班同学)的姓名,再单击“咱们来查找吧”按钮,即弹出消息框显示被查询人的通讯信息。
(6)单击“按学号查询”按钮,弹出一个对话框,键盘输入被查询人(须为电创新1301班同学)的学号,再单击“咱们来查找吧”按钮,即弹出消息框显示被查询人的通讯信息。
3. 点击同学,老师,朋友或家人按钮后,弹出对话框,可以单击“添加”按钮或“删除”按钮添加或删除联系人或者单击“修改”按钮修改联系人的信息。
②实现功能:通过本小组成员的通力合作,在看书和上网查询资料后,目前本通讯录实现的功能有:1.电创新1301班的同学可以用个人姓名作为用户名,个人学号作为密码,进行登录界面的登录。
若姓名与密码匹配,则登录成功。
若输入的姓名不是电创新1301班同学的姓名或用户名与密码不匹配或密码错误,则弹出消息框显示“登录错误,请重试!”2. 登录后显示主界面。
(1)双击“同学”按钮,弹出对话框,可依次查看电创新1301班同学通讯信息。
(2)单击“老师”按钮,弹出对话框,可依次查看电创新1301班老师通讯信息。
(3)单击“按姓名查询”按钮,弹出一个对话框,键盘输入被查询人(须为电创新1301班同学)的姓名,再单击“咱们来查找吧”按钮,即弹出消息框显示被查询人的通讯信息。
(4)单击“按学号查询”按钮,弹出一个对话框,键盘输入被查询人(须为电创新1301班同学)的学号,再单击“咱们来查找吧”按钮,即弹出消息框显示被查询人的通讯信息。
3.单击同学,老师,朋友或家人按钮后,弹出对话框,可以单击“添加”按钮或“删除”按钮添加或删除联系人或者单击“修改”按钮修改联系人的信息。
③未实现功能:1. 单击“朋友”按钮,弹出对话框,可依次查看自己的朋友的通讯信息。
2. 单击“家人”按钮,弹出对话框,可依次查看自己的家人通讯信息。
我们猜想若要实现这两项功能,需要再对班级31位同学每个人都建立一个单独的数据库,信息量过大,而且还要对单独的数据库与学号进行连接,我们时间和能力有限。
二成员分工及完成情况陈灯念:登录功能实现、查询功能实现,已成功实现杨苒晨:老师通讯录、美工设计,已成功实现。
罗晶晶:同学通讯录,已成功实现。
于桐桐:PPT,前期资料查找,已成功实现。
盛超群:word,查询功能实现,已成功实现。
此外,大家都积极的上网查询了资料。
三数据库以下为数据库截图:1.登录数据库2.查询数据库3.老师通讯信息数据库4.同学信息数据库1..登录部分当输入的用户名为电创新1301班同学的姓名,密码为其匹配的学号时登录成功并进入主界面除此之外,其他输入均为错误输入,会弹出提示消息框此模块代码如下:下面解释一下其中用到的部分函数和方法:● UpdateData(TRUE):将表单中控件的输入内容更新到所关联的变量上,也就是让位两个编辑框控件的变量m_username 和m_userpwd 获得输入值。
● CUserRecordset m_user: 生成一个CUserRecordset 类的实例m_user,用以操作数据库中定义的表“puser”。
● if(m_user.IsOpen()); m_user.Close(); 判断puser 记录集是否打开,如果打开的话则关闭,以保证后边的操作能正确执行。
● m_user.m_strFilter.Format("username='%s'anduserpwd='%s'",m_Unam e,m_Upwd):定义查询语言,其对应规则为:“username= m_Uname and userpwd= m_Upwd”。
● m_user.Open(CRecordset::snapshot,NULL,CRecordset::none):执行查询● if(m_user.IsEOF()) {…} else {…}:判断是否已经查询到表的末尾,如果是的话表明没有符合的用户,用户名或密码错误,否则提示登录成功。
● m_user.Close():操作完后要及时关闭数据库,保证其他操作的正确执行。
● AfxMessageBox("密码错误,请重试!"):利用标准信息框,输出警告信息。
至此验证密码的代码编写完毕。
注意:要记得UpdateData(TRUE),否则可能得不到输入的数据;另外要急得及时关闭数据库,否则后续的打开操作可能无法执行。
编译选择菜单“Build—Rebuild All”即可编译程序。
我们看到在调试区出现了大堆错误,因为其中忘了两点重要的内容:(1)选择WorkSpace 的FileView 选项卡,在编辑区打开文件“Demo01files\Header Files\StaAfx.h”,在其中加入下面的内容:#include<afxdb.h>这是与CRecordSet 调用相关的头文件声明。
(2)打开文件“Demo01 files\Source Files\Demo01Dlg.cpp”,在其中加入下面的内容:#include "UserRecordset.h"这是与CUserRecordset 调用相关的头文件声明。
2.主界面设置背景图片:先在MFC中导入一张bmp图片,再去掉OnPaint()函数的Else块中原有语句,插入如下代重绘按钮,改变按钮及字体的颜色:先新建一个Cbutton的继承类CTestBtn,在新建类中加入一个函数void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct),其代码如下。
然后在对话框的头文件中包含CTestBtn类,即#include “TestBtn.h”。
最后设置需重绘按钮的属性为Ownerdraw,并给按钮连接一个关联CtestBtn类的变量。
改变静态框字体颜色:打开Class Wizard,选中WM_CTLCOLOR,代码如下:3.单击同学按钮可以进行翻页,依次查询给此界面的编辑框分别连接上变量:然后,添加一个对话框IDD_DIALOG1,给此界面的编辑框分别连接上变量:然后再在添加按钮下加入代码:修改按钮的做法同添加按钮一样,都是新建一个对话框之后进行操作。
新插入的对话框需要在头文件中定义,这样才可以使用。
定义如下:删除功能直接在删除按钮下添加如此代码:注:绿色代码部分为一开始尝试的程序。
功能实现效果不加,但也有一定参考意义。
4.单击老师按钮单击删除按钮输入姓名后单击OK此模块代码如下:5单击按姓名查找按钮输入电创新1301班同学名字后,单击“咱们查找吧“按钮后此模块代码如下:对此代码的解释如下M_pSet属于ADO的一个成员,是CRecordset中的指针,用于操作游标等例如:m_pSet->MoveNext()用来移动游标到下一条记录m_pSet->IsEOF()判断是否为记录尾m_pSet->MoveLast()移动游标到最后一条m_pSet->IsBOF()是否游标为记录首m_pSet->SetFieldNull(NULL);清空数据区6.单击按学号查找按钮功能类似五项目总结为了完成此次大作业,我们小组5个人通力合作,每个人都在积极的上网查找资料,看了很多以前别的人做的成品,知道了一个大致的方向,而后我们开始自己着手做。
学习MFC的时候还没有意识到原来他的功能可以如此强大,在数据库的建立过程中,也查找了很多资料,后来在界面优化的代码也是来源于网络。
这次大作业让我们亲身感受到了MFC的神奇。