数据结构单位员工通讯录管理系统实验报告
- 格式:doc
- 大小:318.00 KB
- 文档页数:22
通讯录系统实验报告通讯录系统实验报告一、引言通讯录系统是一种方便管理联系人信息的工具。
随着社会的发展和科技的进步,人们的联系方式越来越多样化,传统的纸质通讯录已经无法满足人们的需求。
因此,设计和开发一个高效、便捷的通讯录系统成为了一个重要的课题。
二、实验目的本次实验的目的是设计和实现一个通讯录系统,使用户能够方便地存储、查找和管理联系人信息。
通过这个实验,我们可以学习和掌握数据库的基本操作,提高我们的编程能力和实践能力。
三、实验过程1.需求分析在设计通讯录系统之前,我们首先需要进行需求分析。
通过调研和访谈,我们了解到用户对通讯录系统的需求主要包括以下几点:- 用户可以添加、编辑和删除联系人信息;- 用户可以按照姓名、电话号码等字段进行快速查找;- 用户可以导入和导出联系人信息,方便备份和共享;- 界面简洁明了,操作简单易用。
2.数据库设计在进行数据库设计时,我们需要确定通讯录系统的数据结构。
通讯录系统的主要数据包括联系人的姓名、电话号码、邮箱等信息。
我们可以使用关系型数据库来存储这些数据,并通过SQL语句进行操作。
3.界面设计为了提高用户体验,我们需要设计一个简洁明了的界面。
界面设计应该符合用户的使用习惯,操作简单易懂。
在设计界面时,我们可以考虑使用图形化界面或者命令行界面。
4.编码实现在编码实现过程中,我们需要根据需求分析和数据库设计来进行编码。
编码实现的重点是实现用户的各项操作功能,包括添加联系人、编辑联系人、删除联系人、查找联系人等。
5.测试和优化在编码实现完成后,我们需要进行测试和优化。
通过测试,我们可以发现和修复潜在的bug,优化系统的性能和稳定性。
四、实验结果经过几天的努力,我们成功地设计和实现了一个通讯录系统。
该系统具有以下特点:- 界面简洁明了,操作简单易用;- 用户可以方便地添加、编辑和删除联系人信息;- 用户可以按照姓名、电话号码等字段进行快速查找;- 用户可以导入和导出联系人信息,方便备份和共享。
实验报告----通讯录管理系统专业:计算机嵌入式班级:10455341日期2012-05-28一.实验目的1.通过这一项目的实现,进一步掌握利用连接都数据库进行访问。
2.掌握利用来操纵数据库中的数据的方法。
3.通过本次实验来提高编程能力和独立解决编程问题的能力。
二.实验内容1.设计并实现“通讯录管理系统”。
该系统提供多用户的通讯录管理,并能对通讯录中的联系人分组。
2.具体任务①完成“用户管理”窗口②完成“用户登录”窗口③完成“主窗体”窗口④完成“新增/修改联系人”窗口⑤完成“新增/修改分组”窗口(不在题目要求范围之内)⑥完成“查找联系人”窗口⑦完成“用户注册”窗口(为方便使用用户管理而添加的,不在题目要求范围之内)三.实验环境Microsoft Visual Studio 2008语言:C#四.实验分析、代码及运行结果本次实验实现通讯录管理系统的基本功能,包括用户管理、用户登录、修改/新增联系人、修改/新增分组、查找联系人、用户注册等。
本实验中所有数据全部放在ADDBRS数据库中,该库在Form1_Load中创建,并同时在库中创建Users和Groups两张表,在以后每注册一个用户的时候就同时创建一张以用户名命名的表,用于存储联系人的信息。
主界面中对分组和联系人的增删改已经查看的控件不止一个,但下面的空间均调用菜单栏中的方法来实现操作。
添加/修改联系人为同一个窗口,添加/修改分组为同一个窗口在centerData类中声明一个静态字符串centerData.constr来代替所有代码中连接数据库所用到的字符串。
1.登陆窗体①截图②代码using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data;using System.Data.SqlClient;namespace 通讯录管理系统1{ public partial class Form1 : Form{ public Form1(){ InitializeComponent(); }public void AddLink() //用于将所有注册过的联系人添加在combox1的下拉菜单中{ comboBox1.Items.Clear();SqlConnection con = new SqlConnection();con.ConnectionString = CenterData.constr;con.Open();SqlCommand cmd = new SqlCommand("select name from Users", con);SqlDataReader dr = cmd.ExecuteReader();while (dr.Read()){ comboBox1.Items.Add(dr[0]); }con.Close();}private void Form1_Load(object sender, EventArgs e){ try //该距用于判断数据库ADDBRS是否已经存在{ SqlConnection con = new SqlConnection();con.ConnectionString = CenterData.constr;con.Open();con.Close();}catch //如果不存在try运行出错,则运行该语句,创建数据库和两个表{ SqlConnection conn = new SqlConnection();conn.ConnectionString = "Data Source=localhost;User ID=sa;Password=sa;";onn.Open();SqlCommand cmd = conn.CreateCommand();mandText = "create database [ADDBRS] ";cmd.ExecuteNonQuery();mandText = @"use [ADDBRS] create table Users (name nvarchar(50) NOT NULL,password nvarchar(50) NOT NULL,maxMan int NOT NULL,maxGroup int NOT NULL) ";cmd.ExecuteNonQuery();//Users用于存储用户名、密码、最多组别、最多联系人mandText = @"use [ADDBRS] create table Groups (GroupName nvarchar(50) NOT NULL,UserName nvarchar(50) NOT NULL)";cmd.ExecuteNonQuery();//Groups用于存储每个所有用户的分组信息conn.Close();}finally{ // TODO: 这行代码将数据加载到表“ers”中。
一、实验目的1、能够利用单链表的基本运算进行单链表的相关操作。
2、加深对链式存储数据结构的理解,逐步培养解决实际问题的编程能力。
3、熟练掌握线性表的类型定义方法、存储方法及其基本运算(元素的建立、查找、删除等)的实现方法,培养综合运用所学知识,根据具体问题进行数据结构设计和算法设计的能力。
二、实验环境具有Windows XP或2003的计算机、V istual C++ 6.0、网络环境。
三、实验内容设计一个班级同学的通讯录,要求如下:✓通讯录中每个同学的信息包含以下内容:学号(id)、姓名(name)、电话号码(tel)。
如果需要更多其他信息,请自行添加。
✓程序主菜单包含以下几个功能:(1)添加记录:通过键盘输入信息,添加一条通讯录记录。
(2)删除记录:通过键盘输入学号,删除该学号的记录。
(3)输出记录:输出通讯录全部记录。
(4)按姓名查找:通过键盘输入姓名,输出该同学的所有信息。
(5)按电话号排序:按电话号码从小到大排序并输出排序后的信息。
(6)清空记录:删除通讯录中的全部记录,并删除文件。
(7)退出。
程序清单#include<stdio.h>#include<stdlib.h>#include<string.h>#define N 20typedef struct student{char tel[N];char name[N];char id[N];struct student *next;}linklist;//创建信息void createlist(linklist *&l){int ch;linklist *s,*p;printf("***********创建通讯录***********\n");printf("----请输入通讯者信息-----:\n请输入非零整数,输入0则退出:\n");scanf("%d",&ch);l=(linklist *)malloc(sizeof(linklist));s=l;while(ch!=0){p=(linklist *)malloc(sizeof(linklist));printf("请输入通讯者姓名:");scanf("%s",p->name);printf("请输入通讯者电话号:");scanf("%s",p->tel);printf("请输入通讯者身份证号:");scanf("%s",p->id);s->next=p;s=p;printf("请输入通讯者信息:\n请输入非零整数,输入0则退出:\n");scanf("%d",&ch);}s->next=NULL;}//删除信息void listdelete(linklist *&l,int t ){int j=0;linklist *p,*q;p=l;while(p!=NULL&&j<t-1){j++;p=p->next;}if(p==NULL)exit(0);else{q=p->next;if(q==NULL)exit(0);p->next=q->next;printf("***************删除系统**************\n");printf("-------你将删除的联系人的信息为-------:\n");printf("通讯者姓名:%s\n",q->name);printf("通讯者电话号:%s\n",q->tel);printf("通讯者身份证号:%s\n",q->id);printf("******-------******删除成功******------*******\n");free(q);}}//输出信息void output(linklist *l){linklist *p;p=l->next;printf("----***----输出所有联系者信息----***----:\n");while(p!=NULL){printf("通讯者姓名:%s\n",p->name);printf("通讯者电话号:%s\n",p->tel);printf("通讯者身份证号:%s\n",p->id);printf("*****************************\n");p=p->next;}}//按姓名查找void findname(linklist *l){char n[N];linklist *p=l->next;printf("***************查找系统*************\n");printf("----------请输入要查找的姓名---------:\n");scanf("%s",n);while(p!=NULL){if(strcmp(p->name,n)){printf("-----***--你要查找的资料为--***----:\n");printf("通讯者姓名:%s\n",p->name);printf("通讯者电话号:%s\n",p->tel);printf("通讯者身份证号:%s\n",p->id);printf("*****************************");break;}elsep=p->next;}}//按电话号排序void sorttel(linklist *&l){linklist *p,*q,*s;q=l;p=q->next->next;q->next->next=NULL;while(p){while(q->next&&(strcmp(p->tel,q->next->tel)>0))q=q->next;s=p->next;p->next=q->next;q->next=p;p=s;q=l;}}//清空void release(linklist *&l){linklist *p,*q;p=l;q=p->next;while(q!=NULL){free(p);p=q;q=p->next;}free(p);printf("--------数据已全部被清空----------\n,*****内存回收*****\n"); }//主函数void main(){int i,t;linklist *l;while(1){printf("通讯录功能如下:\n1.建立通讯录信息\n2.删除信息\n3.输出信息\n4.按姓名查找信息\n5.按电话号排序信息\n6.清空信息\n7.退出");scanf("%d",&i);if(i<=0||i>7)break;switch(i){case 1:createlist(l);break;case 2:printf("---------请输入第t个要删除的信息---------:\n");scanf("%d",&t);listdelete(l,t);break;case 3:output(l);break;case 4:findname(l);break;case 5:sorttel(l);printf("-----***---&&&--这是按电话号排序后的信息列表--&&&---***-----\n");output(l);break;case 6:release(l);break;case 7:break;}}}运行结果:建立通讯录信息运行结果截图:输入零后通讯录信息输出结果截面图:查询通讯录信息运行结果截图:通讯录信息排序运行结果截图:删除通讯录信息运行结果截图:删除通讯录信息后的输出结果截面图:清空通讯录信息的运行结果截面图:四、实验心得与小结通过这次的上机实验,使我学到了一些回顾了以前学过的知识,使我对数据结构程序设计有了更深层次的认识和理解,懂得了灵活运用。
数据结构通讯录管理系统课程设计实验报告背景随着信息化的快速发展,通讯录管理系统成为了每个人生活中必备的工具之一。
传统的纸质通讯录已经无法满足人们对于信息管理的需求,因此开发一个高效、便捷、用户友好的通讯录管理系统显得尤为重要。
本次课程设计实验的目标是设计一个基于数据结构的通讯录管理系统,实现通讯录的创建、查找、修改、删除等功能。
通过本次实验,我们可以学习和掌握数据结构中的链表、哈希表等基础概念和算法,并将其应用到实际项目中。
分析通讯录管理系统主要有以下几个功能:1.创建通讯录:通讯录是一个存储联系人信息的数据结构,可以存储联系人的姓名、电话号码、邮箱地址等信息。
2.添加联系人:可以向通讯录中添加新的联系人,包括姓名、电话号码、邮箱地址等信息。
3.查找联系人:可以根据姓名或电话号码查找通讯录中的联系人,并显示其详细信息。
4.修改联系人:可以根据姓名或电话号码修改通讯录中的联系人信息。
5.删除联系人:可以根据姓名或电话号码删除通讯录中的联系人。
为了实现上述功能,我们可以使用链表来实现通讯录的存储,每个节点表示一个联系人。
每个节点包含姓名、电话号码、邮箱地址等信息,并且有指向下一个节点的指针。
为了提高查找联系人的效率,我们还可以使用哈希表来实现联系人的快速查找。
哈希表采用键值对的方式存储数据,通讯录中的联系人可以以姓名为键,联系人节点为值存储在哈希表中。
结果实验的最终结果是一个完善的通讯录管理系统,能够实现创建通讯录、添加联系人、查找联系人、修改联系人和删除联系人等功能。
在实现过程中,我们遵循了以下步骤:1.首先,我们设计了联系人节点的数据结构,包括姓名、电话号码、邮箱地址等字段,并定义了节点的操作方法。
2.接着,我们设计了通讯录的数据结构,使用链表来存储联系人节点,并实现了通用的链表操作方法,如插入节点、删除节点等。
3.然后,我们设计了哈希表的数据结构,使用哈希函数将联系人节点存储在哈希表中,并实现了查找联系人的快速算法。
通讯录管理系统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,关系等。
数据结构——通讯录实验报告
《数据结构课程设计》实验报告
编号实验一实验项目名称通讯录管理
班学姓08计科(1)班学时数 6 指导教师冯韵 5 黄媛级号名
成实验日期 2010年9月7日绩
一、实验目的:使用有关单链表的操作来实现通讯录信息系统的管理二、内容与设计思想:(设计思想、主要数据结构、主要代码结构、主要代码段分析) 设计思想:利用单链表的建立、查询、插入、删除、输出实现通讯录管理。
主要数据结构:单链表的建立、查询、插入、删除。
主要代码结构和分析:
void main( )主函数
for循环实现菜单循环。
int menu_select( ) 菜单选择函数
首先输出菜单选项,将输入的选项赋给sn,用sn判断输入值是否合理。
利用for循环实现重复选择,利用switch调用建立、查询、插入、删除和输出函数。
LinkList CreateList(void)建立带头结点链表
首先利用malloc申请头结点,置结束标志为0.通过0、1选择来结束建表。
三、调试过程(测试数据设计与测试结果分析) 四、总结
1、设计中遇到的问题及解决过程
2、设计中产生的错误及原因分析
3、设计体会和收获
五、评阅意见:。
通讯录管理系统实验报告通讯录管理系统实验报告一、引言通讯录是我们日常生活中不可或缺的一部分,它帮助我们记录和管理与各种人的联系方式。
然而,传统的纸质通讯录存在着不便携、易丢失、难以更新等问题。
为了解决这些问题,我们设计并实现了一个通讯录管理系统。
二、系统设计1. 功能设计我们的通讯录管理系统具有以下主要功能:- 添加联系人:用户可以输入联系人的姓名、电话号码、电子邮件等信息,并将其保存到系统中。
- 查找联系人:用户可以根据姓名、电话号码等关键字在通讯录中查找指定的联系人。
- 编辑联系人:用户可以对已有的联系人信息进行修改,包括姓名、电话号码、电子邮件等。
- 删除联系人:用户可以选择删除不需要的联系人信息。
- 导出联系人:用户可以将通讯录中的联系人信息导出为Excel或CSV文件,以便在其他应用程序中使用。
2. 技术实现为了实现上述功能,我们使用了以下技术:- 前端界面:采用HTML、CSS和JavaScript技术,实现用户友好的界面设计。
- 后端逻辑:采用Python编程语言,使用Flask框架搭建Web应用程序。
- 数据存储:使用MySQL数据库存储联系人信息,并通过SQL语句实现数据的增删改查操作。
三、系统实现1. 前端界面我们的前端界面采用了简洁、直观的设计风格,用户可以通过输入框和按钮进行各种操作。
在添加联系人时,用户需要填写姓名、电话号码等信息,并点击保存按钮将联系人信息提交到后端。
在查找联系人时,用户可以输入关键字并点击搜索按钮,系统将根据关键字在通讯录中查找匹配的联系人并显示在界面上。
2. 后端逻辑后端逻辑主要由Flask框架实现,通过路由和视图函数来处理用户的请求。
当用户提交添加联系人的请求时,后端会接收到用户输入的信息,并将其存储到数据库中。
当用户搜索联系人或编辑联系人时,后端会根据用户的请求在数据库中进行相应的查询和更新操作。
当用户删除联系人时,后端会从数据库中删除对应的联系人信息。
数据结构课程设计通讯录管理系统报告前言通讯录管理系统是一种常见的应用程序,用于帮助用户有效地组织和管理他们的联系人信息。
本报告旨在介绍和分析一个基于数据结构设计的通讯录管理系统,其中实现了基本的通讯录功能,并且通过合适的数据结构和算法进行优化。
功能需求通讯录管理系统需要实现以下基本功能: - 添加联系人信息 - 查找联系人信息 - 删除联系人信息 - 更新联系人信息 - 显示所有联系人信息数据结构选择为了实现通讯录管理系统的功能,我们选择使用链表作为数据结构。
链表是一种简单而灵活的数据结构,可以动态地添加或删除节点,非常适合存储联系人信息这种动态的数据。
在这里,我们采用双向链表,使得查找、插入和删除操作更加高效。
算法设计添加联系人信息添加联系人信息时,我们需要遍历链表找到合适的位置插入新节点,这里的算法复杂度为O(n),其中n表示链表的长度。
查找联系人信息查找联系人信息时,我们需要遍历链表查找目标节点,这里的算法复杂度为O(n)。
删除联系人信息删除联系人信息时,我们同样需要遍历链表找到目标节点并删除,其算法复杂度为O(n)。
更新联系人信息更新联系人信息时,我们首先需要查找到目标节点,然后进行更新操作,其算法复杂度也为O(n)。
系统优化为了提高系统的性能,我们可以通过以下几种方式进行优化: - 使用哈希表索引联系人信息,减少查找联系人的时间复杂度; - 引入缓存机制,减少频繁的IO 操作。
总结通过本报告的介绍和分析,我们了解了一个基于数据结构设计的通讯录管理系统的实现原理和优化方法。
在实际应用中,针对具体需求和场景,我们可以进一步优化系统性能,提升用户体验。
通讯录管理系统作为一种简单而实用的应用程序,将在日常生活中发挥重要作用。
[数据结构课程设计通讯录查询系统实验报告范文及源代码]数据结构通讯录工程名称:停车管理系统姓名:学号:专业:软件工程1.需求分析为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的与地址。
设计散列表存储,设计并实现通讯录查找系统。
1.根本要求〔1〕每个记录有以下数据项:号码、用户名、地址;〔2〕从键盘输入各记录,分别以号码为关键字建立散列表;〔3〕采用二次探测再散列法解决冲突;〔4〕查找并显示给定号码的记录;〔5〕通讯录信息文件保存。
2.重点、难点重点:〔1〕通过实验深入理解哈希表既是一种存储形式,又是一种查找方法;〔2〕哈希表的构造;〔3〕哈希冲突方案的设计。
难点:哈希表的构造与哈希冲突方案的设计输入的形式和输入值的范围;输入三个字符串:分别是号码,姓名,地址,每行一个数据字符串长度适当如:号码〔纯数字〕姓名地址输出的形式;如:姓名号码地址程序所能到达的功能。
1:并且通过号码为关键字,用二次再散列法寻找地址储存在哈希表中。
2:3:4:5:显示通讯录6:把通讯录写入文件储存。
2.概要设计(1)数据结构tructlit{chara[12];charname[15];charadd[15];intf=0;};用连续的内存空间构建哈希表tructqtack{tructlit某bae;inti;};(2)程序模块1:构建二次再散列:inti;for(i=1;i<25;i++)d[2某i]=-1某i某i;for(i=1;i<25;i++)/某构造二次再散列某/d[i+i-1]=i某i;2:主菜单:voidinterface(){inti;printf("某某某某某某某某某某某某某某某某某某某某\n");printf("某某某某某某某某某某某某某某某某某某某某\n");canf("%d",&i);witch(i){cae0:return;break;cae1:huru();break;cae2:print();break;cae3:each();break;cae4:del();break;cae5:change();break;cae6:write();break;};}3:输入voidhuru()4:存入哈希表,采用二次探测再散列法解决冲突;voidtore(char某a,char某name,char某add)voideach();voidchange()Voiddel〔〕;voidwrite()(3)各模块之间的调用关系以及算法设计3.详细设计4.测试与分析主界面:构建哈希表,允许号码重复可以支持姓名,,地址三个关键字的查找可以按照姓名地址删除写文件:创立文件通讯录.t某t 如图:5.附录3.cpp#include<tdio.h>#include<tdlib.h>#include<tring.h>#include<iotream>#include<tring.h>uingnamepacetd;intd[50];/某再散列某/tructlit{chara[12];charname[15];charadd[15];intf=0;};tructqtack{tructlit某bae;inti;};tructqtackS;voidtore(char某a,char某name,char某add){intkey;key=int(a[0])+int(a[3])+int(a[7]);/某以号码的第1,4,8位作为关键字构造哈希函数某/S.i=key%20;intj=1;while(true){if((S.bae+S.i)->f==0){trcpy((S.bae+S.i)->a,a);trcpy((S.bae+S.i)->name,name);trcpy((S.bae+S.i)->add,add);(S.bae+S.i)->f=1;break;}S.i=(key%20+d[j])%20;j++;}}voidhuru(){voidinterface();cout<<"请输入:\n例如:\n小王\n安徽省合肥市\n输入0结束\n"; chara[12];charname[15];charadd[15];while(true){canf("%",a);if(a[0]=='0')break;canf("%",name);canf("%",add);printf("%已保存\n",name);tore(a,name,add);/某将输入保存到哈希表某/}interface();}voidprint(){voidinterface();inti;printf("姓名号码地址\n");for(i=0;i<20;i++){if((S.bae+i)->f==1){printf("%%%\n",(S.bae+i)->name,(S.bae+i)->a,(S.bae+i)->add);}}interface();}voideach(){voidinterface();inti;intff=0;intb;chara[15];printf("输入1按号码查找,输入2按姓名查找,输入3按地址查找\n");canf("%d",&b);witch(b){cae1:printf("请输入号码\n");canf("%",a);for(i=0;i<20;i++)if(trcmp(a,(S.bae+i)->a)==0){printf("%%%\n",(S.bae+i)->name,(S.bae+i)->a,(S.bae+i)->add); ff=1;}if(ff==0)printf("找不到该用户\n");break;cae2:printf("请输入姓名\n");canf("%",a);for(i=0;i<20;i++)if(trcmp(a,(S.bae+i)->name)==0){printf("%%%\n",(S.bae+i)->name,(S.bae+i)->a,(S.bae+i)->add); ff=1;}if(ff==0)printf("找不到该用户\n");break;cae3:printf("请输入地址\n");canf("%",a);for(i=0;i<20;i++)if(trcmp(a,(S.bae+i)->add)==0){printf("%%%\n",(S.bae+i)->name,(S.bae+i)->a,(S.bae+i)->add); ff=1;}if(ff==0)printf("找不到该用户\n");break;}interface();}voiddel(){voidinterface();inti;intff=0;chara[15];printf("输入1按号码删除,输入2按姓名删除,输入3按地址删除\n");canf("%d",&b);witch(b){cae1:printf("请输入号码\n");canf("%",a);for(i=0;i<20;i++)if(trcmp(a,(S.bae+i)->a)==0){(S.bae+i)->f=0;Print(“已删除:%%%\n",(S.bae+i)->name,(S.bae+i)->a,(S.bae+i)->add);ff=1;}if(ff==0)printf("找不到该用户\n");cae2:printf("请输入姓名\n");canf("%",a);for(i=0;i<20;i++)if(trcmp(a,(S.bae+i)->name)==0){(S.bae+i)->f=0;printf("已删除:%%%\n",(S.bae+i)->name,(S.bae+i)->a,(S.bae+i)->add);ff=1;}if(ff==0)printf("找不到该用户\n");break;cae3:printf("请输入地址\n");canf("%",a);for(i=0;i<20;i++)if(trcmp(a,(S.bae+i)->add)==0){(S.bae+i)->f=0;printf("已删除:%%%\n",(S.bae+i)->name,(S.bae+i)->a,(S.bae+i)->add);ff=1;}if(ff==0)printf("找不到该用户\n");break;}interface();}voidchange(){voidinterface();inti;intff=0;intb;chara[15];printf("请输入姓名\n");canf("%",a);for(i=0;i<20;i++)if(trcmp(a,(S.bae+i)->name)==0){printf("您要修改的是:%%%\n",(S.bae+i)->name,(S.bae+i)->a,(S.bae+i)->add);printf("请输入新信息\n");canf("%",(S.bae+i)->a);canf("%",(S.bae+i)->name);canf("%",(S.bae+i)->add);printf("已修改成:%%%\n",(S.bae+i)->name,(S.bae+i)->a,(S.bae+i)->add);ff=1;}if(ff==0)printf("找不到该用户\n");interface();}voidwrite()voidinterface();inti=0;FILE某fp;if((fp=fopen("通讯录.t某t","wb"))==NULL){printf("openfileerror\n");e某it(1);}for(i=0;i<=20;i++){intch=32;if((S.bae+i)->f==1){fprintf(fp,"%",(S.bae+i)->name);fputc(ch,fp); fprintf(fp,"%",(S.bae+i)->a);fputc(ch,fp);ch=10;fprintf(fp,"%",(S.bae+i)->add);fputc(ch,fp); }fcloe(fp);interface();}voidinterface(){inti;printf("某某某某某某某某某某某某某某某某某某某某\n"); printf("某某某某某某某某某某某某某某某某某某某某\n"); canf("%d",&i);witch(i){cae0:return;break;cae1:huru();break;cae2:print();break;cae3:each();break;cae4:del();break;cae5:change();break;cae6:write();break;}intmain(){ytem("color70");//可以写成red调出颜色组S.bae=(tructlit某)malloc(20某izeof(tructlit)); ytem("date/T");ytem("TIME/T");inti;for(i=1;i<25;i++)d[2某i]=-1某i某i;for(i=1;i<25;i++)/某构造二次再散列某/d[i+i-1]=i某i;interface();}6.用户使用手册根据主菜单提示选择所想要的操作0:结束程序小华安徽合肥可以根据姓名,,地址分别作为关键字进行查询谢谢使用!。
数据结构通讯录管理系统报告数据结构通讯录管理系统报告⒈系统介绍⑴目的和背景本通讯录管理系统旨在提供一个便捷的方式来管理个人联系人信息。
用户可以使用该系统添加、编辑和删除联系人信息,并实现相关功能,如搜索、排序等。
⑵功能概述本系统主要包含以下功能:●添加联系人:用户可以输入联系人的姓名、方式号码、电子邮件等信息来添加新的联系人。
●编辑联系人:用户可以对已存在的联系人进行信息的修改或更新。
●删除联系人:用户可以选择删除指定联系人以删除其相关信息。
●搜索联系人:用户可以根据姓名或方式号码进行联系人的快速搜索。
●排序联系人:用户可以对联系人按照姓名或方式号码等属性进行升序或降序排列。
●显示联系人:用户可以查看已存储的所有联系人信息。
⑶系统架构本系统基于数据结构的链表实现,通过使用链表结构来存储所有的联系人信息。
每个联系人都是链表的一个节点,包含姓名、方式号码等属性,以及指向下一个联系人的指针。
⒉系统设计⑴数据结构设计本系统使用链表来存储联系人信息。
链表的每个节点包含以下数据项:●姓名:联系人的姓名,类型为字符串。
●方式号码:联系人的方式号码,类型为字符串。
●电子联系人的电子邮件地质,类型为字符串。
●下一个节点的指针:指向下一个联系人节点的指针,类型为链表节点指针。
⑵系统模块设计本系统包含以下模块:●菜单模块:显示主菜单和相应的选项,接受用户输入并调用其他模块执行相应的操作。
●添加模块:添加新的联系人信息,包括姓名、方式号码、电子邮件等。
●编辑模块:修改已存在联系人的信息,如姓名、方式号码、电子邮件等。
●删除模块:删除指定联系人的信息。
●搜索模块:根据指定的姓名或方式号码搜索联系人信息。
●排序模块:按照姓名或方式号码等属性对联系人信息进行排序。
●显示模块:显示当前存储的所有联系人信息。
⒊系统实现⑴编程语言和工具本系统使用C++编程语言实现,使用了链表和相关的指针操作来实现联系人管理功能。
⑵算法设计●添加联系人:通过创建新的链表节点并将其插入到链表末尾来实现联系人的添加功能。
数据结构课程设计实验报告目录1.单位员工通讯录管理系统(线性表的应用) (3)1.1 需求分析和算法设计...................................... ................. (3)1.2 调试分析和测试结果...................................... ................. (4)2.停车场管理(栈和队列的应用) (6)2.1 需求分析和算法设计 (7)2.2 调试分析和测试结果 (8)/译码系统(树应用) (10)3.1 需求分析和算法设计..................................................... (10)3.2 调试分析和测试结果..................................................... (11)4.教学计划编制问题(图的应用) (12)4.1 需求分析和算法设计 (13)4.2 调试分析和测试结果 (14)5.药店的药品销售统计系统(排序应用)……………………………….......14.5.1 需求分析和算法设计 (15)5.2 调试分析和测试结果 (15) (17)6.1 需求分析和概要设计 (17)6.2 调试分析和测试结果 (19)课程设计总结:........................................................................ .21 附录:源代码.. (21)1、单位员工通讯录管理系统(线性表的应用):为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室、手机号、及电子邮箱。
其功能包括通讯录链表的建立、员工通讯信息的查询、修改、插入与删除、以及整个通讯录表的输出。
1.首先我们要进行最基本的操作,即建立链表。
链表的节点信息保存的有员工编号、员工姓名、办公室号码、手机号码、员工邮箱这些信息。
数据结构通讯录管理系统报告数据结构通讯录管理系统报告1.引言1.1 项目背景1.2 项目目的1.3 项目范围1.4 参考文献2.需求分析2.1 功能需求2.1.1 添加联系人2.1.2 删除联系人2.1.3 修改联系人信息2.1.4 查询联系人2.1.5 排序联系人2.1.6 导入导出联系人2.2 性能需求2.2.1 系统响应时间2.2.2 系统并发能力2.2.3 系统稳定性2.3 非功能需求2.3.1 用户界面友好性2.3.2 数据安全性2.3.3 系统兼容性3.设计3.1 系统架构3.1.1 前端设计3.1.2 后端设计3.2 数据结构设计3.2.1 通讯录联系人数据结构 3.2.2 通讯录数据结构3.3 界面设计3.3.1 添加联系人界面3.3.2 删除联系人界面3.3.3 修改联系人信息界面 3.3.4 查询联系人界面3.3.5 排序联系人界面3.3.6 导入导出联系人界面4.开发实现4.1 环境搭建4.1.1 开发工具4.1.2 技术栈选用4.2 前端开发4.2.1 页面布局4.2.2 页面交互逻辑4.3 后端开发4.3.1 接口设计4.3.2 数据库设计4.4 测试与部署4.4.1 单元测试4.4.2 集成测试4.4.3 部署方案5.运行与维护5.1 运行指南5.2 常见问题解答5.3 系统维护6.结论6.1 实现情况总结6.2 可改进之处附件:1.数据结构通讯录管理系统需求文档2.数据结构通讯录管理系统设计文档3.数据结构通讯录管理系统代码法律名词及注释:1.版权:指对作品享有署名权、发表权、修改权、保护作品完整性权等直接财产权和个人权权利的法律保护。
2.专利:指对发明创造作品享有一定时期内的专有权的法律保护。
3.商标:指对商品的名称、图案、标志等通过注册取得的独占权的法律保护。
4.许可:通过合法协议授予他人使用权的行为。
《数据结构》实验报告题目: 实验七 通讯录管理系统学号:2010810071 成 绩班级: 计算1013日期:2011.12.13 姓名:何荣贤指导老师:杨艳华一、实验目的:本次的实验目的在于使读者深入了解查找表的特性,掌握各种查找方法,以便在实际问题背景下灵活运用他们;并且回顾文件操作的使用。
二、实验环境:本次试验在VC++环境下调试。
三、实验内容与完成情况:1.问题描述编程完成通讯录的一般性管理工作,如通讯录中记录的增加、修改、查找、删除、输出等功能。
2.基本要求一个完整的系统应具有以下功能:⑴每个记录包含姓名、电话号码、住址等个人信息;⑵将建立的通讯录以磁盘文件的形式存储,所有的通讯录管理活动均以文件操作的方式进 行;⑶在查找通讯录中的记录时,以记录的“姓名”为查找关键字进行查找。
3.程序代码#include<stdio.h>#include<string.h>#include<stdlib.h>#include<conio.h>#define header1 "|---------------------电话簿-----------------------|\n" #define header2 "| num | name | phonenum | address |\n" #define header3 "|-------|----------|---------------|---------------|\n" #define end "|----------------------结束------------------------|"#define N 100typedef struct tele{int num;char name[10];char address[20];}telebook;void menu(){system("cls");printf("\n\n\n"); /*输出主菜单*/printf("\t\t|* **** 欢迎进入电话薄管理系统! **** *|\n"); printf("\t\t|********************menu********************|\n"); printf("\t\t| |\n"); printf("\t\t| 1 增加 2 读取 |\n"); printf("\t\t| |\n"); printf("\t\t| 3 查找 4 修改 |\n"); printf("\t\t| |\n"); printf("\t\t| 5 删除 6 排序 |\n"); printf("\t\t| |\n"); printf("\t\t| 0 退出 |\n"); printf("\t\t|********************************************|\n"); }void printheader() /*输出菜单头*/{printf(header1);printf(header2);printf(header3);}int add(telebook temp[]){int i;int m=0;FILE *fp;system("cls");exit(0);}printf("每次输入一百个人的信息!\n");printf("如果输入0退出输入!\n");for(i=m;i<(100+m);i++){printf("num:");scanf("%d",&temp[i].num);if(temp[i].num==0)break;printf("name:");scanf("%s",&temp[i].name);printf("phonenum:");scanf("%s",&temp[i].phonenum);printf("address:");scanf("%s",&temp[i].address);fwrite(&temp[i],sizeof(struct tele),1,fp);}m+=100;fclose(fp);system("cls");return 0;}int read(telebook temp[]){int count,i;FILE *fp;system("cls");exit(0);}printheader();for(count=0;fread(&temp[count],sizeof(struct tele),1,fp)==1;count++);/*读取文件内信息的个数。
通讯录管理信息系统实验报告学号:200932020104姓名:罗碧玉【实验目的】1、掌握应用系统开发过程中数据库的设计与实现。
2、巩固第一阶段所学有关Access数据库的基本操作,包括数据库的建立、数据表的建立、表记录的增加删除修改和统计、索引的建立、表间关系的建立、查询和视图的设计等。
【实验内容】“个人通讯录管理系统”的功能是管理自己的通讯录,要求能对通讯录中的记录信息进行增加、删除、编辑操作,能浏览联系人的基本信息,能按照姓名查询联系人的信息等。
请完成通讯录管理系统的数据库设计。
具体要求:1、数据库结构规划设计:分析通讯录管理系统的数据库结构,包括需要几张表,需要哪些字段。
例如通讯录可包括姓名、班级、电话、Email、QQ号等字段。
请根据个人的需要进行规划。
2、建立项目文件3、在项目中建立数据库3、建立表(自行设计表结构,需能满足上述功能的要求)4、适当输入记录5、确定表间关系6、针对自己建立的数据库练习查询和视图的建立。
【实验原理】需求分析:随着信息社会的高速发展,人与人之间的联系越来越频繁,通讯方式越来越多样化,如何保证与朋友、同学、同事、领导、亲戚等之间的联系,并能方便快捷的查找、记录、修改其相关通讯信息。
仅靠以前单独的手工记录已远远不能满足当前的需要。
开发一个通讯录管理系统,借助计算机可以方便、快捷、灵活的管理个人的朋友及相关人员的通讯信息,了解友人相关信息,帮助与友人保持联络。
数据库原理:数据库设计的任务是确定系统所需的数据库。
数据库是表的集合,通常一个系统只需一个数据库。
设计的任务是根据需求分析,确定数据库所包含的表及字段、表间的关系,然后具体确定表的结构,包括字段名、字段类型及宽度,需要的索引等。
系统总体说明:根据对需求得到的数据结构进行分析,按数据输入输出的要求,确定表和表间的关系,并进行验证、调整、修改、完善,使其能够实现用户对数据和功能的要求:1、登录管理:输入用户名和密码登录该通讯录系统。
一、实验背景随着科技的发展,人们的生活节奏越来越快,通讯方式也日益多样化。
为了方便人们管理和查阅通讯信息,通讯录管理系统应运而生。
本实验旨在通过设计和实现一个通讯录管理系统,提高通讯信息管理的效率和便捷性。
二、实验目的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++编程语言实现各个功能模块。
数据结构实验报告实验名称:实验———线性表学生姓名:班级:班内序号:学号:日期:实验要求1.1 实验目的通过选择下面四个题目之一进行实现,掌握如下内容:➢熟悉C++语言的基本编程方法,掌握集成编译环境的调试方法➢学习指针、模板类、异常处理的使用➢掌握线性表的操作的实现方法➢学习使用线性表解决实际问题的能力1.2 实验内容利用线性表实现一个通讯录管理,通信录的数据格式如下:struct DataType{int ID; //编号char name[10];//姓名char ch;//性别char phone[13];//电话char addr[31];//地址};1.3具体要求➢实现通讯录的建立、增加、删除、修改、查询等功能➢能够实现简单的菜单交互,即可以根据用户输入的命令,选择不同的操作。
➢能够保存每次更新的数据(选作)➢能够进行通讯录分类,比如班级类、好友类、黑名单等等(选作)➢编写测试main()函数测试线性表的正确性2. 程序分析通过编程完成通讯录管理系统,实现建立、增加、修改、查找、删除、输出等一般功能,每个数据元素包含成员的ID 、姓名、电话、住址等基本信息。
本程序使用链表的功能,以C++语言为基础编写。
对于本通讯录管理系统的建立,需要了解并掌握链表的算法与设计方法,综合运用所学知识完成。
2.1 存储结构节点结构:2.2 关键算法分析通讯录系统图2.2.1 通讯录的建立 伪代码:1. 在堆栈中申请新的节点2. 新节点的数据为a[i]3. 将新节点添加到链表4. 修改尾指针5.全部插入后最后一个节点的指针域设为空代码实现:ContactBook::ContactBook(DataType a[],int n){front=new Node;rear=new Node;rear=front;for(int i=0;i<n;i++) //尾插法{Node* p=new Node;p->data=a[i];rear->next=p;rear=p;}rear->next=NULL;}时间复杂度=o(n)2.2.2 添加新成员伪代码:与通讯录的建立类似,通过尾插法实现代码实现:void ContactBook::Add(DataType a){Node* p=new Node;p->data=a;rear->next=p;rear=p;rear->next=NULL;}时间复杂度=o(1)2.2.3 查找成员伪代码:1.初始化指针p指向头指针2.循环直到匹配到ID或为p为空3.找到则返回p的位置4.找不到则返回空指针代码实现:DataType* ContactBook::Get(int i)Node* p=front;while(p){if(p->data.ID==i) //ID匹配模式查找return &p->data; //找到则返回p的地址p=p->next;}return NULL; //找不到则返回空}时间复杂度=o(n)2.2.4 删除成员伪代码:1.初始化指针p指向头指针2.循环匹配ID找到要删除的成员的前一个节点3.初始化指针q指向要删除的成员4.保存q的数据5.p指向q的下一节点6.释放q节点代码实现:DataType ContactBook::Delete(int i){Node* p=front;while(p){if(p->next->data.ID==i)break;p=p->next;}Node* q=p->next;//q指针指向要删除的成员if(q){DataType x=q->data;//保存成员数据p->next=q->next;//p的next指向q的nextdelete q;cout<<"删除成功!"<<endl;return x;}else{cout<<"该成员不存在!"<<endl;}}时间复杂度=o(n)2.2.5 修改成员先调用查询模块,找到并打印用户信息,然后依次修改成员信息代码实现:void ContactBook::Modify(DataType a,int i){DataType* p=Get(i);*p=a;}时间复杂度=o(n)2.2.6 打印成员依次打印成员信息代码实现:void ContactBook::printList(){cout<<"您的通讯录成员如下:"<<endl;cout<<"********************"<<endl;Node* p=front->next;while(p){cout<<p->data.ID<<" "<<p-><<" "<<p->data.ch<<" "<<p->data.phone<<" "<<p->data.addr<<endl;cout<<"********************"<<endl;p=p->next;}}时间复杂度=o(n)3. 程序运行结果3.1 主程序流程图图2 流程图示意图3.2 测试截图3.2.1 建立通讯录3.2.2 增加成员3.3.3 查找成员3.3.4 修改成员3.3.5 删除成员3.3.6 打印成员3.3.7 退出4. 总结通过本实验,巩固了我对链表的理解,学会了使用线性表解决一些实际的问题。
一、实训目的本次数据结构实训通讯录报告旨在通过实际操作,加深对数据结构理论知识的理解,提高编程能力,培养实际解决问题的能力。
通过设计、实现和维护一个通讯录管理系统,使学生掌握线性表、链表、树、图等基本数据结构的应用,同时熟悉数据库操作和前端界面设计。
二、实训环境1. 操作系统:Windows 102. 开发工具:Visual Studio 20193. 编程语言:C++4. 数据库:MySQL5. 前端界面设计:Qt三、实训内容1. 系统需求分析(1)功能需求① 添加:允许用户添加新的联系人信息,包括姓名、电话、邮箱、地址等。
② 查询:根据姓名、电话、邮箱等关键字进行模糊查询。
③ 修改:允许用户修改指定联系人的信息。
④ 删除:允许用户删除指定联系人信息。
⑤ 导出:将通讯录数据导出为Excel格式。
⑥ 导入:允许用户从Excel文件导入联系人信息。
(2)性能需求① 系统应具备良好的响应速度,用户操作时,系统应迅速给出反馈。
② 系统应具备较高的稳定性,避免因操作失误导致数据丢失。
2. 系统设计① 联系人信息采用结构体存储,包括姓名、电话、邮箱、地址等字段。
② 联系人信息存储在MySQL数据库中,使用线性表进行管理。
③ 查询操作采用二分查找算法,提高查询效率。
(2)功能模块设计① 添加模块:用户输入联系人信息,系统将其存储在数据库中。
② 查询模块:用户输入关键字,系统从数据库中查找匹配的联系人信息。
③ 修改模块:用户输入联系人信息,系统将其更新到数据库中。
④ 删除模块:用户输入联系人信息,系统将其从数据库中删除。
⑤ 导出模块:将数据库中的联系人信息导出为Excel格式。
⑥ 导入模块:用户上传Excel文件,系统将其中的联系人信息导入数据库中。
3. 系统实现(1)数据库设计① 创建联系人信息表(contact_info),包括姓名、电话、邮箱、地址等字段。
② 设计SQL语句,实现数据的增删改查操作。
(2)编程实现① 使用C++实现各个功能模块,包括添加、查询、修改、删除等。