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

合集下载

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

数据结构课程设计(通讯录)
题目描述:
设计一个通讯录程序,实现以下功能:
1. 添加联系人信息
2. 删除联系人信息
3. 修改联系人信息
4. 查找联系人信息
5. 显示所有联系人信息
6. 退出程序
要求:
1. 使用链表作为数据结构存储联系人信息
2. 界面友好,操作简单方便
3. 能够防止重复添加联系人信息
设计思路:
1. 定义一个结构体Contact表示联系人信息,包括姓名、电话、邮箱等成员变量。

2. 定义一个链表结构体List表示联系人链表,包括头结点、
节点数量等成员变量。

3. 实现添加联系人信息函数,首先判断联系人是否存在,如果存在则提示用户,否则分配一个新的节点,并将联系人信息存储在节点中,将新节点插入链表中。

4. 实现删除联系人信息函数,首先判断联系人是否存在,如果不存在则提示用户,否则在链表中删除该节点。

5. 实现修改联系人信息函数,首先判断联系人是否存在,如果不存在则提示用户,否则修改节点中的信息。

6. 实现查找联系人信息函数,遍历链表查找是否有匹配姓名的联系人。

7. 实现显示所有联系人信息函数,遍历链表打印出所有联系人信息。

8. 在main函数中调用上述函数,根据用户输入的指令调用对应的函数,直到用户选择退出程序。

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

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

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

数据结构课程设计报告专业:计算机科学与技术年级:课题名称:通讯录小组成员1:小组成员2:小组成员3:一、问题描述设计目的:用〈〈数据结构〉〉中的双向链表作数据结构,结合C语言基本知识。

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

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

设计内容:本系统应完成一下几方面的功能:1) 输入信息——enter();2) 显示信息———display( );3) 查找以姓名作为关键字———search( );4) 删除信息———delete( );5) 存盘———save ( );6) 装入———load( ) ;设计要求:1) 每条信息至包含:姓名(NAME )街道(STREET)城市(CITY)邮编(EIP)国家(STATE)几项2) 作为一个完整的系统,应具有友好的界面和较强的容错能力3) 上机能正常运行,并写出课程设计报告二、需求分析A,添加:系统将提示用户输入新添加人员信息,输入到文件中,人员信息数据包括姓名(name),街道(street),城市(city),邮编(eip),国家(state).B,删除:首先由用户输入要删除的人员的姓名,然后调用删除函数,删除该人员的所有相关资料.C,显示所有人员信息:该功能将显示已经保存的所有人员的姓名,街道,城市,邮编及国家.D,查询:可由用户输入要查找的人员姓名,然后系统用查找函数查找,接着系统使用相关文件命令输出所查找的人员的全部信息.E,退出系统关闭通讯录管理系统.三、概要设计六个函数的实现:void enter(); 新添纪录void search(); 按姓名查询void display(); 显示void load(); 读取文件void save(); 写入文件void delete(); 删除四、详细设计通讯录管理系统功能说明图:通讯录管理系统数据结构及各模块分析:1.设计类、对象及基本数据类型:创建一个record类,它有五个数据成员:char name[20]; 姓名char street[20]; 街道char city[20]; 城市char eip[20]; 邮编char state[20]; 国家2.包含函数及功能如下:void mainmenu(); 主菜单void searchmenu(); 查找菜单void enter(); 新添纪录void search(); 按姓名查询void display(); 显示所有void load(); 读取文件void save(); 写入文件void delete(); 按姓名删除3.结构体: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;};五、调试分析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;}●void mainmenu()//主菜单{char choic;system("cls");printf("\n\t\t***************欢迎进入通讯录系统***************");printf("\n\t\t******************1-新添纪录******************");printf("\n\t\t******************2-查找联系人****************");printf("\n\t\t******************3-删除联系人***************");printf("\n\t\t******************4-保存退出*****************");printf("\n\t\t******************5-不保存退出***************");printf("\n\t\t************************************************"); printf("\n\t\t请选择:");choic=getch();switch (choic){case '1':enter();break;case '2':searchmenu();break;case '3':delet();break;case '4':save();break;case '5':exit(0);default:mainmenu();}}●void searchmenu()//查询菜单{char choic;system("cls");printf("\n\t\t******************* 查询菜单*******************");printf("\n\t\t**************** 1-显示所有********************");printf("\n\t\t**************** 2-按姓名查询******************");printf("\n\t\t**************** 3-返回主菜单******************"); printf("\n\t\t************************************************"); printf("\n\t\t请选择:");choic=getch();switch (choic){case '1':display();break;case '2':search();break;case '3':mainmenu();break;}}void enter()//添加纪录{printf("\n\t\t**************** 请输入学生信息****************\n"); printf("\n\t\t姓名:");scanf("%s",&student[num].name);printf("\n\t\t街道:");scanf("%s",&student[num].street);printf("\n\t\t城市:");scanf("%s",&student[num].city);printf("\n\t\t输入邮编:");scanf("%s",&student[num].eip);printf("\n\t\t国家:");scanf("%s",&student[num].state);num++;listinsert();printf("\n\t\t是否继续添加?(Y/N):");if (getch()=='y')enter();return;}void display()//显示所有{int i;system("cls");if(num!=0){printf("\n\t\t*************** 以下为通讯录所有信息************");for (i=0;i<num;i++){printf("\n\t\t姓名:%s",student[i].name);printf("\n\t\t街道:%s",student[i].street);printf("\n\t\t城市:%s",student[i].city);printf("\n\t\t邮编:%s",student[i].eip);printf("\n\t\t国家:%s",student[i].state);printf("\t\t");if (i+1<num){printf("\n\t\t__________________________");// system("pause");}}printf("\n\t\t************************************************"); }elseprintf("\n\t\t通讯录中无任何纪录");printf("\n\t\t按任意键返回主菜单:");getch();return;}void 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)//查找是否有该人,有则输出该点所有信息,并往下查找。

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

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

《数据结构》课程设计报告书题目:通讯录管理系统系别:计算机科学与应用系学号:学生姓名:指导教师:完成日期: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 测试运行程序,看到主界面。

数据结构——通讯录实验报告

数据结构——通讯录实验报告

数据结构——通讯录实验报告
《数据结构课程设计》实验报告
编号实验一实验项目名称通讯录管理
班学姓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、设计体会和收获
五、评阅意见:。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

一.设计内容〔X 〕本系统应完成一下几方面的功能:1) 输入信息——enter();2) 显示信息———display( );3) 查找以姓名作为关键字———search( );4) 删除信息———delete( );5) 存盘———save ( );6) 装入———load( ) ;设计要求:1) 每条信息至包含:姓名〔NAME 〕街道〔STREET〕城市〔CITY〕〔EIP〕国家〔STATE〕几项2) 作为一个完整的系统,应具有友好的界面和较强的容错能力二.设计思路通过visual c++6.0〔用的是C言语〕编写一个dos界面的操作台程序,该程序通过链表的操作,文件存储来完成X 的根本功能struct address{ /X定义结构X/char name10]; /X姓名X/char street50]; /X街道X/char city10]; /X城市X/char state15]; /X国家X/char eip7]; /X X/struct address Xnext; /X后继指针X/struct address Xprior; /X前驱指针X/}链表的插入,删除来完成X 里的内容的插入删除当操作完成通过文件件来存储链表的信息,下次翻开程序时,读取文件里的内容到内存中,放在链表,然后又可以对链表进行操作;void enter(); /X函数声明X/void search(); /X查找,查找过程中调用find函数X/void save(); /X存盘,将链表信息保存到文件中X/void load(); /X导入,将文件内容导入到内存链表中X/void list(); /X显示当前链表中信息X/void ddelete(struct address XX,struct address XX);void insert(struct address Xi,struct address XXstart,struct address XXlast);void inputs(char X,char X,int);void display(struct address X);int menu_select(void);三.详细设计1.主界面设计通过switch语句调用各种函数,完成各种操作。

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

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

山东理工大学计算机学院课程设计(数据结构)班级姓名学号指导教师二○一一年一月二十日课程设计任务书及成绩评定课题名称数据结构Ⅰ、题目的目的和要求:1、设计目的巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。

(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。

(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。

2、设计题目要求:通讯录的制作设计目的:用〈〈数据结构〉〉中的双向链表作数据结构,结合C/C++语言基本知识。

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

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

设计内容:本系统应完成一下几方面的功能:输入信息——enter();显示信息———display( );查找以姓名作为关键字———search( );删除信息———delete( );存盘———save ( );装入———load( ) ;设计要求:1) 每条信息至包含:姓名(NAME )街道(STREET)城市(CITY)邮编(ZIP)国家(STATE)几项。

2) 作为一个完整的系统,应具有友好的界面和较强的容错能力。

3) 上机能正常运行,并写出课程设计报告。

Ⅱ、设计进度及完成情况Ⅲ、主要参考文献及资料[1] 严蔚敏数据结构(C语言版)清华大学出版社 1999[2] 严蔚敏数据结构题集(C语言版)清华大学出版社 1999[3] 谭浩强 C语言程序设计清华大学出版社[4] 与所用编程环境相配套的C语言或C++相关的资料Ⅳ、成绩评定:设计成绩:(教师填写)指导老师:(签字)二○一一年一月二十一日目录第一章概述 (1)第二章系统分析 (2)第三章概要设计 (2)第四章详细设计 (5)第五章运行与测试 (16)第六章总结与心得 (22)参考文献 (24)第一章概述课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。

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

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

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

具体需求包括: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;}```六、系统测试在完成系统的开发后,需要进行全面的测试以确保系统的稳定性和可靠性。

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

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

通讯录系统——数据结构课程设计数据结构课程设计通讯录⽬录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():提⽰⽤户输⼊要查找的姓名,然后系统调⽤查找函数查找,接着系统使⽤相关命令输出查到的全部信息。

(完整word版)数据结构实验一-通讯录

(完整word版)数据结构实验一-通讯录

数据结构实验报告实验名称: 实验一——线性表学生姓名: 大学霸班级: xxxxxxxxxx班内序号: xx学号: xxxxxxxxxx1.日期: 2012年11月1日2.实验要求1.实验目的:2.学习指针, 模板类, 异常处理的使用;3.掌握线性表的操作实现方法;4.培养使用线性表解决实际问题的能力。

实验内容:利用线性表实现一个通讯录管理, 通信录的数据格式如下:struct DataType{int ID; //编号char name[10]; //姓名char ch; //性别char phone[13]; //电话char addr[31]; //地址};1.具体要求:2.实现通信录的建立、增加、删除、修改、查询等功能3.能够实现简单的菜单交互, 即可以根据用户输入的命令, 选择不同的操作4.能够保存每次更新的数据5.编写main()函数测试操作的正确性2.程序分析编程完成通讯录的一般性管理工作如通讯录中记录的增加、修改、查找、删除、输出等功能。

每个记录包含姓名、电话号码、住址等个人基本信息。

用《数据结构》中的链表做数据结构结合c语言基本知识编写一个通讯录管理系统。

本程序为使用方便, 几乎不用特殊的命令, 只需按提示输入即可, 适合更多的用户使用。

对于建立通讯录管理系统, 则需了解并掌握数据结构与算法的设计方法,提高综合运用所学的理论知识和方法独立分析和解决问题的能力。

2.1 存储结构节点结构:存储结构: 带头结点和尾结点的单链表front2.2 关键算法分析本实验从整体上分为七大模块: (1)输入联系人信息;(2)添加联系人信息;(3)查找联系人信息;(4)查看联系人信息;(5)删除联系人信息;(6)修改联系人信息;(7)退出通讯录管理。

通讯录系统图2.2.1通讯录的建立伪代码:1.在堆中申请新的结点;2.新节点的数据域为a[i];3.将新节点加入到链表中;4.修改尾指针;5.全部结点插入后需要将终结结点的指针域设为空。

数据结构课程设计通讯录、电话号码查询系统

数据结构课程设计通讯录、电话号码查询系统

一、课程设计概述:本次数据结构课程设计共完成两个题:电话号码查询系统、通讯录。

使用语言:C编译环境:VC6.0二、课程设计题目一[实验内容]电话号码查询系统[问题描述]设计散列表实现电话号码查找系统。

[需求分析](1)设每个记录有下列数据项:电话号码、用户名、地址;(2)从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表;(3)采用一定的方法解决冲突;(4)查找并显示给定电话号码的记录;(5)查找并显示给定用户名的记录。

整个系统必须满足系统功能要求;设计不同的散列函数,比较冲突率;在散列函数确定的前提下,尝试各种不同类型处理冲突的方法,考察平均查找长度的变化。

[概要设计]void getin(Record* a) // 键盘输入联系人的信息void ShowInformation(Record* a) //显示输入的用户信息Status collision(int p,int &c) // 冲突处理函数,采用二次探测再散列法解决冲突void CreateHash(HashTable* H ,Record* a) // 建表,若哈希地址冲突,进行冲突处理void SearchHash ( HashTable* H,int &c) //在通讯录里查找关键字void Save() //保存void main_menu()[存储结构]typedef struct{//记录NA name;NA tel;NA add;}Record;typedef struct{//哈希表Record *elem[HASHSIZE]; //数据元素存储基址int count; //当前数据元素个数int size; //当前容量}HashTable;[详细设计]#include<iostream> //cout,cin语句的头文件#include<stdlib.h> //清屏函数头文件:使用csl时调用system#include<string> //字符串头文件#include<stdio.h>#include<fstream>#define MAXSIZE 100 //电话薄记录的数量#define MAX_SIZE 50 //用户名、电话号码、地址的最大长度#define HASHSIZE 400 //定义表长#define SUCCESS 1 //查找#define UNSUCCESS -1#define LEN sizeof(HashTable) // 哈希表的长度using namespace std;typedef int Status;//typedef用来定义类型的别名。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

数据结构实训通讯录报告

数据结构实训通讯录报告

一、实训目的本次数据结构实训通讯录报告旨在通过实际操作,加深对数据结构理论知识的理解,提高编程能力,培养实际解决问题的能力。

通过设计、实现和维护一个通讯录管理系统,使学生掌握线性表、链表、树、图等基本数据结构的应用,同时熟悉数据库操作和前端界面设计。

二、实训环境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++实现各个功能模块,包括添加、查询、修改、删除等。

通讯录管理系统数据结构(课程设计、论文).doc

通讯录管理系统数据结构(课程设计、论文).doc

学生课程设计(论文)题目:通讯录管理系统学生姓名学号:所在院(系):计算机学院专业:班级:指导教师:职称:本科学生课程设计任务书注:任务书由指导教师填写。

目录摘要 (1)1、引言 (1)2、系统需求设计 (1)2、1、设计目的 (1)2、2、设计思路 (2)2、2、1 模块设计 (2)系统功能模块图 (2)2、2、3详细设计 (2)3主要功能实现 (3)3、1 主界面与模块功能实现 (3)3、1、1 主界面的实现 (3)3、1、2 模块函数的实现 (4)3、2详细代码 (7)4、运行结果 (15)5、设计总结 (16)6、设计体会 (17)【参考文献】 (17)通讯录管理系统摘要《数据结构课程设计》是我国高校计算机相关专业在近几年来所面临的一个新课题。

笔考提出用数据结构实验来深化课程设计的观点,并对此进行一系列的论述。

强调首次设计的重要性,就如何进行选题,调动学生产生浓厚的兴趣,发挥团队精神与运用综合知识的能力等方面采取具体的措施,以其达到课程设计的目标,为今后从事项目开发积累经验。

本次设计,设计一个“通讯录管理系统”,使其具有数据插入、修改、删除、显示和查询等功能。

关键字∶数据结构、通讯录、经验、兴趣1、引言数据结构是一门理论性强、思维抽象、难度较大的课程,是基础课和专业课之间的桥梁。

该课程的先行课程是计算机基础、程序设计语言、离散数学等,后续课程有操作系统、编译原理、数据库原理、软件工程等。

通过本门课程的学习,我们应该能透彻地理解各种数据对象的特点,学会数据的组织方法和实现方法,并进一步培养良好的程序设计能力和解决实际问题的能力,而且该课程的研究方法对我们学生在校和离校后的学习和工作,也有着重要的意义。

数据结构是计算机科学与技术专业的一门核心专业基础课程,在该专业的课程体系中起着承上启下的作用,学好数据结构对于提高理论认知水平和实践能力有着极为重要的作用。

学习数据结构的最终目的是为了获得求解问题的能力。

数据结构课程设计通讯录

数据结构课程设计通讯录

数据结构课程设计通讯录一、课程目标知识目标:1. 理解并掌握通讯录数据结构的基本概念,包括线性表的实现方式及其操作;2. 学会运用数组、链表等常见数据结构存储和检索通讯录信息;3. 掌握排序和查找算法在通讯录中的应用。

技能目标:1. 能够运用所学知识,设计并实现一个简单的通讯录管理系统;2. 掌握使用编程语言(如C/C++/Java等)实现通讯录的基本操作,如增加、删除、修改和查询联系人;3. 学会分析不同数据结构在通讯录管理中的性能特点,选择合适的算法优化系统。

情感态度价值观目标:1. 培养学生对数据结构在解决实际问题中应用的兴趣和认识,激发其学习主动性和积极性;2. 培养学生的团队合作意识,通过小组讨论和协作完成课程设计任务;3. 增强学生的信息素养,使其认识到数据结构在信息管理中的重要性。

课程性质:本课程设计为实践性较强的课程,旨在通过实际操作,让学生将所学的数据结构知识应用于通讯录管理系统中。

学生特点:针对高年级学生,具备一定的编程基础和数据结构理论知识,具备独立思考和解决问题的能力。

教学要求:注重理论与实践相结合,强调动手实践能力,关注学生的个性化发展,培养创新精神和团队合作能力。

通过本课程的学习,使学生能够将所学知识应用于实际项目中,提高解决实际问题的能力。

二、教学内容1. 通讯录数据结构基础- 线性表的基本概念与实现(教材第3章)- 通讯录数据结构设计原理(教材第4章)2. 通讯录管理系统功能设计- 联系人信息的增加、删除、修改、查询操作(教材第5章)- 排序与查找算法在通讯录中的应用(教材第6章)3. 编程语言与数据结构实现- C/C++/Java等编程语言的基本语法复习(教材第2章)- 使用编程语言实现通讯录数据结构及操作(教材第7章)4. 实践操作与系统优化- 设计并实现一个简单的通讯录管理系统(综合教材第3-7章内容)- 分析不同数据结构在通讯录管理中的性能特点,进行系统优化(教材第8章)5. 课程项目与团队协作- 分组讨论,明确项目需求和分工(教材第9章)- 团队协作完成课程设计,并进行成果展示与评价(教材第10章)教学内容安排与进度:第1周:通讯录数据结构基础,线性表的概念与实现第2周:通讯录管理系统功能设计,编写基本操作接口第3周:编程语言复习,实现通讯录数据结构及操作第4周:实践操作,设计并实现通讯录管理系统第5周:系统性能分析,优化数据结构和算法第6周:课程项目总结,团队协作成果展示与评价三、教学方法1. 讲授法:通过教师讲解,使学生掌握通讯录数据结构的基本概念、原理和实现方法。

数据结构课程设计通讯录

数据结构课程设计通讯录

数据结构课程设计说明书题目:通讯录信息系统的管理院系:专业班级:学号:学生姓名:指导教师:2008 年06 月20 日一、需求分析运用〈〈数据结构〉〉中的算法思想作数据结构,结合C语言基本知识,编写一个通讯录管理系统。

通过完成本课题,进一步熟悉C语言的基本知识,并掌握数据结构的一些基本算法思想,掌握C语言的文件操作(包括从磁盘读入和向磁盘写入内容),进一步熟悉指针的用法,数组的建立运用和函数的调用等。

实现以下几方面的功能:1.Add a record,可以向通讯录管理系统中增加新记录;2.Delete a record.可以从通讯录管理系统中删除记录;3.Show all records.显示通讯录的所有信息;4.Search a record.按名字查询信息;5.Quit退出通讯录管理系统。

简介:本程序是通过链表实现的简单通讯录,所实现的此通讯录包含着三个信息,即通讯者的姓名、电话号码和住址。

该程序能够帮助使用者完成一些常用的通讯记录,操作界面简单易懂,使用方便。

如果使用者还需要其他功能只要进行简单的修改就可以实现添加。

因为本人水平有限,该程序在算法的选择方面还不够好,有待于进一步完善。

(1)此程序的几大模块第一个模块:结构体(struct friends):实现通讯录的三个基本组成部分——姓名、电话、地址;第二个模块:添加(add):添加通讯者,实现插入功能;第三个模块:删除(delete):删除某人的信息,如果未找到要修改的某人的信息,则提示通讯录中没有此人的信息,并返回主菜单,实现删除功能。

第四个模块:search( )的功能是:查询某人的信息如果找到了,则显示该人的信息,如果未找到,则显示通讯录中没有此人的信息,并返回主菜单;第五个模块:输出(list):浏览通讯录全体成员,实现整个通信录数据全体输出;第六个模块:退出(exit):退出程序;第七个模块:主函数main( ):根据主菜单的选项调用各函数,并完成相映的功能.第八个模块:Menu( )的功能是:显示英文主菜单;(2)测试1、根据屏幕输出的菜单选择所需要的操作,通常第一次使用应选择1添加;输入完每个通讯者的信息后都可以选择继续还是退出,如果输入任意键,则继续输入,否则输入y,程序就会回到初始界面;2、查找选择2 ,程序提示输入要查找的通讯者的姓名,输入后回车,如果存在,则显示通讯者的信息,如果不存在,程序提示no message;3、删除操作选择 3 ,输入要被删除的通讯者的姓名,输入后按回车,程序将显示要被删除的通讯者的信息,确定删除输入1,取消删除选择0;4、第4项功能,显示所输入的所有通讯者的信息;5、退出选择5二、概要分析1、可排序表的抽象数据类型定义为:ADT Orderablelist{数据对象:D={A[i] | A[i] ∈Integer,i=1,2,…,n, n>=0}数据关系:R={<A[i-1],A[i]>|A[i-1],A[i]∈D,i=1,2,…,n}2、主要函数原型:menu_select(); /*主菜单函数*/add();/*输入记录*/delete();/*按名字删除记录*/search();/*按姓名查找显示记录*/list();/*显示所有记录*/3、调用到的函数:通过switch(表达式){case 常量表达式1:语句1case 常量表达式2:语句2::case 常量表达式n:语句n}调用add()delete()list()display(struct address *info)search()五个函数。

数据结构课程设计通讯录、电话号码查询系统

数据结构课程设计通讯录、电话号码查询系统

一、课程设计概述:本次数据结构课程设计共完成两个题:电话号码查询系统、通讯录。

使用语言:C编译环境:VC6.0二、课程设计题目一[实验内容]电话号码查询系统[问题描述]设计散列表实现电话号码查找系统。

[需求分析](1)设每个记录有下列数据项:电话号码、用户名、地址;(2)从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表;(3)采用一定的方法解决冲突;(4)查找并显示给定电话号码的记录;(5)查找并显示给定用户名的记录。

整个系统必须满足系统功能要求;设计不同的散列函数,比较冲突率;在散列函数确定的前提下,尝试各种不同类型处理冲突的方法,考察平均查找长度的变化。

[概要设计]void getin(Record* a) // 键盘输入联系人的信息void ShowInformation(Record* a) //显示输入的用户信息Status collision(int p,int &c) // 冲突处理函数,采用二次探测再散列法解决冲突void CreateHash(HashTable* H ,Record* a) // 建表,若哈希地址冲突,进行冲突处理void SearchHash ( HashTable* H,int &c) //在通讯录里查找关键字void Save() //保存void main_menu()[存储结构]typedef struct{//记录NA name;NA tel;NA add;}Record;typedef struct{//哈希表Record *elem[HASHSIZE]; //数据元素存储基址int count; //当前数据元素个数int size; //当前容量}HashTable;[详细设计]#include<iostream> //cout,cin语句的头文件#include<stdlib.h> //清屏函数头文件:使用csl时调用system#include<string> //字符串头文件#include<stdio.h>#include<fstream>#define MAXSIZE 100 //电话薄记录的数量#define MAX_SIZE 50 //用户名、电话号码、地址的最大长度#define HASHSIZE 400 //定义表长#define SUCCESS 1 //查找#define UNSUCCESS -1#define LEN sizeof(HashTable) // 哈希表的长度using namespace std;typedef int Status;//typedef用来定义类型的别名。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构课程设计报告
专业:计算机科学与技术
年级:
课题名称:通讯录
小组成员1:
小组成员2:
小组成员3:
信息技术学院专业教研室一
一、问题描述
设计目的:用〈〈数据结构〉〉中的双向链表作数据结构,结合C语言基本知识。编写一个通讯录管理系统。以把所学数据结构知识应用到实际软件开发中去。
设计内容:本系统应完成一下几方面的功能:
{
char choic;
system("cls");
printf("\n\t\t*******************查询菜单*******************");
printf("\n\t\t**************** 1-显示所有********************");
1)输入信息——enter();
2)显示信息———display( );
3)查找以姓名作为关键字———search( );
4)删除信息———delete( );
5Байду номын сангаас存盘———save ( );
6)装入———load( ) ;
设计要求:
1)每条信息至包含:姓名(NAME)街道(STREET)城市(CITY)邮编(EIP)国家(STATE)几项
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++);
void display();显示所有
void load();读取文件
void save();写入文件
void delete();按姓名删除
3.结构体:
struct record
{
char street[20];
char name[20];
char city[20];
char state[20];
char eip[20];
void display();显示
void load();读取文件
void save();写入文件
void delete();删除
四、详细设计
通讯录管理系统功能说明图:
通讯录管理系统
数据结构及各模块分析:
1.设计类、对象及基本数据类型:
创建一个record类,它有五个数据成员:
char name[20];姓名
switch (choic)
{
case '1':enter();break;
case '2':searchmenu();break;
case '3':delet();break;
case '4':save();break;
case '5':exit(0);
default:mainmenu();
}
}
void searchmenu()//查询菜单
2)作为一个完整的系统,应具有友好的界面和较强的容错能力
3)上机能正常运行,并写出课程设计报告
二、需求分析
A,添加:
系统将提示用户输入新添加人员信息,输入到文件中,人员信息数据包括姓名(name),街道(street),城市(city),邮编(eip),国家(state).
B,删除:
首先由用户输入要删除的人员的姓名,然后调用删除函数,删除该人员的所有相关资料.
C,显示所有人员信息:
该功能将显示已经保存的所有人员的姓名,街道,城市,邮编及国家.
D,查询:
可由用户输入要查找的人员姓名,然后系统用查找函数查找,接着系统使用相关文件命令输出所查找的人员的全部信息.
E,退出系统
关闭通讯录管理系统.
三、概要设计
六个函数的实现:
void enter();新添纪录
void search();按姓名查询
.......
getch();
return;
}
void mainmenu()//主菜单
{
char choic;
system("cls");
printf("\n\t\t***************欢迎进入通讯录系统***************");
printf("\n\t\t******************1-新添纪录******************");
printf("\n\t\t******************5-不保存退出***************");
printf("\n\t\t************************************************");
printf("\n\t\t请选择:");
choic=getch();
}student[500];
struct slnode
{
record date;
struct slnode *next;
struct slnode *prior;
};
五、调试分析
void load()//从文件导入
{
if((fp=fopen("student","rb"))==NULL)//打开文件进行读的操作
printf("\n\t\t******************2-查找联系人****************");
printf("\n\t\t******************3-删除联系人***************");
printf("\n\t\t******************4-保存退出*****************");
{
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按任意键进入主菜单");
char street[20];街道
char city[20];城市
char eip[20];邮编
char state[20];国家
2.包含函数及功能如下:
void mainmenu();主菜单
void searchmenu();查找菜单
void enter();新添纪录
void search();按姓名查询
相关文档
最新文档