C#實驗二
實驗二 面向對象基礎編程
1 編寫學生類
編寫一個學生類,該類修飾符爲public,該類有三個數據成員,name,age,hobby,設置三個對數據訪問的可讀可寫屬Name,Age,Hobby,. 編寫一個成員方法,該方法可以在控制檯顯示學生的所有信息,該方法名爲DisplayInfo()
在Program類的Main方法下創建該類的對象,利用屬性給類裏面的信息賦值,最後調用DisplayInfo()方法顯示信息。
2 修改第一題
在第一題基礎上做一個小修改,判斷如果給Age屬性賦值<0 或大於150,那此時age的設置爲默認值18。
在Main()函數下調用,看看是否達到效果
3 編寫一個時間類Time
該類包括數據成員hour,minute,second,包括相對應數據的Hour,Minute,Second屬性,另外還包含一個方法DisplayTime(),該方法用來做控制檯打印時間,其打印的格式如:hh:mm:ss
要求 :1 重載一個三個參數構造函數,可以使用構造函數給數據成員初始化,
2 在編寫屬性是需要判斷當前的分或秒是否大於60,如果大於,則相應的時或分加一,當前的分或秒置0,如果是時的不能大於24,到24時置00。
4 類編寫
編寫一個類用來處理一個個人銀行賬戶,類名稱自己定義(命名法則),該類的特徵如下:
1 有一個統計當前賬戶餘額的數據成員 balance,該成員爲私有,對該賬戶當前餘額只能讀不能修改,
2 餘額不能爲負數,在類初始化的時候用構造函數給該成員賦值。
該類包含兩個方法,一個是SavaIn存款方法,另一個是DrawOut取款方法,兩個方法操作是賬戶餘額都有變化,取款不能超過當前餘額
添加一個方法:兩個賬戶之間的轉賬功能,轉賬不得超過當前餘額,方法名爲Transfer(),參數爲要轉讓的賬戶和金額。
1-2:
class Student
{
protected string name;
protected int age;
protected string hobby;
public Student(string name, int age, string hobby)
{
Name = name;
Age = age;
Hobby = hobby;
}
public string Name
{
get => name;
set => name = value;
}
public int Age
{
get
{
return age;
}
set
{
age = value;
}
}
public string Hobby
{
get => hobby;
set => hobby = value;
}
public void DisplayInfo()
{
Console.WriteLine("學生姓名:" + this.Name);
Console.WriteLine("學生年齡:" + Age);
Console.WriteLine("學生愛好:" + this.Hobby);
}
}
class new_student : Student
{
public new_student(string name, int age, string hobby) : base(name,age,hobby)
{
Age = age; //注意大寫
}
public int Age
{
get
{
return age;
}
set
{
if (value < 0 || value > 150)
age = 18;
else
{
age = value;
}
}
}
}
class Time
{
private int hour=0, minute=0, second=0;
public Time(int hour, int minute, int second)
{
Hour = hour;
Minute = minute;
Second = second;
}
public int Hour
{
get => hour;
set
{
if (value >= 24)
{
Hour = 0;
}
else hour = value;
}
}
public int Minute
{
get => minute;
set
{
if (value >= 60)
{
minute = 0;
Hour += 1;
}
else minute = value;
}
}
public int Second
{
get { return second; }
set {
if(value>=60)
{
Second = 0;
Minute += 1;
}
else second = value;
}
}
public void DisplayTime()
{
Console.WriteLine("當前時間爲:{0:D2}:{1:D2}:{2:D2}", Hour, Minute, Second);
}
}
public class PersonalBank
{
private double balance = 0;
private string name;
public PersonalBank(string name, double b)
{
this.name = name;
Balance = b;
}
public string Name
{
get { return name; }
set { name = value; }
}
public double Balance
{
get
{
return balance;
}
set
{
if (value >= 0)
{
balance = value;
}
else
{
balance = 0;
}
}
}
public void showMoney()
{
Console.WriteLine("{0}剩餘: {1}",name, balance);
}
public void SavaIn()
{
Console.Write("請輸入要存入錢的金額:");
double money = double.Parse(Console.ReadLine());
if (money > 0)
{
balance += money;
}
else
{
Console.WriteLine("操作失敗!!!");
}
}
//取款方法
public void DrawOut()
{
Console.Write("請輸入要取出錢的金額:");
double money = double.Parse(Console.ReadLine());
if (money < 0)
{
Console.WriteLine("操作失敗!!!(註釋:取出的錢不能爲小於零)");
}
else if (money > balance)
{
Console.WriteLine("餘額不足!!!");
}
else if (money <= balance)
{
this.balance -= money;
}
}
//兩個賬戶之間的轉賬功能,轉賬不得超過當前餘額,方法名爲Transfer(),參數爲要轉讓的賬戶和金額。
public void Transfer(PersonalBank acnt)
{
Console.Write("請輸入要轉賬的金額:");
double money = double.Parse(Console.ReadLine());
Console.WriteLine("Transfer {0} to {1}", money, acnt.Name);
Console.WriteLine("Press y(yes) to continue, or n(no) to exit");
string c = Console.ReadLine();
if (c.Equals("y") || c.Equals("yes"))
{
if (money > balance)
{
Console.WriteLine("餘額不足!");
}
else if (money <= 0)
{
Console.WriteLine("操作失敗!!!轉賬金額不能小於0");
}
else
{
this.balance -= money;
acnt.balance += money;
}
}
else if (c.Equals("no") || c.Equals("n"))
{
Console.WriteLine("operation cancel");
}
else
{
Console.WriteLine("Wrong word, please input the crrect word");
}
}
}
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Lab2.Question3;
namespace Lab2
{
class Program
{
static void Main(string[] args)
{
while(true)
{
Console.WriteLine("\n請選擇要查看的題目序號\n1 2 3 輸入其他數字退出");
int choose = int.Parse(Console.ReadLine());
if (choose == 1)
{
Student s = new Student("李華",12,"寫英語作文");
new_student s2 = new new_student("小馬",180,"寫代碼");
s.DisplayInfo();
Console.WriteLine();
s2.DisplayInfo();
}
else if (choose == 2)
{
Time t = new Time(22, 59, 70);
t.DisplayTime();
}
else if (choose == 3)
{
PersonalBank p = new PersonalBank("XiaoLi",128.31);
while (true)
{
int n;
Console.WriteLine("Hello , {0}", p.Name);
Console.WriteLine("請選擇業務:1--存款,2--取款,3--轉賬,4--查看餘額, 0--退出");
n = Int32.Parse(Console.ReadLine());
if (n == 0)
{
break;
}
else if (n == 1)
{
p.showMoney();
p.SavaIn();
p.showMoney();
}
else if (n == 2)
{
p.showMoney();
p.DrawOut();
p.showMoney();
}
else if (n == 3)
{
PersonalBank p2 = new PersonalBank("XiaoWang",2.21);
p.showMoney();
//p2.showMoney();
p.Transfer(p2);
p.showMoney();
//p2.showMoney();
}
else if (n == 4)
{
p.showMoney();
}
else
{
break;
}
}
}
else
{
break;
}
}
}
}
}