湖南科技大学 数据结构 课程设计 通讯录 免费

合集下载

数据结构课程设计报告---通讯录

数据结构课程设计报告---通讯录

数据结构课程设计报告---通讯录## 一、项目背景随着信息科技的发展,现代社会通讯录的应用越来越普遍,满足了人们信息的获取和管理的需求。

本项目的设计目的在于使用面向对象的程序思想,以面向对象的方式它来实现对通讯录信息的管理,进而提高信息的管理效率,提升信息的可靠性和安全性,最终达到为社会实施科学管理的目的。

## 二、系统需求1. 界面美观、格式明确,有良好的友好提示。

2. 系统稳定性强,能承受短时间的高并发量使用。

3. 提供友好的系统操作界面,对用户操作进行一定的约束,方便用户操作。

4.提供有效的联系人信息管理功能,能够实现增删改查等操作。

5.支持联系人信息备份和恢复,以及密码设置。

6.能够防止任何人未经授权而访问系统,或者磁盘信息的泄露。

此系统的设计主要分为三大部分,即界面层、业务逻辑层和数据存储层。

界面层通过展示信息给用户,实现数据的输入及输出;业务逻辑层主要处理用户请求,实现对数据的操作;数据存储层通过文件存储数据,实现对联系人信息的永久保存。

本项目采用C++语言,以链表数据结构为基础,将用户的联系人存储在链表中,充分利用其动态性,实现联系人的增删改查操作.同时,为了提供更进一步的使用,增加了密码功能,对未授权访问进行防止,以及数据备份和恢复功能。

## 四、功能实现1. 界面设计:首先,根据系统所需要的功能,采用控制台方式,以文字提示形式,配以整齐美观的各项参数和信息,实现各项功能。

2. 加密控制:本系统实现授权登陆加密功能,使系统对未经授权的用户隐藏信息,以确保系统的安全性。

3. 测试功能:功能的测试旨在确保程序的完整性和正确性。

4. 管理功能:本系统实现联系人信息的增删改查操作,在这几项功能的实现过程中,使用链表数据结构,更好的实现程序的功能。

5. 修改密码功能:此功能实现用户可以修改自己的密码,以确保用户自己可以比较安全的使用系统,不会受到他人的侵犯。

6. 加载和存储数据:通过使用文件存储,实现数据的存储和读取,以及备份功能,实现对数据永久保存。

(完整版)通讯录管理系统数据结构毕业课程设计(C语言)

(完整版)通讯录管理系统数据结构毕业课程设计(C语言)

湖南工程学院课程设计报告通讯录管理系统姓名:李任学院:计算机与通讯学院专业:计算机科学与技术班级:计算机0803班指导教师:刘长松目录1.第一章:前言 (2)2.第二章:概述 (3)3.第三章:算法分析 (5)4.第四章:主要流程图 (12)5.第五章:程序源代码 (13)6.第六章:测试及输出结果 (20)7.第七章:课程设计体会 (23)8.第八章:参考文献 (24)第一章:前言通过一个学期的学习,我认为要学好C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固我的知识。

而C语言课程设计则对我们有以下几点帮助:1. 进一步掌握和利用C语言进行程序设计的能力;2. 进一步理解和运用结构化程序设计的思想和方法;3. 初步掌握开发一个小型实用系统的基本方法;4. 学会调试一个较长程序的基本方法;5. 学会利用流程图或N-S图表示算法;6. 掌握书写程设计开发文档的能力 (书写课程设计报告) 。

第二章:概述一、本课程设计的目的和意义本课程设计可加深对课堂理论学习的理解,增强动手能力,以培养学生合作的能力,为毕业设计作好实践环节上的准备。

通讯录系统是在学校常见的计算机信息管理系统。

它的主要任务是对学生信息进行管理,如学生信息的输入、查询、修改、增加、删除,迅速准确地完成各种学生信息的统计和查询。

二、本课程设计主要内容本系统有分7个功能:(1)写入数据(2)读取数据(3)追加数据(4)查找数据(5)备份数据(6)删除数据(7)还原数据。

其主要利用结构类型,指针,数组,函数等C语言知识来实现。

第三章:算法分析整个系统共分为8模块,主函数加7个子函数,从而实现7大功能:写入数据,读取数据,追加数据,查找数据,备份数据,删除数据,还原数据;各个程序的算法分析如下:(1)主函数main():利用for( ; ; )和switch()实现主界面的显示与各选项的连接;流程图如下:(2)写入函数void input1():利用文件的fwrite()语句来实现数据的保存;流程图如下:(3)读取数据void read1():利用文件的fread()语句来实现数据的读取;流程图如下(4)追加数据void append1():利用fread()来读出文件里的数据,从而确定数据的数量,再在最后一条数据后通过fopen(“文件名”,”ab”)来实现追加;流程图如下:(5)查找数据void find1()通过strcmp()==0来实现数据的查找;流程图如下:(6)备份数据void backup1():通过将数据复制到另一个文件里的方法来实现备份功能;流程图如下:(7)删除数据void delete1():通过将后一行数据覆盖前一行数据的方法来实现删除功能;流程图如下:(8)还原数据comeback1():通过将已备份的数据复制到原来的这个文件里的方法来实现还原的流程图如下:第四章:主要流程图系统功能模块结构图:各模块功能的分析:(1)主函数:可让用户选择用系统的哪个功能,从而去连接到相应的子函数;(2)写入数据:让用户输入通讯录里的内容,并将内容保存好;(3)读取数据:显示通讯录里已保存的数据;(4)追加数据:让用户在通讯录原有数据中,再加上新的数据;(5)查找数据:通过用户输入需要找的名字来找到相关资料;(6)备份数据:将已有数据进行备份;(7)删除数据:让用户删除想要删除的资料;(9)还原数据:使通讯录里的数据恢复到备份时的模样。

数据结构实验报告2--通讯录

数据结构实验报告2--通讯录

一、实验目的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;}}}运行结果:建立通讯录信息运行结果截图:输入零后通讯录信息输出结果截面图:查询通讯录信息运行结果截图:通讯录信息排序运行结果截图:删除通讯录信息运行结果截图:删除通讯录信息后的输出结果截面图:清空通讯录信息的运行结果截面图:四、实验心得与小结通过这次的上机实验,使我学到了一些回顾了以前学过的知识,使我对数据结构程序设计有了更深层次的认识和理解,懂得了灵活运用。

数据结构课程设计-建通讯录

数据结构课程设计-建通讯录

建通讯录要求:第一个模块——主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。

第二个模块——Menu()的功能是:显示英文提示选单。

第三个模块——Quit()的功能是:退出选单。

第四个模块——Create()的功能是:创建新的通讯录。

第五个模块——Add()的功能是:在通讯录的末尾,写入新的信息,并返回选单。

第六个模块——Find()的功能是:查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。

第七个模块——Alter()的功能是:修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。

第八个模块——Delete()的功能是:删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。

第九个模块——List()的功能是:显示通讯录中的所有记录。

人数:2人要求:实用目录第一章课程设计目的和要求 (1)1.1 课程设计的目的 (1)1.2 课程设计实现的要求 (1)第二章课程设计任务内容 (2)第三章详细设计说明 (3)3.1 模块 (3)3.2 性能 (4)3.3 算法说明 (5)3.4 函数说明 (5)3.5 系统程序流程图 (15)第四章软件使用说明 (17)4.1 软件使用说明及出现的问题 (17)4.2运行结果 (17)第五章课程设计心得与体会 (21)附录一:参考文献 (22)附录二:程序清单 (23)通讯录系统第一章课程设计目的和要求1.1 课程设计的目的进一步巩固《C++程序设计》所学的知识,特别加强数组,指针,结构体,文件数据类型的应用,熟悉面向过程的结构化和面向对象可视化程序设计方法,培养结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解,锻炼程序设计的能力,以及用C/C++ 语言解决实际问题的能力,为以后后续课程的学习打好基础。

此课程设计着眼于知识的运用,把平常学的知识运用到课程实践中来,本身就是考察我们知识运用能力。

数据结构课程设计-通讯录管理系统

数据结构课程设计-通讯录管理系统

《数据结构》课程设计报告书题目:通讯录管理系统系别:计算机科学与应用系学号:学生姓名:指导教师:完成日期:2012年5月28日1 问题描述(1)题目内容:通讯录管理。

(2)基本要求:利用单链表实现通讯录的建立、通讯者的插入、通讯者的删除、通讯者的查询以及通讯录的输出。

(3)设计目的:通过本次课程设计,了解通讯录的一些基本功能。

掌握利用单链表进行插入,查找,用关键字建立单链表。

2 需求分析经过本次的课程设计,我认为通讯录主要实现的功能如下:(1)添加信息:一个通讯录应该有其基本的添加功能。

在程序设计时,我通过一个具有添加功能的函数,实现了个人信息的添加,如:姓名,性别,电话号码,QQ号码,地址。

(2)删除信息:当你不需要某个联系人的信息时,可以直接将该人的信息删除。

(3)查找:一个通讯录应该具有令一基本功能就是查找,本设计时可以按联系人为关键字查找的,只要你输入要查找人的姓名或手机号码或QQ号码就可出来相应的个人信息。

(4)输出:一个通讯录应该具有输出所有联系人的功能,本设计按照次序可以从头到尾把通讯录中的所有联系人都输出,供自己查看。

(5)退出:当你做完你要做的事情之后,就可以退出该程序。

3 总体设计3.1 算法的定义LinkList Creat_LinkList()创建空单链表void Insert_LinkList(LinkList H)建立通讯录,录入联系人的信息,可以把联系人的姓名,性别,手机号,QQ号,地址录入系统。

void Locate_LinkList(LinkList H)按照联系人的姓名,手机号码,QQ号码查找通讯录中联系人的信息。

void Delete_LinkList(LinkList H)按照联系人的姓名,手机号码,QQ号码删除联系人的所有信息。

void print_LinkList(LinkList H)输出通讯录中的所有联系人的信息供使用者查看。

3.2 系统流程图图3-1通讯录管理功能图3.3 详细程序设计1)定义数据结构typedef struct Node //定义数据结构{char name[20];//姓名char sex[4]; //性别char tel[11];//电话号码char qq[13]; //qq号码char ad[100];//地址Node *next;//存放后继元素的地址}LNode,*LinkList;2)创建一个空的单链表LinkList Creat_LinkList(){//创建空单链表,入口参数无LinkList H;H=new LNode;if(H)//确认创建头结点创建是否成功,若成功,修改单链表头结点的指针域为0表空表{H->next=NULL;}return H;}3)向通讯录中插入联系人void Insert_LinkList(LinkList H){LinkList p;p=new LNode;if(!p){cout<<"不能插入!"<<endl;}cout<<"请输入你要插入的联系人信息:"<<endl;cout<<"姓名:"<<endl;cin>>p->name;cout<<"性别:"<<endl;cin>>p->sex;cout<<"手机号码:"<<endl;cin>>p->tel;cout<<"QQ号码:"<<endl;cin>>p->qq;cout<<"地址:"<<endl;cin>>p->ad;p->next=H->next;H->next=p;cout<<"插入成功"<<endl;}4)查询通讯录中某个联系人的信息void Locate_LinkList(LinkList H){int x;LinkList p=H->next;cout<<"你要通过哪种方式查询?"<<endl;cout<<"1.通过联系人姓名查询"<<endl;cout<<"2.通过联系人手机号码查询"<<endl;cout<<"3.通过联系人QQ号码查询"<<endl;cin>>x;char str[30];if(x==1){cout<<"请输入你要查询的联系人的姓名:";cin>>str;while(p && strcmp(p->name,str)!=0){p=p->next;}}if(x==2){cout<<"请输入你要查询的联系人的手机号码:";cin>>str;while(p&&strcmp(p->tel,str)!=0){p=p->next;}}if(x==3){cout<<"请输入你要查询的联系人的QQ号码:";cin>>str;while(p&&strcmp(p->qq,str)!=0){p=p->next;}}if(p==NULL){cout<<"没有找到你要查找的联系人的信息!"<<endl;}else{cout<<"你要找的联系人的信息为:"<<endl;cout<<"姓名:"<<p->name<<endl;cout<<"性别:"<<p->sex<<endl;cout<<"手机号:"<<p->tel<<endl;cout<<"QQ号码"<<p->qq<<endl;cout<<"地址"<<p->ad<<endl;}}5)删除通讯录中某个联系人的信息void Delete_LinkList(LinkList H){if(H->next==NULL){cout<<"通讯录为空,不能删除"<<endl;}else{int x;char str[30];LinkList p,q;p=H->next;cout<<"请输入你要删除的方式:"<<endl;cout<<"1.按照联系人的姓名删除"<<endl;cout<<"2.按照联系人的手机号码删除"<<endl;cout<<"3.按照联系人的QQ号码删除"<<endl;cin>>x;q=H;if(x==1){cout<<"请输入你要删除的联系人的姓名:"<<endl;cin>>str;while(strcmp(p->name,str)!=0){q=p;p=p->next;}}if(x==2){cout<<"请输入你要删除的联系人的手机号码:"<<endl;cin>>str;while(strcmp(p->tel,str)!=0){q=p;p=p->next;}}if(x==3){cout<<"请输入你要删除的联系人的QQ号码:"<<endl;cin>>str;while(strcmp(p->qq,str)!=0){q=p;p=p->next;}}if(p==NULL){cout<<"没有你要删除的联系人的记录"<<endl;}else{q->next=p->next;p->next=NULL;free(p);cout<<"该联系人已删除"<<endl;}}}6)输出所有联系人void print_LinkList(LinkList H){if(H->next==NULL){cout<<"通讯录为空"<<endl;}else{LinkList p;p=H->next;while(p!=NULL){cout<<"性别:"<<p->sex<<endl;cout<<"手机号:"<<p->tel<<endl;cout<<"QQ号码:"<<p->qq<<endl;cout<<"地址:"<<p->ad<<endl;p=p->next;}}}7)主函数void main(){int a;LinkList List;List=Creat_LinkList();do{cout<<"*****欢迎进入通讯录管理*****"<<endl;cout<<"*****添加联系人请按1*****"<<endl;cout<<"*****查找联系人请按2*****"<<endl;cout<<"*****删除联系人请按3*****"<<endl;cout<<"*****输出所有联系人请按4*****"<<endl;cout<<"*****退出请按0*****"<<endl;cout<<"请输入你的选择:"<<endl;cin>>a;switch(a){case 0:break;case 1:Insert_LinkList(List);break;case 2:Locate_LinkList(List);break;case 3:Delete_LinkList(List);break;case 4:print_LinkList(List);break;}cout<<"操作完毕,请再次选择!"<<endl;}while(a!=0);}3.4 测试运行程序,看到主界面。

数据结构课程设计通讯录管理系统报告

数据结构课程设计通讯录管理系统报告

数据结构课程设计通讯录管理系统报告前言通讯录管理系统是一种常见的应用程序,用于帮助用户有效地组织和管理他们的联系人信息。

本报告旨在介绍和分析一个基于数据结构设计的通讯录管理系统,其中实现了基本的通讯录功能,并且通过合适的数据结构和算法进行优化。

功能需求通讯录管理系统需要实现以下基本功能: - 添加联系人信息 - 查找联系人信息 - 删除联系人信息 - 更新联系人信息 - 显示所有联系人信息数据结构选择为了实现通讯录管理系统的功能,我们选择使用链表作为数据结构。

链表是一种简单而灵活的数据结构,可以动态地添加或删除节点,非常适合存储联系人信息这种动态的数据。

在这里,我们采用双向链表,使得查找、插入和删除操作更加高效。

算法设计添加联系人信息添加联系人信息时,我们需要遍历链表找到合适的位置插入新节点,这里的算法复杂度为O(n),其中n表示链表的长度。

查找联系人信息查找联系人信息时,我们需要遍历链表查找目标节点,这里的算法复杂度为O(n)。

删除联系人信息删除联系人信息时,我们同样需要遍历链表找到目标节点并删除,其算法复杂度为O(n)。

更新联系人信息更新联系人信息时,我们首先需要查找到目标节点,然后进行更新操作,其算法复杂度也为O(n)。

系统优化为了提高系统的性能,我们可以通过以下几种方式进行优化: - 使用哈希表索引联系人信息,减少查找联系人的时间复杂度; - 引入缓存机制,减少频繁的IO 操作。

总结通过本报告的介绍和分析,我们了解了一个基于数据结构设计的通讯录管理系统的实现原理和优化方法。

在实际应用中,针对具体需求和场景,我们可以进一步优化系统性能,提升用户体验。

通讯录管理系统作为一种简单而实用的应用程序,将在日常生活中发挥重要作用。

数据结构课程设计通讯录管理系统

数据结构课程设计通讯录管理系统

数据结构课程设计通讯录管理系统一、系统需求分析通讯录管理系统的主要目标是提供一个方便、高效的方式来管理联系人信息。

具体需求包括:1、能够添加联系人,包括姓名、电话号码、电子邮件、地址等基本信息。

2、可以对联系人信息进行修改和删除操作。

3、支持按照姓名、电话号码等关键字进行快速查找。

4、能够以列表形式展示所有联系人的信息。

二、数据结构选择为了实现上述功能,我们需要选择合适的数据结构来存储联系人信息。

考虑到联系人信息的多样性和动态性,链表是一个不错的选择。

链表可以方便地进行插入、删除和修改操作,并且能够灵活地调整存储空间。

另外,为了提高查找效率,我们可以结合使用哈希表。

通过将联系人的关键信息(如姓名或电话号码)进行哈希运算,快速定位到对应的联系人节点。

三、系统功能实现1、添加联系人功能当用户选择添加联系人时,系统会提示用户输入联系人的各项信息。

这些信息被封装成一个结构体,并通过链表的插入操作添加到链表中。

同时,将关键信息映射到哈希表中,以便后续快速查找。

2、修改联系人功能用户输入要修改的联系人的关键字,系统通过哈希表快速找到对应的联系人节点。

然后,提示用户输入修改后的信息,并更新链表和哈希表中的数据。

3、删除联系人功能与修改功能类似,通过关键字找到联系人节点,从链表和哈希表中删除相应的节点和信息。

4、查找联系人功能用户输入查找关键字,系统通过哈希表进行快速定位,如果找到匹配的联系人,则显示其详细信息。

5、展示所有联系人功能遍历链表,将所有联系人的信息以列表形式输出到屏幕上。

四、系统界面设计为了提高用户体验,系统设计了简洁直观的界面。

主界面提供了添加、修改、删除、查找和展示所有联系人等功能选项。

用户通过选择相应的选项,进入对应的操作流程。

五、代码实现示例以下是部分关键代码的示例:```c//联系人结构体typedef struct Contact {char name50;char phoneNumber20;char email50;char address100;struct Contact next;} Contact;//哈希表节点结构体typedef struct HashNode {char key50;Contact contact;struct HashNode next;} HashNode;//链表插入联系人void insertContact(Contact head, Contact newContact) {newContact>next = head;head = newContact;}//哈希函数unsigned int hashFunction(const char key) {unsigned int hash = 0;while (key) {hash =(hash << 5) + key++;}return hash % HASH_TABLE_SIZE;}//查找联系人Contact findContact(Contact head, const char key, HashNode hashTable) {unsigned int hashValue = hashFunction(key);HashNode node = hashTablehashValue;while (node) {if (strcmp(node>key, key) == 0) {return node>contact;}node = node>next;}Contact current = head;while (current) {if (strcmp(current>name, key) == 0 ||strcmp(current>phoneNumber, key) == 0) {//更新哈希表HashNode newNode =(HashNode )malloc(sizeof(HashNode));strcpy(newNode>key, key);newNode>contact = current;newNode>next = hashTablehashValue;hashTablehashValue = newNode;return current;}current = current>next;}return NULL;}```六、系统测试在完成系统的开发后,需要进行全面的测试以确保系统的稳定性和可靠性。

数据结构课程设计 — 通讯录的制作

数据结构课程设计 — 通讯录的制作
创建哈希表——void CreateHash()
查找哈希表中的关键字——void SearchHash()
4.3详细设计
4.3.1定义的所有数据类型
(1)定义通讯录节点结构体
typedef struct{ //每一条电话本记录
NA name;
NA tel;
NA add;
}Record;
(2)定义哈希表节点结构体
4、设计内容……………………………………………………………3
4.1需求分析…………………………………………………………3
4.2总体设计…………………………………………………………4
4.2.1本程序中用到的所有抽象数据类型的定义………………4
4.2.2主程序的流程………………………………………………4
添加新的用户信息
查找并显示给定用户名的记录
查找并显示给定电话号码的记录
显示版本信息并退出通讯录
C.根据选项实际操作
主函数void main()分别调用下面函数并对应输出void printf()
录入内存内容——void getin()
显示用户信息——void ShowInformation()
输入新名片信息——void insert()
if(strcmp(x,y)==0)
return SUCCESS;
else return UNSUCCESS;
}Status NUM_BER; //记录的个数
(4)对姓名的折叠处理
long fold(NA s)
{ //姓名的折叠处理,就是将名字转换成一个数值
char *p; long sum=0; NA ss;
while((H->elem[pp]!=NULL)&&(eq(str,H->elem[pp]->name)==-1))

数据结构课程设计-建通讯录

数据结构课程设计-建通讯录

数据结构课程设计-建通讯录建通讯录要求:第一个模块——主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。

第二个模块——Menu()的功能是:显示英文提示选单。

第三个模块——Quit()的功能是:退出选单。

第四个模块——Create()的功能是:创建新的通讯录。

第五个模块——Add()的功能是:在通讯录的末尾,写入新的信息,并返回选单。

第六个模块——Find()的功能是:查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。

第七个模块——Alter()的功能是:修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。

第八个模块——Delete()的功能是:删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。

第九个模块——List()的功能是:显示通讯录中的所有记录。

人数:2人要求:实用目录第一章课程设计目的和要求 (1)1.1 课程设计的目的 (1)1.2 课程设计实现的要求 (1)第二章课程设计任务内容 (2)第三章详细设计说明 (3)3.1 模块 (3)3.2 性能 (4)3.3 算法说明 (5)3.4 函数说明 (5)3.5 系统程序流程图 (15)第四章软件使用说明 (17)4.1 软件使用说明及出现的问题 (17)4.2运行结果 (17)第五章课程设计心得与体会 (21)附录一:参考文献 (22)附录二:程序清单 (23)通讯录系统第一章课程设计目的和要求1.1 课程设计的目的进一步巩固《C++程序设计》所学的知识,特别加强数组,指针,结构体,文件数据类型的应用,熟悉面向过程的结构化和面向对象可视化程序设计方法,培养结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解,锻炼程序设计的能力,以及用C/C++ 语言解决实际问题的能力,为以后后续课程的学习打好基础。

通讯录系统——数据结构课程设计

通讯录系统——数据结构课程设计

通讯录系统——数据结构课程设计数据结构课程设计通讯录⽬录1、课程设计的⽬的: (1)2、需求分析: (1)1. 要求: (1)2. 详细功能: (1)3、课程设计报告内容: (1)1. 通讯录管理系统调⽤关系图: (1)2. 设计结构体及函数表: (2)3. 实现主程序和各模块的调⽤关系: (2)4、详细设计: (3)1. 各个操作的算法实现: (3)2.程序清单:(见附录) (4)5、参考⽂献: (5)6、部分运⾏结果界⾯: (5)1.调试分析: (7)2. 调试中遇到的问题: (7)7、总结: (8)8、附录:(程序) (8)1、课程设计的⽬的:⽤〈〈数据结构〉〉中的双向链表作数据结构,结合C语⾔基本知识。

编写⼀个通讯录管理系统。

以把所学数据结构知识应⽤到实际软件开发中去。

了解并掌握数据结构与算法的设计⽅法,具备初步的独⽴分析和设计能⼒;初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本⽅法和技能;提⾼综合运⽤所学的理论知识和⽅法独⽴分析和解决问题的能⼒;训练⽤系统的观点和软件开发⼀般规范进⾏软件开发,培养软件⼯作者所应具备的科学的⼯作⽅法和作风;2、需求分析:1.要求:(1)设计⼀个实⽤的⼩型通讯录,⽤双向链表做数据结构,编写⼀个通讯录管理系统实现通讯录信息的输⼊、添加、显⽰、以姓名做关键字进⾏查找、删除信息等功能。

(2)每条信息⾄少包含:姓名、街道、城市、邮编、国家等信息。

2.详细功能:A.载⼊⽂件load():将磁盘中可能存在的⽂件载⼊到内存中。

A.信息输⼊enter():系统将提⽰输⼊新纪录所需信息,信息包含:姓名、街道、城市、邮编、国家。

B.信息删除del():⾸先提⽰⽤户输⼊要删除的纪录姓名,然后调⽤删除函数,删除该纪录的相关资料,⽀持重名选择删除和循环删除。

C.查找search():提⽰⽤户输⼊要查找的姓名,然后系统调⽤查找函数查找,接着系统使⽤相关命令输出查到的全部信息。

通讯录的设计_数据结构课程设计(含代码)

通讯录的设计_数据结构课程设计(含代码)

课程设计说明书课程名称:数据结构课程设计专业:电子信息科学与技术班级:2012-1 设计人:山东科技大学2015年7月11日目录1需求分析说明 (1)2概要设计说明 (1)2.1 数据结构定义 (1)2.2 整体程序流程图 (2)3详细设计说明 (3)3.1主函数模块 (3)3.2 增加联系人模块 (3)3.3 删除联系人模快 (3)3.4 查找联系人模块 (4)3.5 联系人保存到文件模块 (5)3.6 读取文件中的联系人信息模块 (6)3.7命令接收与判断模块 (8)3.8显示联系人信息模块 (8)4调试分析 (8)4.1遇到的问题 (8)4.2调试 (8)5用户使用说明 (11)6课程设计总结 (12)1需求分析说明通讯录管理系统总体设计目标:用《数据结构》中的双向链表作数据结构,结合C语言基本知识,编写一个具有良好可操作性、有一定容错能力通讯录管理系统,以把所学数据结构知识应用到实际软件开发中去。

其中联系人的信息包括姓名、街道、城市、邮编、国家等几项。

系统在命令行模式下运行,通过输入命令的方式操作。

根据以上基本要求分析出系统应具备以下功能:显示所有联系人信息,向通讯录中添加新的联系人,删除指定联系人,将联系人信息保存到文件中,从文件中读取联系人信息到内存,以姓名为关键字查找联系人。

根据以上要实现的功能,首先要构造一个保存联系人信息的数据结构person_info,根据要求这个结构应具有两个指针域以指向其前一个结构和后一个结构从而构成双链表;其数据域包括姓名、街道、城市、邮编、国家等信息,这些信息分别保存在字符数组中。

除了基本的联系人结构(相当于双链表的一个结点)还应构造一个person_list结构,包括一个指向第一个联系人结点的指针和一个保存链表长度的元素。

2概要设计说明2.1数据结构定义考虑到本系统在初始化阶段要进行大规模的插入操作以构造链表,故采用插入元素较为方便快速的链式存储结构。

数据结构(C++)课程设计——通讯录管理系统

数据结构(C++)课程设计——通讯录管理系统

湖南工业大学计算与通讯学院课程设计报告书课程名称:数据结构课程设计班级: 08级信计2班学号: ******** *名:**指导老师:小纪峰1,设计项目名称:通讯录管理系统2,课程设计目的:通过设计一个《通讯录管理系统》,进一步熟悉C中类的概念、基本知识和技利用所学的基本知识和技能解决简单的面向对象的程序设计问题。

了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块组装与整体调试的全过程,加深对C的理解与Visual C++环境的使用:逐步熟悉程序设计的方法,并养成良好的编程习惯。

3,内容及设计要求:编写一个通讯录管理系统。

以把所学数据结构知识应用到实际软件开发中去。

设计内容:本系统应完成一下几方面的功能:1)输入信息——enter();2)显示信息———display( );3)查找以姓名作为关键字———search( );4)删除信息———delete( );5)存盘———save ( );6)装入———load( ) ;设计要求:1)每条信息至包含:姓名(NAME )街道(STREET)城市(CITY)邮编(EIP)国家(STATE)几项2)作为一个完整的系统,应具有友好的界面和较强的容错能力3)上机能正常运行,并写出课程设计报告.3.12 详细功能如下:A,添加:系统将提示用户输入新添加人员信息,输入到文件中,人员信息数据包括姓名(name),街道(street),城市(city),邮编(eip),国家(state).B,删除:首先由用户输入要删除的人员的姓名,然后调用删除函数,删除该人员的所有相关资料.C,显示所有人员信息:该功能将显示已经保存的所有人员的姓名,街道,城市,邮编及国家.D,查询:可由用户输入要查找的人员姓名,然后系统用查找函数查找,接着系统使用相关文件命令输出所查找的人员的全部信息.E,退出系统关闭通讯录管理系统.3.2,规格说明:4,详细设计:4.1,通讯录管理系统功能说明图:通讯录管理系统4.2,数据结构及各模块分析:4.21:设计类,对象及基本数据类型:4.211创建一个record类,它有五个数据成员:char name[20]; 姓名char street[20]; 街道char city[20]; 城市char eip[20]; 邮编char state[20]; 国家包含函数:功能如下: void mainmenu(); 主菜单void searchmenu(); 查找菜单void enter(); 新添纪录void search(); 按姓名查询 void display(); 显示所有void load(); 读取文件void save(); 写入文件void delete(); 按姓名删除4.212,结构体:struct record{char street[20];char name[20];char city[20];char state[20];char eip[20];}student[500];struct slnode{record date;struct slnode *next;struct slnode *prior;};4.3,设计流程图6,调试分析及心得体会:6.1,调试分析:void load()//从文件导入{if((fp=fopen("student","rb"))==NULL) //打开文件进行读的操作{printf("\n\t\t通讯录文件不存在");if ((fp=fopen("student","wb"))==NULL)//打开文件进行读的操作{printf("\n\t\t建立失败");exit(0);}else{printf("\n\t\t通讯录文件已建立");printf("\n\t\t按任意键进入主菜单");getch(); //从键盘接收一个字符}return; //返回主函数的主菜单}exit(0);}fseek(fp,0,2); /*文件位置指针移动到文件末尾*/if (ftell(fp)>0) /*文件不为空*/{rewind(fp); /*文件位置指针移动到文件开始位置*/for (num=0;!feof(fp) && fread(&student[num],sizeof(struct record),1,fp);num++);.......getch();return;}6.11void search()//查找人{int j=0,a=0;//j用来记录查找.......scanf("%s",name);for(int i=a;i<num;i++,p=p->next)//num用来表示联系人的个数{if(strcmp(name,p->next->)==0)//查找是否有该人,有则输出该点所有信息,并往下查找。

通讯录制作(数据结构课程设计)

通讯录制作(数据结构课程设计)
类似于(栈)那种情况
line *temp=p;
line *del=temp->next;
temp->next=temp->next->next;
free(del);
printf("删除成功\n"); return p;
}
//指定名字删除
int select_name(line *p,char *name)
if (t->elem==elem){
return i;
}
i++;
}
//程序执行至此处,表示查找失败
return -1;
}
三、课程设计中遇到的难点及解决办法问题:对数据进行增删改查后,如何将改变的数据同步到文件? 解决方法:在退出函数前面设置一个保存文件的函数,这样无论数据发生怎样的变化, 都会在结尾时,随着退出函数的实现而实现。
while(temp->next)
{if(strcmp(temp->name,name)==0)
{
printf("请对该账号进行重新修改\n");
scanf("%s %s",&temp->name,&temp->cell_number);
printf("修改成功!\n");
}
temp=temp->next;
算法实现:
//p为原链表,elem表示被查找元素、
int selectElem(link * p,int elem){
//新建一个指针t,初始化为头指针p
link * t=p;
int i=1;
//由于头节点的存在,因此while中的判断为t->next

通讯录的制作数据结构课程设计

通讯录的制作数据结构课程设计

通讯录的制作数据结构课程设计
在通讯录的制作数据结构课程设计中,我们将使用链表作为主要的数据结构来存储联系人的信息。

链表是一种动态数据结构,它可以根据实际需要动态地分配和释放内存,非常适合用来存储不定数量的联系人信息。

首先,我们需要设计一个联系人的结构体,包含姓名、电话号码、邮箱等基本信息。

然后,我们可以使用链表节点来表示每个联系人,每个节点包含一个联系人的信息以及指向下一个节点的指针。

在创建通讯录时,我们将使用一个头节点来表示通讯录的起始位置,该头节点不包含任何联系人信息,只有一个指向第一个联系人节点的指针。

这样,我们可以通过头节点来遍历整个通讯录,并且在需要插入或删除联系人时更加方便。

在通讯录的实现中,我们可以提供一系列的操作函数,例如添加联系人、删除联系人、查找联系人、显示通讯录等。

这些操作函数可以通过遍历链表来实现对联系人的管理。

除了基本的功能,我们还可以扩展通讯录的功能,例如按照姓名首字母进行排序、按照电话号码进行查找等。

这些功能的实现可以通过链表的操作和排序算法来完成。

此外,我们还可以考虑使用其他数据结构来优化通讯录的实现。

例如,可以使用哈希表来加快对联系人的查找速度,或者使用二叉搜索树来实现按照姓名首字母进行排序。

综上所述,通讯录的制作数据结构课程设计中,我们将使用链表作为主要的数据结构,并通过实现一系列的操作函数和扩展功能来实现对联系人的管理和查询。

同时,我们也可以考虑使用其他数据结构来优化通讯录的实现。

这样的设计可以提高通讯录的效率和方便性,使用户能够更加方便地管理和查找自己的联系人信息。

通讯录——数据结构课程设计

通讯录——数据结构课程设计

通讯录——数据结构课程设计通讯录是一个用于存储和管理联系人信息的工具。

在数据结构课程设计中,我们需要设计一个通讯录系统,使用户能够方便地添加、查找、修改和删除联系人信息。

下面是通讯录系统的标准格式文本,详细介绍了系统的功能和实现方法。

一、系统概述通讯录系统是一个基于数据结构的软件应用程序,用于存储和管理联系人信息。

它提供了一系列功能,包括添加联系人、查找联系人、修改联系人和删除联系人。

二、系统功能1. 添加联系人用户可以通过系统界面输入联系人的姓名、电话号码、电子邮件地址等信息,系统将这些信息存储在数据结构中。

每一个联系人的信息应包括惟一的标识符,以便于后续的查找、修改和删除操作。

2. 查找联系人用户可以通过姓名、电话号码或者电子邮件地址等关键字进行联系人的查找。

系统将根据用户提供的关键字,在数据结构中进行搜索,并返回与之匹配的联系人信息。

3. 修改联系人用户可以选择要修改的联系人,并提供新的姓名、电话号码、电子邮件地址等信息。

系统将根据用户提供的联系人标识符,在数据结构中找到对应的联系人,并更新其信息。

4. 删除联系人用户可以选择要删除的联系人,并确认删除操作。

系统将根据用户提供的联系人标识符,在数据结构中找到对应的联系人,并将其从通讯录中删除。

三、系统实现1. 数据结构选择为了高效地存储和管理联系人信息,我们选择使用链表作为数据结构。

每一个节点表示一个联系人,包含姓名、电话号码、电子邮件地址等信息,以及指向下一个节点的指针。

2. 添加联系人用户输入联系人信息后,系统将创建一个新的节点,并将其插入到链表的末尾。

为了保证联系人信息的惟一性,系统将检查新节点的标识符是否与已有节点的标识符重复。

如果重复,则提示用户重新输入。

3. 查找联系人用户输入关键字后,系统将从链表的头节点开始遍历,逐个比较节点中的姓名、电话号码和电子邮件地址与关键字是否匹配。

如果找到匹配的联系人,系统将返回其信息。

如果遍历完整个链表仍未找到匹配的联系人,则提示用户未找到。

通讯录c课程设计

通讯录c课程设计

通讯录c 课程设计一、课程目标知识目标:1. 理解通讯录的基本概念,掌握电子通讯录的构成要素;2. 学会使用指定的软件或程序创建、编辑、存储和检索通讯录信息;3. 掌握在通讯录中导入、导出和分享联系人信息的操作方法;4. 了解通讯录信息管理的隐私保护原则和安全性问题。

技能目标:1. 能够独立操作电子通讯录,高效地管理个人和集体的联系人信息;2. 培养信息分类、整理和优化的能力,提高个人信息管理的效率;3. 学会使用通讯录软件的高级功能,如群发短信、批量删除和批量导入导出等;4. 通过实际操作,提升解决实际生活中通讯信息管理问题的能力。

情感态度价值观目标:1. 培养学生认真负责的态度,对待个人信息的管理和使用;2. 增强学生保护个人隐私和数据安全的意识;3. 激发学生运用现代信息技术改善生活质量的意愿;4. 通过团队合作交流,促进学生之间的互帮互助,培养集体荣誉感。

本课程针对年级特点,结合学生的认知能力和实际需求,设计实用性强、操作性高的教学内容。

旨在使学生在掌握基本通讯录知识的同时,提升个人信息管理技能,并在此基础上,培养良好的信息素养和价值观。

通过具体的学习成果分解,为教学设计和评估提供明确的方向和依据。

二、教学内容1. 电子通讯录基础知识:- 通讯录的定义与作用;- 通讯录的构成元素:联系人、电话、邮箱、地址等;- 通讯录的分类:纸质与电子、单机与网络。

2. 通讯录软件操作与使用:- 常见通讯录软件介绍;- 软件界面认识与基本操作;- 联系人信息的添加、编辑、删除和查找。

3. 通讯录高级功能应用:- 群发短信与邮件;- 批量导入导出联系人;- 通讯录信息的备份与恢复。

4. 通讯录信息管理与安全:- 信息分类与整理技巧;- 隐私保护与数据安全;- 通讯录软件的设置与优化。

教学大纲安排:第一课时:电子通讯录基础知识,介绍通讯录的定义、构成元素和分类;第二课时:通讯录软件操作与使用,学习软件的基本操作和联系人信息管理;第三课时:通讯录高级功能应用,掌握群发、导入导出等高级功能;第四课时:通讯录信息管理与安全,学习信息整理、隐私保护和数据安全。

数据结构课程设计-简单个人电话号码查询系统

数据结构课程设计-简单个人电话号码查询系统

中南大学二○一一~二○一二学年第二学期信息科学与工程学院课程设计报告书课程名称:简单个人电话号码查询系统班级:电子信息1001学号:zzz姓名:指导教师:李登曾志文设计时间:2012年6月18日~6月30日目录一、绪论 (3)1.1课程设计目的 (3)1.2 问题描述 (3)1.3基本要求 (3)二、数据结构的设计 (4)2.1需求分析 (4)2.2 概要设计 (4)2.3软件模块结构图 (4)2.4程序设计思想 (5)四、程序流程图 (5)4.1主函数流程图 (5)4.2 mainmenu()函数流程图 (6)五、详细设计 (9)5.1头文件,双链表,结构体的建立 (9)5.2主函数算法 (10)5.2.1.main()函数的算法 (10)5.22.mainmenu()函数算法 (10)5.2.3.searchmenu()函数算法 (11)5.2.4.创建新的通讯录enter()函数算法 (11)5.2.5.显示通讯录信息display()函数算法 (12)5.2.6.保存通讯录save()函数算法 (13)5.2.7.增加一个节点listinsert()函数算法 (13)5.2.8.建立头结点 (14)5.2.9.查找search()函数算法 (14)5.2.10.删除delete()函数算法 (15)5.2.11.打开文件load()函数算法 (16)六、调试分析及测试数据 (17)6.1显示菜单 (18)6.2新添记录 (18)6.3查找联系人 (18)6.3.1查找菜单的显示 (18)6.3.2显示所有 (19)6.3.3按姓名查找 (20)6.4删除联系人 (20)6.5保存退出 (21)6.6打开通讯录 (21)七、用户使用手册 (22)八、心得体会 (23)附录(源代码) (23)一、绪论1.1课程设计目的1.训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。

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