大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
步骤:
成都创新互联公司主要从事网站建设、网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务奇台,10年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220
1. 使用C语言编写atm程序,实现密码修改的功能。
2. 需要设置一个全局变量来存储当前用户的密码信息。
3. 在主函数中,定义一个函数,用于输入原密码和修改后的新密码。
4. 在输入新密码之前,需要验证输入的原密码是否正确。
5. 如果原密码输入正确,则继续输入新密码,并将新密码记录到全局变量中。
6. 如果原密码输入错误,则提示用户重新输入。
7. 将修改后的新密码记录到文件中,以备下次使用。
char mycrypt ( char ch, int key )
{
if ( ch = 'Z' ch = 'A' )
{
ch -= 'A';
ch += 26 + key;
ch = ch % 26;
ch += 'A';
}
else if ( ch = 'z' ch = 'a' )
{
ch -= 'a';
ch += 26 + key;
ch = ch % 26;
ch += 'a';
}
return ch;
}
//专门注册用户和登录的代码
#include stdio.h
#include stdlib.h
#include string.h
#include stdbool.h
#include windows.h
typedef struct
{
int x;
int y;
}PT_STRUCT;
typedef struct
{
char user[20];
char pw[20];
}USER_STRUCT;
PT_STRUCT pt;
bool LoginSuccess=false;
char CurrentUser[20]={'\0'};
int UserCount=0;
USER_STRUCT* pUser=NULL;
char WorkDir[100]={'\0'};
char DataFile[100]={'\0'};
void setxy(int x, int y) //设置光标位置
{
COORD coord = {x, y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
void getxy() //获取当前光标所在位置
{
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
COORD coordScreen = {0, 0}; //光标位置
CONSOLE_SCREEN_BUFFER_INFO csbi;
if(GetConsoleScreenBufferInfo(hConsole, csbi))
{
pt.x=csbi.dwCursorPosition.X;
pt.y=csbi.dwCursorPosition.Y;
}
}
void input(char* buf)
{
int len=strlen(buf);
int c;
int i=0;
while(1)
{
c=getch();
if(c==8 i==0)
{
continue;
}
if(c==10 || c==13) break;
if(c==8 i0)
{
buf[i-1]='\0';
i--;
getxy();
setxy(pt.x-1,pt.y);
printf(" ");
setxy(pt.x-1,pt.y);
}
else if(i=0)
{
printf("*");
buf[i++]=c;
}
if(i=buf)
{
return;
}
}
}
void GetUserDataFromFile()
{
UserCount=GetPrivateProfileInt("USER","user_count",0,DataFile);
if(pUser!=NULL)
{
free(pUser);
}
pUser=(USER_STRUCT*)malloc(sizeof(USER_STRUCT)*(UserCount+1));
int i;
char ch[5];
for(i=0;iUserCount;i++)
{
memset(ch,'\0',5);
sprintf(ch,"%d",i+1);
GetPrivateProfileString(ch,"user","",pUser[i].user,20,DataFile);
GetPrivateProfileString(ch,"pw","",pUser[i].pw,20,DataFile);
}
}
void WriteDataToFile()
{
int i;
char t[5]={"\0"};
sprintf(t,"%d",UserCount);
WritePrivateProfileString("USER","user_count",t,DataFile);
for(i=0;iUserCount;i++)
{
sprintf(t,"%d",i+1);
WritePrivateProfileString(t,"user",pUser[i].user,DataFile);
WritePrivateProfileString(t,"pw",pUser[i].pw,DataFile);
}
GetUserDataFromFile();
}
bool login()
{
if(LoginSuccess==true)
{
printf("\n当前已有用户登录! 重新登录吗?(Y/N)");
char sel;
fflush(stdin);
scanf("%c",sel);
if(sel=='y' || sel=='Y')
{
LoginSuccess==false;
}
else
{
return false;
}
}
char user[20]={'\0'};
char pw[20]={'\0'};
printf("\nInput User: ");
fflush(stdin);
scanf("%s",user);
printf("\nInput Password: ");
fflush(stdin);
input(pw);
bool find=false;
int i;
for(i=0;iUserCount;i++)
{
if(strcmp(user,pUser[i].user)==0 strcmp(pw,pUser[i].pw)==0)
{
find=true;
LoginSuccess=true;
strcpy(CurrentUser,pUser[i].user);
break;
}
}
if(find==true)
{
return 1;
}
else
{
return 0;
}
}
bool regist(char* ErrBuf)
{
char user[20]={'\0'};
char pw1[20]={'\0'};
char pw2[20]={'\0'};
printf("\nInput User: ");
fflush(stdin);
scanf("%s",user);
int i;
for(i=0;iUserCount;i++)
{
if(strcmp(user,pUser[i].user)==0)
{
strcpy(ErrBuf,"User Repeat");
return false;
}
}
printf("\nInput Password: ");
fflush(stdin);
input(pw1);
printf("\nReInput Password: ");
fflush(stdin);
input(pw2);
if(strcmp(pw1,pw2)!=0)
{
strcpy(ErrBuf,"Password Differ");
return false;
}
strcpy(pUser[UserCount].user,user);
strcpy(pUser[UserCount].pw,pw1);
UserCount++;
return true;
}
int main()
{
_getcwd(WorkDir,100); //取得当前程序的绝对路径
strcpy(DataFile,WorkDir);
strcat(DataFile,"\\user.dat");
if(access(DataFile,0))
{
printf("\n用户数据文件不存在, 按任意键将创建文件");
getchar();
FILE* fp;
fp=fopen(DataFile,"wb");
int re=fputs("[USER]\nuser_count=0",fp);
if(re=0)
{
printf("\n用户数据文件创建成功!");
}
else
{
printf("\n用户数据文件创建失败!");
}
getchar();
fclose(fp);
}
GetUserDataFromFile();
while(1)
{
system("cls");
printf("已注册用户%d\n",UserCount);
if(LoginSuccess==true)
{
printf("Logined User : %s",CurrentUser);
}
printf("\n-------------------------------");
printf("\n登录---1");
printf("\n注册---2");
printf("\n退出---3");
printf("\n-------------------------------");
printf("\n\nInput:(1,2,3) : ");
fflush(stdin);
int sel;
bool re;
char ErrBuf[50]={'\0'};
scanf("%d",sel);
switch(sel)
{
case 1:
re=login();
if(re==true)
{
printf("\nLogin Success! Current User: %s",CurrentUser);
fflush(stdin);
getchar();
}
else
{
printf("\nLogin Fail!");
fflush(stdin);
getchar();
}
break;
case 2:
memset(ErrBuf,'\0',50);
re=regist(ErrBuf);
if(re!=true)
{
printf("%s Register Fail!",ErrBuf);
fflush(stdin);
getchar();
}
else
{
WriteDataToFile();
printf("\nRegister Success!");
fflush(stdin);
getchar();
}
break;
case 3:
exit(0);
break;
default:
break;
}
}
return 0;
}
#include string.h
struct e
{
char a[10];
char b[10];
}z;
int main()
{ int t=0;
char s[10],d[10];
FILE *p;
void as();
if ((p=fopen("m.txt","r+"))==NULL)
{
p=fopen("m.txt","w+");
t=1;
}
if(t==1)
{
printf("当前没有任何用户\n");
printf("请新建用户名: ");
scanf("%s",s);
printf("为用户设置密码: ");
scanf("%s",d);
strcpy(z.a,s);
strcpy(z.b,d);
fprintf(p,"%s %s",z.a,z.b);
fclose(p);
}
if(t==0)
{
printf("请输入用户名: ");
scanf("%s",s);
fscanf(p,"%s %s",z.a,z.b);
fclose(p);
if (!strcmp(z.a,s))
{
printf("请输入密码:");
scanf("%s",d);getchar();
if(!strcmp(z.b,d))
{ char i;
printf("是否要修改密码?(输入y修改,n退出!)");
scanf("%c",i);
if(i=='y')
{
printf("请输入修改密码:");
scanf("%s",z.b);
p=fopen("m.txt","w+");
fprintf(p,"%s %s",z.a,z.b);
fclose(p);
printf("修改成功!");
}
}
else printf("密码错误!");
}
else printf("用户名错误");
fclose(p);
}
}