日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

python定义一个类savingaccount表示银行账户_c#教程之c#模拟银行atm机示例分享

發布時間:2024/7/23 C# 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python定义一个类savingaccount表示银行账户_c#教程之c#模拟银行atm机示例分享 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

public List Accounts

{

get { return accounts; }

set { accounts = value; }

}

//當前銀行的賬戶數量

private int currentAccountNumber;

public int CurrentAccountNumber

{

get { return currentAccountNumber; }

set { currentAccountNumber = value; }

}

//構造函數

public Bank()

{

accounts=new List();

}

//開戶

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;

}

}

}

}

}

總結

以上是生活随笔為你收集整理的python定义一个类savingaccount表示银行账户_c#教程之c#模拟银行atm机示例分享的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。