可修改除手机号外的其它信息项。要先查找,再修改。若当前 条件查找出多个记录,则提示用户增加查询条件继续查找,直到确定唯一用户 后再修改(要链表的代码,C语言)

可修改除手机号外的其它信息项。要先查找,再修改。若当前条件查找出多个记录,则提示用户增加查询条件继续查找,直到确定唯一用户
后再修改。(要链表的代码,C语言)

代码如下,如有帮助,请帮忙采纳一下,谢谢。

img

img

代码:

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


struct StNode
{
    char num[12];  //手机号
    char name[20];  //姓名 
    char part[40];  //工作单位
    StNode* next;
};

//录入信息
struct StNode* Input(struct StNode* head)
{
    struct StNode* p,*node;
    system("cls");
    node = (struct StNode*)malloc(sizeof(struct StNode));
    //录入信息
    printf("请输入手机号:");
    scanf("%s",node->num);
    printf("请输入姓名:"); 
    scanf("%s",node->name);
    printf("请输入工作单位:");
    scanf("%s",node->part);
    node->next = 0;

    if (head == 0)
    {
        head = node;
        //
    }else
    {
        p = head;
        while(p->next)
            p = p->next;
        //新建节点
        p->next = node;
    }
    system("pause");
    return head;
}
//显示所有手机信息
void showAll(struct StNode* head)
{
    struct StNode* p;
    int i=1;
    system("cls");
    p = head;
    while(p)
    {
        printf("%d:手机号:%s\n",i,p->num);
        printf("%d:姓名:%s\n",i,p->name); 
        printf("%d:单位:%s\n",i,p->part);
        i++;
        p = p->next;
    }
    system("pause");
}

//查询信息
int Find(struct StNode* head)
{
    int flag = 0;
    struct StNode* p = head;
    char name[40]={0};
    system("cls");
    printf("请输入手机号或者姓名或者部门:"); 
    scanf("%s",&name);
    while(p)
    {
        if( (strcmp(p->name,name) ==0) || (strcmp(p->num,name) ==0) || (strcmp(p->part,name) ==0))
        {
            printf("手机号:%d\n",p->num);
            printf("姓名:%s\n",p->name); 
            printf("单位:%s\n",p->part);
            flag++;
        }
        p = p->next;
    }
    if(flag==0)
        printf("查无此人\n");

    return flag;
}




//修改手机信息
void ModInfo(struct StNode* head)
{
    int nmb = 0,i,j;
    struct StNode* p = head;
    struct StNode* arr[30];
    char name[40]={0};
    system("cls");
    printf("请输入手机号或者姓名或者部门:"); 
    scanf("%s",&name);

    while(p)
    {
        if( (strcmp(p->name,name) ==0) || (strcmp(p->num,name) ==0) || (strcmp(p->part,name) ==0))
        {
            printf("手机号:%d\n",p->num);
            printf("姓名:%s\n",p->name); 
            printf("单位:%s\n",p->part);
            arr[nmb] = p;
            nmb++;
        }
        p = p->next;
    }
    if(nmb==0)
        printf("查无此人\n");


    while(nmb != 1)
    {
        j = 0;
        printf("存在多条信息,请输入更多信息:"); 
        scanf("%s",name);
        for (i=0;i<nmb;i++)
        {
            p = arr[i];
            if( (strcmp(p->name,name) ==0) || (strcmp(p->num,name) ==0) || (strcmp(p->part,name) ==0))
            {
                //printf("手机号:%d\n",p->num);
                //printf("姓名:%s\n",p->name); 
                //printf("单位:%s\n",p->part);
                arr[j++] = p;
            }
        }
        nmb = j;
        if(nmb == 0)
        {
            printf("查无此人\n");
            system("pause");
            return ;
        }
    }
    //
    printf("请输入姓名:"); 
    scanf("%s",arr[0]->name);
    printf("请输入单位:");
    scanf("%s",arr[0]->part);
    printf("修改完成");
    system("pause");
}

int main()
{
    struct StNode* head = 0;
    int opt = 0;
    int bgo = 1;
    char* filename = "students.txt";

    while(bgo)
    {
        system("cls");
        printf("--------------手机信息管理系统---------------|\n");
        printf("|   1.录入手机信息                           |\n");
        printf("|   2.显示所有手机信息                       |\n");
        printf("|   3.手机信息查询                           |\n");
        printf("|   4.手机信息修改                           |\n");
        printf("|   0.退出系统                               |\n");
        printf("----------------------------------------------\n");
        scanf("%d",&opt);
        switch(opt)
        {
        case 0:
            bgo = 0;
            break;
        case 1:
            head = Input(head);
            break;
        case 2:
            showAll(head);
            break;
        case 3:
            Find(head);
            system("pause");
            break;
        case 4:
            ModInfo(head);
            break;
        }
    }
    return 0;
}

来这里面找作业答案呢😅😅😅