需求
制作一个电子通讯录,通过该通讯录能存入好友ID 号、姓名(英文)、手机号码、家庭住址、公司电话。
模块
主界面:主要显示软件功能。
A)添加好友信息。
B)列表好友信息。(包含排序功能)
C)搜索好友
D)删除好友
添加好友:
用户输入 INSERT 命令后,让用户输入好友信息。添加成功或失败都需要提示用户
列表好友:
用户输入 DISPLAY 命令后,好友信息升序排列。
搜索好友:
用户输入 SEARCH 命令后,让用户输入将要搜索好友姓名查询。如果未搜索到请友好提示。如果搜索到,显示出该好友信息。
删除好友:
用户输入 DELETE 命令后,让用户输入将要删除好友姓名删除,如果存在同名的多个好友,则列表出,所有同名的好友信息,让用户通过输入 ID 号删除。提示用户删除成功。
用c语言实现简单通讯录的一些常用功能
1.添加好友
2.列出好友(排序)
3.搜索好友
4.删除好友
#ifndef __INFORMATION_H__
#define __INFORMATION_H__
#define FALSE -1
#define TRUE 0
#define N 20
typedef struct _Adress
{
int ID; //好友ID
char Name[N]; //姓名(英文)
char Phone_Num[N] ; //手机号
char Home_Address[N]; //家庭住址
char Company_Tell[N]; //公司电话
struct _Adress *next;
}NODE;
typedef NODE * PNode;
//菜单界面
void Menu();
//创建一个链表
PNode create_list();
//添加好友信息( 尾插法插入好友信息)
int Add_Friend(PNode h);
//列出好友(升序排列)
int Friend_Information(PNode h);
//通过输入好友姓名搜索并显示该好友的信息
int Search_Friend(PNode h ,char *name);
//删除好友
int Delete_Friend(PNode h ,char *name);
#endif
#include "information.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
PNode create_list()
{
PNode list = (NODE *)malloc(sizeof(NODE)/sizeof(char));
if(list == NULL)
return NULL;
list->next = NULL;
return list;
}
void Menu()
{
system(“clear”);
printf(“\t**********************************************\n”);
printf(“\t~ 欢迎使用通讯 ~\n”);
printf(“\t~ ~\n”);
printf(“\t~ 1>>>>>添加好友 ~\n”);
printf(“\t~ 2>>>>>列出好友 ~\n”);
printf(“\t~ 3>>>>>搜索好友 ~\n”);
printf(“\t~ 4>>>>>删除好友 ~\n”);
printf(“\t~ 5>>>>>退出 ~\n”);
printf(“\t~ ~\n”);
printf(“\t~ ~\n”);
printf(“\t**********************************************\n”);
printf(“\t~ ~\n”);
printf(“\t~ ~\n”);
printf(“\t提示:请输入对应数字选择相应功能 \n”);
}
//尾插法插入好友信息
int Add_Friend(PNode h)
{
if(h == NULL)
return FALSE;
PNode p = (PNode)malloc(sizeof(NODE)/sizeof(char));
if(p == NULL)
return FALSE;
p->next = NULL;
system("clear");
printf("\t*********添加好友信息*********\n");
printf("\t您的好友的ID:");
scanf("%d",&p->ID);
printf("\n");
printf("\t您的好友的姓名:");
scanf("%s",p->Name);
printf("\n");
printf("\t您的好友的手机号:");
scanf("%s",p->Phone_Num);
printf("\n");
printf("\t您的好友的家庭住址:");
scanf("%s",p->Home_Address);
printf("\n");
printf("\t您的好友的公司电话:");
scanf("%s",p->Company_Tell);
printf("\n");
PNode tmp = h;
while(tmp->next)
{
tmp = tmp->next;
}
tmp->next = p;
return TRUE;
}
//列出好友
int Friend_Information(PNode h)
{
int count = 0;
int tmp;
int i,j;
PNode p = h->next;
printf("***************好友信息****************\n");
if(p == NULL)
{
printf("没有好友。\n");
}
while(p)
{
count++;
p = p->next;
}
p = h->next;
for(i = 0; i < count - 1; i++)
{
for(j = 0; j < count - i - 1; j++)
{
if(p->ID > p->next->ID)
{
tmp = p->ID;
p->ID = p->next->ID;
p->next->ID = tmp;
}
p = p->next;
}
p = h->next;
}
p = h->next;
while(p)
{
printf("****************************************\n");
printf("ID:%d\n 姓名:%s\n 手机号:%s\n 家庭住址:%s\n 公司电话:%s\n",p->ID,p->Name,p->Phone_Num,p->Home_Address,p->Company_Tell);
printf("****************************************\n");
p = p->next;
}
printf("\n");
return TRUE;
}
//搜索好友
int Search_Friend(PNode h,char *name)
{
PNode p = h;
PNode q = NULL;
int flag = 0;
if((p != NULL)&&(p->next != NULL))
{
while(p->next)
{
q = p->next;
if((strcmp(q->Name,name) == 0)&&(q != NULL))
{
flag = 1;
printf("****************************************\n");
printf("该好友信息:\n ID:%d\n 姓名:%s\n 手机号:%s\n 家庭住址:%s\n 公司电话:%s\n",q->ID,q->Name,q->Phone_Num,q->Home_Address,q->Company_Tell);
printf("****************************************\n");
}
p = p->next;
}
}
if(flag != 1)
{
printf("没有该好友的信息\n");
}
return TRUE;
}
//删除好友
int Delete_Friend(PNode h, char *name)
{
int count = 0;
PNode p = h;
PNode q = NULL;
printf("***************删除好友****************\n");
while(p->next) //遍历所有结点
{
q = p->next;
if(strcmp(q->Name, name) == 0)
{
count++;
}
p = p->next;
}
printf("一共有%d个相同名字的信息 \n",count);
p = h;
if(count > 1)
{
Search_Friend(h, name);
//p = h;
int num;
printf("请输入你要删除的ID : ");
scanf("%d",&num);
while((p != NULL)&&(p->next != NULL))
{
q = p->next;
if(q->ID == num)
{
p->next = q->next;
free(q);
printf("删除成功\n");
}
p = p->next;
}
}
if(count == 1)
{
while((p != NULL)&&(p->next != NULL))
{
q = p->next;
if(strcmp(q->Name, name) == 0)
{
p->next = q->next;
free(q);
printf("删除成功\n");
}
p = p->next;
}
}
if(count == 0)
{
printf("删除失败,没有该好友的信息\n");
}
return TRUE;
}
#include<stdio.h>
#include"information.h"
int main()
{
int num;
int num1;
char name[N];
PNode head = create_list();
int j;
while(1)
{
Menu();
scanf(“%d”,&num);
switch(num)
{
case 1: //添加好友
{
Add_Friend(head);
printf("\n");
//for(j = 0;j < 3; j++)
//{
// sleep(1);
// printf(".");
// fflush(stdout);
//}
printf("添加成功\n");
printf("返回主界面请输入 1 :");
scanf("%d",&num1);
if(num1 == 1)
{
break;
}
else
{
printf("输入有误,请重新输入。\n");
scanf("%d",&num1);
break;
}
break;
}
case 2: //列出好友
{
system("clear");
Friend_Information(head);
printf("返回主界面请输入 1:");
scanf("%d",&num1);
if(num1 == 1)
{
break;
}
else
{
printf("输入有误,请重新输入。\n");
scanf("%d",&num1);
break;
}
num = 0;
break;
}
case 3: //查询好友
{
system("clear");
printf("请输入你要查询好友的姓名:");
scanf("%s",name);
Search_Friend(head, name);
printf("返回主界面请输入 1:");
scanf("%d",&num1);
if(num1 == 1)
{
break;
}
else
{
printf("输入有误,请重新输入。\n");
scanf("%d",&num1);
break;
}
num = 0;
break;
}
case 4: //删除好友
{
system("clear");
printf("请输入你要删除好友的姓名:");
scanf("%s",name);
Delete_Friend(head, name);
printf("返回主界面请输入 1:");
scanf("%d",&num1);
if(num1 == 1)
{
break;
}
else
{
printf("输入有误,请重新输入。\n");
scanf("%d",&num1);
break;
}
num = 0;
break;
}
case 5: //退出
{
system ("clear");
return TRUE;
}
default:
{
system("clear");
printf("输入有误!\n");
printf("返回主界面请输入 1:");
scanf("%d",&num1);
if(num1 == 1)
{
break;
}
else
{
printf("输入有误,请重新输入。\n");
scanf("%d",&num1);
break;
}
num = 0;
break;
}
}
}
}
“`