c语言ATM机文件储存账号密码,C语言实现_ATM自动取款机系统
1、歡迎界面的實現用函數welcom實現,建立.h文件命名welcom.h
void wel()//歡迎界面;
{
FILE *fp;
if((fp=fopen("data/welcome.txt","r"))!=NULL)
{
char ch[10000];
while(!feof(fp))
{
fgets(ch,100,fp);
printf(ch);
Sleep(200);
}
printf("\n\n");
fclose(fp);
}
}
void menu()//主菜單;
{
FILE *fp;
if((fp=fopen("data/menu.txt","r"))!=NULL)
{
char ch[100];
while(!feof(fp))
{
fgets(ch,100,fp);
printf(ch);
}
fclose(fp);
}
}
2.用戶的功能由函數client實現,也是存儲在client.h文件中。
void showmoney()//功能1:查詢余額
{
printf("\t用戶名 :%s\n",user.name);
printf("\t賬戶余額:%d\n",user.money);
printf("\t請按Enter鍵返回\n");
getchar();
}
void drawmoney()//功能2:取款業務
{
FILE *fp;
int a,i;
char c;
while(1){
printf("\t請輸入您的取款金額:");
scanf("%d",&a);
if(a>user.money)
printf("\t賬戶余額不足,請重新輸入!\n");
else if(a<0)
printf("\t輸入有誤,請重新輸入!\n");
else
break;
}
getchar();
user.money-=a;
if((fp=fopen("data/client.dat","wb"))!=NULL)
{
fwrite(&user, sizeof(client), 1 ,fp);
fclose(fp);
}
printf("\t取款成功,請收好您的鈔票!\n");
printf("\t是否打印憑條? y/n ");
scanf("%c",&c);
getchar();
if(c=='Y' || c=='y')
{
printf("\t正在打印請稍后。。。。。\n\t\t");
for(i=0;i<10;i++)
{
printf("■");
Sleep(400);
}
printf("\n");
printf("\t打印完成,請收好您的憑條\n");
printf("\t請按Enter鍵退出\n");
getchar();
}
else
{
printf("\t請按Enter鍵退出\n");
getchar();
}
}
void savemoney()//功能3:存款業務
{
FILE *fp;
int a,i;
char c;
printf("\t請輸入您的存款數額:");
scanf("%d",&a);
getchar();
user.money+=a;
if((fp=fopen("data/client.dat","wb"))!=NULL)
{
fwrite(&user, sizeof(client), 1 ,fp);
fclose(fp);
}
printf("\t存款成功\n");
printf("\t是否打印憑條? y/n ");
scanf("%c",&c);
getchar();
if(c=='Y' || c=='y')
{
printf("\t正在打印請稍侯。。。。。\n\t\t");
for(i=0;i<10;i++)
{
printf("■");
Sleep(400);
}
printf("\n");
printf("\t打印完成,請收好您的憑條\n");
printf("\t請按Enter鍵退出\n");
getchar();
}
else
{
printf("\t請按Enter鍵退出\n");
getchar();
}
}
void updatekey()//功能5:改密業務
{
char ch[10];
char str[10];
FILE *fp;
int i;
printf("\t請輸入您的初始密碼 :");
strcpy(ch,get_password());
while(1)
{
if(strcmp(ch,user.key) != 0)
{
printf("\t您的初始密碼輸入錯誤請重新輸入:");
strcpy(ch,get_password());
}
else
break;
}
while(1){
printf("\t請輸入您要修改的密碼 :");
strcpy (ch,get_password());
printf("\t請再次輸入要修改的密碼:");
strcpy(str,get_password());
if(strcmp(ch,str)==0)
{
strcpy(user.key,ch);
printf("\t正在為您修改,請稍候\n\t");
for(i=0;i<10;i++)
{
printf("■");
Sleep(400);
}
if((fp=fopen("data/client.dat","wb"))!=NULL)
{
fwrite(&user, sizeof(client), 1 ,fp);
fclose(fp);
}
printf("\n\t密碼修改成功\n");
printf("\t請按回車鍵退出\n");
getchar();
break;
}
else
printf("\t您兩次密碼輸入不一致,請重新輸入!\n");
}
}
void rename()//功能5:修改用戶名
{
FILE *fp;
char name[30];
char mame[30];
while(1)
{
printf("\t請輸入您要修改的用戶名:");
scanf("%s",&name);
printf("\t請確認您的用戶名 :");
scanf("%s",&mame);
getchar();
if(strcmp(name,mame)==0)
{
strcpy(user.name,name);
if((fp=fopen("data/client.dat","wb"))!=NULL)
{
fwrite(&user, sizeof(client), 1 ,fp);
fclose(fp);
}
printf("\t已成功修改您的用戶名,請牢記!\n");
printf("\t請按回車鍵退出\n");
getchar();
break;
}
else
printf("\t您兩次輸入的用戶名不一致,請重新輸入!\n");
}
}
void exitsystem()//功能6:退出系統
{
system("cls");
FILE *fp;
char ch;
fp=fopen("data/exit.txt","r");
while(!feof(fp))
{
ch=fgetc(fp);
putchar(ch);
}
fclose(fp);
printf("\n");
printf("請按Enter鍵退出\n");
getchar();
}3、登陸功能用函數login實現
struct client //結構體用于存儲信息;
{
char name[50]; //用戶名
char key[10]; //密碼
int money;
}user;
char *get_password()//星號密碼獲取函數;
{
int i=0;
char a[50];
char ch='\0';
while(ch != '\r')
{
ch = getch();//無回顯的從鍵盤接收一個字符,
if(ch == 8) //8是退格符的 ASSIC碼。
{
a[--i]='\0';
putchar(8);
putchar(' ');
putchar(8);
}
else
{
if(ch=='\r')
break;
a[i++] = ch;
printf("*");//輸出星號
}
}
a[i]='\0';
printf("\n");
return &a[0];
}
int login() //登陸函數;
{
FILE *fp; //讀取文件保存的用戶名及密碼,賦值給結構體。
if((fp=fopen("data/client.dat","rb"))!=NULL)
{
fread(&user,sizeof(user),1,fp);
}
else
{
printf("該用戶信息錯誤!\n");
}
char a[50];
char b[50];
int count=0,i,flag=0;
while(1)
{
printf("\t請輸入您的用戶名:");
scanf("%s",a);
printf("\t請輸入您的密碼 :");
strcpy(b,get_password());
if(strcmp(a,user.name)!=0 || strcmp(b,user.key)!=0)
printf("\t用戶名或者密碼輸入錯誤!請重新輸入!\n");
else
{
printf("\t\t\t正在登陸 請稍后\n");
printf("\t\t\t");
for(i=0;i<8;i++)
{
printf("■");
Sleep(500); //讓系統在此處停留500毫秒之后在運行。
}
printf("\n");
break;
}
count++;
if(count == 3)
{
printf("\t\t您輸入錯誤已超過三次,系統已退出!\n");
system("color 4a");
flag=1;
break;
}
}
return flag;
}
4、主函數ATM.cpp中值調用,使得結構更清晰合理。
#include #include #include #include #include #include "login.h" //登陸函數模塊
#include "Welcome.h" //界面歡迎模塊
#include "client.h" //用戶操作界面
int main()
{
system("color 2a");
wel();
printf("\t\t\t確定登陸?Y/N ");
char c;
scanf("%c",&c);
getchar();
if(c=='n'||c=='N')
{
exitsystem();
}
else
{
int f;
system("cls"); //清屏
printf("\t\t\t進入中,請稍候.......\n\n");
Sleep (800);
f=login();
system("cls");
if(f==1)
{
printf("正在退出系統。。。。");
Sleep(3000);
exitsystem();
}
else
{
while(1)
{
menu();
printf("\n\t請輸入代號:");
int m;
scanf("%d",&m);
getchar();
if(m==1)
{
Sleep (500);
showmoney();
system("cls");
}
else if(m==2)
{
Sleep (500);
drawmoney();
system("cls");
}
else if(m==3)
{
Sleep (500);
savemoney();
system("cls");
}
else if(m==4)
{
Sleep (500);
updatekey();
system("cls");
}
else if(m==5)
{
Sleep (500);
rename();
system("cls");
}
else if(m==6)
{
exitsystem();
break;
}
}
}
}
return 0;
}
四、補充
該系統還有很多特效,但是由于不會在博客展示動態效果,更多信息,課在本地運行展示。
總結
以上是生活随笔為你收集整理的c语言ATM机文件储存账号密码,C语言实现_ATM自动取款机系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国科技大学计算机考研复试内容,中国科学
- 下一篇: svn mysql认证_SVN基于MyS