?? admin.cpp
字號:
//admin.cpp
//高級功能函數
#include "StdAfx.h"
#include "typedef.h"
#include "md5.H"
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <io.h>
#include <string.h>
// 名稱:admin_setprice
// 作用:重新設置停車價格
// 參數:空
// 返回值:修改成功:true
// 修改失敗:false
bool admin_setprice()
{
float price = 0.0;
printf("\n%s%f\n\n%s",*(p_language_print + 26),user.price,*(p_language_print + 27));/*當前價格為:*//*請輸入新的價格:*/
scanf("%f",&price);
user.price = price;
/********************************/
unsigned char username_md5[17], password_md5[17];
MD5_CTX md5; //初始化用于MD5的加密結構
MD5Init(&md5);
MD5Update(&md5,username_md5,strlen((char *)user.username)); //對欲加密的字符進行加密
MD5Final(username_md5,&md5);
MD5Update(&md5,password_md5,strlen((char *)user.password));
MD5Final(password_md5,&md5);
/********************************/
if ((fp_user = fopen("user.dat","w")) == 0)
{
printf("%s",*(p_language_print + 9));/*程序運行出現意外錯誤,按任意鍵繼續*/
getch();
fclose(fp_user);
return false;
}
for (int ij=0; ij<17; ij++) //將md5密文寫入到文件
{
fprintf(fp_user,"%x",username_md5[ij]);
}
fprintf(fp_user,"\n");
for (ij=0; ij<17; ij++)
{
fprintf(fp_user,"%x",password_md5[ij]);
}
fprintf(fp_user,"\n%f",user.price);
fprintf(fp_user,"\n%c",user.language);
fprintf(fp_user,"\n%d",user.Dimension.p_long);
fprintf(fp_user,"\n%d",user.Dimension.p_breadth);
fclose (fp_user);
price_log();
printf("\n%s",*(p_language_print + 28));/*價格設置成功,從現在開始存入的車輛將以新價格計費,之前車輛仍按照以前價格計費。按任意鍵繼續*/
getch();
return true;
}
// 名稱:admin_modifypassword
// 作用:修改密碼
// 參數:空
// 返回值:修改成功:true
// 修改失敗:false
bool admin_modifypassword()
{
char password1[20],password2[20];
while(1)
{
printf("\n%s",*(p_language_print + 13));/*請輸入新密碼:*/
starword(password1);
printf("\n\n%s",*(p_language_print + 2));/*請重復輸入密碼:*/
starword(password2);
if (strcmp(password1,password2) == 0)
{
break;
}
else
printf("\n\n%s",*(p_language_print + 3));/*兩次密碼輸入不一致,請重新輸入。*/
}
for(int ini = 0; ini<20; ini++)
{
user.password[ini] = password1[ini];
}
/********************************/
unsigned char username_md5[17], password_md5[17];
MD5_CTX md5; //初始化用于MD5的加密結構
MD5Init(&md5);
MD5Update(&md5,username_md5,strlen((char *)user.username)); //對欲加密的字符進行加密
MD5Final(username_md5,&md5);
MD5Update(&md5,password_md5,strlen((char *)user.password));
MD5Final(password_md5,&md5);
/********************************/
if ((fp_user = fopen("user.dat","w")) == 0)
{
printf("%s",*(p_language_print + 9));/*程序運行出現意外錯誤,按任意鍵繼續*/
getch();
fclose(fp_user);
return false;
}
for (int ij=0; ij<17; ij++) //將md5密文寫入到文件
{
fprintf(fp_user,"%x",username_md5[ij]);
}
fprintf(fp_user,"\n");
for (ij=0; ij<17; ij++)
{
fprintf(fp_user,"%x",password_md5[ij]);
}
fprintf(fp_user,"\n%f",user.price);
fprintf(fp_user,"\n%c",user.language);
fprintf(fp_user,"\n%d",user.Dimension.p_long);
fprintf(fp_user,"\n%d",user.Dimension.p_breadth);
fclose (fp_user);
password_log();
printf("\n\n%s",*(p_language_print + 14));/*密碼修改成功!按任意鍵返回。*/
getch();
return true;
}
// 名稱:admin_setlanguage
// 作用:重新設置語言
// 參數:空
// 返回值:修改成功:true
// 修改失敗:false
bool admin_setlanguage()
{
if (user.language == 'c')
{
user.language = 'e';
}
else if (user.language == 'e')
{
user.language = 'c';
}
/********************************/
unsigned char username_md5[17], password_md5[17];
MD5_CTX md5; //初始化用于MD5的加密結構
MD5Init(&md5);
MD5Update(&md5,username_md5,strlen((char *)user.username)); //對欲加密的字符進行加密
MD5Final(username_md5,&md5);
MD5Update(&md5,password_md5,strlen((char *)user.password));
MD5Final(password_md5,&md5);
/********************************/
if ((fp_user = fopen("user.dat","w")) == 0)
{
printf("%s",*(p_language_print + 9));/*程序運行出現意外錯誤,按任意鍵繼續*/
getch();
fclose(fp_user);
return false;
}
for (int ij=0; ij<17; ij++) //將md5密文寫入到文件
{
fprintf(fp_user,"%x",username_md5[ij]);
}
fprintf(fp_user,"\n");
for (ij=0; ij<17; ij++)
{
fprintf(fp_user,"%x",password_md5[ij]);
}
fprintf(fp_user,"\n%f",user.price);
fprintf(fp_user,"\n%c",user.language);
fprintf(fp_user,"\n%d",user.Dimension.p_long);
fprintf(fp_user,"\n%d",user.Dimension.p_breadth);
fclose (fp_user);
if (user.language == 'c') //重新初始化界面語言
{
p_language_print = Chinese;
}
else
{
p_language_print = English;
}
return true;
}
// 名稱:admin_cardata
// 作用:備份/恢復停車場數據文件
// 參數:空
// 返回值:成功:true
// 失敗:false
bool admin_cardata()
{
char command[10],confirm;
if(access("parkcar.dat.bac",00) == -1)
{
printf("%s",*(p_language_print + 15));/*從未備份數據,備份請輸入backup。*/
scanf("%s",&command);
if (strcmp(command,"backup") == 0)
{
system("copy parkcar.dat parkcar.dat.bac");
backbdata_log();
printf("%s",*(p_language_print + 16));/*備份數據文件成功,按任意鍵返回。*/
getch();
return true;
}
printf("\n%s",*(p_language_print + 17));/*文件未備份,按任意鍵返回。*/
getch();
return false;
}
printf("%s\n",*(p_language_print +18));/*數據文件已經備份,重新備份請輸入backup,恢復數據文件請輸入recover。*/
fflush(stdin);
gets(command);
if (strcmp(command,"backup") == 0)
{
system("copy parkcar.dat parkcar.dat.bac");
backbdata_log();
printf("\n%s",*(p_language_print + 16));/*備份數據文件成功,按任意鍵返回。*/
fflush(stdin);
getch();
return true;
}
if (strcmp(command,"recover") == 0)
{
printf("%s",*(p_language_print + 19));/*恢復會造成新添加數據丟失,確認操作嗎?(y/n)*/
fflush(stdin);
confirm = getchar();
if (confirm == 'y')
{
system("copy parkcar.dat parkcar.dat.bac");
backqdata_log();
printf("\n%s",*(p_language_print + 20));/*恢復數據文件成功,按任意鍵返回。*/
getch();
return true;
}
if (confirm == 'n')
{
return false;
}
}
return true;
}
// 名稱:admin_userlog
// 作用:查看用戶登錄日志
// 參數:空
// 返回值:修改成功:true
// 修改失敗:false
bool admin_userlog()
{
print_log();
return true;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -