通讯录详细设计报告概要.docx
- 文档编号:392325
- 上传时间:2022-10-09
- 格式:DOCX
- 页数:17
- 大小:410.54KB
通讯录详细设计报告概要.docx
《通讯录详细设计报告概要.docx》由会员分享,可在线阅读,更多相关《通讯录详细设计报告概要.docx(17页珍藏版)》请在冰豆网上搜索。
通讯录详细设计报告概要
软件测试实训-2
详细设计报告
项目名称:
通讯录管理系统(CS04)
负责人:
日期:
注:
(按照书上的顺序,每个项目一个编号,附在项目名称后面,如三角形问题CS01)
详细设计说明书
作用范围
该详细设计说明书讨论的是“通讯录管理系统”各模块的详细设计。
系统目标
1.后台数据库设计,后台需要建立Adrress数据库,维护两个表groupInfo和people。
并且利用windows的ODBC和前台连接。
2.前台使用MCF的CRecordset派生类实现和后台通讯。
3.前台利用CDialog派生类实现用户界面,显示系统信息,接受用户的输入和结果显示。
后台数据库设计
1.组信息表groupInfo结构
字段
含义
类型
长度
默认值
主键
ID
组ID
长整型
主键,自增
groupName
组名
文本
20
2.联系人信息表people结构
字段
含义
类型
长度
默认值
主键
ID
组ID
长整型
主键,自增
groupID
所属组ID
长整型
1
外键
FullName
姓名
文本
50
Sex
性别
是/否
company
工作单位
文本
255
phoneInCompany
办公电话
文本
15
homeAdrress
住址
文本
255
phineInHome
住宅电话
文本
15
Mobile
手机
文本
15
邮箱
文本
50
文本
15
msn
MSN
文本
50
memory
备注
文本
255
3.表关系结构
前台设计描述
数据描述
1.主窗口类CAddressListDlg,关联主用户界面,实现主要的程序逻辑。
主界面上的主要控件有:
IDC_TREE_LIST,IDC_STATIC,IDC_EDIT,IDC_BUTTON……。
2.CGroupInfo类
成员变量:
longm_id;
CStringm_groupName;
3.CPeople类
成员变量:
longm_id;
longm_groupId;
CStringm_fullName;
BOOLm_sex;
CStringm_company;
CStringm_phoneInCompany;
CStringm_homeAddress;
CStringm_phineInHome;
CStringm_mobile;
CStringm_mail;
CStringm_qq;
CStringm_msn;
CStringm_memory;
4.界面编辑信息数据结构
typedefstruct
{
CStringstrName;
boolbSex;
CStringstrCompany;
CStringstrPhoneInCompany;
CStringstrHomeAddress;
CStringstrPhoneInHome;
CStringstrMobile;
CStringstrMail;
CStringstrQq;
CStringstrMsn;
CStringstrMemory;
}INTERFACECTRLDATA;
主要功能实现函数
1.添加组
✧函数名OnButtonAppendgroup()
✧主要流程,用户点击“增加组”,输入新组名,选择确认/放弃,确认后,调用添加联系人组函数CappendNewGroupDialog:
:
OnOk()。
刷新。
✧流程图:
2.添加联系人
✧函数名OnButtonAppend()
✧主要流程,选择对应组输入新联系人信息,点击增加。
CheckInputInfo()验证输入的数据,检查输入是否合法。
如果没输入姓名,提示“输入姓名”;如果输入姓名,未输入其他,提示“至少输入一项”。
输入合法,取得当前选定组,从界面获取数据。
如果组内有多余位置,正常执行插入语句;如果组内无空位,则插入语句中添加nGroupId,执行插入语句。
断开与数据库连接,调用SwatchData()清空界面,刷新。
✧流程图:
3.更新联系人
✧函数名OnButtonEdit()
✧主要流程,选择要更新的联系人,更新数据,点击更新。
通过CheckInputInfo()判断更新是否合法。
如果没输入姓名,提示“输入姓名”;如果输入姓名,未输入其他,提示“至少输入一项”。
如果输入合法,取得界面数据,取得当前联系人ID,更新数据,断开数据库连接。
4.查询联系人信息
✧函数名OnOK()
✧主要流程,点击查询按键,输入要查询联系人,确认或放弃。
确认后,如果输入为空,则提示查询不能为空。
如果有输入,执行查询操作。
若查询对象不存在,返回空。
若查询对象存在,
获取所有数据。
如果只有一组数据,显示查询结果;若存在重名,有多组数据,则通过gotoSEEKEND,逐条显示,确认是否显示下一条或放弃跳出循环。
断开与数据库连接。
5.删除联系人
✧函数名OnButtonRemove()
✧主要流程,选中要删除对象,如果是组,执行删除组操作。
如果是联系人,确认删除或放弃。
确认后,执行删除人方法REMOVEPEOPLE()。
刷新。
6.删除组
✧函数名OnButtonRemove()
✧主要流程,选中要删除组,如果是联系人,执行删除联系人操作。
选中组,确认删除或放弃。
确认后,若是【未分组】,提示【未分组】不能删除。
若是其他组,执行删除组方法。
7.通讯录的树形显示
✧函数名RefurTree()
✧主要流程,记录当前选中项,如果选中项是联系人,则保存组ID,人ID和hSelItem;如果选中项是组,则保存组ID。
初始化Tree(InitTreeList();)。
回复选中项。
补充:
8.树控件的选择项改变相应函数
✧函数名CAddressListDlg:
:
OnSelchangedTreeList()
✧所属类CAddressListDlg
✧主要流程,当用户在左侧的树控件中选中某一组时,程序关闭此前展开的组而打开当前选中的组;而如果用户在左侧的树控件中选中的是一名联系人时,则在窗口右侧的区域中显示该联系人的详细信息
9.更新窗口控件值
✧函数名CAddressListDlg:
:
SwitchData(),
在OnSelchangedTreeList()函数中调用
✧所属类CAddressListDlg
✧主要流程,将数据显示于窗口各控件中或从窗口控件中取得当前输入的值
✧
10.取得当前组ID
✧函数名CAddressListDlg:
:
GetCurrentSelGroupId(),在OnButtonAppend()函数中调用
✧所属类CAddressListDlg
✧主要流程,取得当前的组ID,如果当前选中项为组,则通过GetItemData直接取得其组ID;如果当前选中项为联系人,则先取得其父节点,即当前选中联系人所属的组节点,然后再取得其组ID
✧
11.添加联系人组
✧函数名CAppendNewGroupDialog:
:
OnOK()
✧所属类CAppendNewGroupDialog
✧主要流程,从界面取得用户设定的组名,并检查组名是否为空,然后以输入的组名为查询条件查询当前系统中是否已存在该组名。
如果组名不存在,则调用类CGruopInfo的AddNew方法添加一条新纪录,并将新组名赋予CGruopInfo的数据成员m_groupName,最后通过Update方法提交新纪录到数据库中
✧流程图:
12.删除组
✧函数名CAddressListDlg:
:
RemoveGroup(),
在OnButtonRemove()函数中调用
✧所属类CAddressListDlg
✧主要流程,将参数传入的组ID对应的组从数据库中删除,其执行机理类同于RemovePeople。
在数据库设计阶段,由于设定表gruopInfo与表people之间的关系时,选中了“级联删除相关记录”,所以函数RemovePeople删除参数传入的组ID对应的组时,在表people中所有属于该组的记录也讲被全部删除。
(提示:
由此可以设计专门的测试用例,查看是否级联删除;以及在数据库设计中加以补充)
处理过程描述和关键技术
1.CRecordSet派生类与ODBC的关联,VC数据库类通过成员函数跟ODBC进行关联,进而操作后台数据库的。
CStringCPeople:
:
GetDefaultConnect()
{
return_T("ODBC;DSN=address");
}
2.VC中SQL语句的执行的标准步骤是,定义一个SQL语句原型,并且规范化格式,之后调用相关的接口函数实现对数据库的操作,如:
联系人信息查询的关键语句:
strSql.Format("SELECT*FROMpeopleWHEREfullName='%s'\
ORDERBYgroupIdDESC,id",
strPeopleName);
people.Open(AFX_DB_USE_DEFAULT_TYPE,strSql);
插入联系人信息的关键语句:
strFormat="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);
}
database.ExecuteSQL(strSql);
3.通讯录的树形显示技术
使用“树”控件的成员函数GetItemData和GetChildItem,先显示选中的根节点,判断如果有叶子节点则继续显示叶子节点,一直到最后一个叶子节点显示完成。
设计语言描述
C语言,采用MFC进行对话框程序开发,其中对于数据库的访问采用嵌入式SQL语句。
注释
测试准备
测试指南
对于每个模块,分别
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通讯录 详细 设计 报告 概要