通讯录详细设计报告

合集下载

通讯录管理系统设计报告

通讯录管理系统设计报告

通讯录管理系统设计报告一、引言通讯录在日常生活中扮演着重要的角色,用来存储和管理各种联系人信息,方便人们随时找到需要联系的人或组织。

随着移动互联网的普及,通讯录的管理变得更加便捷和高效。

为了提高通讯录的管理效率,我们设计并开发了一款通讯录管理系统。

二、系统概述通讯录管理系统是一个基于Web的应用程序,用户可以通过浏览器访问系统,进行通讯录的管理操作。

系统主要包括以下功能:•用户登录与注册:用户可以注册新账号,并通过账号密码登录系统。

•联系人管理:用户可以添加、编辑、删除联系人信息,包括姓名、电话号码、邮箱等。

•分组管理:用户可以创建分组并将联系人归类到不同分组。

•搜索功能:用户可以通过关键词搜索联系人信息。

•导出和导入功能:用户可以将联系人信息导出为Excel表格,并可以通过Excel文件导入联系人到系统中。

三、系统架构通讯录管理系统采用了前后端分离的架构,前端使用Vue.js框架开发,提供友好的用户界面;后端使用Node.js和Express框架搭建RESTful API,负责数据的存储和管理。

系统中的数据存储在MySQL数据库中,用户的密码使用bcrypt进行加密存储,确保用户信息的安全性。

同时,系统对用户权限进行了细致管理,保障用户在系统中的数据安全。

四、系统界面系统的界面设计简洁直观,用户可以轻松进行操作。

主要包括登录页面、通讯录首页、联系人管理页面、分组管理页面等。

用户登录页面:[登录页面截图]通讯录首页:[通讯录首页截图]联系人管理页面:[联系人管理页面截图]五、系统特色•简洁高效:系统操作简单直观,提供了快速的联系人管理功能。

•个性化定制:用户可以根据自己的需求创建分组,快速查找联系人。

•数据安全:采用了加密技术和权限管理,确保用户数据的安全性。

•导入导出功能:支持Excel文件导入导出,方便用户管理大批量联系人信息。

六、未来展望通讯录管理系统将继续进行优化和迭代,引入更多智能化功能,如联系人推荐、消息提醒等,提升用户体验。

手机通讯录实验报告及使用说明(附源代码)

手机通讯录实验报告及使用说明(附源代码)

手机通讯录实验报告及使用说明(附源代码)自查报告。

标题,手机通讯录实验报告及使用说明(附源代码)。

自查报告内容:在本次实验中,我使用了Java编程语言,开发了一个简单的手机通讯录应用程序。

该应用程序可以实现添加联系人、查找联系人、删除联系人等基本功能。

在开发过程中,我遵循了面向对象的编程思想,使用了类和对象的概念来组织和管理联系人信息。

在实验中,我首先设计了Contact类,用于表示一个联系人的信息,包括姓名、电话号码、邮箱等属性。

然后,我设计了AddressBook类,用于管理联系人信息,包括添加联系人、查找联系人、删除联系人等操作。

最后,我编写了一个简单的用户界面,用于与用户交互,实现对通讯录的操作。

在实验过程中,我遇到了一些问题,比如在删除联系人时没有进行足够的输入验证,导致程序出现了错误。

不过,通过调试和修改代码,我最终解决了这些问题,并且实现了一个稳定和可靠的手机通讯录应用程序。

使用说明:1. 添加联系人,在应用程序中选择“添加联系人”选项,然后输入联系人的姓名、电话号码、邮箱等信息,点击“确认”按钮即可完成添加。

2. 查找联系人,在应用程序中选择“查找联系人”选项,然后输入联系人的姓名或电话号码,点击“搜索”按钮即可查找到对应的联系人信息。

3. 删除联系人,在应用程序中选择“删除联系人”选项,然后输入要删除的联系人的姓名或电话号码,点击“确认”按钮即可删除该联系人。

4. 显示所有联系人,在应用程序中选择“显示所有联系人”选项,即可查看当前通讯录中的所有联系人信息。

源代码:```java。

public class Contact {。

private String name;private String phone;private String email;public Contact(String name, String phone, String email) {。

= name;this.phone = phone;this.email = email;}。

设计报告(通讯录)

设计报告(通讯录)

宁波大红鹰学院信息工程学院课程设计报告项目名称:通讯录项目组长:于洁琼项目成员:于洁琼、蒋雪婷、徐奕宁班级名称:11信管1班(本)专业名称:信息管理与信息系统完成时间:2012年3月28信息工程学院制一、案例描述(小四号字体,段前断后0.5行)1.、总体描述通讯录是大家十分熟悉的系统,主要是方便的进行个人信息查询,本系统以C语言为基础,提供简单、易操作的用户操作界面,实现好、对通讯录的管理,而制作该通讯录也是需要更加综合的C语言的知识。

现在我们要求设计一个通讯录,而通讯录管理采用C-free 开发工具,这要实现对联系人的信息进行添加、删除、显示、查找、修改和保存等功能,而联系人的信息最终保存在文件中,同时系统简单的操作界面用于用户与系统之间的交互,而我们实现的拓展功能也是很有意义,更加方便,使整个通讯录在色彩方面更加有特色!2、模块描述1)菜单设计:通讯录管理系统实现对个人信息的处理,包括添加新联系人、删除联系人、修改联系人信息、查找联系人等功能,而对菜单的设计,我们小组对其进行了更加详细、更加清晰化的设计,当系统开始运行时,界面首先停留在“文件导入成功”界面,有两个选择,一是显示所有信息,二是回主菜单,我们为的就是可以更加清晰直接显示上一次记录的所有信息,而当选择二时,界面进入了正式菜单,系统允许用户在0—5之间选择要进行的操作,输入其他的字符都是无效的,系统给出出错的提示信息。

如果输入“1”,则调用add()函数,添加新的联系人信息;如果输入“2”,则调用delete_rec函数,删除联系人信息;如果输入“3”,则调用update()函数,修改联系人信息;如果输入“4”,则调用search 函数,查找联系人信息;如果输入“5”,则调用show函数,显示所有的联系人信息;如果输入“0”,则调用quit函数,退出系统。

在添加、删除和修改函数结束后需要调用save函数,保存所有的联系人信息到文件。

通讯录详细设计报告概要

通讯录详细设计报告概要

软件测试实训-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()。

通讯录课程设计报告

通讯录课程设计报告

通信录管理软件的设计1.设计目的通过C 语言知识编写程序实现通信录管理系统,编写的通信录管理系统能够达到预期的目标。

通信录系统能够实现以下功能:(1)建立通信录信息,信息包含编号、姓名、性别、电话、城市、邮箱等; (2)系统能够提供添加、查找、显示、保存、删除和修改通信录信息的功能; (3)能够提供安不同方式查询的功能;如按姓名、电话、地址等查询; (4)能够将通信录信息保存在文件中;(5)能够按表格方式输出通信录信息。

系统功能需求分析(1)添加:向通信录中添加信息 (2)显示:显示通信录中的信息 (3)删除:删除通信录中的信息 (4)查询:查询通信录中的信息 (5)修改:修改通信录中的信息(6)保存:输入文件名(带后缀名)后,即可将通信录信息保存到文件2.概要设计2.1系统功能主要模块框图(1)添加:用户可以添加通信录记录,依次输入编号、姓名、性别、电话号码、城市、邮箱通信录添加显示删除修改查询保存后,会提示是否继续添加;如果是,则继续添加信息;如果否,则完成添加通信录信息。

(2)显示:这个通信录可以以表格的形式输出通信录里记录的所有信息。

(3)删除:用户输入想要删除该联系人的姓名后,会自动删除所记录的内容。

(4)查询:用户可以进行联系人查询,查询方式包括姓名、电话、城市三种。

(5)修改:用户可以修改联系人的信息,依次输入新的编号、姓名、性别、电话号码、城市、邮箱后即可完成相应的修改。

(6)保存:当输入文件名(带后缀名)后,就可以将通信录信息保存到文件。

根据题目要求定义如下结构体类型:头文件包含、全局变量定义和结构体定义源代码:#include<stdio.h> //标准输入、输出头文件#include<stdlib.h>#include<string.h> //包含字符串函数处理头文件typedef struct{char score; /*编号(NO.)*/char name[10]; /*姓名(Name)*/char num[15]; /*号码(Tel)*/char email[20]; /*邮箱(Eip)*/char sex[8]; /*性别(Gender)*/char city[20]; /*城市(City)*/}Person;2.2运行环境visual C++ 6.03.设计论述3.1添加通信录信息用户打开通信录想要添加信息时先进行一次判断,判断通信录的容量是否已满,如果容量已满则不能进行添加操作;反之,用户可以添加联系人的信息,如果想要继续添加则重复此操作。

通讯录管理系统课程设计报告

通讯录管理系统课程设计报告

通讯录管理系统课程设计报告一、引言通讯录管理系统是一种用于存储和管理联系人信息的应用程序,它可以帮助用户方便地记录和查找各种联系人信息。

在本课程设计报告中,我们将讨论通讯录管理系统的设计和实现过程,以及系统的功能特点和操作流程。

二、需求分析通讯录管理系统需要具备以下基本功能: 1. 添加联系人信息:用户可以输入姓名、电话号码、电子邮件地址等信息来添加新的联系人。

2. 查找联系人信息:用户可以通过姓名或电话号码等关键词来查找已添加的联系人信息。

3. 修改联系人信息:用户可以对已有联系人信息进行修改和更新。

4. 删除联系人信息:用户可以选择删除不需要的联系人信息。

5. 显示所有联系人信息:系统可以按照一定的格式将所有联系人信息展示给用户。

三、系统设计1. 数据结构为了存储联系人信息,我们可以使用一个包含姓名、电话号码、电子邮件地址等字段的结构体来表示每个联系人。

可以使用链表或数组来组织所有联系人信息。

2. 模块设计通讯录管理系统可以划分为以下几个模块: - 添加联系人模块:实现添加新联系人信息的功能。

- 查找联系人模块:实现根据关键词查找联系人信息的功能。

- 修改联系人模块:实现对已有联系人信息进行修改和更新的功能。

- 删除联系人模块:实现删除不需要的联系人信息的功能。

- 显示联系人模块:实现将所有联系人信息按照一定格式展示给用户的功能。

3. 用户界面设计用户界面应该简洁明了,包括各个功能的按钮或选项,以及输入框和显示信息的区域。

用户应该能够方便地进行各种操作和查看联系人信息。

四、系统实现1. 数据存储可以使用文件来存储联系人信息,也可以使用数据库来进行数据持久化。

2. 界面实现可以使用图形界面或命令行界面来实现用户交互功能,不同的界面设计会影响用户体验。

3. 功能实现根据需求分析中的功能,实现各个模块的功能代码,确保系统可以正确地完成相关操作。

五、功能测试在系统实现完毕后,需要进行功能测试,确保系统的各个功能都能正常运行,并且符合需求。

c通讯录课程设计报告

c通讯录课程设计报告

c通讯录课程设计报告一、课程目标本通讯录课程设计旨在通过实践活动,使学生在信息技术学科的基础上,掌握以下知识目标、技能目标和情感态度价值观目标:1. 知识目标:- 了解通讯录的基本概念、功能及在实际生活中的应用。

- 掌握通讯录的录入、修改、删除、查询等基本操作。

- 了解如何对通讯录进行分类、排序和筛选,以便快速查找和整理信息。

2. 技能目标:- 学会使用电子表格软件(如Microsoft Excel)创建、编辑和管理通讯录。

- 能够运用所学知识,设计并优化个人或团队的通讯录,提高信息处理效率。

- 培养学生的团队协作能力,通过小组讨论和分享,提高问题解决和沟通表达能力。

3. 情感态度价值观目标:- 培养学生珍惜个人信息,尊重他人隐私的观念。

- 增强学生的信息素养,认识到信息技术在生活中的重要性,激发对信息技术的学习兴趣。

- 通过对通讯录的学习和实际操作,培养学生的责任心和细致严谨的工作态度。

课程性质:本课程为实践性较强的信息技术课程,结合学生年级特点和教学要求,注重培养学生的动手操作能力和团队协作能力。

学生特点:考虑到学生所在年级,他们在信息技术方面已具备一定的基础,对新鲜事物充满好奇心,善于合作学习。

教学要求:结合课程目标和学科特点,教师应注重实践操作,引导学生主动探索、积极思考,将所学知识应用于实际生活中,达到学以致用的目的。

在教学过程中,教师需关注学生的学习进度,及时调整教学策略,确保课程目标的实现。

通过本课程的学习,使学生能够熟练掌握通讯录的制作和管理,提高个人信息素养。

二、教学内容根据课程目标,本章节教学内容围绕通讯录的制作和管理展开,确保内容的科学性和系统性。

以下是详细的教学大纲及教材关联内容:1. 通讯录概述- 介绍通讯录的定义、功能及应用场景。

- 教材章节:第一章 信息技术与日常生活。

2. 通讯录的基本操作- 学习通讯录的录入、修改、删除、查询等操作。

- 教材章节:第二章 电子表格软件的基本操作。

通讯录系统设计报告

通讯录系统设计报告

通讯录管理系统设计报告一、题目要求基于Struts2+JDBC+DAO,设计一个简单的网上名片管理系统,实现名片的增、删、改、查等操作。

二、需要实现的功能(1)用户登录与注册用户登录:在登录时,如果用户名和密码正确,进入系统页面;用户注册:新用户应该先注册,然后再登录该系统。

(2)名片管理增加名片:以仿真形式(按常用的名片格式)增加名片信息;修改名片:以仿真形式(按常用的名片格式)修改名片信息;查询名片:以模糊查询方式查询名片;删除名片:名片的删除由2种方式,即把名片移到回收站,把名片彻底删除。

(3)回收站管理还原:把回收站中的名片还原回收;彻底删除:把名片彻底从回收站删除;浏览/查询:可以模糊查询、浏览回收站中的名片。

二、类的设计实体类:user类(有name,password,email等属性),对应的表名是user,info类(有name,tel,email,address,state等属性)对应的表名为info ,数据库名为mingpian。

三、系统模块层次图四、系统运行过程及截图首次使用系统的用户需要先注册,注册页面如下:注册成功后,转到登陆页面:登陆成功后,进入到主页面:首页中显示了通讯录中的信息,左边为功能选择,可添加名片:添加成功后显示添加后的通讯录信息:可通过姓名查新信息:如有则显示所查人的信息:如没有则提示:可将信息放到回收站:可将回收站中的信息彻底删除:可将信息还原到通讯录中:也可修改名片信息:点击修改,进入修改页面:修改完后点击修改,将显示修改完后的通讯录的信息。

点击退出时将会回到登陆页面。

五、设计的优缺点优点:采用了frame框架,使界面功能更加一目了然。

更加有利于通讯录的管理。

缺点:在用户注册时没有判断用户输入的信息是否符合规则,在查询时只有根据姓名查询,没有模糊查询。

六、学习心得通过这次的大作业,让我对struts2技术有了更进一步的了解。

在编写代码的过程中,碰到了许多问题,通过问老师、同学及上网查询得到解决。

通讯录c课程设计报告

通讯录c课程设计报告

通讯录c 课程设计报告一、课程目标本课程为六年级信息技术学科“通讯录C”课程设计,旨在通过实践操作,使学生在知识、技能及情感态度价值观方面取得以下目标:1. 知识目标:(1)掌握通讯录的基本概念及作用;(2)学会使用电子表格软件(如Microsoft Excel)创建、编辑和保存通讯录;(3)了解通讯录信息分类和排序的方法。

2. 技能目标:(1)能够独立完成通讯录的创建、编辑和保存操作;(2)能够运用电子表格软件对通讯录进行信息分类和排序;(3)学会在电子表格中插入公式,实现通讯录信息的自动计算。

3. 情感态度价值观目标:(1)培养学生对信息技术的兴趣和热情,提高信息素养;(2)培养学生团队协作精神,学会在小组合作中共同解决问题;(3)引导学生认识到信息保护的重要性,养成信息安全意识。

本课程结合六年级学生的认知特点,注重实践操作,将知识目标、技能目标和情感态度价值观目标融入教学过程中,使学生能够在轻松愉快的氛围中学习信息技术,提高综合运用能力。

同时,课程目标具体、可衡量,便于教学设计和评估。

二、教学内容本章节教学内容依据课程目标,结合教材第四章“电子表格与数据处理”内容,具体安排如下:1. 通讯录基本概念与作用:介绍通讯录的定义、功能及在日常生活和工作中重要性。

2. 电子表格软件操作:(1)认识Microsoft Excel界面,学会基本操作;(2)创建新工作簿,编辑单元格内容;(3)保存和打开工作簿。

3. 通讯录创建与编辑:(1)设计通讯录表格结构;(2)录入联系人信息;(3)调整单元格格式,美化通讯录。

4. 通讯录信息处理:(1)运用公式进行信息统计;(2)使用排序和筛选功能,快速查找联系人;(3)分类汇总联系人信息。

5. 通讯录保护与分享:(1)设置密码保护通讯录;(2)导出和分享通讯录。

教学进度安排:共计4课时,分别为:1. 第1课时:通讯录基本概念与作用、电子表格软件认识;2. 第2课时:创建与编辑通讯录;3. 第3课时:通讯录信息处理;4. 第4课时:通讯录保护与分享。

通讯录程序设计报告

通讯录程序设计报告

前言一、设计内容与设计要求1.设计目的:当今时代是飞速发展的信息时代。

在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。

计算机的最大好处在于利用它能够进行信息管理。

使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。

尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。

计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。

本系统就是为了管理而设计的。

通讯录管理系统的建立是可以有效节省同学、朋友、客户间日常交流的投资(指时间、精力),其设计理念很简单,变传统的纸张与笔录方式为计算机自动化进行通讯录信息管理系统,既省时间又提高效率。

因此在系统构建时,只要我们本着丰富通讯录的信息资源,为用户提供最为方便的快捷的信息阅览途径和管理手段,去吸引用户,那么通讯录管理系统是完全可行的。

通讯录软件设计的灵感来源于生活和工作中的需要。

如今,随着社会的飞速发展,信息时代改变着人们的各种生活方式。

人们的联系信息,联系方式变得复杂而多样化,以前所使用的各种电话簿、通讯本等小册子由于查找不方便、功能单一等缺陷已经无法胜任它的“时代使命”,而现在各种手机,商务通内设的电话簿尽管携带方便却又挥之不去其“记录量少,界面小,浏览不方便”的缺点。

工作中看到有些人巧妙地利用excell或者word制表格来建立通讯录,每逢用时再打开,可是查找极其不便,维护起来也麻烦。

通讯录系统设计,它的内容对于计算机来说是至关重要的,通讯录系统为计算机的使用者提供充足的信息和快捷的查询手段。

用c语言构建的通讯录系统设计,通过课上学到的和查阅一些文献的一些关于结构体[1]、数组、指针、函数以及循环函数的运用[1]和字符串的处理[2]等基本知识可以初步的实现通讯录的输入、显示、查找、删除、快速查询等通讯录简单而用的一些实用的功能,给人们带来更多的方便。

本管理系统设计合理、操作方便、运行稳定、功能完备,具有较高的实用价值。

通讯录实验报告

通讯录实验报告

通讯录实验报告通讯录实验报告引言:通讯录是一种用于存储和管理联系人信息的工具。

随着科技的进步,我们已经不再依赖纸质通讯录,而是使用电子通讯录来管理我们的联系人。

在本次实验中,我们将探索通讯录的设计和功能,并测试其在现实生活中的实用性。

一、通讯录的设计原则通讯录的设计应遵循以下原则:简洁、易用、高效。

首先,通讯录应该能够简洁地展示联系人的基本信息,如姓名、电话号码和电子邮件地址等。

其次,通讯录的界面应该简单直观,用户可以轻松地添加、编辑和删除联系人信息。

最后,通讯录应该能够快速地搜索和筛选联系人,以提高用户的工作效率。

二、通讯录的功能1. 添加联系人:通讯录应该提供一个方便的界面,让用户可以轻松地添加联系人信息。

用户可以输入姓名、电话号码、电子邮件地址等基本信息,并可以选择添加其他附加信息,如生日、地址等。

2. 编辑联系人:通讯录应该允许用户随时编辑联系人信息。

当联系人的电话号码或电子邮件地址发生变化时,用户应能够快速地更新这些信息。

此外,通讯录还应提供一个简单的界面,让用户可以添加或删除联系人的附加信息。

3. 删除联系人:通讯录应该允许用户删除不再需要的联系人信息。

当用户不再需要某个联系人的信息时,他们应该能够轻松地将其从通讯录中删除。

4. 搜索联系人:通讯录应该提供一个快速、准确的搜索功能,以帮助用户快速找到他们需要的联系人。

用户可以通过输入姓名、电话号码或电子邮件地址等关键词来搜索联系人。

5. 分组管理:通讯录应该允许用户将联系人分组,以便更好地管理他们的联系人信息。

用户可以根据个人喜好或工作需求创建不同的分组,并将相关联系人归类到相应的分组中。

三、通讯录的实用性测试为了测试通讯录的实用性,我们进行了一项实验。

我们邀请了一些参与者使用不同的通讯录应用程序,并要求他们完成一系列任务,如添加联系人、编辑联系人信息、删除联系人、搜索联系人等。

通过观察参与者的表现和收集他们的反馈,我们得出了以下结论:1. 大多数参与者反馈通讯录应用程序的界面设计简洁、直观,易于使用。

手机通讯录设计报告

手机通讯录设计报告

C 语言程序设计报告1:设计目的模拟手机通讯录,能简单的实现分类查看功能,增加功能,拨号功能,查找功能,修改功能,删除功能。

2:总体设计3:详细设计共有六个大模块,即是六个函数实现上述六个功能。

void new_phone (struct phone_list phones[]);新建函数参数是phones[];void search_phone (struct phone_list phones[] ,char*name);查询函数。

参数是name,通过输入的name,进到这个函数中,实现查询;void Dial_phone (struct phone_list phones[],char*name );拨号函数,参数的作用和上面是一样的void show_dial_name(struct phone_list phones[]);这个是显示所有联系人的名字的函数,也许这个函数可以不用,但我们就设计这个比较符合要求的void FenLei_phone (struct phone_list phones[],char *sort);分类查询函数;通过输入的类别sort进入到子函数中;void correct_phone (struct phone_list phones[],char *name );修改信息函数;通过参数name进到子函数中void delete_phone (struct phone_list phones[],char *name);删除函数;通过参数name进到子函数中4:调试与测试由于这是一个模块化的程序设计,所以我们采用的是一个函数一个函数去测试和调试。

有时遇到的是忘了加;或者是忘了定义某个变量这样的小错误,直接改过来就行。

有时候遇到的就是一些写法上的错误,这时候就需要我们去改代码例如:switch (choice)case 1:char m[20];printf("请输入新的姓名:\n");scanf("%s",&m[20]);strcpy(phones[i].name,m[20]);break;}由于我们小组成员c语言学的不怎么好,所以犯了这样的低级错误不过经过讨论都一一改正了。

【设计】通讯录毕业设计报告书

【设计】通讯录毕业设计报告书

【关键字】设计摘要通讯录(英文:address book),一般在日常生活中用笔记录,也在手机,电脑,电子字典等电子产品中拥有这个功能。

通讯录作为通讯录地址的书本,当今的通讯录可以涵盖多项内容。

如:姓名、电话号码、单位电话、移动电话、传真号、电子邮件、QQ、MSN、个人主页、公司、街道、邮编、生日、大头帖、车牌、银行帐号、俱乐部名称、爱好等等。

通讯录也可采用纸张印刷,然后装订成册,显示每个人的联系方法,地址等,称之为通讯录。

本册通讯录分为简装和精装两种,精装通讯录可用皮革或真皮做为通讯录的封面,可以长期保存。

适合企业通讯录,同学通讯录,大学通讯录等。

网络通讯录是一种利用互联网或实现通讯录网络存储和备份的应用/服务。

网络通讯录最重要的一项功能是可以在不同的设备间实现联系人信息的同步。

例如:你可以在一台电脑上录入某个联系人的信息,然后在手机或者另外一台电脑中读取或修改该信息。

当然,你也可以在个人电脑上录入你的联系人的手机\电话、Email、QQ、MSN、通信地址等通讯录信息,或对以前的信息进行分组、管理和更新,在你的许可下,该联系人可以看到他所在组内的其他联系人信息,从而实现通讯录共享,而且你还可以直接通过网络通讯录跟你的家人、朋友及同事拨打网络电话、发短信、邮件、传真等。

移动通讯录是一种利用互联网或移动互联网实现通讯录信息同步更新和备份的应用/服务。

你可以在个人电脑、掌上电脑、移动电话等任何联网设备上录入你的联系人的手机\电话号码、Email、QQ、MSN、通信地址等通讯录信息,或对以前的信息进行分组、管理和更新,在你的许可下,该联系人可以看到他所在组内的其他联系人信息,从而实现通讯录共享,如果该联系人更新自己的联系信息,你的通讯录会自动更新,实现同步通讯录,并留下旧版本的通讯录信息。

目录第一章概述1.1 语言简介在世界范围内,Internet正以一种不可阻挡的势头迅速发展。

人们可以通过Internet,以不同的方式相互沟通、从Internet上获取自己想要的一切信息,为此,人们在Internet上制定了各种方法。

手机通讯录实验报告及使用说明(附源代码)

手机通讯录实验报告及使用说明(附源代码)

手机通讯录实验报告及使用说明(附源代码)自查报告。

标题,手机通讯录实验报告及使用说明(附源代码)。

自查报告:
在进行手机通讯录实验及使用说明的撰写过程中,我仔细阅读
了实验要求,并按照要求完成了实验报告的撰写和源代码的整理。

在此过程中,我遇到了一些困难,但通过查阅资料和请教老师同学,最终顺利完成了任务。

在实验报告中,我详细描述了手机通讯录的功能和使用方法,
包括添加联系人、查找联系人、编辑联系人信息、删除联系人等操作。

我还附上了源代码,并对关键部分进行了解释和注释,以便他
人能够理解和使用。

在整个实验过程中,我学习到了许多关于手机通讯录的知识,
包括数据库的设计和操作、用户界面的设计和实现等。

通过动手实践,我加深了对这些知识的理解,并提升了自己的编程能力。

在撰写实验报告的过程中,我也注意到了一些自己的不足之处,比如在代码注释和格式上还有待改进。

因此,我会继续努力学习,
不断提升自己的编程水平和文档撰写能力。

总的来说,通过这次实验和撰写实验报告,我收获颇丰,不仅
掌握了手机通讯录的设计和实现方法,还提升了自己的综合能力。

我会继续努力,为以后更多的实验和项目做好准备。

自查人,XXX。

日期,XXXX年XX月XX日。

App Inventor手机通信录设计报告

App Inventor手机通信录设计报告

App Inventor手机通信录设计报告学号:13734118姓名:张凡专业:计算机网络管理与信息安全任务与要求任务:完成手机通信录的设计要求:1、完成界面设计,要求至少有3个以上的数据项;2、具有查找功能;3、能够保存;4、可以拨打电话、发短信;5、屏幕有背景图,且可以改变。

(可选)6、完成设计方案、设计成果、总结与思考一、设计方案通过电话簿的设计,可以实现联系人的姓名、手机号的增加、删除、保存、查询等一些基本信息,当然也要能实现打电话、发短信这些功能。

这对自己来说,有一定的难度,通过自己的慢慢摸索,终于完成了整个作业,程序也能很好的运行。

功能:1.程序启动:当程序启动后,会显示第一个联系人的姓名、手机号。

自己总共存储了5位联系人。

2.点击【下一个】键:当点击“下一个”键时,程序显示第二个联系人,再点击,就会显示第三个,以此类推;若当前联系人是最后一个,则点击“下一个”键时显示第一位联系人。

3.点击【上一个】键:当点击“上一个”键时,程序显示前一个联系人,再点击,就会显示再前一个,以此类推;若当前联系人是第一个,则点击“下一个”键时显示最后位联系人4.点击【添加】键:当用户点击“添加”键时,一个新的联系人被添加到电话列表中。

5.点击【删除】键:当用户点击“删除”键时,则当前联系人被从列表中删除。

6.点击【保存】键:屏幕上的人名和号码可以被修改,如果要保存修改的内容,则可以点击这个键完成。

7.点击【查找】键:当用户点击“查找”键时,也可以实现点击“上一个”、“下一个”键的效果,当然它的效果不仅仅指这个,可以查找到你所要找的联系人的信息。

8.点击【发信息】键:通过点击“发信息”键,来达到发信息的效果。

9.点击【打电话】键:通过点击“打电话”键,来达到打电话的效果。

二、设计成果组件设计逻辑设计1.程序启动:当程序启动后,会显示第一个联系人的姓名、手机号。

自己总共存储了5位联系人。

2.点击【下一个】键:当点击“下一个”键时,程序显示第二个联系人,再点击,就会显示第三个,以此类推;若当前联系人是最后一个,则点击“下一个”键时显示第一位联系人。

通讯录设计报告

通讯录设计报告

一、设计内容编程实现简单通讯录程序。

通讯者的基本信息包括编号、姓名、性别、年龄、宅电、手机电话等信息。

具体实现的管理功能如下:(1)输入并显示多个通讯者的信息;(2)可实现通讯者信息的添加;(3)查询(至少提供按姓名和手机查询两种方式)修改前先显示该通讯者的全部信息,然后询问是否确认修改,最后根据确认信息“Y”或“是”进行修改,否则不修改;;(4)修改(只提供按照姓名进行修改);删除(依据指定的信息删除如姓名、编号等),删除前需要进一步确认程序所显示的菜单内容如下:请选择下面的一个项目:1创建2添加3查询4修改5删除6显示7退出二、设计要求1用C语言实现系统;2利用数组或结构体实现上述题目的数据结构设计;3系统具有增加、查询、修改、删除、排序等基本功能;4系统各部分功能的使用采用菜单选择形式;5系统的各个功能模块要求用函数的形式实现;三、设计分析流程图主函数main():添加联系人函数creat():浏览函数viewlinkman():修改函数xiulinkman():删除函数deletelinkman:四、课程设计小结(1)程序设计中遇到的问题与解决方法:1.在创建时没有返回值,结果无法运行其他函数,将head返回,问题解决。

2.在输入字符串后一定要清除缓存;3.调试时最好是单独调试一个函数,单步调试。

(2)收获体会:一个好的程序需要不断的调试,只是手上写是不行的。

写程序需要耐心,深入研究。

尽量用较简便的代码完成想实现的内容。

学好编程就要多看好的程序,吸取其中的经验,在自己的编程过程中借鉴使用。

五、附源代码#include<stdio.h>#include <stdlib.h>#include<string.h>struct linkman{i nt num;c har cname[10];i nt age;c har sex;c har caddress[28];c har cmobile[15];c har chomephone[16];s truct linkman* next;};struct linkman*head;void menu()s ystem("cls");p rintf("\n\n");p rintf("-----------------------\t\t\t\n");p rintf(" 通讯录系统\t\t\t\n");p rintf(" 1.新建\t\t\t\n");p rintf(" 2.浏览\t\t\t\n");p rintf(" 3.查询\t\t\t\n");p rintf(" 4.修改\t\t\t\n");p rintf(" 5.删除\t\t\t\n");p rintf(" 0.退出\t\t\t\n");p rintf("-----------------------\t\t\t\n");p rintf("choose:");}void rescrchmenu(){s ystem("cls");p rintf("\t\t\t 查询\t\t\t\n"); p rintf("\t\t\t 1.按姓名查找\t\t\t\n"); p rintf("\t\t\t 2.按手机号查找\t\t\t\n");}struct linkman* creat(void){s ystem("cls");c har corder;s truct linkman*pointer,*input;re:p rintf("\t\t\t添加联系人\t\t\t\n");i nput=(struct linkman*)malloc(sizeof (struct linkman)); p rintf("请输入编号\n");s canf("%d",&input->num);f flush(stdin);p rintf("请输入姓名(<10位)\n");s canf("%s",input->cname);f flush(stdin);p rintf("请输入年龄\n");s canf("%d",&input->age);f flush(stdin);p rintf("请输入性别(woman/man)\n");i nput->sex=getchar();f flush(stdin);p rintf("请输入地址(<28位)\n");s canf("%s",input->caddress);f flush(stdin);p rintf("请输入手机号\n");s canf("%s",input->cmobile);f flush(stdin);p rintf("请输入宅电\n");s canf("%s",input->chomephone);f flush(stdin);i nput->next=NULL;i f(head==NULL){head=input;printf("添加联系人成功!\n");}e lse{pointer=head;while((pointer->next)!=NULL){pointer=pointer->next;}pointer->next=input;printf("添加联系人成功!\n");}p rintf("是否继续添加联系人?(y/Y)\n");c order=getchar();f flush(stdin);i f(corder=='y'||corder=='Y'){goto re;}r eturn head;}/*浏览函数*/void viewlinkman(struct linkman*head) {s ystem("cls");p rintf("\t\t\t联系人信息\n");s truct linkman*pointer=head;i f(head==NULL){printf("the linkman is empty.\n");system("pause");}i f(head!=NULL){p rintf("%-5s%-10s%-4s%-4s%-28s%-15s%-16s\n","num","na me","age","sex","address","mobile","homephone");while(pointer!=NULL){p rintf("%-5d%-10s%-4d%-4c%-28s%-15s%-16s\n",pointer->nu m,pointer->cname,pointer->age,pointer->sex,pointer->caddress,p ointer->cmobile,pointer->chomephone);pointer=pointer->next;}}s ystem("pause");}/*按姓名查找函数*/struct linkman* rescrchname(struct linkman*pointer) {c har namekey[10];i nt outputcheck;p rintf("请输入查找的姓名(<10位)\n");s canf("%s",namekey);f flush(stdin);p ointer=head;w hile(pointer!=NULL){if(!strcmp(namekey,pointer->cname))break;pointer=pointer->next;}i f(pointer!=NULL){printf("查找成功!\n");p rintf("%-5s%-10s%-4s%-4s%-28s%-15s%-16s\n","num","na me","age","sex","address","mobile","homephone");o utputcheck=printf("%-5d%-10s%-4d%-4c%-28s%-15s%-16s\n ",pointer->num,pointer->cname,pointer->age,pointer->sex,pointe r->caddress,pointer->cmobile,pointer->chomephone);if(outputcheck==0){printf("output error!");}}e lseprintf("查找不存在!");r eturn pointer;}/*按手机号查找*/void rescrchphone(struct linkman*pointer){c har mobilekey[10];i nt outputcheck;p rintf("请输入手机号\n");s canf("%s",mobilekey);f flush(stdin);p ointer=head;w hile(pointer!=NULL){if(!strcmp(mobilekey,pointer->cmobile))break;pointer=pointer->next;}i f(pointer!=NULL){printf("查找成功.\n");p rintf("%-5s%-10s%-4s%-4s%-28s%-15s%-16s\n","num","na me","age","sex","address","mobile","homephone");o utputcheck=printf("%-5d%-10s%-4d%-4c%-28s%-15s%-16s\n",pointer->num,pointer->cname,pointer->age,pointer->sex,pointe r->caddress,pointer->cmobile,pointer->chomephone);if(outputcheck==0){printf("output error!");}}e lseprintf("查找不存在");}/*修改函数*/struct linkman* xiulinkman(void){f flush(stdin);s ystem("cls");p rintf("\t\t\t修改联系人\n");c har namekey[10],corder;s truct linkman*pointer=head,*former=head;s truct linkman*ppt=NULL;i nt count=1,in=1;i f(head==NULL){printf("通讯录是空的!");}e lse{printf("请输入查找姓名\n");scanf("%s",namekey);fflush(stdin);while(pointer!=NULL){if(!strcmp(namekey,pointer->cname))break;pointer=pointer->next;count++;}if(count!=1){while(former!=NULL&&in<count-1){former=former->next;in++;}}if(pointer!=NULL){printf("查找成功!\n");p rintf("%-5s%-10s%-4s%-4s%-28s%-15s%-16s\n","num","na me","age","sex","address","mobile","homephone");p rintf("%-5d%-10s%-4d%-4c%-28s%-15s%-16s\n",pointer->nu m,pointer->cname,pointer->age,pointer->sex,pointer->caddress,p ointer->cmobile,pointer->chomephone);ppt=(struct linkman*)malloc(sizeof (struct linkman));printf("input new record:\n");printf("请输入编号\n");scanf("%d",&ppt->num);fflush(stdin);printf("请输入姓名(<10位)\n");scanf("%s",ppt->cname);fflush(stdin);printf("请输入年龄\n");scanf("%d",&ppt->age);fflush(stdin);printf("请输入性别(woman/man)\n"); ppt->sex=getchar();fflush(stdin);printf("请输入地址(<28位)\n");scanf("%s",ppt->caddress);fflush(stdin);printf("请输入手机号\n");scanf("%s",ppt->cmobile);fflush(stdin);printf("请输入宅电\n");scanf("%s",ppt->chomephone);fflush(stdin);ppt->next=NULL;printf("是否保存修改?(y/n)\n");corder=getchar();fflush(stdin);if(corder=='y'||corder=='Y'){if(count==1){ppt->next=pointer->next;head=ppt;printf("修改成功!");}if(count!=1){ppt->next= pointer->next;former->next=ppt;}}else free(ppt);}elseprintf("查找不存在!");}r eturn head;}/*删除*/struct linkman* deletelinkman(void){f flush(stdin);s ystem("cls");p rintf("\t\t\t\delete\n");c har corder,namekey[10];s truct linkman*pointer=head,*former=NULL;i f(head==NULL){printf("the linkman is empty!");}e lse{printf("请输入姓名\n");scanf("%s",namekey);fflush(stdin);w hile(strcmp(namekey,pointer->cname)&&(pointer->next)!=NU LL){former=pointer;pointer=pointer->next;}if(!strcmp(namekey,pointer->cname)){printf("查找成功!\n");p rintf("%-5s%-10s%-4s%-4s%-28s%-15s%-16s\n","num","na me","age","sex","address","mobile","homephone");p rintf("%-5d%-10s%-4d%-4c%-28s%-15s%-16s\n",pointer->nu m,pointer->cname,pointer->age,pointer->sex,pointer->caddress,p ointer->cmobile,pointer->chomephone);printf("是否删除?(y)\n");corder=getchar();fflush(stdin);if(corder=='y'||corder=='Y'){if(pointer==head){head=pointer->next;}else{former->next=pointer->next;}printf("删除成功!");}}system("pause");}r eturn head;}/*查询*/void rescrch(struct linkman*head){c har corder,ss;s truct linkman*pointer=head;w hile(1){printf("\n");corder=getchar();fflush(stdin);if(corder=='1'){system("cls");rescrchmenu();rescrchname(pointer);}if(corder=='2'){system("cls");rescrchmenu();rescrchphone(pointer);}printf("是否继续查找?(n/N)\n");fflush(stdin);system("cls");if(ss=='n'||ss=='N'){break;}rescrchmenu();}}void main(){c har corder;h ead=NULL;w hile(1){menu();c order=getchar();f flush(stdin);s witch(corder){c ase '1':head=creat();break;c ase '2':viewlinkman(head);break;c ase '3':rescrch(head);break;c ase '4':head=xiulinkman();break;c ase '5':head=deletelinkman();break;c ase'0':exit(0);}}}六、参考文献《C语言程序设计》。

通讯录管理系统课程设计报告

通讯录管理系统课程设计报告

设计课题题目一、课程设计目的与要求1.课程设计目的(1)综合运用之前所学知识(选择控制,循环控制,数组,函数,指针,结构体和文件等)来完成一个简单的信息管理程序的设计。

(2)充分体现和体会函数在程序设计中的必要性和实用性,并反映主函数main()在程序设计中的实现思路和方法。

2. 课程设计要求制作一个通讯录系统。

(1)该程序具有查找、添加、修改、删除功能。

(2)通讯录包括:姓名、电话、街道、城市、省、邮编等。

二、总体设计根据系统的要求,系统总体设计如图1所示。

三、详细设计1、数据结构设计#include<stdio.h> /*标准输入输出函数库*/#include<stdlib.h> /*标准函数库*/#include<string.h> /*字符串函数库*/#define FILENAME "phone.dat"struct date //定义一个结构体类型数组{ char name[10]; /*姓名*/char phone[12]; /*电话*/char email[20]; /*邮箱*/char QQ[20]; /*QQ*/} per[10];int menu() //主菜单选择函数2.函数说明(1) 主函数main()允许用户通过菜单进行功能选择,使用相应的功能代码来调用对应的函数功能。

(2)四、程序清单1、头文件#include<stdio.h> /*标准输入输出函数库*/#include<stdlib.h> /*标准函数库*/#include<string.h> /*字符串函数库*/#define FILENAME "phone.dat"2、主函数void main() //主函数{int n=0,i;while(1){ switch (menu()){ case 1: { printf("\n\t 通讯信息录入\n"); //信息录入n=Input(per, n);}break;case 2:printf("\n\t\t\t 通讯录记录表\n"); //显示记录Display(per,n);break;case 3:printf("\n\t保存功能\n");WritetoText(per,n); //保存数据printf("\t");system("pause"); //操作完成后进行暂停break;case 4:printf("\n\t从通讯录中删除记录\n");n=Delete_a_record(per,n); //删除记录printf("\t");system("pause");break;case 5:printf("\n\t修改通讯录中的记录\n");Change(per,n); //修改数据printf("\t");system("pause");break;case 6:printf("\n\t添加记录到通讯录\n"); //添加记录n=Input(per,n);break;case 7:printf("\n\t在通讯录中查找记录\n");Query_a_record(per,n); //查找记录printf("\t");system("pause"); //从程序里调用”pause”命令break;case 0:printf("\n\t\t谢谢使用,再见!\n"); //结束程序printf("\n\t\t");system("pause");exit(0);}五、总程序和分工执行结果#include<stdio.h> /*标准输入输出函数库*/#include<stdlib.h> /*标准函数库*/#include<string.h> /*字符串函数库*/#define FILENAME "phone.dat"struct date //定义一个结构体类型数组{ char name[10]; /*姓名*/char phone[12];char email[20]; /*邮箱*/char QQ[20];}per[10];int menu() //主菜单选择函数{ int c; //定义一个整型变量do{system("cls"); //清屏printf("\t*******通讯录*******\n");printf("\t--------------------\n");printf("\t 1、通讯信息录入\n");printf("\t 2、通讯信息显示\n");printf("\t 3、通讯信息保存\n");printf("\t 4、通讯信息删除\n");printf("\t 5、通讯信息修改\n");printf("\t 6、通讯信息增加\n");printf("\t 7、通讯信息查询\n");printf("\t 0. 退出\n");printf("\t--------------------\n");printf("\t请您选择(0-7):");scanf("%d",&c);}while(c>7&&c<0);return(c);}int Input(struct date per[10],int n){ int i=0;char sign,x[10];while(sign!='n'&&sign!='N'){ printf("\t姓名:");scanf("%s",per[n+i].name);printf("\t电话号码:");scanf("%s",per[n+i].phone);printf("\t电子邮箱:");scanf("%s",per[n+i].email);printf("\tQQ:");scanf("%s",per[n+i].QQ);gets(x);printf("\n\t是否继续添加?(Y/N)");fflush(stdin); //清空缓存scanf("%c",&sign);i++;}return(n+i);}void writeToFile(struct date per[10],int n){ FILE *fp=NULL;int i=0;fp=fopen("phone.dat","wb");if(fp==NULL){ printf("打开文件出错!\n");exit(0);}for(i=0;i<10;i++)fwrite(&per[i],sizeof(per),1,fp); //把字节为1的信息写入文件fclose(fp);}void Display(struct date per[10],int n){ int i;printf("----------------------------------------------------------------------\n"); //格式/printf(" 姓名电话号码QQ 电子邮箱\n");printf("----------------------------------------------------------------------\n");for(i=1;i<n+1;i++){printf("%-15s%-14s%-14s%-14s\n",per[i-1].name,per[i-1].phone,per[i-1].QQ,per[i-1].email);if(i>1&&i%10==0){ printf("\t-----------------------------------\n");printf("\t");system("pause");printf("\t-----------------------------------\n");}}printf("----------------------------------------------------------------------\n");system("pause");}int Delete_a_record(struct date per[10],int n){ char s[20];int i=0,j;printf("\t请输入想删除记录中的名字:");scanf("%s",s);while(strcmp(per[i].name,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return(n);}for(j=i;j<n-1;j++){ strcpy(per[j].phone,per[j+1].phone);strcpy(per[j].name,per[j+1].name);strcpy(per[j].QQ,per[j+1].QQ);strcpy(per[j].email,per[j+1].email);}printf("\t\t\t已经成功删除!\n");return(n-1);}void Query_a_record(struct date per[10],int n){ int m;printf("\t\n请选择查询方式:\n");printf("\t┌──────┐\n");printf("\t│1------姓名│\n");printf("\t│2------电话│\n");printf("\t│3------返回│\n");printf("\t└──────┘\n");printf("请选择:");scanf("%d",&m);while(m!=1&&m!=2&&m!=3&&m!=4){printf("输入错误,请重新选择:");scanf("%d",&m);}if(m==1){ char s[20];int i=0;printf("\t请输入想查询的姓名:");scanf("\t%s",s);while(strcmp(per[i].name,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return;}printf("\t此人QQ: %s\n",per[i].QQ);printf("\t电话号码: %s\n",per[i].phone);printf("\t电子邮箱: %s\n",per[i].email);} ;if(m==2){ char s[20];int i=0;printf("\t请输入想查询的电话:");scanf("\t%s",s);while(strcmp(per[i].phone,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return;}printf("\t此人姓名: %s\n",per[i].name);printf("\t此人QQ: %s\n",per[i].QQ);printf("\t电子邮箱: %s\n",per[i].email);} ;}void Change(struct date per[10],int n){ char s[20];int i=0;printf("\t请输入想修改的记录中的名字:");scanf("%s",s);while(strcmp(per[i].name,s)!=0&&i<n) i++;if(i==n){ printf("\t通讯录中没有此人!\n");return;}printf("姓名:");scanf("%s",per[i].name);printf("电话号码:");scanf("%s",per[i].phone);printf("QQ:");scanf("%s",per[i].QQ);printf("电子邮箱:");scanf("%s",per[i].email);printf("\n修改成功!");}void WritetoText(struct date per[10],int n){ int i=0;FILE *fp; //定义文件指针char filename[20]; //定义文件名printf("\t保存到文件\n"); //输入文件名if((fp=fopen("phone.dat","w"))==NULL){ printf("\t无法打开文件\n");system("pause");return;}fprintf(fp,"***************************************通讯录********************************\n");fprintf(fp," 姓名电话号码QQ 电子邮箱\n");fprintf(fp,"-----------------------------------------------------------------------------\n");while(i<n){ fprintf(fp,"%-10s\t%-3s\t%-20s\t%-20s\n",per[i].name,per[i].phone,per[i].QQ,per[i].email);i++;}fprintf(fp,"-------------------------------------------------------------------------\n");fprintf(fp,"********************************共有%d条记录***************************\n",n);fclose(fp); //关闭文件printf("保存成功!\n");}void main() //主函数{ int n=0,i;while(1){ switch (menu()){ case 1: { printf("\n\t 通讯信息录入\n"); //信息录入n=Input(per, n);}break;case 2:printf("\n\t\t\t 通讯录记录表\n"); //显示记录Display(per,n);break;case 3:printf("\n\t保存功能\n");WritetoText(per,n); //保存数据printf("\t");system("pause"); //操作完成后进行暂停break;case 4:printf("\n\t从通讯录中删除记录\n");n=Delete_a_record(per,n); //删除记录printf("\t");system("pause");break;case 5:printf("\n\t修改通讯录中的记录\n");Change(per,n); //修改数据printf("\t");system("pause");break;case 6:printf("\n\t添加记录到通讯录\n"); //添加记录n=Input(per,n);break;case 7:printf("\n\t在通讯录中查找记录\n");Query_a_record(per,n); //查找记录printf("\t");system("pause");break;case 0:printf("\n\t\t谢谢使用,再见!\n"); //结束程序printf("\n\t\t");system("pause");exit(0);}}}图1 通讯录主菜单结果图2 信息录入图3 通讯信息显示图4 通讯信息保存五、调试与测试所谓程序调试是对程序的查错和排错。

通讯录详细设计报告

通讯录详细设计报告

软件测试实训-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()。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件测试实训-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 删除组操作,若组中无人,则删除不了组。

相关文档
最新文档