用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<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");} 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'&&SelectKey!='2'&&SelectKey!='3'&&SelectKey!='4');switch(...
用C语言编程ATM的简单取款过程,越简单越好
include <stdio.h>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<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<<"欢迎使用若雪银行ATM自动取款机!~!"< char pwd[8],num[20],ch;int i=0;do { i=0;cout< do { cin.get(ch);num[i++]=ch;}while(ch!='\n');num[i-1]='\0';i=0;cout<<"请输入密码:";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", &chose);conduct(pMainAcc, chose, pAssistAcc);} return 0;} bool conduct(PACCOUNT pA, int chose, PACCOUNT pB){ bool rtnflag = true;...
求大神帮忙用C语言(不要C++)设计一个简易的ATM自助存款机 没有账号密...
include<stdio.h>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", &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。谢谢啦。 展开 ...