通讯录系统程序设计报告
通讯录管理系统c语言课程设计报告课题简介
通讯录管理系统C语言课程设计报告
一、课题简介
通讯录管理系统是一种常见的应用程序,旨在帮助用户组织和管理他们的联系人信息。
本课程设计将利用C语言来实现一个基本的通讯录管理系统,旨在帮助学生掌握C语言编程的基本知识和技能。
二、设计目的
1.帮助学生熟悉C语言的基本语法和编程逻辑;
2.提高学生对数据结构的理解和运用能力;
3.培养学生的编程能力和软件开发思维;
4.提高学生的团队合作和项目管理能力。
三、设计内容
本课程设计将围绕以下几个方面展开:
1.用户界面设计:设计一个简洁直观的用户界面,包括菜单选项、输
入输出界面等;
2.数据结构设计:设计通讯录数据结构,包括联系人姓名、电话号码
等信息的存储方式;
3.功能实现:实现通讯录管理系统的基本功能,包括添加联系人、删
除联系人、查找联系人等操作;
4.文件操作:实现通讯录数据的读写操作,将联系人信息保存到文件
中,以便下次运行时读取;
5.错误处理:处理用户输入错误等异常情况,保证程序的稳定性和可
靠性。
四、预期效果
通过本课程设计,学生将能够掌握以下技能:
1.掌握C语言基本语法和编程逻辑;
2.熟悉数据结构的设计和运用;
3.提高编程能力和软件开发思维;
4.培养团队合作和项目管理能力。
五、总结
通过设计一个通讯录管理系统的C语言课程项目,学生将在实践中加深对C语言的理解和应用,提高编程技能和解决问题的能力。
希望本课程设计能够为学生的编程学习提供一定的帮助和指导。
以上为《通讯录管理系统C语言课程设计报告》的简要介绋,希望能够为课程设计的顺利进行提供一定的参考和指引。
通讯录管理系统c语言课程设计报告(一)
通讯录管理系统c语言课程设计报告(一)通讯录管理系统C语言课程设计报告1. 简介通讯录管理系统是一款基于C语言开发的软件,旨在帮助用户方便地存储、查找、编辑和删除联系人信息。
本报告将对该系统的功能和设计进行详细介绍。
2. 系统功能通讯录管理系统具备以下主要功能:•添加联系人:用户可以输入联系人的姓名、电话号码、电子邮件等信息,并将其添加到通讯录中。
•查找联系人:用户可以根据姓名或电话号码等方式,快速查找通讯录中的联系人信息。
•编辑联系人:用户可以修改通讯录中已有联系人的信息,如电话号码、电子邮件等。
•删除联系人:用户可以从通讯录中删除特定联系人。
•显示通讯录:用户可以查看通讯录中的所有联系人信息。
•退出系统:用户可以选择退出通讯录管理系统。
3. 系统设计数据结构通讯录管理系统主要使用以下数据结构存储联系人信息:•结构体:定义了一个联系人的数据结构,包括姓名、电话号码、电子邮件等字段。
•数组:用于存储多个联系人信息,构成通讯录。
数组的每个元素对应一个联系人的结构体。
主要函数添加联系人函数void addContact(struct Contact contacts[], int *num Contacts)•功能:向通讯录中添加一个联系人。
•输入参数:通讯录数组contacts、通讯录中联系人数量numContacts的指针。
•输出:无。
查找联系人函数void searchContact(struct Contact contacts[], int n umContacts)•功能:根据用户提供的关键词在通讯录中查找联系人。
•输入参数:通讯录数组contacts、通讯录中联系人数量numContacts。
•输出:无。
编辑联系人函数void editContact(struct Contact contacts[], int num Contacts)•功能:根据用户选择的联系人在通讯录中编辑联系人信息。
通讯录管理系统设计报告
通讯录管理系统设计报告一、引言通讯录在日常生活中扮演着重要的角色,用来存储和管理各种联系人信息,方便人们随时找到需要联系的人或组织。
随着移动互联网的普及,通讯录的管理变得更加便捷和高效。
为了提高通讯录的管理效率,我们设计并开发了一款通讯录管理系统。
二、系统概述通讯录管理系统是一个基于Web的应用程序,用户可以通过浏览器访问系统,进行通讯录的管理操作。
系统主要包括以下功能:•用户登录与注册:用户可以注册新账号,并通过账号密码登录系统。
•联系人管理:用户可以添加、编辑、删除联系人信息,包括姓名、电话号码、邮箱等。
•分组管理:用户可以创建分组并将联系人归类到不同分组。
•搜索功能:用户可以通过关键词搜索联系人信息。
•导出和导入功能:用户可以将联系人信息导出为Excel表格,并可以通过Excel文件导入联系人到系统中。
三、系统架构通讯录管理系统采用了前后端分离的架构,前端使用Vue.js框架开发,提供友好的用户界面;后端使用Node.js和Express框架搭建RESTful API,负责数据的存储和管理。
系统中的数据存储在MySQL数据库中,用户的密码使用bcrypt进行加密存储,确保用户信息的安全性。
同时,系统对用户权限进行了细致管理,保障用户在系统中的数据安全。
四、系统界面系统的界面设计简洁直观,用户可以轻松进行操作。
主要包括登录页面、通讯录首页、联系人管理页面、分组管理页面等。
用户登录页面:[登录页面截图]通讯录首页:[通讯录首页截图]联系人管理页面:[联系人管理页面截图]五、系统特色•简洁高效:系统操作简单直观,提供了快速的联系人管理功能。
•个性化定制:用户可以根据自己的需求创建分组,快速查找联系人。
•数据安全:采用了加密技术和权限管理,确保用户数据的安全性。
•导入导出功能:支持Excel文件导入导出,方便用户管理大批量联系人信息。
六、未来展望通讯录管理系统将继续进行优化和迭代,引入更多智能化功能,如联系人推荐、消息提醒等,提升用户体验。
通讯录管理系统课程设计报告系统存储结构
通讯录管理系统课程设计报告系统存储结构一、引言通讯录管理系统是一种方便快捷地存储和管理联系人信息的应用程序。
在该系统中,数据的存储结构至关重要,它直接关系到系统的性能和稳定性。
本文将介绍通讯录管理系统的系统存储结构设计,包括数据的组织方式、存储介质选择等内容。
二、存储结构设计1. 数据的组织方式在通讯录管理系统中,联系人信息是系统中最主要的数据之一。
为了高效地存储和管理这些信息,我们选择采用数据库的方式进行组织。
数据库将联系人信息按照一定的结构进行组织和存储,方便系统对数据的检索和更新。
2. 数据库的选择在选择数据库时,我们考虑到系统的使用特点和性能要求,最终选择了关系型数据库。
关系型数据库具有良好的数据一致性和完整性,能够满足系统的数据管理需求。
同时,支持 SQL 查询语言的特性也使得对数据进行灵活的操作成为可能。
3. 数据表设计在关系型数据库中,数据是以表的形式进行存储的。
针对通讯录管理系统的需求,我们设计了以下几张表:•用户表:用于存储系统的用户信息,包括用户名、密码等;•联系人表:用于存储用户的联系人信息,包括姓名、电话号码、邮箱地址等;•分组表:用于将联系人进行分类管理,方便用户对联系人信息进行组织。
每张表之间通过外键进行关联,确保数据的一致性和完整性。
三、存储介质选择除了数据库存储外,系统还需要选择适当的存储介质来保存一些系统配置信息和用户的登录状态等数据。
我们选择了文件系统作为存储介质,将这些数据以文件的形式进行存储。
四、存储结构的优化为了提高系统的性能和响应速度,我们对存储结构进行了一定的优化。
主要包括以下几点:•索引设计:对关键字段建立索引,加快检索速度;•归档策略:定期对系统中的数据进行归档,减少存储空间的占用;•缓存机制:使用缓存技术对频繁访问的数据进行缓存,减少数据库访问的频率。
五、总结系统存储结构的设计对于通讯录管理系统的性能和稳定性具有重要影响。
通过合理选择数据库和存储介质,并对存储结构进行优化,可以有效提高系统的用户体验和响应速度。
通讯录管理系统--C语言程序设计实习报告
C 语言课程设计题目:通讯录管理系统设计者:院系:数理学院专业:信息与计算科学班号:123111学号:***********指导教师:***2012年6月29日1.题目要求通讯录管理系统是具有数据插入、更新、删除、显示和查询功能的电话簿管理程序。
(1)数据包括姓名、工作单位、电话号码和E-MAIL地址等。
(2)可对记录中的姓名和电话号码进行更新。
(3)可增加和删除记录。
(4)可显示所有的保存的记录。
(5)可按姓名或电话号码进行查询。
2.需求分析1.信息记录要存放到文件中,要实现文件的输入、输出功能;2.实现数据的添加、删除、更新和显示,要提供输入、删除、更新和显示功能;3.要实现按人名或电话号码进行查询,因而要提供查找功能;4.应该提供键盘式选择菜单以实现功能选择。
5.采用模块化,由上到下的设计方法,通过数字选择菜单功能,上级菜单可进入下级菜单,下级菜单可返回上级菜单。
3.总体设计根据上面得需求分析,系统有菜单选择、数据输入、数据查找、数据更新、数据的存储等功能。
可以将系统设计分为四大模块,即显示、查找、更新(包括增加和删除)和退出,如图1所示。
其中,主要功能是显示、查询和更新三个模块。
4.详细设计4.1主函数主函数设计比较简洁,只提供输入、功能处理和输出部分得函数调用。
其中各功能模块采用菜单方式选择。
另外,菜单部分也可以写出函数。
具体流程图如图2所示。
【程序】main(){int n,w;do{puts("***************通讯录管理系统***************\n");puts("********************菜单********************\n");puts("1.显示通讯录\n");puts("2.查找\n");puts("3.更新\n");puts("4.退出\n");puts("********************************************\n");printf("选择功能(1-4):");scanf("%d",&n);if(n<1||n>4){w=1;getchar();}else {w=0;}}while(w==1);switch(n) /*选择功能*/{case 1:list();break; /*列出通讯录*/ case 2:find();break; /*查找*/case 3:choose();break; /*更新通讯录*/ case 4:printf("谢谢使用!\n\n"); /*退出*/ }}4.2各功能模块设计★数据结构通讯录的数据信息:姓名、工作单位、电话号码、E-MAIL均采用字符型数组,用结构体的形式,把各信息作为结构的成员。
c语言通讯录管理系统课程设计报告
C语言通讯录管理系统课程设计报告一、引言通讯录管理系统是一种常见的实用性软件,用于记录和管理个人或组织的联系人信息。
本文档旨在介绍一种基于C语言开发的通讯录管理系统的设计与实现。
通过本系统,用户可以方便地添加、删除、搜索和编辑联系人信息,实现了通讯录的基本功能。
二、系统需求分析本通讯录管理系统的主要功能包括: 1. 添加联系人:用户可以添加联系人的姓名、电话号码、邮箱等信息。
2. 删除联系人:用户可以根据联系人的姓名或电话号码删除对应的联系人信息。
3. 查找联系人:用户可以根据联系人的姓名或电话号码查找对应的联系人信息。
4. 修改联系人:用户可以修改已存在联系人的信息。
5. 显示所有联系人:用户可以查看通讯录中所有的联系人信息。
三、系统设计1. 数据结构设计为了实现通讯录管理系统,我们需要设计适当的数据结构来存储联系人信息。
在本设计中,使用结构体数组来表示每个联系人的信息,其中每个结构体包含姓名、电话号码、邮箱等成员变量。
struct Contact {char name[50];char phoneNumber[20];char email[50];};2. 功能模块设计本系统主要包含以下几个功能模块:a. 添加联系人模块用户可以选择添加新的联系人,输入姓名、电话号码和邮箱等信息后,系统将在通讯录中添加新的联系人。
b. 删除联系人模块用户可以根据输入的姓名或电话号码查找对应的联系人信息,并选择删除对应的联系人。
c. 查找联系人模块用户可以根据输入的姓名或电话号码查找对应的联系人信息,并在界面上显示查询结果。
d. 修改联系人模块用户可以根据输入的姓名或电话号码查找对应的联系人信息,并选择修改对应的联系人。
e. 显示所有联系人模块用户可以选择显示通讯录中所有的联系人信息,在界面上进行展示。
3. 系统框架设计本系统的整体框架如下:1. 主菜单显示2. 根据用户的选择,进入对应的功能模块四、系统流程图下图展示了通讯录管理系统的整体流程:主菜单 -> 用户选择功能模块 -> 执行对应模块功能五、代码实现以下为通讯录管理系统的部分核心代码实现,完整代码可参考附录部分。
数据结构课程设计通讯录管理系统报告
数据结构课程设计通讯录管理系统报告前言通讯录管理系统是一种常见的应用程序,用于帮助用户有效地组织和管理他们的联系人信息。
本报告旨在介绍和分析一个基于数据结构设计的通讯录管理系统,其中实现了基本的通讯录功能,并且通过合适的数据结构和算法进行优化。
功能需求通讯录管理系统需要实现以下基本功能: - 添加联系人信息 - 查找联系人信息 - 删除联系人信息 - 更新联系人信息 - 显示所有联系人信息数据结构选择为了实现通讯录管理系统的功能,我们选择使用链表作为数据结构。
链表是一种简单而灵活的数据结构,可以动态地添加或删除节点,非常适合存储联系人信息这种动态的数据。
在这里,我们采用双向链表,使得查找、插入和删除操作更加高效。
算法设计添加联系人信息添加联系人信息时,我们需要遍历链表找到合适的位置插入新节点,这里的算法复杂度为O(n),其中n表示链表的长度。
查找联系人信息查找联系人信息时,我们需要遍历链表查找目标节点,这里的算法复杂度为O(n)。
删除联系人信息删除联系人信息时,我们同样需要遍历链表找到目标节点并删除,其算法复杂度为O(n)。
更新联系人信息更新联系人信息时,我们首先需要查找到目标节点,然后进行更新操作,其算法复杂度也为O(n)。
系统优化为了提高系统的性能,我们可以通过以下几种方式进行优化: - 使用哈希表索引联系人信息,减少查找联系人的时间复杂度; - 引入缓存机制,减少频繁的IO 操作。
总结通过本报告的介绍和分析,我们了解了一个基于数据结构设计的通讯录管理系统的实现原理和优化方法。
在实际应用中,针对具体需求和场景,我们可以进一步优化系统性能,提升用户体验。
通讯录管理系统作为一种简单而实用的应用程序,将在日常生活中发挥重要作用。
c++通讯录管理系统课程设计报告
C++通讯录管理系统课程设计报告1. 引言本文档是关于C++通讯录管理系统课程设计的报告。
通讯录管理系统是一款方便用户管理联系人信息的应用程序。
本文将详细介绍设计理念、功能需求、系统设计及实现等方面的内容。
2. 功能需求为了满足用户对通讯录管理的需求,本系统应具备以下功能:2.1 添加联系人用户可以通过系统添加联系人信息,并包括联系人的姓名、电话号码、电子邮件地址等基本信息。
2.2 删除联系人用户可以选择删除通讯录中现有的联系人信息。
2.3 查询联系人用户可以根据联系人的姓名、电话号码等信息进行查询,以便于快速找到所需的联系人。
2.4 修改联系人信息用户可以对通讯录中现有联系人的信息进行修改,包括姓名、电话号码、电子邮件地址等。
2.5 显示所有联系人用户可以查看通讯录中所有联系人的详细信息。
3. 系统设计3.1 数据结构通讯录管理系统可以使用结构体来表示联系人的信息,每个联系人的信息包括姓名(name)、电话号码(phone)、电子邮件地址(email)等字段。
struct Contact {std::string name;std::string phone;std::string email;};3.2 类设计系统设计中包含以下类:3.2.1 ContactManagerContactManager是通讯录管理类,负责管理联系人信息的添加、删除、查询、修改和显示等操作。
成员函数:•void addContact(const Contact& contact): 添加联系人信息。
•void deleteContact(const std::string& name): 删除指定姓名的联系人信息。
•Contact findContact(const std::string& name): 根据指定姓名查询联系人信息。
•void modifyContact(const std::string& name, const Contact& contact): 修改指定姓名的联系人信息。
通讯录管理系统课程设计报告
通讯录管理系统课程设计报告一、引言通讯录管理系统是一种用于存储和管理联系人信息的应用程序,它可以帮助用户方便地记录和查找各种联系人信息。
在本课程设计报告中,我们将讨论通讯录管理系统的设计和实现过程,以及系统的功能特点和操作流程。
二、需求分析通讯录管理系统需要具备以下基本功能: 1. 添加联系人信息:用户可以输入姓名、电话号码、电子邮件地址等信息来添加新的联系人。
2. 查找联系人信息:用户可以通过姓名或电话号码等关键词来查找已添加的联系人信息。
3. 修改联系人信息:用户可以对已有联系人信息进行修改和更新。
4. 删除联系人信息:用户可以选择删除不需要的联系人信息。
5. 显示所有联系人信息:系统可以按照一定的格式将所有联系人信息展示给用户。
三、系统设计1. 数据结构为了存储联系人信息,我们可以使用一个包含姓名、电话号码、电子邮件地址等字段的结构体来表示每个联系人。
可以使用链表或数组来组织所有联系人信息。
2. 模块设计通讯录管理系统可以划分为以下几个模块: - 添加联系人模块:实现添加新联系人信息的功能。
- 查找联系人模块:实现根据关键词查找联系人信息的功能。
- 修改联系人模块:实现对已有联系人信息进行修改和更新的功能。
- 删除联系人模块:实现删除不需要的联系人信息的功能。
- 显示联系人模块:实现将所有联系人信息按照一定格式展示给用户的功能。
3. 用户界面设计用户界面应该简洁明了,包括各个功能的按钮或选项,以及输入框和显示信息的区域。
用户应该能够方便地进行各种操作和查看联系人信息。
四、系统实现1. 数据存储可以使用文件来存储联系人信息,也可以使用数据库来进行数据持久化。
2. 界面实现可以使用图形界面或命令行界面来实现用户交互功能,不同的界面设计会影响用户体验。
3. 功能实现根据需求分析中的功能,实现各个模块的功能代码,确保系统可以正确地完成相关操作。
五、功能测试在系统实现完毕后,需要进行功能测试,确保系统的各个功能都能正常运行,并且符合需求。
通讯录管理系统基于C#的程序设计实验报告
《W i n d o w s应用开发》综合实验报告课题名称:通讯录管理系统——系统功能实现模块专业:软件技术班级:103361姓名:杨雪学号:02指导教师:李莹成绩:完成日期:2012 年 5 月16 日目录1系统分析 (3)1.1需求分析 (3)1.2储存过程分析 (3)2系统的实现 (5)2.1登陆界面的实现 (5)2.2主窗体的实现 (6)2.3新增联系人实现 (12)1系统分析1.1需求分析本系统将实现多用户对各自通讯录的管理功能,包括:添加联系人、修改联系人、删除联系人、查找联系人。
为了体现多用户的特性,还必须包含一个用户管理子系统,作用是对用户的信息进行管理。
具体功能模块如图1-1所示图1-1功能模块1.2储存过程分析查找联系人模块使用储存过程来搜索数据,查找联系人的储存过程如下ALTER PROCEDURE [查找联系人](@name varchar(50),@phone varchar(50),@user varchar(50))ASif len(@user)=0 return 1if len(@name)=0 and len(@phone)=0beginselect 姓名,组别,工作单位,联系电话,电子邮箱? from [联系人]returnendif len(@name)<>0 and len(@phone)=0beginset @name='%'+@name+'%'select姓名,组别,工作单位,联系电话,电子邮箱? from [联系人]where 姓名like @namereturnendif len(@name)=0 and len(@phone)<>0beginselect姓名,组别,工作单位,联系电话,电子邮箱? from [联系人] where 联系电话like @phonereturnendif len(@name)=0 and len(@phone)<>0beginselect姓名,组别,工作单位,联系电话,电子邮箱? from [联系人] where 联系电话like @phone and 姓名like @namereturnend2系统的实现2.1登陆界面的实现登录窗体如图2-1图2-1处理流程图如图2-2示2-2录窗体流程图实现代码如下private void btnOK_Click(object sender, EventArgs e){try{if (txtUserName.Text.Trim() == "" || txtPassword.Text.Trim() == ""){MessageBox.Show("用户名不能为空,登录失败", MessageBoxButtons.OK, MessageBoxIcon.Error);return;}//验证用户SqlConnection conn = new SqlConnection("server=.;database=通讯录管理系统;uid=sa;pwd=521125;");StringBuilder sql = new StringBuilder();sql.AppendFormat("select count(*) from 用户where 用户名=杨雪and 密码='01'", txtUserName.Text.Trim(), txtPassword.Text.Trim());SqlCommand cmd = new SqlCommand(sql.ToString(), conn);conn.Open();int result = Convert.ToInt32(cmd.ExecuteScalar());conn.Close();if (result == 1){//登陆成功frmMain f = new frmMain();f.tsslUserName.Text = txtUserName.Text.Trim();f.Show();this.Hide();}else{MessageBox.Show("用户名错误!", "登录失败", MessageBoxButtons.OK, MessageBoxIcon.Error);return;}}catch (Exception ee){MessageBox.Show("发生错误!" + ee.Message, "登录失败", MessageBoxButtons.OK, MessageBoxIcon.Error);return;}}2.2主窗体的实现主窗体设计如图2-3图2-3主窗体处理流程图如图2-4示2.4窗体流程图实现代码如下public partial class frmMain : Form{private string strConn = "server=.;database=通讯录管理系统;uid=sa;pwd=521125;";public frmMain(){InitializeComponent();}private void treeView1_AfterSelect(object sender, TreeViewEventArgs e){LoadList();}//主窗体加载事件private void frmMain_Load(object sender, EventArgs e){LoadGroup();if (trvGroup.Nodes.Count > 0){trvGroup.SelectedNode = trvGroup.Nodes[0];LoadList();}else{lvContact.Clear();}}/加载分组信息到TreeViewprivate void LoadGroup(){try{trvGroup.Nodes.Clear();SqlConnection conn = new SqlConnection(strConn);SqlCommand cmd = new SqlCommand();cmd.Connection = conn;mandText = "select 组别from 联系人where 用户名='" + tsslUserName.Text + "'";conn.Open();SqlDataReader sdr = cmd.ExecuteReader();while (sdr.Read()){trvGroup.Nodes.Add(sdr[0].ToString());}sdr.Close();conn.Close();}catch{ }}//加载当前分类的联系人信息private void LoadList(){if (trvGroup.Nodes.Count == 0){lvContact.Clear();return;}if (trvGroup.SelectedNode.Index >= 0){string strGroup = trvGroup.SelectedNode.Text;try{lvContact.Clear();lvContact.Columns.Add("姓名", 100);lvContact.Columns.Add("工作单位", 150);lvContact.Columns.Add("联系电话", 100);lvContact.Columns.Add("电子邮箱", 150);SqlConnection conn = new SqlConnection(strConn);SqlCommand cmd = new SqlCommand();cmd.Connection = conn;mandText = "select 编号,姓名,工作单位,联系电话,电子邮箱from 联系人where 组别='" + strGroup + "'and 用户名='" + tsslUserName.Text + "'";conn.Open();SqlDataReader sdr = cmd.ExecuteReader();int count = 0;while (sdr.Read()){ListViewItem lvi = new ListViewItem();lvi.Text = sdr["姓名"].ToString();lvi.SubItems.Add(sdr["工作单位"].ToString());lvi.SubItems.Add(sdr["联系电话"].ToString());lvi.SubItems.Add(sdr["电子邮箱?"].ToString());lvi.Tag = sdr["编号"];lvi.ImageIndex = 0;lvContact.Items.Add(lvi);count++;}tsslCount.Text="共计"+count.ToString()+"个联系人";sdr.Close();conn.Close();}catch{ }}}//详细信息在工具栏上的事件private void详细信息ToolStripMenuItem_Click(object sender, EventArgs e){lvContact.View=View.Details;}//详细信息在菜单栏上的事件private void详细信息ToolStripMenuItem1_Click(object sender, EventArgs e){lvContact.View=View.Details;}//添加方法在主窗体中的实现private void Add(){frmAdd f=new frmAdd();if(f.ShowDialog(this)==DialogResult.OK){LoadGroup();if(trvGroup.Nodes.Count>0){trvGroup.SelectedNode=trvGroup.Nodes[0];LoadList();}else{lvContact.Clear();}}}//编辑方法在主窗体的实现private void Edit(){if(lvContact.SelectedItems.Count==1){string id=lvContact.SelectedItems[0].Text.ToString();frmEdit f=new frmEdit(id);if(f.ShowDialog(this)==DialogResult.OK){LoadGroup();if(trvGroup.Nodes.Count>0){trvGroup.SelectedNode=trvGroup.Nodes[0];LoadList();}else{lvContact.Clear();}}}}//删除方法在住窗体中的实现private void Delete(){if(lvContact.SelectedItems.Count<1){return;}if(MessageBox.Show("是否要删除选中的联系人","删除确认",MessageBoxButtons.YesNo,MessageBoxIcon.Question)==DialogResult.Yes) {string strWhere="";foreach (ListViewItem lvi in lvContact.SelectedItems){strWhere+=lvi.Text.ToString();}try{SqlConnection conn=new SqlConnection(strConn);SqlCommand cmd=new SqlCommand();cmd.Connection=conn;mandText = "delete from 联系人where 姓名='" + strWhere + "'";conn.Open();cmd.ExecuteNonQuery();conn.Close();LoadGroup();if(trvGroup.Nodes.Count>0){trvGroup.SelectedNode=trvGroup.Nodes[0];LoadList();}else{lvContact.Clear();}}catch{ }}}//搜索方法在主窗体中的实现private void Search(){frmSearch f = new frmSearch();if (f.ShowDialog() == DialogResult.OK){LoadGroup();if (trvGroup.Nodes.Count > 0){trvGroup.SelectedNode = trvGroup.Nodes[0];LoadList();}else{lvContact.Clear();}}}}2.3新增联系人实现新增联系人设计如图2-5图2-5新增联系人窗体流程图如图2-6图2-6实现代码如下public partial class frmAdd : Form{private string strconn = "server=.;database=通讯录管理系统;pwd=521125";private string strUserName= "";private int groupCount = 0;private int contentCount = 0;private string txtFilePath = "";public frmAdd(){InitializeComponent();}private void textBox2_TextChanged(object sender, EventArgs e){}private void frmAdd_Load(object sender, EventArgs e){//获取用户名strUserName = ((frmMain)(this.Owner)).tsslUserName.Text;try{SqlConnection conn = new SqlConnection(strconn);SqlCommand cmd = new SqlCommand();cmd.Connection = conn;//获取配置信息mandText = "selete * from 用户名where 用户名='" + strUserName + "'";conn.Open();SqlDataReader sdr = cmd.ExecuteReader();if (sdr.Read()){groupCount = Convert.ToInt32(sdr["组别数量最大值"]);contentCount = Convert.ToInt32(sdr["联系人数量最大值"]);}sdr.Close();//获取联系人数mandText = "select count(*) from联系人where 用户名='" + strUserName + "'";int count = Convert.ToInt32(cmd.ExecuteScalar());if (count >= contentCount){MessageBox.Show("联系人的个数已经达到上限如需继续添加联系人,请联系管理员.", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);btnOK.Enabled = false;}conn.Close();}catch { }pic.Image =通讯录管理系统.Properties.Resources.main1;//加载组别LoadGroup();}protected void LoadGroup(){try{cmbGroup.Items.Clear();SqlConnection conn = new SqlConnection(strconn);SqlCommand cmd = new SqlCommand();cmd.Connection = conn;mandText = "selete disinct 组别from 联系人";conn.Open();SqlDataReader sdr = cmd.ExecuteReader();while (sdr.Read()){cmbGroup.Items.Add(sdr[0].ToString());}sdr.Close();conn.Close();if (groupCount > 0 && cmbGroup.Items.Count == groupCount){cmbGroup.DropDownStyle =ComboBoxStyle.DropDownList;}else{cmbGroup.DropDownStyle = ComboBoxStyle.DropDown;}}catch { }}private void pic_Click(object sender, EventArgs e){if (dlg.ShowDialog() == DialogResult.OK){pic.Image = Image.FromFile(dlg.FileName);txtFilePath = dlg.FileName;}}private void btnOK_Click(object sender, EventArgs e){#region获取信息//用户名strUserName = ((frmMain)(this.Owner)).tsslUserName.Text;//姓名string name;if (txtName.Text == ""){MessageBox.Show("联系人姓名不能为空", "添加失败", MessageBoxButtons.OK, MessageBoxIcon.Error);return;}else{name = txtName.Text;}string group;if (cmbGroup.Text.Trim() == ""){group = "未分组";}else{group = cmbGroup.Text.Trim();}//电话string phone = txtPhone.Text.Trim();//工作单位string company = txtCompany.Text.Trim();//emailstring email = txtEmail.Text.Trim();//照片byte[] b = null;if (txtFilePath != ""){try{FileStream fs = new FileStream(txtFilePath, FileMode.Open, FileAccess.Read);int len = Convert.ToInt32(fs.Length);b = new byte[len];fs.Read(b, 0, len);fs.Close();}catch{b = null;}}#endregion获取信息#region添加数据try{SqlConnection conn = new SqlConnection(strconn);SqlCommand cmd_maxid = new SqlCommand();cmd_maxid.Connection = conn;//获取最大编号cmd_mandText = "selete isnull(max(编号),0)+1 from 联系人";conn.Open();int maxid;try{maxid = Convert.ToInt32(cmd_maxid.ExecuteScalar());}catch{maxid = 1;}//insertSqlCommand cmd_insert = new SqlCommand();cmd_insert.Connection = conn;cmd_mandText = "insert into联系人(编号,用户名,组别,姓名,工作单位,联系电话,电子邮箱,照片)values(@编号,@用户名,@组别,@姓名,@工作单位,@联系电话,@电子邮箱,@照片)";cmd_insert.Parameters.Add("@编号", SqlDbType.Int);cmd_insert.Parameters.Add("@用户名", SqlDbType.VarChar, 50);cmd_insert.Parameters.Add("@组别", SqlDbType.VarChar, 50);cmd_insert.Parameters.Add("@姓名", SqlDbType.VarChar, 50);cmd_insert.Parameters.Add("@工作单位", SqlDbType.VarChar, 500);cmd_insert.Parameters.Add("@联系电话", SqlDbType.VarChar, 200);cmd_insert.Parameters.Add("@电子邮箱", SqlDbType.VarChar, 200);cmd_insert.Parameters.Add("@照片", SqlDbType.Image);cmd_insert.Parameters["@编号"].Value = maxid;cmd_insert.Parameters["@用户名"].Value = strUserName;cmd_insert.Parameters["@组别"].Value = group;cmd_insert.Parameters["@姓名"].Value = name;cmd_insert.Parameters["@工作单位"].Value = company;cmd_insert.Parameters["@联系电话"].Value = phone;cmd_insert.Parameters["@电子邮箱"].Value = email;if (txtFilePath == ""){cmd_insert.Parameters["@照片"].Value = DBNull.Value;}else{cmd_insert.Parameters["@照片"].Value = b;}cmd_insert.ExecuteNonQuery();conn.Close();DialogResult = DialogResult.OK;}catch (Exception ee){MessageBox.Show(ee.Message);return;}#endregion添加数据}private void btnCancel_Click(object sender, EventArgs e){DialogResult = DialogResult.Cancel;}}结论课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,回顾起此次课程设计,至今我们仍感慨颇多,的确,从理论到实践,学到很多很多的东西。
通讯录程序设计报告
前言一、设计内容与设计要求1.设计目的:当今时代是飞速发展的信息时代。
在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。
计算机的最大好处在于利用它能够进行信息管理。
使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。
计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。
本系统就是为了管理而设计的。
通讯录管理系统的建立是可以有效节省同学、朋友、客户间日常交流的投资(指时间、精力),其设计理念很简单,变传统的纸张与笔录方式为计算机自动化进行通讯录信息管理系统,既省时间又提高效率。
因此在系统构建时,只要我们本着丰富通讯录的信息资源,为用户提供最为方便的快捷的信息阅览途径和管理手段,去吸引用户,那么通讯录管理系统是完全可行的。
通讯录软件设计的灵感来源于生活和工作中的需要。
如今,随着社会的飞速发展,信息时代改变着人们的各种生活方式。
人们的联系信息,联系方式变得复杂而多样化,以前所使用的各种电话簿、通讯本等小册子由于查找不方便、功能单一等缺陷已经无法胜任它的“时代使命”,而现在各种手机,商务通内设的电话簿尽管携带方便却又挥之不去其“记录量少,界面小,浏览不方便”的缺点。
工作中看到有些人巧妙地利用excell或者word制表格来建立通讯录,每逢用时再打开,可是查找极其不便,维护起来也麻烦。
通讯录系统设计,它的内容对于计算机来说是至关重要的,通讯录系统为计算机的使用者提供充足的信息和快捷的查询手段。
用c语言构建的通讯录系统设计,通过课上学到的和查阅一些文献的一些关于结构体[1]、数组、指针、函数以及循环函数的运用[1]和字符串的处理[2]等基本知识可以初步的实现通讯录的输入、显示、查找、删除、快速查询等通讯录简单而用的一些实用的功能,给人们带来更多的方便。
本管理系统设计合理、操作方便、运行稳定、功能完备,具有较高的实用价值。
C语言程序设计报告——通讯录管理系统
C语言程序设计报告一.课题通讯录管理系统二.设计方案简介为了帮助广大人群解决笔记通讯录所带来的诸多不便,本人利用所学的专业知识,设计了一个简单,便利的系统供大家在线存储众多联系人信息。
这样做一来可以将自己的知识生活化,运用自己所学为他人做点事,二来,在完成这项任务的过程中,通过克服一道又一道难题,我巩固了自己的知识,发现了自己的不足,进而提升了自己的能力。
该方案从整体出发,化整为零。
各个功能都是通过独立函数实现。
其中设计了信息录入,信息查询,信息修改,信息删除,信息保存,信息显示等功能。
方案的结构一目了然,便于用户操作。
经过在Microsoft Visual C++ 6.0中多次测试,结果均与预期相符。
加上该程序要求的平台不是很高,一般用户均可方便使用。
三.算法与数据结构<一>运用的数据类型有:int, char, file,.<二>主要功能模块的算法设计思路如下:1、添加信息函数(void Add(Link l))(1)定义指向结构体变量的指针;(2)移动指针,找到插入结点;(3)在要插入的结点输入信息;(4)调用保存函数,打开文件,保存输入信息。
2、修改信息函数(void Modify(Link l))(1)定义指向结构体变量的指针;(2)用指针检验链表中是否有记录,若没记录,返回主函数;(3)根据要修改的编号查找对应结点;(4)修改信息;(5)打开文件,保存修改记录。
3、删除信息函数(void Del(Link l))(1)定义指向结构体变量的指针;(2)用指针检验链表中是否有记录,若没记录,返回主函数;(3)根据要修改的编号查找要删除的结点;(4)修改链表,删除对应结点。
4、显示记录函数(void Disp(Link l))(1)打开文件;(2)用指针检验是否有记录;(3)若无记录,输出提示信息,返回主函数;若有记录,移动指针,依次输出记录;(4)关闭文件。
5、查询通讯录信息(void Find(Link l))(1)选择查询方式(按姓名、编号或地址);(2)输入查询关键字:(3)在链表中寻找相应结点;(4)调用输出函数,输出结点信息。
c语言通讯录管理系统课程设计报告(一)
c语言通讯录管理系统课程设计报告(一)C语言通讯录管理系统课程设计报告1. 引言在现代社会中,通讯录是人们经常使用的工具之一。
为了方便人们管理各种联系方式,本次课程设计致力于开发一个C语言通讯录管理系统。
本文将围绕该课程设计进行详细介绍和分析。
2. 功能需求为了满足用户对通讯录管理的需求,我们设计了以下功能:•添加联系人:用户可以输入姓名、电话号码、电子邮件等信息,将联系人添加到通讯录中。
•查找联系人:用户可以根据姓名、电话号码等关键字在通讯录中查找特定联系人。
•修改联系人:用户可以对已存在的联系人进行信息修改。
•删除联系人:用户可以将指定的联系人从通讯录中删除。
•显示所有联系人:用户可以查看通讯录中的所有联系人。
3. 设计思路本次课程设计将借助C语言及其相关库函数来实现通讯录管理系统。
主要采用如下设计思路:•采用结构体存储联系人信息:通过定义一个结构体来存储每个联系人的姓名、电话号码、电子邮件等信息。
•使用动态数组管理联系人:通过动态数组来动态管理联系人的数量,以便实现添加、删除等功能。
•借助文件存储联系人信息:通过将联系人信息存储在文件中,实现系统的持久化。
4. 系统设计与实现4.1 数据结构设计为了存储联系人信息,我们定义了如下的结构体:typedef struct {char name[50];char phone[20];char email[50];} Contact;4.2 功能实现为了实现上述功能需求,我们设计了一系列函数来完成相应的操作:•addContact():用于添加新的联系人到通讯录中。
•searchContact():根据给定的关键字在通讯录中查找联系人。
•modifyContact():修改已存在的联系人信息。
•deleteContact():从通讯录中删除指定的联系人。
•displayContacts():显示所有联系人信息。
4.3 文件存储为了实现系统的持久化,我们使用文件来存储联系人信息。
原创Java通讯录管理系统设计报告
原创Java通讯录管理系统设计报告一、引言通讯录是人们生活中常用的工具,用于记录联系人的姓名、电话号码以及其他联系信息。
为了提高通讯录的管理效率和功能性,本文设计了一款基于Java的通讯录管理系统。
本系统通过Java编程语言实现,旨在提供用户友好的交互界面,使用户能够方便地添加、编辑、删除和搜索通讯录中的联系人信息。
系统还具备数据持久化的功能,保证数据的安全性和稳定性。
本文首先介绍了通讯录管理系统的需求分析,然后对系统的总体设计进行了详细说明,包括系统的架构设计、类的设计和关键功能的实现等。
接着介绍了系统的具体实现过程和测试结果,并对系统进行了性能分析和改进设想。
二、需求分析本系统需要满足以下需求:1.用户能够添加、编辑、删除和搜索通讯录中的联系人信息。
2.用户可以按照姓名、电话号码等条件进行搜索联系人。
3.系统需要提供用户友好的交互界面,使用户能够方便地操作系统。
4.数据需要持久化,确保数据的安全性和稳定性。
三、系统设计3.1 系统架构系统整体采用MVC(Model-View-Controller)架构,将数据、界面和控制逻辑分离,提高系统的可维护性和可扩展性。
系统包括以下几个模块:•Model:负责数据的存储和处理,包括通讯录信息的增删改查等操作。
•View:负责用户界面的展示和用户输入的处理,包括菜单显示、用户指令接收等。
•Controller:负责协调Model和View之间的交互,根据用户指令调用Model中的相应方法,并将结果返回给View进行展示。
3.2 类设计系统中主要包括以下几个类:•Contact:代表通讯录中的单个联系人,包含姓名、电话号码等属性。
•ContactList:代表整个通讯录,包含多个联系人,提供相关的增删改查方法。
•Menu:负责显示用户界面的菜单,接收用户输入的指令。
•Controller:负责根据用户指令调用相应的方法。
这些类之间的关系如下:┌─────────────────────┐│ Contact │├─────────────────────┤│- name: String ││- phoneNumber: String│└─────────────────────┘▲││┌─────────────────────┐│ ContactList │├─────────────────────┤│- contacts: List │├─────────────────────┤│+ addContact() ││+ deleteContact() ││+ updateContact() ││+ searchContact() │└─────────────────────┘▲││┌─────────────────────┐│ Menu │├─────────────────────┤│+ showMenu() ││+ getUserInput() ││+ executeCommand() │└─────────────────────┘▲││┌─────────────────────┐│ Controller │├─────────────────────┤│+ processCommand() │└─────────────────────┘3.3 关键功能实现3.3.1 添加联系人用户通过菜单选择添加联系人的功能,然后输入联系人的姓名和电话号码。
通讯录管理系统课程设计报告Java
通讯录管理系统课程设计报告Java1. 简介通讯录管理系统是一种方便用户存储和管理联系人信息的工具。
本课程设计将使用Java语言开发一个简单的通讯录管理系统,实现对联系人信息的增删改查功能。
通过本项目的实践,学习者将掌握Java编程语言的基础知识和面向对象编程的技巧。
2. 功能需求通讯录管理系统应包含以下功能: - 添加联系人信息:用户可以输入联系人的姓名、电话号码、邮箱等信息添加到通讯录中。
- 显示所有联系人信息:系统能够展示所有已保存在通讯录中的联系人信息。
- 查找联系人信息:用户可以通过姓名或电话号码查找特定联系人的信息。
- 修改联系人信息:用户可以对已保存的联系人信息进行修改。
- 删除联系人信息:用户可以删除通讯录中的联系人信息。
实现以上功能需要设计相应的数据结构和算法,以及编写用户交互界面。
3. 技术实现3.1 数据结构在Java中,可以使用ArrayList或HashMap等数据结构来存储联系人信息。
ArrayList适用于有序的联系人列表,而HashMap适用于根据键值快速查找联系人信息。
3.2 用户交互界面用户交互界面可以通过Java的Swing或JavaFX等GUI工具包来实现。
设计一个简洁明了的界面,包含菜单栏、输入框、按钮等组件,以方便用户操作。
3.3 功能实现•添加联系人信息:用户输入信息后,将联系人信息添加到数据结构中。
•显示所有联系人信息:遍历数据结构,将所有联系人信息展示在界面上。
•查找联系人信息:根据用户输入的查询条件,在数据结构中查找对应的联系人信息。
•修改联系人信息:根据用户输入的修改信息,更新数据结构中相应的联系人信息。
•删除联系人信息:根据用户输入的删除条件,从数据结构中移除对应的联系人信息。
4. 总结通讯录管理系统是一个简单实用的应用程序,能够帮助用户有效管理联系人信息。
通过本课程设计,学习者将学习如何使用Java语言开发基本的应用程序,掌握面向对象编程的基本原理和技巧。
通讯录管理系统课程设计报告总结
任务名称:通讯录管理系统课程设计报告总结一、引言通讯录管理系统是一种用于管理联系人和通讯信息的应用程序。
该系统的设计旨在满足用户对个人和组织通讯信息的管理和查询需求。
本报告对通讯录管理系统的设计过程进行总结,并提出了改进建议。
二、系统需求分析在进行系统设计前,我们首先对用户需求进行了深入分析。
以下是我们对通讯录管理系统的需求分析总结:2.1 用户需求1.用户需要能够方便地添加、删除和编辑联系人信息。
2.用户需要能够快速搜索和查找特定联系人的信息。
3.用户需要能够导出通讯录信息并与其他应用程序集成。
4.用户需要能够进行批量操作,如导入联系人信息或发送批量邮件。
2.2 系统需求1.系统需要提供用户友好的用户界面,操作简单直观。
2.系统需要具备高效的搜索和查询功能,以满足用户的快速查找需求。
3.系统需要能够存储大量联系人信息,并确保数据安全性和完整性。
4.系统需要提供数据导入导出功能和与其他应用程序的集成能力。
三、系统设计在系统设计阶段,我们采用了面向对象的方法进行系统建模和设计。
以下是系统设计的要点:3.1 系统架构通讯录管理系统采用了三层架构模式:表示层、业务逻辑层和数据访问层。
这种架构模式将系统的功能划分为不同的层次,方便系统的维护和扩展。
3.2 数据库设计我们使用了关系型数据库来存储和管理通讯录信息。
数据库设计包括联系人表、联系人组表等。
通过合理的数据表设计,实现了联系人和联系人组之间的关联和查询。
3.3 用户界面设计为了提供用户友好的界面,我们通过使用图形用户界面(GUI)的方式构建了系统界面。
界面设计简洁明了,用户可以方便地进行联系人管理和查询操作。
3.4 功能设计根据用户需求,系统实现了联系人的添加、删除、编辑等功能。
同时,系统还提供了高效的搜索和查询功能,用户可以通过姓名、电话号码等信息快速查找联系人。
四、系统实现与测试在系统实现阶段,我们按照设计要求逐步开发各个模块,并进行了系统测试。
通讯录系统课程设计实验报告
目录1系统可行性分析 (2)1.1软硬件环境 (2)1.11软件环境 (2)1.12 硬件环境 (2)1.2系统可行性分析分类 (2)1.21技术可行性 (2)1.22 经济可行性 (2)1.23管理可行性 (2)2 需求规格说明书 (2)2.1模块要求 (3)2.2 设计要求 (3)2.3 设计要求功能分析 (3)3 设计规格说明书 (3)3.1 通讯录总的流程图 (4)3.2 创建通讯录的流程图 (4)3.3 添加通讯录记录的流程图 (5)3.4 查找联系人记录的流程图 (5)4 测试策略与方案 (6)4.1测试类型 (6)4.2 测试项目 (7)4.3 测试环境与配置 (7)4.4 输入数据设置 (7)4.5 输入功能设置 (8)5 课程设计总结 (10)参考文献 (10)附件:程序源代码 (11)1系统可行性分析1.1软硬件环境分析1.11软件环境用户端 windows2000 windows2003 windowsxp win7服务器端 windowsxp及以上的操作系统编程语言:c++1.12硬件环境有高性能的电子计算机,大容量的存储装置,个人电脑及连接起来的网线等,组成信息资源共享的计算机网络等1.2系统可行性分析分类1.21技术可行性可以用C语言和相应的软硬件环境实现1.22经济可行性在经济上,用此系统加强了通讯系统信息管理效率,可以省人力资源的开支1.23管理可行性分析在工作上,获取信息量相对较大,开发了此系统,提高了获取信息的效率,方便信息储存和修改及以后随时查找信息系统分析结论该系统是一个比较人性化的管理系统2需求规格说明书2.1模块要求:第一个模块——主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。
第二个模块——Menu()的功能是:显示英文提示选单。
第三个模块——Quit()的功能是:退出选单。
第四个模块——Create()的功能是:创建新的通讯录。
通讯录系统程序设计报告
通讯录系统程序设计报告专业班级:电创新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班的同学可以用个人姓名作为用户名,个人学号作为密码,进行登录界面的登录。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通讯录系统程序设计报告专业班级:电创新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的神奇。