项目--练习题61:超市收银系统
项目–练习题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:超市收银系统相关推荐
- java课设超市收银系统_基于jsp的超市收银系统-JavaEE实现超市收银系统 - java项目源码...
基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的超市收银系统, 该项目可用各类java课程设计大作业中, 超市收银系统的系统架构分为前后台两部分, 最终实现在线上 ...
- 超市收银软件测试自学,超市收银系统测试计划.doc
文档介绍: <超市收银系统>测试计划:张润学号:12740125班级:软件工程(1)班指导老师:路飞目录1.引言 31.1编写目的 31.2背景 31.3定义 31.4测试目标 32.计划 ...
- 超市收银系统服务器,超市收银系统
1.需求概述 1.1 项目背景 现如今的超市竞争进入到了一个全新的领域,竞争已不再是规模的竞争,而是技术的竞争,管理的竞争,人才的竞争.技术的提升和管理的升级时超市业的竞争核心,如何在激烈的竞争中扩大 ...
- [附源码]计算机毕业设计JAVA超市收银系统论文
[附源码]计算机毕业设计JAVA超市收银系统论文 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(Inte ...
- jsp+ssm计算机毕业设计超市收银系统【附源码】
项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...
- [附源码]java毕业设计超市收银系统
项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...
- [附源码]计算机毕业设计JAVAjsp超市收银系统
[附源码]计算机毕业设计JAVAjsp超市收银系统 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(Int ...
- 【单片机毕业设计】【mcuclub-307】超市收银机 | 超市收银系统 | 超市结账系统 | 商品扫码
设计简介: 项目名:基于单片机的超市收银机的设计.基于单片机的超市收银系统的设计.基于单片机的超市结账系统的设计 单片机:STC89C52 功能简介: 1.通过扫码枪可扫描条形码,进行商品的购买 2. ...
- C#实现超市收银系统(窗口化)(1)
题目:提供多种商品(6种以上),不同的商品可以设置不同的促销模式,任选其一 (1. 不参与任何优惠 2.打折(9折) 3.满减(满100减20) 4. 满减后再打折(满100减20再打9折)) 要求: ...
最新文章
- 溢出内容菜单_停止过度使用溢出菜单
- mysql 中文搜索插件_支持中文的MySQL 5.1+ 全文检索分词插件
- python适合做后端开发吗-pythonWeb后端开发好呢?还是从事网络爬虫比较好呢?
- 数学之美笔记(二十)
- mysql_connect 废弃_解决Deprecated: mysql_connect():
- stm32之USB应用实例(官方例程资料下载使用)
- 深度学习之卷积神经网络(12)深度残差网络
- 从需求到交付——论敏捷过程中的需求管理
- c语言学习-自定义函数并调用将一个字符串中的小写字母改为大写字母(数组元素和数组名作函数参数)
- PostgreSql Lock锁
- 蓝桥杯 ADV-95 算法提高 字符串比较
- 服务器不稳定补偿,《异化之地》服务器异常怎么解决 服务器不稳定官方补偿...
- ubuntu16.04 修改分辨路并永久保存
- 微信小程序 button按钮 image图片
- FX:{6630f2d7-bd52-4072-bfa7-863f3d0c5da0}
- parent.layer.open打开的页面向上个页面传值
- SLCP验厂辅导,工厂进行社会劳工整合项目(SLCP认证)验证的具体步骤
- 小红书品牌投放监测之竞品对比
- SVD奇异值分解 中特征值与奇异值的数学理解与意义
- to tell 和to ask的用法