可修改除手机号外的其它信息项。要先查找,再修改。若当前条件查找出多个记录,则提示用户增加查询条件继续查找,直到确定唯一用户
后再修改。(要链表的代码,C语言)
可修改除手机号外的其它信息项。要先查找,再修改。若当前 条件查找出多个记录,则提示用户增加查询条件继续查找,直到确定唯一用户 后再修改(要链表的代码,C语言)
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 技术专家团-小桥流水 2021-10-26 11:10关注
代码如下,如有帮助,请帮忙采纳一下,谢谢。
代码:
#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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 bat批处理,关于数据复制问题
- ¥50 同步两个不同结果的array中某些属性
- ¥15 悬赏15远程操控解决问题
- ¥15 CST复制的模型无法单独修改参数?
- ¥15 前端页面想做个定时任务,但是使用requestAnimationFrame,setinterval和settimeout都不行
- ¥15 根据以下文字信息,做EA模型图
- ¥15 删除虚拟显示器驱动 删除所有 Xorg 配置文件 删除显示器缓存文件 重启系统 可是依旧无法退出虚拟显示器
- ¥15 vscode程序一直报同样的错,如何解决?
- ¥15 关于使用unity中遇到的问题
- ¥15 开放世界如何写线性关卡的用例(类似原神)