C语言版通讯录

这个博客介绍了如何使用C语言编写一个简单的通讯录系统,包括添加、删除、修改、查看和搜索联系人功能。系统通过文件存储数据,并提供了一个交互式的用户界面。

#include <stdio.h>

#include <string.h>

//宏定义部分

#define NAME_LEN 20

#define ARRAY_LEN 200//定义联系人数组的长度,即通讯录中最多存储多少个联系人


//函数的声明部分

void start();

void drawMainUi();

void addContact();

void showList();

void writeData();

void delContact();

void search();

void editContact();

//全局变量定义部分

int realCount=0;//通讯录中实际保存的联系人个数


//定义联系人结构体

typedef struct{

    char name[NAME_LEN];//姓名

    char gender;        //性别

    int telNum;         //电话

} person;

//定义联系人结构体数组

person contacts[ARRAY_LEN];

int main(int argc, const char * argv[]) {

    start();//初始化

    while (1) {

        drawMainUi();

        //定义变量保存用户输入的序号

        int select;

        scanf("%d",&select);

        switch (select) {

            case 1:

                //添加联系人

                addContact();

                break;

            case 2:

                //删除联系人

                delContact();

                break;

            case 3:

                //修改联系人

                editContact();

                break;

            case 4:

                //查看所有联系人

                showList();

                break;

            case 5:

                //搜索联系人

                search();

                break;

            case 6:

                //退出系统

                printf("确定要退出吗? 确定请输入:y 否则按任意键返回\n");

                char answer;

                scanf(" %c",&answer);

                if (answer=='y') {

                    return 0;

                }else{

                    break;

                }

                

            default:

                printf("输入非法请重新输入\n");

                char ch;

                scanf("%c",&ch); //此处是用来容错的

                break;

        }

        

    }//while到此结束

    

    return 0;

}

/**

 *  初始化函数

 */

void start(){


    //通讯录初始化操作

    FILE *fp=fopen("contact.data", "rb");

    if (fp) {

        fread(&realCount, sizeof(int), 1, fp);

        fread(contacts, sizeof(person), realCount, fp);

        

    }

    fclose(fp);

    //通讯录初始化结束----------------


}

/**

 *  绘制主界面函数

 */

void drawMainUi(){

    printf("**************************\n");

    printf("****** 欢迎使用通讯录 ******\n");

    printf("****** 1、添加联系人  ******\n");

    printf("****** 2、删除联系人  ******\n");

    printf("****** 3、修改联系人  ******\n");

    printf("****** 4、查看所有联系人 ****\n");

    printf("****** 5、搜索联系人  ******\n");

    printf("****** 6、退出系统    ******\n");

    printf("**************************\n\n");

    printf("请输入您要进行的操作(请输入序号)\n");

    

}

/**

 *  添加联系人函数

 */

void addContact(){

    printf("请输入联系人姓名\n");

    scanf("%s",contacts[realCount].name);

    printf("请输入性别,:m :w\n");

    scanf(" %c",&contacts[realCount].gender);

    printf("请输入联系人电话号码\n");

    scanf("%d",&contacts[realCount].telNum);

    printf("添加联系人成功\n");

    //让实际联系人个数+1

    realCount++;

    //更新写入数据

    writeData();

}

/**

 *  查看所有联系人函数

 */

void showList(){

    if (realCount==0) {

        printf("一个联系人都没有,查看个毛线\n");

    }else{

        printf("联系人列表如下\n");

        for (int i=0; i<realCount; i++) {

            if (contacts[i].gender=='m') {

                 printf("

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值