通讯录(c语言顺序表实现)

目录

前言

一、通讯录功能

二、通讯录具体功能代码

1.定义数据元素和通讯录

2.初始化通讯录

3.添加联系人信息

4.查找联系人信息

5.打印联系人信息

6.删除联系人信息

7.修改联系人信息

8.清空联系人信息

总代码


前言

通过学习了顺序表的一些基础操作,如今尝试做一下简单的小项目—通讯录。

一、通讯录功能

  1. 添加联系人信息
  2. 查找联系人信息
  3. 打印联系人信息
  4. 删除联系人信息
  5. 修改联系人信息
  6. 清空联系人信息

二、通讯录具体功能代码

1.定义数据元素和通讯录

代码如下(示例):

//定义数据元素
typedef struct person{
char name[20];//名字
char sex[5];//性别
int age;//年龄
char tale[12];//电话
char addr[50];//地址
}person;
//定义顺序表
typedef struct contact{
person * stu; //用指针指向stu这个结构体,其中包含着联系人数据
int length; //顺序表表长
}contact;

2.初始化通讯录

代码如下(示例):

void InitContact(contact * L){
L->stu=(person *)malloc(sizeof(person)*MAX);
L->length=0;
}

3.添加联系人信息

代码如下(示例):

void AddMessage(contact * L){
printf("请输入添加联系人的个数(最大还能添加%d个)",MAX-L->length);
if(L->length>MAX){
    printf("通讯录已爆满,无法继续添加");
    return;
}
printf("开始添加联系人信息\n");
printf("姓名:>");
scanf("%s",&L->stu[L->length].name);
printf("年龄: >");
scanf("%d",&L->stu[L->length].age);
printf("性别:>");
scanf("%s",&L->stu[L->length].sex);
printf("电话:>");
scanf("%s",&L->stu[L->length].tale);
printf("地址:>");
scanf("%s",&L->stu[L->length].addr);
L->length++;

}

4.查找联系人信息

void CheckMessage(contact * L ){
int i =0;
int flag =0;
char Name[20];
printf("请输入要查询的人名 > ");
scanf("%s",&Name);
for(i=0;i<L->length;i++){
    if(flag=0)
    printf("姓名----------------性别-------------年龄-------------电话-------------地址\n");
    if(strcmp(L->stu[i].name,Name)==0)
    {printf("%-6s %16s %16d %16s %16s \n",L->stu[i].name,L->stu[i].sex,L->stu[i].age,L->stu[i].tale,L->stu[i].addr);
    return;}
    flag=1;
}
printf("查无此人,请确认名字是否输入有误");
}

5.打印联系人信息

void PrintMessage(contact * L){
if(L->length==0)
    printf("当前通讯录木有任何人喔,请选择添加联系人^-^");
int i =0;
int flag =0;
for(i=0;i<L->length;i++){
    if(flag==0)
    printf("姓名----------------性别-------------年龄-------------电话-------------地址\n");
    printf("%-6s %16s %16d %16s %16s \n",L->stu[i].name,L->stu[i].sex,L->stu[i].age,L->stu[i].tale,L->stu[i].addr);
        flag =1;
}
}

6.删除联系人信息

void DeleMessage(contact *L){
int i =0;
char Name[20];
printf("请输入要删除的联系人 > ");
scanf("%s",&Name);
for(i=0;i<L->length;i++){
    if(i==L->length-1&&strcmp(L->stu[i].name,Name)==0){
            L->length--;
            printf("删除成功");
            return;}
    if(strcmp(L->stu[i].name,Name)==0)
        {
            L->stu[i]=L->stu[L->length-1];
            L->length--;
             printf("删除成功");
             return ;
        }
}
        printf("请确认名字是否输入有误");
}

7.修改联系人信息

void ModifyMessage(contact * L){
int i =0;
char Name[20];
printf("开始修改联系人信息\n");
printf("请输入要查询的人名 > ");
scanf("%s",&Name);
for(i=0;i<L->length;i++){
    if(strcmp(L->stu[i].name,Name)==1)
        printf("请确认名字是否输入有误");
for(i=0;i<L->length;i++){
    if(strcmp(L->stu[i].name,Name)==0){
        printf("请输入修改后的姓名:>");
        scanf("%s",&L->stu[i].name);
        printf("请输入修改后的年龄: >");
        scanf("%d",&L->stu[i].age);
        printf("请输入修改后的性别:>");
        scanf("%s",&L->stu[i].sex);
        printf("请输入修改后的电话:>");
        scanf("%s",&L->stu[i].tale);
        printf("请输入修改后的地址:>");
        scanf("%s",&L->stu[i].addr);
        }
    }
}
}

8.清空联系人信息

void CleanMessage(contact * L){
int i =0;
for(i=0;i<L->length;){
    L->length--;
    if(L->length==0)
        break;
}
printf("删除成功");
}

总代码

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#define MAX 100
//定义数据元素
typedef struct person{
char name[20];//名字
char sex[5];//性别
int age;//年龄
char tale[12];//电话
char addr[50];//地址
}person;
//定义顺序表
typedef struct contact{
person * stu; //用指针指向stu这个结构体,其中包含着联系人数据
int length; //顺序表表长
}contact;
//函数声明
void InitContact(contact * L);
void AddMessage(contact * L);
void CheckMessage(contact * L );
void PrintMessage(contact * L);
void DeleMessage(contact *L);
void ModifyMessage(contact * L);
void CleanMessage(contact * L);


//初始化
void InitContact(contact * L){
L->stu=(person *)malloc(sizeof(person)*MAX);
L->length=0;
}

//添加联系人信息
void AddMessage(contact * L){
if(L->length>MAX)
    printf("通讯录已爆满,无法继续添加");
printf("开始添加联系人信息\n");
printf("姓名:>");
scanf("%s",&L->stu[L->length].name);
printf("年龄: >");
scanf("%d",&L->stu[L->length].age);
printf("性别:>");
scanf("%s",&L->stu[L->length].sex);
printf("电话:>");
scanf("%s",&L->stu[L->length].tale);
printf("地址:>");
scanf("%s",&L->stu[L->length].addr);
L->length++;

}

//查找联系人信息
void CheckMessage(contact * L ){
int i =0;
int flag =0;
char Name[20];
printf("请输入要查询的人名 > ");
scanf("%s",&Name);
for(i=0;i<L->length;i++){
    if(flag=0)
    printf("姓名----------------性别-------------年龄-------------电话-------------地址\n");
    if(strcmp(L->stu[i].name,Name)==0)
    {printf("%-6s %16s %16d %16s %16s \n",L->stu[i].name,L->stu[i].sex,L->stu[i].age,L->stu[i].tale,L->stu[i].addr);
    return;}
    flag=1;
}
printf("查无此人,请确认名字是否输入有误");
}

//打印联系人信息
void PrintMessage(contact * L){
if(L->length==0)
    printf("当前通讯录木有任何人喔,请选择添加联系人^-^");
int i =0;
int flag =0;
for(i=0;i<L->length;i++){
    if(flag==0)
    printf("姓名----------------性别-------------年龄-------------电话-------------地址\n");
    printf("%-6s %16s %16d %16s %16s \n",L->stu[i].name,L->stu[i].sex,L->stu[i].age,L->stu[i].tale,L->stu[i].addr);
        flag =1;
}
}

//删除联系人信息
void DeleMessage(contact *L){
int i =0;
char Name[20];
printf("请输入要删除的联系人 > ");
scanf("%s",&Name);
    if(i==L->length-1&&strcmp(L->stu[i].name,Name)==0){
            L->length--;
            printf("删除成功");
            return;}
    if(strcmp(L->stu[i].name,Name)==0)
        {
            L->stu[i]=L->stu[L->length-1];
            L->length--;
             printf("删除成功");
             return ;
        }
        printf("请确认名字是否输入有误");
}

//修改联系人信息
void ModifyMessage(contact * L){
int i =0;
char Name[20];
printf("开始修改联系人信息\n");
printf("请输入要查询的人名 > ");
scanf("%s",&Name);
for(i=0;i<L->length;i++){
    if(strcmp(L->stu[i].name,Name)==1)
        printf("请确认名字是否输入有误");
for(i=0;i<L->length;i++){
    if(strcmp(L->stu[i].name,Name)==0){
        printf("请输入修改后的姓名:>");
        scanf("%s",&L->stu[i].name);
        printf("请输入修改后的年龄: >");
        scanf("%d",&L->stu[i].age);
        printf("请输入修改后的性别:>");
        scanf("%s",&L->stu[i].sex);
        printf("请输入修改后的电话:>");
        scanf("%s",&L->stu[i].tale);
        printf("请输入修改后的地址:>");
        scanf("%s",&L->stu[i].addr);
        }
    }
}
}

//清空联系人信息
void CleanMessage(contact * L){
int i =0;
for(i=0;i<L->length;){
    L->length--;
    if(L->length==0)
        break;
}
printf("删除成功");
}
int main()
{
int input;
contact * L;
InitContact(&L);
do{
printf("\n\n\n\t\t-------------------------------Jenf的通讯录---------------------------------\n");
printf("\t\t                               1.添加联系人\n");
printf("\t\t                               2.查找联系人\n");
printf("\t\t                               3.删除联系人\n");
printf("\t\t                               4.修改联系人\n");
printf("\t\t                               5.清空联系人\n");
printf("\t\t                               6.查看全部联系人\n");
printf("\t\t                               7.退出菜单\n");
printf("\t\t                               请选择<1-7>\n");
scanf("%d",&input);
switch(input){
case 1:
    AddMessage(&L);
    break;
case 2:
    CheckMessage(&L);
    break;
case 3:
    DeleMessage(&L);
    break;
case 4:
    ModifyMessage(&L);
    break;
case 5:
    CleanMessage(&L);
    break;
case 6:
    PrintMessage(&L);
    break;
case 7:
    printf("退出成功");
    break;
default:
    printf("选择有误,请重新选择");
    break;
}
}while(input!=7);

    return 0;
}

  • 5
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值