简单通讯录

简单通讯录

1.  问题提出

编写一个简单的通讯录管理程序。

2.  功能要求

实现通讯录的显示、增、删、改、查功能。

通讯录要保存在文件中,每次启动程序都从文件中读取当前的所有记录,每次退出程序时都更新通讯录。

通讯录中至少含有以下字段:姓名、电话号码、地址(嵌套结构)、邮政编码、email。

3.  知识点及参考资料

知识点:文件、循环、数组、嵌套结构体、链表(选用)、函数等。

参考资料:C语言程序设计(第二版)(教材)。

4.完整代码:

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

// 函数声明
void Shu_Ru();            // 信息录入
void Shou();              // 显示主菜单
void xingmingchaxun();    // 按姓名查询
void dianhuachaxun();     // 按电话查询
void chaxunyemian();      // 信息查询页面
void HeadShow();          // 显示表头
void AllShow();           // 显示所有信息
void xiugai();            // 信息修改
void Dle();               // 信息删除
void xinxixiugai();       // 信息修改或删除操作页面
void weiye();             // 尾页显示

// 定义结构体person,用于存储个人信息
struct person {
    char name[8];     // 名字
    char phone[11];   // 电话
    char addr[100];   // 地址
    char yzbm[10];    // 邮政编码 
    char email[30];   // EMAIL
} pe[100] = {0};      // 初始化结构体数组pe

// 信息录入函数
void Shu_Ru() {
    int c = 0;  // 记录输入的联系人数量
    char r;     // 用于控制是否继续输入
    int i = 0;  
    
    FILE *fp = NULL;
    fp = fopen("d:\\jiandan.txt", "a");  // 以追加模式打开文件
    if (fp == NULL) {
        printf("文件打开失败!\n");
        return;
    }
    
    while (1) {
        // 输入联系人信息
        printf("请输入名字:"); scanf("%s", pe[c].name);
        printf("电话:"); scanf("%s", pe[c].phone);
        printf("地址:"); scanf("%s", pe[c].addr);
        printf("邮政编码:"); scanf("%s", pe[c].yzbm);
        printf("EMAIL:"); scanf("%s", pe[c].email);
        
        // 显示输入的信息
        printf("%s\t%s\t%s\t%s\t%s\n", pe[c].name, pe[c].phone, pe[c].addr, pe[c].yzbm, pe[c].email);
        c++;
        getchar();  // 吸收换行符

        // 判断是否继续输入
        for (;;) {
            printf("按1继续输入,按0结束\n");
            scanf("%c", &r);
            getchar();  // 吸收换行符
            if (r == '1' || r == '0') break;
            printf("输入错误!%c不是1和0,请重新输入......\n", r);
        } 
        
        if (r == '0') break;  // 如果选择结束,退出循环
        
        system("cls");  // 清屏
    }
    
    // 将录入的信息写入文件
    for (i = 0; i < c; i++) {
        fprintf(fp, "%s\t%s\t%s\t%s\t%s\n", pe[i].name, pe[i].phone, pe[i].addr, pe[i].yzbm, pe[i].email);
    }
    fclose(fp);  // 关闭文件
}

// 显示主菜单
void Shou() {
    printf("#################          通讯录管理系统  v1.0   ###################\n");
    printf("########################################
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值