数据结构,链表实现,增加读者信息,修改读者信息,修改管理员密码,c语言版
时间: 2023-07-04 16:06:41 浏览: 87
数据结构—链表的操作(C语言实现)
以下是链表实现读者信息和管理员密码修改的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义读者结构体
typedef struct Reader {
char name[20]; // 读者姓名
int age; // 年龄
char gender; // 性别
char id[20]; // 身份证号
struct Reader *next; // 指向下一个读者结构体的指针
} Reader;
// 定义全局变量,存储链表头和管理员密码
Reader *head = NULL;
char adminPwd[20] = "123456"; // 初始管理员密码
// 函数声明
void addReader(); // 增加读者信息
void modifyReader(); // 修改读者信息
void modifyPwd(); // 修改管理员密码
void printReader(); // 打印读者信息
void printAllReader(); // 打印所有读者信息
int main() {
int choice;
printf("欢迎使用图书管理系统!\n");
while (1) {
printf("请选择功能:\n");
printf("1. 增加读者信息\n");
printf("2. 修改读者信息\n");
printf("3. 修改管理员密码\n");
printf("4. 打印所有读者信息\n");
printf("5. 退出系统\n");
scanf("%d", &choice);
switch (choice) {
case 1:
addReader();
break;
case 2:
modifyReader();
break;
case 3:
modifyPwd();
break;
case 4:
printAllReader();
break;
case 5:
printf("谢谢使用,再见!\n");
exit(0);
default:
printf("输入有误,请重新输入。\n");
break;
}
}
return 0;
}
void addReader() {
Reader *p = (Reader *)malloc(sizeof(Reader)); // 动态分配内存
printf("请输入读者姓名:");
scanf("%s", p->name);
printf("请输入读者年龄:");
scanf("%d", &p->age);
printf("请输入读者性别(男/女):");
scanf(" %c", &p->gender); // 注意加空格,避免缓冲区残留换行符
printf("请输入读者身份证号:");
scanf("%s", p->id);
p->next = head; // 将新读者结构体插入链表头
head = p;
printf("读者信息添加成功!\n");
}
void modifyReader() {
char id[20];
Reader *p = head;
printf("请输入要修改的读者身份证号:");
scanf("%s", id);
while (p != NULL) {
if (strcmp(p->id, id) == 0) { // 找到了要修改的读者
printReader(p); // 打印该读者信息
printf("请重新输入读者姓名:");
scanf("%s", p->name);
printf("请重新输入读者年龄:");
scanf("%d", &p->age);
printf("请重新输入读者性别(男/女):");
scanf(" %c", &p->gender);
printf("请重新输入读者身份证号:");
scanf("%s", p->id);
printf("读者信息修改成功!\n");
return;
}
p = p->next;
}
printf("未找到该读者!\n");
}
void modifyPwd() {
char oldPwd[20], newPwd[20];
printf("请输入旧密码:");
scanf("%s", oldPwd);
if (strcmp(oldPwd, adminPwd) == 0) { // 密码正确
printf("请输入新密码:");
scanf("%s", newPwd);
strcpy(adminPwd, newPwd); // 修改密码
printf("密码修改成功!\n");
} else {
printf("密码错误,修改失败!\n");
}
}
void printReader(Reader *p) {
printf("读者姓名:%s\n", p->name);
printf("读者年龄:%d\n", p->age);
printf("读者性别:%c\n", p->gender);
printf("读者身份证号:%s\n", p->id);
}
void printAllReader() {
Reader *p = head;
while (p != NULL) {
printReader(p);
p = p->next;
}
}
```
以上代码示例实现了链表存储读者信息,包括增加读者信息和修改读者信息功能,同时也实现了修改管理员密码和打印所有读者信息的功能。
阅读全文