qfedu-c-level/day15/d1-stuMangerSystem/main.c

106 lines
3.8 KiB
C

#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;
}