首先根据ATM属性构建对象
namespace BankSim {
/// <summary>
/// 银行账户
/// </summary>
public class Account {
/// <summary>
/// 卡号
/// </summary>
public string No { get; private set; }
/// <summary>
/// 余额
/// </summary>
public double Balance { get; private set; }
/// <summary>
/// 密码
/// </summary>
public string Password { get; set; }
/// <summary>
/// 构造器
/// </summary>
/// <param name="no">卡号</param>
/// <param name="password">初始密码</param>
/// <param name="balance">预存金额</param>
public Account(string no, string password, double balance) {
this.No = no;
this.Password = password;
this.Balance = balance;
}
/// <summary>
/// 存款
/// </summary>
/// <param name="money">存入金额</param>
/// <returns>存款成功返回true, 否则返回false</returns>
public bool Deposit(double money) {
if (money > 0) {
Balance += money;
return true;
}
return false;
}
/// <summary>
/// 取款
/// </summary>
/// <param name="money">取款金额</param>
/// <returns>取款成功返回true, 否则返回false</returns>
public bool Withdraw(double money) {
if (money > 0 && money <= Balance) {
Balance -= money;
return true;
}
return false;
}
}
}
设定默认账户跟密码生成方法
namespace BankSim {
public class ATM {
private Account[] accounts = new Account[3];
private Account currentAccount = null;
public ATM() {
accounts[0] = new Account("11223344", "123321", 2300);
accounts[1] = new Account("22334455", "147258", 500);
accounts[2] = new Account("33445566", "808080", 9800);
}
public Account Account {
get {
throw new System.NotImplementedException();
}
set {
}
}
/// <summary>
/// 读卡
/// </summary>
/// <param name="no">卡号</param>
/// <returns>读卡成功返回true, 否则返回false</returns>
public bool ReadCard(string no) {
currentAccount = FindByNo(no);
return currentAccount != null;
}
/// <summary>
/// 退卡
/// </summary>
public void QuitCard() {
currentAccount = null;
}
/// <summary>
/// 密码验证
/// </summary>
/// <param name="password">输入密码</param>
/// <returns>密码正确返回true, 否则返回false</returns>
public bool Verify(string password) {
return currentAccount.Password == password;
}
/// <summary>
/// 查看余额
/// </summary>
/// <returns></returns>
public double ShowBalance() {
return currentAccount.Balance;
}
/// <summary>
/// 转账
/// </summary>
/// <param name="toAccountNo">转入账号</param>
/// <param name="money">转入金额</param>
/// <returns>转账成功返回true, 否则返回false</returns>
public bool Transfer(string toAccountNo, double money) {
Account toAccount = FindByNo(toAccountNo);
if (money > 0) {
if (toAccount != null) {
if (currentAccount.Withdraw(money)) {
toAccount.Deposit(money);
return true;
}
}
}
return false;
}
/// <summary>
/// 存款
/// </summary>
/// <param name="money">存入金额</param>
/// <returns>存入成功返回true, 否则返回false</returns>
public bool PutMoney(int money) {
return currentAccount.Deposit(money);
}
/// <summary>
/// 取款
/// </summary>
/// <param name="money">取出金额</param>
/// <returns>取出成功返回true, 否则返回false</returns>
public bool GetMoney(int money) {
return currentAccount.Withdraw(money);
}
/// <summary>
/// 修改密码
/// </summary>
/// <param name="oldPass">原密码</param>
/// <param name="newPass">新密码</param>
/// <returns>修改成功返回true, 否则返回false</returns>
public bool ChangePassword(string oldPass, string newPass) {
if (currentAccount.Password == oldPass) {
currentAccount.Password = newPass;
return true;
}
return false;
}
private Account FindByNo(string no) {
for (int i = 0; i < accounts.Length; i++) {
if (accounts[i].No == no) {
return accounts[i];
}
}
return null;
}
}
}
调用属性方法运行
using System;
namespace BankSim {
class Program {
static void Main(string[] args) {
ATM atm = new ATM();
while (true) {
Console.Write("插入银行卡: ");
string no = Console.ReadLine();
if (atm.ReadCard(no)) {
Console.Write("请输入密码: ");
string pass = Console.ReadLine();
if (atm.Verify(pass)) {
bool jx = true;
do {
Console.WriteLine("1. 查询余额");
Console.WriteLine("2. 存款");
Console.WriteLine("3. 取款");
Console.WriteLine("4. 修改密码");
Console.WriteLine("5. 转账");
Console.WriteLine("6. 退卡");
Console.Write("请选择: ");
int choice = Convert.ToInt32(Console.ReadLine());
switch (choice) {
case 1:
Console.WriteLine("您的余额为: " + atm.ShowBalance());
break;
case 2:
Console.Write("请放入钞票: ");
int money1 = Convert.ToInt32(Console.ReadLine());
if (atm.PutMoney(money1)) {
Console.WriteLine("存入成功!!!");
}
else {
Console.WriteLine("无法识别!!!");
}
break;
case 3:
Console.Write("请输入取款金额: ");
int money2 = Convert.ToInt32(Console.ReadLine());
if (atm.GetMoney(money2)) {
Console.WriteLine("请从出钞口取走钞票");
}
else {
Console.WriteLine("余额不足!!!");
}
break;
case 4:
Console.Write("请输入原密码: ");
string oldPass = Console.ReadLine();
Console.Write("请输入新密码: ");
string newPass1 = Console.ReadLine();
Console.Write("请再次输入新密码: ");
string newPass2 = Console.ReadLine();
if (newPass1 == newPass2) {
if (atm.ChangePassword(oldPass, newPass1)) {
Console.WriteLine("修改成功!!!");
}
else {
Console.WriteLine("修改失败!!!");
}
}
else {
Console.WriteLine("两次输入不一致!!!");
}
break;
case 5:
Console.Write("请输入转入账户的账号: ");
string toAccountNo = Console.ReadLine();
Console.Write("请输入转账金额: ");
double money3 = Convert.ToDouble(Console.ReadLine());
if (atm.Transfer(toAccountNo, money3)) {
Console.WriteLine("转账成功!!!");
}
else {
Console.WriteLine("转账失败!!!");
}
break;
case 6:
atm.QuitCard();
jx = false;
break;
}
} while (jx);
}
else {
Console.WriteLine("密码错误!!!");
}
}
else {
atm.QuitCard();
Console.WriteLine("不要拿石头来开玩笑!!!");
}
}
}
}
}