文档库 最新最全的文档下载
当前位置:文档库 › 通讯录的制作(数据结构C语言版)

通讯录的制作(数据结构C语言版)

通讯录的制作(数据结构C语言版)
通讯录的制作(数据结构C语言版)

通讯录的设计

一、设计思路:

经过一个学期的程序设计学习,我逐渐了解了计算机的基本原理和c语言的基本常识,并可以逐渐自己来实现一些简单的程序任务。此次程序设计我选择了通讯录设计,通过函数、结构体的定义以及一些基本操作运用,经过一个多月的编写、调试、测试,最终完成了该程序的设计。以下为我的设计思路:

首先,确定通讯录的功能,我初步设计了六项功能:输入(程序中对应enter())、删除(程序中对应delete())、显示通讯录(程序中对应list())、搜索(程序中对应search())、保存(程序中对应save())、装载(程序中对应load())。

其次,对于存储的数据结构,我则主要选择了一下几个方面的信息:姓名、性别年龄、籍贯、手机、下一个指针(用于链表的操作与实现)、当前指针(用于链表的操作与实现)。

二、程序源代码:

#include

structaddress{ /*创建一个address结构*/

charname[10]; /*姓名*/

charsex[2]; /*性别*/

charage[2]; /*年龄*/

charnative[10]; /*籍贯*/

chartelephone[12];/*手机*/

structaddress*next;/*下一个入口的指针*/

structaddress*prior;/*当前记录的指针*/

}list_entry;

structaddress*start;/*指向列表中第一个入口*/

structaddress*last;/*指向列表中最后一个入口*/

voidenter(),display(),search(),sa ve(),load();

menu_select(),list(),delet(),input s();

main()

{

chars[20],choice;

structaddress*info;

start=last=NULL;/*列表长度清零*/

for(;;){ /*列循环的一个用法*/

switch(menu_select()){

case1:enter(); /*输入1,进入enter()程序,是输入通讯录*/

break;

case2:delet(); /*输入2,进入delete()程序,是删除一个记录*/

break;

case3:list(); /*输入3,进入list()程序,是列表显示通信录*/

break;

case4:search(); /*输入4,进入search()程序,搜索一个街道*/

break;

case5:save(); /*输入5,保存列表到磁盘文件*/

break;

case6:load(); /*输入6,从磁盘文件读入列表*/

break;

case7:return(0);

}

}

}

/*选择一个选项*/

menu_select()

{

chars[20];

intc;

printf("1.输入一个名字(直接回车则退出)\n");

printf("2.删除一个名字\n");

printf("3.列表显示\n");

printf("4.搜索查询\n");

printf("5.保存文件\n");

printf("6.装入文件\n");

printf("7.退出\n");

do{

printf("\n输入您的选择:");

gets(s);

c=atoi(s);

}while(c<0||c>7);

returnc;

}

/*输入名字和地址*/

voidenter()

{

structaddress*info,*dls_store ();

for(;;){

info=(structaddress*)malloc(size of(list_entry));

if(!info){

printf("\n内存溢出");

return;

}

inputs("输入姓名:",info->name,10);

if(!info->name[0])break;

/*名字长度为0,停止输入*/

inputs("输入性别:",info->sex,2);

inputs("输入年龄:",info->age,2);

inputs("输入籍贯:",info->native,10);

inputs("输入电话:",info->telephone,12);

start=dls_store(info,start);

/*保存在第一个记录里*/

} /*输入循环*/

}

inputs(prompt,s,count)/*这个函数用于输入长度为count的一个字符串,用于防止字符串长度超过它的空间,并提出警告*/

char*prompt;

char*s;

intcount;

{

charp[255];

do{

printf(prompt); /*显示这个函数的字符串*/

gets(p); /*从键盘获得255个输入*/

if(strlen(p)>count)printf("n字符串超过长度!"); /*如果数组P中的长

度超过调用函数中的参数count,提示*/

}while(strlen(p)>count);

/*如果输入的字符串长度超过count,循环重新输入,否则退出,返回调用者*/

strcpy(s,p); /*s是目标字符串,输出时字符串在s中*/

return(0);

}

/*产生一个又链接表,当一个新元素插入到列表的开始时,一个指向第一个元素的指针被返回*/

structaddress*dls_store(i,top)

/*存贮顺序*/

structaddress*i;

/*新的元素*/

structaddress*top;

/*列表中的第一个元素*/

{

structaddress*old,*p;

if(last==NULL){ /*列表中的第一个元素*/

i->next=NULL;

i->prior=NULL;

last=i;

returni;

}

p=top; /*从列表的顶部开始*/

old=NULL;

while(p){

if(strcmp(p->name,i->name)<0){

old=p;

p=p->next;

}

else{

if(p->prior){

p->prior->next=i;

i->next=p;

i->prior=p->prior;

p->prior=i;

returntop;

}

i->next=p; /*新的第一个元素*/

i->prior=NULL;

p->prior=i;

returni;

}

}

old->next=i; /*设置未尾*/

i->next=NULL;

i->prior=old;

last=i;

returnstart;

}

/*从列表中删除一个元素*/

delet()

{

structaddress*info,*find();

chars[10];

printf("输入姓名:");

gets(s);

info=find(s);

if(info){

if(start==info){

start=info->next;

if(start)start->prior=NULL;

elselast=NULL;

}

else{

info->prior->next=info->next;

if(info!=last)

info->next->prior=info->prior;

else

last=info->prior;

}

free(info); /*释放空间*/

}

return(0);

}

structaddress*find(name)

/*一个查找姓名的结构*/

char*name;

{

structaddress*info;

info=start;

while(info){

if(!strcmp(name,info->name))retu rninfo;

info=info->next;

/*获得下一个地址*/

}

printf("姓名没有发现!\n");

returnNULL; /*没有发现姓名*/

}

list() /*列表*/

{

registerintt;

structaddress*info;

info=start;

while(info){

display(info);

info=info->next; /*获得下一个地址*/

}

printf("\n\n");

return(0);

}

voiddisplay(info) /*显示通信录*/

structaddress*info;

{

printf("%s\n",info->name);

printf("%s\n",info->sex);

printf("%s\n",info->age);

printf("%s\n",info->native);

printf("%s\n",info->telephone );

printf("\n\n");

}

voidsearch() /*搜索一个名字*/

{

charname[10];

structaddress*info,*find();

printf("输入查找的名字!");

gets(name);

if(!(info=find(name)))printf("没有找到!\n");

elsedisplay(info);

}

voidsave() /*保存通信录*/

{

registerintt;

structaddress*info;

FILE*fp;

if((fp=fopen("mlist","wb"))== NULL){ /*打开文件名mlist如果错误*/

printf("没有找到文件.\n");

exit(1);

}

printf("\n正在保存文件...\n");

info=start;

while(info){

fwrite(info,sizeof(structaddress), 1,fp);

info=info->next; /*获得下一个地址*/

}

fclose(fp);

}

voidload() /*打开一个文件*/

{

registerintt;

structaddress*info,*temp=N ULL;

FILE*fp;

if((fp=fopen("mlist","rb"))==N ULL){

printf("打开文件失败...\n");

exit(1);

}

while(start){

info=start->next;

free(info);

start=info;

}

printf("\n正在读取文件...\n");

start=(structaddress*)malloc( sizeof(structaddress));

if(!start){

printf("存贮溢出...\n");

return;

}

info=start;

while(!feof(fp)){

if(1!=fread(info,sizeof(structaddr ess),1,fp))break;

/*为下一个分配空间*/

info->next=(structaddress*)mallo c(sizeof(structaddress));

if(!info->next){

printf("存贮溢出...\n");

return;

}

info->prior=temp;

temp=info;

info=info->next;

}

temp->next=NULL; /*最后一个输入*/

last=temp;

start->prior=NULL;

fclose(fp);

}

三、调试结果

调试结果初始状态如下图所示:

以下介绍五大重点功能:

步骤一:输入功能。选择1,输入名字“张三”,会出现一系列需要输入的信息,输入完毕后按回车,再重复以上动作输入两个人:王五、李四。如下图所示。

步骤二:保存功能。按两次回车,退出输入状态,按5保存。如图1所示。

图1 图2

步骤三:删除功能。选择2,输入“张三”,回车;选择5“保存”,回车。如图2所示。

步骤四:查看功能。选择3,回车,得到图3所示。

图3 图4

步骤五:搜索功能。选择4,输入“李四”,回车,得到图4所示。

四、设计过程中存在的问题

在设计的过程中,不免出现过很多问题。首先,设计第一个输入操作时没有考虑到返回的问题,所以如果选择了第一个操作则会无止境的重复输入,后来就在第一项操作后面设定回车直接返回的命令。

其次,为了保证通讯录的实用性和准确性,在设计完成后做了一些修改,比如,限制年龄为两位数、加入防止字符串长度超过存储空间的函数。

另外,在设计“删除”操作时,原先如果不存在删除的项目程序就会出错,后来加入了一条语句提示“该联系人不存在”。

五、有待改进的地方

由于水平有限,通讯录和最初设计的还是有很大的差别,为了更为清晰直观,我觉得可以再做一些修改,比如该程序版式比较凌乱,可以再美化以下排版;在每一个操作项后面加入一些选择条件比如“返回”之类的,更加人性化。

数据结构实验一通讯录

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

{ int ID; 程序分析 编程完成通讯录的一般性管理工作如通讯录中记录的增加、修改、查找、删除、输出等功能。每个记录包含姓名、电话号码、住址等个人基本信息。 用《数据结构》中的链表做数据结构结合c 语言基本知识编写一个通讯录管理系统。本程序为使用方便,几乎不用特殊的命令,只需按提示输入即可,适合更多的用户使用。对于建立通讯录管理系统,则需了解并掌握数据结构与算法的设计方法,提高综合运用所学的理论知识和方法独立分析和解决问题的能力。 存储结构 存储结构:带头结点和尾结点的单链表 front 关键算法分析 本实验从整体上分为七大模块:(1)输入联系人信息; (2)添加联系人信息;(3)查找联系人信息;(4)查看联系人信息; (5 )删除

联系人信息;(6)修改联系人信息;(7)退出通讯录管理。通讯录系统图 通讯录的建立 伪代码: 1.在堆中申请新的结点; 2.新节点的数据域为a[i]; 3.将新节点加入到链表中; 4.修改尾指针;

5.全部结点插入后需要将终结结点的指针域设为空。 C++实现: ContactBook::ContactBook(DataType a[],int n)找不到返回空指针。 C++实现: 程序运行结果 主函数流程图:

通讯录的制作(数据结构C语言版)

通讯录的设计 一、设计思路: 经过一个学期的程序设计学习,我逐渐了解了计算机的基本原理和c语言的基本常识,并可以逐渐自己来实现一些简单的程序任务。此次程序设计我选择了通讯录设计,通过函数、结构体的定义以及一些基本操作运用,经过一个多月的编写、调试、测试,最终完成了该程序的设计。以下为我的设计思路:首先,确定通讯录的功能,我初步设计了六项功能:输入(程序中对应 enter ())、删除(程序中对应delete())、显示通讯录(程序中对应list())、搜索(程序中对应search())、保存(程序中对应save())、装载(程序中对应 load())。 其次,对于存储的数据结构,我则主要选择了一下几个方面的信息:姓名、性别年龄、籍贯、手机、下一个指针(用于链表的操作与实现)、当前指针(用于链表的操作与实现)。 二、程序源代码: #include struct address{ /*创建一个address结构*/ char name[10]; /*姓名*/ char sex[2]; /*性别*/ char age[2]; /*年龄*/ char native[10]; /*籍贯*/ char telephone[12]; /*手机*/ struct address *next; /*下一个入口的指针*/ struct address *prior; /*当前记录的指针*/ } list_entry; struct address *start; /*指向列表中第一个入口*/ struct address *last; /*指向列表中最后一个入口*/

通讯录管理 数据结构

#include #include #include typedef struct{ char num[20]; char name[20]; char phone[20]; char addr[20]; }datatype; typedef struct node{ datatype data; struct node * next; }Listnode; typedef Listnode * Linklist; Linklist head; Listnode *p; int menu_select( ); Linklist Createlist(void); void Insertnode(Linklist head,Listnode *p); Listnode *Listfind(Linklist head); void Delnode(Linklist head); void Printlist(Linklist head); int main(){ for( ; ; ){ switch(menu_select() ){ case 1: printf(" ***********************************************\n"); printf(" ************** 通讯录链表的建立***************\n"); printf(" ***********************************************\n"); head=Createlist(); break; case 2: printf(" ***********************************************\n"); printf(" ************** 通讯录信息添加*****************\n"); printf(" ***********************************************\n"); printf(" ** 编号(4) 姓名(3) 电话(13) 地址(10)**\n"); printf(" ***********************************************\n"); p=(Listnode *)malloc(sizeof(Listnode)); scanf("%s%s%s%s",p->data.num,p->https://www.wendangku.net/doc/671554944.html,,p->data.phone,p->data.addr); Insertnode(head,p); break; case 3: printf(" ******************************\n"); printf(" ******* 通讯录信息查询*******\n");

(完整版)通讯录管理系统数据结构毕业课程设计(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()语句来实现数据的读取;

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

数据结构课程设计通讯录 的制作 Modified by JEEP on December 26th, 2020.

软件学院 课程设计报告书 课程名称数据结构课程设计 设计题目通讯录的制作 专业班级软件工程XXXX 学号 XXXXXXXX 姓名 X X X 指导教师X X X 2012 年 01 月 目录 1、设计时间 (3) 2、设计目的 (3) 3、设计任务 (3) 4、设计内容 (3) 需求分析 (3) 总体设计 (4) 4.2.1本程序中用到的所有抽象数据类型的定义 (4) 4.2.2主程序的流程 (4) 详细设计 (6) 4.3.1定义的所有数据类型 (6) 4.3.2主函数 (11)

4.3.3函数的调用关系图 (12) 测试与分析 (13) 4.4.1测试 (13) 4.4.2分析 (19) 附录 (19) 5、总结与展望 (28) 参考文献 (29)

”4.4.2 m=n%HASHSIZE; ame); pp=p; while(H->elem[pp]!=NULL) { pp=collision(p,c); if(pp<0) { printf("createHash1第%d记录无法解决冲突",i+1); n",HASHSIZE,H->count); } void SearchHash1(HashTable* H,int c) { el); pp=p; while(H->elem[pp]!=NULL) { pp=collision(p,c); if(pp<0) { printf("第%d记录无法解决冲突",i+1); n",HASHSIZE,H->count); } void SearchHash2(HashTable* H,int c) { ame); printf("请输入第%d个记录的电话号码:\n",i+1); scanf("%s",a[i].tel); printf("请输入第%d个记录的地址:\n",i+1); scanf("%s",a[i].add); ame); for(i=0;i

数据结构 通讯录

数据结构课程设计报告 2010年01月03日

目录 1、需求分析 (3) 问题描述 (3) 基本要求 (3) 2、概要设计 (3) 数据结构 (3) 程序模块 (3) 3、详细设计 (4) 4、测试与分析 (8) 5、总结 (8) 6、附录(原程序清单) (10)

1.需求分析 数据结构课程主要是研究非数值计算的程序设计中所出现的计算机操作对象以及它们之间的关系和操作的学科。学习数据结构是为了将实际问题中所涉及的对象在计算机表示出来并对它们进行处理。通过课程设计可以提高思维能力、促进综合应用能力和专业素质的提高。 1.1问题描述 现代人社会交往越来越多,人们随身携带有通讯录,对通讯录进行必要的管理,对人们实现快速查询记录提供了极大的方便。考虑到要对通讯录进行快速检索,所以采用C语言来实现通讯录查找系统。要求的模块包括:插入、查找、删除、修改、保存。人机界面友好,使用图形化界面,菜单的选择用动画显示。 1.2基本要求 (1)输入的形式与输入值的范围 name 字符 phone 字符 ad 字符 (2)输出的形式 姓名、电话号码及住址以字符输出 (3)程序所能达到的功能 1)记录姓名、地址、电话项 2)查找并显示给定电话号码的记录 2.概要设计 1)数据结构 依据给定的通讯录信息和数据格式,链表结点必须用结构实现。结构类型的层次结构:typedef struct node {char name[20]; char ad[50]; char phone[20]; struct node *next; }slink; 2)程序模块 主函数 Main()

数据结构顺序表(电话通讯录)

数据结构用顺序表实现的电话通讯录(C语言) #include #include #include #include #define FALSE 0 #define ERROR 0 #define OK 1 #define INFEASIBLE -1 #define LIST_INIT_SIZE 10 #define LIST_INCREMENT 5 #define N 5 typedefint Status; typedefstruct { char name[10]; //姓名 char num[15]; //号码 }student; typedefstruct { student *elem; //存储空间基址 int length; //当前长度 intlistsize; //当前分配的存储空间(以sizeof(student)为单位) }Sqlist; Sqlist L; //定义全局变量L 为Sqllist类型 Status ListInsert(Sqlist&L,inti,student e) { //插入学生信息到顺序表L中 int j; student *newbase; if(i<1||i>L.length+1) return ERROR; //i值不合法 if(L.length>=L.listsize) //当前存储空间已满,增加分配 { newbase=(student *)realloc(L.elem,(LIST_INIT_SIZE+LIST_INCREMENT)*(sizeof(student))); if(!newbase) //存储分配失败 exit(OVERFLOW); L.elem=newbase; //新基址 L.listsize+=LIST_INCREMENT; //增加存储容量 } for(j=L.length;j>=i;j--) L.elem[j]=L.elem[j-1]; //插入位置及之后元素的右移 L.elem[i-1]=e; L.length++; return OK;

数据结构实验报告之通讯录的实现

数据结构实验报告之通讯录的实现 一、实验题目 利用线性表实现一个通讯录管理,通信录的数据格式如下: struct DataType { int ID; //编号 char name[10]; //姓名 char ch; //性别 char phone[13]; //电话 char addr[31]; //地址 }; 要求: ?实现通讯录的建立、增加、删除、修改、查询等功能 ?能够实现简单的菜单交互,即可以根据用户输入的命令,选择不同的操作。 ?能够保存每次更新的数据(选作) ?能够进行通讯录分类,比如班级类、好友类、黑名单等等(选作) ?编写测试main()函数测试线性表的正确性 二、实验目的 1、熟悉C++语言的基本编程方法,掌握集成编译环境的调试方法。 2、掌握线性表的操作的实现方法。 3、运用线性表解决实际问题。 三、实验内容 通过编写一个C++程序完成一个简易的通讯录管理系统,能够实现建立,增加,删除,修改,查找,浏览,输出,菜单等基本功能。管理系统中每个元素含有成员的ID、姓名、性别、电话、地址等信息。程序是使用链表的功能,通过一些算法简单的实现。 四、算法思路与主要代码 1. 通信录管理结构:建立,增加,删除,修改,查找,浏览,菜单。 2.建立通讯录 构造函数,建立头节点 PHONEBOOK::PHONEBOOK() { first = new DataType; first->next = first->prior = first; first->ID = 0; }

头插法,添加联系人 1:在堆中建立新结点 2:将 a[i]写入到新结点的数据域 3:修改新结点的指针域 4:修改头结点的指针域,将新结点加入链表中 即 1:Node * s=new Node 2:s->data=a[i] 3:s->next=front->next; 4:front->next=s 代码实现 void PHONEBOOK::Insert() { DataType *data = new DataType; data->next = first->next; data->prior = first; first->next = data; data->next->prior = data; m++; data->ID = m; 3.查找联系人 按姓名查找查找是指用户输入要查找的联系人的姓名,系统该函数内找到该联系人,返回该联系人数据域的指针,在主函数中输出该联系人的全部信息。 即1. 初始化工作指针p; 2. 循环以下操作直到p为空或找到用户 1. 如果p的数据等于i,则返回P的数据域指针; 2. P指针指向下一个节点; 3.若找不到返回空指针。 代码实现 void PHONEBOOK::Search() { cout << "请输入要查找的联系人的姓名:"; char aname[10]; cin >> aname; DataType *p = first->next; while (p) { //找到则输出信息 if (strcmp(p->name aname) == 0) {

大数据结构-通讯录管理系统地设计与实现

课程设计报告 课程设计名称:数据结构课程设计系:三系 学生姓名: 班级: 学号: 成绩: 指导教师: 开课时间:2011-2012学年一学期

宿迁学院 课程设计任务书 课程名称:数据结构 指导教师: 专业班级: 学生: 起止日期: 2012.12-2013.1

设计题目一:通讯录管理系统的设计与实现 1 概述 1.1现状分析 课程设计是实践教学中的重要环节,它以某一门课程为基础,涉及和课程相关的各方面知识,是一门独立于课程外的特殊课程。课程设计就是让所有同学对课程更全面的应用。本次实验项目“通讯录管理”就是针对数据结构的一门应用较为广泛的系统管理方法。 1.2 实现意义 本次实验应用性能很好,结构清楚,能随时添加、删除、查找、修改、输出联系人;并且可以用、编号两种方式;而且其中增加了排序功能,使得插入之后排序为接下来的操作提供便利,操作更精确,以人性化的方式展现出来,效果十分突出。 2 系统分析 编程完成通讯录的一般性管理工作如通讯录中记录的增加、修改、查找、删除、输出等功能。每个记录包含编号、、性别、、住址个人基本信息。用《数据结构》中的链表做数据结构结合c语言基本知识编写一个通讯录管理系统。本程序相对简单,使用方便,几乎不用特殊的命令,只需按提示输入即可。对于建立通讯录管理系统,则需了解并掌握数据结构与算法的设计方法,尤其在算法方面,链表及结点的联系,提高综合运用所学的理论知识和方法独立分析和解决问题的能力。 3 概要设计 3.1算法的设计 本实验从整体上分为七大模块:(1)通讯录链表的建立;(2)通讯者结点的插入;(3)通讯者结点的查询;(4)通讯者结点的删除;(5)通讯者结点的修改;(6)通讯录链表的输出;(7)退出通讯录管理通讯者结点的删除系统。

数据结构课设 通讯录系统的设计与实现 哈希表

课程设计(论文)任务书 软件学院学院软件工程专业班 一、课程设计(论文)题目:通讯录管理系统的设计与实现——哈希表 二、课程设计(论文)工作自2016 年 1 月 4 日起至 2016 年 1 月 10 日止 三、课程设计(论文) 地点: 软件测试中心(北区测试二室) 四、课程设计(论文)内容要求: 1.本课程设计的目的 ⑴训练学生灵活应用所学数据结构知识,独立完成问题分析,结合课程的理论知识,编写程序求解指定问题; ⑵初步掌握软件开发过程的问题分析、系统设计、编码、测试等基本方法和技能; ⑶提高综合运用所学的理论知识和方法独立分析和解决问题的能力,巩固、深化学生的理论知识,提升编程水平。 2.课程设计的任务及要求 1)基本要求: ⑴要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计实现抽象数据类型、编写上机程序和上机调试等若干步骤完成题目,最终写出完整的报告; ⑵在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率; ⑶程序设计语言推荐使用C/C++,程序书写规范,源程序需加必要的注释; ⑷每位同学需提交可独立运行的程序和规范的课程设计报告。 2)课程设计论文编写要求 ⑴理论设计部分以课程设计论文的形式提交,格式必须按照课程设计论文标准格式进行书写和装订; ⑵课程设计报告包括中文目录、设计任务、需求分析、概要设计、详细设计、编码实现、调试分析、课设总结、谢辞、参考文献、附录等; ⑶设计部分应包含系统功能模块图,调试分析应包括运行截图等。 3)课程设计评分标准: ⑴学习态度:10分; ⑵系统设计:20分; ⑶编程调试:20分; ⑷回答问题:20分; ⑸论文撰写:30分。

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

课程设计报告 课程名称数据结构课程设计课题名称通讯录的制作 学院信息工程学院 姓名 学号 专业层次 班级 任课教师

目录 一、课程设计题目及所涉及知识点 (2) 二、课程设计思路及算法描述 (2) 设计思路 (2) 算法描述 (3) 三、课程设计中遇到的难点及解决办法 (4) 四、总结 (4) 五、结论 (4) 六、附录—主要源程序代码及运行结果 (4)

一、课程设计题目及所涉及知识点 设计题目:通讯录的制作 知识点:链表的增,删,改,查、基本的文件操作、字符数组的处理函数、分支结构和循环结构的熟练使用、结构体的定义与调用、函数的调用、结构体指针在各函数之间的调用。 二、课程设计思路及算法描述 设计思路:1、确定程序要实现的功能即(1)实现对数据文件的保存,对数据记录进行添加,可以对数据记录进行查询,可以对数据记录进行删除,可以对数据记录进行显示,可以对数据记录进行修改。 (2)在实现上述函数之后,设置分支结构,对操作进行选择。上述函数中有几种不同的操作需要用户按照自己的意愿选择。如,查询方式的选择,删除方式的 选择等。 2、确定程序所需要的功能块,存储结构-结构体,malloc申请存储空间,各 功能函数—对链表进行初始化line *initLine(line *p) ,对链表进行插入操作 line *insertLine(line *p), 将整理好的数据保存到文件内:saveFile(line *p), 姓名查询selectLine_name(),手机号查询selectLine_Id(),使用姓名进行修改 line *amendLine(),使用用手机号进行修改line *amendLine_num(),删除刚插入 的数据line *delLine(),指定名字删除int select_name(),指定手机号删除 select_ID(),具体执行删除的链表操作line *delLine(),显示链表数据display(),控制台程序主界面zcd(),返回函数fh(),主函数部分main();。 3、编写代码具体实现各项功能,并进行调试。 算法描述: 链表插入(Link List Insertion)的基本思想: 同顺序表一样,向链表中增添元素,根据添加位置不同,可分为以下 3 种情况:插入到链表的头部(头节点之后),作为首元节点;插入到链表中间的某个位 置;插入到链表的最末端,作为链表中最后一个数据元素;虽然新元素的插入位置 不固定,但是链表插入元素的思想是固定的,只需做以下两步操作,即可将新元素 插入到指定的位置: 1.将新结点的 next 指针指向插入位置后的结点; 2.将插入位置前结点的 next 指针指向插入结点; 算法实现: //p为原链表,elem表示新数据元素,add表示新元素要插入的位置 link * insertElem(link * p,int elem,int add){ link * temp=p;//创建临时结点temp //首先找到要插入位置的上一个结点 for (int i=1; inext; } //创建插入结点c link * c=(link*)malloc(sizeof(link));

哈希表制作通讯录数据结构程序设计

哈希表制作通讯录-数据结构程序设计

————————————————————————————————作者:————————————————————————————————日期:

软件学院 课程设计报告书 课程名称数据结构 设计题目哈希表制作通讯录 专业班级 学号 姓名 指导教师 2014年 1月

目录 1 设计时间 (1) 2 设计目的 (1) 3设计任务 (1) 4 设计内容 (1) 4.1需求分析 (1) 4.11程序所能达到的功能 (1) 4.12输入的形式和输入的范围 (1) 4.2总体设计 (1) 4.21说明本程序中用到的所有抽象数据类型的定义 (1) 4.22说明主程序的流程 (2) 4.23说明各程序模块之间的层次(调用)关系 (3) 4.3详细设计 (3) 4.31实现概要设计中定义的所有数据类型,对每个操作只需 要写出伪码算法 (3) 4.32对主程序和其它主要函数写出伪码算法 (4) 4.4测试 (5) 4.5 附录 (6) 5 总结与展望 (16) 参考文献 (18) 成绩评定 (18)

1 设计时间 2014年1月13日到2014年1月15号 2 设计目的 要求学生掌握数据结构的应用、算法的编写、类C语言的算法转换成C程序并上机调试的基本方法。这对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用。 3设计任务 针对你所在班集体中的“人名”,设计一个哈希表,使得平均查找长度不超过R,完成相应的建表和查找过程。 4 设计内容 (1)每个人的信息至少包括姓名,电话,地址。至少包括对通讯录的创建,添加和按姓名查找等功能。 (2)假设人名为汉语拼音全拼形式,待插入哈希表的长度为你所在班级的人数。哈希函数用除留余数法构造,采用链地址法或二次探测再散列法解决冲突。 (3)完成菜单设计。操作有必要的提示。 4.1需求分析 4.11程序所能达到的功能 以人命的汉语拼音全拼形式查找你所在班级的人的信息(姓名,电话,地址) 4.12输入的形式和输入的范围 把人名都到转换成汉语拼音全拼的形式,人命最大长度不超过20个字符 4.2总体设计 4.21说明本程序中用到的所有抽象数据类型的定义 该程序采用的是结构体类型来处理学生的所有基本信息,如下所述。

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

嘉应学院计算机学院 实验报告 课程名称:数据结构课程设计 开课学期:2017-2018学年第2学期 班级: 指导老师: 实验题目:学生通讯录管理系统 学号: 姓名: 上机时间:

1.需求分析 1)输入数据建立通讯录。 2)查询通讯录中满足要求的信息。 3)插入新的通讯录信息。 4)删除不需要的通讯录信息。 5)查看所有的通讯录信息。 2.概要设计 1)界面设计 为了实现“学生通讯录管理系统”各个功能的管理,设计一个含有多个菜单项的主控菜单子程序以链接系统的各项子功能,方便用户使用本系统。 ************************^@^欢迎使用通讯录系统******************** ● 1 通讯录的建立 ● 2 插入通讯记录 ● 3 查询通讯记录 ● 4 删除通讯记录 ● 5 显示通讯录信息 ● 6 退出管理系统 ************************^@^欢迎使用通讯录系统******************** 2)储存结构设计 本系统主要采用链表结构类型来表示存储在“学生通讯录管理系统”中的信息。其中,链表结点有4个分量构成:通讯录成员学号、通讯录成员姓名、通讯录成员电话号码、指向该结构体的指针。此外,本系统还设置了一个全局变量seat,表示通讯录中成员的序号。 3)系统功能设计 本系统设置了5个功能菜单,5个子功能的设计描述如下。 建立通讯录系统。可以一次输入多个成员通讯录的信息,建立通讯录。该功能由creatIncreLink函数实现。 插入通讯记录。每次可以插入一个成员通讯录的信息,如果要连续插入多个成员通讯录信息则必须多次选择该功能。该功能由insetYouXu函数实现。 查询通讯录记录。可以按两种方式查询所需要的通讯录成员记录,一是按学号查询,二是按照姓名查询。分别有searchNum函数和searchName函数实现。删除通讯录记录。可以对通讯录中不再需要的信息进行删除。有三种删除方式:按序号进行deleteElem函数、delNum函数和delName函数实现。 显示通讯录记录。可以查看通讯录中所有查看通讯录中所有的通讯录成员记录。该功能由printList函数是实现。 3.详细设计 1)数据类型定义 本系统采用链式结构存储通讯录结点。结点结构定义如下:

通讯录管理系统数据结构C语言版链表实现实验报告

Guangxi University of Science and Technology 课程设计报告 课程名称:数据结构与编程综合实训 课题名称:通讯录管理系统的设计与实现 姓名:熊信萌 学号: 201400402003 院系:计算机科学与通信工程学院 专业班级:通信 141 班 指导教师:周坚和 完成日期: 2015-12-18

目录 第一部分课程设计报告 (3) 第1章课程设计目的 (3) 第2章课程设计内容和要求 (3) 2.1 问题描述 (3) 2.2 设计要求 (4) 第3章课程设计总体方案及分析 (5) 3.1 问题分析 (4) 3.2 概要设计 (5) 3.3 详细设计 (6) 3.4 调试分析 (18) 3.5 测试结果 (18) 3.6 参考文献 (22) 第二部分课程设计总结 (23) 附录(源代码) (24)

第一部分课程设计报告 第1章课程设计目的 课程设计是实践教学中的重要环节,它以某一门课程为基础,涉及和课程相关的各方面知识,是一门独立于课程外的特殊课程。课程设计就是让所有同学对课程更全面的应用。本次实验项目“通讯录管理”就是针对数据结构的一门应用较为广泛的系统管理方法。 1. 实现意义 本次实验应用性能很好,结构清楚,能随时添加、删除、查找、修改、输出联系人;并且可以用姓名、编号两种方式;而且其中增加了排序功能,使得插入之后排序为接下来的操作提供便利,操作更精确,以人性化的方式展现出来,效果十分突出。 2. 系统分析 编程完成通讯录的一般性管理工作如通讯录中记录的增加、修改、查找、删除、输出、计算男女人数等功能。每个记录包含编号、姓名、性别、电话号码个人基本信息。用《数据结构》中的链表做数据结构结合c语言基本知识编写一个通讯录管理系统。本程序相对简单,使用方便,几乎不用特殊的命令,只需按提示输入即可。对于建立通讯录管理系统,则需了解并掌握数据结构与算法的设计方法,尤其在算法方面,链表及结点的联系,提高综合运用所学的理论知识和方法独立分析和解决问题的能力。

数据结构通讯录的制作

宜春学院数学与计算机科学学院 课程设计说明书 课程名称:数据结构 课程代码: 题目:通讯录的制作 年级/专业/班: 12软件工程 学生姓名:丁红娟 学号: 1231310105 指导教师:李静老师 开题时间: 2014 年 5 月 12 日完成时间: 2014 年 5 月 18 日

目录 一、引言.................................................................................................... 错误!未定义书签。 二、设计目的与任务.................................................................................... 错误!未定义书签。 三、设计方案................................................................................................ 错误!未定义书签。 四、结论.................................................................................................... 错误!未定义书签。 五、致谢.................................................................................................... 错误!未定义书签。 六、参考文献................................................................................................ 错误!未定义书签。

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

一、课程设计概述: 本次数据结构课程设计共完成两个题:电话号码查询系统、通讯录。 使用语言: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;

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

一.设计内容(通讯录) 本系统应完成一下几方面的功能: 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界面的控制台程序,该程序通过链表的操作,文件存储来实现通讯录的基本功能 struct address{ /*定义结构*/ char name[10]; /*姓名*/ char street[50]; /*街道*/ char city[10]; /*城市*/

char state[15]; /*国家*/ char eip[7]; /*邮编*/ struct address *next; /*后继指针*/ struct address *prior; /*前驱指针*/ } 链表的插入,删除来实现通讯录里的内容的插入删除 当操作完成通过文件件来存储链表的信息,下次打开程序时,读取文件里的内容到内存中,放在链表,然后又可以对链表进行操作; 在这里面,文件内容不可以在外部更改,只能通过读取到内存链表中,通过程序进行更改,然后再写入到文件,写入过程会覆盖上次的内容。 struct address *start; /*首结点*/ struct address *last; /*尾结点*/ struct address *find(char *); /*声明查找函数*/ void enter(); /*函数声明*/ void search(); /*查找,查找过程中调用find函数*/ void save(); /*存盘,将链表信息保存到文件中*/

通讯录的制作数据结构C语言版

通讯录的制作数据结构 C语言版 WTD standardization office【WTD 5AB- WTDK 08- WTD 2C】

通讯录的设计一、设计思路: 经过一个学期的程序设计学习,我逐渐了解了计算机的基本原理和c语言的基本常识,并可以逐渐自己来实现一些简单的程序任务。此次程序设计我选择了通讯录设计,通过函数、结构体的定义以及一些基本操作运用,经过一个多月的编写、调试、测试,最终完成了该程序的设计。以下为我的设计思路: 首先,确定通讯录的功能,我初步设计了六项功能:输入(程序中对应 enter ())、删除(程序中对应delete())、显示通讯录(程序中对应list ())、搜索(程序中对应search())、保存(程序中对应save())、装载(程序中对应 load())。 其次,对于存储的数据结构,我则主要选择了一下几个方面的信息:姓名、性别年龄、籍贯、手机、下一个指针(用于链表的操作与实现)、当前指针(用于链表的操作与实现)。 二、程序源代码: #include <> struct address{ /*创建一个address结构*/ char name[10]; /*姓名*/ char sex[2]; /*性别*/ char age[2]; /*年龄*/ char native[10]; /*籍贯*/ char telephone[12]; /*手机*/ struct address *next; /*下一个入口的指针 */ struct address *prior; /*当前记录的指针*/ } list_entry;

struct address *start; /*指向列表中第一个入口*/ struct address *last; /*指向列表中最后一个入口*/ void enter(),display(),search(),save(),loa d(); menu_select(),list(),delet(),inp uts(); main() { char s[20],choice; struct address *info; start=last=NULL; /*列表长度清零*/ for(;;) { /*列循环的一个用法*/ switch(menu_select()){ case 1: enter(); /*输入1,进入enter()程序,是输入通讯录*/ break; case 2:delet(); /*输入2,进入delete()程序,是删除一个记录*/ break; case 3:list(); /*输入3,进入list()程序,是列表显示通信录*/ break; case 4:search(); /*输入4,进入search()程序,搜索一个街道*/ break; case 5:save(); /*输入5,保存列表到磁盘文件*/ break; case 6:load(); /*输入6,从磁盘文件读入列表*/ break; case 7:return(0);

数据结构(通讯录)

数据结构(通讯录)课程设计 学校:昆明学院 专业:计算机科学与技术学院 课题:数据结构(通讯录)课程设计姓名: 学号:201011010208 指导教师:

目录 1、题目的目的和要求 (2) 1.1、设计目的 (2) 1.2、设计题目要求 (2) 2、设计进度及完成情况 (2) 3、系统分析 (2) 3.1、设计内容 (2) 3.2、流程图 (3) 3.3、设计结构体及基本数据成员类型 (3) 4、详细设计 (5) 5、运行和调试 (11) 6、源程序 (16) 7、总结和心得 (25) 8、参考文献 (25)

1、题目的目的和要求 1.1、设计目的 (1)用《数据结构》中的双向链表作数据结构,给合C语言基本知识,编写一个通讯录管理系统,把所学数据结构知识应用到实际软件开发中去. (2)通过课程设计,能够掌握几种基本数据结构的基本操作。 1.2、设计题目要求 (1)设计内容: 本系统应完成一下几方面的功能: 输入信息——enter(); 显示信息———display( ); 查找以姓名作为关键字———search( ); 删除信息———delete( ); 存盘———save ( ); 装入———load( ) ; (2)设计要求: 1) 每条信息至包含:姓名(NAME )街道(STREET)城市(CITY)邮编(ZIP)国家(STATE)几项。 2) 作为一个完整的系统,应具有友好的界面和较强的容错能力。 3) 上机能正常运行,并写出课程设计报告。 2、设计进度及完成情况 1.07-1.08 查阅相关的资料 1.08-1.09 分组编写程序,初步完成课程设计 1.09-1.10 组合程序,进行调试,完成实验报告 1.10-1.11 上交实验报告打印版,找老师答辩 3、系统分析 3.1、设计内容 本系统应完成一下几方面的功能:

手机通讯录数据结构课程设计

计算机科学与技术学院课程设计成绩单 A:90~100分A-:85~89分B+:82~84分B:78~81分B-:75~77分 C+:72~74分C:68~71分C-:64~67分D:60~63分F:<60分 武汉科技大学计算机科学与技术学院制表

数据结构课程设计 【问题描述】 1、有2个主文件:(参考格式) Friend.txt中的部分内容: 编号姓名性别生日电话1 电话2 电话3 所在地分组001 李勇男1991 189******** 153******** 68891234 湖北武汉 1 002 刘晨女1992-04-01 153******** 北京 2 003 王敏女1980 138******** 186******** 河南郑州 3 005 张立男156******** 呼和浩特 2 006 小四川180******** 87878777 武汉 6 Group.txt中的部分内容: 编号组名 1 大学同学 2 高中同学 3 家人 4 朋友 5 老师 6 订餐 2、设计合适的数据结构存储朋友、分组信息,将以上文件内容导入其中(如果你觉得以上文件中的信息不合适,可以自行处理,删除某列、增加属性、规范化数据均可,如果你认为有必要,甚至去掉“编号”都可以)。 3、进行插入、删除、修改和查询操作。 考查点: ●删除时一要防止误操作,二要考虑分组信息的删除,如何处理? ●修改时同样要考虑各数据项的性质。 ●查询操作包括按姓名查找、按拼音查找、按电话查找等。 4、最后把系统中的数据(包括主文件和索引表等)保存回相应的文件中。 【解题思路】 定义结构体存储朋友的信息,用链表的方式组织数据。将txt文件内容导入其中。整体程序分为主程序和其他程序两大块。 主函数中包括系统的主要操作界面,以及各个功能的菜单。通过选择可以实现不同功能的应用,包括对通讯录的添加、删除(包括对联系人的删除,也包括对分组的删除)、显示、查找、修改等功能。 其他函数主要包括添加函数,删除函数,查找函数,修改函数等。 【算法描述】 1.主函数

相关文档
相关文档 最新文档