106 lines
3.8 KiB
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;
|
||
|
}
|