问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

用c++来做一个ATM的程序

发布网友 发布时间:2022-04-23 14:34

我来回答

2个回答

热心网友 时间:2023-07-19 23:48

#include <iostream>
#include <fstream>
#include <vector>
#include <stdlib.h>
using namespace std;

///////////////////////////////用户类//////////////////////////////////////
class User
{
private:
int money;
string userName;
string password;
public:
User();
~User();
User(string userName, string password);
User(string userName, string password, int money);
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;
}

User::User(string userName, string password, int money)
{
this->userName = userName;
this->password = password;
this->money = money;
}

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

int DataBase::getUserNumber()
{
return this->userNumber;
}
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();
void init(string fileName);
void saveInfo(string fileName);
int main()
{
string fileName = "info.txt";
int state;
int user_state;
User *user;
init(fileName);
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:
{
cout<<"请输入转账的用户名:";
string name;
cin>>name;
User *rUser = database.getUser(name);
if(NULL == rUser) cout<<"查无此人"<<endl;
else
{
int rMoney;
cout<<"请输入转账的用金额:";
cin>>rMoney;
if(rMoney > user->checkMoney()) cout<<"你没那么多钱啊!"<<endl;
else
{
user->saveMoney(-rMoney);
rUser->saveMoney(rMoney);
}
}
}
break;
case 5://返回
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:// 转账
{
cout<<"请输入转账的用户名:";
string name;
cin>>name;
User *rUser = database.getUser(name);
if(NULL == rUser) cout<<"查无此人"<<endl;
else
{
int rMoney;
cout<<"请输入转账的用金额:";
cin>>rMoney;
if(rMoney > user->checkMoney()) cout<<"你没那么多钱啊!"<<endl;
else
{
user->saveMoney(-rMoney);
rUser->saveMoney(rMoney);
}
}
}
break;
case 5://返回
user_state = 0;
default: break;
}
} while(user_state);
user = NULL;
}
else cout<<"\n登陆失败\n";
break;
case 3:
state = exit();
break;
default: break;
}
}
while(state);
saveInfo(fileName);
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 != database.getUser(userName)) // 如果用户名存在
return NULL; // 注册失败

cout<<"请输入密码:";
cin>>password;

User *user = new User(userName, password);
database.add(user);

return user; // 注册成功
}

User * user_login()
{
string userName;
string password;
cout<<"请输入账号:";
cin>>userName;
cout<<"请输入密码:";
cin>>password;

User *user = database.getUser(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* 5.返 回 *\n";
cout<<"\t\t******************************\n";

int num;
cin>>num;
return num;
}

///////////////////////将用户信息从info.txt中取出/////////////////////////
void init(string fileName)
{
ifstream infile(fileName.c_str(), ios::in);
char ch[100];
vector<string> v_user_info;
while(infile.getline(ch, 100)) // 一次读取一行内容,假设一行最多有100个字符
{
string str(ch);
v_user_info.push_back(str);
}
for(int i = 0; i < v_user_info.size(); i += 3)
{
string name = v_user_info.at(i);
string pass = v_user_info.at(i + 1);
string mony = v_user_info.at(i + 2);
User *user = new User(name, pass, atoi(mony.c_str()));
database.add(user);
}
}

void saveInfo(string fileName)
{
ofstream outfile(fileName.c_str(), ios::out);
outfile.seekp(0, ios::beg);
int len = database.getUserNumber();
for(int i = 0; i < len; i++)
{
User *user = database.getUser(i);
string name = user->getUserName();
string pass = user->getPassword();
int money = user->checkMoney();
char ch[65535];
string moneystr(itoa(money, ch, 10));
outfile.write(name.c_str(), name.size());
outfile.write("\n", 1);
outfile.write(pass.c_str(), pass.size());
outfile.write("\n", 1);
outfile.write(moneystr.c_str(), moneystr.size());
outfile.write("\n", 1);
}
}来自:求助得到的回答

热心网友 时间:2023-07-19 23:48

你在课程设计吗?
用c语言编写ATM的程序,实现开户、存款、取款、查询余额、转账的业务逻...

int t=1;for(i=0;i&lt;100;i++){ printf("\t\t\t\t\t\t欢迎使用青软ATM系统\n");printf("\t\t\t\t\t\t正在进入主界面,请稍等");int j;for(j=1;j&lt;t;j++){ printf(".");} t++;if(t==10){ t=1;} printf("\n\t\t\t\t\t\t%d%%",i);system("cls");} whil...

在C语言中ATM自动取款机的功能程序怎么写啊?

void main(){ char SelectKey,CreditMoney,DebitMoney;while(1){ do{ clrscr();puts("Please select key:");puts("1.Quary");puts("2.Credit");puts("3.Debit");puts("4.Return");SelectKey=getch();}while(SelectKey!='1'&amp;&amp;SelectKey!='2'&amp;&amp;SelectKey!='3'&amp;&amp;SelectKey!='4');switch(...

用C语言编程ATM的简单取款过程,越简单越好

include &lt;stdio.h&gt;int main (void){int i,g,q=10000,qq=0,z;char mm[6];const char MM[6]="123456";printf ("\n\t请输入密码以登入账户:");while(1){for(i=0;i&lt;6;i++) {mm[i]=getch();if (mm[i]!='\b'){putchar ('*');}else{printf ("\b \b");i--;i--;}...

c语言ATM取款机怎么做 ,得输入密码的那种

return 1;

用C语言模拟ATM机工作流程编程

include "stdio.h"对ATM机器的模拟就是一个对队列的模拟下面代码在VC6环境下调试已经通过了其中有个缺陷就是因为代码执行速度过快导致二次执行根据时间随机出来的数字都是一样的因此你可以自己加上一个延迟子程序部分功能已经注释了#include "stdlib.h"#include "time.h"#define OK 1#define ERROR 0...

【C语言】编写ATM机程序

void ATM::welcome(){ times=0;cout&lt;&lt;"欢迎使用若雪银行ATM自动取款机!~!"&lt; char pwd[8],num[20],ch;int i=0;do { i=0;cout&lt; do { cin.get(ch);num[i++]=ch;}while(ch!='\n');num[i-1]='\0';i=0;cout&lt;&lt;"请输入密码:";do { cin.get(ch);pwd[i++]=ch;}while(...

编写一个关于“ATM系统”c语言程序。 要求,1功能:存钱,取钱,转账...

int chose = -1;while(chose != 0){ printf("\n1. 存钱\t2. 取钱\t3. 转账\t4. 更改密码\t5. 显示账户信息\t0.退出\n");scanf("%d", &amp;chose);conduct(pMainAcc, chose, pAssistAcc);} return 0;} bool conduct(PACCOUNT pA, int chose, PACCOUNT pB){ bool rtnflag = true;...

求大神帮忙用C语言(不要C++)设计一个简易的ATM自助存款机 没有账号密...

include&lt;stdio.h&gt;int main(){int choice;float balance = 1000;float draw;do {printf("输入数字选择对应功能\n");printf("1:查询余额\n");printf("2:取款\n");printf("3:存款\n");printf("4:退出\n");scanf("%d", &amp;choice);switch (choice){case 1:printf("您的账户余额为:%f...

编写一个C语言程序模拟银行ATM机的账户管理功能,系统主要实现以下功能...

define AN 9 //表示账号8位 define PN 7 //表示密码6位 define ASN 3 //表示系统中共有3个账户信息 struct Account { char accountnumber[AN]; //表示账号信息 char password[PN]; //表示账户的密码信息 double balance; //表示账户的余额 };struct Account ats[ASN]={{"00000001","123456...

求一道C语言编程,在VC6.0的环境下运行。 关于ATM取款存款的一道程序代码...

关于ATM取款存款的一道程序代码。要求代码100行以上左右。要求使用数组,指针,等基本用法。发到271897171@qq.com。谢谢啦。... 求一道C语言编程,在VC6.0的环境下运行。 关于ATM取款存款的一道程序代码。 要求代码100行以上左右。要求使用数组,指针,等基本用法。发到271897171@qq.com。谢谢啦。 展开 ...

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
刚买的新车跑了一次长途现在须要保养些或者说注意些什么 新车跑了高速以后保养好点可以吗? 新车能跑长途吗 现在三千公里 准备自驾游 车本是一万公里一保养 请大师... 1.请问长隆水上乐园全票包不包括夜场。 广州长隆水上乐园门票是多少?是买了就可以玩任何东西的通票么? 正常形态精子的百分率应试多少才是正常的? 正常形态精子百分率是多少 有保证书是否可以作为起诉离婚的证据 孩子在遇到挫折时容易退缩,不愿意面对,我该怎么鼓励她呢? 当孩子遇到挫折时,父母应如何给予他们情感支持? 用C#编写一个自动取款机(ATM)模拟程序 什么是ATM系统 ATM自动取款机的使用程序 ATM模拟程序 银行卡atm 取款程序 用c++编写ATM程序 ATM机取款的操作程序是怎样的。 ATM取款机程序 这种行李箱的锁坏了可以修吗? 行李箱的密码锁坏了可以换新的吗? 旅行箱密码忘记,锁坏了,还可以换一个吗?? 行李箱密码锁坏了怎么办可不可以换哎 我的行李箱的嗯锁扣坏了能换一个不? 我密码箱锁坏了,能换新的吗 windows10 中文输入法只能输入一个字母,不管哪种中文输入法都是这样,英... win10输入法的问题,不能打汉字,只能打字母? 键盘出现打不出汉字,打出来的全是字母,怎么处理? win10中文打字只显示字母怎么办? 大神求教,明基卓威ec1-a鼠标,右侧会透光么?是不是有问题啊?? 卓威为什么不出2k 240或144的屏幕? 在C语言中ATM自动取款机的功能程序怎么写啊? 就是用JAVA编写一个ATM的程序 用C语言一个ATM取款机的程序代码(用循环语句) JAVA 模拟ATM柜员机模拟程序 怎样用JAVA编写一个ATM简单的应用程序 用C++模拟ATM柜员机程序 只狼这个,一直说要去那柿子,我背包里的这个不是吗?为什么不能给他 只狼游戏里有了鲜柿子干柿子的话,要给谁?? 老哥们只狼怎么才能触发她要柿子的那个剧情啊? 《只狼》鲜柿子在哪? 只狼鲜柿子干柿子有什么用? 只狼干柿子和鲜柿子有什么用? 飞雪玉花的歌词 飞雪玉花歌词 只狼有没有大佬刷出来过柿子?我现在柿子不够了,贼急! 《秦时明月》的插曲《飞雪玉花》的歌词? 在只狼里干柿子到底是要怎么拿啊? 求秦时明月的插曲《飞雪玉花》(人唱版)的歌词?急!速! 游戏只狼普通柿子在哪? 跪求秦时明月飞雪玉花的全部词?就是带上金戈铁马笑谈间后面两段的,要时间,精确到秒的。
  • 焦点

最新推荐

猜你喜欢

热门推荐