用c语言编写ATM的程序,实现开户、存款、取款、查询余额、转账的业务逻辑。

用c语言编写ATM的程序,实现开户、存款、取款、查询余额、转账的业务逻辑。,第1张

#include <stdioh>

#include <stdlibh>

#include <conioh>

#include <stringh>

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;i<100;i++)

{

printf("\t\t\t\t\t\t欢迎使用青软ATM系统\n");

printf("\t\t\t\t\t\t正在进入主界面,请稍等");

int j;

for(j=1;j<t;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]: 退出系统\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(i>0){

i--;

printf("\b \b");

}

}

}else{

break;

}

}

mima[i]='\0';

printf("\n");

}

void regist()

{

fp=fopen("atmtxt","ab+");

if(fp==NULL)

{

printf("\n\t\t\t文件打开失败!");

return;

}

system("cls");

printf("\t\t\t现在执行的是注册函数的使用\n");

printf("\t\t请输入用户名: ");

fflush(stdin);

gets(kehuname);

char password1[7];

while(1)

{

while(1)

{

printf("\n\n\t\t请输入密码:");

fflush(stdin);

inputpassword(kehupassword);

int n=strlen(kehupassword);

if(n==6)

{

break;

}else

{

printf("\n\t\t密码必须为6位!");

}

}

printf("\n\t\t请输入正确密码!: ");

fflush(stdin);

inputpassword(password1);

if(strcmp(kehupassword,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);

kehuaccount=kaccount+1;

}else{

kehuaccount=20170001;

}

kehumoney=0;

fseek(fp,0,2);

fwrite(&kehu,sizeof(struct bank),1,fp);

fclose(fp);

printf("\n\n\t\t开户成功! ");

printf("\n\t\t您的账号为%d!",kehuaccount);

printf("\n\t\t现在请您重新登录!");

}

void searchmoney()

{

system("cls");

printf("您现在使用的是查询余额功能: \n");

printf("\n\n\t\t您的余额是%02lf",onemoney);

}

void savemoney()

{

system("cls");

double inmoney;

printf("请您选择您要存款的金额 \n");

scanf("%lf",&inmoney);

int q;

int r=1;

for(q=0;q<100;q++)

{

int w;

for(w=1;w<r;w++)

{

printf("");

}

r++;

if(r==10)

{

r=1;

}

printf("\n\t\t\t\t\t\t正在存款%d%%",q);

system("cls");

}

onemoney=onemoney+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(onemoney<outputsomemoney){

printf("您的余额已不足,请您注意!");

}else {

int q;

int r=1;

for(q=0;q<100;q++)

{

int w;

for(w=1;w<r;w++)

{

printf("");

}

r++;

if(r==10)

{

r=1;

}

printf("\n\t\t\t\t\t\t正在取款%d%%",q);

system("cls");

}

onemoney=onemoney-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您现在的余额为%lf",onemoney);

}

}

void transfermoney()

{

system("cls");

int duifang;

int qian;

fflush(stdin);

printf("\n\n\n\t\t您现在使用的是转账功能");

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(tempaccount==duifang)

{

flag=1;

break;

}

}

if(flag==1)

{

printf("请输入转账金额:");

scanf("%d",&qian);

if(onemoney>=qian)

{

int q;

int r=1;

for(q=0;q<100;q++)

{

int w;

for(w=1;w<r;w++)

{

printf("");

}

r++;

if(r==10)

{

r=1;

}

printf("\n\t\t\t\t\t\t正在转账,请稍后!%d%%",q);

system("cls");

}

tempmoney=tempmoney+qian;

fseek(fp,-sizeof(temp),1);

fwrite(&temp,sizeof(temp),1,fp);

onemoney=onemoney-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 现在进行的是修改密码功能\n");

char oldpassword[7];

char newpassword[7];

char newpassword1[7];

int i;

for(i=0;i<3;i++){

printf("\n\t\t\t 请输入旧密码:\n");

inputpassword(oldpassword);

if(strcmp(oldpassword,onepassword)==0){

printf("\n\t\t\t 输入成功!\n");

break;

}else{

printf("\n\t\t\t 密码输入有误,请重新输入!\n");

}

}

if(i<3){

while(1){

printf("\n\t\t\t 请输入您的新密码:\n");

inputpassword(newpassword);

printf("\n\t\t\t 请输入您的确认密码:\n ");

inputpassword(newpassword1);

if(strcmp(newpassword,newpassword1)==0){

strcpy(onepassword,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",oneaccount);

printf("你是否要对此账号进行注销\n\n\t\t请您选择:注销(Y)or不注销(N):");

fflush(stdin);

scanf("%c",&sf);

if(sf=='y'||sf=='Y')

{

printf("正在为您注销!\n",oneaccount);

zhuxiaoxitong=1;

}else{

printf("不注销系统!\n",oneaccount);

}

return zhuxiaoxitong;

}

void service()

{

while(1){

system("cls");

printf("\n\n\n\t\t\t\t\t\t现在是服务系统,本系统有以下服务");

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] 退出系统\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按任意键继续\n");

getch();

}

}

void login()

{

fp=fopen("atmtxt","rb+");

if(fp==NULL)

{

printf("\n\n\n\t\t\t\t文件打开失败!");

return;

}

system("cls");

printf("\n\t\t\t\t\t\t现在执行的是登录函数的使用\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==oneaccount){

flag=1;

break;

}

}

char password2[7];

if(flag==1){

int h;

for(h=0;h<3;h++){

printf("\n\t\t\t\t\t\t请输入密码:");

fflush(stdin);

inputpassword(password2);

if(strcmp(password2,onepassword)==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现在执行的是退出函数的使用\n");

exit(0);

}

用户使用atm机存取款,比去银行柜台进行存取款要便捷,即使没有带卡,用户也可以进行存款 *** 作,其具体步骤如下:

1、挑选需要存到yhk的同行存取款一体机。

2、选择无卡存款业务。

3、输入需要存款的yhk号,(两次确认无误)即可进行下面 *** 作,并检查账号和用户名信息是否吻合。

4、确认无误之后,把需要存入的钱放入存款口,选择确认,即可完成无卡存款 *** 作。

5、为了确保资金安全,可以打印存款凭条,再进行退卡 *** 作。

需要注意的是:放入入钞口的现金只能是100元面值的人民币,一次 *** 作不超过100张,即1万元;也不能夹杂异物。钞票有缺损、污渍、笔迹、透明胶粘贴,过分皱褶的情况都是无法顺利存入atm的。

:1、存款是存款指存款人在保留所有权的条件下把资金或货币暂时转让或存储于银行或其他金融机构,或者是说把使用权暂时转让给银行或其他金融机构的资金或货币,是最基本也最重要的金融行为或活动,也是银行最重要的信贷资金来源。

2、存款是银行最基本的业务之一,没有存款就没有贷款,也就没有银行。从产生时间来看,存款早于银行。中国在唐代就出现了专门收受和保管钱财的柜坊,存户可凭类似支票的"贴"或其他信物支钱。中世纪在欧洲出现的钱币兑换商也接受顾客存钱,属钱财保管性质,不支付利息,是外国银行存款业务的萌芽。随着银行和其他金融机构的出现,银行的存款业务得到了迅速发展。存款可按多种方式分类,如按产生方式可分为原始存款和派生存款,按期限可分为活期存款和定期存款、定活两便存款,按存款者的不同(以中国为例),则可划分为单位存款和个人存款。个人存款即居民储蓄存款,是居民个人存入银行的货币。

国内ATM机上不能存外币,ATM机是以人民币结算的,只能存人民币,可以去柜台存取外币。

国内各大银行均能存储外币,目前的yhk一般都有双币功能,开通之后即可存储外币。比如中国银行的普通的借记卡就是双币卡,里面就是可以存入人民币和美元。

扩展资料:

ATM机存钱方法:

1、首先要清楚在存取款一体机上进行存款的目的。例如是给自己的账户存款,还是给自己的xyk还款,或是给别人汇款。目的明确,才能采取正确步骤。

2、如果给自己的账户存款,按yhk找到对应的银行,否则跨行要交手续费或有不能办理的情况。将卡插进存取款机,输入密码确认,而后左右出现两列选项,找到存款一项点击,之后按照提示信息,将钱放入存款口,确认 *** 作,点钞完成,存款完毕。

3、如果没有yhk,在存取款机上点击无卡无折选项。而后按照页面信息提示,输入银行账号,确认个人信息正确,进行存款 *** 作。

4、在办理时,要注意存取款机一般只能收取百元面钞的纸币。要求六七成以上新度,无破边、破损、不折叠。在存款时机子有时会出现不能识别钞票,不要着急,将钞票整理之后重新放入,或另放新币。如还有问题,可找银行工作人员咨询。

#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;

}

/////////////////////////////////////////////////////////////////////////

///////////////////////////////////数据库类,用来存储用户//////////////////////

class DataBase

{

private:

User users[40]; // 默认数据可最多能存放40个用户

int userNumber; // 已注册用户的数量

public:

DataBase();

~DataBase();

bool add(User user); // 添加新用户

User getUser(int i); // 按照索引取得用户

User getUser(string name); // 按照用户名取得用户

int getUserNumber(); // 取得数据库中用户的数量

};

DataBase::DataBase()

{

userNumber = 0;

}

DataBase::~DataBase()

{

delete users;

}

bool DataBase::add(User user)

{

if(userNumber < 40 && getUser(user->getUserName()) == NULL) // 如果当前用户名在数据库中不存在

{

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;

cin>>num;

cout<<"余额为:"<<user->saveMoney(num)<<endl;;

}

break;

case 2:// 取钱

{

cout<<"输入取钱金额:";

int num;

cin>>num;

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;

cin>>num;

cout<<"余额为:"<<user->saveMoney(num)<<endl;;

}

break;

case 2:// 取钱

{

cout<<"输入取钱金额:";

int num;

cin>>num;

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系统\n";

cout<<"\t\t 1用户注册 \n";

cout<<"\t\t 2用户登录 \n";

cout<<"\t\t 3退出系统 \n";

cout<<"\t\t\n";

int num;

cin>>num;

return num;

}

// 注册

User user_register()

{

string userName;

string password;

cout<<"请输入账号:";

cin>>userName;

if(NULL != databasegetUser(userName)) // 如果用户名存在

return NULL; // 注册失败

cout<<"请输入密码:";

cin>>password;

User user = new User(userName, password);

databaseadd(user);

return user; // 注册成功

}

User user_login()

{

string userName;

string password;

cout<<"请输入账号:";

cin>>userName;

cout<<"请输入密码:";

cin>>password;

User user = databasegetUser(userName);

if(NULL != user) // 如果用户存在

if(user->getPassword() == password)

return user; // 如果密码匹配则登陆成功

return NULL; // 如果用户不存在

}

int exit()

{

return 0; // 退出系统

}

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;

cin>>num;

return num;

}

存折放进ATM是正面向上

 还在用存折存钱的注意了!教你不必排队,在ATM机上存取钱!

银行主动存取款机人们也俗称为ATM机,不必排队能够存取款。今日带我们看看如何用存折在ATM机存款,帮你省掉排队的时刻,一同来看看吧!

1、当你来到自助ATM机前,你会发现在电子屏幕右上方有一项是“无卡折存款”按钮,然后点击该按钮,在挑选“中文”按钮

2、然后在上面输入yhk号,点击右下角的“承认”按钮,再次输入一遍yhk号,再次核对一下yhk号

3、此刻,电子屏幕下方的“存钞口”会翻开,然后将面值100元的钞票放入存钞口内,然后点击右下角的“断定”按钮,等候存储。假如寄存结束,点击右下角的“承认”按钮,假如还想持续寄存,点击上方的“增加”按钮

4、此刻在会看到买卖信息,核对一下是否是持卡人的部分信息,这里的名字是不全显现,只会给出部分辨认,信息无误点击“承认”按钮,这样买卖就完成了,假如想要打印凭条,能够点击右侧的“是”按钮,是不是很简单呢!

以上就是关于用c语言编写ATM的程序,实现开户、存款、取款、查询余额、转账的业务逻辑。全部的内容,包括:用c语言编写ATM的程序,实现开户、存款、取款、查询余额、转账的业务逻辑。、atm机无卡存款怎么 *** 作、国内ATM机上能存外币吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9847116.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存