999999

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

// 用户信息结构体

typedef struct User {

    int id;

    char username[50];

    char password[50];

    char phone[20];

    char email[50];

    struct User* next;

} User;

// 链表头节点

User* head = NULL;

// 从.csv文件中加载用户信息到链表中

void loadUsersFromFile() {

    FILE* file = fopen("users.csv", "r");

    if (file == NULL) {

        printf("Failed to open file.\n");

        return;

    }

    char line[200];

    while (fgets(line, sizeof(line), file)) {

        User* newUser = (User*)malloc(sizeof(User));

        // 使用逗号分隔行中的字段

        char* token = strtok(line, ",");

        newUser->id = atoi(token);

        token = strtok(NULL, ",");

        strcpy(newUser->username, token);

        token = strtok(NULL, ",");

        strcpy(newUser->password, token);

        token = strtok(NULL, ",");

        strcpy(newUser->phone, token);

        token = strtok(NULL, ",");

        strcpy(newUser->email, token);

        // 插入节点到链表中

        if (head == NULL || newUser->id < head->id) {

            newUser->next = head;

            head = newUser;

        } else {

            User* current = head;

            while (current->next != NULL && current->next->id < newUser->id) {

                current = current->next;

            }

            newUser->next = current->next;

            current->next = newUser;

        }

    }

    fclose(file);

}

// 将链表中的用户信息写入.csv文件

void saveUsersToFile() {

    FILE* file = fopen("users.csv", "w");

    if (file == NULL) {

        printf("Failed to open file.\n");

        return;

    }

    User* current = head;

    while (current != NULL) {

        fprintf(file, "%d,%s,%s,%s,%s\n", current->id, current->username, current->password, current->phone, current->email);

        current = current->next;

    }

    fclose(file);

}

// 打印链表中的用户信息

void printUsers() {

    printf("User Information:\n");

    User* current = head;

    while (current != NULL) {

        printf("ID: %d\n", current->id);

        printf("Username: %s\n", current->username);

        printf("Password: %s\n", current->password);

        printf("Phone: %s\n", current->phone);

        printf("Email: %s\n", current->email);

        printf("\n");

        current = current->next;

    }

}

// 增加用户信息

void addUser(int id, const char* username, const char* password, const char* phone, const char* email) {

    User* newUser = (User*)malloc(sizeof(User));

    newUser->id = id;

    strcpy(newUser->username, username);

    strcpy(newUser->password, password);

    strcpy(newUser->phone, phone);

    strcpy(newUser->email, email);

    if (head == NULL || newUser->id < head->id) {

        newUser->next = head;

        head = newUser;

    }else {

        User* current = head;

        while (current->next != NULL && current->next->id < newUser->id) {

            current = current->next;

        }

        newUser->next = current->next;

        current->next = newUser;

    }

}

// 删除用户信息

void deleteUser(int id) {

    if (head == NULL) {

        printf("User not found.\n");

        return;

    }

    User* current = head;

    User* previous = NULL;

    while (current != NULL && current->id != id) {

        previous = current;

        current = current->next;

    }

    if (current == NULL) {

        printf("User not found.\n");

        return;

    }

    if (previous == NULL) {

        head = current->next;

    } else {

        previous->next = current->next;

    }

    free(current);

}

// 修改用户信息

void updateUser(int id, const char* username, const char* password, const char* phone, const char* email) {

    User* current = head;

    while (current != NULL && current->id != id) {

        current = current->next;

    }

    if (current == NULL) {

        printf("User not found.\n");

        return;

    }

    strcpy(current->username, username);

    strcpy(current->password, password);

    strcpy(current->phone, phone);

    strcpy(current->email, email);

}

// 查找用户信息

User* findUser(int id) {

    User* current = head;

    while (current != NULL) {

        if (current->id == id) {

            return current;

        }

        current = current->next;

    }

    return NULL;

}

// 显示菜单

void displayMenu() {

    printf("Welcome to User Management System\n");

    printf("1. Add User\n");

    printf("2. Delete User\n");

    printf("3. Update User\n");

    printf("4. Find User\n");

    printf("5. Print Users\n");

    printf("6. Exit\n");

    printf("Enter your choice: ");

}

int main() {

    loadUsersFromFile();

    int choice = 0;

    while (choice != 6) {

        displayMenu();

        scanf("%d", &choice);

        printf("\n");

        switch (choice) {

            case 1: {

                int id;

                char username[50];

                char password[50];

                char phone[20];

                char email[50];

                printf("Enter ID: ");

                scanf("%d", &id);

                printf("Enter Username: ");

                scanf("%s", username);

                printf("Enter Password: ");

                scanf("%s", password);

                printf("Enter Phone: ");

                scanf("%s", phone);

                printf("Enter Email: ");

                scanf("%s", email);

                addUser(id, username, password, phone, email);

                printf("User added successfully.\n");

                break;

            }

            case 2: {

                int id;

                printf("Enter ID: ");

                scanf("%d", &id);

                deleteUser(id);

                printf("User deleted successfully.\n");

                break;

            }

            case 3: {

                int id;

                char username[50];

                char password[50];

                char phone[20];

                char email[50];

                printf("Enter ID: ");

                scanf("%d", &id);

                printf("Enter New Username: ");

                scanf("%s", username);

                printf("Enter New Password: ");

                scanf("%s", password);

                printf("Enter New Phone: ");

                scanf("%s", phone);

                printf("EnterNew Email: ");

                scanf("%s", email);

                updateUser(id, username, password, phone, email);

                printf("User updated successfully.\n");

                break;

            }

            case 4: {

                int id;

                printf("Enter ID: ");

                scanf("%d", &id);

                User* user = findUser(id);

                if (user != NULL) {

                    printf("User found:\n");

                    printf("ID: %d\n", user->id);

                    printf("Username: %s\n", user->username);

                    printf("Password: %s\n", user->password);

                    printf("Phone: %s\n", user->phone);

                    printf("Email: %s\n", user->email);

                } else {

                    printf("User not found.\n");

                }

                break;

            }

            case 5:

                printUsers();

                break;

            case 6:

                printf("Exiting...\n");

                break;

            default:

                printf("Invalid choice. Please try again.\n");

        }

        printf("\n");

    }

    // 将修改后的用户信息写入.csv文件

    saveUsersToFile();

    return 0;

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值