通讯录管理系统C++实验报告

合集下载

通讯录管理系统c语言课程设计报告顺序储存

通讯录管理系统c语言课程设计报告顺序储存

通讯录管理系统C语言课程设计报告一、引言通讯录管理系统是一种能够对联系人信息进行存储、增删改查等管理操作的系统。

在本课程设计中,我设计并实现了一个基于C语言实现的通讯录管理系统,采用顺序储存的数据结构。

本报告将介绍通讯录管理系统的设计思路、功能特点以及实现过程。

二、需求分析通讯录管理系统主要包括以下功能:1.添加联系人信息2.删除联系人信息3.修改联系人信息4.查询联系人信息5.显示所有联系人信息在设计系统时,需要考虑如何高效地实现上述功能,并保证数据的准确性和一致性。

三、设计思路为了实现通讯录管理系统,我采用了顺序储存的方式存储联系人信息。

具体而言,我使用结构体数组来存储联系人的姓名、电话号码等信息,通过数组下标来实现对联系人信息的操作。

四、功能实现1. 添加联系人信息用户通过输入联系人的姓名、电话号码等信息,将新的联系人信息添加到通讯录中。

系统会提示用户输入相关信息,并将信息加入到结构体数组中。

2. 删除联系人信息用户可以根据联系人的姓名或电话号码来删除指定的联系人信息。

系统会遍历结构体数组,找到相应的联系人信息并删除。

3. 修改联系人信息用户可以选择需要修改的联系人信息,然后输入新的信息进行修改。

系统会在结构体数组中找到对应的联系人信息,并进行更新操作。

4. 查询联系人信息用户可以通过姓名或电话号码查询指定联系人的信息。

系统会输出符合条件的联系人信息。

5. 显示所有联系人信息系统会将通讯录中所有联系人的信息依次显示出来,方便用户查看。

五、总结通过本次课程设计,我深入理解了C语言的数据结构和实现原理,同时锻炼了对问题的分析与解决能力。

通讯录管理系统是一个简单且实用的应用,通过本次设计,我对通讯录系统的设计与实现有了更深入的认识,也提高了编程的能力。

六、参考文献暂无以上是对通讯录管理系统C语言课程设计报告的简要介绍,希望能够对您有所帮助。

c语言通讯录实验报告

c语言通讯录实验报告

c语言通讯录实验报告C语言通讯录实验报告一、实验目的通讯录是我们日常生活中常用的工具,可以帮助我们管理联系人信息。

本次实验旨在通过使用C语言编写一个简单的通讯录程序,加深对C语言的理解和运用。

二、实验环境本次实验使用的开发环境是Visual Studio Code,编程语言为C语言。

三、实验过程1. 通讯录数据结构设计在开始编写程序之前,我们需要先设计好通讯录的数据结构。

通讯录的基本信息包括姓名、电话号码和电子邮件地址。

我们可以使用结构体来表示一个联系人的信息,然后使用数组来存储多个联系人的信息。

2. 程序主体框架设计接下来,我们需要设计程序的主体框架。

首先,我们可以定义一个数组来存储通讯录中的联系人信息。

然后,我们可以使用一个循环来提供用户操作的选项,比如添加联系人、查找联系人、删除联系人等。

用户可以通过输入相应的数字来选择不同的操作。

3. 添加联系人功能在程序中添加联系人的功能可以通过用户输入联系人的姓名、电话号码和电子邮件地址来实现。

我们可以通过循环遍历通讯录数组,找到第一个空闲的位置,将新的联系人信息存储到该位置。

4. 查找联系人功能查找联系人的功能可以通过用户输入联系人的姓名来实现。

我们可以通过遍历通讯录数组,逐个比较联系人的姓名,找到匹配的联系人并输出其详细信息。

5. 删除联系人功能删除联系人的功能可以通过用户输入联系人的姓名来实现。

我们可以通过遍历通讯录数组,找到匹配的联系人并将其从数组中删除。

6. 修改联系人功能修改联系人的功能可以通过用户输入联系人的姓名来实现。

我们可以通过遍历通讯录数组,找到匹配的联系人,并允许用户修改其电话号码和电子邮件地址。

7. 显示通讯录功能显示通讯录的功能可以通过遍历通讯录数组,逐个输出联系人的详细信息来实现。

四、实验结果经过编写和调试,我们成功实现了一个简单的C语言通讯录程序。

用户可以通过输入相应的数字来选择不同的操作,包括添加联系人、查找联系人、删除联系人、修改联系人和显示通讯录。

C语言课程设计实习报告——通讯录管理系统

C语言课程设计实习报告——通讯录管理系统

毕业论文(设计)论文(设计)题目:通讯录管理系统二级学院:计算机学院学科专业:信息管理专业学号:姓名:班级:试点本科三班指导教师:论文提交时间: 2011年3月教务处制2011年3 月13 日毕业论文(设计)内容介绍论文(设计)题目通讯录管理系统选题时间2010年12月完成时间2011年3月论文(设计)字数4685关键词通信录信息管理,管理信息系统,数据库论文(设计)题目的来源、理论和实践意义:课题来源:本课题是来自辅导老师的提议和日常所学内容的总结,使用 MICROSOFT公司的 VISUAL C++6.0开发工具,利用其提供的各种面向对象的开发工具,在短时间内未系统建立应用原形,并不断进行修正和改进。

理论依据:1、VISUAL C++的上机学习及实践。

2、、数据库原理的课程内容。

3、学校所开课程的学习以及领悟,理论及实践相结合。

实践意义:通过实践证实了通讯录管理系统的重要性,突显了通讯录管理系统是我们日常生活中不可缺少的一部分。

论文(设计)的主要内容及创新点:本文论述了通讯录系统的整个开发过程,包括系统分析、系统设计、系统实现等方面。

实现对通讯录信息的增、删、改、查等功能,以多文档界面形式实现。

通过对通讯录管理系统必要性和可行性的介绍阐述他的作用,并应用大量图例进行说明,使表达的内容更加清楚易于理解,整体更加简明。

附:论文(设计)本人签名:2011 年 3 月13 日通讯录管理系统 (4)摘要 (4)Abstract (5)引言 (6)一、设计系统的必要性和可行性 (7)1.1设计系统的必要性 (7)1.2设计系统的可行性 (7)1.1.1经济可行性 (7)1.1.2技术可行性 (7)二、系统总体设计 (8)2.1题目要求 (8)2.2需求分析 (8)2.3总体设计 (8)2.3.1系统总体功能单元: (8)2.3.2系统总体流程图(局部): (9)三、详细设计 (10)3.1通讯录信息输入模块 (10)3.2信息浏览及排序模块 (11)3.3通讯录查询模块 (12)3.4通讯录的更改 (14)3.5通讯录及文件操作 (16)四、系统功能的实现与运行 (18)4.1个人档案数据维护表单 (18)4.2通讯信息数据维护表单 (18)4.3个人信息数据查询表单 (19)4.4 个人通讯录报表 (20)4.5系统登录表单 (20)4.6设计系统主菜单 (21)4.7系统主界面表单 (22)4.8连编 (22)五、结论 (23)七、参考文献 (24)通讯录管理系统摘要通信录信息管理系统是用计算机管理电子通信录的一种计算机应用技术的创新,在计算机还未普及之前通信管理都是由联系人采用名片,笔录手工记帐的方式来操作的.现在一般的通信录管理都是采用计算机作为工具的实用的计算机通信录管理程序来帮助人们进行更有效的通信录信息管理。

《通讯录管理系统(c语言)》实训报告(含代码)

《通讯录管理系统(c语言)》实训报告(含代码)

《高级程序设计》课程实训报告题目:通讯录管理系统完成人:专业班级:学号:指导教师:2012年 1 月 5 日1 题目与要求问题提出本人计划编写一个通讯录管理系统。

通讯录一般包括通讯者的姓名、电话及类别等信息,用来管理学生基本信息及成绩信息。

要求实现通讯者的插入、查询、删除等操作。

本系统涉及的知识点结构、数组、循环、函数、分支、文件操作等。

功能要求1、建立学生信息,每个通讯者的信息包括:姓名、电话号码、QQ、类别(小学,初中,高中,大学);2、新增通讯录信息;3、根据姓名,电话号码,QQ等查找该通讯者的信息并输出;4、输入通讯者的姓名,进行查找并修改信息,若不存在该通讯者,则提示说明;5、根据姓名删除指定信息;6、显示全部的通讯者信息;7、能够将输入信息导出文件,同时能把文件导入到内存中;8、退出整个系统操作。

2 功能设计算法设计1、利用switch语句设计如图1所示的主菜单:图1 学生信息管理系统主菜单2、菜单选项示例:选择1后,调用新增函数,进入函数后利用printf(),scnaf()语句实现一个如图2所示的输入。

图2 排序子菜单选择2后,调用查找函数,进入函数后利用switch语句实现一个如图3所示的菜单,该菜单中每个选项调用一个函数,完成通讯录信息的查找。

图3 查找子菜单3、根据所选菜单编写相应代码:1)主函数main():根据选单的选项调用各函数,并完成相应的功能。

2)菜单函数menu():显示提示选单。

3) 新增函数add():在通讯录结构体总追加入新的通讯录信息,并返回选单。

4)查找函数find():查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。

5)修改函数alter():修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。

6)删除函数Delete():删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。

通讯录管理系统--C语言程序设计实习报告

通讯录管理系统--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. 引言通讯录是我们日常生活中非常常见的一种信息管理工具,用于存储和管理联系人的信息。

本实验旨在设计和实现一个基于C语言的通讯录管理系统。

本文将介绍系统的设计思路、功能实现以及使用过程中的注意事项。

2. 设计思路通讯录管理系统主要包括以下功能: - 添加联系人:输入联系人的姓名、电话号码和电子邮件信息,将其添加到通讯录中。

- 删除联系人:输入联系人的姓名,从通讯录中删除该联系人。

- 查找联系人:输入联系人的姓名,系统将显示该联系人的详细信息。

- 修改联系人:输入联系人的姓名,可以修改该联系人的电话号码和电子邮件信息。

- 显示所有联系人:系统将按照添加的顺序显示通讯录中所有联系人的信息。

在设计过程中,我们采用了如下的步骤思考: 1. 定义联系人结构体:使用结构体来存储联系人的姓名、电话号码和电子邮件信息。

2. 定义通讯录结构体:使用动态数组来存储联系人的信息,以及记录通讯录的当前大小和最大容量。

3. 实现添加联系人功能:动态扩展通讯录数组的容量,将新的联系人信息添加到数组中。

4. 实现删除联系人功能:根据输入的姓名,查找并删除对应的联系人。

5. 实现查找联系人功能:根据输入的姓名,查找并显示对应联系人的详细信息。

6. 实现修改联系人功能:根据输入的姓名,查找并修改对应联系人的电话号码和电子邮件信息。

7. 实现显示所有联系人功能:按照添加的顺序,显示通讯录中所有联系人的信息。

3. 功能实现3.1 定义联系人结构体联系人结构体包含姓名、电话号码和电子邮件信息的变量。

3.2 定义通讯录结构体通讯录结构体包含一个指向联系人结构体的指针和记录当前容量和最大容量的变量。

3.3 实现添加联系人功能在添加联系人之前,首先需要判断通讯录数组是否已满。

如果已满,则需要动态扩展通讯录数组的容量。

然后,将新的联系人信息添加到数组中,更新通讯录的当前大小。

3.4 实现删除联系人功能根据输入的联系人姓名,在通讯录数组中查找对应的联系人。

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

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. 根据用户的选择,进入对应的功能模块四、系统流程图下图展示了通讯录管理系统的整体流程:主菜单 -> 用户选择功能模块 -> 执行对应模块功能五、代码实现以下为通讯录管理系统的部分核心代码实现,完整代码可参考附录部分。

通讯录管理系统基于C#的程序设计实验报告

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

通讯录管理系统C++实验报告《C++数据结构》课程设计班级信管1123 指导老师吴卫祖学号 201211671330 姓名易梓麒2014 年 7 月 7 日目录目录 (4)通讯录管理系统 (5)一. 问题描述 (5)1.1系统总体描述 (5)1.2需求分析 (6)1.3系统实现方案 (6)二.概要设计(流程) (6)三.详细模块设计 (9)3.1信息录入 (9)3.2显示信息 (10)3.3按姓名查找信息 (10)3.4删除联系人信息 (11)3.5保存信息至文件 (12)3.6读取信息 (12)3.7添加信息 (13)3.8退出 (13)3.9主函数 (14)四.程序运行示意图 (15)4.1主界面 (15)4.2输入信息 (16)4.3显示记录 (16)4.4删除记录 (17)4.5查阅记录 (17)4.6保存记录 (18)4.7读取记录 (19)4.8添加记录 (19)五.总结与心得 (20)六.附录#源代码 (20)通讯录管理系统一.问题描述1.1系统总体描述本系统是一款基于对通讯录中联系人进行管理的系统,可使用户更好的对通讯录中的联系人进行基本的操作。

1.2需求分析根据需求,该系统应具备以下功能:1.对联系人基本信息的录入2.显示所有联系人的基本信息3.按照姓名查找联系人信息4.删除联系人信息5.保存联系人信息至文件6.从文件中读取联系人的信息7.添加新联系人信息1.3系统实现方案为实现系统功能,本系统共分为构建链表函数,显示函数,查找函数,删除函数,保存函数,读取函数,添加函数以及退出系统。

这七个函数通过主函数switch语句进行调用。

二.概要设计(流程)开始进入主函数三.详细模块设计3.1信息录入输入信息函数(Createlist)首先建立一个空的链表,其次进行对联系人基本信息比如联系人姓名,电话,Email,以及与自己的关系等的输入。

代码示意图如下:3.2显示信息显示函数(showlist)用于向用户显示用户所输入过的联系人的各种资料,包括姓名,电话,Email,关系等。

代码示意图如下:3.3按姓名查找信息查阅函数(chayue)用于用户按照联系人姓名查找以及显示该联系人的各种信息。

如果没有该联系人的信息则会显示“查找不到联系人信息!”代码示意图如下:3.4删除联系人信息删除函数(delete0会帮助用户删除所不需要的联系人的各种信息。

该函数先是查找到相应的联系人信息之后执行删除操作。

删除后将不会再显示该联系人的信息。

代码示意图如下:3.5保存信息至文件保存函数(baocun)用于永久性将联系人信息保存在文件中而不是内存中,以便于用户以后打开该系统时依旧可以看到以往输入过的联系人信息。

代码示意图如下:3.6读取信息读取函数(duqu)用于用户读取之前所保存在文件中的联系人信息。

代码示意图如下:3.7添加信息添加函数(tianjia)用于帮助用户添加新的联系人信息。

代码示意图如下:3.8退出退出该系统!3.9主函数主函数用于向用户展示此通讯录管理系统的主界面,并让用户可选择可执行的操作。

代码示意图如下:四.程序运行示意图4.1主界面4.2输入信息4.3显示记录4.4删除记录4.5查阅记录如果没有该联系人的话:4.6保存记录4.7读取记录4.8添加记录五.总结与心得课程设计是培养我们综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们实际工作能力的具体训练和考察过程。

回顾此次数据结构课程的学习,至今我仍感慨颇多,此次课程设计不仅可以巩固了以前所学的知识,而且学到了很多在书本上所没有学到过的知识。

我坚信此次的课程设计能够在以后的学习与实践结合方面对我提供很大的帮助!六.附录#源代码#include<iostream.h>#include<string.h>#include <fstream.h>#include <stdlib.h>#include<conio.h>struct Address //说明结构{char name[20]; //结点data域char Tel[20];char Email[20];char Relation[20];Address *next ; //结点next域};void Createlist(Address *&head) //建立链表{Address *s,*p;s=new Address;int a=1;while (a==1){cout<<"请输入姓名:";cin>>s->name;cout<<"请输入电话号:";cin>>s->Tel;cout<<"请输入Email:";cin>>s->Email;cout<<"请输入与您关系:";cin>>s->Relation;{if (head==NULL)head=s ;else p->next=s ;}p=s ;s=new Address ;cout<<"是否继续输入,输入按1不输入按0 :"; //判断是否继续输入cin>>a;}p->next=NULL;delete s;return ;}void showlist( Address *&head ) //显示链表{cout << "您的通信录为: "<<endl;cout<<"姓名"<<'\t'<<"电话"<<'\t'<<"电子邮箱"<<'\t'<<"关系"<<endl;while(head){cout<<head->name<<'\t';cout<<head->Tel<<'\t';cout<<head->Email<<'\t';cout<<head->Relation<<endl;;head=head->next ;}cout<<endl ;system("pause");}void Chayuelist(Address *head) //查阅链表{char a[10];cout<<"请输入你所要查阅的姓名:"; cin>>a;while(head){if(strcmp(head->name,a)==0){cout<<"姓名"<<'\t'<<"电话"<<'\t'<<"电子邮箱"<<'\t'<<"关系"<<endl;cout <<head->name <<'\t';cout <<head->Tel<<'\t';cout <<head->Email <<'\t';cout <<head->Relation <<endl;system("pause");return ;}head=head->next;}cout<<"查不到联系人信息!"<<endl; system("pause");}void Delete(Address *head) //删除链表数据{char a[10];Address *s;cout<<"请输入你所要删除的姓名:"; cin>>a;for(Address *q=head;q!=NULL;q=q->next) {if(strcmp(q->next->name,a)==0){s=q->next;q->next=s->next;delete s;}cout<<"删除成功!"<<endl;system("pause");}}void baocun(Address *head)//保存{ofstream outstuf;outstuf.open("c:\\save.txt", ios::out ) ;if (!outstuf){cerr<<"File could not be open."<<endl ;abort();}while(head){outstuf<<head->name<<' '<<head->Tel<<' '<<head->Email<<' '<<head->Relation<<'\n' ;head=head->next ;}system("cls;");cout<<"保存成功!";}void duqu(Address *&head) //读取保存文件{Address *next,*s;s=new Address;head=new Address; //头插法建立单链表head->next=new Address;s=head->next;ifstream infile;infile.open("c:\\save.txt");//打开外存文件,看是否有数据存在if(!infile)cout<<"电话系统中没有任何号码"<<endl; else{infile.close();infile>>s->name>>s->Tel>>s->Email>>s->Rel ation;cout<<"读取电话号码系统成功!"<<endl;system("pause");}}void tianjia(Address *&head) //添加{Address *s;s=new Address;//生成新结点cout<<"\n\t\t请输入姓名:";cin>>s->name;cout<<"\n\t\t请输入电话号:";cin>>s->Tel;cout<<"\n\t\t请输入Email:";cin>>s->Email;cout<<"\n\t\t请输入与您关系:";cin>>s->Relation;cout<<"\n\t\t你已经添加成功";s->next=head;head=s;return ;}void tuichu(){system("cls");cout<<"您已成功推出本系统,欢迎您下次使用!"<<endl;system("pause");}void main() //主函数{system("cls");int h;Address *head=NULL ;cout<<"--------------------本程序为通讯录管理系统-----------------"<<endl;while(h<=7){cout<<'\n';cout<<'\t'<<'\t'<<"请选择你所要实现的功能的编号"<<endl;cout<<'\t'<<'\t'<<"*********1.输入记录***********"<<endl;cout<<'\t'<<'\t'<<"*********2.显示记录*********"<<endl;cout<<'\t'<<'\t'<<"*********3.查阅记录*********"<<endl;cout<<'\t'<<'\t'<<"*********4.删除记录*********"<<endl;cout<<'\t'<<'\t'<<"*********5.保存记录*********"<<endl;cout<<'\t'<<'\t'<<"*********6.读取记录*********"<<endl;cout<<'\t'<<'\t'<<"*********7.添加记录*********"<<endl;cout<<'\t'<<'\t'<<"*********8.退出*************"<<endl;cin>>h;switch(h){case 1:Createlist(head);break;case 2:showlist(head);break;case 3:Chayuelist(head);break;case 4:Delete(head);break;case 5:baocun(head);break;case 6:duqu(head);break;case 7:tianjia(head);break;default :tuichu();break;}system("cls");}}。

相关文档
最新文档