![]()
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 超市收银系统
{
class Program
{
static void Main(string[] args)
{
Cangku mycangku = new Cangku();
superc chaoshi = new superc();
chaoshi.Asking(mycangku);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 超市收银系统
{
class superc
{
/// <summary>
/// 列出商品目录和数量,开始与顾客交互
/// </summary>
public void Asking( Cangku mycangku)
{
mycangku.ShowProductsCount();
//询问顾客
Console.WriteLine("请问你想要什么货物");
string jprodutname = Console.ReadLine();
Console.WriteLine("请问你想要多少数量");
int jprodutcount = Convert.ToInt32(Console.ReadLine());
//取货物
Product guproduct = mycangku.QuProd(jprodutname, jprodutcount);
//列清单
Console.WriteLine($"你购买的为{guproduct.Name},单价为{guproduct.Price},数量为{jprodutcount},总价格为{guproduct.Price * jprodutcount}");
//打折与满减结算 500-50 1000-100 ,抽象类多态实现
Dz zhe = new Senvenzhe();
//Dz zhe = new Manjian();
//Dz zhe = new Nozhe();
Console.WriteLine($"打7折为{zhe.DaZhe(jprodutcount * guproduct.Price)}");
//Console.WriteLine($"不打折为{zhe.DaZhe(jprodutcount * guproduct.Price)}");
//Console.WriteLine($"500-50为{zhe.DaZhe(jprodutcount * guproduct.Price)}");
Console.ReadKey();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 超市收银系统
{
class Cangku
{
//生成不同货架的集合,此时为空
List<List<Product>> lists = new List<List<Product>>();
/// <summary>
/// 构造函数,为生成不同货物种类的货架
/// </summary>
public Cangku()
{
//加入3种不同货架
lists.Add(new List<Product>());
lists.Add(new List<Product>());
lists.Add(new List<Product>());
//先进货
this.SaveProd("香蕉", 10, 100);
this.SaveProd("华为笔记本", 7500, 100);
this.SaveProd("宏基笔记本", 5500, 120);
}
/// <summary>
/// 存入商品
/// </summary>
/// <param name="pts">商品种类</param>
/// <param name="count">数量</param>
public void SaveProd(string producttype, double price ,int count)
{
//注意 for和switch组合应用, switch即是条件判断语句
for (int i = 0; i < count; i++)
{
switch (producttype)
{
case "香蕉":
lists[0].Add(new Banana("香蕉", price));
break;
case "华为笔记本":
lists[1].Add(new Huawei("华为笔记本", price));
break;
case "宏基笔记本":
lists[2].Add(new Acer("宏基笔记本", price));
break;
}
}
}
/// <summary>
/// 取商品函数,for循环取出
/// </summary>
/// <param name="name">名称</param>
/// <param name="count">数量</param>
/// <returns>返回所取的商品对象</returns>
public Product QuProd(string name, int count)
{
Product quprod=null;
for (int i = 0; i < count; i++)
{
switch (name)
{
case "香蕉":
lists[0].RemoveAt(0); //去掉第一个,后面的下标自动变为0,依次类推
quprod = lists[0][0];
break;
case "华为笔记本":
lists[1].RemoveAt(0);
quprod = lists[1][0];
break;
case "宏基笔记本":
lists[2].RemoveAt(0);
quprod = lists[2][0];
break;
}
}
return quprod;
}
public void ShowProductsCount()
{
Console.WriteLine($"现有{lists[0][0].Name},数量为{lists[0].Count},价格为{lists[0][0].Price}");
Console.WriteLine($"现有{lists[1][0].Name},数量为{lists[1].Count},价格为{lists[1][0].Price}");
Console.WriteLine($"现有{lists[2][0].Name},数量为{lists[2].Count},价格为{lists[2][0].Price}");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 超市收银系统
{
class Acer : Product
{
public Acer(string name, double price) : base(name, price)
{
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 超市收银系统
{
class Huawei : Product
{
public Huawei(string name, double price) : base(name, price)
{
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 超市收银系统
{
class Banana : Product
{
public Banana(string name, double price) : base(name, price)
{
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 超市收银系统
{
/// <summary>
/// 所有商品的父类
/// </summary>
class Product
{
//自动属性
public string Name { get; set; }
public string Id { get; set; }
public double Price { get; set; }
public int Count { get; set; }
/// <summary>
/// 子类对象的初始化操作
/// </summary>
/// <param name="name">商品名称</param>
/// <param name="price">价格</param>
public Product(string name, double price)
{
this.Name = name;
this.Id = Guid.NewGuid().ToString(); //guid生成独一无二的序列号
this.Price = price;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 超市收银系统
{
public abstract class Dz{
public abstract double DaZhe(double totalprice);
}
public class Senvenzhe : Dz
{
/// <summary>
/// 7折
/// </summary>
/// <param name="totalprice">总金额</param>
/// <returns></returns>
public override double DaZhe(double totalprice)
{
return totalprice * 0.7;
}
}
public class Nozhe : Dz
{
/// <summary>
/// 不打折
/// </summary>
/// <param name="totalprice">总金额</param>
/// <returns></returns>
public override double DaZhe(double totalprice)
{
return totalprice;
}
}
public class Manjian : Dz
{
/// <summary>
/// 500-50活动
/// </summary>
/// <param name="totalprice">总金额</param>
/// <returns></returns>
public override double DaZhe(double totalprice)
{
totalprice = totalprice - 50 * (int)(totalprice / 500); //这种方法很好用,还有%用法记牢
return totalprice;
}
}
}