C#ATM
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
public class Account//定义一个类Account
{
private int accountnumber;//定义一个变量卡号
private int pin;//定义一个变量密码
public int Balance;//定义一个变量余额
public Account(int number, int password, int userbalance)
{
accountnumber = number;
pin = password;
Balance = userbalance;
}//构造函数Account,输入姓名,密码和余额
public int Number
{
get { return accountnumber; }
}//设置账户为只读属性
public int Userbalance
{
get { return Balance; }
}//设置余额为只读属性
public bool ValidatePIN(int userPIN)
{
return (userPIN == pin);
}//验证输入密码是否正确
public void Credit(int amount)
{
Balance += amount;
}//存款
public void Debit(int amount)
{
Balance -= amount;
}//取款
public bool toDeposit(int numOfDeposit)
{
if (numOfDeposit >= 0) //存储金额为正数
{
Balance = Balance + numOfDeposit;
return true;
}
else
{
return false;
}
}
//取钱
public bool toTakeOut(int numOfTakeOut)
{
if ((numOfTakeOut >= 0) && (numOfTakeOut <= Balance)) //要保证取钱数为正数,且要小于余额
{
Balance = Balance - numOfTakeOut;
return true;
}
else
{
Console.WriteLine("你的余额不足!");
return false;
}
}
public void zhanghao(int number,int k)
{
Console.WriteLine("请输入账号:");
k = 1;
while (k>0)
{
int str = Convert.ToInt32(Console.ReadLine());
if (str != number)
{
Console.WriteLine("账号输入错误,请重新输入。");
k = k;
}
else k = 0;
}
}
public void mima(int password,int y)
{
Console.WriteLine("请输入密码:");
y=1;
while (y > 0)
{
int s = Convert.ToInt32(Console.ReadLine());
if (s != password)
{
Console.WriteLine("密码输入错误,请重新输入。");
y = y;
}
else y = 0;
}
}
}
public class role//create a class named role
{
private string administrators;
private string administratorpin;
public role(string Admin, string Adminpin)
{
administrators = Admin;
administratorpin = Adminpin;
}//构造一个函数,输入管理员的账号,密码
public string Administratorsnumber
{
get { return administrators; }
}//设置管理员账号只读
public bool Apin(string ADMpin)
{
return (administratorpin == ADMpin);
}//验证密码是否正确
}
public class Keypad
{
public int GetInput()
{
return Convert.ToInt32(Console.ReadLine());
} //根据用户输入,返回一个整型
}
class program
{
static void Main(string[] args)
{
Account user = new Account(12345, 12345, 10000);
role roleone = new role("roleone", "impassword");
user.zhanghao(12345,1);
user.mima(12345,1);
Keypad pad = new Keypad();
pad.GetInput();
Console.WriteLine("你想?1.存钱 2.取钱 3.离开");
int a = pad.GetInput();
while (a > 0)
{
if (a == 1)
{
Console.WriteLine("请输入你存入的金额");
int b = pad.GetInput();
user.toDeposit(b);
Console.WriteLine("你的余额为{0}元", user.Balance);
}
else
{
if (a == 2)
{
Console.WriteLine("请输入你取出的金额");
int b = pad.GetInput();
user.toTakeOut(b);
Console.WriteLine("你的余额为{0}元", user.Balance);
}
else
{
if (a == 3)
{
Console.WriteLine("再见!");
a = -1;
break;
}
else
{
Console.WriteLine("非法输入,请重新输入。");
}
}
}
Console.WriteLine("你想?1.存钱 2.取钱 3.离开");
int d = pad.GetInput();
a = d;
}
Console.ReadKey();
}
}
}
C#ATM的更多相关文章
- 设计模式(十二):通过ATM取款机来认识“状态模式”(State Pattern)
说到状态模式,如果你看过之前发布的重构系列的文章中的<代码重构(六):代码重构完整案例>这篇博客的话,那么你应该对“状态模式”并不陌生,因为我们之前使用到了状态模式进行重构.上一篇博客我们 ...
- ATM
package duzhaonan;import java.util.Scanner;import javax.swing.JOptionPane;class Account{//创建的账户类 Str ...
- ATM+购物车
本次代码的实现用到了模块间的互相调用,这对于初学者而言有些难度,不过这也是我们必须要掌握的,在以后的大程序中,多个模块会让我们的代码看起来简洁明了,易排错 (本次代码只是简单的实现的基本的功能,其代码 ...
- 简单的ATM取款过程
一个简单的ATM的取款过程是这样的:首先提示用户输入密码(pwd),最多只能输3次,超过三次则提示用户“密码已输入三次错误,请取卡.“结束交易.如果用户密码正确,在提示用户输入金额(money),AT ...
- 大话JS面向对象之开篇万物皆对象------(ATM取款机引发的深思)
一,总体概要 OO(面向对象)概念的提出是软件开发工程发展的一次革命,多年来我们借助它使得很多大型应用程序得以顺利实现.如果您还没有掌握并使用OO进行程序设计和开发,那么您无疑还停留在软件开发的石器时 ...
- ATM模拟器(附代码及运行结果)
源代码: import java.util.Scanner; class Account{ String identify; String name; String date; String key; ...
- bzoj 1179[Apio2009]Atm (tarjan+spfa)
题目 输入 第一行包含两个整数N.M.N表示路口的个数,M表示道路条数.接下来M行,每行两个整数,这两个整数都在1到N之间,第i+1行的两个整数表示第i条道路的起点和终点的路口编号.接下来N行,每行一 ...
- ATM跨行取款的清算方式
ATM跨行取款和POS机是类似的,因为没有商户参与,所以不需要收单清算,过程更为简单. 回到文章最开头的例子:你拿着一张工行卡去建行的ATM取了100元,这个跨行业务在CNAPS体系中的过程如下: 你 ...
- 工行ATM转账——事务操作
今儿去工行ATM给已朋友转账,遇到这么个情况: 选择对外转账后输入转入账号(输入两次),接着提示输入转入金额(输入一次金额),按确定,系统提示交易中,3秒左右,提示“输入账号无效”,系统自动中断了操作 ...
- python之ATM
每次做一点就发出来,大神不要嫌重复 2016/11/4 今天来搞ATM,反正逃不了的,说来惭愧,这个作业是我10/4号20天前拿到的,当时是万脸蒙比的,今天又做了一点,现在算是百脸蒙比吧. 一.需求: ...
随机推荐
- 在IIS中如何配置SSL(https)
1.打开IIS管理界面>“服务器证书”>“创建自签名证书”>输入名称>点“完成” 2.在“网站”上右键“添加网站”,在“绑定”的“类型”中选择“Https”,在“SSL证书&q ...
- printf打印输出
int PrintVal = 9; /*按整型输出,默认右对齐*/ printf("%d\n",PrintVal); /*按整型输出,补齐4位的宽度,补齐位为空格 ...
- git 三步走
git三步走: git add . (注:别忘记后面的.,此操作是把Test文件夹下面的文件都添加进来) git commit -m "提交信息" (注:“提交 ...
- 关于隐式创建vue实例实现简化弹出框组件显示步骤
我们在使用vue写alert组件的时候,经常是定义了一个alert.vue,然后引入alert.vue,然后配置参数等等,非常繁琐,那有没有一种方式可以像window.alert("内容&q ...
- 记一次简单的sql注入
什么是sql注入攻击? 所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令.在某些表单中,用户输入的内容直接用来构造(或者影 ...
- PHP的openssl_encrypt方法的Java实现
<?php class OpenSSL3DES { /*密钥,22个字符*/ const KEY='09bd821d3e764f44899a9dc6'; /*向量,8个或10个字符*/ cons ...
- mysql <=> null 问题
SELECT * FROM cms_user WHERE age=NULL; Empty set (0.03 sec) 查询表中记录age值为null mysql> SELECT * FROM ...
- Varnish http缓存服务器
http://blog.51cto.com/hexiaoshuai/1909183 https://jefferywang.gitbooks.io/varnish_4_1_doc_zh/content ...
- 前端经典面试题之CSS实现三栏布局,左右宽度固定,中间宽度自适应
前端常问的面试题,题目:假设高度一定,请写出三栏布局,左右宽度300px,中间自适应. 看到这里我希望你能停下来思考几分钟, 1分钟~2分钟~3分钟~4分钟~5分钟! 好了,那么你想出了几种答案呢? ...
- 共识机制:AngelToken技术的根基
共识机制是区块链技术的一个核心问题,它决定了区块链中区块的生成法则,保证了各节点的诚实性.账本的容错性和系统的稳健性. 常用的共识机制主要有 PoW.PoS.DPoS.Paxos.PBFT等. 基于区 ...