可修改除手机号外的其它信息项。要先查找,再修改。若当前条件查找出多个记录,则提示用户增加查询条件继续查找,直到确定唯一用户
后再修改。(要链表的代码,C语言)
代码如下,如有帮助,请帮忙采纳一下,谢谢。
代码:
#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;
}
来这里面找作业答案呢😅😅😅