程式設計要有面向物件的思想-卡片類
阿新 • • 發佈:2019-02-15
這是老師佈置的一個作業:設計一個圖書卡片類,用來儲存圖書館卡片分類記錄。這個類的成員包括書名 、作者、館藏數量。至少提供兩個方法, store 方法表示書 的入庫處理, show 方法顯示圖書資訊。程式執行時,可以通過控制檯輸入入庫圖書的總數,根據這個總數建立 Card 物件陣列,然後輸 入圖書資料。
首先要明白,我們需要一個卡片類,類中,有三個屬性:書名,作者,官倉數量;還有兩個方法。首先來定義這個類:
class Card { private string bookname; public string Bookname { get { return bookname; } set { bookname = value; } } private string bookauthor; public string Bookauthor { get { return bookauthor; } set { bookauthor = value; } } private int booknumb; public int Booknumb { get { return booknumb; } set { booknumb = value; } } //書的入庫處理 public void Store(string pabookname,string pabookauthor,int pabooknumb) { this.Bookname = pabookname; this.Bookauthor = pabookauthor; this.Booknumb = pabooknumb; } //顯示圖書資訊 public string Show(string pabookname) { if (Bookname == pabookname) { return Bookauthor + "," + Booknumb; } return ""; } }
然後定義兩個方法
//根據數的名稱獲取圖書其他資訊 private static string[] GetBooks(string bookname,Card[] cards) { foreach (Card card in cards) { string bookinfo = card.Show(bookname); if (!string.IsNullOrEmpty(bookinfo)) { return bookinfo.Split(','); } } return null; } //儲存圖書資訊 private static Card[] SetBooks(int cardnumber) { Card[] cards = new Card[cardnumber]; for (int i = 0; i < cards.Length; i++) { Console.WriteLine("請輸入第" + (i+1) + "本書的書名"); string bookname = Console.ReadLine(); Console.WriteLine("請輸入第" + (i+1) + "本書的作者"); string bookauthor = Console.ReadLine(); Console.WriteLine("請輸入第" + (i+1) + "本書的數量"); int booknumb = Convert.ToInt32(Console.ReadLine()); cards[i] = new Card(); cards[i].Store(bookname, bookauthor, booknumb); } return cards; } }
最後在Main函式中編寫如下程式碼:
while (true) { Console.WriteLine("請輸入卡片數量"); string cardnumb = Console.ReadLine(); //判斷使用者輸入是否合法 int numb; if (int.TryParse(cardnumb, out numb) == false) { continue; } int cardnumber = Convert.ToInt32(cardnumb); //儲存圖書資訊 Card[] cards= SetBooks(cardnumber); //根據輸入的書名顯示圖書資訊 Console.WriteLine("請輸入您要查詢的圖書的名稱"); string bookname=Console.ReadLine(); string[] bookinfo; if ((bookinfo = GetBooks(bookname, cards)) != null) { Console.WriteLine("此書的作者為:" + bookinfo[0] + ",數量為:" + bookinfo[1]); } Console.WriteLine("程式執行完畢,即將退出"); Thread.Sleep(1000); break; }
上面的程式碼儘量講程式碼放在函式中,其實在這裡不是必須得,只是為了讓童鞋們養成這種習慣。另外希望大家慢慢培養面向物件程式設計的思想,也就是說在編寫程式碼時,首先要分析出有什麼物件,有幾個物件,物件之間的關係,物件有什麼成員,不要一上來就一大段程式碼,最後自己也看不懂了。