c-学生管理系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

*******************
main.c
#include
#include
#include
#include"head.h"
int main()
{
char c, choice;
Createfile();
createNode();//初始化头节点
printf("\33[2J");
while(1)
{
Welcome(); //界面函数
scanf("%c", &choice);
switch(choice)
{
case '1':
login_fun(); //登录
break;
case '2':
register_fun(); //注册
break;
case '3':
cancel_fun(); //注销
break;
case '4':
Free_fun(); //退出,释放链表资源
system("clear");
return 0;
default:
printf("\33[%d;%dH\33[32m请输入正确的数字!\33[0m", 20, 25);
fflush(stdout);
sleep(1);
break;
}
}

return 0;
}
********************
head.h
#ifndef HEAD_H
#define HEAD_H
//学生结构体
typedef struct tagStudent
{
int num; //学号
char name[20]; //姓名
int age; //年龄
int score; //成绩
}Student;
//管理者结构体
typedef struct manage
{
int id; //管理者id
char password[12]; //密码
}Manage;
typedef struct m_node
{
Manage man;
struct m_node* pLast;
struct m_node* pNext;
}M_Node;
typedef struct tagNode
{
Student stu; //学员
struct tagNode* pLast;
struct tagNode* pNext; //结构体的内部指针,指向下一个学员
}Node;
Node* head; //头结点
M_Node* M_head;
void createNode();
void Welcome();
void login_fun();
void register_fun();
void cancel_fun();
void Add_fun();
void Search_fun();
void Delete_fun();
void Modify_fun();
#endif
**********************
perform.c
#include
#include
#include
#include
#include"head.h"
void Createfile()
{
FILE *fp1 = NULL;
fp1 = fopen("./M_t.txt", "a");
if(fp1 == NULL)
{
system("clear");
printf("\t\t\tM_t.txt打开失败!\n");
exit(-1);
}

FILE *fp2 = NULL;
fp2 = fopen("./S_t.txt", "a");
if(fp2 == NULL)
{
system("clear");
printf("\t\t\tS_t.txt打开失败!\n");
exit(-1);
}

fclose(fp1);
fclose(fp2);
}
//初始化头节点
void createNode()
{
head = (Node*)malloc(sizeof(Node));
head->pNext = NULL;
head->pLast = NULL;
head->stu.num = 0;
strcpy(head->, "0");
head->stu.age = 0;
head->stu.score = 0;

M_head = (M_Node*)malloc(sizeof(M_Node));
M_head->pNext = NULL;
M_head->pLast = NULL;
M_head->man.id = 0;
strcpy(M_head->man.password, "0");
}
//清屏
void clear_fun()
{
int x, y;
for(x=4; x<22; x++)
{
for(y=10; y<75; y++)
{
printf("\33[%d;%dH", x, y);
printf(" ");
}
}
}
void Welcome()
{
int x, y;
clear_fun();
for(x=3,y=20; y<58; y++)
printf("\33[%d;%dH\33[40m*\33[0m", x, y);
printf("\33[%d;%dH\33[32m学生管理系统\33[0m", 8, 30);
printf("\33[%d;%dH\33[32m1.登录\33[0m", 10, 32);
printf("\33[%d;%dH\33[32m2.注册\33[0m", 12, 32);
printf("\33[%d;%dH\33[32m3.注销\33[0m", 14, 32);
printf("\33[%d;%dH\33[32m4.退出\33[0m", 16, 32);
printf("\33[%d;%dH\33[32m请选择:\33[0m", 18, 32);
}
//从文件中读管理者信息
void Readfile_man()
{
int id;
char password[12];
M_Nod

e* p = M_head;

FILE *fp = NULL;
fp = fopen("./M_t.txt", "r");
if(fp == NULL)
{
system("clear");
printf("\t\t\tM_t.txt打开失败!\n");
exit(-1);
}
fseek(fp, 0, SEEK_SET);
//从文件中读取数据到链表
while(fscanf(fp, "%d %s", &id, password) != EOF)
{
M_Node* newNode = (M_Node*)malloc(sizeof(M_Node));
newNode->man.id = id;
strcpy(newNode->man.password, password);

p->pNext = newNode;
newNode->pLast = p;
p = p->pNext;
}
fclose(fp);
p->pNext = NULL;
}
//把管理者信息写入文件
void WriteFile_man()
{
M_Node* p;
FILE* fp = NULL;
fp = fopen("./M_t.txt", "w");

if(fp == NULL)
{
system("clear");
printf("\t\t\tM_t.txt打开失败!\n");
exit(-1);
}
//写入文件
p = M_head->pNext;
p->pLast = M_head;
while(p)
{
fprintf(fp, "%d %s\n", p->man.id, p->man.password);
p = p->pNext;
}
fclose(fp);
}
//从文件中读学生信息
void Readlink()
{
int num, age, score;
char name[20];
Node* p = head;

FILE *fp = NULL;
fp = fopen("./S_t.txt", "r");
if(fp == NULL)
{
system("clear");
printf("\t\t\tS_t.txt打开失败!\n");
exit(-1);
}
fseek(fp, 0, SEEK_SET);
//从文件中读取数据到链表
while(fscanf(fp, "%d %s %d %d", &num, name, &age, &score) != EOF)
{
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->stu.num = num;
strcpy(newNode->, name);
newNode->stu.age = age;
newNode->stu.score = score;

p->pNext = newNode;
newNode->pLast = p;
p = p->pNext;
}
fclose(fp);
p->pNext = NULL;
}
//把学生信息写入文件
void WriteFile()
{
Node* p;
FILE* fp = NULL;
fp = fopen("./S_t.txt", "w");

if(fp == NULL)
{
system("clear");
printf("\t\t\tS_t.txt打开失败!\n");
exit(-1);
}
//写入文件
p = head->pNext;
p->pLast = head;
while(p)
{
fprintf(fp, "%d %s %d %d\n",
p->stu.num, p->,
p->stu.age, p->stu.score);
p = p->pNext;
}
fclose(fp);
}
void Man_interface()
{
clear_fun();
printf("\33[%d;%dH\33[32m学生管理系统\33[0m", 6, 32);
printf("\33[%d;%dH\33[32m1.添加学生信息\33[0m", 8, 32);
printf("\33[%d;%dH\33[32m2.查看学生信息\33[0m", 10, 32);
printf("\33[%d;%dH\33[32m3.删除学生信息\33[0m", 12, 32);
printf("\33[%d;%dH\33[32m4.修改学生信息\33[0m", 14, 32);
printf("\33[%d;%dH\33[32m5.退出\33[0m", 16, 32);
printf("\33[%d;%dH\33[32m请选择:\33[0m", 18, 32);
}
//添加信息
void Add_fun()
{
Readlink();
if(head == NULL) return;
Node* p = NULL;

//新添加的节点
Node* newNode = (Node*)malloc(sizeof(Node));
clear_fun();
ToAdd:
printf("\33[%d;%dH\33[32m录入学生信息,退出按0!\33[0m", 6, 25);
printf("\33[%d;%dH\33[32m学号:\33[0m", 8, 32);
printf("\33[%d;%dH\33[32m姓名:\33[0m", 10, 32);
printf("\33[%d;%dH\33[32m年龄:\33[0m", 12, 32);
printf("\33[%d;%dH\33[32m成绩:\33[0m", 14, 32);
printf("\33[%dA", 6);
scanf("%d", &newNode->stu.num);
printf("\33[%d;%dH", 9, 32);
printf(" ");
if(newNode->stu.num == 0)
return;
p

= head;
while(p)
{
if(newNode->stu.num == p->stu.num)
{
printf("\33[%d;%dH\33[40m该学号已存在\33[0m", 9, 32);
fflush(stdout);
printf("\33[%d;%dH", 8, 37);
printf(" ");
printf("\33[%dD", 10);
sleep(1);
goto ToAdd; //学号已存在,跳转回去重新输入
}
p = p->pNext;
}
printf("\33[%d;%dH", 10, 37);
scanf("%s", newNode->);
if(!(strcmp(newNode->, "0")))
return;
printf("\33[%d;%dH", 12, 37);
scanf("%d", &newNode->stu.age);
if(newNode->stu.age == 0)
return;
printf("\33[%d;%dH", 14, 37);
scanf("%d", &newNode->stu.score);
if(newNode->stu.score == 0)
return;
p = head;
while(p->pNext)
{
p = p->pNext;
if(newNode->stu.num < p->stu.num)
{
p->pLast->pNext = newNode; //新节点按学号大小插入
newNode->pLast = p->pLast;
p->pLast = newNode;
newNode->pNext = p;
goto ToAdd2; //新节点已经插入,跳过尾插直接写入文件
}
}
p->pNext = newNode; //新节点加到原有的尾节点后面
newNode->pLast = p;
newNode->pNext = NULL;
ToAdd2:
WriteFile();
printf("\33[%d;%dH\33[32m添加成功!\33[0m", 16, 32);
printf("\33[%d;%dH\33[32m按任意键继续!\33[0m", 18, 32);
setbuf(stdin, NULL);
getchar();
}
//全部浏览
void SearchAll()
{
Readlink();
if(head == NULL) return;
Node* p = head->pNext;
clear_fun();
printf("\33[%d;%dH", 6, 20);
while(p)
{
printf("学号:%d\t姓名:%s\t年龄:%d\t成绩:%d\n",
p->stu.num, p->,
p->stu.age, p->stu.score);
p = p->pNext;
printf("\33[%dC", 19);
}
printf("\33[%dB", 2);
}
//按学号查找
void SearchNum()
{
int choice;
Node* p;
Readlink();
while(1)
{
p = head;
clear_fun();
printf("\33[%d;%dH\33[32m输入学号! 返回按0\33[0m", 8, 32);
printf("\33[%d;%dH\33[32m学号:\33[0m", 10, 32);
scanf("%d", &choice);
if(choice == 0)return;
while(p)
{
if(choice == p->stu.num)
{
printf("\33[%d;%dH", 12, 20);
printf("学号:%d\t姓名:%s\t年龄:%d\t成绩:%d\n",
p->stu.num, p->, p->stu.age, p->stu.score);

printf("\33[%d;%dH按任意键继续!", 16, 32);
setbuf(stdin, NULL);
getchar();
return;
}
p = p->pNext;
}
printf("\33[%d;%dH\33[40m没有你要找的信息!\33[0m", 14, 32);
fflush(stdout);
sleep(1);
}
}
//按姓名查找
void SearchName()
{
char n[20];
Node* p;
Readlink();
while(1)
{
p = head;
clear_fun();
printf("\33[%d;%dH\33[32m输入姓名! 返回按0\33[0m", 8, 32);
printf("\33[%d;%dH\33[32m姓名:\33[0m", 10, 32);
scanf("%s", n);
if(!(strcmp(n, "0")))return;
while(p)
{
if(!(strcmp(p->, n)))
{
printf("\33[%d;%dH", 12, 20);
printf("学号:%d\t姓名:%s\t年龄:%d\t成绩:%d\n",
p->stu.num, p->, p->stu.age, p->stu.score);

printf("\33[%d;%dH按任意键继续!", 16, 32);
setbuf(stdin, NULL);
getchar();
return;
}
p = p->pNext;
}
printf("\33[%d;%dH

\33[40m没有你要找的信息!\33[0m", 14, 32);
fflush(stdout);
sleep(1);
}
}
//查找信息
void Search_fun()
{
int choice;
while(1)
{
clear_fun();
printf("\33[%d;%dH\33[32m查找信息\33[0m", 6, 33);
printf("\33[%d;%dH\33[32m1.全部浏览\33[0m", 8, 32);
printf("\33[%d;%dH\33[32m2.按学号查找\33[0m", 10, 32);
printf("\33[%d;%dH\33[32m3.按姓名查找\33[0m", 12, 32);
printf("\33[%d;%dH\33[32m4.返回\33[0m", 14, 32);
printf("\33[%d;%dH\33[32m请选择:\33[0m", 16, 32);

scanf("%d", &choice);
switch(choice)
{
case 1:
SearchAll();
printf("按任意键继续!");
setbuf(stdin, NULL);
getchar();
break;
case 2:
SearchNum();
break;
case 3:
SearchName();
break;
case 4:
return;
default:
printf("\33[%d;%dH\33[40m请输入正确的数字\33[0m", 18, 32);
fflush(stdout);
sleep(1);
break;
}
}

}
//全部删除
void DeleteAll()
{
int choice;
FILE *fp;

while(1)
{
SearchAll();
printf("确认删除信息!\n");
printf("\33[%dB", 1);
printf("\33[%dC", 19);
printf("1:删除 0:返回\n");
printf("\33[%dC", 22);
scanf("%d", &choice);
switch(choice)
{
case 0:
return;
case 1:
fp = fopen("./t.txt", "w+");
fclose(fp);
Node* p = head;
while(p)
{
free(p);
p = p->pNext;
}
printf("\33[%dC", 19);
printf("信息删除成功!按任意键返回!");
setbuf(stdin, NULL);
getchar();
return;
default:
printf("\33[%dC", 19);
printf("请输入正确的数字!");
fflush(stdout);
sleep(1);
break;
}
}
}
//
void Delete_info(Node *p)
{
int choice;

while(1)
{
clear_fun();
printf("\33[%d;%dH", 12, 20);
printf("学号:%d\t姓名:%s\t年龄:%d\t成绩:%d\n",
p->stu.num, p->, p->stu.age, p->stu.score);
printf("\33[%d;%dH\33[40m请确认删除信息!\33[0m", 14, 32);
printf("\33[%d;%dH\33[32m1:删除 0:返回\33[0m", 16, 32);
printf("\33[%d;%dH", 18, 35);
scanf("%d", &choice);
switch(choice)
{
case 0:
return;
case 1:
if(p->pNext == NULL)
{
p->pLast->pNext = NULL;
free(p);
}
else
{
p->pLast->pNext = p->pNext;
p->pNext->pLast = p->pLast;
free(p);
}
WriteFile();
printf("\33[%d;%dH\33[40m删除成功!按任意键返回!\33[0m", 19, 32);
setbuf(stdin, NULL);
getchar();
return;
default:
getchar();
printf("\33[%d;%dH\33[40m请输入正确的数字!\33[0m", 19, 32);
fflush(stdout);
sleep(1);
break;
}
}
}
//按学号删除
void DeleteNum()
{
int choice;
Node* p;
Readlink();
while(1)
{
p = head;
clear_fun();
printf("\33[%d;%dH\33[32m输入学号! 返回按0\33[0m", 8, 32);
printf("\33[%d;%dH\33[32m学号:\33[0m", 10, 32);
scanf("%d", &choice);
if(choice == 0)
return;
while(p)
{
if(choice == p->stu.num)
{
Delete_info(p);
return;
}
p = p->pNext;
}
print

f("\33[%d;%dH\33[40m没有你输入的学生信息!\33[0m", 12, 32);
fflush(stdout);
sleep(1);
}
}
//按姓名删除
void DeleteName()
{
int choice;
char name[20];
Node* p;

Readlink();
while(1)
{
p = head;
clear_fun();
printf("\33[%d;%dH\33[32m输入姓名! 返回按0\33[0m", 8, 32);
printf("\33[%d;%dH\33[32m姓名:\33[0m", 10, 32);
scanf("%s", name);
if(!(strcmp(name, "0")))return;
while(p)
{
if(!(strcmp(name, p->)))
{
Delete_info(p);
return;
}
p = p->pNext;
}
printf("\33[%d;%dH\33[40m没有你输入的学生信息!\33[0m", 12, 32);
fflush(stdout);
sleep(1);
}
}
//删除信息
void Delete_fun()
{
int choice;
while(1)
{
clear_fun();
printf("\33[%d;%dH\33[32m删除信息\33[0m", 6, 33);
printf("\33[%d;%dH\33[32m1.全部删除\33[0m", 8, 32);
printf("\33[%d;%dH\33[32m2.按学号删除\33[0m", 10, 32);
printf("\33[%d;%dH\33[32m3.按姓名删除\33[0m", 12, 32);
printf("\33[%d;%dH\33[32m4.返回\33[0m", 14, 32);
printf("\33[%d;%dH\33[32m请选择:\33[0m", 16, 32);

scanf("%d", &choice);
switch(choice)
{
case 1:
DeleteAll();
break;
case 2:
DeleteNum();
break;
case 3:
DeleteName();
break;
case 4:
return;
default:
printf("\33[%d;%dH\33[40m请输入正确的数字\33[0m", 18, 32);
fflush(stdout);
sleep(1);
break;
}
}
}
//修改信息
void Modify_info(Node *p)
{
int choice;

while(1)
{
clear_fun();
printf("\33[%d;%dH", 6, 20);
printf("学号:%d\t姓名:%s\t年龄:%d\t成绩:%d\n",
p->stu.num, p->, p->stu.age, p->stu.score);
printf("\33[%d;%dH\33[32m1.修改姓名\33[0m", 8, 32);
printf("\33[%d;%dH\33[32m2.修改成绩\33[0m", 10, 32);
printf("\33[%d;%dH\33[32m3.全部修改\33[0m", 12, 32);
printf("\33[%d;%dH\33[32m4.返回\33[0m", 14, 32);
printf("\33[%d;%dH\33[32m请选择:\33[0m", 16, 32);
scanf("%d", &choice);
switch(choice)
{
case 1:
printf("\33[%d;%dH\33[32m修改后的姓名:\33[0m", 18, 30);
scanf("%s", p->);
WriteFile();
printf("\33[%d;%dH\33[40m修改成功,请按任意键返回!\33[0m", 20, 30);
setbuf(stdin, NULL);
getchar();
return;
case 2:
printf("\33[%d;%dH\33[32m修改后的成绩:\33[0m", 18, 30);
scanf("%d", &p->stu.score);
WriteFile();
printf("\33[%d;%dH\33[40m修改成功,请按任意键返回!\33[0m", 20, 30);
setbuf(stdin, NULL);
//fflush(stdin);
getchar();
return;
case 3:
printf("\33[%d;%dH\33[32m成绩:\33[0m", 18, 45);
printf("\33[%d;%dH\33[32m姓名:\33[0m", 18, 25);
scanf("%s", p->);
printf("\33[%d;%dH", 18, 51);
scanf("%d", &p->stu.score);
WriteFile();
printf("\33[%d;%dH\33[40m修改成功,请按任意键返回!\33[0m", 20, 30);
setbuf(stdin, NULL);
getchar();
return;
case 4:
return;
default:
printf("\33[%d;%dH\33[40m请输入正确的数字\33[0m", 18, 32);

fflush(stdout);
sleep(1);
break;
}
}
}
//按学号查找修改
void ModifyNum()
{
int choice;
Node* p;
Readlink();

while(1)
{
p = head->pNext;
clear_fun();
printf("\33[%d;%dH\33[32m输入学号! 返回按0\33[0m", 8, 32);
printf("\33[%d;%dH\33[32m学号:\33[0m", 10, 32);
scanf("%d", &choice);
if(choice == 0)return;
while(p)
{
if(choice == p->stu.num)
{
Modify_info(p);
return;
}
p = p->pNext;
}
printf("\33[%d;%dH\33[40m没有你输入的学生信息!\33[0m", 12, 32);
fflush(stdout);
sleep(1);
}
}
//按姓名查找修改
void ModifyName()
{
char name[20];
Node* p;
Readlink();

while(1)
{
p = head->pNext;
clear_fun();
printf("\33[%d;%dH\33[32m输入姓名! 返回按0\33[0m", 8, 32);
printf("\33[%d;%dH\33[32m姓名:\33[0m", 10, 32);
scanf("%s", name);
if(!(strcmp(name, "0")))return;
while(p)
{
if(!(strcmp(name, p->)))
{
Modify_info(p);
return;
}
p = p->pNext;
}
printf("\33[%d;%dH\33[40m没有你输入的学生信息!\33[0m", 12, 32);
fflush(stdout);
sleep(1);
}
}
//修改信息
void Modify_fun()
{
int choice;

while(1)
{
clear_fun();
printf("\33[%d;%dH\33[32m修改信息\33[0m", 8, 33);
printf("\33[%d;%dH\33[32m1.按学号修改\33[0m", 10, 32);
printf("\33[%d;%dH\33[32m2.按姓名修改\33[0m", 12, 32);
printf("\33[%d;%dH\33[32m3.返回\33[0m", 14, 32);
printf("\33[%d;%dH\33[32m请选择:\33[0m", 16, 32);
scanf("%d", &choice);
getchar();
switch(choice)
{
case 1:
ModifyNum();
break;
case 2:
ModifyName();
break;
case 3:
return;
default:
printf("\33[%d;%dH\33[40m请输入正确的数字\33[0m", 18, 32);
fflush(stdout);
sleep(1);
break;
}
}
}
//管理员控制函数
void Control()
{
char c, choice;
while(1)
{
Man_interface();
while((c = getchar()) != '\n' && c != EOF);
scanf("%c", &choice);
switch(choice)
{
case '1':
Add_fun(); //添加信息
break;
case '2':
Search_fun(); //查找信息
break;
case '3':
Delete_fun(); //删除信息
break;
case '4':
Modify_fun(); //修改信息
break;
case '5':
while((c = getchar()) != '\n' && c != EOF);
return;
default:
printf("\33[%d;%dH\33[32m请输入正确的数字\33[0m", 20, 25);
fflush(stdout);
sleep(1);
break;
}
}
}
//登录
void login_fun()
{
int id;
char password[12];
Readfile_man();
M_Node* p = M_head->pNext;

clear_fun();
printf("\33[%d;%dH\33[32m账号:\33[0m", 10, 32);
printf("\33[%d;%dH\33[32m密码:\33[0m", 14, 32);
printf("\33[%dA", 4);
scanf("%d", &id);
printf("\33[%d;%dH\33[32m(密码将不会显示!请放心输入)\33[0m", 15, 32);
printf("\33[%dA", 1);
printf("\33[%dD", 23);
system("stty -echo"); //关闭终端回显
scanf("%s", password);
system("stty echo"); //打开终端回显

while(p)
{
if(p->man.id == id && !strcmp(p->man.password, password))
{
c

lear_fun();
Control();
return;
}
p = p->pNext;
}
printf("\33[%d;%dH\33[32m账号或密码错误!即将返回主界面\33[0m", 17, 32);
fflush(stdout);
sleep(2);
}
//注册
void register_fun()
{
if(M_head == NULL) return;
M_Node* p = NULL;
M_Node* newNode = (M_Node*)malloc(sizeof(M_Node));

clear_fun();
printf("\33[%d;%dH\33[32m账号:\33[0m", 10, 32);
printf("\33[%d;%dH\33[32m密码:\33[0m", 14, 32);
printf("\33[%dA", 4);

Readfile_man();
ToAdd:
scanf("%d", &newNode->man.id);
printf("\33[%d;%dH", 11, 32);
printf(" ");
p = M_head;
while(p->pNext)
{
p = p->pNext;
if(newNode->man.id == p->man.id)
{
printf("\33[%d;%dH\33[40m(该账号已被注册!)\33[0m", 11, 32);
printf("\33[%d;%dH", 10, 37);
printf(" ");
printf("\33[%dD", 10);
goto ToAdd;
}
}
printf("\33[%d;%dH\33[32m(密码将不会显示!请放心输入)\33[0m", 15, 32);
printf("\33[%dA", 1);
printf("\33[%dD", 23);
system("stty -echo"); //关闭终端回显
scanf("%s", newNode->man.password);
system("stty echo"); //打开终端回显

p->pNext = newNode;
newNode->pLast = p;
newNode->pNext = NULL;

WriteFile_man();
}
//注销
void cancel_fun()
{
int id;
char psd1[12], psd2[12];
M_Node* p = M_head;
Readfile_man();
clear_fun();
printf("\33[%d;%dH\33[32m注销账号\33[0m", 6, 33);
printf("\33[%d;%dH\33[32m密码:\33[0m", 12, 32);
printf("\33[%d;%dH\33[32m密码:\33[0m", 14, 32);
printf("\33[%d;%dH\33[32m账号:\33[0m", 10, 32);
scanf("%d", &id);
system("stty -echo");
printf("\33[%d;%dH", 12, 37);
scanf("%s", psd1);
printf("\33[%d;%dH", 14, 37);
scanf("%s", psd2);
system("stty echo");

while(p->pNext)
{
p = p->pNext;
if(p->man.id == id && !strcmp(psd1, psd2)
&& !strcmp(p->man.password, psd1))
{
if(p->pNext == NULL)
{
p->pLast->pNext = NULL;
free(p);
}
else
{
p->pLast->pNext = p->pNext;
p->pNext->pLast = p->pLast;
free(p);
}
WriteFile_man();
printf("\33[%d;%dH\33[40m账号已被注销!按任意键返回!\33[0m", 16, 32);
setbuf(stdin, NULL);
getchar();
return;
}
}
printf("\33[%d;%dH\33[40m账号或密码错误!即将返回主界面\33[0m", 17, 32);
fflush(stdout);
sleep(2);
}
//释放链表资源
void Free_fun()
{
M_Node* p1 = M_head;
Node* p2 = head;

while(p1)
{
free(p1);
p1 = p1->pNext;
}

while(p2)
{
free(p2);
p2 = p2->pNext;
}
}

相关文档
最新文档