C#——《C#语言程序设计》实验报告——继承与多态——银行ATM程序
生活随笔
收集整理的這篇文章主要介紹了
C#——《C#语言程序设计》实验报告——继承与多态——银行ATM程序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、實驗目的
二、實驗內容
1)使用面向對象的思想,模擬現實世界中的銀行、賬號、ATM等對象,其中類中有字段、方法;
2)在程序中適當的地方,使用屬性、索引,注意使用修飾符;
3)使用繼承,繼承賬號(Account類)得到一個子類(如信用賬號),增加字段(如信用額度)、屬性、方法,覆蓋(overrid)一些方法(如WithdrawMoney)。
4)根據程序的需要(可選做),使用C#的其他語法成分,諸如:接口、結構、枚舉等。
程序中加上適當的注釋,并加一個說明文件,簡要描述在什么地方使用了一些特殊的語法要素。
源代碼
using System;namespace 銀行ATM程序 {class Account{//ConstructorAccount() { }Account(long bank_cardID, string password){this.bank_cardID = bank_cardID;this.account_password = password;}//fieldsprivate static long initial_ID = 1000000001; //the 1st one to create an account get this ID numberprivate static string bank_name = "ICBC";private long bank_cardID;public string account_password;private long total_amount = 100000; //initial accountprivate string[] data = new string[5];private string[] keys ={"card ID","holder's name", "total sum", "latest withdraw","latest deposit"};//propertypublic long latest_withdraw { set; get; }public long latest_deposit { set; get; }public string date_withdraw { set; get; }public string date_deposit { set; get; }public string date_create { set; get; }//indexerpublic string this[int i]{set{data[i] = value;}get{if (i >= 0 && i < data.Length)return data[i];return null;}}public string this[string key]{get{return this[FindIndex(key)];}}private int FindIndex(string key){for (int i = 0; i < keys.Length; i++)if (keys[i] == key)return i;return -1;}//methods//withdraw from the account, record the current timepublic void withdrawMoney(){Console.Write("amount(withdraw): ");latest_withdraw = Convert.ToInt32(Console.ReadLine());if (latest_withdraw <= total_amount){total_amount -= latest_withdraw;this[2] = Convert.ToString(total_amount);date_withdraw = DateTime.Now.ToString();this[3] = Convert.ToString(latest_withdraw);}elseConsole.WriteLine("Lack of balance. Operation is refused\n");}//deposit from the account, record the current timepublic void depositMoney(){Console.Write("amount(deposit): ");latest_deposit = Convert.ToInt32(Console.ReadLine());if (latest_deposit > 0){total_amount += latest_deposit;this[2] = Convert.ToString(total_amount);date_deposit = DateTime.Now.ToString();this[4] = Convert.ToString(latest_deposit);}elseConsole.WriteLine("Invalid operation\n");}//get information about the account void get_card_info() //try 4 choices below{Console.WriteLine("( card ID / holder's name / total sum / latest withdraw / latest deposit )?");string instr = Console.ReadLine();if (instr == "card ID" || instr == "holder's name" || instr == "total sum" || instr == "latest withdraw"|| instr == "latest deposit"){this[3] = Convert.ToString(latest_withdraw);this[2] = Convert.ToString(total_amount);Console.Write(instr + " is " + this[instr]);if (instr == "latest withdraw")Console.WriteLine(" " + date_withdraw);else if (instr == "latest deposit")Console.WriteLine(" " + date_deposit);else if (instr == "card ID")Console.WriteLine(" " + date_create);else if (instr == "card ID" || instr == "total sum")Console.WriteLine("\n");}elseConsole.WriteLine("Invalid input!!");}//Inheritance, subclass CreditAccountprotected class CreditAccount : Account{//ConstructorCreditAccount(long bank_cardID, string password){this.bank_cardID = bank_cardID;this.account_password = password;}//new fieldprivate long line_of_credit; //line of credit //new propertypublic string credit_rating { set; get; }//new methodpublic long get_line_of_credit() //line of credit according to the credit rating{if (credit_rating == "3" || credit_rating == "2")line_of_credit = 50000;else if (credit_rating == "1" || credit_rating == "0")line_of_credit = 10000;elseline_of_credit = 0;return line_of_credit;}//override method withdrawMoney()new public void withdrawMoney(){Console.Write("amount(withdraw): ");latest_withdraw = Convert.ToInt32(Console.ReadLine());if (latest_withdraw <= total_amount + line_of_credit){total_amount -= latest_withdraw;this[2] = Convert.ToString(total_amount);date_withdraw = DateTime.Now.ToString();this[3] = Convert.ToString(latest_withdraw);if (latest_withdraw >= total_amount){Console.WriteLine("warning: you're using your credit!! Withdraw successfully");int temp = Convert.ToInt32(credit_rating);credit_rating = Convert.ToString(--temp);get_line_of_credit();}}else{Console.WriteLine("Lack of balance. Operation is refused\n");}}public static void Main(String[] args){Account a;CreditAccount ca;string card_category;//create a new account, set password, get an ID numbervoid create_account(){Console.WriteLine("######### " + bank_name + " #########"); //which bankConsole.Write("create an account ( normal / credit )?");card_category = Console.ReadLine();if (card_category != "credit" && card_category != "normal"){Console.WriteLine("Invalid input");create_account();}Console.Write("set password: ");string password = Console.ReadLine(); //set passwordAccount a_create = new CreditAccount(initial_ID, password);a = a_create;ca = (CreditAccount)a;a[0] = Convert.ToString(initial_ID); //save IDConsole.Write("Your name: ");a[1] = Console.ReadLine(); //save owner's namea[2] = Convert.ToString(a.total_amount);a.date_create = DateTime.Now.ToString(); //save the time that this account was createdConsole.WriteLine("create successfully!!\nYour ID: " + initial_ID + " " +"Remember your password:" + password + " You have $100000 initially.");initial_ID++;a.latest_deposit = 0;a.latest_withdraw = 0;if (card_category == "credit"){ca.credit_rating = "3";ca.get_line_of_credit();}}create_account();while (true){if (card_category == "normal"){//ask for the next instruction from the userConsole.WriteLine("( create again / get information / withdraw / deposit )?");switch (Console.ReadLine()){case "create again": create_account(); break;case "get information":a.get_card_info(); break;case "withdraw":a.withdrawMoney();a[2] = Convert.ToString(a.latest_withdraw);break;case "deposit":a.depositMoney();a[3] = Convert.ToString(a.latest_deposit);break;default:Console.WriteLine("invalid input\n");break;}}else if (card_category == "credit"){//ask for the next instruction from the userConsole.WriteLine("( create again / get information / withdraw / deposit / line of credit )?");switch (Console.ReadLine()){case "create again": create_account(); break;case "get information":ca.get_card_info(); break;case "withdraw":ca.withdrawMoney();ca[2] = Convert.ToString(ca.latest_withdraw);break;case "deposit":ca.depositMoney();ca[3] = Convert.ToString(ca.latest_deposit);break;case "line of credit":Console.WriteLine("LIne of credit: " + ca.get_line_of_credit());break;default:Console.WriteLine("invalid input\n");break;}}}}}} }運行結果
?
三、實驗目的
參考文章
https://shentuzhigang.blog.csdn.net/article/details/105025108
?
總結
以上是生活随笔為你收集整理的C#——《C#语言程序设计》实验报告——继承与多态——银行ATM程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#——《C#语言程序设计》实验报告——
- 下一篇: C#——《C#语言程序设计》实验报告——