C#實驗二

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

發佈了71 篇原創文章 · 獲贊 40 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章