是不是oo好像关系不大,
你的书目肯定是要存在数据库里面的
以书目编号为主键设计数据库
表BookProperty
字段
property    ----char类型,A:旧书,B:新书,C:促销,D:特价
ratio       ----折扣(折扣率或打折数额)。
discounttype ----1:乘折扣率打折,0:减折扣打折。折扣率表
A    0.3
B    1
C    5
D    null
先对BookProperty做初始化,输入相应的费率,打折方式。
交易时根据书目property决定打折方式,为D时,跳出打折方式设置,让操作员输入。

解决方案 »

  1.   

    楼上说的对!如果想OOP的话可以把图书看作是一个类,可以建立一个book的抽象类,提供类的方法和一些属性,比如说书名、书的价格、当前书的折扣情况(是打折还是减价)具体的实现可以放在每个实例中实现(book提供一个接口)
    但是信息还是要用数据库来存放的。
      

  2.   

    同类产品建议做成一个类
    产品类->子产品类->可能统一改变价格的同类产品
    当然,每一个产品实例应该都可以override一个折扣方法
      

  3.   

    The book is a class , and you can define a method to calculate normal price , but this method is virtual , so different book can override it refer to its caculating method
      

  4.   

    class book { int virtual calculate () {} ; int override calculate () {} ; }
      

  5.   

    using System;namespace ConsoleApplication1
    {
    class class1
    {
    public void GetValue(Book b) //使用接口
    {
    Console.WriteLine(b.ReBate().ToString());
    }
    [STAThread]
    static void Main(string[] args)
    {
    class1 c = new class1();

    ComputerBook cb = new ComputerBook();
    cb.Price = 50;
    c.GetValue(cb); NewBook nb = new NewBook();
    nb.Price = 50;
    c.GetValue(nb); HotBook hb = new HotBook();
    hb.Price = 50;
    c.GetValue(hb); Console.ReadLine();

    }
    }
    interface Book   //定义接口
    {
    double ReBate();
    }
    class ComputerBook : Book  //定义接口的实现
    {
    public int Price;
    public double ReBate()
    {
    double result;
    return result = Price * 0.75;
    }
    }
    class NewBook : Book  //定义接口的实现
    {
    public int Price;
    public double ReBate()
    {
    double result;
    return result = Price * 0.8;
    }
    }
    class HotBook: Book  //定义接口的实现
    {
    public int Price;
    public double ReBate()
    {
    double result;
    return result = Price * 0.9;
    }
    }
    }
      

  6.   

    楼上的搞这种东西学学oo基本概念还行,
    但根本不实用。
    客户的需求肯定会变的,打折方式变了你的代码就去改一次么?
    最好的方式当然是去让用户通过界面去改变数据库中的设置。
    写实用的程序,不要总惦记oo。