C通讯录管理系统的设计与实现

合集下载

C语言-通讯录管理系统

C语言-通讯录管理系统
int xz;
printf("--------------------\n");
printf(" 1.按学号查询\n");
printf(" 2.按姓名查询\n");
printf("--------------------\n");
printf("请选择: \n");
scanf("%d",&xz);
if (xห้องสมุดไป่ตู้==1){
i++;
printf("想继续创建吗?(1.是/0.不):");
scanf("%d",&j);
if (!j)
return i;
else
printf("恭喜你,创建成功!请继续创建!\n");
}
return i;
}
int add_record(int flag)
{ int i=flag,j;
for(i;;)
printf("%s,%s,%s,%s,%s,%s\n",data[i].num,data[i].name,data[i].birthday,data[i].post,data[i].phone);
printf(" ------------------------------\n");
return 0;
}
}
int menu_select()
{
int i;
printf(" ******************** \n");
printf(" Welcome! \n ");

c语言实现通讯录管理系统(用链表实现)

c语言实现通讯录管理系统(用链表实现)

c语⾔实现通讯录管理系统(⽤链表实现)题⽬:通讯录(通过链表实现)设计并实现⼀个简易的通讯录软件,管理个⼈通讯记录。

⼀条通讯记录可包括:姓名、⼯作单位、⼿机、住宅电话、E-Mail、家庭住址等(可⾃⾏增删,但不可过少)。

该系统应实现以下基本功能:(1)增加新的通讯记录。

(2)删除已有的通讯记录。

(3)修改已有的通讯记录。

(4)浏览全部或指定(如指定姓名、⼯作单位等)的通讯记录。

(5)合理组织排列各项功能,界⾯可使⽤键盘操作。

(6)以⽂件的形式存储数据。

说明:⼤⼀时的c语⾔课设,⽤链表实现⼀个通讯录管理系统,为了美观好看,花了很多时间调整齐度,记录⼀下⼤⼀时的作业。

其主要功能是对通讯录可输⼊,显⽰,插⼊,删除,最难是可保存,这个学⽂件的时候不怎么会。

内容我⾃⼰弄了7个,名字,性别,⼯作单位,⼿机,住宅电话,E-Mail,家庭住址(其他太多其实都是⼀样的,就懒得加了)。

主要运⽤到对指针中的链表的功能和使⽤要⽐较扎实,分部列写就可以了。

实现图⽚:附上代码:1 #include <stdio.h>2 #include <string.h>3 #include <stdlib.h>4 typedef struct student5 {6char name[20];//名字7char wm[20];//性别8char work[100];//⼯作单位9char stel[20];//⼿机10char htel[20];//住宅号码11char mail[20];//E-Mail12char home[100];//家庭住址13struct student *next;14 }stu;15 stu *head;//头指针16void screen()//主菜单17 {18 printf("\n=======================================================\n");19 printf(" 欢迎来到通讯录管理系统\n\n");20 printf(" 1.输⼊数据 2.显⽰数据\n");21 printf(" 3.插⼊数据 4.删除数据\n");22 printf(" 5.查看数据 6.修改数据\n");23 printf(" 7.保存数据 8.返回主菜单\n");24 printf("\n~~~~~~输~~~~~~⼊~~~~~~9~~~~~~退~~~~~~出~~~~~~程~~~~~~序\n");25 }26void input()//输⼊数据27 {28int ans;//判断是否继续输⼊29 stu *p1,*p2;30 p1=(stu *)malloc(sizeof(stu));//申请内存来⽤31if(p1!=NULL)32 {33 printf("========输⼊数据========\n");34 head=p1;35while(1)36 {37 printf("名字:");38 scanf("%s",&p1->name);39 printf("性别:");40 scanf("%s",&p1->wm);41 printf("⼯作单位:");42 scanf("%s",&p1->work);43 printf("⼿机:");44 scanf("%s",&p1->stel);45 printf("住宅号码:");46 scanf("%s",&p1->htel);47 printf("E-Mail:");48 scanf("%s",&p1->mail);49 printf("家庭地址:");50 scanf("%s",&p1->home);51 printf("===================================\n");52 p2=p1;53 p1=(stu *)malloc(sizeof(stu));//申请下⼀个要⽤的空间54if(p1!=NULL)55 p2->next=p1;56 printf("请选择是否继续输⼊:1.继续 2.退出\n请选择:");//⽤户选择57 scanf("%d",&ans);58if(ans==1)//继续59continue;60else//退出61 {62 printf("========输⼊完毕========\n");63 p2->next=NULL;64free(p1);//将申请的的⽆⽤内存释放65break;66 }67 }68 }69 }70void look(stu *p1)//显⽰数据71 {72 printf("========显⽰数据========\n");73while(p1!=NULL)74 {75 printf("名字:%s\n",p1->name);76 printf("性别:%s\t",p1->wm);77 printf("⼯作单位:%s\t",p1->work);78 printf("⼿机:%s\t",p1->stel);79 printf("住宅号码:%s\t",p1->htel);80 printf("E-Mail:%s\t",p1->mail);81 printf("家庭住址:%s\n",p1->home);82 printf("=====================================\n");83 p1=p1->next;84 }85 printf("========显⽰完毕========\n");86 }87void insert()//插⼊数据88 {89int ans;//选择插⼊位置90char name[20];//插⼊者的名字91 printf("========插⼊数据========\n");92 stu *p1,*p2,*p3;93 p1=head;94 p3=(stu *)malloc(sizeof(stu));//申请内存95 p3->next=NULL;96 printf("请输⼊插⼊者的数据:\n");97 printf("名字:");98 scanf("%s",&p3->name);99 printf("性别:");100 scanf("%s",&p3->wm);101 printf("⼯作单位:");102 scanf("%s",&p3->work);103 printf("⼿机:");104 scanf("%s",&p3->stel);105 printf("住宅号码:");106 scanf("%s",&p3->htel);107 printf("E-Mail:");108 scanf("%s",&p3->mail);109 printf("家庭地址:");110 scanf("%s",&p3->home);111 printf("请选择插⼊位置:1.⾸位置插⼊ 2.尾部插⼊ 3.插到某⼈前⾯\n请选择:");112 scanf("%d",&ans);113switch(ans)114 {115case1://放到头指针116 p3->next=p1;117 head=p3;118break;119case2://放到尾部120while(p1->next!=NULL)121 p1=p1->next;122 p1->next=p3;123break;124case3://放到某⼈前⾯125 printf("请输⼊插到谁前⾯名字:");126 scanf("%s",name);127while(strcmp(name,p1->name)!=0)128 {129 p2=p1;130 p1=p1->next;131 }132 p2->next=p3;133 p3->next=p1;134break;135 }136 printf("========插⼊成功========\n");137 }138void deleted()//删除数据139 {140 stu *p1,*p2;141char name[20];//删除者名字142 printf("========删除数据========\n");143 printf("请输⼊要删除者的名字:");144 scanf("%s",name);145 p1=head;146if(head==NULL)//通讯录已经没数据了147 {148 printf("通讯录⾥什么也没有了。

基于C#的通讯录管理系统的设计与实现

基于C#的通讯录管理系统的设计与实现

基于C#的通讯录管理系统的设计与实现作者:吴小燕来源:《数字化用户》2013年第23期【摘要】本文采用Visual Studio 2008+SQL Server 2008开发环境,结合WinForms、等多种技术,实现了一个集人性化界面与多功能设计为一体的通讯录管理系统。

经过测试,本软件可满足现代人们对通讯管理的需求,达到预期效果。

【关键词】C# ADO NET一、引言在通信普及的今天,人们对通信的依赖越来越大,人们之间会经常联系。

传统方法是将人的通讯信息记录在本子上,但在现今社会,随着电脑普及,人们可把通讯信息记录在电脑上,方便人们的工作和生活。

本文用c#和SQL SERVER 2008设计了一个通讯录系统。

二、系统功能模块该系统分如下几个模块:登录验证子系统:系统启动时,将出现登录窗口,要求用户输入正确的用户名和密码,否则无法进入系统。

联系人管理子系统:登录成功后将进入系统的主窗口(FormMain.cs)。

其中组别是对联系人分的类,固定为家人、朋友和同事这三类,主窗口第一次显示时,默认显示家人组别的所有联系人。

可以在组别下拉列表中选择不同的组别,同时下面的ListView 自动显示不同组别的所有联系人。

在联系人菜单下可以实现新增联系人、删除联系人、修改或查看联系人,不论是新增、删除还是修改联系人完毕后,下面的ListView会同时更新显示联系人。

当用户单击新增联系人菜单项时,弹出新增联系人窗体,以实现新增。

当用户在ListView中选择某个联系人后再单击删除联系人菜单项,可将该联系人删除。

当用户在ListView中双击某个联系人或单击修改或查看联系人菜单项,会弹出修改或查看窗体,以实现修改或查看联系人。

当用户在主窗体上的姓名和(或)联系电话文本框中输入关键词,再单击搜索按钮,可以按姓名和(或)联系电话搜索联系人,搜索的结果显示在下面的ListView中。

单击查看菜单下的图标或详细信息菜单项,可以控制ListView按大图标或详细信息方式显示。

通讯录管理系统设计报告

通讯录管理系统设计报告

通讯录管理系统设计报告一、引言通讯录在日常生活中扮演着重要的角色,用来存储和管理各种联系人信息,方便人们随时找到需要联系的人或组织。

随着移动互联网的普及,通讯录的管理变得更加便捷和高效。

为了提高通讯录的管理效率,我们设计并开发了一款通讯录管理系统。

二、系统概述通讯录管理系统是一个基于Web的应用程序,用户可以通过浏览器访问系统,进行通讯录的管理操作。

系统主要包括以下功能:•用户登录与注册:用户可以注册新账号,并通过账号密码登录系统。

•联系人管理:用户可以添加、编辑、删除联系人信息,包括姓名、电话号码、邮箱等。

•分组管理:用户可以创建分组并将联系人归类到不同分组。

•搜索功能:用户可以通过关键词搜索联系人信息。

•导出和导入功能:用户可以将联系人信息导出为Excel表格,并可以通过Excel文件导入联系人到系统中。

三、系统架构通讯录管理系统采用了前后端分离的架构,前端使用Vue.js框架开发,提供友好的用户界面;后端使用Node.js和Express框架搭建RESTful API,负责数据的存储和管理。

系统中的数据存储在MySQL数据库中,用户的密码使用bcrypt进行加密存储,确保用户信息的安全性。

同时,系统对用户权限进行了细致管理,保障用户在系统中的数据安全。

四、系统界面系统的界面设计简洁直观,用户可以轻松进行操作。

主要包括登录页面、通讯录首页、联系人管理页面、分组管理页面等。

用户登录页面:[登录页面截图]通讯录首页:[通讯录首页截图]联系人管理页面:[联系人管理页面截图]五、系统特色•简洁高效:系统操作简单直观,提供了快速的联系人管理功能。

•个性化定制:用户可以根据自己的需求创建分组,快速查找联系人。

•数据安全:采用了加密技术和权限管理,确保用户数据的安全性。

•导入导出功能:支持Excel文件导入导出,方便用户管理大批量联系人信息。

六、未来展望通讯录管理系统将继续进行优化和迭代,引入更多智能化功能,如联系人推荐、消息提醒等,提升用户体验。

c语言通讯录课程设计报告

c语言通讯录课程设计报告

一引言当今时代是飞速发展的信息时代。

在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。

计算机的最大好处在于利用它能够进行信息管理。

使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。

尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。

计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。

本系统就是为了管理而设计的。

通讯录管理系统的建立是可以有效节省同学、朋友、客户间日常交流的投资(指时间、精力),其设计理念很简单,变传统的纸张与笔录方式为计算机自动化进行通讯录信息管理系统,既省时间又提高效率。

因此在系统构建时,只要我们本着丰富通讯录的信息资源,为用户提供最为方便的快捷的信息阅览途径和管理手段,去吸引用户,那么通讯录管理系统是完全可行的。

通讯录软件设计的灵感来源于生活和工作中的需要。

如今,随着社会的飞速发展,信息时代改变着人们的各种生活方式。

人们的联系信息,联系方式变得复杂而多样化,以前所使用的各种电话簿、通讯本等小册子由于查找不方便、功能单一等缺陷已经无法胜任它的“时代使命”,而现在各种手机,商务通内设的电话簿尽管携带方便却又挥之不去其“记录量少,界面小,浏览不方便”的缺点。

工作中看到有些人巧妙地利用excell或者word制表格来建立通讯录,每逢用时再打开,可是查找极其不便,维护起来也麻烦。

通讯录系统设计,它的内容对于计算机来说是至关重要的,通讯录系统为计算机的使用者提供充足的信息和快捷的查询手段。

用c语言构建的通讯录系统设计,通过课上学到的和查阅一些文献的一些关于结构体[1]、数组、指针、函数以及循环函数的运用[1]和字符串的处理[2]等基本知识可以初步的实现通讯录的输入、显示、查找、删除、快速查询等通讯录简单而用的一些实用的功能,给人们带来更多的方便。

本管理系统设计合理、操作方便、运行稳定、功能完备,具有较高的实用价值。

本课程设计主要运用C语言中的结构体、数组、链表、等数据结构,设计一个简单的管理系统应用程序。

通讯录管理系统(C语言)

通讯录管理系统(C语言)

通讯录管理系统(C语⾔)/** 对通讯录进⾏插⼊、删除、排序、查找、单个显⽰功能*/#include <stdio.h>#include <malloc.h>#include <string.h>#include <stdlib.h>int n;typedef struct _Address_List{char name[30]; //名字char work[30]; //职业char handset[20]; //⼿机号码char email[30]; //电⼦邮件char address[30]; //地址struct _Address_List *next;}address_List;#define LEN sizeof(address_List)address_List *Release(address_List *head);//创建⼀个通讯录address_List *Create(void){address_List *head,*p1,*p2;char name[30];n = 0;p1 = (address_List *)malloc(LEN);p2 = p1;printf("请输⼊通讯录的内容!\n姓名输⼊为0时表⽰创建完毕!\n");printf("请输⼊姓名:");gets(name);if(strcmp(name,"0")!=0){strcpy(p1->name,name);printf("请输⼊职业:");gets(p1->work);printf("请输⼊⼿机:");gets(p1->handset);printf("请输⼊电⼦邮件:");gets(p1->email);printf("请输⼊通讯地址:");gets(p1->address);head = NULL;while(1){n = n+1;if(n == 1){head = p1;}else{p2->next = p1;}p2 = p1;printf("请输⼊姓名:");gets(name);if(strcmp(name,"0") == 0){break;}else{p1 = (address_List *)malloc(LEN);strcpy(p1->name,name);printf("请输⼊职业:");gets(p1->work);printf("请输⼊⼿机:");gets(p1->handset);printf("请输⼊电⼦邮件:");gets(p1->email);printf("请输⼊通讯地址:");gets(p1->address);}}return head;}else{return0;}}//打印整个通讯录void print(address_List *head){address_List *p;if(head != NULL){p = head;printf("本通讯录现在共有%d⼈;\n",n);printf("---姓名---------职业----------⼿机--------Email-------------通讯地址\n");printf("====================================================================\n");do{printf("=%s\t\t",p->name);printf("=%s\t\t",p->work);printf("=%s\t\t",p->handset);printf("=%s\t\t",p->email);printf("=%s\n",p->address);p = p->next;}while(p != NULL);printf("==================================================================\n"); }else{printf("通讯录为空,⽆法输出!\n");}}//在通讯录插⼊address_List *insert(address_List *head){address_List *p0,*p1,*p2;char name[20];p1 = head;printf("请输⼊增加的内容:\n");printf("请输⼊姓名:");gets(name);if(strcpy(name,"0") == 0){printf("姓名不能为0,增加失败!\n");return head;}else{p0 = (address_List *)malloc(LEN);strcpy(p0->name,name);printf("请输⼊职业:");gets(p1->work);printf("请输⼊⼿机:");gets(p1->handset);printf("请输⼊电⼦邮件:");gets(p1->email);printf("请输⼊通讯地址:");gets(p1->address);n = n+1;if(head == NULL){head = p0;p0->next = NULL;return head;}else{while(strcmp(p0->name,p1->name) > 0 && (p1->next != NULL)){p2 = p1;p1 = p1->next;}if(strcmp(p0->name,p1->name) <0 || strcmp(p0->name,p1->name) == 0){if(head == p1){head = p0;}else{}p0->next = p1;}else{p1->next = p0;p0->next = NULL;}return head;}}}//删除通讯录中某个⼈address_List *delete_txl(address_List *head){address_List *p,*q;char name[30];if(head == NULL){printf("通讯录为空,⽆法删除!\n");return head;}p = head;printf("请输⼊需要删除的⼈姓名:");gets(name);if(strcmp(head->name,name) == 0){head = head->next;free(p);printf("删除操作成功!\n");return head;}else{q = head;p = head->next;while(p != NULL){if(strcmp(p->name,name) == 0){q->next = p->next;free(p);printf("删除操作成功!\n");return head;}p = p->next;q = q->next;}}}//显⽰通讯录中某个⼈address_List *display(address_List *head){address_List *p1,*p2;char name[30];int m;if(head == NULL){printf("通讯录为空,⽆法显⽰!\n");return head;}p1 = head;m = 0;printf("请输⼊要显⽰⼈的姓名:");gets(name);while(p1 != NULL){while(strcmp(p1->name,name) != 0 && p1->next != NULL){p2 = p1;p1 = p1->next;}if(strcmp(p1->name,name) == 0){m++;printf("%s的通讯内容如下:\n",name);printf("---姓名---------职业----------⼿机--------Email-------------通讯地址\n");printf("====================================================================\n"); printf("=%s=\t\t",p1->name);printf("=%s=\t\t",p1->work);printf("=%s=\t\t",p1->handset);printf("=%s=\n",p1->address);printf("====================================================================\n"); }p1 = p1->next;}if(m == 0){printf("此⼈不在通讯录中!\n");}return head;}//对通讯录进⾏排序操作address_List *Sort(address_List *head){address_List *p1,*p2;int i,j;typedef struct _Address_List1{char name[30]; //名字char work[30]; //职业char handset[20]; //⼿机号码char email[30]; //电⼦邮件char address[30]; //地址}address_List1;address_List1 Sort[200];address_List1 temp;if(head == NULL){printf("通讯录为空,⽆法排序!\n");return head;}p1 = head;for(i = 0;i < n,p1 != NULL; i++){strcpy(Sort[i].name,p1->name);strcpy(Sort[i].work,p1->work);strcpy(Sort[i].handset,p1->handset);strcpy(Sort[i].email,p1->email);strcpy(Sort[i].address,p1->address);p2 = p1;p1 = p1->next;}head = Release(head);for(j = 0; j < n-1; j++){for(i = j+1; i < n; i++){if(strcmp(Sort[i].name,Sort[j].name) < 0){Sort[i] = temp;temp = Sort[j];Sort[j] = temp;}}}p1 = (address_List *)malloc(LEN);p2 = p1;strcpy(p1->name,Sort[0].name);strcpy(p1->work,Sort[0].work);strcpy(p1->handset,Sort[0].handset);strcpy(p1->email,Sort[0].email);strcpy(p1->address,Sort[0].address);head = p1;for(i = 1; i < n; i++){p1 = (address_List *)malloc(LEN);strcpy(p1->name,Sort[i].name);strcpy(p1->work,Sort[i].work);strcpy(p1->handset,Sort[i].handset);strcpy(p1->email,Sort[i].email);strcpy(p1->address,Sort[i].address);p2->next = p1;p2 = p1;}p2->next = NULL;printf("按姓名排序后的结果是:\n");print(head);return head;}address_List *Search_name(address_List *head){address_List *p1,*p2;int m;char name[30];if(head == NULL){printf("通讯录为空,⽆法查找!\n");return head;}p1 = head;printf("**************************\n");printf("****请输⼊要查找的姓名:**\n");printf("**************************\n");m = 0;gets(name);while(p1 != NULL){while(strcmp(p1->name,name) != 0 && (p1->next != NULL)){p2 = p1;p1 = p1->next;}if(strcmp(p1->name,name) == 0){m++;printf("你查找的内容是:\n");printf("++++++++++++++++++++++++++++++++\n");printf("++ %s\t%s\t%s\t%s\t%s ++",p1->name,p1->work,p1->handset,p1->email,p1->address); printf("++++++++++++++++++++++++++++++++\n");}p1 = p1->next;if(m == 0){printf("你查找的姓名不在通讯录中!\n");}break;}return head;}//释放整个通讯录address_List *Release(address_List *head){address_List *p;while(head != NULL){p = head;head = head->next;free(p);}return head;}//保存(以⽂件的形式保存)void save(address_List *head){FILE *fp;address_List *p;char Filename[30]; //保存后的⽂件名if(head ==NULL){printf("待保存的通讯录为空,⽆法保存!\n");return ;}printf("请输⼊保存后的⽂件名:");gets(Filename);fp = fopen("Filename.txt","w");if(fp == NULL){printf("⽆法打开⽂件!\n");return ;}p = head;fprintf(fp,"姓名\t职业\t⼿机\tEmail\t地址\n");for(;p != NULL;){fprintf(fp,"姓名\t职业\t⼿机\tEmail\t地址",p->name,p->work,p->handset,p->email,p->address);p = p->next;}printf("保存完毕!\n");}//⽂件读出函数address_List *Load(address_List *head){FILE *fp;char Filename[30];address_List *p1,*p2;printf("请输⼊要输出的⽂件名:");gets(Filename);fp = fopen("Filename.txt","r");if(fp == NULL){printf("此通讯录不存在,⽆法输出!\n");return head;}else{head = Release(head);}p1 = (address_List *)malloc(LEN);fscanf(fp,"%s%s%s%s%s",p1->name,p1->work,p1->handset,p1->email,p1->address);if(feof(fp) != 0){printf("⽂件为空,⽆法打开!\n");return head;}else{rewind(fp);p2 = p1;head = p1;n = 0;while(feof(fp) == 0){fscanf(fp,"%s%s%s%s%s",p1->name,p1->work,p1->handset,p1->email,p1->address);if(feof(fp) != 0){break;}p2->next = p1;p2 = p1;p1 = (address_List *)malloc(LEN);n = n+1;}p2->next = NULL;p1 = head;head = head->next;n = n-1;free(p1);print(head);printf("打开完毕!\n");return head;}fclose(fp);}//菜单选择函数address_List *menu(address_List *head){char num[10];while(1){printf("*******************************\n");printf("*****1. 姓名查找 **********\n");printf("*****2. 单个显⽰ **********\n");printf("*****3. 增加 **********\n");printf("*****4. 退出 **********\n");printf("*******************************\n");printf("请输⼊你选择的操作:");gets(num);switch(*num){case'1':{head = Search_name(head);print(head);}break;case'2':{head = display(head);break;case'3':{head = insert(head);print(head);}break;case'4':return head;default:printf("操作有误,此项不存在!\n");break;}if(strcmp(num,"6") == 0){break;}}return head;}//主函数int main(void){address_List *head = NULL;char num[10];printf("*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*\n"); printf("*=*=*=*=*=*=*= 程序说明 *=*=*=*=*=*=*\n");printf("*=*=*=*=*=*=*= 请及时保存创建完毕的通讯录内容 *=*=*=*=*=*=*\n");printf("*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*\n"); while(1){printf("*******************************\n");printf("****** 1. 创建通讯录 *******\n");printf("****** 2. 按名字排序 *******\n");printf("****** 3. 综合操作 *******\n");printf("****** 4. 保存 *******\n");printf("****** 5. 打开 *******\n");printf("****** 6. 删除 *******\n");printf("****** 7. 退出 *******\n");printf("*******************************\n");printf("请输⼊你选择的操作:");gets(num);switch(*num){case'1':{if(head == NULL){head = Create();print(head);}else{head = Release(head);head = Create();print(head);}}break;case'2':{head = Sort(head);}break;case'3':{head = menu(head);}break;case'4':{save(head);print(head);}break;case'5':{head = Load(head);}break;case'6':{print(head);}break;case'7':{head = Release(head);}break;default:{printf("操作有误,此项不存在!\n"); }break;}if(strcmp(num,"7") == 0){break;}}return0;}。

(完整版)c语言通讯录管理系统毕业课程设计

(完整版)c语言通讯录管理系统毕业课程设计

计算机科学与技术学院课程设计成绩单课程名称:数据结构课程设计姓名胡咏性别女学号班级电本1302班电话综合成绩成绩等级程序运行情况(占总成绩20%)□能正确运行□基本能正确运行□能运行但结果不完善(20分)(15分)(10分)程序功能完善程度(占总成绩10%)□完善□基本完善□不完善(10分)(8分)(5分)程序结构的合理性(占总成绩10%)□合理□基本合理□不太合理(10分)(8分)(5分)对问题的答辩情况(占总成绩40%)□概念正确有创新(40分)□能正确回答所有问题(35分)□基本能正确回答(30分)□部分问题回答概念不清晰(20分)学生的工作态度与独立工作能力(占总成绩10%)□工作态度认真能独立完成任务(10分)□工作态度基本认真,独立性尚可(8分)□工作态度和独立性较差(5分)设计报告的规范性(占总成绩10%)□符合规范□基本符合规范□规范性较差(10分)(8分)(5分)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、设计合适的数据结构存储朋友、分组信息,将friend.txt与group.txt中的内容导入其中。

记录包括:编号,姓名,性别,生日,电话号码1,电话号码2,电话号码3,住址与分组。

2、能实现插入、删除、修改和查询操作。

其中查询可按姓名,拼音或电话查询。

3、能实现多条件查询。

4、最后把系统中的数据保存回相应的文件中。

二、解题思路根据题目要求,1、键盘式选择菜单实现功能选择。

2、通讯录数据以文本文件存储,故应提供文件的输入输出等操作。

将保存在txt 文件中的数据读取出来并设计合适的链表(有头结点的单链表)用来存储数据。

3、利用链表进行通讯录记录的插入,查找,修改,删除等操作。

4、查找可通过姓名,拼音电话号码进行查找。

5、修改和删除均建立在查找的基础之上。

通讯录管理系统设计与实现

通讯录管理系统设计与实现

1引言通讯录是用来记载、查询联系人通讯信息的工具。

电子通讯录已成为手机、电子词典等电子设备中不可缺少的工具软件。

通讯录管理系统能有效地管理通讯录相关信息,包括输入、查询、添加、修改、删除等功能,该软件给用户提供了一个简单的人机界面,用户可以根据提示信进行各种操作。

本次设计使用的编程语言是C语言。

通过设计"通讯录管理系统"使其具有数据输入、修改、删除、添加、显示和查询等功能。

我们可以进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法。

这个设计可以使我们掌握软件设计的基本内容和设计方法;使我们的软件设计的能力得到规范;使我们掌握使用各种计算机资料和有关参考资料,提高我们进行程序设计的基本能力。

2问题分析本题目主要涉及线性表的基本操作。

通讯录中的记录通常按记载顺序先后有序,因此选用线性表;如果考虑到很少删除联系人,并且新增联系人又添加在表尾,则可采用顺序表;但是如果考虑到在任何位置插入或删除操作,因涉及经常性的插入和删除,则应优先考虑采用链表。

通过上述分析,我选择了单链表存储结构,通讯录存储结构如下struct record{char name[20];char phonenum[20];char type[20];char email[20];}student[50];struct slnode{record date;struct slnode *next;struct slnode *prior;};typedef slnode * linklist;linklist l;通讯录中需要有查询功能、增加功能、删除功能和修改功能,所以要建立具有这些功能的子函数,对程序实现模块化。

这其中要用到对链表的删除、插入等知识。

删除时用一结构体指针指向链表的第一个结点,检查该节点的值是否等于输入的要删除的,若相等就删除,不相等则后移指针,直至表尾。

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

C通讯录管理系统的设计与实现The latest revision on November 22, 2020目录通讯录的设计与实现摘要随着互联网的不断发展,互联网对我们生活产生的影响越来越大。

在日常的生活中,我们需要接触很多不同的人,如何运用互联网技术实现朋友圈通讯录的管理呢这是我们日常生活中经常要面临的问题。

本次毕业设计中设计的通讯录管理系统既可以实现对通讯录进行管理,在本地进行通讯录的增加、修改、删除、更新等操作。

本次设计的通讯录管理系统主要是了解通讯录管理系统的业务逻辑,熟悉通讯录管理系统的实现方式,模拟了真实的通讯录管理软件,为后续相关内容的学习打下了坚实的基础。

通讯录管理系统是一个专门针对少用户的实用系统,它方便了大家对众多信息的储存和快速查询的功能,大大减少了查找过程的时间,是一个比较实用的通讯录管理系统,。

对我们后续学习移动端的通讯录管理也会有很大的帮助。

本设计使用的计算机语言是C++,C++语言是在C语言的基础上作了进一步的强化。

C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。

它的应用范围广泛,具备很强的数据处理能力。

作为C语言家族的一种,C++也具备了C 语言所具有的优点,并对其进行了优化封装,是开发者更容易操作运用,所以本次课程设计采用了C++作为系统的开发语言。

本通讯录管理系统的主要功能有:建立通讯录的链表、插入通讯录信息、查询通讯录信息、删除通讯录信息,输出通讯录信息,保存到通讯录信息。

采用的是面向过程的方法,封装函数功能,调用各个功能函数来实现系统的各个功能。

关键词通讯录;链表;类;第一章绪论课题背景随着市场经济的发展和人们生活水平的提高,互联网技术也在不断地取得新的成果,近些年移动通讯软件层出不穷,人与人之间的联系越来越便捷,这也使得同时与许多人保持联系成为生活中不可或缺的一部分,而单纯的依靠人脑已经很难记住所有人的联系方式,使用传统的纸面方式记录联系人信息时,在联系人比较多时查找将非常的困难。

因此,本设计实现的通讯录成为了许多人保持联系方式的首选。

当前在许多软件中都附带了通讯录功能,部分手机及一些手机软件也提供了功能不一的通讯录功能,一定程度上说明了通讯录对我们工作生活的重要性。

目的和意义本毕业设计可以加深对课堂理论学习的理解,增强动手能力,培养了学生合作的能力,为以后的工作学习打下了坚实的基础。

在计算机领域中,信息管理系统是我们在学习和生活中比较常见的系统,通过对通讯录管理系统的业务逻辑进行分析,可以很好的理解信息管理系统的业务逻辑,由于市面上绝大部分的信息管理系统的业务逻辑都存在共性,所以通过通讯录管理系统的设计,可以很好地掌握市面上很多的通讯录管理系统的业务逻辑。

同时,通讯录系统也是计算机理论学习过程中最常见的信息管理系统之一,通过对该系统的设计与实现,也可以很好地锻炼学生的实践能力,以及培养学生的计算机逻辑思维。

本系统最求简洁、实用、方便等一些实用性的功能,新建模块上可以实现多添加;查询模块可以根据姓名、性别和电话号码查询,以方便管理员查询自己想要的信息;删除模块上,管理员可以根据自己不想要的或者过时的信息进行删除,删除方便简洁。

该设计的任务是利用一个简单实用的菜单,通过菜单项进行选择,实现和完成通讯录管理中常用的几个不同的功能。

第二章需求分析范围(1) 标识系统概述软件名称:通讯录系统。

软件功能:该软件可用于通讯录中插入,删除,快速查找,输出通讯信息,保存到文件中。

用户:管理员开发者:2.2 需求概述(1) 系统目标本系统的总体目标是通过该系统的实施,可以对通讯录信息更加有效地进行管理。

系统设计实施过程中,力争做到以下几点:①.具有较高的可靠性和可用性;②. 使用方便,易学易用;③. 系统易于管理维护;(2) 运行环境①设备Pentium4 800MHz或更高主频CPU 512MB以上内存。

②支持程序Microsoft Visual C++ Windows系统 DOS系统③用户的特点最终用户为参加等级考试的学生,要求操作具有便捷易用等特点。

功能需求(1)功能介绍通讯录用户的建立、插入、查询、删除、输出,保存到文件中。

系统功能主要分为以下六个部分:①.查询功能:1)在通讯录的查询模块中,用户可以快速查找自己想要联系的人,查找不支持模糊查询。

2)如能查询到,在最顶端显示,没查询到则不显示信息。

②. 插入功能:1)用户可以对已有的通讯录信息进行添加。

2) 插入信息后,给出提示,用户插入信息成功。

③. 建立通讯信息功能:1) 用户在需要时可以添加信息,当信息需要录入时,根据系统的输入要求填写信息。

2)当添加完毕后,系统会提示建立通讯录信息成功。

④. 删除功能:1). 用户如要删除不需要的信息,可以调出删除功能,在选定后,可以一个或者多个信息进行删除,并更新通讯录信息内容。

2). 在删除信息时要确认都才能删除。

⑤. 保存功能:用户可以根据需要选择保存功能,对数据进行存储。

⑥.输出功能:用户可以对操作后的通讯录信息进行输出,检查通讯录信息。

(2) 系统用例图系统主要部分:管理员的用例图图2-1 系统用例图实体关系图系统用到实体的关系图如下:图2-2 系统E-R图第三章概要设计范围(1) 标识系统概述软件名称:通讯录管理系统。

软件功能:该软件可用于通讯录中插入,删除,快速查找,输出通讯信息,保存到文件中。

用户:管理员开发者:系统结构通讯录管理系统的结构如下图所示图3-1 系统结构图通讯录界面设计通讯录用户的建立、插入、查询、删除、输出,保存到文件中。

系统功能主要分为以下六个部分:(1).查询功能:1)在通讯录的查询模块中,用户可以快速查找自己想要联系的人,查找不支持模糊查询。

2)如能查询到,在最顶端显示,没查询到则不显示信息。

(2). 插入功能:1)用户可以对已有的通讯录信息进行添加。

2) 插入信息后,给出提示,用户插入信息成功。

(3). 建立通讯信息功能:1) 用户在需要时可以添加信息,当信息需要录入时,根据系统的输入要求填写信息。

2)当添加完毕后,系统会提示建立通讯录信息成功。

(4). 删除功能:1). 用户如要删除不需要的信息,可以调出删除功能,在选定后,可以一个或者多个信息进行删除,并更新通讯录信息内容。

2). 在删除信息时要确认都才能删除。

(5). 保存功能:用户可以根据需要选择保存功能,对数据进行存储。

(6).输出功能:用户可以对操作后的通讯录信息进行输出,检查通讯录信息。

第四章系统详细设计范围(1) 标识系统概述软件名称:通讯录管理系统。

软件功能:该软件可用于通讯录中插入,删除,快速查找,输出通讯信息,保存到文件中。

用户:管理员开发者:详细设计说明(1) 各个界面设计通讯录资料有ID、姓名、性别、手机号码、地址。

具体结构如下:struct student{int id;char name[20];char sex[20];char cellphone[20];char address[50];struct student *next;};函数原型:int main()main()函数主要是整个系统的控制端,主要功能是控制整个程序的运行。

从主函数开始调用各相关函数来达到相应的功能,关键代码如下:void main(){struct student *creat();void print(struct student *head);struct student *del(struct student *head);void jiemian(); 立通讯录信息链表※\n";cout<<"\t※ 2.插入通讯录信息※\n";cout<<"\t※ 3.查询通讯录信息※\n";cout<<"\t※ 4.删除通讯录信息※\n";cout<<"\t※ 5.输出通讯录信息※\n";cout<<"\t※ 6.保存到文件※\n";cout<<"\t※ 0.退出通讯录系统※\n";cout<<"\t※------------------------------------------------※\n";}建立通讯信息函数函数原型:struct student *creat()代码如下:struct student *creat(){struct student *head;struct student *p1,*p2;p1=p2=(struct student *)malloc(LEN); oc","wb");程序设计(第三版). 北京: 清华大学出版社,2005[2]严蔚敏着.吴伟民.数据结构(C语言版). 北京: 清华大学出版社,2007[3]谭浩强着.C++程序设计. 北京:清华大学出版社,。

相关文档
最新文档