概述
using System;
using System.Collections.Generic;
using System.Text;
namespace 超市收银系统
{
class cangKu
{
List<List<productFather>> list = new List<List<productFather>>();
//这个list只接受装着productFather的list单元,list里放list
//里面的每一个list都相当于仓库里的一个货架
public cangKu()
{
list.Add(new List<productFather>()); //宏碁
list.Add(new List<productFather>()); //棒之手机
list.Add(new List<productFather>()); //酱油
list.Add(new List<productFather>()); //banana
}
//构造四个货架
//货物名字,数量
public void GetPros(string strType, int count)//将货物放到仓库货架上
{
for (int i = 0; i < count; i++)
{
switch (strType)
{ //创建一个随机数作为ID,并将它转换为string类型
case "Acer":list[0].Add(new Acer(1000, "宏碁笔记本电脑", Guid.NewGuid().ToString()));
break;
case "sanSing":list[1].Add(new sanSing(2000, "棒之手机", Guid.NewGuid().ToString()));
break;
case "jiangYou":list[2].Add(new jiangYou(50, "酱油", Guid.NewGuid().ToString()));
break;
case "banana":list[3].Add(new banana(20,"banana",Guid.NewGuid().ToString()));
break;
}
}
}
public productFather[] OutPros(string strType, int count)//取出货物并加入购物车
{
productFather[] pros = new productFather[count];//创建购物车,收集货物
for (int i = 0; i < count; i++)
{
//这里应该加一个检查是否有货的代码
switch (strType)
{
case "Acer":pros[i] = list[0][0];//取货架上的第一个并给到购物车
list[0].RemoveAt(0);//删除第一个
break;
case "sanSing":pros[i] = list[1][0];
list[1].RemoveAt(0);
break;
case "jiangYou":pros[i] = list[2][0];
list[2].RemoveAt(0);
break;
case "banana":pros[i] = list[3][0];
list[3].RemoveAt(0);
break;
}
}
return pros;//返回值
}
public void ShowPros()
{
foreach (var item in list)
{
Console.WriteLine("超市里有商品"+item[0].Name+",t"+"价格为"+item[0].Price);
//foreach是一个遍历循环,这一点易忘记
}
}
}
}
这是仓库类
using System;
using System.Collections.Generic;
using System.Text;
namespace 超市收银系统
{
class productFather
{
public double Price
{
get;
set;
}
//这里用到了三个属性,但是并没有运用属性的功能对输入输出的值进行约束
public string Name
{
get;
set;
}
public string ID
{
get;
set;
}
public productFather(double price, string name, string id)
{
this.Price = price;
this.Name = name;
this.ID = id;
}
}
}
这是商品父类
using System;
using System.Collections.Generic;
using System.Text;
namespace 超市收银系统
{
class sanSing : productFather
{
public sanSing(double price,string name,string id)
:base(price,name,id)
{
}
}
}
其中的一个子类
using System;
using System.Collections.Generic;
using System.Text;
namespace 超市收银系统
{
class supperMarket
{
cangKu ck = new cangKu();//只有创建了仓库对象才能调用其中的方法,创建一个实例
//这个创建对象的过程中,构造函数也给他创建了四个货架
productFather[] pros;
public supperMarket()//创建suppermarkket的时候自动导入以下货物
{
ck.GetPros("Acer",1000);
ck.GetPros("sanSing",1000);
ck.GetPros("jiangYou",1000);
ck.GetPros("banana",1000);
}
public void AskBuying()
{
Console.WriteLine("请问客人想买点什么?");
string strType = Console.ReadLine();
Console.WriteLine("请问客人想要多少啊?");
int count = Convert.ToInt32(Console.ReadLine());
//取出货物
pros = ck.OutPros(strType,count);
Console.WriteLine("请选择你的打折方式--1xx,2xx,3xx");
string input = Console.ReadLine();
double money = GetMoney(pros);
//通过简单工厂设计模式得到一个折扣对象
//简单工厂设计模式:根据用户的输入返回一个对象
CalFather cal = GetCal(input);
double realMoney = cal.GetTotalMoney(money);
Console.WriteLine("打折前应付{0}元,打折后您实际应付{1}元",money,realMoney);
Console.WriteLine("");
}
public double GetMoney(productFather[] pros)//计算价钱
{
double money = 0;
foreach (var item in pros)
{
money += item.Price;
}
return money;
}
public CalFather GetCal(string input)
{
CalFather cal = null;//利用抽象类实现了多态,父类里可以放子类对象
switch (input)
{
case "1":cal = new CalNormal();
break;
case "2":cal = new CalRate(0.88);
break;
case "3":cal = new CalMN(500,50);
break;
}
return cal;
}
}
}
这是超市类
abstract class CalFather
{
public abstract double GetTotalMoney(double money);//抽象类中不能有实例成员
}
用抽象类实现打折多态
using System;
using System.Collections.Generic;
using System.Text;
namespace 超市收银系统
{
class CalNormal : CalFather
{
public override double GetTotalMoney(double money)//对父类抽象方法的重写(alt+shift+f10)
{
return money;
}
//不打折类
}
}
其中的一个类
运行结果
仅能进行一种商品的购买,以后再改吧。
最后
以上就是端庄鱼为你收集整理的12.14(一个简单的C#超市系统)的全部内容,希望文章能够帮你解决12.14(一个简单的C#超市系统)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复