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