C语言---通讯录系统

189 阅读9分钟

模块要求:

模块1——主函数main():根据选单的选项调用各函数,并完成相应的功能。

模块2——Menu()的功能是:提示选单。

模块3——Quit()的功能是:退出选单。

模块4——Create()的功能是:创建新的通讯录。

模块5——Add()的功能是:在通讯录的末尾,写入新的信息,并返回选单。

模块6——Find()的功能是:查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。

模块7——Alter()的功能是:修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。

模块8——Delete()的功能是:删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。

模块9——List()的功能是:显示通讯录中的所有记录。;

该通讯录系统出现的模块如上。

设计要求:

1: 每条信息至包含:姓名(NAME )、性别(GENDER)、电话(TEL)、城市(CITY)邮编(EIP)几项。

2: 作为一个完整的系统,应具有友好的界面和较强的容错能力。

正文:

1:Create函数部分:

当选择此函数部分时,创建一个空白的文本文档。

void Create() {
    system("cls");        //清屏
    FILE* fp;
    char filename[20];
    printf("输入要创建的的文件名:");
    scanf("\t%s", filename);
    if ((fp = fopen(filename, "r")) == NULL) {
        fp = fopen(filename, " w");
        printf("创建文件成功");
    }
}

2:Add函数部分:

当选择此函数部分时,首先是选择你要把联系人信息添加到哪个文件中,选择完成后再进行联系人信息的输入。

void Add()
{
    system("cls");
    FILE* fp = NULL; //定义文件指针   
    char filename[20];
    printf("输入要添加信息的文件名:");
    scanf("\t%s", filename);
    system("cls");
    fp = fopen(filename, "a");//以追加的方式打开文件
    if (fp == NULL)
    {
        printf("\n出现未知错误!按任意键退出.....\n");
        exit(0);
    }

    char name[10]; //姓名
    char gender[20];//性别
    char tel[15];   // 手机号
    char city[10]; //所属地
    char eip[10];   //邮编
    char ch;  //键盘输入选择
    system("cls"); //清屏    
    printf("你正在添加通讯录联系人信息,请根据提示输入信息。\n");
    while (1)     //进入循环体,直到接收到信息跳出循环
    {
        printf("请输入姓名:");
        scanf("%s", name);
        printf("请输入性别:");
        scanf("%s", gender);
        printf("请输入联系电话:");
        scanf("%s", tel);
        printf("请输入所属地:");
        scanf("%s", city);
        printf("请输入邮编:");
        scanf("%s", eip);

        //缓冲区保存到文件
        fprintf(fp, "%s  %s  %s  %s  %s  \n", name, gender, tel, city, eip);

        do // 接收字符判断是否继续录入联系人信息
        {
            printf("是否继续录入?请选择(Y/N)");
            getchar();   //接收:回车键
            scanf("%c", &ch);

        } while ((ch != 'Y') && (ch != 'y') && (ch != 'n') && (ch != 'N'));

        if ((ch == 'n') || (ch == 'N'))
        {
            fclose(fp);  //如果用户输入N则保存并退出程序
            break;
        }
    }
}

3:Alter函数部分:

当选择此函数部分时,首先是选择你要修改的联系人信息在哪个文件中,选择完成后再进行联系人信息的修改。

void Alter()
//    先将硬盘文件中数据保存到内存缓冲区中,找到要修改的用户信息,修改后重新写入文档
{
    system("cls");        //清屏
    people peopleI[100];//建立结构体数组
    int number = 0, sign = 0, i = 1, a, test;
    char name[10], ch;
    char gender[10];//性别
    char tel[15]; // 手机号
    char city[10]; //所属地
    char eip[10];//邮编
    FILE* fp = NULL;  //文件指针
    char filename[20];
    printf("输入要修改信息的文件名:");
    scanf("\t%s", filename);
    system("cls");
    printf("你正在修改通讯录联系人信息,请根据提示输入信息。\n");
    fp = fopen(filename, "r+");     //以读写的方式打开文件
    if (fp == NULL)    // 错误检测
    {
        printf("文件打开失败!请先添加联系人信息!\n");
        return;

    }

    printf("请输入要修改的联系人姓名:");
    scanf("%s", name);
    while (!feof(fp))  //检测流上的文件结束符,如果文件结束,则返回非0值,否则返回0
    {
        fscanf(fp, "%s %s %s %s %s", peopleI[i].name, peopleI[i].gender, peopleI[i].tel, peopleI[i].city, peopleI[i].eip);
        i++;     //记录行的个数
    }

    printf("\n");
    i--;
    test = i;  //保存数据的行数
    for (; i >= 0; i--)
    {
        a = strcmp(name, peopleI[i].name);  //比较 输入的用户名  和文件中的用户名
        if (a == 0)
        {
            sign = 1;  //赋值1代表找到该数据
            printf("姓名%s,性别%s,联系电话%s,所属地%s,邮编%s\n", peopleI[i].name, peopleI[i].gender, peopleI[i].tel, peopleI[i].city, peopleI[i].eip);
            do   //选择
            {
                printf("你确定要修改该联系人的信息吗?(Y/N):");
                getchar();
                scanf("%c", &ch);

            } while ((ch != 'Y') && (ch != 'y') && (ch != 'n') && (ch != 'N'));
            if ((ch == 'y') || (ch == 'Y'))  //如果选y则录入信息
            {
                printf("请输入姓名:");
                scanf("%s", peopleI[i].name);
                printf("请输入性别:");
                scanf("%s", peopleI[i].gender);
                printf("请输入联系电话:");
                scanf("%s", peopleI[i].tel);
                printf("请输入所属地:");
                scanf("%s", peopleI[i].city);
                printf("请输入邮编:");
                scanf("%s", peopleI[i].eip);
                printf("修改成功!");
                fclose(fp);  //关闭文件
                fp = fopen(filename, "w");
                for (i = 1; i < test; i++) //将内存中修改过的信息重新写入文件
                {
                    fprintf(fp, "%s %s %s %s %s\n", peopleI[i].name, peopleI[i].gender, peopleI[i].tel, peopleI[i].city, peopleI[i].eip);
                }
                fclose(fp);
                break; //跳出for循环
            }
            else  //假如不修改信息,将所有数据再次写入文件
            {

                fclose(fp);
                break;
            }
        }
    }
    if (sign == 0)
    {
        printf("没找到该用户!\n请按任意键继续....");
        getchar();
    }
}

4:Delete函数部分:

当选择此函数部分时,首先是选择你要删除的联系人信息在哪个文件中,选择完成后再进行联系人信息的删除。

void Delete()
{
    //  先将硬盘文件中数据保存到内存缓冲区中,找到要删除的用户信息,删除后重新写入文档
    system("cls");  //清屏
    people peopleI[100];//建立结构体数组
    int number = 0, len = 0, sign = 0, i = 1, a, test, j;
    char name[10], ch;
    FILE* fp = NULL;  //文件指针
    char filename[20];
    printf("输入要删除信息的文件名:");
    scanf("\t%s", filename);
    system("cls");
    printf("你正在删除通讯录联系人信息,请根据提示输入信息。\n");
    fp = fopen(filename, "r");

    if (fp == NULL)
    {
        printf("未找到文件!");
        return;    //返回main函数
    }
    printf("请输入要删除的用户姓名:");
    scanf("%s", name);
    while (!feof(fp))  //检测流上的文件结束符,如果文件结束,则返回非0值,否则返回0
    {        
        fscanf(fp, "%s %s %s %s %s", peopleI[i].name, peopleI[i].gender, peopleI[i].tel, peopleI[i].city, peopleI[i].eip);
        i++;
    }
    ///------------------------------------    
    fclose(fp);  //保存文件 

    printf("\n");
    i--;
    test = i;  //保存行数
    for (; i >= 0; i--)
    {
        a = strcmp(name, peopleI[i].name);  //比较输入的用户名和文件中的用户名
        if (a == 0)   //找到相应位置   
        {
            sign = 1;  // 标志是否找到数据
            printf("姓名%s,性别%s,联系电话%s,所属地%s,邮编%s\n", peopleI[i].name, peopleI[i].gender, peopleI[i].tel, peopleI[i].city, peopleI[i].eip);//显示出要修改的信息
                printf("你确定要删除该用户的信息吗?(Y/N):");
                getchar();
                scanf("%c", &ch);

            if ((ch == 'y') || (ch == 'Y'))  
            {
                printf("删除成功!");
                fp = fopen(filename, "w");  //以写的方式打开,源文件被清除
                for (j = 1; j < test; j++)  //重新写入文件  
                {
                    if (j == i) // 不写入第i个数据
                    {
                        //操作为空 
                    }
                    else //否则 写入文件
                        fprintf(fp, "%s %s %s %s %s\n", peopleI[j].name, peopleI[j].gender, peopleI[j].tel, peopleI[j].city, peopleI[j].eip);
                }
                fclose(fp);  //关闭文件
            }
            else if((ch == 'n') || (ch == 'N')) //假如不修改信息,将所有数据再次写入文件
            {
                fp = fopen(filename, "w");  //以写的方式打开,源文件被清除
                for (i = 1; i < test; i++) //将内存中修改过的信息 重新写入文件
                {
                    fprintf(fp, "%s %s %s %s %s\n", peopleI[i].name, peopleI[i].gender, peopleI[i].tel, peopleI[i].city, peopleI[i].eip);
                }
                fclose(fp); break;
            }
        }
    }
    if (sign == 0)   //判断为未找到联系人
    {
        printf("没找到该用户!\n请按回车键返回菜单选项.....");
        getchar();
    }
}

5:Find函数部分

当选择此函数部分时,首先是选择你要查询的联系人信息在哪个文件中,选择完成后再进行联系人信息的查询。(此处是按照姓名查询的方式查找联系人)

void Find()
//    先将硬盘文件中数据保存到内存缓冲区中,找到要用户信息,修改后重新写入文档
{
    system("cls");        //清屏
    people peopleI[100];//建立结构体数组
    int number = 0, sign = 0, i = 1, test;
    int p;
    char name[10];
    FILE* fp = NULL;  //文件指针
    char filename[20];
    printf("输入要添加信息的文件名:");
    scanf("\t%s", filename);
    system("cls");
    printf("你正在使用按姓名查找功能。\n");
    fp = fopen(filename, "r");     //以读写的方式打开文件
    if (fp == NULL)  //错误检测
    {
        printf("文件打开失败!请先添加用户信息!\n");
        return;
        //    exit(0);
    }
    printf("请输入要查询的姓名:");
    scanf("%s", name);
    while (!feof(fp))  //检测流上的文件结束符,如果文件结束,则返回非0值,否则返回0
    {
        fscanf(fp, "%s %s %s %s %s", peopleI[i].name, peopleI[i].gender, peopleI[i].tel, peopleI[i].city, peopleI[i].eip);
        i++;     //记录行的个数
    }
    printf("\n");
    i--;
    test = i;  //保存数据的行数
    for (; i >= 0; i--)
    {
        //比较输入的姓名和文件中的姓名
        p = strcmp(name, peopleI[i].name);
        if (p == 0)
        {
            sign = 1;  //赋值1代表找到该数据
            printf("姓名%s,性别%s,联系电话%s,所属地%s,邮编%s\n", peopleI[i].name, peopleI[i].gender, peopleI[i].tel, peopleI[i].city, peopleI[i].eip);
            printf("\n");
            fclose(fp);  //关闭文件
        }
        else  //若没有找到信息就将所有数据再次写入文件
        {
            fclose(fp);
        }
    }
    if (sign == 0)
    {
        printf("没找到该联系人信息!\n请按任意键继续....");
        getchar();
    }
}

6:List函数部分

当选择此函数部分时,你将要选择你所要浏览的是哪个文件,然后由fscanf读取文件内容,最后由printf输出在显示器上。

void List() {
    system("cls");        //清屏
    people peopleI[100];//建立结构体数组
    FILE* fp;
    int i;
    char filename[20];
    printf("你正在使用浏览功能。\n");
    printf("输入要读入的文件名:");
    scanf("\t%s", filename);
    if ((fp = fopen(filename, "r")) == NULL)
    {
        printf("找不到%s文件!\n", filename);
        system("pause");
        exit(0);
    } 
    for (i = 0; i < 100 && !feof(fp); i++)
    {
        fscanf(fp, "%s %s %s %s %s \n", peopleI[i].name, peopleI[i].gender, peopleI[i].tel, peopleI[i].city, peopleI[i].eip);
        printf("姓名%s,性别%s,联系电话%s,所属地%s,邮编%s\n", peopleI[i].name, peopleI[i].gender, peopleI[i].tel, peopleI[i].city, peopleI[i].eip);

    }
    fclose(fp);
    printf("读取成功,文件%s中的所有信息已经读入!\n", filename);
}

完整代码如下:

#define _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
#include<windows.h>
#include<time.h>

typedef struct people
{
    char name[10]; //姓名
    char gender[20];//性别
    char tel[15];   // 手机号
    char city[10]; //所属地
    char eip[10];   //邮编

}people;  //定义别名people

//函数模块定义
void Menu();//进入菜单
void Add(); //联系人信息添加
void Alter();//修改联系人信息
void Delete(); //删除联系人信息
void Find();  //联系人信息查找
void List();//浏览联系人信息
void Create();//创建新的联系人列表

//=======================================================================
//进入菜单实现
void Menu()
{
    int i;
    system("date /T");//日期
    system("time /T");//时间
    system("color 0a");//黑底绿字
    //--------------------------------------------------------------------
    printf("\n");
    for (i = 0; i < 75; i++)   //数字用来  控制 上方 = 数量 
    {
        printf("=");
    }
    printf("\n");
    for (i = 0; i < 30; i++)
    {
        printf(" ");
    }
    printf("欢迎进入通讯录管理系统");
    for (i = 0; i < 30; i++)
    {
        printf(" ");
    }
    printf("\n");
    for (i = 0; i < 75; i++)
    {
        printf("=");
    }
    //实现上方欢迎界面
//--------------------------------------------------------------------
    printf("\n\n\n");
    for (i = 0; i < 33; i++)                          //以下实现菜单界面功能选择
    {
        printf(" ");
    }
    printf("请选择以下功能:\n");
    for (i = 0; i < 33; i++)
    {
        printf(" ");
    }
    printf("1、添加联系人通讯录\n");
    for (i = 0; i < 33; i++)
    {
        printf(" ");
    }
    printf("2、修改联系人通讯录\n");
    for (i = 0; i < 33; i++)
    {
        printf(" ");
    }
    printf("3、删除联系人通讯录\n");

    for (i = 0; i < 33; i++)
    {
        printf(" ");
    }
    printf("4、查找联系人信息\n");
    for (i = 0; i < 33; i++)
    {
        printf(" ");
    }
    printf("5、浏览联系人信息\n");
    for (i = 0; i < 33; i++)
    {
        printf(" ");
    }
    printf("6、创建新的联系人列表\n");
    for (i = 0; i < 33; i++)
    {
        printf(" ");
    }
    printf("7、退出系统");
    printf("\n\n");
    for (i = 0; i < 75; i++)   //数字控制上方 = 的数量 
    {
        printf("=");
    }
    printf("\n\n");
    for (i = 0; i < 33; i++)
    {
        printf(" ");
    }
    printf("请选择:");
    //实现菜单
}

//=======================================================================
//添加联系人信息
void Add()
{
    system("cls");
    FILE* fp = NULL; //定义文件指针   
    char filename[20];
    printf("输入要添加信息的文件名:");
    scanf("\t%s", filename);
    system("cls");
    fp = fopen(filename, "a");//以追加的方式打开文件
    if (fp == NULL)
    {
        printf("\n出现未知错误!按任意键退出.....\n");
        exit(0);
    }

    char name[10]; //姓名
    char gender[20];//性别
    char tel[15];   // 手机号
    char city[10]; //所属地
    char eip[10];   //邮编
    char ch;  //键盘输入选择
    system("cls"); //清屏    
    printf("你正在添加通讯录联系人信息,请根据提示输入信息。\n");
    while (1)     //进入循环体,直到接收到信息跳出循环
    {
        printf("请输入姓名:");
        scanf("%s", name);
        printf("请输入性别:");
        scanf("%s", gender);
        printf("请输入联系电话:");
        scanf("%s", tel);
        printf("请输入所属地:");
        scanf("%s", city);
        printf("请输入邮编:");
        scanf("%s", eip);

        //缓冲区保存到文件
        fprintf(fp, "%s  %s  %s  %s  %s  \n", name, gender, tel, city, eip);

        do // 接收字符判断是否继续录入联系人信息
        {
            printf("是否继续录入?请选择(Y/N)");
            getchar();   //接收:回车键
            scanf("%c", &ch);

        } while ((ch != 'Y') && (ch != 'y') && (ch != 'n') && (ch != 'N'));

        if ((ch == 'n') || (ch == 'N'))
        {
            fclose(fp);  //如果用户输入N则保存并退出程序
            break;
        }
    }
}

//=========================================================================
//修改联系人信息
void Alter()
//  先将硬盘文件中数据保存到内存缓冲区中,找到要修改的用户信息,修改后重新写入文档
{
    system("cls");        //清屏
    people peopleI[100];//建立结构体数组
    int number = 0, sign = 0, i = 1, a, test;
    char name[10], ch;
    FILE* fp = NULL;  //文件指针
    char filename[20];
    printf("输入要修改信息的文件名:");
    scanf("\t%s", filename);
    system("cls");
    printf("你正在修改通讯录联系人信息,请根据提示输入信息。\n");
    fp = fopen(filename, "r+");     //以读写的方式打开文件
    if (fp == NULL)    // 错误检测
    {
        printf("文件打开失败!请先添加联系人信息!\n");
        return;

    }

    printf("请输入要修改的联系人姓名:");
    scanf("%s", name);
    while (!feof(fp))  //检测流上的文件结束符,如果文件结束,则返回非0值,否则返回0
    {
        fscanf(fp, "%s %s %s %s %s", peopleI[i].name, peopleI[i].gender, peopleI[i].tel, peopleI[i].city, peopleI[i].eip);
        i++;     //记录行的个数
    }

    printf("\n");
    i--;
    test = i;  //保存数据的行数
    for (; i >= 0; i--)
    {
        a = strcmp(name, peopleI[i].name);  //比较 输入的用户名  和文件中的用户名
        if (a == 0)
        {
            sign = 1;  //赋值1代表找到该数据
            printf("姓名%s,性别%s,联系电话%s,所属地%s,邮编%s\n", peopleI[i].name, peopleI[i].gender, peopleI[i].tel, peopleI[i].city, peopleI[i].eip);
            do   //选择
            {
                printf("你确定要修改该联系人的信息吗?(Y/N):");
                getchar();
                scanf("%c", &ch);

            } while ((ch != 'Y') && (ch != 'y') && (ch != 'n') && (ch != 'N'));
            if ((ch == 'y') || (ch == 'Y'))  //如果选y则录入信息
            {
                printf("请输入姓名:");
                scanf("%s", peopleI[i].name);
                printf("请输入性别:");
                scanf("%s", peopleI[i].gender);
                printf("请输入联系电话:");
                scanf("%s", peopleI[i].tel);
                printf("请输入所属地:");
                scanf("%s", peopleI[i].city);
                printf("请输入邮编:");
                scanf("%s", peopleI[i].eip);
                printf("修改成功!");
                fclose(fp);  //关闭文件
                fp = fopen(filename, "w");
                for (i = 1; i < test; i++) //将内存中修改过的信息重新写入文件
                {
                    fprintf(fp, "%s %s %s %s %s\n", peopleI[i].name, peopleI[i].gender, peopleI[i].tel, peopleI[i].city, peopleI[i].eip);
                }
                fclose(fp);
                break; //跳出for循环
            }
            else  //假如不修改信息,将所有数据再次写入文件
            {

                fclose(fp);
                break;
            }
        }
    }
    if (sign == 0)
    {
        printf("没找到该用户!\n请按任意键继续....");
        getchar();
    }
}

//===============================================================================
//删除联系人信息
void Delete()
{
    // 先将硬盘文件中数据保存到内存缓冲区中,找到要删除的用户信息,删除后重新写入文档
    system("cls");  //清屏
    people peopleI[100];//建立结构体数组
    int number = 0, len = 0, sign = 0, i = 1, a, test, j;
    char name[10], ch;
    FILE* fp = NULL;  //文件指针
    char filename[20];
    printf("输入要删除信息的文件名:");
    scanf("\t%s", filename);
    system("cls");
    printf("你正在删除通讯录联系人信息,请根据提示输入信息。\n");
    fp = fopen(filename, "r");

    if (fp == NULL)
    {
        printf("未找到文件!");
        return;    //返回main函数
    }
    printf("请输入要删除的用户姓名:");
    scanf("%s", name);
    while (!feof(fp))  //检测流上的文件结束符,如果文件结束,则返回非0值,否则返回0
    {        
        fscanf(fp, "%s %s %s %s %s", peopleI[i].name, peopleI[i].gender, peopleI[i].tel, peopleI[i].city, peopleI[i].eip);
        i++;
    }
    ///------------------------------------    
    fclose(fp);  //保存文件 

    printf("\n");
    i--;
    test = i;  //保存行数
    for (; i >= 0; i--)
    {
        a = strcmp(name, peopleI[i].name);  //比较输入的用户名和文件中的用户名
        if (a == 0)   //找到相应位置   
        {
            sign = 1;  // 标志是否找到数据
            printf("姓名%s,性别%s,联系电话%s,所属地%s,邮编%s\n", peopleI[i].name, peopleI[i].gender, peopleI[i].tel, peopleI[i].city, peopleI[i].eip);//显示出要修改的信息
                printf("你确定要删除该用户的信息吗?(Y/N):");
                getchar();
                scanf("%c", &ch);

            if ((ch == 'y') || (ch == 'Y'))  
            {
                printf("删除成功!");
                fp = fopen(filename, "w");  //以写的方式打开,源文件被清除
                for (j = 1; j < test; j++)  //重新写入文件  
                {
                    if (j == i) // 不写入第i个数据
                    {
                        //操作为空 
                    }
                    else //否则 写入文件
                        fprintf(fp, "%s %s %s %s %s\n", peopleI[j].name, peopleI[j].gender, peopleI[j].tel, peopleI[j].city, peopleI[j].eip);
                }
                fclose(fp);  //关闭文件
            }
            else if((ch == 'n') || (ch == 'N')) //假如不修改信息,将所有数据再次写入文件
            {
                fp = fopen(filename, "w");  //以写的方式打开,源文件被清除
                for (i = 1; i < test; i++) //将内存中修改过的信息 重新写入文件
                {
                    fprintf(fp, "%s %s %s %s %s\n", peopleI[i].name, peopleI[i].gender, peopleI[i].tel, peopleI[i].city, peopleI[i].eip);
                }
                fclose(fp); break;
            }
        }
    }
    if (sign == 0)   //判断为未找到联系人
    {
        printf("没找到该用户!\n请按回车键返回菜单选项.....");
        getchar();
    }
}
//===================================================================================
//按照姓名查询联系人信息
void Find()
//    先将硬盘文件中数据保存到内存缓冲区中,找到要用户信息,修改后重新写入文档
{
    system("cls");        //清屏
    people peopleI[100];//建立结构体数组
    int number = 0, sign = 0, i = 1, test;
    int p;
    char name[10];
    FILE* fp = NULL;  //文件指针
    char filename[20];
    printf("输入要查找信息的文件名:");
    scanf("\t%s", filename);
    system("cls");
    printf("你正在使用按姓名查找功能。\n");
    fp = fopen(filename, "r");     //以读写的方式打开文件
    if (fp == NULL)  //错误检测
    {
        printf("文件打开失败!请先添加用户信息!\n");
        return;
        //    exit(0);
    }
    printf("请输入要查询的姓名:");
    scanf("%s", name);
    while (!feof(fp))  //检测流上的文件结束符,如果文件结束,则返回非0值,否则返回0
    {
        fscanf(fp, "%s %s %s %s %s", peopleI[i].name, peopleI[i].gender, peopleI[i].tel, peopleI[i].city, peopleI[i].eip);
        i++;     //记录行的个数
    }
    printf("\n");
    i--;
    test = i;  //保存数据的行数
    for (; i >= 0; i--)
    {
        //比较输入的姓名和文件中的姓名
        p = strcmp(name, peopleI[i].name);
        if (p == 0)
        {
            sign = 1;  //赋值1代表找到该数据
            printf("姓名%s,性别%s,联系电话%s,所属地%s,邮编%s\n", peopleI[i].name, peopleI[i].gender, peopleI[i].tel, peopleI[i].city, peopleI[i].eip);
            printf("\n");
            fclose(fp);  //关闭文件
        }
        else  //若没有找到信息就将所有数据再次写入文件
        {
            fclose(fp);
        }
    }
    if (sign == 0)
    {
        printf("没找到该联系人信息!\n请按任意键继续....");
        getchar();
    }
}
void List() {
    system("cls");        //清屏
    people peopleI[100];//建立结构体数组
    FILE* fp;
    int i;
    char filename[20];
    printf("你正在使用浏览功能。\n");
    printf("输入要读入的文件名:");
    scanf("\t%s", filename);
    if ((fp = fopen(filename, "r")) == NULL)
    {
        printf("找不到%s文件!\n", filename);
        system("pause");
        exit(0);
    } 
    for (i = 0; i < 100 && !feof(fp); i++)
    {
        fscanf(fp, "%s %s %s %s %s \n", peopleI[i].name, peopleI[i].gender, peopleI[i].tel, peopleI[i].city, peopleI[i].eip);
        printf("姓名%s,性别%s,联系电话%s,所属地%s,邮编%s\n", peopleI[i].name, peopleI[i].gender, peopleI[i].tel, peopleI[i].city, peopleI[i].eip);

    }
    fclose(fp);
    printf("读取成功,文件%s中的所有信息已经读入!\n", filename);
}
void Create() {
    system("cls");        //清屏
    FILE* fp;
    char filename[20];
    printf("输入要创建的的文件名:");
    scanf("\t%s", filename);
    if ((fp = fopen(filename, "r")) == NULL) {
        fp = fopen(filename, " w");
        printf("创建文件成功");
    }

int main()
{
    int x;
    while (1)
    {
        system("cls");  //清屏
        Menu();    //调用菜单显示
        scanf("%d", &x);
        switch (x)
        {
        case 1:Add(); break;//添加联系人信息
        case 2:Alter(); break;//修改联系人信息
        case 3:Delete(); break;//删除联系人信息
        case 4:Find(); break;//查找联系人信息
        case 5:List(); break;//浏览联系人信息
        case 6:Create(); break;//创建联系人信息
        case 7:exit(0);  break;//退出系统
        default:printf("\n\t\t\t输入错误! 按回车键返回重新选择");//按键错误反馈
        }
        _getch();
        system("cls");//清屏
    }
    system("pause");
    return 0;
}

注意:本人第一次写文章,希望各位多多包涵。

同时小编在这里祝贺大家新年快乐,学业进步,步步高升。