#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>
struct User
{
char name[20];//账号
char code[20];//密码
};
/*用户登录 如果登录成功 返回该用户在数组下标 否则返回-1*/
int Login_User(struct User user[],int n)
{
int i=0;
int flag=0;
char name[20];
char temp[20];
system("cls");
S0:
printf("请输入账号:");
scanf("%s",name);
//这里开始是用*覆盖输入的字符 达到隐藏密码
printf("请输入密码:");
fflush(stdin);
temp[i] =getch();
printf("*");
while(temp[i] != '\r')
{
i++;
temp[i]=getch();
if(temp[i] != '\r')
{
printf("*");
}
}
temp[i]='\0';
printf("\b\n");
//到这里是用*覆盖输入的字符 达到隐藏密码结束
for(i=0;i<n;i++)//遍历用户数组 查找有没有账号密码相同的
{
if(!strcmp(user[i].name,name) && !strcmp(user[i].code,temp))
{
return i;//相同返回下标
}
}
printf("登录失败!\n");
flag++;
if(flag==3)
{
return -1;//3次都不同 直接返回-1代表登录失败
}
goto S0;
}
/*管理员登录 成功返回1 否则返回0*/
int Login_Admin()
{
int i=0;
char temp[20];
system("cls");
printf("请输入管理员密码:");
fflush(stdin);
temp[i] =getch();
printf("*");
while(temp[i] != '\r')
{
i++;
temp[i]=getch();
if(temp[i] != '\r')
{
printf("*");
}
}
temp[i]='\0';
printf("\b\n");
if(strcmp(temp,"123"))//管理员密码123
{
printf("密码错误!\n");
system("pause");
return 0;
}
return 1;
}
void exe_init()//初始化界面 显示加载到xx%
{
int i=0;
system("cls");
printf("正在加载--------0%%");
while(i<10)
{
printf("\b\b");
printf("%d%%",i);
Sleep(100);
i++;
}
while(i<100)
{
printf("\b\b\b");
printf("%d%%",i);
Sleep(100);
i++;
}
printf("\b\b\b\b");
printf("100%%\n");
printf("加载成功!\n");
printf("欢迎使用!\n");
system("pause");
}
void exit_interface()//初始化界面
{
system("cls");
system("color E0");
printf("感谢使用!\n");
Sleep(5000);
}
//保存用户信息到文件
void Save_Info(struct User user[],int n)
{
int i;
FILE* pFile = fopen("User_Info.dat","w");
if(pFile==NULL)
{
return;
}
for(i=0;i<n;i++)//遍历数组 依次写入文件
{
fwrite(&user[i],1,sizeof(struct User),pFile);
}
fclose(pFile);
}
//读取用户信息
int Read_Info(struct User user[])
{
int i=0;
FILE* pFile = fopen("User_Info.dat","r");
if(pFile==NULL)
{
return 0;
}
while(fread(&user[i++],1,sizeof(struct User),pFile));
//读取文件依次写入数组
fclose(pFile);
if(i>=1)
{
return i-1;
}
return 0;
}
//添加新的用户
int Add_New_User(struct User user[],int n)
{
system("cls");
printf("请输入用户账号:");
scanf("%s",user[n].name);
printf("请输入用户密码:");
scanf("%s",user[n].code);
printf("添加成功!\n");
system("pause");
return n+1;
}
//删除用户
int Del_New_User(struct User user[],int n)
{
char temp[20];
int i,j;
system("cls");
printf("请输入要删除的用户账号:");
scanf("%s",temp);
for(i=0;i<n;i++)
{
if(!strcmp(temp,user[i].name))
{
break;
}
}
if(i==n)
{
printf("无该账号!\n");
system("pause");
return n;
}
for(j=i;j<n;j++)//用后一个覆盖前一个 达到删除
{
user[j]=user[j+1];
}
printf("删除成功!\n");
system("pause");
return n-1;
}
//打印所有的用户信息
void Print_User(struct User user[],int n)
{
int i;
system("cls");
printf("%-10s%-10s\n","账号","密码");
for(i=0;i<n;i++)
{
printf("%-10s%-10s\n",user[i].name,user[i].code);
}
system("pause");
}
//管理员菜单
int Admin_Menu(struct User user[],int n)
{
int choice;
do
{
system("cls");
printf("1:增加用户\n");
printf("2:删除用户\n");
printf("3:查看用户\n");
printf("0:返回\n");
printf("请输入选择:");
scanf("%d",&choice);
while(choice<0||choice>3)
{
printf("请重新选择:");
scanf("%d",&choice);
}
switch(choice)
{
case 1:
n=Add_New_User(user,n);
break;
case 2:
n=Del_New_User(user,n);
break;
case 3:
Print_User(user,n);
break;
}
}while(choice!=0);
return n;
}
//修改密码
void Modify_Code(struct User user[],int who)
{
system("cls");
printf("请输入新密码:");
scanf("%s",user[who].code);
printf("修改成功!\n");
system("pause");
}
//用户菜单
int User_Menu(struct User user[],int who)
{
int choice;
do
{
system("cls");
printf("1:修改密码\n");
printf("0:返回\n");
printf("请输入选择:");
scanf("%d",&choice);
while(choice<0||choice>1)
{
printf("请重新选择:");
scanf("%d",&choice);
}
if(choice==1)
{
Modify_Code(user,who);
}
}while(choice!=0);
return 0;
}
//加载菜单
void Login_Menu()
{
int choice;
struct User user[100];
int NUM=0;
int who;
NUM=Read_Info(user);
do
{
system("cls");
printf("1:用户系统\n");
printf("2:管理员登录\n");
printf("0:退出\n");
printf("请输入选择:");
scanf("%d",&choice);
while(choice<0||choice>2)
{
printf("请重新选择:");
scanf("%d",&choice);
}
switch(choice)
{
case 0:
Save_Info(user,NUM);
exit_interface();
exit(0);
break;
case 1:
who=Login_User(user,NUM);
if(who!=-1)
{
User_Menu(user,who);
}
break;
case 2:
if(Login_Admin())
{
NUM=Admin_Menu(user,NUM);
}
break;
}
}while(choice!=0);
}
int main()
{
exe_init();
Login_Menu();
return 0;
}
用户设置密码
猜你喜欢
转载自blog.csdn.net/u011256974/article/details/89212717
今日推荐
周排行