简易客户信息管理系统(C)

1.需求说明

1.1 主菜单

 1.2 添加客户

 

1.3 修改客户

 

1.4 删除客户

 

1.5 显示客户

 

1.6 退出系统 

2. 代码实现

 

#include <stdio.h>

// 定义一个结构体 表示用户
typedef struct
{
    int id; // 用户编号
    char name[20];
    char gender; // f 或者 m
    int age;
    char phone[20];
    char email[40];

} Customer;

// 定义结构体数组 存储用户信息
Customer customers[100];

// 定义变量 存储能够存储的用户总数(数组最大索引)
int limit_number = 99;
// 定义变量 存储已经记录的用户数量(数组的当前索引)
int customer_count = 0;

// 执行修改
// 参数:编号
// 返回:1 修改成功 0修改失败
int edit(int id)
{
    // 判断编号是否存储
    if (id < 1 || id > customer_count)
    {
        return 0;
    }

    // 获取当前要修改元素的索引
    int index = id - 1;

    // 定义字符数组作为输入缓冲区
    char buffer[40];

    // 修改姓名
    printf("\n修改姓名(%s):", customers[index].name);
    getchar();
    fgets(buffer, sizeof buffer, stdin);
    // 判断用户有没有直接按换行
    if (buffer[0] != '\n')
    {
        // 修改原来的姓名
        sscanf(buffer, "%s", customers[index].name);
    }
    







    // 修改性别
    printf("\n修改性别(%c):", customers[index].gender);
    fgets(buffer, sizeof buffer, stdin);
    // 判断用户没有直接按换行
    if (buffer[0] != '\n')
    {
        // 修改原来的性别
        sscanf(buffer, "%c", &customers[index].gender);
    }

    // 修改年龄
    printf("\n修改年龄(%d):", customers[index].age);
    fgets(buffer, sizeof buffer, stdin);
    // 判断用户没有直接按换行
    if (buffer[0] != '\n')
    {
        // 修改原来的年龄
        sscanf(buffer, "%d", &customers[index].age);
    }

    // 修改手机号
    printf("\n修改手机号(%s):", customers[index].phone);
    fgets(buffer, sizeof buffer, stdin);
    // 判断用户没有直接按换行
    if (buffer[0] != '\n')
    {
        // 修改原来的手机号
        sscanf(buffer, "%s", customers[index].phone);
    }

    // 修改邮箱
    printf("\n修改邮箱(%s):", customers[index].email);
    fgets(buffer, sizeof buffer, stdin);
    // 判断用户没有直接按换行
    if (buffer[0] != '\n')
    {
        // 修改原来的邮箱
        sscanf(buffer, "%s", customers[index].email);
    }

    // 返回
    return 1;
}

// 进入修改界面 获取输入的编号
void editView()
{
    int id; // 存储用户编号
    printf("\n---------------客户修改-----------------");
    printf("\n请输入待修改的客户编号(-1退出):");
    scanf("%d", &id);

    // 判断是否退出
    if (id == -1)
    {
        printf("\n放弃修改!");
        return;
    }

    // 调用执行修改
    if (edit(id))
    {
        printf("\n修改成功!");
    }
    else
    {
        printf("\n修改失败,用户编号不存在!");
    }
}

// 定义函数 实现用户添加
void add()
{
    if (customer_count > limit_number)
    {
        printf("\n用户数量已经超过最大限制");
        return;
    }

    printf("\n----------添加客户----------\n");

    // 设置编号 编号自动设置 依次 递增
    customers[customer_count].id = customer_count + 1;

    // 获取用户输入
    printf("\n姓名:");
    scanf("%s", customers[customer_count].name);

    printf("\n性别(f或m):");
    getchar();
    scanf("%c", &customers[customer_count].gender);

    printf("\n年龄:");
    scanf("%d", &customers[customer_count].age);

    printf("\n手机号:");
    scanf("%s", customers[customer_count].phone);

    printf("\n邮件:");
    scanf("%s", customers[customer_count].email);

    // 当前索引 ++
    customer_count++;
    printf("\n添加完成!");
}

// 定义函数 实现用户列表
void list()
{
    printf("\n----------客户列表----------\n");
    printf("编号\t姓名\t年龄\t性别\t电话\t\t\t邮箱");
    // 循环客户数组
    for (int i = 0; i < customer_count; i++)
    {
        printf("\n%d\t%s\t%d\t%c\t%s\t\t\t%s", customers[i].id, customers[i].name, customers[i].age, customers[i].gender, customers[i].phone, customers[i].email);
    }
}

// 定义函数 实现删除用户
// 执行删除
// 参数 客户编号
// 返回值 删除成功 1  删除失败 0
int delete(int id)
{
    // 判断编号不存在
    if (id < 1 || id > customer_count)
    {
        return 0;
    }

    // 获取被删除元素的索引
    int index = id - 1;
    // 执行删除
    // 让后面的元素依次向前移动
    for (int i = index; i < customer_count - 1; i++)
    {
        customers[i] = customers[i + 1];
        customers[i].id -= i;
    }

    customer_count--;
    return 1;
}

// 删除客户界面 用户输入编号和确认
void deleteView()
{
    int id;      // 获取编号
    char choice; //  获取是否删除
    printf("\n----------------删除客户---------------");
    printf("\n请选择删除客户的编号(-1退出):");
    scanf("%d", &id);

    // 如果-1
    if (id == -1)
    {
        printf("\n 放弃删除");
        return;
    }

    // 确认
    printf("\n确认是否删除(Y/N):");
    getchar();
    scanf("%c", &choice);
    // 判断
    if (choice == 'Y' || choice == 'y')
    {
        // 执行删除
        if (delete (id))
        {
            printf("\n-------------------删除成功!------------------");
        }
        else
        {
            printf("\n删除失败!该用户编号不存在!");
        }
    }
}

// 实现主菜单和退出的函数
void menu()
{
    // 定义变量 控制死循环
    int loop = 1;

    // 死循环
    while (loop)
    {
        printf("\n----------客户信息管理系统----------");
        printf("\n          1 添 加 客 户");
        printf("\n          2 修 改 客 户");
        printf("\n          3 删 除 客 户");
        printf("\n          4 客 户 列 表");
        printf("\n          5 退       出");
        printf("\n          请选择(1-5):");

        // 定义变量 存储选项
        int selection;
        scanf("%d", &selection);

        // 判断
        switch (selection)
        {
        case 1:
            add();
            break;
        case 2:
            editView();
            break;
        case 3:
            deleteView();
            break;
        case 4:
            list();
            break;
        case 5:
            char choose;
            // 直到用户输入Y或者N才结束do while 循环
            do
            {
                printf("请确认是否退出(Y/N):");
                getchar();
                scanf("%c", &choose);
            } while (choose != 'Y' && choose != 'y' && choose != 'N' && choose != 'n');
            // 判断
            if (choose == 'Y' || choose == 'y')
            {
                loop = 0;
                printf("\n退出系统!欢迎下次再来!");
            }
            break;

        default:
            printf("\n请输入正确的选项!");
            break;
        }
    }
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值