#include "./includes/link.h" int main(int argc, char const *argv[]) { STU *head = NULL; // 定义全局的头指针 // 声明临时变量,用来保存学生信息 char tsid; char tname[32]; int tage; // // 创建几个学生信息,用于测试 // STU *stu1 = (STU *)malloc(sizeof(STU)); // stu1->sid = 1; // strcpy(stu1->name, "张三"); // stu1->age = 18; // STU *stu2 = (STU *)malloc(sizeof(STU)); // stu2->sid = 2; // strcpy(stu2->name, "李四"); // stu2->age = 21; // STU *stu3 = (STU *)malloc(sizeof(STU)); // stu3->sid = 3; // strcpy(stu3->name, "王五"); // stu3->age = 15; // STU *stu4 = (STU *)malloc(sizeof(STU)); // stu4->sid = 4; // strcpy(stu4->name, "赵六"); // stu4->age = 13; // head = insert_stu(head, stu1); // head = insert_stu(head, stu2); // head = insert_stu(head, stu3); // head = insert_stu(head, stu4); while (1) { // printf("\033[2J"); // printf("--------------------\n"); printf("\t\t \033[%d;%dm学生管理系统\033[0m\n\n", BOLD, CYAN_B); printf("\033[%d;%dm1) 添加学生 \t2) 删除学生 \t3) 打印 \n4) 查询 \t5) 修改 \t6) 排序 \n7) 反序 \t8) 加载数据 \t0) 退出(保存数据)\n请输入选项# \033[0m", BOLD, GREEN); int cmd = 0; scanf("%d", &cmd); switch (cmd) { case 0: // store_data(head); // 存储数据 saveToFile(head, "./data/stu.date"); return 1; case 1: printf("输入学生的 学号 姓名 年龄: "); // 键盘收集数据并动态插入链表 scanf("%hhd %s %d", &tsid, tname, &tage); // 键盘收集数据 STU *item = (STU *)malloc(sizeof(STU)); // 申请一个节点的内存, 用来保存学生信息 item->sid = tsid; // 保存学生学号到新建的节点 strcpy(item->name, tname); // 保存学生姓名到新建的节点 item->age = tage; // 保存学生年龄到新建的节点 item->next = NULL; // 新建的节点的下一个节点指向空,因为是尾部插入 head = insert_stu(head, item); // 将新建的节点插入到链表中 break; case 2: printf("输入要删除的学生的学号: "); scanf("%hhd", &tsid); head = delete_stu(head, tsid); break; case 3: shows(head); break; case 4: printf("输入要查询的学生的学号: "); scanf("%hhd", &tsid); head = find_stu(head, tsid); if (head == NULL) { printf("\033[%dm未找到 sid = %d 的学生\033[0m\n", RED, tsid); } else { printf("查询到的学生信息如下: \n"); printf("\033[%dm学号\t姓名\t年龄\033[0m\n", BLUE_B); printf("\033[%dm%d\t%s\t%d\033[0m\n", BLUE, head->sid, head->name, head->age); } break; case 5: printf("输入要修改的学生的学号:"); scanf("%hhd", &tsid); head = update_stu(head, tsid); break; case 6: printf("排序学生信息:\n"); head = sort_stu(head); break; case 7: printf("反序学生信息:\n"); head = reverse_stu(head); break; case 8: printf("加载数据......\n"); head = readFromFile("./data/stu.date"); break; default: printf("\033[%dm选择错误\033[0m\n", RED); break; } } return 0; }