通讯录管理系统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;}}结论课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,回顾起此次课程设计,至今我们仍感慨颇多,的确,从理论到实践,学到很多很多的东西。

通讯录实验报告c

通讯录实验报告c

通讯录实验报告c篇一:C语言实验报告通讯录C语言集中上机报告院系:班级:姓名:合作者:指导教师:XX年6月1日通信录目录一概述 ................................................ ................................................... (3)课程设计的目的 ................................................ ................................................... . (3)二总体方案 ................................................ ................................................... . (4)三程序的调试与运行结果说明 ................................................................................................... .. 4四课程设计总结 ................................................ ................................................... .. (6)五后记 ................................................ ................................................... (7)六附录 ................................................ ................................................... (7)参考文献 ................................................ ................................................... .. (11)一概述课程设计的目的实现个人通讯录管理,录入包括姓名、地址、邮政编码、电话号码的信息。

通讯录管理实验报告

通讯录管理实验报告

一、实验背景随着科技的发展,人们的生活节奏越来越快,通讯方式也日益多样化。

为了方便人们管理和查阅通讯信息,通讯录管理系统应运而生。

本实验旨在通过设计和实现一个通讯录管理系统,提高通讯信息管理的效率和便捷性。

二、实验目的1. 熟悉通讯录管理系统的基本功能和操作流程;2. 掌握通讯录管理系统的设计方法和实现技巧;3. 提高编程能力和系统分析能力。

三、实验内容1. 系统需求分析根据实验要求,本通讯录管理系统应具备以下功能:(1)添加联系人:输入联系人信息,包括姓名、电话、邮箱、QQ号等,并将其保存到系统中;(2)删除联系人:根据联系人姓名或电话,删除指定联系人信息;(3)修改联系人信息:根据联系人姓名或电话,修改指定联系人的信息;(4)查询联系人:根据联系人姓名、电话、邮箱或QQ号,查询指定联系人的信息;(5)导出通讯录:将通讯录信息导出到文本文件或Excel文件;(6)导入通讯录:从文本文件或Excel文件中导入通讯录信息。

2. 系统设计本系统采用C++编程语言,利用面向对象编程思想进行设计。

系统采用单例模式,确保全局只有一个通讯录对象。

联系人信息以链表形式存储,便于插入、删除和修改操作。

(1)数据结构设计联系人信息使用结构体存储,包括姓名、电话、邮箱、QQ号等字段。

```cppstruct Contact {string name;string phone;string email;string qq;Contact next;};```(2)类设计- Contact类:负责存储联系人信息,包括姓名、电话、邮箱、QQ号等字段;- ContactManager类:负责管理联系人链表,包括添加、删除、修改、查询、导出和导入等功能。

```cppclass Contact {public:string name;string phone;string email;string qq;Contact next;Contact(string n, string p, string e, string q) : name(n), phone(p), email(e), qq(q), next(NULL) {}};class ContactManager {private:Contact head;public:ContactManager() : head(NULL) {}~ContactManager() {// 释放链表内存Contact temp;while (head != NULL) {temp = head;head = head->next;delete temp;}}void AddContact(Contact contact) {// 添加联系人}void DeleteContact(string phone) {// 删除联系人}void ModifyContact(string phone, Contact newContact) { // 修改联系人信息}Contact QueryContact(string phone) {// 查询联系人return NULL;}void ExportContact() {// 导出通讯录}void ImportContact() {// 导入通讯录}};```3. 系统实现根据系统设计,使用C++编程语言实现各个功能模块。

通讯管理系统实验报告

通讯管理系统实验报告

一、实验目的本次实验旨在通过C语言编程,实现一个通讯管理系统,以巩固和加深对C语言基本知识的理解和掌握,提高编程和程序调试的基本技能,并锻炼运用C语言解决实际问题的能力。

二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 编程语言:C语言三、实验内容本实验设计了一个基于C语言的通讯管理系统,主要包括以下功能:1. 联系人信息的录入与存储;2. 联系人信息的浏览;3. 联系人信息的查询(按姓名、电话、邮箱查询);4. 联系人信息的删除;5. 联系人信息的修改;6. 通讯录信息的保存与加载。

四、实验步骤1. 创建一个结构体`Contact`来存储联系人信息,包括姓名、电话、邮箱等字段。

```ctypedef struct {char name[50];char phone[20];char email[50];} Contact;```2. 设计一个函数`AddContact`用于添加联系人信息。

```cvoid AddContact(Contact contacts, int size) {Contact newContact;printf("请输入姓名:");scanf("%s", );printf("请输入电话:");scanf("%s", newContact.phone);printf("请输入邮箱:");scanf("%s", newContact.email);contacts[size] = newContact;(size)++;}```3. 设计一个函数`DisplayContacts`用于显示所有联系人信息。

```cvoid DisplayContacts(Contact contacts, int size) {for (int i = 0; i < size; i++) {printf("姓名:%s,电话:%s,邮箱:%s\n", contacts[i].name, contacts[i].phone, contacts[i].email);}}```4. 设计一个函数`SearchContact`用于查询联系人信息。

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

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

《程序设计与算法综合实习I》通讯录题目:班级:学生学号:学生姓名:指导老师:提交时间:成绩:软件学院课程设计报告评分表1、对问题的描述:通讯录1.1、简要描述:设计一个通讯录程序,并简单实现通讯人的添加、删除、修改、查找、统计、存入文件等功能1.2、系统功能分析:添加功能修改功能删除功能查找功能统计功能存入文件功能1.3、开发平台及工具介绍:基于c语言设计该程序,是用codeblocks实现功能。

2、系统设计1.1系统总体结构设计:系统各个功能的总体关系3、功能实现struct Contact//结构体{char Name[20];char Tel[15];char Address[100];char Mail[50];char Birth[10];char Type[15];struct Contact *next;通讯录数据读取修改删除创建联系人查找统计};struct classfy{//统计模块使用结构体char leixing[20];int Numcount;};3.1、主函数开始显示一系列功能选项否输入n,判断n是否是0~6?否根据n的值调用各功能模块函数判断flag是否等于0?是结束具体设计如下:int main(){ //主函数struct Contact *pHead;int n;int flag=1;pHead=(struct Contact*)malloc(sizeof(struct Contact));pHead=create();while(flag==1){menu();printf("请输入要执行的操作:");scanf("%d",&n);switch(n){case 1:insert(pHead);break;case 2:Change(pHead);break;case 3:delete(pHead);break;case 4:Search(pHead);break;case 5:tongji(pHead);break;case 6:shuchu(pHead);break;case 0:flag=0;exit(0);break;default:printf("输入错误,重新输入");scanf("%d",&n);break;}}}3.2、界面设计void menu(){system("cls");printf("\n\n\n\n");printf("\t\tR-----------------通讯录----------------2\n");printf("\t\tR\t\t\t\t\t2\n");printf("\t\tR\t\t\t\t\t2\n");printf("\t\tR\t \t1.增加联系人\t \t2\n");printf("\t\tR\t \t2.修改联系人\t \t2\n");printf("\t\tR\t \t3.删除联系人\t \t2\n");printf("\t\tR\t \t4.查找联系人\t \t2\n");printf("\t\tR\t \t5.统计联系人\t \t2\n");printf("\t\tR\t \t6.列出全部联系人\t2\n");printf("\t\tR\t \t0.退出\t\t\t2\n");printf("\t\tR\t\t\t\t\t2\n");printf("\t\tR\t\t\t\t\t2\n");printf("\t\tR--------Designd By Zheng Weipeng-------2\n"); }3.3、创建函数具体设计如下:struct Contact *create(){ //创建链表 struct Contact *pHead=NULL,*p,*p1; FILE *fp; int n=0;if((fp=fopen("TXL.txt","r"))==NULL){printf("文件创建失败,回车键返回."); getch(); } else{p=p1=(struct Contact*)malloc(sizeof(struct Contact)); fscanf(fp,"%s",p ->Name); fscanf(fp,"%s",p ->Tel);fscanf(fp,"%s",p ->Address); fscanf(fp,"%s",p ->Mail);读取文件内容Fp==NULL ?文件内容赋给链表结束开始否feof (fp )?是否fscanf(fp,"%s",p->Birth);fscanf(fp,"%s",p->Type);while(!feof(fp)){n++;if(n==1) pHead=p;elsep1->next=p;p1=p;p=(struct Contact*)malloc(sizeof(struct Contact));fscanf(fp,"%s",p->Name);fscanf(fp,"%s",p->Tel);fscanf(fp,"%s",p->Address);fscanf(fp,"%s",p->Mail);fscanf(fp,"%s",p->Birth);fscanf(fp,"%s",p->Type);}p1->next=NULL;fclose(fp);return pHead;}}3.4、插入函数struct Contact *insert(struct Contact *pHead){ //插入函数FILE *fp;struct Contact *p,*p1;if((fp=fopen("TXL.txt","a+"))==NULL){printf("文件打开失败");}p=p1=(struct Contact*)malloc(sizeof(struct Contact));p=pHead;while((p->next)!=NULL){p=p->next;}printf("请输入姓名: ");scanf("%s",p1->Name);fprintf(fp,"%s\n",p1->Name);printf("请输入电话: ");scanf("%s",p1->Tel);fprintf(fp,"%s\n",p1->Tel);printf("请输入地址: ");scanf("%s",p1->Address);fprintf(fp,"%s\n",p1->Address);printf("请输入邮箱: ");scanf("%s",p1->Mail);fprintf(fp,"%s\n",p1->Mail);printf("请输入生日: ");scanf("%s",p1->Birth);fprintf(fp,"%s\n",p1->Birth);printf("请输入类型(同学、家人、老师、工作): ");scanf("%s",p1->Type);fprintf(fp,"%s\n\n",p1->Type);p->next=p1;p1->next=NULL;fclose(fp);printf("数据保存成功,任意键返回主菜单.\n");getch();return(pHead);}3.5、修改函数(实现对联系人单项修改)struct Contact Change(struct Contact *pHead){ //修改函数FILE *fp;struct Contact *p1;char flag=0,saveflag=0;int i=0;int n;char a[10],b[20];fp=(fopen("TXL.txt","w"));p1=pHead;printf("\n修改联系人姓名:");scanf("%s",a);while(p1!=NULL){if(strcmp(p1->Name,a)==0){printf("\n找到要修改联系人:\n");printf("姓名:%s\n",p1->Name);printf("电话:%s\n",p1->Tel);printf("地址:%s\n",p1->Address);printf("邮箱:%s\n",p1->Mail);printf("生日:%s\n",p1->Birth);printf("类型:%s\n\n",p1->Type);flag=1;break;}else{p1=p1->next;}}if(flag==0){fclose(fp);printf("没有该条通讯录,回车键返回");getch();}if(flag==1&&p1!=NULL){printf("修改类型:1.姓名2.电话3.地址4.邮箱5.生日6.类型\n");printf("输入数字选择修改类型: ");scanf("%d",&n);printf("输入修改内容: ");scanf("%s",b);switch(n){case 1:p1->Name[0]='\0';strcpy(p1->Name,b);break;case 2:p1->Tel[0]='\0';strcpy(p1->Tel,b);break;case 3:p1->Address[0]='\0';strcpy(p1->Address,b);break;case 4:p1->Mail[0]='\0';strcpy(p1->Mail,b);break;case 5:p1->Birth[0]='\0';strcpy(p1->Birth,b);break;case 6:p1->Type[0]='\0';strcpy(p1->Type,b);break;}}p1=pHead;while(p1!=NULL){fprintf(fp,"%s\n",p1->Name);fprintf(fp,"%s\n",p1->Tel);fprintf(fp,"%s\n",p1->Address);fprintf(fp,"%s\n",p1->Mail);fprintf(fp,"%s\n",p1->Birth);fprintf(fp,"%s\n",p1->Type);p1=p1->next;saveflag=1;}if(flag==1&&saveflag==1){printf("修改成功,任意键返回主菜单");getch();}fclose(fp);return (*pHead);}}3.6、删除函数struct Contact delete(struct Contact *pHead){ //删除函数FILE *fp;struct Contact *p,*p1;int saveflag=0,flag=1;char a[10];fp=fopen("TXL.txt","w");p=pHead;p1=p;printf("请输入要删除联系人的姓名:");scanf("%s",a);while(p!=NULL){if(strcmp(p->Name,a)==0){printf("找到该联系人。

C语言集中上机实验报告通讯录管理

C语言集中上机实验报告通讯录管理

C语言集中上机实验报告学院:年级:班级:姓名:学号:题目通讯录管理1.设一个通信录由以下几项数据信息构成:数据项类型姓名字符串地址字符串邮政编码字符串电话号码字符串试为通信录数据定义类型和定义通信录变量, 实现功能: 存取、显示、删除记录、查询记录等功能。

一、2、要求:界面友好, 易于操作二、程序设计1、主要功能添加: 添加通讯录记录。

显示: 显示通讯录记录。

删除: 删除通讯录记录。

2、查询: 查询通讯录记录。

3、保存: 将信息保存到文件。

4、数据类型定义typedefstruct{char score; /*编号*/char name[10]; /*姓名*/char num[15]; /*号码*/char email[20]; /*邮箱*/char age[8]; /*年龄*/char adds[20]; /*住址*/}Person;5、函数的定义intmenu_select()int Input(Person per[],int n)void Display(Person per[],int n)intDelete_a_record(Person per[],int n)voidQuery_a_record(Person per[],int n)voidWritetoText(Person per[],int n)6、每个函数模板可实现的功能●添加: 可以添加通讯录记录, 依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱后, 会提示是否继续添加。

●显示: 可以以表格形式输出所有通讯录里的记录●删除:输入欲删除的那个人的名字后, 会自动删除他(她)的记录内容●查询: 可以选择用姓名、电话、地址三种方式查询三、保存:输入文件名(带后缀名, 如.txt)后, 即可将通讯录信息保存到文件四、流程图三、程序代码#include<stdio.h>#include<stdlib.h>#include<string.h>typedefstruct{char score; /*编号*/char name[15]; /*姓名*/char num[15]; /*号码*/char adds[20]; /*住址*/char post[15]; /*邮编*/char qq[20]; /*QQ号*/}Person;Person pe[1000];intmenu_select(){char c;do{system("cls");printf("\t*************************************************** ************\n");printf("\t ***************欢迎进入******************* \n");printf("\t *----重庆邮电大学通信与信息工程学院2010级学生信息管理系统----* \n");printf("\t*************************************************** ************\n");printf (" 添加个人信息: 1\n"" 显示个人信息: 2\n"" 删除个人信息: 3\n"" 查询个人信息: 4\n"" 保存个人信息: 5\n"" 退出系统: 0\n");printf("\t*************************************************** ************\n");printf("\t\t请选择(0-5):");c=getchar();}while(c<'0'||c>'5');return(c-'0');}int Input(Person per[],int n){int i=0;charsign,x[10];while(sign!='n'&&sign!='N'){printf("\t编号:");scanf("\t%d",&per[n+i].score);printf("\t姓名:");scanf("\t%s",per[n+i].name);printf("\t手机号码:");scanf("\t%s",per[n+i].num);printf("\t通讯地址:");scanf("\t%s",per[n+i].adds);printf("\t邮编:");scanf("\t%s",per[n+i].post);printf("\tQQ号:");scanf("\t%s",per[n+i].qq);gets(x);printf("\n\t是否继续添加?(Y/N)");scanf("\t%c",&sign);i++;}return(n+i);}void Display(Person per[],int n){int i;printf("\t********************************************* ******************\n");printf(" * --- 编号姓名电话号码通讯地址邮编QQ 号-- *\n");printf("\t********************************************* ******************\n");for(i=1;i<n+1;i++){printf("\t%-5d%-10s%-13s%-15s%-8s%-15s\n",per[i-1].score,per [i-1].name,per[i-1].num,per[i-1].adds,per[i-1].post,per[i-1].qq); /*对长度的定义*/if(i>1&&i%10==0){printf("\t***********************************\n");printf("\t");system("pause");printf("\t***********************************\n");}}printf("\t********************************************* ******************\n");system("pause");}intDelete_a_record(Person per[],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].num,per[j+1].num); /*将后一个人的信息替代所删除人的信息*/strcpy(per[j].name,per[j+1].name);strcpy(per[j].adds,per[j+1].adds);strcpy(per[j].post,per[j+1].post);strcpy(per[j].qq,per[j+1].qq);per[j].score=per[j+1].score;}printf("\t\t\t已经成功删除!\n");return(n-1);}voidQuery_a_record(Person per[],int n){int m;printf("\t*****************\n");printf("\t 请选择查询方式:\n");printf("\t*****************\n");printf("\t 姓名:1 \n");printf("\t 电话:2 \n");printf("\t 地址:3 \n");printf("\t 邮编:4 \n");printf("\t QQ号:5 \n");printf("\t 返回:6 \n");printf("\t*****************\n");printf("\t请选择:");scanf("%d",&m);while(m!=1&&m!=2&&m!=3&&m!=4&&m!=5&&m!=6) {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编号: %d\n",per[i].score);printf("\t姓名: %s\n",per[i].name);printf("\t电话号码: %s\n",per[i].num);printf("\t通讯地址: %s\n",per[i].adds);printf("\t邮编: %s\n",per[i].post);printf("\tQQ号: %s\n",per[i].qq);} ;if(m==2){char s[20];int i=0;printf("\t请输入想查询的电话号码:");scanf("\t%s",s);while(strcmp(per[i].num,s)!=0&&i<n) i++;if(i==n){printf("\t对不起!通讯录中没有此人!\n");return;}printf("\t编号: %d\n",per[i].score);printf("\t姓名: %s\n",per[i].name);printf("\t电话号码: %s\n",per[i].num);printf("\t通讯地址: %s\n",per[i].adds);printf("\t邮编: %s\n",per[i].post);printf("\tQQ号: %s\n",per[i].qq);} ;if(m==3){char s[20];int i=0;printf("\t请输入想查询的地址:");scanf("\t%s",s);while(strcmp(per[i].adds,s)!=0&&i<n) i++;if(i==n){printf("\t对不起!通讯录中没有此人!\n");return;}printf("\t编号: %d\n",per[i].score);printf("\t姓名: %s\n",per[i].name);printf("\t电话号码: %s\n",per[i].num);printf("\t通讯地址: %s\n",per[i].adds);printf("\t邮编: %s\n",per[i].post);printf("\tQQ号: %s\n",per[i].qq);} ;if(m==4){char s[20];int i=0;printf("\t请输入想查询的邮编:");scanf("\t%s",s);while(strcmp(per[i].post,s)!=0&&i<n) i++;if(i==n){printf("\t对不起!通讯录中没有此人!\n");return;}printf("\t编号: %d\n",per[i].score);printf("\t姓名: %s\n",per[i].name);printf("\t电话号码: %s\n",per[i].num);printf("\t通讯地址: %s\n",per[i].adds);printf("\t邮编: %s\n",per[i].post);printf("\tQQ号: %s\n",per[i].qq);} ;if(m==5){char s[20];int i=0;printf("\t请输入想查询的QQ号:");scanf("\t%s",s);while(strcmp(per[i].qq,s)!=0&&i<n) i++;if(i==n){printf("\t对不起!通讯录中没有此人!\n");return;}printf("\t编号: %d\n",per[i].score);printf("\t姓名: %s\n",per[i].name);printf("\t电话号码: %s\n",per[i].num);printf("\t通讯地址: %s\n",per[i].adds);printf("\t邮编: %s\n",per[i].post);printf("\tQQ号: %s\n",per[i].qq);} ;}voidWritetoText(Person per[],int n){int i=0;FILE *fp; /*定义文件指针*/char filename[20]; /*定义文件名*/printf("\t保存到文件\n"); /*输入文件名*/printf("\t请输入所保存的文件名:");scanf("\t%s",filename);if((fp=fopen(filename,"w"))==NULL){printf("\t无法打开文件\n");system("pause");return;}fprintf(fp,"******************************************通讯录******************************************\n"); fprintf(fp," * 编号姓名电话号码通讯地址邮编QQ号* \n");fprintf(fp,"------------------------------------------------------------------------------------------\n");/*fprintf函数与scanf函数相仿, 都是格式化读写函数, 读写对象是磁盘文件*/while(i<n){fprintf(fp,"%-3d\t%-6s\t%-13s\t%-20s\t%-8s\t%-20s\n",per[i].s core,per[i].name,per[i].num,per[i].adds,per[i].post,per[i].qq);i++;}fprintf(fp,"------------------------------------------------------------------------------------------\n");fprintf(fp,"***************************************共有%d条记录****************************************\n",n);fclose(fp); /*关闭文件*/printf("保存成功!\n");}void main() /*主函数*/{int n=0;for(;;){switch(menu_select()){case 1:printf("\n\t添加记录到通讯录\n"); /*添加记录*/n=Input(pe,n);break;case 2:printf("\n\t\t\t 通讯录记录表\n");/*显示记录*/Display(pe,n);break;case 3:printf("\n\t从通讯录中删除记录\n");n=Delete_a_record(pe,n); /*删除记录*/printf("\t");system("pause");break;case 4:printf("\n\t在通讯录中查找个人信息\n");Query_a_record(pe,n); /*查找记录*/printf("\t");system("pause");break;case 5:printf("\n\t保存功能\n");WritetoText(pe,n); /*保存数据*/printf("\t");system("pause");break;case 0:printf("\n\Thank you!\n"); /*结束程序*/printf("\n\t\t");system("pause");exit(0);}}}五、各功能的效果初始界面:添加个人信息: ○3显示个人信息○4删除个人信息<没有记录><有记录>○5查询个人信息○6保存个人信息六、心得体会通过本次编程对一些简单的运用加深了了解, 因为很久没有编程了, 对C语言的很多知识都陌生了, 通过参考网上的代码和同学的讲解才完成了本次编程。

C语言实验报告 通讯录

C语言实验报告 通讯录

C语言集中上机报告通信录院系:班级:姓名:合作者:指导教师:2015年6月1日目录一概述 (3)课程设计的目的 (3)二总体方案 (4)三程序的调试与运行结果说明 (4)四课程设计总结 (6)五后记 (7)六附录 (7)参考文献 (11)一概述课程设计的目的实现个人通讯录管理, 录入包括姓名、地址、邮政编码、电话号码的信息。

其中:1.对n名学生包括姓名、地址、邮政编码、电话号码等信息进行输入;2、显示所有记录的信息, 若无记录, 则给出提示信息;3.可以按姓名进行查询;4.可以按姓名进行删除;6.退出程序1.课程设计的要求教师要求:1、为通信录数据定义类型和定义通信录变量, 实现功能: 存取、显示、删除记录、查询记录等功能。

2.要求:界面友好, 易于操作。

(本题目限最多一个人完成)需要的基本知识和技能:1.利用C语言进行程序设计的能力;2.理解和运用结构化程序设计的思想和方法;3.初步掌握开发一个小型实用系统的基本方法;4.学会调试一个较长程序的基本方法;5.学会利用流程图或N-S图表示算法;6.掌握书写程序设计开发文档的能力。

2.课程设计的主要设计思想整个程序的设计是通过对每一个功能的设计, 然后, 再对每一个功能的程序进行模块化, 从而形成一个完整的管理系统。

自顶向下、逐步细化、逐步求精。

在对于给定问题进行透彻的了解和详细的分析的基础上, 把问题分解成若干个按顺序执行的逻辑部分(称为“模块”)。

每个子任务如果仍很复杂, 还可以再分解为若干个子任务。

对于每个模块的设计都采用这种“自顶向下、逐步细化”的方法, 将它们分解成为基本结构为止, 就如同写文章先拟出题目和中心内容, 再确定分为几大部分, 每一大部分又分哪几节, 每一节分为几段, 每一段包括哪几个意思, 这就是“自顶向下, 逐步细化”的方法。

二总体方案整体设计思路: 程序主要运用到了文本文件的打开和读取, 文件中存取信息的格式为结构体数组, 一个主函数下面分为个子函数。

c++通讯录管理系统(实验报告)

c++通讯录管理系统(实验报告)

下达时间:2022 年12 月23 日设计时间:一周指导教师:XXX 完成班级:2022 级软件工程专业本课程设计是在学生学完《C++》课程后进行的一次全面的综合练习,是计算机学科重要的实践性环节之一,目的旨在利用编程知识与技巧,达到理论与实践的统一。

做到:(1) 巩固和加深对C++程序设计课程的基本知识的理解和掌握;(2) 掌握和提高C++编程和程序调试基本技能;(3) 进一步理解和运用结构化程序设计的思想和方法;(4) 基本掌握面向对象程序设计的基本思路和方法;(5) 提高运用C++解决简单的面向对象的程序设计问题的能力;(6) 掌握科学地撰写程序设计说明文档和总结报告的能力。

可以在指定的题目中任意选择一题,也可以自选题目,若选题相同,程序基本相同或者撰写报告基本相同的情况下,经查证属于相互抄袭的,均以零分计入成绩。

参考题目如下:1 、GPA 计算器2、学生信息管理系统3、学生成绩管理系统4、商品库存管理系统5、图书馆管理系统6、职工工资信息管理系统7、聊天程序8、通讯录采用教师指导、学生自学和独立编程的操作方式,先由学生查阅与本课程设计有关的书籍和资料,利用visual C++6.0 设计环境与开辟工具,要求如下:1、分析课程设计题目2、写出详细设计说明;3、编写程序代码、调试程序使其能正确运行,能正确地接受输入,产生正确的结果,界面友好,便于操作和使用;4 、课题完成后必须按要求提交课程设计报告,且设计报告必须符合规范。

装订顺序挨次为封面、任务书、目录、正文、参考文献、附录。

正文内容包括:系统需求分析,总体设计,详细设计,系统调试,结果分析和总结等。

正文格式如下:一级标题 (左对齐,宋体粗四号),二级标题 (左对齐,宋体小四号,加粗);正文:小四,宋体,两边分散对齐;行间距1.15 倍;左边距:3cm,右边距2cm;每位同学提交纸质设计报告书一份(用A4 纸双面打印),要求编排格式统一、规范,内容充实,并附带电子版(以自己的学号和姓名命名文件名)。

c#班级通讯录管理系统实训报告

c#班级通讯录管理系统实训报告

c#班级通讯录管理系统实训报告————————————————————————————————作者:————————————————————————————————日期:《C#应用程序设计》实训报告系部:信息工程系班级:12软件班姓名:陶沪指导教师:刘春友实训时间:2013年春季学期班级通讯录管理系统实训报告一、实训主题班级通讯录系统的开发和运用二、实训时间:2013年6月1日~2013年6月27日三、实训目的教会学生利用Visul status 2005开发平台开发出班级通讯录系统,并利用.net Framework组件实际与数据库的连接,建立班级通讯录的显示,查询,添加,修改,删除四个功能块窗体,以及登录界面和主界面两个辅助窗体.最终实现班级通讯录系统增,删,改,查四项基本功能.四、实训内容与要求:“班级通讯录管理系统”是以班级学生的个人信息为主的管理系统,合理的数据库结构设计可以提高数据存储的效率,保证数据的完整性和一致性。

运用结构化开发方法,分析并开发一个小型、简单的“班级通讯录管理系统”。

功能:设计一个班级通讯录管理系统,班级通讯录数据信息构成内容可自行设计(如班级、学号、姓名、性别、年龄、电话、邮政编码、邮箱等)。

要求实现显示、查找、添加、删除、修改某个记录等功能。

五、实训中的重要知识和方法概述: 提供诸如SQL Server 和XML这样的数据源以及通过OLE DB和ODBC公开的数据源的一致访问。

包含于用于连接到数据库,执行命令和检索结果的.NET Framework 数据提供程序。

这些结果或者被直接处理,放在 DataSet对象中以便用特别的方式向用户开放,并与来自多个源的数据组合:或者在层之间传递。

DataSet对象也可以独立于.NET Framework数据提供程序,用于管理应用程序本地的数据或源自XML 的数据。

用于访问和操作数据的两个主要组件是:.NET Framework数据提供程序和DataSet。

c通讯录管理系统实验报告

c通讯录管理系统实验报告

c通讯录管理系统实验报告C通讯录管理系统实验报告一、引言现代社会的快速发展,人们的生活节奏越来越快,人际交往也变得越来越频繁。

在这样的背景下,通讯录管理系统成为了人们生活中必不可少的工具。

本次实验旨在设计和实现一个简单而实用的C通讯录管理系统,以便更好地满足人们的通讯录管理需求。

二、系统功能设计1. 用户管理功能通讯录管理系统需要提供用户注册和登录功能,以保证用户的信息安全和数据隐私。

2. 联系人管理功能用户可以添加、修改、删除和查询联系人信息。

系统应该提供用户友好的界面,方便用户进行操作。

3. 分组管理功能为了更好地管理联系人,系统需要提供分组管理功能。

用户可以创建、修改和删除分组,将联系人进行分类管理。

4. 通讯录导入导出功能用户可以将通讯录数据导出为文件,以备份或者在其他设备上使用。

同时,用户也可以从文件中导入通讯录数据,方便快速恢复或者在不同设备间同步数据。

三、系统实现本次实验采用C语言编写通讯录管理系统。

系统使用了链表数据结构来存储联系人信息,以实现高效的增删改查操作。

1. 用户管理功能的实现系统使用文件存储用户信息,包括用户名和密码。

用户注册时,系统将用户名和密码写入文件中。

用户登录时,系统读取文件中的信息进行验证。

2. 联系人管理功能的实现系统使用链表来存储联系人信息。

每个节点包含姓名、电话号码、邮箱等信息。

用户可以通过添加、修改、删除和查询功能来对联系人进行管理。

3. 分组管理功能的实现系统使用链表来存储分组信息。

每个节点包含分组名称和包含的联系人列表。

用户可以通过创建、修改和删除分组来实现对联系人的分类管理。

4. 通讯录导入导出功能的实现系统提供了将通讯录数据导出为文件的功能。

用户可以选择导出的文件格式,如文本文件或者Excel文件。

同时,系统也支持从文件中导入通讯录数据,以便快速恢复或者在不同设备间同步数据。

四、系统测试与评估在系统开发完成后,我们进行了一系列的测试和评估,以验证系统的功能和性能。

c语言程序设计简单的通讯录系统实验报告

c语言程序设计简单的通讯录系统实验报告

C语言课程设计报告书实验题目通讯录管理系统一、实验目的通过进行计算机实践,更加系统地理解和掌握C语言的基本概念、语言特点和编程技巧。

利用系统提供的标准函数和自定义函数进行程序设计,培养利用C语言设计综合程序的能力。

二、实验内容在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。

进一步掌握各种函数的应用。

三、需求分析本学通讯录管理系统包含输入信息,显示信息,查询信息, 修改信息,追加信息,删除信息,修改密码,七大功能.其中查询模块又分为按姓名查找,按号码查找.输入信息(Input)显示信息(Output)查询信息(Look)修改信息(Change)追加信息(Add)删除信息(Delete)修改密码(Key)四.概要设计1.系统分析功能模块图:总目录以及下属的各个模块,这样可以使得程序的书写脉络清晰流畅。

程序结构图2、模块功能说明输入信息模块: 调用input()录入用户的通讯信息。

输出信息模块: 调用output()建立循环,输出全部通讯录信息。

查询信息模块:调用look()函数按照姓名、号码等通讯信息进行查找追加信息模块:调用Add()追加通讯录信息修改信息模块:调用change()函数按照姓名、号码、地址等通讯信息进行选择性的修改删除信息模块: 调用delete()函数删除一条通讯录信息修改密码模块:调用save_key()函数核对两次输入的新密码若相同保存新密码于key.txt。

保存模块:调用 save()函数对最终所保留的信息进行保存,保存于friend.txt。

五.详细设计及运行结果主程序流程图查询模块流程图信息查询功能选择选择1 选择2 选择3 选择4 按姓名查询按电话号码查询按手机号码查询返回主界面否否否否否是是是是结束密码修改模块流程图密码修改是否修改输入a输入b是否一致密码为a结束六、调试情况,设计技巧及体会个人总结经两周的程序设计就要走向尾声了,这两周的实践让我获益匪浅,不但复习了以前学习过的知识,还学会了很多新东西新内容,最重要的是提升了自己从历小做起,把握全局的能力。

学生通讯录管理系统(C语言课程设计实验报告)

学生通讯录管理系统(C语言课程设计实验报告)

C语言课程设计姓名:刘显学号:09041131班级:090411专业:计算机科学与技术学院:信息工程学院设计题目:学生通讯录管理系统指导教师:宋文琳提交时间:2010年9月4日课程题目:学生通讯录管理系统要求:学生通讯录信息包括:学号、姓名、班机、联系电话、E-mail、宿舍等主要功能:1、通讯录信息录入功能2、通讯录信息删除功能3、通讯录信息浏览功能4、通讯录信息查询功能5、按学号排序功能一、总体设计首先,整个系统必须有一个主函数,为了尽量提高程序的易修改性,且不至于相互干扰,将每一个功能分成不同的模块,用不同的函数来实现,例如在我写的这个程序中,一共用了11个函数,分别是:主菜单函数menu()、关于函数gaunyu ()、帮助函数help()、输出单个学生信息函数shuchu()、输入函数shuru()、输出所有学生信息函数findall()、按姓名查找函数findname()、按学号查找函数findnum ()、删除函数shanchu()、排序函数paixu ()、主函数main(),这样在整个程序的设计过程中也就一目了然,写起来也相对轻松了不少。

这个程序我只是总体上参考了一下网上程序的架构,具体的各个函数是参照课本上《链表》那一章的内容的,比如结构体的建立、查找和排序等功能,这些书上都有类似的,其中排序功能虽没有原版的,但是在第六章中有一个用冒泡法排序的例题,我就是仿照这个模式来对结构体进行排序的,总之整个程序中蕴含了我很多的汗水。

二、具体设计关于这个程序的具体设计,也不是一两句话就能说完的,所以我也不想再在这里赘述了,因为程序里都可以看的到,几乎每个函数都倾注了我的大量汗水,我在这上面花了不少的时间,不过从中也收获了很多,因为不停地修改不停的调试,总之还是直接看源程序吧,因为也没必要在这里重复地说废话。

三、源代码以下是整个程序的源代码,其中我的主菜单函数是很美观的,但由于这里字体和板式的限制,不能很好的显现,可以看我下面程序运行的截图就知道了。

C#实验报告通讯录管理系统资料

C#实验报告通讯录管理系统资料

C#实验报告通讯录管理系统学院:计算机科学学院班级:12级网络工程1班姓名:张挺学号:41209040120日期:2014年11月11日一、试验目的:熟悉数据库应用程序的开发步骤;学会运用数据库组件结构中的数据集组件、数据源组件和数据控制组件;学会使用数据源ODBC连接;练习使用相应组件及SQL语句完成对数据库的查询。

二、实验内容:1.编写一个通讯录应用程序,该通讯录应用程序应具有信息的查看、编辑功能。

2.该通讯录应用程序应具有对信息的添加和删除功能。

3.该通讯录应用程序应具有如下对信息的查找功能:1)可以用名字和电话号码进行查询;2)支持模糊查询。

三、功能截图:(一)登陆界面:用户输入账号和密码,若是输入不完整则出现提示:(二)菜单界面:真确输入账号和密码后,登陆到菜单界面(3)查询功能界面:a.模糊查询:b.查询图示:c.修改:d.删除:(四)查看所有:(五)添加联系人:四、主要代码:(1)主界面:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.Data.SqlClient;namespace 通讯录{public partial class menu : Form{string sql = "";SqlConnection conn = new SqlConnection("server=localhost;database=phone;user=sa;password=994717664");//连接数据库public menu(){InitializeComponent();}private void button2_Click(object sender, EventArgs e){this.Hide();view f2 = new view();f2.Show();}private void menu_Load(object sender, EventArgs e){string name;string number;try{conn.Open();//打开数据库sql = "select Name,Number from contact";//定义执行语句SqlCommand cmd = new SqlCommand(sql, conn);//创建实例SqlDataReader rd2 = cmd.ExecuteReader();//读数据while (rd2.Read()){name = Convert.ToString(rd2["Name"]);number = Convert.ToString(rd2["Number"]);comboBox1.Items.Add(name);comboBox2.Items.Add(number);}catch (Exception exe){MessageBox.Show(exe.Message);}finally{if (conn != null) conn.Close();cmd1.Dispose();//销毁对象,回收垃圾}/ /*/}private void button3_Click(object sender, EventArgs e){this.Hide();Form1 f3 = new Form1();f3.Show();}private void button4_Click(object sender, EventArgs e){//string sql="";if (comboBox1.Text.Length != 0){sql = "select * from contact where Name= '" + comboBox1.Text.Trim() + "'";//定义执行语句SqlCommand cmd = new SqlCommand(sql, conn);try{conn.Open();SqlDataReader rd = cmd.ExecuteReader();while (rd.Read()){textBox1.Text = Convert.ToString(rd["Name"]);comboBox3.Text = Convert.ToString(rd["Number"]);textBox3.Text = Convert.ToString(rd["Adresss"]);textBox4.Text = Convert.ToString(rd["Remarks"]);textBox5.Text = Convert.ToString(rd["Sex"]);}if(textBox1.Text.Length==0)MessageBox.Show("查无此人!", "提示");comboBox1.Text="";comboBox2.Text = "";rd.Close();conn.Close();cmd.Dispose();//销毁对象,回收垃圾}catch{conn.Close();}}else if (comboBox2.Text.Length != 0){sql = "select * from contact where Number= '" + comboBox2.Text.Trim() + "'";//定义执行语句SqlCommand cmd = new SqlCommand(sql, conn);//创建实例try{conn.Open();SqlDataReader rd1 = cmd.ExecuteReader(); while (rd1.Read()){textBox1.Text = Convert.ToString(rd1["Name"]);comboBox3.Text = Convert.ToString(rd1["Number"]);textBox3.Text = Convert.ToString(rd1["Adresss"]);textBox4.Text = Convert.ToString(rd1["Remarks"]);textBox5.Text = Convert.ToString(rd1["Sex"]);}if (textBox1.Text.Length == 0)MessageBox.Show("查无此人!", "提示");comboBox1.Text = "";comboBox2.Text = "";rd1.Close();conn.Close();cmd.Dispose();//销毁对象,回收垃圾}catch{conn.Close();MessageBox.Show("查无此人!", "提示");}}else{MessageBox.Show("请输入!", "提示");}}private void button1_Click(object sender, EventArgs e){this.Hide();add f4=new add();f4.Show();}private void pictureBox4_Click(object sender, EventArgs e){sql = "delete from contact where Name= '" + textBox1.Text.Trim() + "'";//定义执行语句SqlCommand cmd = new SqlCommand(sql, conn);/try{conn.Open();int n = cmd.ExecuteNonQuery();if (n > 0) MessageBox.Show("成功删除联系人!");}catch (Exception exe){MessageBox.Show(exe.Message);}finally{if (conn != null) conn.Close();cmd.Dispose();//销毁对象,回收垃圾}comboBox1.Items.Clear();//置空查询框comboBox1.Items.Add("");comboBox2.Items.Clear();comboBox2.Items.Add("");comboBox3.Items.Clear();comboBox3.Text = "";textBox1.Text = "";textBox3.Text = "";textBox4.Text = "";textBox5.Text = "";menu_Load(null,null); //刷新窗体}private void pictureBox5_Click(object sender, EventArgs e){sql = "update contact set Name='" + textBox1.Text + "',Number='" + comboBox3.Text + "',Adresss='" + textBox3.Text + "',Remarks='" + textBox4.Text + "',Sex='" + textBox5.Text + "' where Name='" + textBox1.Text + "'";SqlCommand cmd = new SqlCommand();try{cmd.Connection = conn;mandText = sql;conn.Open();int n = cmd.ExecuteNonQuery();if (n > 0) MessageBox.Show("成功修改联系人信息!");}catch (Exception exe){MessageBox.Show(exe.Message);}finally{if (conn != null) conn.Close();cmd.Dispose();//销毁对象,回收垃圾}}}}(2)添加联系人:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Data.SqlClient;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace 通讯录{public partial class add : Form{string strsql = "";SqlConnection conn = new SqlConnection("server=localhost;database=phone;user=sa;password=994717664");//连接数据库public add(){InitializeComponent();}private void button2_Click(object sender, EventArgs e){textBox1.Clear();textBox2.Clear();textBox3.Clear();textBox4.Clear();textBox5.Clear();textBox1.Focus();}private void button3_Click(object sender, EventArgs e){this.Hide();menu f1 = new menu();f1.Show();}private void button1_Click(object sender, EventArgs e){strsql ="insert into contact values('"+textBox1.Text+"','"+textBox2.Text+"','"+textBox3.Text+"','"+textBox4.Text+"','"+textB ox5.Text+"')";SqlCommand cmd1 = new SqlCommand();try{cmd1.Connection = conn;mandText = strsql;conn.Open();int n = cmd1.ExecuteNonQuery();if (n > 0) MessageBox.Show("成功添加联系人");}catch (Exception exe){MessageBox.Show(exe.Message);}finally{if (conn != null) conn.Close();cmd1.Dispose();//销毁对象,回收垃圾}this.Hide();menu f3 = new menu();f3.Show();}}}(3)查看代码:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Data.Odbc;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace 通讯录{public partial class view : Form{public view(){InitializeComponent();}private void view_Load(object sender, EventArgs e){OdbcConnection odbcCon = new OdbcConnection("DSN=phone;uid=sa;pwd=994717664");try{OdbcDataAdapter odbcDat = new OdbcDataAdapter("SELECT * FROM contact", odbcCon);DataTable dt = new DataTable("phone");odbcDat.Fill(dt);this.dataGridView1.DataSource = dt.DefaultView;}catch (Exception ey){MessageBox.Show(ey.Message);}}private void timer1_Tick(object sender, EventArgs e){label1.Text = string.Format("现在时间:{0}",DateTime.Now.ToLongTimeString());}private void pictureBox2_Click(object sender, EventArgs e){this.Hide();menu f1 = new menu();f1.Show();}private void pictureBox3_Click(object sender, EventArgs e){this.Hide();Form1 f2 = new Form1();f2.Show();}private void pictureBox1_Click(object sender, EventArgs e){this.Hide();add f3 = new add();f3.Show();}}}五、实验思考:(1)这个简单的通讯录力求简单,容易操作,让人一看就会。

  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");}}。

相关文档
最新文档