关键词搜索

源码搜索 ×
×

12.14(一个简单的C#超市系统)

发布2023-02-22浏览853次

详情内容

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace 超市收银系统
  5. {
  6. class cangKu
  7. {
  8. List<List<productFather>> list = new List<List<productFather>>();
  9. //这个list只接受装着productFather的list单元,list里放list
  10. //里面的每一个list都相当于仓库里的一个货架
  11. public cangKu()
  12. {
  13. list.Add(new List<productFather>()); //宏碁
  14. list.Add(new List<productFather>()); //棒之手机
  15. list.Add(new List<productFather>()); //酱油
  16. list.Add(new List<productFather>()); //banana
  17. }
  18. //构造四个货架
  19. //货物名字,数量
  20. public void GetPros(string strType, int count)//将货物放到仓库货架上
  21. {
  22. for (int i = 0; i < count; i++)
  23. {
  24. switch (strType)
  25. { //创建一个随机数作为ID,并将它转换为string类型
  26. case "Acer":list[0].Add(new Acer(1000, "宏碁笔记本电脑", Guid.NewGuid().ToString()));
  27. break;
  28. case "sanSing":list[1].Add(new sanSing(2000, "棒之手机", Guid.NewGuid().ToString()));
  29. break;
  30. case "jiangYou":list[2].Add(new jiangYou(50, "酱油", Guid.NewGuid().ToString()));
  31. break;
  32. case "banana":list[3].Add(new banana(20,"banana",Guid.NewGuid().ToString()));
  33. break;
  34. }
  35. }
  36. }
  37. public productFather[] OutPros(string strType, int count)//取出货物并加入购物车
  38. {
  39. productFather[] pros = new productFather[count];//创建购物车,收集货物
  40. for (int i = 0; i < count; i++)
  41. {
  42. //这里应该加一个检查是否有货的代码
  43. switch (strType)
  44. {
  45. case "Acer":pros[i] = list[0][0];//取货架上的第一个并给到购物车
  46. list[0].RemoveAt(0);//删除第一个
  47. break;
  48. case "sanSing":pros[i] = list[1][0];
  49. list[1].RemoveAt(0);
  50. break;
  51. case "jiangYou":pros[i] = list[2][0];
  52. list[2].RemoveAt(0);
  53. break;
  54. case "banana":pros[i] = list[3][0];
  55. list[3].RemoveAt(0);
  56. break;
  57. }
  58. }
  59. return pros;//返回值
  60. }
  61. public void ShowPros()
  62. {
  63. foreach (var item in list)
  64. {
  65. Console.WriteLine("超市里有商品"+item[0].Name+",\t"+"价格为"+item[0].Price);
  66. //foreach是一个遍历循环,这一点易忘记
  67. }
  68. }
  69. }
  70. }

这是仓库类

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace 超市收银系统
  5. {
  6. class productFather
  7. {
  8. public double Price
  9. {
  10. get;
  11. set;
  12. }
  13. //这里用到了三个属性,但是并没有运用属性的功能对输入输出的值进行约束
  14. public string Name
  15. {
  16. get;
  17. set;
  18. }
  19. public string ID
  20. {
  21. get;
  22. set;
  23. }
  24. public productFather(double price, string name, string id)
  25. {
  26. this.Price = price;
  27. this.Name = name;
  28. this.ID = id;
  29. }
  30. }
  31. }

这是商品父类

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace 超市收银系统
  5. {
  6. class sanSing : productFather
  7. {
  8. public sanSing(double price,string name,string id)
  9. :base(price,name,id)
  10. {
  11. }
  12. }
  13. }

其中的一个子类

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace 超市收银系统
  5. {
  6. class supperMarket
  7. {
  8. cangKu ck = new cangKu();//只有创建了仓库对象才能调用其中的方法,创建一个实例
  9. //这个创建对象的过程中,构造函数也给他创建了四个货架
  10. productFather[] pros;
  11. public supperMarket()//创建suppermarkket的时候自动导入以下货物
  12. {
  13. ck.GetPros("Acer",1000);
  14. ck.GetPros("sanSing",1000);
  15. ck.GetPros("jiangYou",1000);
  16. ck.GetPros("banana",1000);
  17. }
  18. public void AskBuying()
  19. {
  20. Console.WriteLine("请问客人想买点什么?");
  21. string strType = Console.ReadLine();
  22. Console.WriteLine("请问客人想要多少啊?");
  23. int count = Convert.ToInt32(Console.ReadLine());
  24. //取出货物
  25. pros = ck.OutPros(strType,count);
  26. Console.WriteLine("请选择你的打折方式--1xx,2xx,3xx");
  27. string input = Console.ReadLine();
  28. double money = GetMoney(pros);
  29. //通过简单工厂设计模式得到一个折扣对象
  30. //简单工厂设计模式:根据用户的输入返回一个对象
  31. CalFather cal = GetCal(input);
  32. double realMoney = cal.GetTotalMoney(money);
  33. Console.WriteLine("打折前应付{0}元,打折后您实际应付{1}元",money,realMoney);
  34. Console.WriteLine("");
  35. }
  36. public double GetMoney(productFather[] pros)//计算价钱
  37. {
  38. double money = 0;
  39. foreach (var item in pros)
  40. {
  41. money += item.Price;
  42. }
  43. return money;
  44. }
  45. public CalFather GetCal(string input)
  46. {
  47. CalFather cal = null;//利用抽象类实现了多态,父类里可以放子类对象
  48. switch (input)
  49. {
  50. case "1":cal = new CalNormal();
  51. break;
  52. case "https://files.jxasp.com/image/2":cal = new CalRate(0.88);
  53. break;
  54. case "3":cal = new CalMN(500,50);
  55. break;
  56. }
  57. return cal;
  58. }
  59. }
  60. }

这是超市类

  1. abstract class CalFather
  2. {
  3. public abstract double GetTotalMoney(double money);//抽象类中不能有实例成员
  4. }

用抽象类实现打折多态

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace 超市收银系统
  5. {
  6. class CalNormal : CalFather
  7. {
  8. public override double GetTotalMoney(double money)//对父类抽象方法的重写(alt+shift+f10)
  9. {
  10. return money;
  11. }
  12. //不打折类
  13. }
  14. }

其中的一个类

 运行结果

仅能进行一种商品的购买,以后再改吧。

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载