这是老师布置的一个作业:设计一个图书卡片类,用来保存图书馆卡片分类记录。这个类的成员包括书名 、作者、馆藏数量。至少提供两个方法, 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; }
上面的代码尽量讲代码放在函数中,其实在这里不是必须得,只是为了让童鞋们养成这种习惯。另外希望大家慢慢培养面向对象编程的思想,也就是说在编写代码时,首先要分析出有什么对象,有几个对象,对象之间的关系,对象有什么成员,不要一上来就一大段代码,最后自己也看不懂了。