int che_menu(int che_state) //打印通過某種方式查看學生的信息的函數(shù)
{
int n;
system("clear");
printf("\t\t*************************************************\n");
printf("\t\t*************************************************\n");
printf("\t\t\t\t1.通過姓名查看學生的信息\n"); //打印通過某種方式查看學生的信息
printf("\t\t\t\t2.通過學號查看學生的信息\n");
printf("\t\t\t\t3.查看某班級學生的信息\n");
printf("\t\t\t\t0.退出\n");
printf("\t\t*************************************************\n");
printf("\t\t*************************************************\n");
scanf("%d",&n);
getchar();
if(n<0||n>3)
{
printf("輸入錯誤,請按enter鍵后重新輸入~~~~\n");
getchar();
return 1;
}
else
{
n=che_state*10+n;
}
return n; //返回你想進入的欄目
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
int che_student_byname()
{
studlist p=NULL,head=NULL;
head=student_read_display();
p=head;
char name[20]={0};
int i=0;
printf("請輸入你要找的學生的姓名\n");
scanf("%s",name);
while(p!=NULL)
{
if(strcmp(((p->data).name),name)==0 ) //判斷是否是這個班級的
{
printf("姓名 學號 班級 C語言成績 數(shù)學成績 總成績 名次 密碼 帳號 \n");
printf("%-10s%-8d",(p->data).name,(p->data).num);
printf("%-8d%-10d",(p->data).class,(p->data).Cmark);
printf("%-11d%-11d",(p->data).math,(p->data).allmark);
printf("%-7d%",(p->data).rank);
printf("%-7s%-2s\n",(p->data).psword,(p->data).account);
i++;
}
p=p->next;
}
if(i==0)
{
printf("沒有叫%d的學生\n",name);
}
printlist(head);
student_write_save(head);
getchar();
getchar();
return 1;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int rank_menu(int rank_state)
{
int n;
system("clear");
printf("\t\t*************************************************\n");
printf("\t\t*************************************************\n");
printf("\t\t\t1.c語言成績排名\n"); //打印成績排名學生的信息
printf("\t\t\t2.數(shù)學成績排名\n");
printf("\t\t\t0.退出學生排名的信息欄\n");
printf("\t\t*************************************************\n");
printf("\t\t*************************************************\n");
scanf("%d",&n);
getchar();
if(n<0||n>2)
{
printf("輸入錯誤,請按enter鍵后重新輸入~~~~\n");
getchar();
return 1;
}
else
{
n=rank_state*10+n;
}
return n;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
studlist get_max_cmark(studlist head) //找Cmark最大的節(jié)點函數(shù)
{
studlist p=head;
studlist pmax=NULL;
if(head==NULL)
{
printf("empty list\n");
}
else
{
pmax=p;
while(p!=NULL)
{
if(((pmax->data).Cmark)<((p->data).Cmark)) //找Cmark最大的節(jié)點
{
pmax=p;
}
p=p->next;
}
}
return pmax;
}
studlist del_max_cmark(studlist pmax,studlist head) //刪除最大的節(jié)點函數(shù)
{
studlist p=head;
if(head==NULL)
{
printf("empty list\n");
}
if(head==pmax) //判斷是不是第一個節(jié)點最大
{
head=head->next;
}
else
{
while(p!=NULL) //判斷是否為空標志
{
if(p->next==pmax)
{
p->next=pmax->next;
break;
}
p=p->next;
}
}
return head; //返回首地址
}
studlist add_new_listcmark(studlist pmax,studlist head) //建立新的有序節(jié)點
{
studlist p=head,tail=NULL; //后插方式
if(head==NULL) //判斷是否連表為空
{
head=pmax;
head->next=NULL;
}
else
{
while(p!=NULL)
{
tail=p;
p=p->next;
}
tail->next=pmax;
pmax->next=NULL;
}
//pmax->next=head; //前插方式
//head=pmax;
return head;
}
int dis_student_rank_cmark()
{
studlist p=NULL,head=NULL,p1=NULL,tail=NULL,phead=NULL;
head=student_read_display();
p=head;
if(head==NULL)
{
printf("empty list\n");
}
while(head!=NULL)
{
p1=get_max_cmark(head);
head=del_max_cmark(p1,head);
phead=add_new_listcmark(p1,phead);
}
printlist(phead);
//student_write_save(head);
getchar();
getchar();
return 1;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
studlist get_max_mathmark(studlist head) //找mathmark最大的節(jié)點函數(shù)
{
studlist p=head;
studlist pmax=NULL;
if(head==NULL)
{
printf("empty list\n");
}
else
{
pmax=p;
while(p!=NULL)
{
if(((pmax->data).math)<((p->data).math)) //找mathmark最大的節(jié)點
{
pmax=p;
}
p=p->next;
}
}
return pmax;
}
studlist del_max_mathmark(studlist pmax,studlist head) //刪除最大的節(jié)點函數(shù)
{
studlist p=head;
if(head==NULL)
{
printf("empty list\n");
}
if(head==pmax) //判斷是不是第一個節(jié)點最大
{
head=head->next;
}
else
{
while(p!=NULL) //判斷是否為空標志
{
if(p->next==pmax)
{
p->next=pmax->next;
break;
}
p=p->next;
}
}
return head; //返回首地址
}
studlist add_new_listmathmark(studlist pmax,studlist head) //建立新的有序節(jié)點
{
studlist p=head,tail=NULL; //后插方式
if(head==NULL) //判斷是否連表為空
{
head=pmax;
head->next=NULL;
}
else
{
while(p!=NULL)
{
tail=p;
p=p->next;
}
tail->next=pmax;
pmax->next=NULL;
}
//pmax->next=head; //前插方式
//head=pmax;
return head;
}
int dis_student_rank_mathmark()
{
studlist p=NULL,head=NULL,p1=NULL,tail=NULL,phead=NULL;
head=student_read_display();
p=head;
if(head==NULL)
{
printf("empty list\n");
}
while(head!=NULL)
{
p1=get_max_mathmark(head);
head=del_max_mathmark(p1,head);
phead=add_new_listmathmark(p1,phead);
}
printlist(phead);
//student_write_save(head);
getchar();
getchar();
return 1;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int dis_class_rank_mark()
{
int RankFlag=0; //查看學生名次信息的標志
int rank_state=RANK_MENU; //打印學生名次信息的信息
while(1)
{
if(RankFlag)
{
break;
}
switch(rank_state)
{
case RANK_MENU: rank_state=rank_menu(rank_state); //顯示學生成績的目錄
break;
case DIS_STUDENT_RANK_CMARK: rank_state=dis_student_rank_cmark(); //c語言成績排名
break;
case DIS_STUDENT_RANK_MATHMARK: rank_state=dis_student_rank_mathmark(); //數(shù)學成績排名
break;
case DIS_STUDENT_RANK_EXIT: RankFlag=1; //退出學生排名的信息欄
break;
}
}
return 1;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
int dis_menu(int dis_state) //通過某些順序顯示學生的信息
{
int n;
system("clear");
printf("\t\t*************************************************\n");
printf("\t\t*************************************************\n");
printf("\t\t\t1.通過學號順序顯示學生的信息\n"); //打印順序顯示學生的信息
printf("\t\t\t2.通過總的名次查看學生的信息\n");
printf("\t\t\t3.通過某一顆的成績顯示學生的信息\n");
printf("\t\t\t0.退出顯示學生的信息欄\n");
printf("\t\t*************************************************\n");
printf("\t\t*************************************************\n");
scanf("%d",&n);
getchar();
if(n<0||n>3)
{
printf("輸入錯誤,請按enter鍵后重新輸入~~~~\n");
getchar();
return 1;
}
else
{
n=dis_state*10+n;
}
return n; //返回到需要進入的欄目
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int dis_student_bynum()
{
studlist head=NULL;
head=student_read_display();
printlist(head);
student_write_save(head);
getchar();
getchar();
return 1;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
studlist get_max_allmark(studlist head) //找mathmark最大的節(jié)點函數(shù)
{
studlist p=head;
studlist pmax=NULL;
if(head==NULL)
{
printf("empty list\n");
}
else
{
pmax=p;
while(p!=NULL)
{
if(((pmax->data).allmark)<((p->data).allmark)) //找mathmark最大的節(jié)點
{
pmax=p;
}
p=p->next;
}
}
return pmax;
}
studlist del_max_allmark(studlist pmax,studlist head) //刪除最大的節(jié)點函數(shù)
{
studlist p=head;
if(head==NULL)
{
printf("empty list\n");
}
if(head==pmax) //判斷是不是第一個節(jié)點最大
{
head=head->next;
}
else
{
while(p!=NULL) //判斷是否為空標志
{
if(p->next==pmax)
{
p->next=pmax->next;
break;
}
p=p->next;
}
}
return head; //返回首地址
}
studlist add_new_listallmark(studlist pmax,studlist head) //建立新的有序節(jié)點
{
studlist p=head,tail=NULL; //后插方式
if(head==NULL) //判斷是否連表為空
{
head=pmax;
head->next=NULL;
}
else
{
while(p!=NULL)
{
tail=p;
p=p->next;
}
tail->next=pmax;
pmax->next=NULL;
}
//pmax->next=head; //前插方式
//head=pmax;
return head;
}
int dis_student_byallmark()
{
studlist p=NULL,head=NULL,p1=NULL,tail=NULL,phead=NULL;
head=student_read_display();
p=head;
if(head==NULL)
{
printf("empty list\n");
}
while(head!=NULL)
{
p1=get_max_allmark(head);
head=del_max_allmark(p1,head);
phead=add_new_listallmark(p1,phead);
}
printlist(phead);
//student_write_save(head);
getchar();
getchar();
return 1;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int dis_student()
{
int DisFlag=0; //查看學生信息的標志
int dis_state=DIS_MENU; //打印學生信息的信息
while(1)
{
if(DisFlag)
{
break;
}
switch(dis_state)
{
case DIS_MENU: dis_state=dis_menu(dis_state); //顯示學生的目錄
break;
case DIS_STUDENT_BYNUM: dis_state=dis_student_bynum(); //通過學號順序顯示學生的信息
break;
case DIS_STUDENT_BYALLMARK: dis_state=dis_student_byallmark(); //通過總的名次查看學生的信息
break;
case DIS_STUDENT_BYMARK: dis_state=dis_class_rank_mark(); //通過某一顆的成績顯示學生的信息
break;
case DIS_STUDENT_EXIT: DisFlag=1; //退出顯示學生的信息欄
break;
}
}
return 1; //返回1重新顯示管理員管理的信息
}
int rep_menu(int rep_state)
{
int n;
system("clear");
printf("\t\t*************************************************\n");
printf("\t\t*************************************************\n");
printf("\t\t\t1.修改學生的姓名信息\n"); //打印順序修改學生的信息
printf("\t\t\t2.修改學生的學號信息\n");
printf("\t\t\t3.修改學生的班級信息\n");
printf("\t\t\t4.修改學生的成績信息\n");
printf("\t\t\t0.退出修改學生的信息欄\n");
printf("\t\t*************************************************\n");
printf("\t\t*************************************************\n");
scanf("%d",&n);
getchar();
if(n<0||n>4)
{
printf("輸入錯誤,請按enter鍵后重新輸入~~~~\n");
getchar();
return 1;
}
else
{
n=rep_state*10+n;
}
return n;
}
int mark_menu(int mark_state)
{
int n;
system("clear");
printf("\t\t*************************************************\n");
printf("\t\t*************************************************\n");
printf("\t\t\t1.修改學生的C語言成績信息\n"); //打印順序修改學生成績的信息
printf("\t\t\t2.修改學生的數(shù)學成績信息\n");
printf("\t\t\t0.退出修改學生成績的信息欄\n");
printf("\t\t*************************************************\n");
printf("\t\t*************************************************\n");
scanf("%d",&n);
getchar();
if(n<0||n>2)
{
printf("輸入錯誤,請按enter鍵后重新輸入~~~~\n");
getchar();
return 1;
}
else
{
n=mark_state*10+n;
}
return n;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
int mark_c_mark() //修改C語言的成績
{
studlist p=NULL,head=NULL;
head=student_read_display();
p=head;
int num,i=0;
char ch;
printf("請輸入要修改學生的學號\n");
scanf("%d",&num);
while(p!=NULL)
{
if(((p->data).num)==num)
{
printf("姓名 學號 班級 C語言成績 數(shù)學成績 總成績 名次 密碼 帳號 \n");
printf("%-10s%-8d",(p->data).name,(p->data).num);
printf("%-8d%-10d",(p->data).class,(p->data).Cmark);
printf("%-11d%-11d",(p->data).math,(p->data).allmark);
printf("%-7d%",(p->data).rank);
printf("%-7s%-2s\n",(p->data).psword,(p->data).account);
i++;
getchar();
printf("請確認,是否真的修改,修改請按‘y’,否則按任意鍵后退出~~~\n");
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
{
printf("請輸入你的新C語言成績\n");
scanf("%d",&((p->data).Cmark));
printf("修改C語言成績成功\n");
}
}
p=p->next;
}
printlist(head);
student_write_save(head);
getchar();
getchar();
return 1;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
int mark_math_mark()
{
studlist p=NULL,head=NULL;
head=student_read_display();
p=head;
int num,i=0;
char ch;
printf("請輸入要修改學生的學號\n");
scanf("%d",&num);
while(p!=NULL)
{
if(((p->data).num)==num)
{
printf("姓名 學號 班級 C語言成績 數(shù)學成績 總成績 名次 密碼 帳號 \n");
printf("%-10s%-8d",(p->data).name,(p->data).num);
printf("%-8d%-10d",(p->data).class,(p->data).Cmark);
printf("%-11d%-11d",(p->data).math,(p->data).allmark);
printf("%-7d%",(p->data).rank);
printf("%-7s%-2s\n",(p->data).psword,(p->data).account);
i++;
getchar();
printf("請確認,是否真的修改,修改請按‘y’,否則按任意鍵后退出~~~\n");
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
{
printf("請輸入你的新數(shù)學成績\n");
scanf("%d",&((p->data).math));
printf("修改數(shù)學成績成功\n");
}
}
p=p->next;
}
printlist(head);
student_write_save(head);
getchar();
getchar();
return 1;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
int rep_student_mark()
{
int MarkFlag=0; //查看學生信息的標志
int mark_state=MARK_MENU; //打印學生信息的信息
while(1)
{
if(MarkFlag)
{
break;
}
switch(mark_state)
{
case MARK_MENU: mark_state=mark_menu(mark_state); //修改學生分數(shù)的目錄
break;
case MARK_C_MARK: mark_state=mark_c_mark(); //修改學生C語言的成績的信息
break;
case MARK_MATH_MARK: mark_state=mark_math_mark(); //修改學生數(shù)學成績的信息
break;
case MARK_EXIT: MarkFlag=1; //退出修改學生成績的信息欄
break;
}
}
return 1;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
int rep_student_class()
{
studlist p=NULL,head=NULL;
head=student_read_display();
p=head;
int num,i=0;
char ch;
printf("請輸入要修改學生的學號\n");
scanf("%d",&num);
while(p!=NULL)
{
if(((p->data).num)==num)
{
printf("姓名 學號 班級 C語言成績 數(shù)學成績 總成績 名次 密碼 帳號 \n");
printf("%-10s%-8d",(p->data).name,(p->data).num);
printf("%-8d%-10d",(p->data).class,(p->data).Cmark);
printf("%-11d%-11d",(p->data).math,(p->data).allmark);
printf("%-7d%",(p->data).rank);
printf("%-7s%-2s\n",(p->data).psword,(p->data).account);
i++;
getchar();
printf("請確認,是否真的修改,修改請按‘y’,否則按任意鍵后退出~~~\n");
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
{
printf("請輸入新的班級\n");
scanf("%d",&((p->data).class));
printf("修改名字成功\n");
}
}
p=p->next;
}
printlist(head);
student_write_save(head);
getchar();
getchar();
return 1;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
int rep_student_num()
{
studlist p=NULL,head=NULL;
head=student_read_display();
p=head;
int num,i=0;
char ch;
printf("請輸入要修改學生的學號\n");
scanf("%d",&num);
while(p!=NULL)
{
if(((p->data).num)==num)
{
printf("姓名 學號 班級 C語言成績 數(shù)學成績 總成績 名次 密碼 帳號 \n");
printf("%-10s%-8d",(p->data).name,(p->data).num);
printf("%-8d%-10d",(p->data).class,(p->data).Cmark);
printf("%-11d%-11d",(p->data).math,(p->data).allmark);
printf("%-7d%",(p->data).rank);
printf("%-7s%-2s\n",(p->data).psword,(p->data).account);
i++;
getchar();
printf("請確認,是否真的修改,修改請按‘y’,否則按任意鍵后退出~~~\n");
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
{
printf("請輸入新的學號\n");
scanf("%d",&((p->data).num));
printf("修改名字成功\n");
}
}
p=p->next;
}
printlist(head);
student_write_save(head);
getchar();
getchar();
return 1;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
void get_data(char *name) //得到一個字符串
{
int i=20;
scanf("%s",name);
i=get_cmp_data(name,20); //檢測輸入的字符串是否越界
while(i==1)
{
printf("輸入錯誤,請重新輸入\n");
scanf("%s",name);
i=get_cmp_data(name,20); //檢測輸入的字符串是否越界
}
}
studlist get_num(int *m,studlist head) //得到學號
{
int n=1000;
studlist p=head,tail=NULL;
if(head==NULL) //判斷是否為空連表
{
*m=n;
}
else
{
while(p!=NULL)
{
tail=p;
p=p->next;
}
*m=(tail->data).num+1; //不為空連表的的時候就是前一個連表的學號加一
}
return head;
}
int rep_student_name()
{
studlist p=NULL,head=NULL;
head=student_read_display();
p=head;
char name[20]={0},ch;
int i=0;
printf("請輸入你要修改學生的姓名\n");
scanf("%s",name);
while(p!=NULL)
{
if(strcmp(((p->data).name),name)==0 )
{
printf("姓名 學號 班級 C語言成績 數(shù)學成績 總成績 名次 密碼 帳號 \n");
printf("%-10s%-8d",(p->data).name,(p->data).num);
printf("%-8d%-10d",(p->data).class,(p->data).Cmark);
printf("%-11d%-11d",(p->data).math,(p->data).allmark);
printf("%-7d%",(p->data).rank);
printf("%-7s%-2s\n",(p->data).psword,(p->data).account);
i++;
getchar();
printf("請確認,是否真的修改,修改請按‘y’,否則按任意鍵后退出~~~\n");
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
{
printf("請輸入你的新名字\n");
get_data((p->data).name);
printf("修改名字成功\n");
}
}
p=p->next;
}
if(i==0)
{
printf("沒有叫%s的學生\n",name);
}
printlist(head);
student_write_save(head);
getchar();
getchar();
return 1;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
int rep_student()
{
int RepFlag=0; //修改學生信息的標志
int rep_state=REP_MENU; //打印修改學生信息的信息
while(1)
{
if(RepFlag)
{
break;
}
switch(rep_state)
{
case REP_MENU: rep_state=rep_menu(rep_state); //修改學生的目錄
break;
case REP_STUDENT_NAME: rep_state=rep_student_name(); //修改學生的姓名信息
break;
case REP_STUDENT_NUM: rep_state=rep_student_num(); //修改學生的學號信息
break;
case REP_STUDENT_CLASS: rep_state=rep_student_class(); //修改學生的班級信息
break;
case REP_STUDENT_MARK: rep_state=rep_student_mark(); //修改學生的成績信息
break;
case REP_STUDENT_EXIT: RepFlag=1; //退出修改學生的信息欄
break;
}
}
return 1;
}
int rep_tea_menu(int rep_tea_state)
{
int n;
system("clear");
printf("\t\t*************************************************\n");
printf("\t\t*************************************************\n");
printf("\t\t\t\t1.修改姓名信息\n"); //打印順序修改老師的信息
printf("\t\t\t\t2.修改班級信息\n");
printf("\t\t\t\t3.修改密碼\n");
printf("\t\t\t\t4.修改帳號信息\n");
printf("\t\t\t\t0.退出修改信息欄\n");
printf("\t\t*************************************************\n");
printf("\t\t*************************************************\n");
scanf("%d",&n);
getchar();
if(n<0||n>4)
{
printf("輸入錯誤,請按enter鍵后重新輸入~~~~\n");
getchar();
return 1;
}
else
{
n=rep_tea_state*10+n;
}
return n;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
int rep_tea_name() //修改老師的名字
{
char name[20]={0},ch;
int i=0;
tealist p=NULL,head=NULL;
head=read_display();
p=head;
printf("請輸入你要修改老師的姓名\n");
scanf("%s",name);
while(p!=NULL)
{
if(strcmp(((p->data).name),name)==0 )
{
printf("姓名 班級 性別 密碼 帳號 \n");
printf("%-10s%-8d",(p->data).name,(p->data).class);
printf("%-5c",(p->data).sex);
printf("%-7s%-2s\n",(p->data).psword,(p->data).account);
i++;
getchar();
printf("請確認,是否真的修改,修改請按‘y’,否則按任意鍵后退出~~~\n");
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
{
printf("請輸入你的新名字\n");
gettea_data((p->data).name);
printf("修改名字成功\n");
}
}
p=p->next;
}
if(i==0)
{
printf("沒有叫%s的老師\n",name);
}
write_save(head);
printtealist(head);
printf("按任意鍵退出\n");
getchar();
getchar();
getchar();
return 1;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
int rep_tea_class()
{
char name[20]={0},ch;
int i=0;
tealist p=NULL,head=NULL;
head=read_display();
p=head;
printf("請輸入你要修改老師的姓名\n");
scanf("%s",name);
while(p!=NULL)
{
if(strcmp(((p->data).name),name)==0 )
{
printf("姓名 班級 性別 密碼 帳號 \n");
printf("%-10s%-8d",(p->data).name,(p->data).class);
printf("%-5c",(p->data).sex);
printf("%-7s%-2s\n",(p->data).psword,(p->data).account);
i++;
getchar();
printf("請確認,是否真的修改,修改請按‘y’,否則按任意鍵后退出~~~\n");
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
{
printf("請輸入你的新班級 \n");
scanf("%d",&(p->data).class);
printf("修改班級 成功\n");
}
}
p=p->next;
}
if(i==0)
{
printf("沒有叫%s的老師\n",name);
}
write_save(head);
printtealist(head);
printf("按任意鍵退出\n");
getchar();
getchar();
getchar();
return 1;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
int rep_tea_psword()
{
char name[20]={0},ch;
int i=0;
tealist p=NULL,head=NULL;
head=read_display();
p=head;
printf("請輸入你要修改老師的姓名\n");
scanf("%s",name);
while(p!=NULL)
{
if(strcmp(((p->data).name),name)==0 )
{
printf("姓名 班級 性別 密碼 帳號 \n");
printf("%-10s%-8d",(p->data).name,(p->data).class);
printf("%-5c",(p->data).sex);
printf("%-7s%-2s\n",(p->data).psword,(p->data).account);
i++;
getchar();
printf("請確認,是否真的修改,修改請按‘y’,否則按任意鍵后退出~~~\n");
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
{
printf("請輸入你的新密碼\n");
gettea_data((p->data).psword);
printf("修改密碼成功\n");
}
}
p=p->next;
}
if(i==0)
{
printf("沒有%s的老師\n",name);
}
write_save(head);
printtealist(head);
printf("按任意鍵退出\n");
getchar();
getchar();
getchar();
return 1;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
int rep_tea_account()
{
char name[20]={0},ch;
int i=0;
tealist p=NULL,head=NULL;
head=read_display();
p=head;
printf("請輸入你要修改老師的姓名\n");
scanf("%s",name);
while(p!=NULL)
{
if(strcmp(((p->data).name),name)==0 )
{
printf("姓名 班級 性別 密碼 帳號 \n");
printf("%-10s%-8d",(p->data).name,(p->data).class);
printf("%-5c",(p->data).sex);
printf("%-7s%-2s\n",(p->data).psword,(p->data).account);
i++;
getchar();
printf("請確認,是否真的修改,修改請按‘y’,否則按任意鍵后退出~~~\n");
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
{
printf("請輸入你的新密碼\n");
gettea_data((p->data).account);
printf("修改密碼成功\n");
}
}
p=p->next;
}
if(i==0)
{
printf("沒有%s的老師\n",name);
}
write_save(head);
printtealist(head);
printf("按任意鍵退出\n");
getchar();
getchar();
getchar();
return 1;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////
int rep_teacher()
{
int RepTeacherFlag=0; //修改老師信息的標志
int rep_tea_state=REP_TEA_MENU; //打印修改老師信息的信息
while(1)
{
if(RepTeacherFlag)
{
break;
}
switch(rep_tea_state)
{
case REP_TEA_MENU: rep_tea_state=rep_tea_menu(rep_tea_state); //修改老師的目錄
break;
case REP_TEA_NAME: rep_tea_state=rep_tea_name(); //修改老師的姓名信息
break;
case REP_TEA_CLASS: rep_tea_state=rep_tea_class(); //修改老師的班級信息
break;
case REP_TEA_PSWORD: rep_tea_state=rep_tea_psword(); //修改老師的密碼
break;
case REP_TEA_ACCOUNT: rep_tea_state=rep_tea_account(); //修改老師的帳號信息
break;
case REP_TEA_EXIT: RepTeacherFlag=1; //退出修改老師的信息欄
break;
}
}
return 1;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int get_cmp_data(char *name,int j) //比較一組字符串
{
int i=0;
char *p=name;
while(*p!='\0')
{
i++;
p++;
}
if(i>j-1)
{
return 1; //輸入的字符太長,不符合要求返回1
}
else
{
return 0; //輸入的字符在規(guī)定的范圍,返回0
}
}
studlist add_student(studlist head) //添加學生的函數(shù)
{
studlist p=head,tail=NULL,s=NULL;
char ch='y';
printf("請按 姓名\t班級\tC語言成績\t數(shù)學成績\t名次\n ");
while(ch=='y'||ch=='Y')
{
p=head;
s=(studlist)malloc(sizeof(studlink));
if(s==NULL) //判斷分配空間是否正確
{
printf("分配空間失敗\n");
return 0;
}
get_data((s->data).name);
head=get_num(&((s->data).num),head); //必須使用后插連表得到學號
scanf("%d",&((s->data).class));
scanf("%d",&((s->data).Cmark));
scanf("%d",&((s->data).math));
((s->data).allmark)=((s->data).math)+((s->data).Cmark);
scanf("%d",&((s->data).rank));
strcpy((s->data).psword,(s->data).name); //使用的c語言庫函數(shù)將密碼和帳號都賦值為a
strcpy((s->data).account,(s->data).name);
if(head==NULL)
{
head=s;
head->next=NULL;
}
else
{
while(p!=NULL) //尋找最后的節(jié)點
{
tail=p;
p = p->next;
}
tail->next=s;
//head=s;
tail = s;
s->next=NULL;
}
getchar();
printf("添加成功繼續(xù)添加,請按‘y’,否則按任意鍵退出~~~~\n"); //判斷是否繼續(xù)添加學生
scanf("%c",&ch);
}
return head;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int creat() //選擇創(chuàng)建的格式
{
studlist head=NULL;
head=add_student(head);
student_write_save(head);
}
int add() //選擇添加的格式
{
studlist head=NULL;
head=student_read_display();
head=add_student(head);
student_write_save(head);
}
int login_student() //登錄注冊學生的界面
{
studlist head=NULL;
int n;
char ch;
printf("你選擇是新建還是添加\n");
printf("新建按1,添加按2\n");
scanf("%d",&n);
getchar();
while(n!=1&&n!=2)
{
printf("輸入錯誤,繼續(xù)重新輸入按‘y’或者按任意鍵后enter退出\n");
ch=getchar();
getchar();
if(ch=='y'||ch=='Y')
{
printf("重新輸入你選擇是新建還是添加\n");
scanf("%d",&n);
}
else
{
return 1;
}
}
switch(n)
{
case 1:creat();
break;
case 2:add();
break;
}
return 1;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int che_student1()
{
studlist head=NULL;
head=student_read_display();
printlist(head);
getchar();
return 1;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int creat_tea() //選擇創(chuàng)建的格式
{
tealist head=NULL;
head=add_teacher(head);
write_save(head);
}
int add_tea() //選擇添加的格式
{
tealist head=NULL;
head=read_display();
head=add_teacher(head);
write_save(head);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int login_teacher()
{
int n;
char ch;
printf("你選擇是新建還是添加\n");
printf("新建按1,添加按2\n");
scanf("%d",&n);
getchar();
while(n!=1&&n!=2)
{
printf("輸入錯誤,繼續(xù)重新輸入按‘y’或者按任意鍵后enter退出\n");
ch=getchar();
getchar();
if(ch=='y'||ch=='Y')
{
printf("重新輸入你選擇是新建還是添加\n");
scanf("%d",&n);
}
else
{
return 1;
}
}
switch(n)
{
case 1:creat_tea();
break;
case 2:add_tea();
break;
}
return 1;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int del_student()
{
studlist p=NULL,head=NULL,tail=NULL;/////////////////////////////////////////////
head=student_read_display();
p=head;
int n;
char ch='y';
if(p==NULL) //判斷傳入的連表是否唯空
{
printf("empty list\n");
}
while(ch=='y'||ch=='Y')
{
printf("請輸入刪除學生的學號 \n");
scanf("%d",&n);
getchar();
while(n<1000) //初步的判斷學號是否正確
{
printf("學號錯誤,請重新輸入\n");
scanf("%d",&n);
getchar();
}
if((p->data).num==n) //刪除的是第一個學號的處理
{
head=head->next;
}
else
{
while(p!=NULL&&(p->data).num!=n) //必須將p指針判斷不為null放在前面
{
tail=p;
p=p->next;
}
if(p==NULL)
{
printf("沒有你要刪除的學好\n");
}
else
{
tail->next=p->next; //刪除成功的處理
printf("刪除成功\n");
}
}
getchar();
printf("繼續(xù)刪除請按‘y’,否則按任意鍵于enter結束\n");
scanf("%c",&ch);
}
printlist(head);
student_write_save(head);
printf("按任意鍵退出\n");
getchar();
getchar();
return 1;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int dis_teacher()
{
tealist head=NULL;
head=read_display();
printtealist(head);
getchar();
getchar();
return 1;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int del_teacher()
{
char name[20]={0},ch;
int i=0;
tealist head=NULL,p=NULL,tail=NULL;
head=read_display();
p=head;
printf("請輸入你要刪除的老師的姓名\n");
scanf("%s",name);
while(p!=NULL)
{
if(strcmp(((head->data).name),name)==0)
{
head=head->next;
printf("姓名 班級 性別 密碼 帳號 \n");
printf("%-10s%-8d",(p->data).name,(p->data).class);
printf("%-5c",(p->data).sex);
printf("%-7s%-2s\n",(p->data).psword,(p->data).account);
i++;
}
else if(strcmp(((p->data).name),name)==0)
{
printf("姓名 班級 性別 密碼 帳號 \n");
printf("%-10s%-8d",(p->data).name,(p->data).class);
printf("%-5c",(p->data).sex);
printf("%-7s%-2s\n",(p->data).psword,(p->data).account);
i++;
getchar();
printf("請確認,是否真的修改,修改請按‘y’,否則按任意鍵后退出~~~\n");
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
{
tail->next=p->next;
}
}
tail=p;
p=p->next;
}
if(i==0)
{
printf("沒有%s的老師\n",name);
}
printtealist(head);
write_save(head);
getchar();
getchar();
return 1;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int enter_admin_main()
{
int AdminFlag=0; //管理員循環(huán)標志
int admin_state=ADMIN_MENU; //打印管理員管理信息
while(1)
{
if(AdminFlag)
{
break;
}
switch(admin_state)
{
case ADMIN_MENU: admin_state=print_admin_menu(admin_state);//打印管理員項目
break;
case LOGIN_STUDENT: admin_state=login_student(); //添加學生的信息
break;
case CHE_STUDENT: admin_state=che_student1(); //查看學生的信息
break;
case DEL_STUDENT: admin_state=del_student(); //刪除學生的信息//
break;
case DIS_STUDENT: admin_state=dis_student(); //顯示所有學生的信息
break;
case REP_STUDENT: admin_state=rep_student() ; //修改學生的信息
break;
case LOGIN_TEACHER: admin_state=login_teacher(); //添加老師的信息
break;
case DEL_TEACHER: admin_state=del_teacher(); //刪除老師的信息
break;
case DIS_TEACHER: admin_state=dis_teacher(); //顯示所有老師的信息
break;
case REP_TEACHER: admin_state=rep_teacher(); //修改老師的信息
break;
case EXIT_ADMIN: AdminFlag=1; //退出
break;
}
}
return -1;
}
老師界面:
#include "tea.h"
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////
int gettea_cmp_data(char *name,int j) //比較一組字符串
{
int i=0;
char *p=name;
while(*p!='\0')
{
i++;
p++;
}
if(i>j-1)
{
return 1; //輸入的字符太長,不符合要求返回1
}
else
{
return 0; //輸入的字符在規(guī)定的范圍,返回0
}
}
void gettea_data(char *name) //得到一個字符串
{
int i=20;
scanf("%s",name);
i=gettea_cmp_data(name,20); //檢測輸入的字符串是否越界
while(i==1)
{
printf("輸入錯誤,請重新輸入\n");
scanf("%s",name);
i=gettea_cmp_data(name,20); //檢測輸入的字符串是否越界
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
tealist add_teacher(tealist head) //添加老師的函數(shù)
{
tealist p=NULL,tail=NULL,s=NULL;
char ch='y';
printf("請按 姓名\t班級\t性別\n ");
while(ch=='y'||ch=='Y')
{
p=head;
s=(tealist)malloc(sizeof(tealink));
if(s==NULL) //判斷分配空間是否正確
{
printf("分配空間失敗\n");
return 0;
}
gettea_data((s->data).name);
scanf("%d",&((s->data).class));
getchar();
scanf("%c",&((s->data).sex));
strcpy((s->data).psword,(s->data).name); //使用的c語言庫函數(shù)將密碼和帳號都賦值為a
strcpy((s->data).account,(s->data).name);
if(head==NULL)
{
head=s;
head->next=NULL;
}
else
{
while(p!=NULL) //尋找最后的節(jié)點
{
tail=p;
p = p->next;
}
tail->next=s;
//head=s;
tail = s;
s->next=NULL;
}
getchar();
printf("添加成功繼續(xù)添加,請按‘y’,否則按任意鍵退出~~~~\n"); //判斷是否繼續(xù)添加學生
scanf("%c",&ch);
}
return head;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
int print_tea_menu(int tea_state)
{
int n;
system("clear");
printf("\t\t*************************************************\n");
printf("\t\t*************************************************\n");
printf("\t\t\t\t1.查看個人信息\n");
printf("\t\t\t\t2.修改個人密碼\n");
printf("\t\t\t\t3.查看學生的信息\n");
printf("\t\t\t\t4.顯示所有學生的信息\n");
printf("\t\t\t\t5.修改學生的信息\n");
printf("\t\t\t\t0.退出\n");
printf("\t\t*************************************************\n");
printf("\t\t*************************************************\n");
scanf("%d",&n);
getchar();
if(n<0||n>5)
{
printf("輸入錯誤,請按enter鍵后重新輸入~~~~\n");
getchar();
return 1;
}
else
{
n=tea_state*10+n;
}
return n;
}
///////////////////////////////////////////////////////////////////////////////////////////
int write_save(tealist head)
{
tealist p=head;
FILE *fp=NULL;
fp=fopen("teacher","wb");
if(fp==NULL)
{
printf("open the file error!\n");
}
while(p)
{
fwrite(p,sizeof(tealink),1,fp);
p=p->next;
}
fclose(fp);
return 0;
}
tealist read_display()
{
tealist head = NULL,s = NULL,tail=NULL;
FILE *fp=NULL;
int read_value=0;
fp=fopen("teacher","rb");
if(fp == NULL)
{
printf("open the file error!display()\n");
return NULL;
}
s=(tealist)malloc(sizeof(tealink));
while((read_value=fread(s,sizeof(tealink),1,fp))==1)
{
if(head==NULL)
{
head=s;
tail=s;
head->next=NULL;
}
else
{
tail->next=s;
tail=s;
tail->next=NULL;
}
s=(tealist)malloc(sizeof(tealink));
}
free(s);
fclose(fp);
return head;
}
///////////////////////////////////////////////////////////////////////////////////////////
int compare_tea_psword(char name[]) //通過姓名查找學生
{
tealist head=NULL,p=NULL;
head=read_display();
p=head;
int i=0,n=4;
while(p!=NULL)
{
if((n=strcmp(((p->data).psword),name))==0 ) //判斷是否是這個班級的
{
i++;
}
p=p->next;
}
if(i==0)
{
printf("沒有為%s的密碼\n",name);
}
write_save(head);
return n;
}
int compare_tea_account(char name[]) //通過姓名查找學生
{
tealist head=NULL,p=NULL;
head=read_display();
p=head;
int i=0,n=4;
while(p!=NULL)
{
if((n=strcmp(((p->data).account),name))==0 ) //判斷是否是這個班級的
{
i++;
}
p=p->next;
}
if(i==0)
{
printf("沒有為%s的帳號\n",name);
}
write_save(head);
return n;
}
///////////////////////////////////////////////////////////////////////////////////////////
int tea_main_menu()
//int main()
{
char a[20]={0},b[20]={0};
int n=0,m=0,x=3;
char y;
while(x>0)
{
if(x==3)
{
printf("你至多輸入%d次\n",x);
}
else
{
system("clear");
print_welcome();
print_select();
printf("你還可以輸入%d次\n",x);
}
get_account_password(a,1);
get_account_password(b,2);
n=compare_tea_psword(a);
m=compare_tea_account(b);
if(m!=0||n!=0)
{
if(m!=0&&n!=0)
{
printf("你的帳號和密碼都輸入錯誤\n");
}
if(m!=0&&n==0)
{
printf("你的帳號輸入錯誤\n");
}
if(n!=0&&m==0)
{
printf("你的密碼輸入錯誤\n");
}
printf("你想退出請按'y',繼續(xù)請按'n'\n");
scanf("%c",&y);
getchar();
x--;
}
if(y=='y')
{
return 10;
}
if((m==0)&&(n==0))
{
//x=-1;
x=enter_tea_main(); // x小于0就退出
}
}
return 1;
}
//////////////////////////////////////////////////////////////////////////////////////////
int tea_che_student()
{
che_student1();
return 1;
}
/////////////////////////////////////////////////////////////////////////////////////////////
int tea_rep_tea()
{
rep_teacher();
return 1;
}
////////////////////////////////////////////////////////////////////////////////////////////
int tea_rep_student()
{
rep_student();
return 1;
}
///////////////////////////////////////////////////////////////////////////////////////////
int tea_dis_student()
{
dis_student();
return 1;
}
/////////////////////////////////////////////////////////////////////////////////////////////
void printtealist(tealist head) //打印連表
{
tealist p=head;
if(head==NULL) //判斷連表是否唯空
{
printf("empty list\n");
}
while(p!=NULL)
{
printf("姓名 班級 性別 密碼 帳號 \n");
printf("%-10s%-8d",(p->data).name,(p->data).class);
printf("%-5c",(p->data).sex);
printf("%-7s%-2s\n",(p->data).psword,(p->data).account);
p=p->next;
}
}
/////////////////////////////////////////////////////////////////////////////////////////////
int tea_che_tea()
{
char name[20]={0};
int i=0;
tealist p=NULL,head=NULL;
head=read_display();
p=head;
printf("請輸入老師的姓名\n");
scanf("%s",name);
while(p!=NULL)
{
if(strcmp(((p->data).name),name)==0 )
{
printf("姓名 班級 性別 密碼 帳號 \n");
printf("%-10s%-8d",(p->data).name,(p->data).class);
printf("%-5c",(p->data).sex);
printf("%-7s%-2s\n",(p->data).psword,(p->data).account);
i++;
}
p=p->next;
}
if(i==0)
{
printf("沒有%s的老師\n",name);
}
write_save(head);
printf("按任意鍵退出\n");
getchar();
getchar();
getchar();
return 1;
}
///////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////
int enter_tea_main()
{
int TeaFlag=0; //教師循環(huán)標志
int tea_state=TEA_MENU; //打印教師管理信息
while(1)
{
if(TeaFlag)
{
break;
}
switch(tea_state)
{
case TEA_MENU: tea_state=print_tea_menu(tea_state); //打印教師項目
break;
case TEA_CHE_TEA: tea_state=tea_che_tea() ; //查看自己的信息
break;
case TEA_REP_TEA: tea_state=tea_rep_tea() ; //教師修改自己的信息
break;
case TEA_CHE_STUDENT: tea_state=tea_che_student(); //教師查看學生的信息
break;
case TEA_DIS_STUDENT: tea_state=tea_dis_student(); //教師顯示所有學生的信息
break;
case TEA_REP_STUDENT: tea_state=tea_rep_student(); //教師修改學生的信息
break;
case EXIT_TEA: TeaFlag=1; //自己退出
break;
}
}
return -1;
}
老師界面:
學生界面 :
#include "stu.h"
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
studlist student_read_display()
{
studlist head = NULL,s = NULL,tail=NULL;
FILE *fp=NULL;
int read_value=0;
fp=fopen("student3","rb");
if(fp == NULL)
{
printf("open the file error!display()\n");
return NULL;
}
s=(studlist)malloc(sizeof(studlink));
while((read_value=fread(s,sizeof(studlink),1,fp))==1)
{
if(head==NULL)
{
head=s;
tail=s;
head->next=NULL;
}
else
{
tail->next=s;
tail=s;
tail->next=NULL;
}
s=(studlist)malloc(sizeof(studlink));
}
free(s);
fclose(fp);
return head;
}
int student_write_save(studlist head)
{
studlist p=head;
FILE *fp=NULL;
fp=fopen("student3","wb");
if(fp==NULL)
{
printf("open the file error!\n");
}
while(p)
{
fwrite(p,sizeof(studlink),1,fp);
p=p->next;
}
fclose(fp);
return 0;
}
//////////////////////////////////////////////////////////////////////////////////////////
int print_stu_menu(int stu_state)
{
int n;
system("clear");
printf("\t\t*************************************************\n");
printf("\t\t*************************************************\n");
printf("\t\t\t\t1.查看個人信息\n");
printf("\t\t\t\t2.修改個人信息\n");
printf("\t\t\t\t0.退出\n");
printf("\t\t*************************************************\n");
printf("\t\t*************************************************\n");
scanf("%d",&n);
getchar();
if(n<0||n>2)
{
printf("輸入錯誤,請按enter鍵后重新輸入~~~~\n");
getchar();
return 1;
}
else
{
n=stu_state*10+n;
}
return n;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////
void printlist(studlist head) //打印連表
{
studlist p=head;
if(head==NULL) //判斷連表是否唯空
{
printf("empty list\n");
}
while(p!=NULL)
{
printf("姓名 學號 班級 C語言成績 數(shù)學成績 總成績 名次 密碼 帳號 \n");
printf("%-10s%-8d",(p->data).name,(p->data).num);
printf("%-8d%-10d",(p->data).class,(p->data).Cmark);
printf("%-11d%-11d",(p->data).math,(p->data).allmark);
printf("%-7d%",(p->data).rank);
printf("%-7s%-2s\n",(p->data).psword,(p->data).account);
p=p->next;
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
int compare_psword(char name[]) //通過姓名查找學生
{
studlist head=NULL;
head=student_read_display();
int i=0,n=4;
studlist p=head;
while(p!=NULL)
{
if((n=strcmp(((p->data).psword),name))==0 ) //判斷是否是這個班級的
{
i++;
}
p=p->next;
}
if(i==0)
{
printf("沒有為%s的密碼\n",name);
}
student_write_save(head);
return n;
}
int compare_account(char name[]) //通過姓名查找學生
{
studlist head=NULL;
head=student_read_display();
int i=0,n=4;
studlist p=head;
while(p!=NULL)
{
if((n=strcmp(((p->data).account),name))==0 ) //判斷是否是這個班級的
{
i++;
}
p=p->next;
}
if(i==0)
{
printf("沒有為%s的帳號\n",name);
}
student_write_save(head);
return n;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
//int main()
int stu_main_menu()
{
char a[20]={0},b[20]={0};
int n=0,m=0,x=3;
char y;
while(x>0)
{
if(x==3)
{
printf("你至多輸入%d次\n",x);
}
else
{
system("clear");
print_welcome();
print_select();
printf("你還可以輸入%d次\n",x);
}
get_account_password(a,1);
get_account_password(b,2);
n=compare_psword(a);
m=compare_account(b);
if(m!=0||n!=0)
{
if(m!=0&&n!=0)
{
printf("你的帳號和密碼都輸入錯誤\n");
}
if(m!=0&&n==0)
{
printf("你的帳號輸入錯誤\n");
}
if(n!=0&&m==0)
{
printf("你的密碼輸入錯誤\n");
}
printf("你想退出請按'y',繼續(xù)請按'n'\n");
scanf("%c",&y);
getchar();
x--;
}
if(y=='y')
{
return 10;
}
if((m==0)&&(n==0))
{
//x=-1;
x=enter_stu_main(); // x小于0就退出
}
}
return 1;
}
int stu_rep_menu(int stu_rep_state)
{
int n;
system("clear");
printf("\t\t*************************************************\n");
printf("\t\t*************************************************\n");
printf("\t\t\t\t1.修改密碼\n");
printf("\t\t\t\t2.修改帳號\n");
printf("\t\t\t\t0.退出修改信息欄\n");
printf("\t\t*************************************************\n");
printf("\t\t*************************************************\n");
scanf("%d",&n);
getchar();
if(n<0||n>2)
{
printf("輸入錯誤,請按enter鍵后重新輸入~~~~\n");
getchar();
return 1;
}
else
{
n=stu_rep_state*10+n;
}
return n;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
void rep_stu_psword() //修改密碼的函數(shù)
{
char name[20]={0},ch;
int i=0;
studlist head=NULL,p=NULL;
head=student_read_display();
p=head;
printf("請輸入你要修改學生的密碼\n");
scanf("%s",name);
while(p!=NULL)
{
if(strcmp(((p->data).psword),name)==0 )
{
printf("姓名 學號 班級 C語言成績 數(shù)學成績 總成績 名次 密碼 帳號 \n");
printf("%-10s%-8d",(p->data).name,(p->data).num);
printf("%-8d%-10d",(p->data).class,(p->data).Cmark);
printf("%-11d%-11d",(p->data).math,(p->data).allmark);
printf("%-7d%",(p->data).rank);
printf("%-7s%-2s\n",(p->data).psword,(p->data).account);
i++;
getchar();
printf("請確認,是否真的修改,修改請按‘y’,否則按任意鍵后退出~~~\n");
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
{
printf("請輸入你的新密碼\n");
get_data((p->data).psword);
printf("修改密碼成功\n");
}
}
p=p->next;
}
if(i==0)
{
printf("沒有叫%s的學生\n",name);
}
printlist(head);
student_write_save(head);
}
////////////////////////////////////////////////////////////////////////////////////////////////////
void rep_stu_account() //修改帳號函數(shù)
{
char name[20]={0},ch;
int i=0;
studlist head=NULL,p=NULL;
head=student_read_display();
p=head;
printf("請輸入你要修改學生的帳號\n");
scanf("%s",name);
while(p!=NULL)
{
if(strcmp(((p->data).account),name)==0 )
{
printf("姓名 學號 班級 C語言成績 數(shù)學成績 總成績 名次 密碼 帳號 \n");
printf("%-10s%-8d",(p->data).name,(p->data).num);
printf("%-8d%-10d",(p->data).class,(p->data).Cmark);
printf("%-11d%-11d",(p->data).math,(p->data).allmark);
printf("%-7d%",(p->data).rank);
printf("%-7s%-2s\n",(p->data).psword,(p->data).account);
i++;
getchar();
printf("請確認,是否真的修改,修改請按‘y’,否則按任意鍵后退出~~~\n");
scanf("%c",&ch);
getchar();
if(ch=='Y'||ch=='y')
{
printf("請輸入你的新帳號\n");
get_data((p->data).account);
printf("修改帳號成功\n");
}
}
p=p->next;
}
if(i==0)
{
printf("沒有以%s的帳號\n",name);
}
printlist(head);
student_write_save(head);
}
/////////////////////////////////////////////////////////////////////////////////////
int stu_che_stu() //查看學生的信息
{
char name[20]={0},ch;
int i=0;
studlist head=NULL,p=NULL;
head=student_read_display();
p=head;
printf("請輸入你要修改學生的帳號\n");
scanf("%s",name);
getchar();
while(p!=NULL)
{
if(strcmp(((p->data).account),name)==0 )
{
printf("姓名 學號 班級 C語言成績 數(shù)學成績 總成績 名次 密碼 帳號 \n");
printf("%-10s%-8d",(p->data).name,(p->data).num);
printf("%-8d%-10d",(p->data).class,(p->data).Cmark);
printf("%-11d%-11d",(p->data).math,(p->data).allmark);
printf("%-7d%",(p->data).rank);
printf("%-7s%-2s\n",(p->data).psword,(p->data).account);
i++;
}
p=p->next;
}
if(i==0)
{
printf("沒有以%s的帳號\n",name);
}
student_write_save(head);
getchar();
return 1;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
int stu_rep_student_psword()
{
rep_stu_psword();
printf("按任意鍵退出\n");
getchar();
getchar();
getchar();
return 1;
}
int stu_rep_student_account()
{
rep_stu_account();
printf("按任意鍵退出\n");
getchar();
getchar();
getchar();
return 1;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
int stu_rep_stu()
{
int StuRepFlag=0; //修改學生信息的標志
int stu_rep_state=STU_REP_MENU; //打印修改學生信息的信息
while(1)
{
if(StuRepFlag)
{
break;
}
switch(stu_rep_state)
{
case STU_REP_MENU: stu_rep_state=stu_rep_menu(stu_rep_state); //修改目錄
break;
case STU_REP_STUDENT_PSWORD: stu_rep_state=stu_rep_student_psword(); //修改密碼
break;
case STU_REP_STUDENT_ACCOUNT:stu_rep_state=stu_rep_student_account(); //修改帳號信息
break;
case STU_REP_STUDENT_EXIT: StuRepFlag=1; //退出修改信息欄
break;
}
}
return 1;
}
int enter_stu_main()
{
int StuFlag=0; //學生循環(huán)標志
int stu_state=STU_MENU; //打印學生管理信息
while(1)
{
if(StuFlag)
{
break;
}
switch(stu_state)
{
case STU_MENU: stu_state=print_stu_menu(stu_state); //打印學生項目
break;
case STU_CHE_STU: stu_state=stu_che_stu(); //查看自己的信息
break;
case STU_REP_STU: stu_state=stu_rep_stu(); //修改自己的信息
break;
case STU_EXIT_STU: StuFlag=1; //退出自己的信息
break;
}
}
return -1;
}