具体要求如下:编写一个商品类,包括货号,商品名称,单价,库存,商品类别等字段,且要封装属性。编写带参的构造函数和空构造函数。编写一个SHOW()方法显示类的所有属性。编写一个饮料类,继承于商品类,饮料类中多出一个容量属性。继承要求构造函数赋值。主函数中,创立一个长度为10的商品类数组。并创建3个以上的对象填充数组。通过循环调用数组每一个对象的show方法显示商品信息。用户输入商品的货号,查找是否存在该商品,存在则再让用户输入购买数量,并将该商品的库存量减去购买数量,同时显示付款总数,注意库存量不可为负数。如果查不到商品货号也提示输入有误。
下面是C#程序的示例代码:
using System;
namespace 商品类
{
// 商品类
class Product
{
private string id; // 商品货号
private string name; // 商品名称
private decimal price; // 单价
private int stock; // 库存
private string category; // 商品类别
// 公共访问器和修改器,对属性进行封装
public string Id
{
get { return id; }
set { id = value; }
}
public string Name
{
get { return name; }
set { name = value; }
}
public decimal Price
{
get { return price; }
set { price = value; }
}
public int Stock
{
get { return stock; }
set { stock = value; }
}
public string Category
{
get { return category; }
set { category = value; }
}
// 带参构造函数
public Product(string id, string name, decimal price, int stock, string category)
{
this.id = id;
this.name = name;
this.price = price;
this.stock = stock;
this.category = category;
}
// 空构造函数
public Product()
{
}
// 显示类所有属性的方法
public void Show()
{
Console.WriteLine("货号: {0}", id);
Console.WriteLine("商品名称: {0}", name);
Console.WriteLine("单价: {0:C}", price);
Console.WriteLine("库存: {0}", stock);
Console.WriteLine("商品类别: {0}", category);
Console.WriteLine();
}
}
// 饮料类,继承自商品类
class Beverage : Product
{
private int capacity; // 容量
// 公共访问器和修改器,对属性进行封装
public int Capacity
{
get { return capacity; }
set { capacity = value; }
}
// 带参构造函数
public Beverage(string id, string name, decimal price, int stock, string category, int capacity) : base(id, name, price, stock, category)
{
this.capacity = capacity;
}
}
// 主函数
class Program
{
static void Main(string[] args)
{
// 创立一个长度为10的商品类数组
Product[] products = new Product[10];
// 创建3个以上的对象填充数组
products[0] = new Product("001", "可口可乐", 3.5M, 100, "饮料");
products[1] = new Product("002", "百事可乐", 3.5M, 100, "饮料");
products[2] = new Beverage("003", "矿泉水", 2M, 200, "饮料", 500);
// 循环调用数组每一个对象的show方法显示商品信息
foreach (Product p in products)
{
if (p != null)
{
p.Show();
}
}
// 用户输入商品的货号
Console.Write("请输入商品货号: ");
string id = Console.ReadLine();
int index = -1;
// 遍历数组查找商品
for (int i = 0; i < products.Length; i++)
{
if (products[i] != null && products[i].Id == id)
{
index = i; // 找到商品
break;
}
}
if (index == -1)
{
Console.WriteLine("输入有误,无此商品!");
}
else
{
// 让用户输入购买数量
Console.Write("请输入购买数量: ");
int amount = int.Parse(Console.ReadLine());
// 判断库存量是否足够
if (products[index].Stock >= amount)
{
decimal payment = products[index].Price * amount; // 计算付款总数
Console.WriteLine("您需要支付: {0:C}", payment);
products[index].Stock -= amount; // 将库存量减去购买数量
Console.WriteLine("商品 {0} 库存: {1}", products[index].Name, products[index].Stock);
}
else
{
Console.WriteLine("商品 {0} 库存不足,无法购买!", products[index].Name);
}
}
Console.ReadKey();
}
}
}