帮运行通讯录程序设计代码

在运行的时候出问题,不知道是代码有问题导致功能运行不了,还是操作问题

img

你这不是运行成功了吗

得把代码贴出来。
整体修改完善如下,供参考:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Student
{
    char  name[20];
    char  sex[4];  // sex[2];
    long long phone; //int long phone;
    char  adress[40];
    int   number;
    char  e_mail[30];
}stu[100];
int N = 0; 

void show()
{
    int  i, j;
    if (N) {
        printf("下面将会显示输入的数据:\n");
        printf("%-6s %-20s %-6s %-12s %-40s %-6s %-30s\n", "序号", 
               "姓名", "性别", "电话", "工作地址", "学号", "E - mail");
        for (i = 0; i < N; i++)
        {
            printf("%-6d %-20s %-6s %-12lld %-40s %-6d %-30s\n", i + 1, stu[i].name, 
                stu[i].sex,stu[i].phone, stu[i].adress, stu[i].number, stu[i].e_mail);
        }
        printf("显示结束\n");
    }
    else
        printf("记录为空!\n");
}

void nameseek()
{
    int  i;
    char d[20];
    printf("请输入要查找学生的名字:");
    scanf("%s", d);
    for (i = 0; i < N; i++)
    {
        if (strcmp(d, stu[i].name) == 0)
        {
            printf("你要查找的学生信息为:\n");
            printf("%-20s %-6s %-12s %-40s %-6s %-30s\n", "姓名", 
                 "性别", "电话", "工作地址", "学号", "E - mail");
            printf("%-20s %-6s %-12lld %-40s %-6d %-30s\n", stu[i].name, 
                stu[i].sex, stu[i].phone, stu[i].adress, stu[i].number, stu[i].e_mail);
            break;
        }
    }
    if (i >= N)
        printf("未找到相关记录!\n");
}
void numberseek()
{
    int  i;
    long long e;
    printf("请输入要查找的电话号码:");
    scanf("%lld", &e);
    for (i = 0; i < N; i++)
    {
        if (e == stu[i].phone)
        {
            printf("你要查找的学生信息为:\n");
            printf("%-20s %-6s %-12s %-40s %-6s %-30s\n", "姓名",
                "性别", "电话", "工作地址", "学号", "E - mail");
            printf("%-20s %-6s %-12lld %-40s %-6d %-30s\n", stu[i].name,
                stu[i].sex, stu[i].phone, stu[i].adress, stu[i].number, stu[i].e_mail);
            break;
        }
    }        
    if (i >= N)
        printf("未找到相关记录!\n");
}

void seek()
{
    int q;
    if (N) {
        do {
            printf("请选择搜索方式:1.按名字查找  2.按电话号码查找  3.退出查询\n");
            printf("请选择查找方式:");
            scanf("%d", &q);
            switch (q)
            {
            case 1:nameseek(); break;
            case 2:numberseek(); break;
            }
        } while (q != 3);
    }
    else
        printf("记录为空!\n");
}

void add()
{
    int i, n = N;
    while (1) {
        printf("姓名  性别  电话 工作地址  学号  E-mail\n");
        scanf("%s%s%lld%s%d%s", stu[n].name, stu[n].sex, 
            &stu[n].phone, stu[n].adress, &stu[n].number, stu[n].e_mail);
        n++;
        do {
            printf("是否继续添加记录:1 是  2 否\n");
            scanf("%d", &i);
        } while (i < 1 || i >2);
        if (i == 2)  break;
    }
    N = n;
}
void sort()
{
    int i, j;
    struct Student temp;
    for (i = N - 1; i > 0; i--)
    {
        for (j = 0; j < i; j++)
        {
            if (strcmp(stu[j].name, stu[j+1].name) > 0) // 按名字升序排序
            {
                temp = stu[j]; stu[j] = stu[j + 1]; stu[j + 1] = temp;
            }
        }
    }
    printf("排序成功\n");
    show();
}
void out()
{
    int i, t;
    if (N) {
        printf("请输入要删除的学生编号:");
        scanf("%d", &t);
        for (i = 0; i < N; i++)
        {
            if (stu[i].number == t)
                break;
        }
        if (i >= N)
            printf("未找到相关记录!\n");
        else {
            for (; i < N - 1; i++)
                stu[i] = stu[i + 1];
            N--;
            printf("删除完毕\n");
        }
    }
    else
        printf("记录为空!\n");
}
void keep()
{
    FILE* fp;
    int   i;
    char filename[50] = "data.txt";
    //printf("请输入要保存的文件名:");
    //scanf("%s", filename);
    if ((fp = fopen(filename, "w")) == NULL)
    {
        printf("文件无法打开\n");
        exit(0);
    }
    fprintf(fp, "序号  姓名  性别  电话号  工作地址  学号  E-mail\n");
    for (i = 0; i < N; i++)
    {
        fprintf(fp, "%d %s %s %lld %s %d %s\n", i + 1, stu[i].name,
            stu[i].sex, stu[i].phone, stu[i].adress, stu[i].number, stu[i].e_mail);
    }
    fclose(fp);
    printf("保存在文件成功!\n");
}

void total()
{
    FILE* fp;
    char  buff[1024];
    int m = 0, i = 0;
    if (N) {
        printf("目前通讯录中共有 %d 名联系人\n", N);
    }
    else {
        if ((fp = fopen("data.txt", "r")) == NULL)
        {
            printf("文件不存在!\n");
            return;
        }
        fgets(buff, sizeof(buff), fp);
        while (1) {
            if (fscanf(fp, "%d %s %s %lld %s %d %s\n", &m, stu[i].name,stu[i].sex, 
                &stu[i].phone, stu[i].adress, &stu[i].number, stu[i].e_mail) != 7)  break;
            i++;
        }
        fclose(fp);
        printf("目前通讯录中共有 %d 名联系人\n", m); // 将统计的个数输出 
        N = i;
    }
}

void menu()
{
    printf("\t开始*\n\n");
    printf("\t 1. 显示通讯录\n");
    printf("\t 2. 查找\n");
    printf("\t 3. 添加通讯录\n");
    printf("\t 4. 按姓名排序\n");
    printf("\t 5. 删除通讯录\n");
    printf("\t 6. 将记录保存在文件\n");
    printf("\t 7. 统计总人数\n");
    printf("\t 8. 结束\n");
    printf("\t***********************************************\n");
    printf("请输入序号:");
}
int main()
{
    int ch, exit = 1;
    while (exit) {
        menu();
        scanf("%d", &ch);
        switch (ch)
        {
        case 1:show();  break;
        case 2:seek();  break;
        case 3:add();   break;
        case 4:sort();  break;
        case 5:out();   break;
        case 6:keep();  break;
        case 7:total(); break;
        case 8:exit = 0; break;
        default:
            break;
        }
    }
    return 0;
}

img