现在的位置: 首页 > 综合 > 正文

编程要有面向对象的思想-卡片类

2013年12月05日 ⁄ 综合 ⁄ 共 2017字 ⁄ 字号 评论关闭

这是老师布置的一个作业:设计一个图书卡片类,用来保存图书馆卡片分类记录。这个类的成员包括书名 、作者、馆藏数量。至少提供两个方法, 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;
                
            }

上面的代码尽量讲代码放在函数中,其实在这里不是必须得,只是为了让童鞋们养成这种习惯。另外希望大家慢慢培养面向对象编程的思想,也就是说在编写代码时,首先要分析出有什么对象,有几个对象,对象之间的关系,对象有什么成员,不要一上来就一大段代码,最后自己也看不懂了。

 

 

抱歉!评论已关闭.