真正的ATM系統(tǒng)不可能只是用C語言編寫的,它應該是一套完整獨立的系統(tǒng),核心代碼更機密,不會輕易的泄露。
我們提供的服務有:網站設計、成都做網站、微信公眾號開發(fā)、網站優(yōu)化、網站認證、康樂ssl等。為上1000+企事業(yè)單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的康樂網站制作公司
C語言可以寫一個類似于ATM系統(tǒng)的框架,用以模擬ATM機上的各種操作。
框架代碼如下:
#includeiostream.h??
#includestdio.h??
int?main()???
{??
int?choice?=-?1;???
while(1)?{??
printf("請選擇\n1.login\t2.regist\n");??
scanf("%d",?choice);??
switch(choice)?{??
case?1:??
login();??
break;??
case?2:??
regist();??
break;??
default:??
printf("輸入有誤,重新輸入\n");??
break;??
}??
}??
return?0;
}??
void?login()?{??
printf("IN?LOGIN\n");??
int?flag?=?-1;??
int?X?=?-1;??
printf("輸入賬戶和密碼\n");??
flag?=?search();??
if(falg?==?1)?{??
printf("存在,進入主頁面\n");??
X?=?menu();??
if(X?==?1)??
return;??
}??
else?if(flag?==?0)?{??
printf("賬戶或密碼錯誤\n");??
return;???????
}??
}??
int?regist()?{??
printf("IN?REGIST\n");??
return?1;??
}??
int?menu()?{??
printf("IN?MENU\n");??
int?key?=?-1;??
int?N?=?-1;??
while(1)?{??
printf("請選擇業(yè)務:1.refer\t2.deposit\t3.withdraw\t4.transfer\t5.resetPW\t6.退出\n");??
scanf("%d",?key);??
switch(key)?{??
case?1:??
N?=?refer();??
break;??
case?2:??
N?=?deposit();??
break;??
case?3:??
N?=?withdraw();??
break;??
case?4:??
N?=?transfer();??
break;??
case?5:??
N?=?resetPW();??
break;??
case?6:??
N?=?6;??
return?1;??
break;??
default:??
printf("輸入有誤,重新選擇:\n");???
break;??
}??
if(N%2?==?0)?{??
printf("Error!\n");??
}???
}??
}??
int?refer()?{??
printf("IN?REFER\n");??
//輸出余額???
return?1;??
}??
int?deposit()?{??
printf("IN?DEPOSIT\n");??
//存錢???
return?3;??
}??
int?withdraw()?{??
printf("IN?WITHDRAW\n");??
//取錢???
return?5;??
}??
int?transfer()?{??
ptintf("IN?TRANSFER\n");??
//轉賬???
return?7;??
}??
int?resetPW()?{??
prtintf("IN?RESETPW\n");??
//重設密碼???
return?9;??
}
char szPassword[128] = {0};
int iNum = 0;
while(true)
{ //這里沒有過濾特殊符號,比如 Backspace 回格符,循環(huán)中自己特殊處理下就OK了
if(iNum128)
{
puts("用戶輸入密碼過長~!");
}
char ch = getch();
if(ch == 13) //按回車表示用戶密碼輸入結束
{
szPassword[iNum]='\0';
putch('\n');
break;
}
putch('*');
szPassword[iNum++]=ch;
}
puts(szPassword);
#include iostream
using namespace std;
///////////////////////////////用戶類//////////////////////////////////////
class User
{
private:
int money;
string userName;
string password;
public:
User();
~User();
User(string userName, string password);
int saveMoney(int money);// 存款
int getMoney(int money); // 取款
int checkMoney(); // 查詢余額
string getUserName(); // 取得用戶名
string getPassword(); // 取得密碼
};
User::User()
{
money = 0;
}
User::User(string userName, string password)
{
money = 0;
this-userName = userName;
this-password = password;
}
int User::saveMoney(int money)
{
this-money += money;
return this-money;
}
int User::getMoney(int money)
{
this-money -= money;
return this-money;
}
int User::checkMoney()
{
return this-money;
}
string User::getUserName()
{
return this-userName;
}
string User::getPassword()
{
return this-password;
}
/////////////////////////////////////////////////////////////////////////
///////////////////////////////////數(shù)據(jù)庫類,用來存儲用戶//////////////////////
class DataBase
{
private:
User *users[40]; // 默認數(shù)據(jù)可最多能存放40個用戶
int userNumber; // 已注冊用戶的數(shù)量
public:
DataBase();
~DataBase();
bool add(User *user); // 添加新用戶
User * getUser(int i); // 按照索引取得用戶
User * getUser(string name); // 按照用戶名取得用戶
int getUserNumber(); // 取得數(shù)據(jù)庫中用戶的數(shù)量
};
DataBase::DataBase()
{
userNumber = 0;
}
DataBase::~DataBase()
{
delete users;
}
bool DataBase::add(User *user)
{
if(userNumber 40 getUser(user-getUserName()) == NULL) // 如果當前用戶名在數(shù)據(jù)庫中不存在
{
users[userNumber] = user;
userNumber++;
return true; // 返回true表示新用戶添加成功
}
return false; // 返回false表示新用戶添加失敗
}
User * DataBase::getUser(int i)
{
if(i 40 || i 0) return NULL;
return users[i];
}
User * DataBase::getUser(string userName)
{
for(int i = 0; i userNumber; i++)
{
User *user = getUser(i);
if(user-getUserName() == userName) return user;
}
return NULL;
}
/////////////////////////////////////////////////////////////////////////
DataBase database;
int welcom();
// 注冊
User * user_register();
User * user_login();
int exit();
int user_process();
int main()
{
int state;
int user_state;
User *user;
do
{
state = welcom();
switch(state)
{
case 1:
user = user_register(); // 用戶注冊
if(NULL != user)
{
cout"\n注冊成功\n";
do
{
user_state = user_process();
switch(user_state)
{
case 1:// 存錢
{
cout"輸入存錢金額:";
int num;
cinnum;
cout"余額為:"user-saveMoney(num)endl;;
}
break;
case 2:// 取錢
{
cout"輸入取錢金額:";
int num;
cinnum;
cout"余額為:"user-getMoney(num)endl;
}
break;
case 3:// 查看余額
{
cout"余額為:"user-checkMoney()endl;
}
break;
case 4://返回
user_state = 0;
default: break;
}
} while(user_state);
user = NULL;
}
else cout"\n注冊失敗\n";
break;
case 2:
user = user_login(); // 用戶登陸
if(NULL != user)
{
cout"登陸成功"endl;
do
{
user_state = user_process();
switch(user_state)
{
case 1:// 存錢
{
cout"輸入存錢金額:";
int num;
cinnum;
cout"余額為:"user-saveMoney(num)endl;;
}
break;
case 2:// 取錢
{
cout"輸入取錢金額:";
int num;
cinnum;
cout"余額為:"user-getMoney(num)endl;
}
break;
case 3:// 查看余額
{
cout"余額為:"user-checkMoney()endl;
}
break;
case 4://返回
user_state = 0;
default: break;
}
} while(user_state);
user = NULL;
}
else cout"\n登陸失敗\n";
break;
case 3:
state = exit();
break;
default: break;
}
}
while(state);
return 0;
}
int welcom()
{
cout"\t\t**********歡迎使用ATM系統(tǒng)**********\n";
cout"\t\t* 1.用戶注冊 *\n";
cout"\t\t* 2.用戶登錄 *\n";
cout"\t\t* 3.退出系統(tǒng) *\n";
cout"\t\t***********************************\n";
int num;
cinnum;
return num;
}
// 注冊
User * user_register()
{
string userName;
string password;
cout"請輸入賬號:";
cinuserName;
if(NULL != database.getUser(userName)) // 如果用戶名存在
return NULL; // 注冊失敗
cout"請輸入密碼:";
cinpassword;
User *user = new User(userName, password);
database.add(user);
return user; // 注冊成功
}
User * user_login()
{
string userName;
string password;
cout"請輸入賬號:";
cinuserName;
cout"請輸入密碼:";
cinpassword;
User *user = database.getUser(userName);
if(NULL != user) // 如果用戶存在
if(user-getPassword() == password)
return user; // 如果密碼匹配則登陸成功
return NULL; // 如果用戶不存在
}
int exit()
{
return 0; // 退出系統(tǒng)
}
int user_process()
{
cout"\t\t******************************\n";
cout"\t\t* 請選擇操作類型 *\n";
cout"\t\t* 1.存 錢 *\n";
cout"\t\t* 2.取 錢 *\n";
cout"\t\t* 3.查 看 余 額 *\n";
cout"\t\t* 4.返 回 *\n";
cout"\t\t******************************\n";
int num;
cinnum;
return num;
}
#includestdio.h
int chaxun(int a3)
{
int b;
b=a3;
printf("你的余額為:%d\n",b) ;
}
int qukuan(int a3)
{
int a,b;
printf("請輸入您要提取的現(xiàn)金:\n");
scanf("%d",a);
b=a3-a;
if(b0)
printf("對不起 ,你的余額不足\n");
else
{
printf("請收好您的%d元現(xiàn)金\n",a);
a3=a3-a;
}
return (a3);
}
int gaini(int a2)
{
int a,b,c=1,d,e=1;
while(e)
{
printf("請輸入你的舊密碼:\n");
scanf("%d",d);
if(d==a2)
e=0;
else
{
e=1;
printf("你輸入的密碼錯誤,請重新輸入:\n");
}
}
while(c)
{
printf("請輸入您的六位數(shù)新密碼\n");
scanf("%d",a2);
printf("請確認您的六位數(shù)新密碼\n");
scanf("%d",b);
if(a2==b)
{
if(b100000b999999b/(b/100000)!=111111)
{
c=0;
printf("密碼修改成功\n");
}
else
{
printf("您輸入的密碼不符合要求,請從新輸入\n");
c=1;
}
}
else
{
c=1;
printf("您兩次輸入的密碼不一致,請重新輸入:\n");
}
}
return a2;
}
int quka()
{
printf("\n 夢若保保提醒您\n");
printf("請收好您的卡片,謝謝,再見\n\n");
}
int cunkuan(int a3)
{
int i,j,k;
printf("請輸入你要存的金額\n");
scanf("%d",k);
if(k0)
{
printf("對不起,沒有負存款\n");
}
else
{
printf("\n您好,您已經存進去了%d元\n",k);
a3=a3+k;
}
return a3;
}
main()
{
int i,j,b=1,c,k,l,m,n;
int a1=123456,a2=123456,a3=1000;
printf("歡迎使用自動柜員機:\n\n");
while(b==1)
{
printf("請輸入您的賬號:\n");
scanf("%d",k);
printf("請輸入您的密碼:\n");
scanf("%d",l);
if(k==a1l==a2)
{
b=0;
printf("您的賬戶余額為:%d\n",a3);
}
else
{
b=1;
printf("對不起,您輸入的賬號或者密碼有誤,請重新輸入:\n");
}
}
do
{
printf("\n請選擇您要的服務項目:\n");
printf("1.查詢余額\n");
printf("2.取款\n");
printf("3.修改密碼\n");
printf("4.取卡\n");
printf("5.存款\n");
scanf("%d",c);
switch(c)
{
case 1:
chaxun(a3);
break;
case 2:
a3=qukuan(a3);
break;
case 3:
a2=gaini(a2);
break;
case 4:
quka();
break;
case 5:
a3=cunkuan(a3);
break;
}
}while(c!=4);
}
#include stdio.h
#include stdlib.h
#include conio.h
#include string.h
void regist();
void login();
void quite();
void inputpassword(char mima[]);
void service();
struct bank
{
char name[20];
char password[7];
int account;
double money;
}kehu;
int find;
int a[10];
struct bank one;
FILE *fp;
void main()
{
int i;
int t=1;
for(i=0;i100;i++)
{
printf("\t\t\t\t\t\t歡迎使用青軟ATM系統(tǒng)\n");
printf("\t\t\t\t\t\t正在進入主界面,請稍等");
int j;
for(j=1;jt;j++)
{
printf(".");
}
t++;
if(t==10)
{
t=1;
}
printf("\n\t\t\t\t\t\t%d%%",i);
system("cls");
}
while(1)
{
printf("\t\t\t\t\t\t服務類型: \n");
printf("\t\t\t\t\t\t[a]: 用戶注冊\n");
printf("\t\t\t\t\t\t[b]: 用戶登錄\n");
printf("\t\t\t\t\t\t[c]: 退出系統(tǒng)\n");
printf("\t\t\t\t\t\t請選擇服務: ");
fflush(stdin);
char xz;
scanf("%c",xz);
if(xz=='a'||xz=='A')
{
regist();
} else if (xz=='b'||xz=='B')
{
login();
} else if(xz=='c'||xz=='C')
{
quite();
} else
{
printf("輸入有誤,請重新輸入");
}
getch();
system("cls");
}
}
void inputpassword(char mima[])
{
int i=0;
char ch;
while(1)
{
ch=getch();
if(ch!='\r')
{
if(ch!='\b'){
mima[i]=ch;
i++;
printf("*");
}else{
if(i0){
i--;
printf("\b \b");
}
}
}else{
break;
}
}
mima[i]='\0';
printf("\n");
}
void regist()
{
fp=fopen("atm.txt","ab+");
if(fp==NULL)
{
printf("\n\t\t\t文件打開失敗!");
return;
}
system("cls");
printf("\t\t\t現(xiàn)在執(zhí)行的是注冊函數(shù)的使用\n");
printf("\t\t請輸入用戶名: ");
fflush(stdin);
gets(kehu.name);
char password1[7];
while(1)
{
while(1)
{
printf("\n\n\t\t請輸入密碼:");
fflush(stdin);
inputpassword(kehu.password);
int n=strlen(kehu.password);
if(n==6)
{
break;
}else
{
printf("\n\t\t密碼必須為6位!");
}
}
printf("\n\t\t請輸入正確密碼!: ");
fflush(stdin);
inputpassword(password1);
if(strcmp(kehu.password,password1)==0)
{
break;
}else{
printf("\n\n\t\t兩次密碼必須相同!");
}
}
rewind(fp);
struct bank k;
if(fread(k,sizeof(struct bank),1,fp)==1)
{
fseek(fp,-sizeof(k),2);
fread(k,sizeof(k),1,fp);
kehu.account=k.account+1;
}else{
kehu.account=20170001;
}
kehu.money=0;
fseek(fp,0,2);
fwrite(kehu,sizeof(struct bank),1,fp);
fclose(fp);
printf("\n\n\t\t開戶成功! ");
printf("\n\t\t您的賬號為%d!",kehu.account);
printf("\n\t\t現(xiàn)在請您重新登錄!");
}
void searchmoney()
{
system("cls");
printf("您現(xiàn)在使用的是查詢余額功能: \n");
printf("\n\n\t\t您的余額是%0.2lf",one.money);
}
void savemoney()
{
system("cls");
double inmoney;
printf("請您選擇您要存款的金額 \n");
scanf("%lf",inmoney);
int q;
int r=1;
for(q=0;q100;q++)
{
int w;
for(w=1;wr;w++)
{
printf(".");
}
r++;
if(r==10)
{
r=1;
}
printf("\n\t\t\t\t\t\t正在存款%d%%",q);
system("cls");
}
one.money=one.money+inmoney;
fseek(fp,-sizeof(one),1);
fwrite(one,sizeof(one),1,fp);
printf("\n\n\t\t\t\t\t\t您已存款成功!");
}
void withdrawalmoney()
{
system("cls");
double outputsomemoney;
printf("請您選擇您要取款的金額 \n");
scanf("%lf",outputsomemoney);
if(one.moneyoutputsomemoney){
printf("您的余額已不足,請您注意!");
}else {
int q;
int r=1;
for(q=0;q100;q++)
{
int w;
for(w=1;wr;w++)
{
printf(".");
}
r++;
if(r==10)
{
r=1;
}
printf("\n\t\t\t\t\t\t正在取款%d%%",q);
system("cls");
}
one.money=one.money-outputsomemoney;
fseek(fp,-sizeof(one),1);
fwrite(one,sizeof(one),1,fp);
printf("\n\n\t\t\t\t\t\t您已取款成功!請點清鈔票!");
printf("\n\n\t\t\t\t\t\t您現(xiàn)在的余額為%lf",one.money);
}
}
void transfermoney()
{
system("cls");
int duifang;
int qian;
fflush(stdin);
printf("\n\n\n\t\t您現(xiàn)在使用的是轉賬功能");
printf("\n\t\t\t請輸入您要轉賬的賬戶:");
scanf("%d",duifang);
int n=ftell(fp);
rewind(fp);
int flag=0;
struct bank temp;
while(fread(temp,sizeof(temp),1,fp)==1)
{
if(temp.account==duifang)
{
flag=1;
break;
}
}
if(flag==1)
{
printf("請輸入轉賬金額:");
scanf("%d",qian);
if(one.money=qian)
{
int q;
int r=1;
for(q=0;q100;q++)
{
int w;
for(w=1;wr;w++)
{
printf(".");
}
r++;
if(r==10)
{
r=1;
}
printf("\n\t\t\t\t\t\t正在轉賬,請稍后!%d%%",q);
system("cls");
}
temp.money=temp.money+qian;
fseek(fp,-sizeof(temp),1);
fwrite(temp,sizeof(temp),1,fp);
one.money=one.money-qian;
fseek(fp,n-sizeof(one),0);
fwrite(one,sizeof(one),1,fp);
printf("\n\t\t\t\t轉賬成功!");
}else{
printf("\n\t\t\t\t您的余額已不足!");
}
}
}
void xiugai(){
system("cls");
printf("\n\n\t\t 現(xiàn)在進行的是修改密碼功能\n");
char oldpassword[7];
char newpassword[7];
char newpassword1[7];
int i;
for(i=0;i3;i++){
printf("\n\t\t\t 請輸入舊密碼:\n");
inputpassword(oldpassword);
if(strcmp(oldpassword,one.password)==0){
printf("\n\t\t\t 輸入成功!\n");
break;
}else{
printf("\n\t\t\t 密碼輸入有誤,請重新輸入!\n");
}
}
if(i3){
while(1){
printf("\n\t\t\t 請輸入您的新密碼:\n");
inputpassword(newpassword);
printf("\n\t\t\t 請輸入您的確認密碼:\n ");
inputpassword(newpassword1);
if(strcmp(newpassword,newpassword1)==0){
strcpy(one.password,newpassword);
fseek(fp,-sizeof(one),1);
fwrite(one,sizeof(one),1,fp);
printf("\n\t\t\t 密碼修改成功!");
break;
}else{
printf("\n\t\t\t 兩次密碼輸入不一致!");
}
}
}else{
printf("\n\t\t\t 密碼輸入錯誤!");
}
}
int zhuxiaozhanghao()
{
system("cls");
int zhuxiaoxitong;
char sf;
printf("你要注銷的賬號是%d",one.account);
printf("你是否要對此賬號進行注銷?\n\n\t\t請您選擇:注銷(Y)or不注銷(N):");
fflush(stdin);
scanf("%c",sf);
if(sf=='y'||sf=='Y')
{
printf("正在為您注銷!\n",one.account);
zhuxiaoxitong=1;
}else{
printf("不注銷系統(tǒng)!\n",one.account);
}
return zhuxiaoxitong;
}
void service()
{
while(1){
system("cls");
printf("\n\n\n\t\t\t\t\t\t現(xiàn)在是服務系統(tǒng),本系統(tǒng)有以下服務");
printf("\n\t\t\t\t\t\t[a] 查詢余額\n");
printf("\n\t\t\t\t\t\t[b] 存款服務\n");
printf("\n\t\t\t\t\t\t[c] 轉賬服務\n");
printf("\n\t\t\t\t\t\t[d] 取款服務\n");
printf("\n\t\t\t\t\t\t[e] 修改密碼\n");
printf("\n\t\t\t\t\t\t[f] 注銷 \n");
printf("\n\t\t\t\t\t\t[g] 退出系統(tǒng)\n");
char e;
printf("\n\t\t\t\t\t\t您要選擇的服務是:");
fflush(stdin);
scanf("%c",e);
switch(e)
{ case'A':
case'a': searchmoney() ;break;
case'B':
case'b': savemoney() ;break;
case'C':
case'c': transfermoney() ;break;
case'D':
case'd': withdrawalmoney() ;break;
case'E':
case'e': xiugai() ;break;
case'F':
case'f': {int zhuxiaoxitong=zhuxiaozhanghao();{if(zhuxiaoxitong==1) return;}break;}
case'G':
case'g': quite();break;
}
printf("\n\n\n\t\t\t\t按任意鍵繼續(xù)......\n");
getch();
}
}
void login()
{
fp=fopen("atm.txt","rb+");
if(fp==NULL)
{
printf("\n\n\n\t\t\t\t文件打開失敗!");
return;
}
system("cls");
printf("\n\t\t\t\t\t\t現(xiàn)在執(zhí)行的是登錄函數(shù)的使用\n");
int zhanghao;
printf("\n\t\t\t\t\t\t請輸入賬號:");
scanf("%d",zhanghao);
int flag=0;
while(fread(one,sizeof(one),1,fp)==1)
{
if(zhanghao==one.account){
flag=1;
break;
}
}
char password2[7];
if(flag==1){
int h;
for(h=0;h3;h++){
printf("\n\t\t\t\t\t\t請輸入密碼:");
fflush(stdin);
inputpassword(password2);
if(strcmp(password2,one.password)==0)
{
printf("\n\t\t\t\t\t\t登陸成功!");
service();
break;
}else{
printf("密碼不正確!");
}
}
if(h==3){
printf("\n\t\t\t您的密碼三次輸入有誤,返回");
}
}else{
printf("無此賬號!");
}
fclose(fp);
}
void quite()
{
system("cls");
printf("\t\t\t現(xiàn)在執(zhí)行的是退出函數(shù)的使用\n");
exit(0);
}
新聞名稱:atm注冊函數(shù)c語言程序 c語言實現(xiàn)用戶注冊
分享URL:http://jinyejixie.com/article32/dosdhpc.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、品牌網站建設、全網營銷推廣、定制開發(fā)、企業(yè)建站、網站排名
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)