当前位置:文档之家› 通讯录的制作(数据结构C语言版)

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

通讯录的制作(数据结构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; /*指向列表中最后一个入口*/

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);

}

}

}

/*选择一个选项*/

menu_select()

{

char s[20];

int c;

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);

return c;

}

/*输入名字和地址*/

void enter()

{

struct address *info,*dls_store();

for(;;){

info=(struct address *) malloc(sizeof(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;

int count;

{

char p[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);

}

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

struct address *dls_store(i,top) /*存贮顺序*/

struct address *i;

/*新的元素*/

struct address *top;

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

struct address *old,*p;

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

i->next=NULL;

i->prior=NULL;

last=i;

return i;

}

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;

return top;

}

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

i->prior=NULL;

p->prior=i;

return i;

}

}

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

i->next=NULL;

i->prior=old;

last=i;

return start;

}

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

delet()

{

struct address *info,*find();

char s[10];

printf("输入姓名:");

gets(s);

info=find(s);

if(info){

if (start==info){

start=info->next;

if(start)

start->prior=NULL;

else last=NULL;

}

else {

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

if (info!=last)

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

else

last=info->prior;

}

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

}

return(0);

}

struct address *find(name)

/*一个查找姓名的结构*/ char *name;

{

struct address *info;

info=start;

while(info){

if(!strcmp(name,info->name)) return info;

info=info->next;

/*获得下一个地址*/

}

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

return NULL; /*没有发现姓名*/

}

list() /*列表*/

{

register int t;

struct address *info;

info=start;

while(info){

display(info);

info=info->next;

/*获得下一个地址*/

}

printf("\n\n");

return(0);

}

void display(info) /*显示通信录*/

struct address *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->teleph one);

printf("\n\n");

}

void search() /*搜索一个名字*/

{

char name[10];

struct address *info,*find();

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

gets(name);

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

else display(info);

}

void save() /*保存通信录*/

{

register int t;

struct address *info;

FILE *fp;

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

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

exit(1);

}

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

info=start;

while(info){

fwrite(info,sizeof(struct address),1,fp);

info=info->next;

/*获得下一个地址*/

}

fclose(fp);

}

void load() /*打开一个文件*/

{

register int t;

struct address *info,*temp=NULL;

FILE *fp;

if((fp=fopen("mlist","rb"))= =NULL){

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

exit(1);

}

while(start){

info=start->next;

free(info);

start=info;

}

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

start=(struct address*) malloc(sizeof(struct address));

if(!start){

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

return;

}

info=start;

while(!feof(fp)){

if(1!=fread(info,sizeof(struct address ),1,fp)) break;

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

info->next=(struct address*)malloc (sizeof(struct address));

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; /*指向列表中最后一个入口*/

通讯录管理系统

通讯录管理系统说明书 一、使用的技术和开发平台: 基于https://www.doczj.com/doc/2311964643.html,技术开发的数据库应用程序。开发平台为windows,使用的语言为C#2008,数据库为:MSSQL SERVER2008 二、系统功能模块 本系统是使用c#2008和MSSQL SERVER2008开发的一个数据库应用程序,其主要功能是实现对不同组别的联系人信息进行管理,具体来说分如下几个功能模块: 1、后台管理模块 对系统管理员账户的添加、删除、修改等操作 2、登录验证系统 系统启动时,将出现登录窗口,要求用户输入正确的用户名和密码,否则无法进入系统。 2、联系人管理系统 登录成功后将进入系统的主窗口(FormMain.cs),如下图所示: 其中组别是对联系人分的类,根据添加到数据库中的所有联系人的组别确定,是可以更改的。主窗口第一次显示时,默认显示第一个组别的所有联系人。可以在左边树形列表中选择不同的组别,同时右边的ListView自动显示不同组别的所有联系人。在联系人菜单下可以实现新增联系人、删除联系人、修改或查看联系人以及搜索,不论是新增、删除还是修改联系人完毕后,下面的ListView会同时更新显示联系人及组别。状态栏显示登录账户名和选中组别包含的联系人个数。 当用户单击新增联系人菜单项时,弹出如下窗体(FrmAdd.cs),以实现新增:

其中组别是根据数据库中已有的组别自动加载到组合框中的。当用户在ListView中选择某个联系人后再单击删除联系人菜单项,可将该联系人删除。当用户在ListView中双击某个联系人或单击修改或查看联系人菜单项,会弹出如下窗体(FrmMod.cs),以实现修改或查看联系人:不论是添加还是修改联系人时,组别都是可以修改的,注意姓名和组别不能为空。

C#课程设计 通讯录管理系统

郑州科技学院 C#课程设计设计(论文) 课题:通讯录管理系统 姓名:刘闯 学号:201015056 班级:10计科2班 导师:王玉萍 课程设计日期:2013年5月31日

目录 摘要 (3) 一.整体设计 (4) 1.1设计构思 (4) 1.2系统数据流图: (5) 1.3开发及运行环境: (5) 2.1 数据库需求分析 (6) 2.2 E-R图 (7) 2.3 数据表设计 (7) 2.4 管理员信息表(db.Admin): (7) 2.5 用户信息表(https://www.doczj.com/doc/2311964643.html,er): (8) 2.6 资料信息表(db.Records): (8) 三.通讯录管理系统的实现 (9)

3.1 类的编写 (9) 3.2 系统用户功能模块设计: (9) 3.3 系统管理员功能模块设计: (11) 3.4 系统设计运行过程中所遇到的问题: (16) 3.4.1 数据库的连接问题 (16) 3.4.2 登录模块出现角色选择问题 (17) 3.4.3 用户信息添加模块问题 (20) 四. C#课程设计总结 (26) 五.主要参考书及手册 (28) 六.致谢 (29)

摘要 日益繁多的人际交往使得我们很难搞清楚与每个人之间的联系方式,特别是对于做经常出差的人来说更是难,所以通讯录能够便捷的给我们带来所需要的相关信息。而随着计算机的普及,人们的生活摆脱了传统式的记事本、电话簿,越来越多的靠计算机来帮助人们记住这些事情,极其简便。这就需要有一个使用的通讯录管理系统,用户可以方便的通过自己电脑的通讯录管理系统,来随时查阅自己所需要的信息,而不必再大费周折去翻开那繁琐的记事本。 通讯录管理系统是一个专门针对储存用户联系方式以及一些简单个人信息的实用管理系统,它方便了用户对众多客户、朋友、同事等个人信息的储存和快速查阅的功能,大大减少了查找过程的时间。

通讯录管理系统需求分析

通讯录管理系统需求分析 项目编号:S1-BS-HTML-001 l项目概述 1.引言 1.1编写目的 在完成了针对通讯录管理系统的前期调查,同时与多位软件使用者进行了全面深入地探讨和分析的基础上,提出了这份软件需求规格说明书。 此需求规格说明书对《通讯录管理系统》软件做了通讯录管理系统的用户需求分析,明确所要开发的软件应具有的功能、性能与界面,使系统分析人员及软件开发人员能清楚地了解用户的需求,并在此基础上进一步提出概要设计说明书和完成后续设计与开发工作。本说明书的预期读者为客户、业务或需求分析人员、测试人员、用户文档编写者、项目管理人员。 本说明书是整个软件开发的依据,它对以后阶段的工作起指导作用。本文也是项目完成后系统验收的依据。

1.2项目背景 本通讯录信息管理系统用计算机管理电子通讯录的一种计算机应用技术的创新,在计算机还未普及之前通讯管理都是由联系人采用名片,笔录手工记帐的方式来操作的.现在一般的通讯录管理都是采用计算机作为工具的实用的计算机通讯录管理程序来帮助人们进行更有效的通讯录信息管理。通讯录管理系统是典型的信息管理系统(mis),要求应用程序功能完备,易使用等特点。 1.3定义 需求:用户解决问题或达到目标所需的条件或功能;系统或系统部件要满足合同、标准,规范或其它正式规定文档所需具有的条件或权能。 2.任务概述 2.1目标 实现通讯录管理系统的基本功能,可以实现电话用户的查询、电话号码的查询、电话号码所在地的查询、电话号码的添加及删除等功能,以方便人们的记录和通讯。 2.2运行环境 2.2.2.1服务端 A. 操作系统:Windows 2003 Server 2.2.2.2客户端 A. Windows 95/98/me/Xp/2000/2003, Unix, Linux,Vista,Mac OS各版 2.3条件与限制 本通讯录信息管理系统用计算机管理电子通讯录的一种计算机应用技术的创新,在计算机还未普及之前通讯管理都是由联系人采用名片,笔录手工记帐的方式来操作的.现在一般的通讯录管理都是采用计算机作为工具的实用的计算机通讯录管理程序来帮助人们进行更有效的通讯录信息管理。通讯录管理系统是典型的信息管理系统(mis),要求应用程序功能完备,易使用等特点。 3.数据描述 开始 3.1数据流图 以可读写的方式打开一个数据文件 将此文件的内容读出,并存入一个新的结构体类型的数组中。 调用menu()菜单函数

通讯录管理 数据结构

#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.doczj.com/doc/2311964643.html,,p->data.phone,p->data.addr); Insertnode(head,p); break; case 3: printf(" ******************************\n"); printf(" ******* 通讯录信息查询*******\n");

Java课程设计--个人通讯录管理系统

《JAVA程序设计》课程设计说明书

目录 1 引言 (1) 1.1课程设计选题 (1) 1.2课程设计的目的 (1) 1.3本选题的设计背景 (1) 2 需求分析 (1) 2.1 功能需求 (1) 2.2 系统的开发运行环境 (2) 3 总体设计 (2) 3.1 系统体系结构设计 (2) 3.2系统功能模块及主要类设计 (3) 3.3数据库设计 (5) 4 详细设计与实现 (7) 4.1 登录模块 (7) 4.2 注册新用户模块 (8) 4.3 查询模块 (9) 4.4 添加模块 (11) 4.5 修改模块 (13) 4.6删除模块 (16) 4.7备份模块 (18) 4.8退出模块 (19) 5 小结和展望 (20) 参考文献 (22) 附录 (22) 使用说明书 (22)

1引言 1.1课程设计选题 《个人通讯录管理系统》 1.2课程设计的目的 通过编写并调试一个Java应用软件,熟悉和掌握使用Java开发应用程序的完整过程。 使学生巩固和加深以Java 语言为基础的面向对象编程技术理论知识的理解,提高实际动手编程能力的培养,掌握以Java为核心的应用软件开发方案,达到能独立阅读、编制和调试一定规模的Java程序的水平。 1.3本选题的设计背景 一直以来就想做一个比较实用的通讯录管理系统,这样可以方便我对于身边联系人信息的管理,防止遗忘和丢失。 在这样一个信息化的社会里,人们的生活也越来越离不开电脑了,本次通过做个人通讯录管理系统,希望摈弃传统的纸质记录的弊端,发挥电脑软件的优势,方便人们对自己的联系人信息的管理。 2需求分析 2.1 功能需求 2.1.1个人通讯录功能需求 (1)登陆功能。用户可以直接输入用户名和密码,登陆进入通讯录的主功能界面。 (2)注册功能。其他用户可以输入自己的用户名和密码及确认密码,来实现注册成为该通讯录的使用者。 (3)查询功能。在该功能里,用户可以采用模糊查询和精确查询两种查询方式来对自己存储的联系人信息进行查询。 (4)添加功能。在该功能里,用户可以添加自己的常用联系人和分组信息。

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

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

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

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

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

学校通讯录管理系统数据库设计

数据库设计 在本实例中使用的是SQLServer 2000数据库管理系统。数据库服务器安装的位置为本机,数据库名称为commu ni catio nserver 。下面将介绍数据库分析和设计、数据表的创建、数据表关系图和创建存储过程的内容。 4.2.1 数据库分析和设计 在本节中,将根据上一节系统功能的设计分析创建各数据表的实体E-R关系图,它是数 据库设计非常重要的一步,下面用E-R图的形式表示出各实体的属性。 1. 用户E-R实体图 用户的实体具有用户ID、密码、姓名、性别、电话、E-mail、用户权限7个属性,ER图如图4-5所示。 图4-5 用户E-R实体图 2. 地区E-R实体图 地区的实体具有地区编号、地区名称2个属性,E-R图如图4-6所示。 图4-6 地区E-R实体图 3. 职务E-R实体图 职务的实体具有职务编号、职务名称2个属性,E-R图如图4-7所示。 图4-7 职务E-R实体图 姓名用户权限性别 1 用户E-mail 地区 职务职务名称

4. 学校E-R 实体图 学校的实体具有学校名称、学校所在地区、在校学生人数3个属性,可用 E-R 图表示, 如图4-8所示。 (学校名称X 学校一(在校学生人数 图4-8 学校E-R 实体图 5. 通讯录E-R 实体图 通讯录的实体具有联系人姓名、地址、联系电话、所属职务、所在学校、所在单位、所 属地区7个属性,E-R 图如图4-9所示。 图4-9 通讯录E-R 实体图 4.2.2 数据表的创建 在上面一节中讲解了实体的 E-R 图,本节中将根据E-R 图的内容,创建企业信息管理系 统中的各数据表,在此系统中共涉及到 5个数据表的应用,分别为如下。 1、 字段采用camel 风格定义 2、 用不同颜色区分字段 主键:蓝色 外键:白色 既是主键又是外键:淡蓝色 普通字段:青绿 学校编号 学校所在地区 联系电话 通讯录 所在单位 * 所在学校 彳所属职务

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

数据结构课程设计通讯录 的制作 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

通讯录管理系统数据库设计说明

通讯录管理系统数据库设计与实现 1 需求简介() 1.1功能概述 1.2数据要求 功能中涉及的数据项说明。 1.用分组基本信息(Admin):包括分组号、分组名; 2.用户基本信息(Dormitory):包括账号、密码、昵称、个性签名,这样可以 方便分清用户记录的联系人;

3.联系人基本信息(linkman):包括、性别、关系、手机号、座机号、QQ、E-mail、 生日、工作单位、地址、所属用户、所属分组; 1.3数据字典 数据项列表 数据项编号数据项名数据项含义与其它数据项的关系存储结构别名TXL-1 G_number 分组号CHAR(10) TXL-2 G_name 分组名CHAR(20) TXL-3 ID 所属用户等同于账号ID CHAR(10) TXL-4 ID 账号CHAR(10) TXL-5 Nickname 昵称CHAR(20) TXL-6 Password 密码CHAR(20) TXL-7 Qianming 签名CHAR(50) TXL-8 L_number 联系人号CHAR(100) TXL-9 Name CHAR(20) TXL-10 Sex 性别CHAR(2) TXL-11 Concern 关系CHAR(10) TXL-12 Phone 手机号CHAR(11) TXL-13 Landline 座机号CHAR(10) TXL-14 QQ QQ号CHAR(10) TXL-15 Email E-mail CHAR(20) TXL-16 Work 工作单位CHAR(30) TXL-17 Address 地址CHAR(30) TXL-18 Birthday 生日Date 数据结构列表 数据结构编号数据结构名 数据结构 含义 组成 DS-1 Grouping 分组G_number,G_name,ID, DS-2 Worker 用户ID,Nickname,Password,Qianming DS-3 Linkman 联系人L_number,Name,Sex,Concern,Phone,Landline,QQ,Email,Work,Address,Birthday,ID,G_number

数据结构 通讯录

数据结构课程设计报告 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;

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

湖南涉外经济学院课程设计报告 课程名称数据库原理与应用课程设计 题目通讯录管理系统 组员 学院信息科学与工程学院 班级 指导教师 2015年12月30 日

任务分配表

摘要 随着社会的发展,人际关系变得越来越重要,为了保持良好的人际关系,必须经常与亲戚、朋友、同学、同事保持联系,但是有时候存在着许多的限制条件,比如怎样找到交流对象的各种信息?可能你会想到现实生活中的手机等通讯工具,由于这些工具的单一性,不可能在第一时间找到自己想要的信息资料,因此,为了能够快速查找到联系人的信息,节省查找时间,开发通讯录管理系统。 通讯录管理系统是一个基于SQL数据库储存和JAVA界面模式的个人通讯录管理系统。它是将自己的联系人的具体信息集中管理,成为一个方便人们使用的小软件。在开发过程中主要运用Java, SQL Server技术,由于开发工具和数据库之间的良好使用,可以为开发带来方便,使之成为一个可施行的系统。从而达到开发的目的-----实现对通讯录信息的管理。 通过采用相关技术,以及老师的辅导和同学们的帮助,将系统设计的功能全部实现。功能包括:用户的登录, 添加联系人信息,修改联系人信息,删除联系人信息,查询联系人信息,可以浏览全部通讯的联系人,并且可以根据数据表的各字段来查询你所要找的联系人等功能 关键词: SQL Server,JAVA。

目录 摘要 (3) 第一章绪论 (6) 1.1目的 (6) 1.2背景 (6) 1.3研究内容 (6) 第二章数据库需求分析 (7) 2.1 通讯录系统的功能 (7) 2.2通讯录系统的数据流 (7) 2.3 通讯录系统数据流程图 (8) 2.4通讯录的数据字典 (9) 第三章数据库概念结构设计 (12) 3.1实体 (12) 3.2实体间包括 (12) 3.3 实体属性图 (12) 3.4局部E-R图 (13) 第四章数据库逻辑设计 (15) 4.1 E-R图转化而得到的关系模式 (15) 4.2 由关系模式转换得到的函数依赖 (15) 4.3 关系模式优化 (15) 4.4 对优化后的关系模式的结构 (15) 第五章数据库实施 (17) 5.1数据库创建代码 (17) 5.2数据库表创建代码 (17) 5.2.1用户表 (17) 5.2.2联系人表 (17) 5.2.3分组表 (18) 5.3视图创建代码 (18) 5.4存储过程代码创建 (19) 第六章数据库运行和维护 (20) 6.1登陆模块 (20) 6.2联系人界面 (20) 6.3朋友分组界面及详细查询 (20) 6.4同学分组界面及详细查询 (21) 6.5同事分组界面及详细查询 (22) 6.6查询界面 (23) 6.7增加界面 (24) 6.8修改界面 (24) 6.9删除界面 (25) 第七章总结 (26) 参考文献 (27)

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

数据结构实验报告之通讯录的实现 一、实验题目 利用线性表实现一个通讯录管理,通信录的数据格式如下: 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) {

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

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

通讯录管理系统

西安科技大学 数据库课程设计报告 题目:通讯录管理系统 班级:软件工程0902 学号: 0908010224 姓名:王浩 2011年6月

摘要 基于数据库的通讯录管理系统,采用数据库原理、程序设计方法、数据结构等方面的知识结合vc++的mfc类库进行综合设计,具有基本联系人资料管理以及对于登陆用户的管理,权限设置以及数据的备份和恢复等功能。采用SQL sever 作为通讯录管理系统的后台数据库,使得通讯录管理系统具有更高的稳定性及安全性,也方便了数据库中数据的备份以及发生故障时的还原。 关键词:数据库通讯录管理系统 SQL-sever 后台

目录 目录 (3) 1.绪论 (1) 1.1课程设计目的以及意义 (1) 1.2课程设计内容 (1) 2.需求分析 (2) 2.1功能需求 (2) 2.2数据分析 (2) 3.数据库设计 (3) 3.1概念结构设计 (3) 3.2逻辑结构设计 (3) 3.3物理结构设计 (4) 4.系统功能设计 (5) 5.系统实现 (6) 5.1系统的开发环境 (6) 5.2代码部分 (6) 6.总结 (57)

1.绪论 1.1课程设计目的以及意义 通过本课程设计,培养学生具有C/S模式的数据库应用软件系统的设计和开发能力;熟练掌握SQL Server数据库的使用,熟练掌握使用VC++开发工具开发数据库应用的能力;为毕业设计打下坚实的基础。根据所学的数据库原理与程序设计的知识,能够针对一个小型的数据库管理系统,进行系统的需求分析,系统设计,数据库设计,编码,测试等,完成题目要求的功能,从而达到掌握开发一个小型数据库的目的。根据所学的数据库原理与程序设计的知识, 通过对一个实际问题的分析,设计与实现,将原理与应用相结合,使我学会如何把书本上学到的知识用于解决实际问题,培养自己的动手能力;另一方面,使我能深入理解和灵活掌握教学内容。 1.2课程设计内容 通讯录管理系统 主要的数据表: 用户信息表,联系人信息表等;

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

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

目录 一、课程设计题目及所涉及知识点 (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));

通讯录管理系统设计说明书

通讯录管理系统设计说明书 系统概述: 随着毕业的来临,我们就将面临分离。为了能在毕业后,能够方便联系我们在大学其间的同学朋友,通讯录就是一个可以帮我们方便查找同学朋友的工具。 随着计算机的普及,人们的生活摆脱了传统式的记事本、电话簿,越来越多的靠计算机来帮助人们记住这些事情,极其简便。这就需要有一个使用的通讯录管理系统,用户可以方便的通过自己电脑的通讯录管理系统,来随时查阅自己所需要的信息,而不必再大费周折去翻开那繁琐的记事本。 通讯录管理系统是一个专门针对储存用户联系方式以及一些简单个人信息的实用管理系统,它方便了用户对众多客户、朋友、同事等个人信息的储存和快速查阅的功能,大大减少了查找过程的时间。 关键字:插入,删除,查找,输出。 需求分析: 调查用户需求: 随着同学们的即将毕业,蹋出社会,交际难免地逐渐扩大,与外界联系将更为广泛和密切,传统的手工通讯录、地址簿已经难以满足快节奏、高效率的现代生活的需求。经常发生要在几十甚至上百张名片中找出某一张名片的情况,若由手工完成效率十分低。当交际扩大后,传统的手工通讯录非常不方便,不易查询、修改、存放,不易保密,容易遗失。 由计算机带来管理庞大而繁杂的通讯录是非常合适的,不仅查询和修改方便,并且效率高,速度快,完全能够满足现代化交际活动的要求,同时也更方便同学们联系交往。 本系统专门用于个人通讯信息管理的小型应用软件,主要提供个人通讯信息的登记、修改、浏览、查询和打印等功能。

1.用户的主要信息需求: ①对个人通讯信息资料进行登记、修改、浏览。 ②对个人通讯信息资料进行按姓名和学号查询。 ③对个人通讯信息资料进行打印输出。 系统功能设计与分析: 1.功能模块图 2.功能设计 (1)新建通讯录功能 增加一个新的记录,并保存通讯录; (2)搜索通讯录功能

相关主题
文本预览
相关文档 最新文档