链接:https://pan.baidu.com/s/1BL2HaTkagd9DmVUm9unMXw 提取码:6oi1
请到文章最底部复制全部代码
主界面:
我们要用到屏幕输出、键盘输入以及文件读写功能,需要包含以下库
#include
#include
#include
在main函数之前,我们可以先把功能先定义好,程序包含了以下的功能:
//欢迎界面
int WelcomeInfo();
//创建头结点
void CreatListOfHead();
//录入学生信息
void InputStudentInfo();
//打印学生信息
void PrintStudentInfo();
//保存学生信息
void SaveData();
//读取学生信息
void LoadData();
//统计学生人数
void CountStudent();
//查找学生信息
void SearchStudent();
//更改学生信息
void AlterStudentInfo();
//删除学生信息
void DeleteStudent();
//永久循环体
int Loop();
这里需要定义学生的结构体,结构体包含了学号、姓名、性别、年龄、成绩的相关信息
//学生
typedef struct _Student
{
unsigned int nStuNum; ///学号
char name[20]; /// 姓名
char sex[4]; ///性别
unsigned int age; ///年龄
unsigned int nScore; ///成绩
} Student;
节点结构体包含两个结构,一个是学生信息,另一个就是下一个节点的指针
//链表
typedef struct _Node
{
Student stu; ///学生信息
struct _Node *next; ///下一个节点指针
} Node;
在这里可以先把头结点先定义好
//头结点
Node *g_pHead = NULL;
这里包含了文件的定义,用于保存、加载文件。
//文件
FILE *fp;
char filename[127];
主函数这里只需要执行Loop()
函数即可,其中Loop()
是永久循环函数。
int main()
{
Loop();
return 0;
}
int Loop()
{
while (1)
{
// 清除输出
system("cls");
WelcomeInfo();
printf("请输入数字:");
char ch = _getch();
switch (ch)
{
case '1':
//录入学生信息
InputStudentInfo();
break;
case '2':
//打印学生信息
PrintStudentInfo();
break;
case '3':
//保存学生信息
SaveData();
break;
case '4':
//读取学生信息
LoadData();
break;
case '5':
//统计学生人数
CountStudent();
break;
case '6':
//查找学生信息
SearchStudent();
break;
case '7':
//更改学生信息
AlterStudentInfo();
break;
case '8':
//删除学生信息
DeleteStudent();
break;
case '0':
//退出系统
exit(0);
break;
default:
break;
}
}
}
主界面应展示一级菜单
int WelcomeInfo()
{
printf("\n\n");
printf(" *******************************************\n");
printf(" * 欢迎使用成绩管理系统 *\n");
printf(" *******************************************\n");
printf(" * 请选择功能列表 *\n");
printf(" *******************************************\n");
printf(" * 1:录入学生信息 *\n");
printf(" * 2:打印学生信息 *\n");
printf(" * 3:保存学生信息 *\n");
printf(" * 4:读取学生信息 *\n");
printf(" * 5:统计学生人数 *\n");
printf(" * 6:查找学生信息 *\n");
printf(" * 7:修改学生信息 *\n");
printf(" * 8:删除学生信息 *\n");
printf(" * 0:退出系统 *\n");
printf(" *******************************************\n");
return 0;
}
应当有头结点的创建函数,用以从文件中加载学生信息的头结点创建。
//创建头结点
void CreatListOfHead()
{
Node *g_pHead = (Node *)malloc(sizeof(Node));
g_pHead->next = NULL;
}
// 录入学生信息
void InputStudentInfo()
{
//申请内存,开辟节点
Node *p = (Node *)malloc(sizeof(Node));
p->next = NULL;
system("cls");
printf(" *******************************************\n");
printf(" * 学生信息录入界面 *\n");
printf(" *******************************************\n");
printf("\n");
printf("请输入学生姓名:");
scanf("%s", p->stu.name);
printf("请输入学生学号:");
scanf("%d", &p->stu.nStuNum);
printf("请输入学生性别:");
scanf("%s", p->stu.sex);
printf("请输入学生年龄:");
scanf("%d", &p->stu.age);
printf("请输入学生成绩:");
scanf("%d", &p->stu.nScore);
//将节点添加到链表中
if (g_pHead == NULL)
{
g_pHead = p;
}
else
{
//头插法
p->next = g_pHead;
g_pHead = p;
}
system("cls");
printf(" *******************************************\n");
printf(" * 学生信息录入成功! *\n");
printf(" *******************************************\n");
system("pause");
system("cls");
}
//打印学生信息
void PrintStudentInfo()
{
system("cls");
printf("\n\n");
printf("---------------------------------------------------------------------------------\n");
printf("|\t\t\t欢迎使用学生管理系统\t\t\t\t\t|\n");
printf("---------------------------------------------------------------------------------\n");
printf("|\t学号\t|\t姓名\t|\t性别\t|\t年龄\t|\t成绩\t|\n");
printf("---------------------------------------------------------------------------------\n");
//遍历链表
Node *p = g_pHead;
while (p != NULL)
{
printf("|\t%d\t|\t%s\t|\t%s\t|\t%d\t|\t%d\t|\n", p->stu.nStuNum, p->stu.name, p->stu.sex, p->stu.age, p->stu.nScore);
printf("---------------------------------------------------------------------------------\n");
p = p->next;
}
if (g_pHead == NULL)
{
printf("|\t\t\t\t没有学生信息\t\t\t\t\t|\n");
printf("---------------------------------------------------------------------------------\n");
}
printf("\n\n");
system("pause");
}
//保存学生信息
void SaveData()
{
system("cls");
printf(" *******************************************\n");
printf(" * 学生信息保存界面 *\n");
printf(" *******************************************\n");
printf("\n\n");
printf("请输入要保存的文件名:");
scanf("%s", filename);
Node *p = g_pHead;
if ((fp = fopen(filename, "w")) == NULL)
{
printf("\n文件保存失败!不能获得文件句柄!\n");
system("pause");
return;
}
while (p != NULL)
{
fprintf(fp, "%s %d %s %d %d\n", p->stu.name, p->stu.nStuNum, p->stu.sex, p->stu.age, p->stu.nScore);
p = p->next;
}
fclose(fp);
system("cls");
printf(" *******************************************\n");
printf(" * 学生信息保存成功! *\n");
printf(" *******************************************\n");
system("pause");
system("cls");
}
//读取学生信息
void LoadData()
{
system("cls");
printf(" *******************************************\n");
printf(" * 学生信息加载界面 *\n");
printf(" *******************************************\n");
printf("\n\n");
printf("请输入保存有学生信息的文件名:");
scanf("%s", filename);
if ((fp = fopen(filename, "a+")) == NULL)
{
printf("\n文件打开失败!不能获得文件句柄!\n");
system("pause");
return;
}
if (g_pHead == NULL)
{
CreatListOfHead();
}
while (1)
{
Node *p = (Node *)malloc(sizeof(Node));
p->next = NULL;
//printf("p:%p\n", &p);
if (fscanf(fp, "%s %d %s %d %d\n", p->stu.name, &p->stu.nStuNum, p->stu.sex, &p->stu.age, &p->stu.nScore) == EOF)
{
break;
}
//将节点添加到链表中
if (g_pHead == NULL)
{
//printf("p->next:%p \t\t g_pHead:%p\t\t g_pHead->next:%p\n", &p->next, &g_pHead, &g_pHead->next);
p->next = g_pHead;
g_pHead = p;
}
else
{
//printf("p->next:%p \t\t g_pHead:%p\t\t g_pHead->next:%p\n", &p->next, &g_pHead,&g_pHead->next);
p->next = g_pHead;
g_pHead = p;
}
}
fclose(fp);
system("cls");
printf(" *******************************************\n");
printf(" * 学生信息加载成功! *\n");
printf(" *******************************************\n");
printf("\n\n");
system("pause");
system("cls");
}
//统计学生人数
void CountStudent()
{
system("cls");
printf("\n\n");
printf("---------------------------------------------------------------------------------\n");
printf("|\t\t\t欢迎使用学生管理系统\t\t\t\t\t|\n");
printf("---------------------------------------------------------------------------------\n");
//遍历链表
Node *p = g_pHead;
unsigned int count = 0;
while (p != NULL)
{
count++;
p = p->next;
}
printf("|\t\t\t\t学生人数:%d\t\t\t\t\t|\n", count);
printf("---------------------------------------------------------------------------------\n");
printf("\n\n");
system("pause");
}
//查找学生信息
void SearchStudent()
{
while (1)
{
system("cls");
printf("\n\n");
printf("---------------------------------------------------------------------------------\n");
printf("|\t\t\t搜索学生信息界面\t\t\t\t\t|\n");
printf("---------------------------------------------------------------------------------\n");
printf("\n\n");
printf("请选择查询方式:【1】按学号 | 【2】按姓名 | 【-1】退出\n请选择:");
int k;
Node *p = g_pHead;
scanf("%d", &k);
switch (k)
{
case 1:
printf("请输入学生学号:");
int nStuNum;
scanf("%d", &nStuNum);
while (p->next != NULL)
{
if (p->stu.nStuNum == nStuNum)
{
printf("---------------------------------------------------------------------------------\n");
printf("|\t学号\t|\t姓名\t|\t性别\t|\t年龄\t|\t成绩\t|\n");
printf("---------------------------------------------------------------------------------\n");
printf("|\t%d\t|\t%s\t|\t%s\t|\t%d\t|\t%d\t|\n", p->stu.nStuNum, p->stu.name, p->stu.sex, p->stu.age, p->stu.nScore);
printf("---------------------------------------------------------------------------------\n");
p = p->next;
}
else
{
system("pause");
printf("\t\t\t\t未查询到该生信息!\t\t\t\t\t");
printf("---------------------------------------------------------------------------------\n");
return;
}
}
system("pause");
return;
case 2:
printf("请输入学生姓名:");
char name[20];
scanf("%s", name);
while (p && (strcmp(p->stu.name, name) != 0 )){p = p->next;}
if (p)
{
printf("---------------------------------------------------------------------------------\n");
printf("|\t学号\t|\t姓名\t|\t性别\t|\t年龄\t|\t成绩\t|\n");
printf("---------------------------------------------------------------------------------\n");
printf("|\t%d\t|\t%s\t|\t%s\t|\t%d\t|\t%d\t|\n", p->stu.nStuNum, p->stu.name, p->stu.sex, p->stu.age, p->stu.nScore);
printf("---------------------------------------------------------------------------------\n");
}
else
{
printf("---------------------------------------------------------------------------------\n");
printf("\t\t\t\t未查询到该生信息!\t\t\t\t\t");
printf("---------------------------------------------------------------------------------\n");
}
system("pause");
return;
case -1:
return;
default:
printf("请重新选择!");
system("pause");
break;
}
}
}
//更改学生信息
void AlterStudentInfo()
{
system("cls");
printf(" *******************************************\n");
printf(" * 学生信息更改界面 *\n");
printf(" *******************************************\n");
printf("\n");
printf("请输入学生学号:");
int nStuNum;
scanf("%d", &nStuNum);
Node *p = g_pHead;
while (p && (p->stu.nStuNum != nStuNum))
{
p = p->next;
}
if (p)
{
printf("---------------------------------------------------------------------------------\n");
printf("|\t学号\t|\t姓名\t|\t性别\t|\t年龄\t|\t成绩\t|\n");
printf("---------------------------------------------------------------------------------\n");
printf("|\t%d\t|\t%s\t|\t%s\t|\t%d\t|\t%d\t|\n", p->stu.nStuNum, p->stu.name, p->stu.sex, p->stu.age, p->stu.nScore);
printf("---------------------------------------------------------------------------------\n");
printf("请输入更改后的学生学号:");
scanf("%d", &p->stu.nStuNum);
printf("请输入更改后的学生姓名:");
scanf("%s", p->stu.name);
printf("请输入更改后的学生性别:");
scanf("%s", p->stu.sex);
printf("请输入更改后的学生年龄:");
scanf("%d", &p->stu.age);
printf("请输入更改后的学生成绩:");
scanf("%d", &p->stu.nScore);
system("cls");
printf(" *******************************************\n");
printf(" * 学生信息更改成功! *\n");
printf(" *******************************************\n");
system("pause");
system("cls");
return;
}
else
{
system("cls");
printf(" *******************************************\n");
printf(" * 找不到该学生! *\n");
printf(" *******************************************\n");
system("pause");
system("cls");
return;
}
}
//删除学生信息
void DeleteStudent()
{
system("cls");
printf(" *******************************************\n");
printf(" * 学生信息删除界面 *\n");
printf(" *******************************************\n");
printf("\n");
printf("请输入要删除的学生学号:");
int nStuNum;
scanf("%d", &nStuNum);
Node *p = g_pHead;
while (1)
{
if (p->next && (p->next->stu.nStuNum == nStuNum))
{
Node *useless = p->next;
p->next = p->next->next;
printf("以下信息已被删除:\n");
printf("---------------------------------------------------------------------------------\n");
printf("|\t学号\t|\t姓名\t|\t性别\t|\t年龄\t|\t成绩\t|\n");
printf("---------------------------------------------------------------------------------\n");
printf("|\t%d\t|\t%s\t|\t%s\t|\t%d\t|\t%d\t|\n", useless->stu.nStuNum, useless->stu.name, useless->stu.sex, useless->stu.age, useless->stu.nScore);
printf("---------------------------------------------------------------------------------\n");
printf("\n\n");
system("pause");
free(useless);
return;
}
else
{
if (p->next != NULL)
{
p = p->next;
}
else
{
system("cls");
printf(" *******************************************\n");
printf(" * 学生信息删除失败! *\n");
printf(" *******************************************\n");
printf("\n");
system("pause");
return;
}
}
}
}
// 学生成绩管理系统.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
#include
#include
#include
//学生
typedef struct _Student
{
unsigned int nStuNum; ///学号
char name[20]; /// 姓名
char sex[4]; ///性别
unsigned int age; ///年龄
unsigned int nScore; ///成绩
} Student;
//链表
typedef struct _Node
{
Student stu; ///学生信息
struct _Node *next; ///下一个节点指针
} Node;
//头结点
Node *g_pHead = NULL;
//文件
FILE *fp;
char filename[127];
//欢迎界面
int WelcomeInfo();
//创建头结点
void CreatListOfHead();
//录入学生信息
void InputStudentInfo();
//打印学生信息
void PrintStudentInfo();
//保存学生信息
void SaveData();
//读取学生信息
void LoadData();
//统计学生人数
void CountStudent();
//查找学生信息
void SearchStudent();
//更改学生信息
void AlterStudentInfo();
//删除学生信息
void DeleteStudent();
int Loop();
int main()
{
Loop();
return 0;
}
int WelcomeInfo()
{
printf("\n\n");
printf(" *******************************************\n");
printf(" * 欢迎使用成绩管理系统 *\n");
printf(" *******************************************\n");
printf(" * 请选择功能列表 *\n");
printf(" *******************************************\n");
printf(" * 1:录入学生信息 *\n");
printf(" * 2:打印学生信息 *\n");
printf(" * 3:保存学生信息 *\n");
printf(" * 4:读取学生信息 *\n");
printf(" * 5:统计学生人数 *\n");
printf(" * 6:查找学生信息 *\n");
printf(" * 7:修改学生信息 *\n");
printf(" * 8:删除学生信息 *\n");
printf(" * 0:退出系统 *\n");
printf(" *******************************************\n");
return 0;
}
//创建头结点
void CreatListOfHead()
{
Node *g_pHead = (Node *)malloc(sizeof(Node));
g_pHead->next = NULL;
}
// 录入学生信息
void InputStudentInfo()
{
//申请内存,开辟节点
Node *p = (Node *)malloc(sizeof(Node));
p->next = NULL;
system("cls");
printf(" *******************************************\n");
printf(" * 学生信息录入界面 *\n");
printf(" *******************************************\n");
printf("\n");
printf("请输入学生姓名:");
scanf("%s", p->stu.name);
printf("请输入学生学号:");
scanf("%d", &p->stu.nStuNum);
printf("请输入学生性别:");
scanf("%s", p->stu.sex);
printf("请输入学生年龄:");
scanf("%d", &p->stu.age);
printf("请输入学生成绩:");
scanf("%d", &p->stu.nScore);
//将节点添加到链表中
if (g_pHead == NULL)
{
g_pHead = p;
}
else
{
//头插法
p->next = g_pHead;
g_pHead = p;
}
system("cls");
printf(" *******************************************\n");
printf(" * 学生信息录入成功! *\n");
printf(" *******************************************\n");
system("pause");
system("cls");
}
//打印学生信息
void PrintStudentInfo()
{
system("cls");
printf("\n\n");
printf("---------------------------------------------------------------------------------\n");
printf("|\t\t\t欢迎使用学生管理系统\t\t\t\t\t|\n");
printf("---------------------------------------------------------------------------------\n");
printf("|\t学号\t|\t姓名\t|\t性别\t|\t年龄\t|\t成绩\t|\n");
printf("---------------------------------------------------------------------------------\n");
//遍历链表
Node *p = g_pHead;
while (p != NULL)
{
printf("|\t%d\t|\t%s\t|\t%s\t|\t%d\t|\t%d\t|\n", p->stu.nStuNum, p->stu.name, p->stu.sex, p->stu.age, p->stu.nScore);
printf("---------------------------------------------------------------------------------\n");
p = p->next;
}
if (g_pHead == NULL)
{
printf("|\t\t\t\t没有学生信息\t\t\t\t\t|\n");
printf("---------------------------------------------------------------------------------\n");
}
printf("\n\n");
system("pause");
}
//保存学生信息
void SaveData()
{
system("cls");
printf(" *******************************************\n");
printf(" * 学生信息保存界面 *\n");
printf(" *******************************************\n");
printf("\n\n");
printf("请输入要保存的文件名:");
scanf("%s", filename);
Node *p = g_pHead;
if ((fp = fopen(filename, "w")) == NULL)
{
printf("\n文件保存失败!不能获得文件句柄!\n");
system("pause");
return;
}
while (p != NULL)
{
fprintf(fp, "%s %d %s %d %d\n", p->stu.name, p->stu.nStuNum, p->stu.sex, p->stu.age, p->stu.nScore);
p = p->next;
}
fclose(fp);
system("cls");
printf(" *******************************************\n");
printf(" * 学生信息保存成功! *\n");
printf(" *******************************************\n");
system("pause");
system("cls");
}
//读取学生信息
void LoadData()
{
system("cls");
printf(" *******************************************\n");
printf(" * 学生信息加载界面 *\n");
printf(" *******************************************\n");
printf("\n\n");
printf("请输入保存有学生信息的文件名:");
scanf("%s", filename);
if ((fp = fopen(filename, "a+")) == NULL)
{
printf("\n文件打开失败!不能获得文件句柄!\n");
system("pause");
return;
}
if (g_pHead == NULL)
{
CreatListOfHead();
}
while (1)
{
Node *p = (Node *)malloc(sizeof(Node));
p->next = NULL;
//printf("p:%p\n", &p);
if (fscanf(fp, "%s %d %s %d %d\n", p->stu.name, &p->stu.nStuNum, p->stu.sex, &p->stu.age, &p->stu.nScore) == EOF)
{
break;
}
//将节点添加到链表中
if (g_pHead == NULL)
{
//printf("p->next:%p \t\t g_pHead:%p\t\t g_pHead->next:%p\n", &p->next, &g_pHead, &g_pHead->next);
p->next = g_pHead;
g_pHead = p;
}
else
{
//printf("p->next:%p \t\t g_pHead:%p\t\t g_pHead->next:%p\n", &p->next, &g_pHead,&g_pHead->next);
p->next = g_pHead;
g_pHead = p;
}
}
fclose(fp);
system("cls");
printf(" *******************************************\n");
printf(" * 学生信息加载成功! *\n");
printf(" *******************************************\n");
printf("\n\n");
system("pause");
system("cls");
}
//统计学生人数
void CountStudent()
{
system("cls");
printf("\n\n");
printf("---------------------------------------------------------------------------------\n");
printf("|\t\t\t欢迎使用学生管理系统\t\t\t\t\t|\n");
printf("---------------------------------------------------------------------------------\n");
//遍历链表
Node *p = g_pHead;
unsigned int count = 0;
while (p != NULL)
{
count++;
p = p->next;
}
printf("|\t\t\t\t学生人数:%d\t\t\t\t\t|\n", count);
printf("---------------------------------------------------------------------------------\n");
printf("\n\n");
system("pause");
}
//查找学生信息
void SearchStudent()
{
while (1)
{
system("cls");
printf("\n\n");
printf("---------------------------------------------------------------------------------\n");
printf("|\t\t\t搜索学生信息界面\t\t\t\t\t|\n");
printf("---------------------------------------------------------------------------------\n");
printf("\n\n");
printf("请选择查询方式:【1】按学号 | 【2】按姓名 | 【-1】退出\n请选择:");
int k;
Node *p = g_pHead;
scanf("%d", &k);
switch (k)
{
case 1:
printf("请输入学生学号:");
int nStuNum;
scanf("%d", &nStuNum);
while (p->next != NULL)
{
if (p->stu.nStuNum == nStuNum)
{
printf("---------------------------------------------------------------------------------\n");
printf("|\t学号\t|\t姓名\t|\t性别\t|\t年龄\t|\t成绩\t|\n");
printf("---------------------------------------------------------------------------------\n");
printf("|\t%d\t|\t%s\t|\t%s\t|\t%d\t|\t%d\t|\n", p->stu.nStuNum, p->stu.name, p->stu.sex, p->stu.age, p->stu.nScore);
printf("---------------------------------------------------------------------------------\n");
p = p->next;
}
else
{
system("pause");
printf("\t\t\t\t未查询到该生信息!\t\t\t\t\t");
printf("---------------------------------------------------------------------------------\n");
return;
}
}
system("pause");
return;
case 2:
printf("请输入学生姓名:");
char name[20];
scanf("%s", name);
while (p && (strcmp(p->stu.name, name) != 0 )){p = p->next;}
if (p)
{
printf("---------------------------------------------------------------------------------\n");
printf("|\t学号\t|\t姓名\t|\t性别\t|\t年龄\t|\t成绩\t|\n");
printf("---------------------------------------------------------------------------------\n");
printf("|\t%d\t|\t%s\t|\t%s\t|\t%d\t|\t%d\t|\n", p->stu.nStuNum, p->stu.name, p->stu.sex, p->stu.age, p->stu.nScore);
printf("---------------------------------------------------------------------------------\n");
}
else
{
printf("---------------------------------------------------------------------------------\n");
printf("\t\t\t\t未查询到该生信息!\t\t\t\t\t");
printf("---------------------------------------------------------------------------------\n");
}
system("pause");
return;
case -1:
return;
default:
printf("请重新选择!");
system("pause");
break;
}
}
}
//更改学生信息
void AlterStudentInfo()
{
system("cls");
printf(" *******************************************\n");
printf(" * 学生信息更改界面 *\n");
printf(" *******************************************\n");
printf("\n");
printf("请输入学生学号:");
int nStuNum;
scanf("%d", &nStuNum);
Node *p = g_pHead;
while (p && (p->stu.nStuNum != nStuNum))
{
p = p->next;
}
if (p)
{
printf("---------------------------------------------------------------------------------\n");
printf("|\t学号\t|\t姓名\t|\t性别\t|\t年龄\t|\t成绩\t|\n");
printf("---------------------------------------------------------------------------------\n");
printf("|\t%d\t|\t%s\t|\t%s\t|\t%d\t|\t%d\t|\n", p->stu.nStuNum, p->stu.name, p->stu.sex, p->stu.age, p->stu.nScore);
printf("---------------------------------------------------------------------------------\n");
printf("请输入更改后的学生学号:");
scanf("%d", &p->stu.nStuNum);
printf("请输入更改后的学生姓名:");
scanf("%s", p->stu.name);
printf("请输入更改后的学生性别:");
scanf("%s", p->stu.sex);
printf("请输入更改后的学生年龄:");
scanf("%d", &p->stu.age);
printf("请输入更改后的学生成绩:");
scanf("%d", &p->stu.nScore);
system("cls");
printf(" *******************************************\n");
printf(" * 学生信息更改成功! *\n");
printf(" *******************************************\n");
system("pause");
system("cls");
return;
}
else
{
system("cls");
printf(" *******************************************\n");
printf(" * 找不到该学生! *\n");
printf(" *******************************************\n");
system("pause");
system("cls");
return;
}
}
//删除学生信息
void DeleteStudent()
{
system("cls");
printf(" *******************************************\n");
printf(" * 学生信息删除界面 *\n");
printf(" *******************************************\n");
printf("\n");
printf("请输入要删除的学生学号:");
int nStuNum;
scanf("%d", &nStuNum);
Node *p = g_pHead;
while (1)
{
if (p->next && (p->next->stu.nStuNum == nStuNum))
{
Node *useless = p->next;
p->next = p->next->next;
printf("以下信息已被删除:\n");
printf("---------------------------------------------------------------------------------\n");
printf("|\t学号\t|\t姓名\t|\t性别\t|\t年龄\t|\t成绩\t|\n");
printf("---------------------------------------------------------------------------------\n");
printf("|\t%d\t|\t%s\t|\t%s\t|\t%d\t|\t%d\t|\n", useless->stu.nStuNum, useless->stu.name, useless->stu.sex, useless->stu.age, useless->stu.nScore);
printf("---------------------------------------------------------------------------------\n");
printf("\n\n");
system("pause");
free(useless);
return;
}
else
{
if (p->next != NULL)
{
p = p->next;
}
else
{
system("cls");
printf(" *******************************************\n");
printf(" * 学生信息删除失败! *\n");
printf(" *******************************************\n");
printf("\n");
system("pause");
return;
}
}
}
}
int Loop()
{
while (1)
{
// 清除输出
system("cls");
WelcomeInfo();
printf("请输入数字:");
char ch = _getch();
switch (ch)
{
case '1':
//录入学生信息
InputStudentInfo();
break;
case '2':
//打印学生信息
PrintStudentInfo();
break;
case '3':
//保存学生信息
SaveData();
break;
case '4':
//读取学生信息
LoadData();
break;
case '5':
//统计学生人数
CountStudent();
break;
case '6':
//查找学生信息
SearchStudent();
break;
case '7':
//更改学生信息
AlterStudentInfo();
break;
case '8':
//删除学生信息
DeleteStudent();
break;
case '0':
//退出系统
exit(0);
break;
default:
break;
}
}
}