C#需求:设计一个商场收银程序,由营业员 根据消费者购买商品名称、单价、优惠类 型和数量,向消费者收费(总金额)。 解决思路: 依次输入每一种商品名称、单价和数量 计算该种商品的价格 统计该消费者此次购买的全部商品的总价格 运用一种设计模式:简单工厂
时间: 2024-12-11 18:42:44 浏览: 15
在C#中设计这个商场收银程序,我们可以采用简单工厂模式来创建商品对象,并处理计费过程。简单工厂模式是一种创建型设计模式,它隐藏了商品对象的具体实现细节,只对外提供创建这些对象的接口。
首先,我们需要定义一个`Product`接口或基类,表示所有商品共有的属性和行为:
```csharp
public interface IProduct
{
string Name { get; }
decimal Price { get; }
}
// 实现具体的商品类,如Book、Clothing等
public class Book : IProduct
{
public string Name { get; set; }
public decimal Price { get; set; }
}
```
然后,我们创建一个`ProductFactory`类作为简单工厂:
```csharp
public class ProductFactory
{
public static IProduct CreateProduct(string productType)
{
switch (productType)
{
case "Book":
return new Book();
// 添加其他商品类型
default:
throw new ArgumentException("Unsupported product type.");
}
}
}
```
在收银台模块,营业员会询问用户购买的商品信息:
```csharp
public void Checkout()
{
Console.WriteLine("请输入商品名称、单价和数量:");
var total = 0m;
while (true)
{
string input = Console.ReadLine();
if (string.IsNullOrWhiteSpace(input))
break;
var parts = input.Split(',');
if (parts.Length != 3)
continue;
string productName = parts[0];
decimal price = decimal.Parse(parts[1]);
int quantity = int.Parse(parts[2]);
var product = ProductFactory.CreateProduct(productName);
total += product.Price * quantity;
Console.WriteLine($"已添加 {product.Name} x{quantity} - 总价: {total}");
}
Console.WriteLine($"消费者的总费用为: {total}");
}
```
运行这个程序,营业员可以根据提示输入商品信息,系统会自动计算总价并显示出来。
阅读全文