登陆注册系统模拟(源代码)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#define Max 71
typedef struct
{
char name[20];
char pw[20];
int flag;
}USER;
USER user[Max];
char Admin[20]="administrator";
int count;
int chance;
void menu();
void User_admin(char name[],char pw[]);
void User_common(char name[],char pw[]);
void Saved();
int flag;
void Inithtable()
{
for(int i=0;i<Max;i++)
user[i].flag=0;
}
void password(char a[])//密码输入
{
int i=0;
char c;
while((c=getch())!=13)
{
if(c==8 && i==0);
else if(c==8 && i>0)
{
i--;
printf("%c%c%c",'\b','\0','\b');
}
else
{
a[i++]=c;
printf("*");
}
}
a[i]='\0';
printf("\n");
}
void jiami(char pw[],char a[])//加密
{
char c,*p;
p=pw;
c=*p;
int i=0;
while(c!='\0')
{
if(c>='0' && c<='9')//数字
{
c=c+5;
if(c>'9')
c=c-10;
}
else
{
c=c+5;
if(c>'Z' && c<='Z'+5 || c>'z')
c=c-26;
}
a[i++]=c;
p++;
c=*p;
}
a[i]='\0';
}
void jiemi(char pw[],char b[])//解密
{
char c,*p;
p=pw;
c=*p;
int i=0;
while(c!='\0')
{
if(c>='0' && c<='9')
{
c=c-5;
if(c<'0')
c=c+10;
}
else
{
c=c-5;
if(c<'A' || c<'a' && c>='a'-5)
c=c+26;
}
b[i++]=c;
字符串函数模拟注册 p++;
c=*p;
}
b[i]='\0';
}
int hash(int key)//构造哈希表
{
int H=key%Max;
while(user[H].flag==1)
H=(H+1)%Max;
return H;
}
int hashsrch(char name[])//在哈希表中查
{
int key=name[0]-'0';
int H=key%Max;
if(user[H].flag==0)
return -1;
else if(user[H].flag==1 && strcmp(user[H].name,name)==0)
return H;
else
{
while(user[H].flag==1 && strcmp(user[H].name,name)!=0 || user[H].flag==2)
H=(H+1)%Max;
if(user[H].flag==0)
return -1;
else return H;
}
}
void Read()//将文件中的信息存入到哈希表中
{
Inithtable();
FILE *fp;
if((fp=fopen("","r"))==NULL)
{
printf("文件打开错误!\n");
exit(0);
}
while(!feof(fp))
{
char name[20],pwf[20],pw[20];
fscanf(fp,"%s%s",name,pwf);
jiemi(pwf,pw);
count++;
int key=name[0]-'0';
int H=hash(key);
strcpy(user[H].name,name);
strcpy(user[H].pw,pw);
user[H].flag=1;
}
fclose(fp);
}
void Search(char name[])//查用户
{
int H=hashsrch(name);
if(user[H].flag==1)
{
if(H==-1)
printf("该用户不存在!\n");
else
printf("用户名:%s\t密码:%s\n",user[H].name,user[H].pw);
}
else
printf("该用户不存在!\n");
}
void Delete(char name[])//删除用户
{
if(strcmp(name,Admin)==0)
{
char name1[20];
printf("输入要删除的用户名:");
gets(name1);
int H=hashsrch(name1);
int a=hashsrch(Admin);
if(strcmp(name1,Admin)==0)
printf("不能删除管理员账号!\n");
else if(H!=-1)
{
char pw[20];
printf("请输入管理员密码:");
password(pw);
if(strcmp(user[a].pw,pw)==0)
{
user[H].flag=2;
count--;
Saved();
printf("用户信息删除成功!\n");
}
else
printf("密码错误,不能进行删除操作!\n");
}
else
printf("该用户不存在,不能进行删除操作!\n");
}
else
{
int H=hashsrch(name);
user[H].flag=2;
count--;
Saved();
printf("账户已注销!\n");
flag=0;
}
}
void Changepw(char name[],char pw[])//修改用户密码
{
char pw1[20],pw2[20],pw3[20];
int H=hashsrch(name);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论