亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

c#模擬銀行atm機示例分享

2020-01-24 02:45:37
字體:
來源:轉載
供稿:網友

賬戶類Account:
Id:賬戶號碼
PassWord:賬戶密碼
Name:真實姓名
PersonId:身份證號碼
Email:客戶的電子郵箱
Balance:賬戶余額

Deposit:存款方法,參數是double型的金額
Withdraw:取款方法,參數是double型的金額

銀行的客戶分為兩種類型:
儲蓄賬戶(SavingAccount)和信用賬戶(CreditAccount)
兩者的區別是儲蓄賬戶不許透支,而信用賬戶可以透支,并允許用戶設置自己的透支額度(使用ceiling表示)

Bank類,
屬性如下
(1)當前所有的賬戶對象的集合
(2)當前賬戶數量
構造方法
(1)用戶開戶:需要的參數包括id,密碼,姓名,身份證號碼,油箱和賬戶類型
(2)用戶登錄:參數包括id,密碼,返回Account對象
(3)用戶存款:參數包括id和存款數額
(4)用戶取款:參數包括id和取款數額
(5)設置透支額度:參數包括id和新的額度,這個方法需要哦驗證賬戶是否是信用賬戶參數
統計方法
(6)統計銀行所有賬戶的余額總數
(7)統計所有信用賬戶透支額額度總數

源代碼:

復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ATM
{
abstract class Account
{
//賬戶號碼
protected long id;
public long ID
{
get { return id; }
set { id = value; }
}
//賬戶密碼
protected string password;
public string PassWord
{
get { return password; }
set { password = value; }
}
//戶主的姓名
protected string name;
public string Name
{
get { return name; }
set { name = value; }
}
//身份證號碼
protected string personId;
public string PersonId
{
get { return personId; }
set { personId = value; }
}
//email
protected string email;
public string Email
{
get { return email; }
set { email = value; }
}
//余額
protected double balance;
public double Balance
{
get { return balance; }
set { balance = value; }
}

//靜態號碼生成器
private static long idBuilder = 100000;
public static long IdBuilder
{
get { return idBuilder; }
set { idBuilder = value; }
}

public void Deposit(double sum)//存款
{
if (sum < 0)
throw new InvalidOperationException("輸入的金額為負數");
balance += sum;
}

public abstract void Withdraw(double sum);//取款
public Account()
{ }
public Account(string password, string name, string personId, string email)
{
this.id = ++idBuilder;
this.password = password;
this.name = name;
this.personId = personId;
this.email = email;
}
}
//創建CreditAccount類,該類繼承抽象類Account
class CreditAccount : Account
{
protected double ceiling;//透支額度
public double Ceiling
{
get { return ceiling; }
set { ceiling = value; }
}
public CreditAccount(string password, string name, string personId, string email)
: base(password, name, personId, email)
{ }  
//信用賬戶的取款操作
public override void Withdraw(double sum)
{
if (sum < 0)
{
throw new InvalidOperationException("輸入的金額為負數!");
}
if (sum > balance + ceiling)
{
throw new InvalidOperationException("金額已經超出余額和透支度的總數了");
}
balance -= sum;
}
}
//創建SavingAccount類,該類繼承抽象類Account
class SavingAccount : Account
{
public SavingAccount(string password, string name, string personId, string email)
: base(password, name, personId, email)
{ }

public override void Withdraw(double sum)
{
if (sum < 0)
{
throw new InvalidOperationException("輸入的金額為負數!");
}
if(sum>balance)
{
throw new InvalidOperationException("金額已經超出金額!");
}
balance -= sum;
}
}

//bank類,對銀行中的所有賬戶進行管理
class Bank
{
//存放賬戶的集合
private List<Account> accounts;
public List<Account> Accounts
{
get { return accounts; }
set { accounts = value; }
}

//當前銀行的賬戶數量
private int currentAccountNumber;
public int CurrentAccountNumber
{
get { return currentAccountNumber; }
set { currentAccountNumber = value; }
}

//構造函數
public Bank()
{
accounts=new List<Account>();
}

//開戶
public Account OpenAccount(string password, string confirmationPassword, string name, string personId, string email, int typeOfAccount)
{
Account newAccount;
if (!password.Equals(confirmationPassword))
{
throw new InvalidOperationException("兩次密碼輸入的不一致");
}
switch (typeOfAccount)
{
case 1: newAccount = new SavingAccount(password, name, personId, email);
break;
case 2: newAccount = new CreditAccount(password,name,personId,email);
break;
default: throw new ArgumentOutOfRangeException("賬戶類型是1和2之間的整數");
}
//把新開的賬號加到集合中
accounts.Add(newAccount);
return newAccount;
}
//根據賬戶id得到賬戶對象
private Account GetAccountByID(long id)
{
foreach (Account account in accounts)
{
if (account.ID == id)
{
return account;
}
}
return null;
}

//根據賬號和密碼登陸賬戶
public Account SignIn(long id, string password)
{
foreach (Account account in accounts)
{
if (account.ID == id && account.PassWord.Equals(password))
{
return account;
}
}
throw new InvalidOperationException("用戶名或者密碼不正確,請重試");
}

//存款
public Account Deposit(long id, double sum)
{
Account account = GetAccountByID(id);
if (account != null)
{
account.Deposit(sum);
return account;
}
throw new InvalidOperationException("非法賬戶!");
}

//取款
public Account Withdraw(long id, double sum)
{
Account account = GetAccountByID(id);
if (account != null)
{
account.Withdraw(sum);
return account;
}
throw new InvalidOperationException("非法賬戶!");
}

//設置透支額度
public Account SetCeiling(long id, double newCeiling)
{
Account account = GetAccountByID(id);
try
{
(account as CreditAccount).Ceiling = newCeiling;
return account;
}
catch (Exception)
{
throw new InvalidOperationException("次賬戶不是信用賬戶!");
}
throw new InvalidOperationException("非法賬戶");
}

//統計銀行所有賬戶余額
public double GetTotalBalance()
{
double totalBalance = 0;
foreach (Account account in accounts)
{
totalBalance += account.Balance;
}
return totalBalance;
}
//統計所有信用賬戶透支額度總數
public double GetTotalCeiling()
{
double totalCeiling = 0;
foreach (Account account in accounts)
{
if (account is CreditAccount)
{
totalCeiling += (account as CreditAccount).Ceiling;
}
}
return totalCeiling;
}
}

//進行客戶測試
class Program
{
static Account SignIn(Bank icbc)
{
Console.WriteLine("/nPlease input your account ID");
long id;
try
{
id = long.Parse(Console.ReadLine());
}
catch (FormatException)
{
Console.WriteLine("Invalid account ID!");
return null;
}

Console.WriteLine("Please input your password");
string password = Console.ReadLine();
Account account;
try
{
   account = icbc.SignIn(id, password);
}
catch (InvalidOperationException ex)
{
Console.WriteLine(ex.Message);
return null;
}
return account;
}
static void Main(string[] args)
{
Bank icbc = new Bank();
while (true)
{
Console.WriteLine("Please choose the service your need");
Console.WriteLine("(1) Open a new account");
Console.WriteLine("(2) Desposit");
Console.WriteLine("(3) Withdraw");
Console.WriteLine("(4) Set Ceiling");
Console.WriteLine("(5) Get Total Balance");
Console.WriteLine("(6) Get Total Ceiling");
Console.WriteLine("(0) Exit");
string choice;
choice = Console.ReadKey().KeyChar.ToString();
//ConsoleKey i=Console.ReadKey().Key;
switch (choice)
{
case "1":
{
string personId;
int typeOfAccount;
string password;
Console.WriteLine("/nWhich kind of account do you want to open?");
while (true)
{
Console.WriteLine("(1)Saving Account/n(2)Credit Account/n(3)return to Last Menu");
try
{
typeOfAccount = int.Parse(Console.ReadLine());
}
catch (FormatException)
{
Console.WriteLine("/nInvalid option,please choose again");
continue;
}
if (typeOfAccount < 1 || typeOfAccount > 3)
{
Console.WriteLine("/nInvalid option,please choooose again!");
continue;
}
break;
}
if (typeOfAccount == 3)
{
break;
}
Console.WriteLine("/nPlease input your name:");
string name = Console.ReadLine();
while (true)
{
Console.WriteLine("Please input your Personal ID");
personId = Console.ReadLine();
if (personId.Length != 18)
{
Console.WriteLine("Invalid Personal ID,please input again!");
continue;
}
break;
}
Console.WriteLine("Please input your E-mail");
string email = Console.ReadLine();
while (true)
{
Console.WriteLine("Please input your password");
password = Console.ReadLine();
Console.WriteLine("Please confirm your password");
if (password != Console.ReadLine())
{
Console.WriteLine("The password doesn't math!");
continue;
}
break;
}
Account account = icbc.OpenAccount(password, password, name, personId, email, typeOfAccount);
Console.WriteLine("The account opened successfully");
Console.WriteLine("Account ID:{0}/nAccount Name;{1}/nPerson ID:{2}/nemail;{3}/nBalance:{4}",account.ID,account.Name,account.PersonId,account.Email,account.Balance);
}
break;
case "2":
{
Account account = SignIn(icbc);
if (account == null)
{
break;
}
int amount;
while (true)
{
Console.WriteLine("Please input the amount;");
try
{
amount = int.Parse(Console.ReadLine());
}
catch (FormatException)
{
Console.WriteLine("Invalid input!");
continue;
}
break;
}
try
{
icbc.Deposit(account.ID, amount);
}
catch (InvalidOperationException ex)
{
Console.WriteLine(ex.Message);
break;
}
Console.WriteLine("Deposit successfully,our balance is{0}元",account.Balance);
}
break;
case "3":
{
Account account = SignIn(icbc);
if (account == null)
{
break;
}
int amount;
while (true)
{
Console.WriteLine("Please input the amount");
try
{
amount = int.Parse(Console.ReadLine());
}
catch (FormatException)
{
Console.WriteLine("Invalid input!");
continue;
}
break;
}
try
{
icbc.Withdraw(account.ID, amount);
}
catch (InvalidOperationException ex)
{
Console.WriteLine(ex.Message);
break;
}
Console.WriteLine("Deposit successfully,your balance is{0}yuan",account.Balance);
}
break;
case "4":
{
Account account = SignIn(icbc);
if (account == null)
{
break;
}
double newCeiling;
while (true)
{
Console.WriteLine("Please input the new ceiling");
try
{
newCeiling = double.Parse(Console.ReadLine());
}
catch (FormatException)
{
Console.WriteLine("Invalid input!");
continue;
}
break;
}
try
{
icbc.SetCeiling(account.ID, newCeiling);
}
catch (InvalidOperationException ex)
{
Console.WriteLine(ex.Message);
break;
}
Console.WriteLine("Set ceiling successfully,your new ceiling is{0} yuan",(account as CreditAccount).Ceiling);

}
break;
case "5":
Console.WriteLine("/nThe total balance is:"+icbc.GetTotalBalance());
break;
case "6":
Console.WriteLine("/nThe total ceiling is:" + icbc.GetTotalCeiling());
break;
case "0":
return;
default:
Console.WriteLine("/nInvalid option,plwase choose again!");
break;
}
}
}
}
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品日韩在线观看| 久久激情视频久久| 欧美精品www在线观看| 精品国产欧美一区二区五十路| 欧美日韩另类字幕中文| 日韩精品一区二区三区第95| 在线视频日韩精品| 精品伊人久久97| 中文字幕在线精品| 中文字幕亚洲专区| 亚洲香蕉av在线一区二区三区| 第一福利永久视频精品| 色播久久人人爽人人爽人人片视av| 黄色一区二区在线| 欧美日韩在线一区| 欧美日韩国产在线播放| 亚洲美女又黄又爽在线观看| 亚洲裸体xxxx| 亚洲xxxxx电影| 国产日韩av在线播放| 亚洲www在线观看| 欧美精品一区在线播放| 欧美在线中文字幕| 日韩电影中文字幕在线观看| 久久精品在线视频| 国产ts人妖一区二区三区| 国产最新精品视频| 中文字幕av日韩| 欧美在线视频观看| 日韩视频亚洲视频| www.日韩系列| 亚洲免费av片| 亚洲成人动漫在线播放| 亚洲精品免费网站| 亚洲美女视频网站| 日韩一区二区在线视频| 精品久久久久久亚洲精品| 亚洲欧美日韩精品| 91最新国产视频| 日韩视频免费中文字幕| 亚洲人成网在线播放| 九九热这里只有在线精品视| 日韩精品久久久久久久玫瑰园| 最近2019中文免费高清视频观看www99| 88国产精品欧美一区二区三区| 亚洲欧美精品在线| 亚洲第一免费播放区| 日韩欧美中文免费| 国产精品专区第二| 精品爽片免费看久久| 国产在线观看一区二区三区| 亚洲国产欧美一区二区三区同亚洲| 亚洲а∨天堂久久精品9966| 欧美在线免费视频| 久久成人这里只有精品| 亚洲电影在线观看| 欧美午夜片欧美片在线观看| 欧美成人午夜免费视在线看片| 在线电影欧美日韩一区二区私密| 久久久久久久久久久免费精品| 欧美激情aaaa| 91综合免费在线| 亚洲伊人第一页| 日韩国产在线看| 日韩成人中文电影| 久久久天堂国产精品女人| 亚洲第一视频网站| 日韩最新av在线| 91精品久久久久| 欧美日韩xxxxx| 国产91色在线免费| 亚洲天堂一区二区三区| 欧美国产精品va在线观看| 色av吧综合网| 欧美午夜视频在线观看| 欧美激情中文字幕乱码免费| 欧美成人四级hd版| 欧美性videos高清精品| 国产美女精品免费电影| 亚洲一区二区精品| 成人av色在线观看| 日韩电影免费观看在线| 久久精品国产一区二区电影| 97精品国产97久久久久久| 一区二区三区回区在观看免费视频| 国产精品88a∨| 色婷婷综合久久久久中文字幕1| 中文字幕久久亚洲| 粉嫩老牛aⅴ一区二区三区| 中文字幕国产日韩| 日韩性xxxx爱| 久久人人爽人人爽人人片亚洲| 国产剧情久久久久久| 成人激情视频在线观看| 2018日韩中文字幕| 国产69精品99久久久久久宅男| 亚洲毛片一区二区| 亚洲国产成人在线播放| 久久九九有精品国产23| 狠狠做深爱婷婷久久综合一区| 国产精品视频播放| 欧美日韩在线一区| 国产亚洲精品久久久| 久久久精品国产| 日韩hd视频在线观看| 97精品伊人久久久大香线蕉| 国产日韩欧美在线视频观看| 久久久精品欧美| 国产丝袜精品第一页| 久久成年人免费电影| 欧美视频国产精品| 亚洲国产精品悠悠久久琪琪| 国产精品青青在线观看爽香蕉| 久久青草精品视频免费观看| 欧美日韩国产二区| 大桥未久av一区二区三区| 色妞色视频一区二区三区四区| 亚洲视频综合网| 久久6免费高清热精品| 亚洲已满18点击进入在线看片| 国产在线a不卡| 亚洲免费中文字幕| 国产主播在线一区| 欧美激情亚洲综合一区| 精品免费在线视频| 亚洲第一网站男人都懂| 91九色在线视频| 久久精品中文字幕免费mv| 亚洲aaaaaa| 亚洲欧洲美洲在线综合| 欧美亚洲国产日韩2020| 欧美精品videosex性欧美| 国产精品久久激情| 欧美日韩在线视频首页| 亚洲国产精品专区久久| 日韩电影免费在线观看中文字幕| 国产欧美精品va在线观看| 法国裸体一区二区| 精品久久香蕉国产线看观看亚洲| 欧美性受xxxx白人性爽| 精品中文字幕久久久久久| 热re99久久精品国产66热| 另类天堂视频在线观看| 最近2019年中文视频免费在线观看| 欧美日韩精品在线| 欧美在线视频免费| 欧美区在线播放| 这里只有精品视频在线| 中文字幕日韩av| 亚洲国产成人精品久久| 亚洲欧美一区二区三区四区| 欧美成人剧情片在线观看| 国产玖玖精品视频| 九色精品免费永久在线| 粗暴蹂躏中文一区二区三区| 日韩成人av在线播放| 亚洲精品中文字幕av| 日韩在线小视频| 国产视频亚洲视频| 欧美激情极品视频| 国产精品精品视频| 日本国产欧美一区二区三区| 中文字幕国产精品| 成人精品在线观看|