项目–练习题61:超市收银系统
ProductFather:

using System;
using System.Collections.Generic;
using System.Text;namespace 超市收银系统
{class ProductFather{public string ID{get;set;}public double Price{get;set;}public string Name{get;set;}public ProductFather(string id, double price, string name){this.ID = id;this.Price = price;this.Name = name;}}
}

Acer:

using System;
using System.Collections.Generic;
using System.Text;namespace 超市收银系统
{class Acer : ProductFather{public Acer(string id, double price, string name) : base(id, price, name){}}
}

SamSung:

using System;
using System.Collections.Generic;
using System.Text;namespace 超市收银系统
{class SamSung : ProductFather{public SamSung(string id, double price, string name) : base(id, price, name){}}
}

JiangYou:

using System;
using System.Collections.Generic;
using System.Text;namespace 超市收银系统
{class JiangYou : ProductFather{public JiangYou(string id, double price, string name) : base(id, price, name){}}
}

Banana:

using System;
using System.Collections.Generic;
using System.Text;namespace 超市收银系统
{class Banana : ProductFather{public Banana(string id, double price, string name) : base(id, price, name){}}
}

CalFather:

using System;
using System.Collections.Generic;
using System.Text;namespace 超市收银系统
{//多态--抽象类/// <summary>/// 打折的父类/// </summary>abstract class CalFather{/// <summary>/// 计算打折后应付多少钱/// </summary>/// <param name="realMoney">打折前应付的价钱</param>/// <returns>打折后应付的价钱</returns>public abstract double GetTotalMoney(double realMoney);}
}

CalNormal:

using System;
using System.Collections.Generic;
using System.Text;namespace 超市收银系统
{/// <summary>/// 不打折 该多少钱就多少钱/// </summary>class CalNormal : CalFather{public override double GetTotalMoney(double realMoney){return realMoney;}}
}

CalRate:

using System;
using System.Collections.Generic;
using System.Text;namespace 超市收银系统
{/// <summary>/// 按折扣率打折/// </summary>class CalRate : CalFather{/// <summary>/// 折扣率/// </summary>public double Rate{get;set;}public CalRate(double rate){this.Rate = rate;}public override double GetTotalMoney(double realMoney){return realMoney * this.Rate;}}
}

CalMN:

using System;
using System.Collections.Generic;
using System.Text;namespace 超市收银系统
{/// <summary>/// 买M元 送N元/// </summary>class CalMN : CalFather{//买500送100public double M{get;set;}public double N{get;set;}public CalMN(double m, double n){this.M = m;this.N = n;}public override double GetTotalMoney(double realMoney){//600-100//1000-200if (realMoney >= this.M)return realMoney - (int)(realMoney / this.M) * this.N;elsereturn realMoney;}}
}

CangKu:

using System;
using System.Collections.Generic;
using System.Text;namespace 超市收银系统
{class CangKu{/// <summary>/// 存储货物/// </summary>List<List<ProductFather>> list = new List<List<ProductFather>>();/// <summary>/// 向用户展示货物/// </summary>public void ShowPros(){foreach (var item in list){Console.WriteLine("我们超市有:" + item[0].Name + "," + "\t" + "有" + item.Count + ",个" + "\t" + "每个" + item[0].Price + "元");}}//List[0]存储Acer电脑//List[1]存储Acer电脑//List[2]存储Acer电脑//List[3]存储Acer电脑public CangKu(){list.Add(new List<ProductFather>());list.Add(new List<ProductFather>());list.Add(new List<ProductFather>());list.Add(new List<ProductFather>());}/// <summary>/// 进货/// </summary>/// <param name="strType">货物的类型</param>/// <param name="count">货物的数量</param>public void JinPros(string strType, int count)//来的是什么货,多少个{for (int i = 0; i < count; i++){switch (strType){case "Acer":list[0].Add(new Acer(Guid.NewGuid().ToString(), 1000, "宏基笔记本"));break;case "SamSung":list[1].Add(new SamSung(Guid.NewGuid().ToString(), 2000, "棒子手机"));break;case "JiangYou":list[2].Add(new JiangYou(Guid.NewGuid().ToString(), 10, "老抽酱油"));break;case "Banana":list[3].Add(new Banana(Guid.NewGuid().ToString(), 50, "大香蕉"));break;}}}//public ProductFather[] QuPros(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 "SamSung"://                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 ProductFather[] QuPros(string strType, int count)//{//    ProductFather[] pros = new ProductFather[count];//    for (int i = 0; i < count; i++)//    {//        switch (strType)//        {//            case "Acer"://                if (list[0].Count == 0)//                {//                    Console.WriteLine("该货架没有货物,程序异常退出");//                    Environment.Exit(0);//                }//                pros[i] = list[0][0];//                list[0].RemoveAt(0);//                break;//            case "SamSung"://                if (list[1].Count == 0)//                {//                    Console.WriteLine("该货架没有货物,程序异常退出");//                    Environment.Exit(0);//                }//                pros[i] = list[1][0];//                list[1].RemoveAt(0);//                break;//            case "JiangYou"://                if (list[2].Count == 0)//                {//                    Console.WriteLine("该货架没有货物,程序异常退出");//                    Environment.Exit(0);//                }//                pros[i] = list[2][0];//                list[2].RemoveAt(0);//                break;//            case "Banana"://                if (list[3].Count == 0)//                {//                    Console.WriteLine("该货架没有货物,程序异常退出");//                    Environment.Exit(0);//                }//                pros[i] = list[3][0];//                list[3].RemoveAt(0);//                break;//        }//    }//    return pros;//}public ProductFather[] QuPros(string strType, int count){ProductFather[] pros = new ProductFather[count];for (int i = 0; i < count; i++){switch (strType){case "Acer":try{pros[i] = list[0][0];list[0].RemoveAt(0);}catch{Console.WriteLine("该货架没有货物,程序异常退出");Environment.Exit(0);}break;case "SamSung":try{pros[i] = list[1][0];list[1].RemoveAt(0);}catch{Console.WriteLine("该货架没有货物,程序异常退出");Environment.Exit(0);}break;case "JiangYou":try{pros[i] = list[2][0];list[2].RemoveAt(0);}catch{Console.WriteLine("该货架没有货物,程序异常退出");Environment.Exit(0);}break;case "Banana":try{pros[i] = list[3][0];list[3].RemoveAt(0);}catch{Console.WriteLine("该货架没有货物,程序异常退出");Environment.Exit(0);}break;}}return pros;}}
}

SupperMarket:

using System;
using System.Collections.Generic;
using System.Text;namespace 超市收银系统
{class SupperMarket{CangKu ck = new CangKu();/// <summary>/// 创建超市对象的时候,给仓库的货架上导入货物/// </summary>public SupperMarket(){ck.JinPros("Acer", 1000);ck.JinPros("SamSung", 1000);ck.JinPros("JiangYou", 1000);ck.JinPros("Banana", 1000);}/// <summary>/// 跟用户交互的过程/// </summary>public void AskBuying(){Console.WriteLine("欢迎光临,请问您需要些什么?");Console.WriteLine("我们有Acer、SamSung、JiangYou、Banana");string strType = Console.ReadLine();Console.WriteLine("您需要多少?");int count = Convert.ToInt32(Console.ReadLine());//去仓库取货物ProductFather[] pros = ck.QuPros(strType, count);//下面该计算价钱了double realMoney = GetMoney(pros);Console.WriteLine("您总共应付{0}元", realMoney);Console.WriteLine("请选择您的打折方式 1--不打折 2--打九折 3--打85折 4--满300送50 5--满500送100");string input = Console.ReadLine();//通过简单工厂的设计模式根据用户的输入获得一个打折对象CalFather cal = GetCal(input);double totalMoney = cal.GetTotalMoney(realMoney);Console.WriteLine("打完折后,您应付{0}元", totalMoney);Console.WriteLine("以下是您的购物信息");foreach(var item in pros){Console.WriteLine("货物名称:" + item.Name + "," + "\t" + "货物单价:" + item.Price + ","+"\t"+"货物编号:"+item.ID);}}/// <summary>/// 根据用户的选择打折方式返回一个打折对象/// </summary>/// <param name="input">用户的选择</param>/// <returns>返回父类的对象,但是里面装的是子类对象</returns>public CalFather GetCal(string input){CalFather cal = null;switch (input){case "1":cal = new CalNormal();break;case "2":cal = new CalRate(0.9);break;case "3":cal = new CalRate(0.85);break;case "4":cal = new CalMN(300, 50);break;case "5":cal = new CalMN(500, 100);break;}return cal;}/// <summary>/// 根据用户买的货物计算总价钱/// </summary>/// <param name="pros"></param>/// <returns></returns>public double GetMoney(ProductFather[] pros){double realMoney = 0;for (int i = 0; i < pros.Length; i++){realMoney += pros[i].Price;}return realMoney;}public void ShowPros(){ck.ShowPros();}}
}

Program:

using System;namespace 超市收银系统
{class Program{static void Main(string[] args){//创建超市对象SupperMarket sm = new SupperMarket();//展示货物sm.ShowPros();//跟用户交互sm.AskBuying();Console.ReadKey();}}
}

项目--练习题61:超市收银系统相关推荐

  1. java课设超市收银系统_基于jsp的超市收银系统-JavaEE实现超市收银系统 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的超市收银系统, 该项目可用各类java课程设计大作业中, 超市收银系统的系统架构分为前后台两部分, 最终实现在线上 ...

  2. 超市收银软件测试自学,超市收银系统测试计划.doc

    文档介绍: <超市收银系统>测试计划:张润学号:12740125班级:软件工程(1)班指导老师:路飞目录1.引言 31.1编写目的 31.2背景 31.3定义 31.4测试目标 32.计划 ...

  3. 超市收银系统服务器,超市收银系统

    1.需求概述 1.1 项目背景 现如今的超市竞争进入到了一个全新的领域,竞争已不再是规模的竞争,而是技术的竞争,管理的竞争,人才的竞争.技术的提升和管理的升级时超市业的竞争核心,如何在激烈的竞争中扩大 ...

  4. [附源码]计算机毕业设计JAVA超市收银系统论文

    [附源码]计算机毕业设计JAVA超市收银系统论文 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(Inte ...

  5. jsp+ssm计算机毕业设计超市收银系统【附源码】

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  6. [附源码]java毕业设计超市收银系统

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  7. [附源码]计算机毕业设计JAVAjsp超市收银系统

    [附源码]计算机毕业设计JAVAjsp超市收银系统 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(Int ...

  8. 【单片机毕业设计】【mcuclub-307】超市收银机 | 超市收银系统 | 超市结账系统 | 商品扫码

    设计简介: 项目名:基于单片机的超市收银机的设计.基于单片机的超市收银系统的设计.基于单片机的超市结账系统的设计 单片机:STC89C52 功能简介: 1.通过扫码枪可扫描条形码,进行商品的购买 2. ...

  9. C#实现超市收银系统(窗口化)(1)

    题目:提供多种商品(6种以上),不同的商品可以设置不同的促销模式,任选其一 (1. 不参与任何优惠 2.打折(9折) 3.满减(满100减20) 4. 满减后再打折(满100减20再打9折)) 要求: ...

最新文章

  1. 溢出内容菜单_停止过度使用溢出菜单
  2. mysql 中文搜索插件_支持中文的MySQL 5.1+ 全文检索分词插件
  3. python适合做后端开发吗-pythonWeb后端开发好呢?还是从事网络爬虫比较好呢?
  4. 数学之美笔记(二十)
  5. mysql_connect 废弃_解决Deprecated: mysql_connect():
  6. stm32之USB应用实例(官方例程资料下载使用)
  7. 深度学习之卷积神经网络(12)深度残差网络
  8. 从需求到交付——论敏捷过程中的需求管理
  9. c语言学习-自定义函数并调用将一个字符串中的小写字母改为大写字母(数组元素和数组名作函数参数)
  10. PostgreSql Lock锁
  11. 蓝桥杯 ADV-95 算法提高 字符串比较
  12. 服务器不稳定补偿,《异化之地》服务器异常怎么解决 服务器不稳定官方补偿...
  13. ubuntu16.04 修改分辨路并永久保存
  14. 微信小程序 button按钮 image图片
  15. FX:{6630f2d7-bd52-4072-bfa7-863f3d0c5da0}
  16. parent.layer.open打开的页面向上个页面传值
  17. SLCP验厂辅导,工厂进行社会劳工整合项目(SLCP认证)验证的具体步骤
  18. 小红书品牌投放监测之竞品对比
  19. SVD奇异值分解 中特征值与奇异值的数学理解与意义
  20. to tell 和to ask的用法

热门文章

  1. Python 多态,概念与示例,精简篇
  2. 【人机交互】课程知识点梳理及习题
  3. 5.数据类型详解-字符串
  4. 【Multisim仿真】光控报警电路
  5. 手把手教你用 jQuery 制作无缝轮播
  6. top 命令参数使用说明
  7. 搭建自己的frp服务器
  8. 《詹姆斯·高斯林Java白皮书1996自译》07:多线程
  9. 大会详细日程:O'Reilly AI Conference 北京站
  10. jetracer——自动驾驶车项目(basic_motion.ipynb)