大神救救我 手机通讯录 输3之后输个名字就运行不了了

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<assert.h>//用来解决程序终止问题,查阅网上资料得到
#define M 100
#define N1 20
#define N2 30
#define N3 30
char title[100];
void OPEN();//总运行
void menu1();//主目录
void menu2();//查询目录
void refer();//查询页面
void getout();//退出程序
void input();//读取数据
void print();//输出数据 
void refername();//根据姓名查询 
void refernum();//根据学号查询
void referphone();//根据电话号码查询
void modify();//修改数据
void AddData();//添加数据
void Delete();//删除数据
int main()
{
    OPEN();
}
struct linkman
{
    int num;//学号
    char name[N1];//姓名
    char sex;//性别
    char work[N2];//工作单位
    int tele;//电话号码
    char addr[N3];//邮箱地址
}s[M];
struct ITEM
{
    int key;
    int balue;
};
void additem(struct ITEM* itemper)
{
    assert(itemper != NULL);
}
void getout()
{
    printf("\n");
    printf("\n");
    printf("        你已退出程序,欢迎下次使用。        \n");
    printf("\n");
    printf("\n");
}
void menu1()//主菜单
{
    printf("_________________________________\n");
    printf("|       手机通讯录操作系统      |\n");
    printf("|_______________________________|\n");
    printf("|*******************************|\n");
    printf("|**********1.查询信息***********|\n");
    printf("|**********2.修改数据***********|\n");
    printf("|**********3.添加数据***********|\n");
    printf("|**********4.删除数据***********|\n");
    printf("|**********5.统计功能***********|\n");
    printf("|**********6.退出系统***********|\n");
    printf("|*******************************|\n");
    printf("|_______________________________|\n");
}
void menu2()//查询菜单
{
    printf("_________________________________\n");
    printf("|          查询信息菜单         |\n");
    printf("|_______________________________|\n");
    printf("|********1.按姓名查询***********|\n");
    printf("|********2.按学号查询***********|\n");
    printf("|********3.按电话号码查询*******|\n");
    printf("|********4.显示全部信息*********|\n");
    printf("|********5.返回上一级目录*******|\n");
    printf("|*******************************|\n");
    printf("|_______________________________|\n");
}
void OPEN()//主运行
{
    int input;
    do
    {
        menu1();
        printf("\n");
        printf("请选择功能->");
        scanf_s("%d", &input);
        switch (input)
        {
        case 1:refer(); break;
        case 2:modify(); break;
        case 3:AddData(); break;
        case 4:Delete(); break;

        case 6:getout(); additem(NULL); break;
        default:printf("选择错误,请重新选择!\n"); break;
        }
    } while (input);
}
void refer()//查询信息
{
    int Q;
    do
    {
        menu2();
        printf("\n");
        printf("请选择功能->");
        scanf_s("%d", &Q);
        switch (Q)
        {
        case 1:refername(); break;
        case 2:refernum(); break;
        case 3:referphone(); break;
        case 4:print(); break;
        case 5:OPEN(); break;
        default:printf("选择错误,请重新选择!\n");
        }
    } while (Q);
}
void input()//输入数据,查询所有数据
{
    FILE* fp;
    fp = fopen("txl2023.txt", "r");
    if (fp == NULL)
    {
        printf("文件打开失败!");
        exit(0);
    }
    fgets(title, 100, fp);
    int i = 0;
    while (!feof(fp))
    {
        fscanf(fp, "%d%s%c%s%d%s", s[i].num, s[i].name, s[i].sex, s[i].work, s[i].tele, s[i].addr);
        i++;
    }
    fclose(fp);
}
void print()//输出所有数据
{
    int i;
    puts(title);
    for (i = 0; i < M; i++)
    {
        printf("%d %-9s %c %16s %d %16s\n", s[i].num, s[i].name, s[i].sex, s[i].work, s[i].tele, s[i].addr);
    }
}
void refername()//按姓名进行查询
{
    int k = 0, i=0;
    char nam[100];
    printf("请输入你要查找的姓名->");
    scanf_s("%s", nam,100);
    FILE* fp;
    fp = fopen("txl2023.txt", "r");
    if (fp == NULL)
    {
        printf("文件打开失败!");
        exit(0);
    }
    while (!feof(fp))
    {
        fscanf(fp, "%d%s%c%s%s%s", s[i].num, s[i].name, s[i].sex, s[i].work, s[i].tele, s[i].addr);
        if (strcmp(nam, s[i].name) == 0)
        {
            printf("\n已查到该信息,记录为:\n");
            puts(title);
            printf(" % d % -9s % c % 16s % d % 16s\n", s[i].num, s[i].name, s[i].sex, s[i].work, s[i].tele, s[i].addr);
            k = 1;
            break;
        }
        i++;
    }
    if (k = 0)
    {
        printf("\n对不起,查无此人!\n");
    }
    fclose(fp);
}
void refernum()//按学号进行查询
{
    int k = 0, i=0;
    int num;
    printf("请输入你要查找的学号->");
    scanf_s("%d", &num);
    FILE* fp;
    fp = fopen("txl2023.txt", "r");
    if (fp == NULL)
    {
        printf("文件打开失败!");
        exit(0);
    }
    while (!feof(fp))
    {
        fscanf(fp, "%d%s%c%s%d%s", &s[i].num, &s[i].name, &s[i].sex, &s[i].work, &s[i].tele, &s[i].addr);
        if (num == s[i].num)
        {
            printf("\n已查到该信息,记录为:\n");
            puts(title);
            printf(" % d % -9s % c % 16s % d % 16s\n", s[i].num, s[i].name, s[i].sex, s[i].work, s[i].tele, s[i].addr);
            k = 1;
            break;
        }
        i++;
    }
    if (k = 0)
    {
        printf("\n对不起,查无此人!\n");
    }
    fclose(fp);
}
void referphone()//按电话号码进行查询
{
    int k = 0, i=0;
    int tele;
    printf("请输入你要查找的电话号码->");
    scanf_s("%d", &tele);
    FILE* fp;
    fp = fopen("txl2023.txt", "r");
    if (fp == NULL)
    {
        printf("文件打开失败!");
        exit(0);
    }
    while (!feof(fp))
    {
        fscanf(fp, "%d%s%c%s%d%s", s[i].num, s[i].name, s[i].sex, s[i].work, s[i].tele, s[i].addr);
        if (tele == s[i].tele)
        {
            printf("\n已查到该信息,记录为:\n");
            puts(title);
            printf(" % d % -9s % c % 16s % d % 16s\n", s[i].num, s[i].name, s[i].sex, s[i].work, s[i].tele, s[i].addr);
            k = 1;
            break;
        }
        i++;
    }
    if (k = 0)
    {
        printf("\n对不起,查无此人!\n");
    }
    fclose(fp);
}
void modify()//修改数据
{
    int m, k = 0, i = 0;
    char namekey[10];
    printf("请输入你要修改的通讯录姓名->");
    scanf_s("%s", &namekey);
    FILE* fp;
    fp = fopen("txl2023.txt", "r");
    if (fp == NULL)
    {
        printf("文件打开失败!");
    }
    while (!feof(fp))
    {
        fscanf_s(fp, "%d%s%c%s%d%s", s[i].num, s[i].name, s[i].sex, s[i].work, s[i].tele, s[i].addr);
        if (strcmp(namekey, s[i].name) == 0)
        {
            k = 1;
            break;
        }
        i++;
    }
    if (k == 1)
    {
        printf("已经查到该姓名所对应的信息\n");
        puts(title);
        printf(" % d % -9s % c % 16s % d % 16s\n", s[i].num, s[i].name, s[i].sex, s[i].work, s[i].tele, s[i].addr);
        printf("*********************\n");
        printf("******1.确定修改******\n");
        printf("******0.放弃修改******\n");
        printf("*********************\n");
        printf("请选择->");
        scanf_s("%d", &m);
        if (m == 1)
        {
            char num1[20];
            printf("\n请输入你要修改的新姓名信息->");
            scanf_s("%s", num1,20);
            strcpy_s(s[i].name, num1,20);
            int num2;
            printf("\n请输入你要修改的新电话信息->");
            scanf_s("%d", &num2);
            s[i].tele=num2;
            char num3;
            printf("\n请输入你要修改的新性别信息->");
            scanf_s("%c", &num3,1);
            s[i].sex=num3;
            int num4;
            printf("\n请输入你要修改的新学号信息->");
            scanf_s("%d", &num4);
            s[i].num = num4;
            char num6[30];
            printf("\n请输入你要修改的新工作单位信息->");
            scanf_s("%s", num6,30);
            strcpy_s(s[i].work, num6,30);
            char num7[30];
            printf("\n请输入你要修改的新邮箱地址信息->");
            scanf_s("%s", num7,30);
            strcpy_s(s[i].addr, num7,30);

            printf("修改成功\n");
            printf("修改后的通讯录信息如下\n");
            print();
        }
    }
    else
    {
        printf("查无此人,无法修改!");
    }
    fclose(fp);
}
void AddData()//添加数据
{
    int i = 0;
    FILE* fp;
    fp = fopen("txl2023.txt", "r");
    if (fp == NULL)
    {
        printf("文件打开失败!");
    }
    while (!feof(fp))
    {
        fscanf_s(fp, "%d%s%c%s%s%s", s[i].num, s[i].name, s[i].sex, s[i].work, s[i].tele, s[i].addr);
        i++;
    }
    char num1[20];
    printf("\n请输入你要添加的新姓名信息->");
    scanf_s("%s", num1,20);
    strcpy_s(s[i].name, num1,20);
    int num2;
    printf("\n请输入你要添加的新电话信息->");
    scanf_s("%d", &num2);
    s[i].tele=num2;
    char num3;
    printf("\n请输入你要添加的新性别信息->");
    scanf_s("%c", &num3,1);
    s[i].sex=num3;
    int num4;
    printf("\n请输入你要添加的新学号信息->");
    scanf_s("%d", &num4);
    s[i].num=num4;
    char num6[30];
    printf("\n请输入你要添加的新工作单位信息->");
    scanf_s("%s", num6,30);
    strcpy_s(s[i].work, num6,30);
    char num7[30];
    printf("\n请输入你要添加的新邮箱地址信息->");
    scanf_s("%s", num7,30);
    strcpy_s(s[i].addr, num7,30);

    printf("添加成功\n");
    printf("添加后的通讯录信息如下\n");
    print();
    fclose(fp);
}
void Delete()//删除数据
{
    int m, k = 0, i = 0;
    char namekey[20];
    long a = 0;
    printf("请输入你要删除的通讯录姓名->");
    scanf_s("%s", &namekey,20);

    FILE* fp;
    fp = fopen("txl2023.txt", "a");
    if (fp == NULL)
    {
        printf("文件打开失败!");
    }
    while (!feof(fp))
    {
        fscanf_s(fp, "%d%s%c%s%d%s", s[i].num, s[i].name, s[i].sex, s[i].work, s[i].tele, s[i].addr);

        if (strcmp(namekey, s[i].name) == 0)
        {
            k = 1;
            break;
        }
        i++;
    }


    if (k == 1)
    {
        printf("已经查到该姓名所对应的信息\n");
        puts(title);
        printf(" % d % -9s % c % 16s % d % 16s\n", s[i].num, s[i].name, s[i].sex, s[i].work, s[i].tele, s[i].addr);

        printf("*********************\n");
        printf("******1.确定删除******\n");
        printf("******0.放弃删除******\n");
        printf("*********************\n");
        printf("请选择->");
        scanf("%d", &m);
        int n;
        if (m == 1)
        {
            for (n = i; n < M - 1; n++)
            {
                strcpy_s(s[n].name, s[n + 1].name,1); strcpy_s(s[n].work, s[n + 1].work,1); s[n].num=s[n + 1].num;
                s[n].sex=s[n + 1].sex; strcpy_s(s[n].addr, s[n + 1].addr,1); s[n].tele=s[n + 1].tele;
            }
            printf("删除成功\n");
            printf("删除后的通讯录信息如下\n");
            print();
        }
    }
    else
    {
        printf("查无此人,无法修改!");
    }

    fclose(fp);
}
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值