#include<stdio.h>
#include "link.h"
#include<stdlib.h>
#include<string.h>
void student_login() //学生登陆
{
char admin[20]={0};
char password[20]={0};
ST *head=NULL;
head=read_student();
if(head==NULL)
{
system("clear");
printf("系统尚未注册帐号,请注册\n");
student();
}
int n=0;
while(1)
{
printf("请输入帐号\n");
scanf("%s",admin);
while(getchar()!='\n');
printf("请输入密码\n");
scanf("%s",password);
while(getchar()!='\n');
ST *s=search1_student(head,admin);
if(s==NULL)
{
system("clear");
printf("该帐号不存在,请重新输入\n");
int i=select_quit();
if(i==1)
student_login();
else
{ system("clear");
student(); }
}
int i=strcmp(s->value.admin,admin);
int d=strcmp(s->value.password,password);
if(i==0&&d==0)
{
system("clear");
printf("登陆成功\n");
FILE *fp=fopen("num.txt","w");
fprintf(fp,"%d",s->value.num);
fclose(fp);
student_menu();
}
else
{
n++;
if(n<3)
printf("帐号或密码错误,请重新输入\n");
else
{
system("clear");
printf("错误三次,请重新登陆或者注册新帐号\n");
student();
}
}
}
}
void change_student_password() //改学生密码
{
FILE *fp=fopen("num.txt","r");
int num=0;
fscanf(fp,"%d",&num);
ST* head=read_student();
ST *p=search_student(head,num);
int n=0;
while(1)
{
char password[10]={0};
printf("请输入原密码\n");
scanf("%s",password);
while(getchar()!='\n');
int i=strcmp(p->value.password,password);
if(i==0)
{
while(1)
{
printf("请输入新密码\n");
char a[10]={0};
scanf("%s",a);
while(getchar()!='\n');
printf("请再次输入新密码\n");
char b[10]={0};
scanf("%s",b);
while(getchar()!='\n');
int i=strcmp(a,b);
if(i==0)
{
strcpy(p->value.password,a);
system("clear");
printf("密码修改成功!请重新登陆\n");
save_student(p);
free_link(p);
student_login();
}
else
{ n++;
if(n<3)
{system("clear");
printf("两次密码不一致,请重新输入\n"); }
else
{
printf("错误三次,请选择继续或者退出\n");
int i=select_quit();
if (i==1)
{
system("clear");
change_student_password();
}
else
{ system("clear");
student_menu(); }
}
}
}
}
else
{
n++;
if(n<3)
{ system("clear");
printf("密码错误,请重新输入\n"); }
else
{
system("clear");
printf("错误三次,请重新选择\n");
student_menu();
}
}
}
}
void student_admin() //学生注册
{
Data d1={0};
ST *head=read_student();
ST *p=(ST *)malloc(sizeof(ST));
if(p!=NULL)
{
p->value=d1;
p->next=NULL;
}
printf("请注册\n");
if(head==NULL)
{
p->value.num=1001;
head=p;
}
else
{
ST *h=head;
while(h->next!=NULL)
h=h->next;
h->next=p;
p->value.num=h->value.num+1;
}
int n=0;
while(1)
{
char admin[10]={0};
printf("请输入帐号\n");
scanf("%s",admin);
while(getchar()!='\n');
ST *s=search1_student(head,admin);
if(s==NULL)
{
char a[10]={0};
printf("请输入密码\n");
scanf("%s",a);
while(getchar()!='\n');
char b[10]={0};
printf("请再次输入密码\n");
scanf("%s",b);
while(getchar()!='\n');
int i=strcmp(a,b);
if(i!=0)
{ n++;
if(n<3)
{system("clear");
printf("输入的密码不一致,请重新输入\n");
}
else
{
printf("错误三次,请选择继续或者退出\n");
int i=select_quit();
if (i==1)
{
system("clear");
student_admin();
}
else
{ system("clear");
student(); }
}
}
else
{
strcpy(p->value.admin,admin);
strcpy(p->value.password,a);
printf("请输入姓名、年龄、性别\n");
scanf("%s %d %s",p->value.name,&p->value.age,p->value.sex);
while(getchar()!='\n');
save_student(head);
free_link(head);
system("clear");
printf("注册成功!\n");
student();
}
}
else
{ n++;
if(n<3)
printf("帐号已存在,请重新输入!\n");
else
{
system("clear");
printf("错误三次,请选择继续或者退出\n");
int i=select_quit();
if(i==1)
return;
else
{ system("clear");
student(); }
}
}
}
}
void teacher_admin(ST *h) //老师注册
{
Data1 d1={0};
ST *head=read_teacher();
ST *p=(ST *)malloc(sizeof(ST));
if(p!=NULL)
{
p->value1=d1;
p->next=NULL;
}
printf("请注册\n");
if(head==NULL)
{
p->value1.num=2001;
head=p;
}
else
{
ST *h=head;
while(h->next!=NULL)
h=h->next;
h->next=p;
p->value1.num=h->value1.num+1;
}
while(1)
{
char admin[10]={0};
printf("请输入帐号\n");
scanf("%s",admin);
while(getchar()!='\n');
ST *s=search1_teacher(head,admin);
if(s==NULL)
{
char a[10]={0};
printf("请输入密码\n");
scanf("%s",a);
while(getchar()!='\n');
char b[10]={0};
printf("请再次输入密码\n");
scanf("%s",b);
while(getchar()!='\n');
int i=strcmp(a,b);
if(i!=0)
printf("输入的密码不一致,请重新输入\n");
else
{
strcpy(p->value1.admin,admin);
strcpy(p->value1.password,a);
printf("请输入姓名、年龄、性别\n");
scanf("%s %d %s",p->value1.name,&p->value1.age,p->value1.sex);
while(getchar()!='\n');
save_teacher(head);
free_link(head);
system("clear");
printf("注册成功!\n");
teacher();
}
}
else
printf("帐号已存在,请重新输入!\n");
}
}
void teacher_login() //教师登陆
{
char admin[20]={0};
char password[20]={0};
ST *head=NULL;
head=read_teacher();
if(head==NULL)
{
system("clear");
printf("系统尚未注册帐号,请注册\n");
teacher();
}
int n=0;
while(1)
{
printf("请输入帐号\n");
scanf("%s",admin);
while(getchar()!='\n');
printf("请输入密码\n");
scanf("%s",password);
while(getchar()!='\n');
ST *s=search1_teacher(head,admin);
if(s==NULL)
{
printf("帐号不存在,请重新输入\n");
teacher_login();
}
int i=strcmp(s->value1.admin,admin);
int d=strcmp(s->value1.password,password);
if(i==0&&d==0)
{
system("clear");
printf("登陆成功\n");
FILE *fp=fopen(".num.txt","w");
fprintf(fp,"%d",s->value1.num);
fclose(fp);
teacher_menu();
}
else
{
n++;
if(n!=3)
printf("帐号或密码错误,请重新输入\n");
else
{
system("clear");
printf("错误三次,请退出或者注册新帐号\n");
teacher();
}
}
}
}
void change_teacher_password() //教师改密码
{
FILE *fp=fopen(".num.txt","r");
int num=0;
fscanf(fp,"%d",&num);
ST* head=read_teacher();
ST *p=search_teacher(head,num);
while(1)
{
char password[10]={0};
printf("请输入原密码\n");
scanf("%s",password);
int i=strcmp(p->value1.password,password);
if(i==0)
{
while(1)
{
printf("请输入新密码\n");
char a[10]={0};
scanf("%s",a);
while(getchar()!='\n');
printf("请再次输入新密码\n");
char b[10]={0};
scanf("%s",b);
while(getchar()!='\n');
int i=strcmp(a,b);
if(i==0)
{
strcpy(p->value1.password,a);
system("clear");
printf("密码修改成功!请重新登陆\n");
save_teacher(head);
free_link(head);
teacher_login();
}
else
printf("两次密码不一致,请重新输入\n");
}
}
else
printf("原密码错误,请重新输入\n");
}
}
void insert_score() //录入成绩
{
ST *h=read_student();
if(h==NULL)
printf("信息尚未录入\n");
ST *s=h;
show_all_student();
while(s!=NULL)
{
if(s->value.score==0.0)
{
printf("请输入相应的成绩\n");
scanf("%f",&s->value.score);
while(getchar()!='\n');
save_student(h);
sel