C语言编写的电话簿小程序

有创建,添加,删除,显示四个功能

 

 

 

 

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>

int lenth = 1;

typedef struct PhoneBook
{
    char phoneNum[20];
    char name[20];
    struct PhoneBook *next;
}phoneBook;

void Creat(phoneBook **);
void Add(phoneBook **);
void Delete(phoneBook **);
void Display(phoneBook *);

int main()
{
    int chioce;
    phoneBook *head = NULL;
    printf("\n请选择\n");
    printf("1.创建电话簿\n");
    printf("2.添加号码\n");
    printf("3.删除号码\n");
    printf("4.显示电话簿\n");
    printf("5.退出程序\n");
    printf("\n");
    while(1)
    {
        scanf("%d",&chioce);
        switch(chioce)
        {
            case 1:   Creat(&head);          break;
			case 2:   Add(&head);            break;
            case 3:   Delete(&head);         break;
            case 4:   Display(head);        break;
            case 5:   exit(0);                     break;
            default: break;
        }
        printf("\n请选择\n");
        printf("1.创建电话簿\n");
        printf("2.添加号码\n");
        printf("3.删除号码\n");
        printf("4.显示电话簿\n");
        printf("5.退出程序\n");
        printf("\n");
    }
    return 0;
}

void Creat(phoneBook ** head)
{
    *head = (phoneBook *)malloc(sizeof(phoneBook));
    if(*head == NULL)
    {
        printf("分配内存失败,程序自动退出\n");
        exit(0);
    }
    (*head)->next = NULL;
    printf("创建完毕\n\n");
}

void Add(phoneBook ** head)
{
    phoneBook *q, *p;
    int n, i;
    q = (phoneBook *)malloc(sizeof(phoneBook));
    if(q == NULL)
    {
        printf("分配内存失败,程序自动退出\n");
        exit(0);
    }
    q->next = NULL;
    printf("请输入姓名电话号码: ");
    scanf("%s %s", q->name, q->phoneNum);
    printf("\n请输入要添加到电话簿的位置: ");
    scanf("%d",&n);
    while(n > lenth || n <= 0)
    {
        printf("\n无效的输入,请重新输入: ");
        scanf("%d",&n);
    }
    lenth++;
    p = *head;
    for(i = 1; i < n; i++)
    {
        p = p->next;
    }
    q->next = p->next;
    p->next = q;
    printf("\n添加完毕\n\n");
}

void Delete(phoneBook **head)
{
    int n;
    int i;
    phoneBook *p = *head, *q;
    printf("请输入要删除的信息的位置: ");
    scanf("%d",&n);
    while(n > lenth || n <= 0)
    {
        printf("\n无效的输入,请重新输入: ");
        scanf("%d",&n);
    }
    for(i = 1; i < n; i++)
    {
        p = p->next;
    }
    q = p->next;
    p->next = q->next;
    free(q);
    lenth--;
    printf("\n删除完毕\n\n");
}

void Display(phoneBook * head)
{
    phoneBook *q;
    int i = 1;
    if(head->next == NULL)
    {
        printf("电话簿上没有任何信息\n");
        exit(0);
    }
    q = head->next;
    printf("\n  姓名\t\t号码\n");
    while(q != NULL)
    {
        printf("%d. %s\t\t%s\n", i, q->name, q->phoneNum);
        q = q->next;
        i++;
    }
}

  

转载于:https://www.cnblogs.com/genslow/archive/2012/03/19/2405362.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值