当前位置:文档之家› 通讯录详细设计报告

通讯录详细设计报告

软件测试实训-2详细设计报告项目名称: 通讯录管理系统(CS04)负责人:日期:注:(按照书上的顺序,每个项目一个编号,附在项目名称后面,如三角形问题CS01)详细设计说明书作用范围该详细设计说明书讨论的是“通讯录管理系统”各模块的详细设计。

系统目标1.后台数据库设计,后台需要建立Adrress数据库,维护两个表groupInfo和people。

并且利用windows的ODBC和前台连接。

2.前台使用MCF 的CRecordset派生类实现和后台通讯。

3.前台利用CDialog派生类实现用户界面,显示系统信息,接受用户的输入和结果显示。

后台数据库设计1.组信息表groupInfo结构2.联系人信息表people结构3.表关系结构前台设计描述数据描述1.主窗口类 CAddressListDlg,关联主用户界面,实现主要的程序逻辑。

主界面上的主要控件有:IDC_TREE_LIST,IDC_STATIC,IDC_EDIT,IDC_BUTTON……。

2.CGroupInfo类成员变量:long m_id;CString m_groupName;3.CPeople类成员变量:long m_id;long m_groupId;CString m_fullName;BOOL m_sex;CString m_company;CString m_phoneInCompany;CString m_homeAddress;CString m_phineInHome;CString m_mobile;CString m_mail;CString m_qq;CString m_msn;CString m_memory;4.界面编辑信息数据结构typedef struct{CString strName;bool bSex;CString strCompany;CString strPhoneInCompany;CString strHomeAddress;CString strPhoneInHome;CString strMobile;CString strMail;CString strQq;CString strMsn;CString strMemory;}INTERFACECTRLDATA;主要功能实现函数1.添加组✧函数名 OnButtonAppendgroup()✧主要流程,用户点击“增加组”,输入新组名,选择确认/放弃,确认后,调用添加联系人组函数CappendNewGroupDialog::OnOk()。

刷新。

✧流程图:2.添加联系人✧函数名OnButtonAppend()✧主要流程,选择对应组输入新联系人信息,点击增加。

CheckInputInfo()验证输入的数据,检查输入是否合法。

如果没输入姓名,提示“输入姓名”;如果输入姓名,未输入其他,提示“至少输入一项”。

输入合法,取得当前选定组,从界面获取数据。

如果组内有多余位置,正常执行插入语句;如果组内无空位,则插入语句中添加nGroupId,执行插入语句。

断开与数据库连接,调用SwatchData()清空界面,刷新。

✧流程图:3.更新联系人✧函数名OnButtonEdit()✧主要流程,选择要更新的联系人,更新数据,点击更新。

通过CheckInputInfo()判断更新是否合法。

如果没输入姓名,提示“输入姓名”;如果输入姓名,未输入其他,提示“至少输入一项”。

如果输入合法,取得界面数据,取得当前联系人ID,更新数据,断开数据库连接。

4.查询联系人信息✧函数名OnOK()主要流程,点击查询按键,输入要查询联系人,确认或放弃。

确认后,如果输入为空,则提示查询不能为空。

如果有输入,执行查询操作。

若查询对象不存在,返回空。

若查询对象存在,获取所有数据。

如果只有一组数据,显示查询结果;若存在重名,有多组数据,则通过goto SEEKEND,逐条显示,确认是否显示下一条或放弃跳出循环。

断开与数据库连接。

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进行关联,进而操作后台数据库的。

CString CPeople::GetDefaultConnect(){return _T("ODBC;DSN=address");}2.VC中SQL语句的执行的标准步骤是,定义一个SQL语句原型,并且规范化格式,之后调用相关的接口函数实现对数据库的操作,如:联系人信息查询的关键语句:strSql.Format("SELECT * FROM people WHERE fullName='%s' \ORDER BY groupId DESC, id",strPeopleName);people.Open(AFX_DB_USE_DEFAULT_TYPE, strSql);插入联系人信息的关键语句:strFormat = "INSERT INTO people(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语句。

注释测试准备测试指南对于每个模块,分别选定,进入独立的对话框进行测试,对每种控件分别构造测试用例,保证正常值和异常值都被测试。

考量分为两个方面:一、数据库中数据文件应对相应操作做修改;二、窗口中的列表做相应更新。

异常值可能情况有:输入值为空,输入错误,重复输入等等。

特殊考虑1 添加联系人时,超过10人,可继续添加。

2 添加联系人时,若只输入【姓名】,则不提示错误;如果输入【姓名】、【工作单位】,则提示“至少输入一种联系方式”。

3 输入信息,不提示格式错误问题。

4 删除组操作,若组中无人,则删除不了组。

相关主题