-將管理員的初始密碼設置為123abc。
************************************************************************/
# include & ltstdio.h & gt
# include & ltstring.h & gt
# include & ltstdlib.h & gt
# include & ltconio.h & gt
struct?Student/**** *定義結構類型struct?學生****/
{
int?id;
夏爾?名稱[20];
浮動?sql
浮動?c;
浮動?java
浮動?avg
};
typedef?struct?學生?斯圖;/* * * *重命名結構?學生是stu * * * */
作廢?學生_頭();?/* * * * * * * * * *打印頭信息* * * * * * * * * *
作廢?學生_打印();/* * * * * * * * *打印菜單信息* * * * * * * *
作廢?student _ printError();?/* * * * * * * * *打印錯誤消息* * * * * * * *
int?學生貸款(Stu?*);?/* * * * * * * * * *讀取功能* * * * * * * * * *
int?Student_judgeIdIsEntity(Stu?*,int);/* * * *判斷輸入的ID是否已被使用* * */
int?student _ judges core(float);?/* * * *判斷輸入的等級是否合法* * * * * * * *
int?學生_輸入(Stu?*,int);/* * * * * * * * * * * *輸入功能* * * * * * * * * *
int?學生_刪除(Stu?*,int);?/* * * * * * * * * *刪除函數* * * * * * * * * *
作廢?學生_輸出(Stu?*,int);/* * * * * * * * * * * *輸出功能* * * * * * * * * *
作廢?學生_線(Stu?*,int);/* * * * * * * * * * * *排序功能* * * * * * * * * *
作廢?學生_保存(Stu?*,int);/* * * * * * * * * * * *保存功能* * * * * * * * * *
int?student _ password(int);?/* * * * * * * *密碼驗證功能* * * * * * * * * *
作廢?學生_莫迪_密碼(Stu?*,int);?/* * * * * * * * * *修改密碼功能* * * * * * * * *
夏爾?密碼[7]= " 123 ABC ";?/* * * * * *定義密碼全局變量* * * * * *
Main()/* * * * * * * * * * * *主函數* * * * * * * * * *
{
斯圖?stud[100];?//用於存儲學生信息的結構數組
int?count = 0;?//存儲現有學生人數信息。
int?password 1;?//判斷用戶密碼。1表示輸入的密碼正確,0表示錯誤。
int?is read = 0;//判斷用戶是否看過原始保存的信息。
學生_頭();//打印頭信息
做
{
學生_打印();?//打印菜單
int?用戶;
scanf("%d ",& amp用戶);
如果(用戶?!=?1?& amp& amp?isRead==0)
{
student _ printError();
繼續;
}
開關(用戶)
{
案子?1:
count = Student _ loan ding(Stud);
isRead?=?1;
打破;
案子?2:
學生_莫迪_密碼(Stud,count);
打破;
案子?3:
count=Student_input(Stud,count);
Student_save(Stud,count);
打破;
案子?4:
Student_output(Stud,count);
打破;
案子?5:
password 1 = Student _ password(計數);
if(密碼1==1)
{
count=Student_delete(Stud,count);
Student_save(Stud,count);
}
不然呢?if(密碼1==0)
{
printf("\n\t\t?密碼連續3次輸入錯誤。您無權執行此操作。\ n \ n ");
}
其他
{
printf(" \ n \ n ");
}
打破;
案子?6:
Student_line(Stud,count);
Student_output(Stud,count);
打破;
案子?7:
Student_save(Stud,count);
打破;
案子?8:
退出(0);
打破;
默認值:
printf("\t\t┏━━━━━━━━━━━━━━━━━━━━━━┓”);
printf("\n\t\t┃?沒有此功能選項,請選擇1-8┃”);
printf("\n\t\t┗━━━━━━━━━━━━━━━━━━━━━━┛\n”);
}
} while(1);
}
作廢?學生_頭()?//打印頭信息
{
printf(“printf("〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
printf(" \ n \ t註意:①如果有記錄,請先閱讀。");
Printf("\n\t②如果沒有記錄,請先添加壹條記錄並保存。");
Printf("\n\t③數據在添加和刪除後會自動保存。");
Printf("\n\t④刪除和修改密碼需要密碼驗證。\ n ");
printf(" \ n-");
}
作廢?學生_打印()
{
printf("\n\t\t?┌┄┄┄┄┄┄?學生成績管理?┄┄┄┄┄┄┐");
printf("\n\t\t?┆?- ?┆");
printf("\n\t\t?┆1.?看學生信息?2.?修改管理員密碼?┆");
printf("\n\t\t?┆3.?添加學生信息?4.?查看學生信息?┆");
printf("\n\t\t?┆5.?刪除學生信息?6.?按平均分排序?┆");
printf("\n\t\t?┆7.?保存學生信息?8.?退出程序?┆");
printf("\n\t\t?└┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┘");
printf(" \ n \ t \ t \ t請選擇1-8:");
}
作廢?Student_printError()//打印錯誤消息
{
printf("\t\t┏━━━━━━━━━━━━━━━━━━━━━━┓”);
printf("\n\t\t┃?請先去獲取原始保存的信息。。。。?┃");
printf("\n\t\t┗━━━━━━━━━━━━━━━━━━━━━━┛\n”);
}
int?學生貸款(Stu?A[])//讀取函數
{
int?i=0,j = 0;
文件?* fp
fp=fopen("Student.txt "," r ");
if(fp==NULL)
{
printf("\t\t?┏━━━━━━━━━━━━━━━━━┓");
printf("\n\t\t?┃?沒有學生記錄可看?┃");
printf("\n\t\t?┗━━━━━━━━━━━━━━━━━┛\n\n”);
}
其他
{
fscanf(fp," %d ",& ampj);
fscanf(fp,“%s”,密碼);
for(I = 0;我& ltj;i++)?//fread(& amp;a[i],sizeof(Stu),1,FP);
{
fscanf(fp," %d ",& amp甲[我]。id);
fscanf(fp," %s ",a[i]。姓名);
fscanf(fp," %f ",& amp甲[我]。SQL);
fscanf(fp," %f ",& amp甲[我]。c);
fscanf(fp," %f ",& amp甲[我]。Java);
fscanf(fp," %f ",& amp甲[我]。avg);
}
printf("\t\t?┏━━━━━━━━━━━━━━━━━┓");
printf("\n\t\t?┃?成功讀取%2d學生記錄?┃",i);
printf("\n\t\t?┗━━━━━━━━━━━━━━━━━┛\n\n”);
fclose(FP);
}
返回(壹);
}
int?Student_judgeIdIsEntity(Stu?a[],int?id,int?N)//判斷用戶輸入的id是否可用。
{
int?我,弗拉格?=?1;
for(I = 0;我& ltn;i++){
如果(a[i]。id==id){
flage = 0;
打破;
}
}
回歸?flage
}
int?Student_judgeScore(浮動?分數)//判斷輸入的分數是否正確。
{
if(score & gt;=0?& amp& amp?得分& lt=100){
回歸?1;
}
否則{
printf("\t\t?等級無效,請重新輸入。\ n ");
回歸?0;
}
}
int?學生_輸入(Stu?a[],int?N)//輸入功能
{
夏爾?旗幟;
int?id;
浮動?sql,c,java
printf("\t\t?-\ n ");
做
{
printf("\t\t?請輸入學生信息:\ n”);
loopId:printf("\t\t?學號:“);
scanf("%d ",& ampid);
if(Student_judgeIdIsEntity(a,id,n)==1){
a[n]。id?=?id;
}
否則{
printf("\t\t?無效id,請重新輸入。\ n ");
goto?loopId
}
printf(" \ n ");
printf("\t\t?姓名:“);
scanf("%s ",a[n]。姓名);
printf(" \ n ");
loopSql:printf("\t\t?數據庫分數:“);
scanf("%f ",& ampSQL);
if(Student _ judges core(SQL)= = 1)
{
?a[n]。sql?=?sql
}
其他
{
?goto?loopSql
}
loopC:printf("\t\t?c?語言成績:“);
scanf("%f ",& ampc);
if(Student _ judges core(c)= = 1){
a[n]。c?=?c;
}
否則{
goto?loopC
}
loopJava:printf("\t\tJAVA?成就:“);
scanf("%f ",& ampJava);
if(Student _ judges core(Java)= = 1){
a[n]。java?=?java
}
否則{
goto?loopJava
}
a[n]。avg=(a[n]。sql+a[n]。c+a[n]。Java)/3;
n++;
printf(" \ n ");
printf("\n\t\t?繼續輸入學生信息?\ n ");
printf("\t\t?按任意鍵繼續,n退出”);
scanf("?%c "、& amp旗幟);
printf(" \ n ");
}while(flag!='n '?& amp& amp?旗幟!= ' N ');
printf("\t\t?-\ n \ n ");
返回(n);
}
int?學生_刪除(Stu?a[],int?n)?//刪除功能
{
int?I,j,d _ id
夏爾?旗幟;
斯圖?溫度;
做
{
printf("\n\t\t?請輸入您要刪除的學生的學號:“);
scanf("%d ",& ampd _ id);
for(I = 0;我& ltn;i++)
{
如果(a[i]。id==d_id)
打破;
}
如果(我& ltn)
{
printf("\n\t?刪除以下信息”);
printf(" \ n \ t-");
printf(" \ n \ t學生編號\ tName \數據庫\tC?語言\tJAVA編程\ tGPA ");
printf(" \ n \ t % d \ t % s \ t % 5.2f \ t % 5.2f \ t \ t % 5.2f \ n ",a[i]。id,a[i]。名字,壹個[我]。sql,a[i]。c,a[i]。java,a[i]。avg);
for(j = I;j & ltn-1;j++)
{
temp = a[j];
a[j]= a[j+1];
a[j+1]= temp;
}
n-;
}
其他
{
printf("\n\t\t?沒有您要刪除的學生數據!”);
}
printf("\n\t\t?繼續刪除學生數據?”);
printf("\n\t\t?按任意鍵繼續,n退出”);
scanf("?%c "、& amp旗幟);
}while(flag!='n '?& amp& amp?旗幟!= ' N ');
printf("\t\t?-\ n \ n ");
返回(n);
}
作廢?學生_輸出(Stu?a[],int?n)?//輸出功能
{
int?我;
printf(" \ n \ t-");
printf(" \ n \ t學生編號\ tName \數據庫\tC?language \ t Java programming \ tGPA \ n ");
for(I = 0;我& ltn;i++)
{
printf(" \ t % d \ t % s \ t % 5.2f \ t % 5.2f \ t % 5.2f \ t \ t % 5.2f \ n ",a[i]。id,a[i]。名字,壹個[我]。sql,a[i]。c,a[i]。java,a[i]。avg);
}
printf(" \ t-\ n \ n ");
}
作廢?學生_線(Stu?a[],int?N)//排序函數
{
int?I,j;
斯圖?溫度;
for(I = 0;我& ltn-1;i++)
{
for(j = I+1;j & ltn;j++)
{
如果(a[i]。平均值& lta[j]。平均值)
{
temp = a[I];
a[I]= a[I+1];
a[I+1]= temp;
}
}
}
}
作廢?學生_保存(Stu?a[],int?N)//保存功能
{
int?我;
文件?* fp
fp=fopen("Student.txt "," w ");
fprintf(fp," %d ",n);
fprintf(fp," \t%s\n ",密碼);
for(I = 0;我& ltn;i++)?//fwrite(a,sizeof(Stu),n,FP);
{
fprintf(fp," % d \ t % s \ t % 5.2f \ t % 5.2f \ t \ t % 5.2f \ t \ t % 5.2f \ n ",a[i]。id,a[i]。名字,壹個[我]。sql,a[i]。c,a[i]。java,a[i]。avg);
}
fclose(FP);
printf("\t\t?┏━━━━━━━━━━━━━━━━━┓");
printf("\n\t\t?┃?成功保存學生記錄?┃");
printf("\n\t\t?┗━━━━━━━━━━━━━━━━━┛\n”);
}
int?Student_password(int?N)//密碼驗證功能
{
int?l,I,j=0,k;
夏爾?通過[7];
夏爾?word[7];
文件?* fp
fp=fopen("Student.txt "," r ");
if(fp==NULL?||?n==0)
{
printf("\n\t\t?- ");
printf("\n\t\t?請先閱讀記錄。”);
printf("\n\t\t?沒有記錄請先添加!\ n ");
I = 2;
}
其他
{
fscanf(fp," %d ",& ampk);
fscanf(fp,“%s”,word);
fclose(FP);
printf("\n\t\t?- ");
printf("\n\t\t?請輸入密碼(6位數字):";
l = 0;
fflush(stdin);
做
{
pass[l]= getch();
printf(" * ");
l++;
}while(傳[l-1]!= ' \ r ');
pass[l-1]= ' \ 0 ';
while(j & lt;3)
{
j++;
if(strcmp(pass,word)==0)
{
I = 1;
打破;
}
其他
{
if(j & lt;3)
{
printf("\n\t\t?密碼錯誤,請重新輸入:“);
l = 0;
fflush(stdin);
做
{
pass[l]= getch();
printf(" * ");
l++;
}while(傳[l-1]!= ' \ r ');
pass[l-1]= ' \ 0 ';
}
I = 0;
}
}
}
printf("\n\t\t?- ");
返回(壹);
}
作廢?學生_莫迪_密碼(Stu?a[],int?N)//修改加密函數
{
int?密碼2;
int?I,l = 0;
password2 =學生_密碼(n);
if(密碼2==1)
{
printf("\n\t\t?請輸入新密碼(6位):";
fflush(stdin);
做
{
password[l]= getch();
printf(" * ");
l++;
}while(密碼[l-1]!= ' \ r ');
密碼[l-1]= ' \ 0 ';
文件?* fp
fp=fopen("Student.txt "," w ");
fprintf(fp," %d ",n);
fprintf(fp," \t%s\n ",密碼);
for(I = 0;我& ltn;i++)
{
fprintf(fp," % d \ t % s \ t % 5.2f \ t % 5.2f \ t \ t % 5.2f \ t \ t % 5.2f \ n ",a[i]。id,a[i]。名字,壹個[我]。sql,a[i]。c,a[i]。java,a[i]。avg);
}
fclose(FP);
printf("\n\t\t?密碼更改成功。\ n ");
printf("\t\t?-\ n \ n ");
}
不然呢?if(密碼2==0)
{
printf("\n\t\t?密碼連續3次輸入錯誤。您無權執行此操作。\ n ");
printf("\t\t?-\ n \ n ");
}
其他
{
printf(" \ n \ n ");
}
}