📄 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 + -