最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#實現簡單超市收銀系統

 更新時間:2022年02月10日 10:07:48   作者:向上的青春233  
這篇文章主要為大家詳細介紹了C#實現簡單超市收銀系統,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C#實現簡單超市收銀系統的具體代碼,供大家參考,具體內容如下

今天使用一直學習的抽象類等做了個簡單的超市收銀系統,不難,不過里面的邏輯要理清楚。

首先我們要知道我們要實現的功能。

超市一般有倉庫,有收銀臺,有各種各樣的商品,每一個商品都有Name,Price,Count等屬性。我們可以寫一個抽象父類,這樣我們才能將每件商品屬性設置一樣。
新建一個ProduckFather類作為商品的父類 并將屬性和構造函數寫好,每次新建商品時寫好參數就會方便很多

abstract class ProduckFather
? ? {
? ? ? ? private string _name;
? ? ? ? private double _price;
? ? ? ? private int _count;
? ? ? ? private string _id;

? ? ? ? public string Name { get => _name; set => _name = value; }
? ? ? ? public double Price { get => _price; set => _price = value; }
? ? ? ? public int Count { get => _count; set => _count = value; }
? ? ? ? public string Id { get => _id; set => _id = value; }
? ? ? ? public ProduckFather(string name,double price,int count)
? ? ? ? {
? ? ? ? ? ? this.Name = name;
? ? ? ? ? ? this.Price = price;
? ? ? ? ? ? this.Count = count;
? ? ? ? }
? ? }```

接下來創(chuàng)造自己的商品,這里只舉Apple一個例子,不在重復代碼

```csharp
?class Apple:ProduckFather
? ? {
? ? ? ? public Apple(string name,double price,int count)
? ? ? ? ? ? :base(name,price,count)
? ? ? ? {
? ? ? ??
? ? ? ? }
? ? }

接下來就是倉庫類了,這一部分是個重點,他要實現存儲的功能,那么我們用什么來存儲呢?
我們既要存不同種類的物品,數量也不會相同,首選是list(集合)或dictionary(鍵值對),問題是集合存儲雖然容易,想要拿到固定的東西卻比較復雜
list就相當于是一個大倉庫,雖然什么東西都能存儲,但是每次找東西都要翻半天,所以我們可以使集合中每一個元素都是一個集合,而且這個集合必須是父類類型的,不然無法裝有其他類型的物品。

//[0]Apple [1]Banana [2]Vivo [3]Oppo [4]Huaweu?
//實現存儲貨物
List<List<ProduckFather>> list = new List<List<ProduckFather>>(); ? ?//建造一個倉庫
//讓每一個倉庫擺滿東西

代碼中的list可以理解為倉庫里擺滿了貨架,什么類型的物品就放在什么貨架上。
倉庫每次調用時里面必須要有貨架,所以寫成構造函數。

public Cangku()
? ? ? ? {
? ? ? ? ? ? list.Add(new List<ProduckFather>());//蘋果香蕉華為oppo和vivo
? ? ? ? ? ? list.Add(new List<ProduckFather>());
? ? ? ? ? ? list.Add(new List<ProduckFather>());
? ? ? ? ? ? list.Add(new List<ProduckFather>());
? ? ? ? ? ? list.Add(new List<ProduckFather>());
? ? ? ? }

倉庫還要有進貨,出貨,以及展示超市內物品的功能,這一部分代碼不難,還請讀者根據注釋自行理解

/// <summary>
? ? ? ? /// 進貨
? ? ? ? /// </summary>
? ? ? ? /// <param name="strType">貨物類型</param>
? ? ? ? /// <param name="count">貨物數量</param>
? ? ? ? public void GetPros(string strType,int count)
? ? ? ? {
? ? ? ? ? ? for (int i = 0; i < count; i++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? switch (strType)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? case "Apple":list[0].Add(new Apple("Apple", 6000, 1));
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case "Banana":list[1].Add(new Banana("Banana",5,1));
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case "Vivo":list[2].Add(new Vivo("Vivo", 3000, 1));
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case "Oppo":list[3].Add(new Oppo("Oppo", 2500, 1));
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case "Huawei":list[4].Add(new Huawei("Huawei", 5000, 1));
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? default:Console.WriteLine("你輸入的有錯誤,請重新購買");
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? /// <summary>
? ? ? ? /// 取貨
? ? ? ? /// </summary>
? ? ? ? /// <param name="strType"></param>
? ? ? ? /// <param name="count"></param>
? ? ? ? public ProduckFather[] SetPros(string strType, int count)
? ? ? ? {
? ? ? ? ? ? ProduckFather[] pros = new ProduckFather[count];
? ? ? ? ? ? for (int i = 0; i < count; i++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? switch (strType)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? case "Apple":
? ? ? ? ? ? ? ? ? ? ? ? if (list[0].Count > count)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? pros[i] = list[0][0];//這里只是賦值的功能,并沒有移除貨物
? ? ? ? ? ? ? ? ? ? ? ? ? ? list[0].RemoveAt(0);//移除貨物
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? else?
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? Console.WriteLine("Apple貨物不足!");
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? case "Banana":
? ? ? ? ? ? ? ? ? ? ? ? if (list[1].Count > count)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? pros[i] = list[1][0];
? ? ? ? ? ? ? ? ? ? ? ? ? ? list[1].RemoveAt(0);
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? else {
? ? ? ? ? ? ? ? ? ? ? ? ? ? Console.WriteLine("Banana貨物不足!");
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? case "Vivo":
? ? ? ? ? ? ? ? ? ? ? ? if (list[2].Count > count)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? pros[i] = list[2][0];
? ? ? ? ? ? ? ? ? ? ? ? ? ? list[2].RemoveAt(0);
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? else {
? ? ? ? ? ? ? ? ? ? ? ? ? ? Console.WriteLine("Vivo產品不足!");
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? case "Oppo":
? ? ? ? ? ? ? ? ? ? ? ? if (list[3].Count > count)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? pros[i] = list[3][0];
? ? ? ? ? ? ? ? ? ? ? ? ? ? list[3].RemoveAt(0);
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? else {
? ? ? ? ? ? ? ? ? ? ? ? ? ? Console.WriteLine("Oppo產品不足!");
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? case "Huawei":
? ? ? ? ? ? ? ? ? ? ? ? if (list[4].Count > count)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? pros[i] = list[4][0];
? ? ? ? ? ? ? ? ? ? ? ? ? ? list[4].RemoveAt(0);
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? Console.WriteLine("Huawei產品不足!");
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? default:Console.WriteLine("沒有您想要的物品!");
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? return pros;
? ? ? ? }
? ? ? ? /// <summary>
? ? ? ? /// 展示超市物品
? ? ? ? /// </summary>
? ? ? ? public void ShowPros()//用遍歷list來展示超市里的物品
? ? ? ? {
? ? ? ? ? ? foreach (var item in list)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? Console.WriteLine("我們超市有:" + item[0].Name ?+"\t"+"共有" +item.Count+ "個," + "\t" + "每個"+item[0].Price+"元");
? ? ? ? ? ? }
? ? ? ? }

倉庫完結后,還有收銀臺的功能。
每次使用收銀臺時,必須有貨物,所以寫成構造函數保證倉庫有貨

//每次引用時,需要進貨
Cangku ck = new Cangku();//創(chuàng)建倉庫對象
/// <summary>
/// 每次創(chuàng)建對象就進貨
/// </summary>
public SuperMarket()
? ? ? ? {
? ? ? ? ? ? ck.GetPros("Apple", 100);//調用倉庫類的進貨函數進貨
? ? ? ? ? ? ck.GetPros("Banana", 1000);
? ? ? ? ? ? ck.GetPros("Vivo", 150);
? ? ? ? ? ? ck.GetPros("Oppo", 200);
? ? ? ? ? ? ck.GetPros("Huawei", 500);
? ? ? ? }

超市往往會有打折活動,一般這個活動分為兩種例如:八折或者滿300減50。活動往往是會變化的,所以寫成抽象類
抽象類中提供一個打折方法。

abstract class CalFather
? ? {
? ? ? ? public abstract double Cal(double realmoney);
? ? }

創(chuàng)建打折類CalRate

class CalRate : CalFather
? ? {
? ? ? ? double _rate;

? ? ? ? public double Rate { get => _rate; set => _rate = value; }
? ? ? ? public CalRate(double rate)
? ? ? ? {
? ? ? ? ? ? this.Rate = rate;
? ? ? ? }

? ? ? ? public override double Cal(double realmoney)
? ? ? ? {
? ? ? ? ? ? return realmoney * this.Rate;
? ? ? ? }
? ? }

滿減類CalMN

class CalMN : CalFather
? ? {
? ? ? ? double m;
? ? ? ? double n;

? ? ? ? public double M { get => m; set => m = value; }
? ? ? ? public double N { get => n; set => n = value; }
? ? ? ? public CalMN(double m,double n)
? ? ? ? {
? ? ? ? ? ? this.M = m;
? ? ? ? ? ? this.N = n;
? ? ? ? }

? ? ? ? public override double Cal(double realmoney)
? ? ? ? {
? ? ? ? ? ? return realmoney - N * (realmoney % M);
? ? ? ? }
? ? }

這兩塊沒有難點,自行理解
接下來與用戶的交互重中之重,包含了計算用戶貨物的錢以及計算打折后的錢等。
不明白請看注釋

?/// <summary>
? ? ? ? /// 用顧客交互,詢問需要什么
? ? ? ? /// </summary>
? ? ? ? public void SayWhat()
? ? ? ? {
? ? ? ? ? ? Console.WriteLine("您好您需要什么?");
? ? ? ? ? ? string str = Console.ReadLine();
? ? ? ? ? ? Console.WriteLine("您需要多少?");
? ? ? ? ? ? int a = Convert.ToInt32(Console.ReadLine());
? ? ? ? ? ? ProduckFather[] pros= ?ck.SetPros(str, a);//將貨物取出
? ? ? ? ? ? double realmoney = ?GetMoney(pros); ? //計算真實價格

? ? ? ? ? ? Console.WriteLine("您購買的物品是{0},數量是{1},價格是{2}", str, a,realmoney);//用戶購買清單
? ? ? ? ? ? Console.WriteLine("請選擇您的打折方式:1--8折,2--滿300送50 ?3--不打折");
? ? ? ? ? ? ?int input= Input(); //用戶輸入,調用Input判斷輸入是否合規(guī)并返回int類型
? ? ? ? ? ? CalFather cal = Money(input);//判斷打折方法并,返回一個父類對象
? ? ? ? ? ? double money= cal.Cal(realmoney);//調用打折虛方法并返回打折后的錢
? ? ? ? ? ? Console.WriteLine("總共要花費{0}元", money);
? ? ? ? ? ? XiaoPiao(pros, money);
? ? ? ? ? ?
? ? ? ? }
? ? ? ? /// <summary>
? ? ? ? /// 計算真實價格
? ? ? ? /// </summary>
? ? ? ? /// <param name="pros"></param>
? ? ? ? /// <returns></returns>
? ? ? ? public double GetMoney(ProduckFather[] pros)//遍歷pros(相當于購物車)來計算價錢
? ? ? ? {
? ? ? ? ? ? double realmoney=0;
? ? ? ? ? ? foreach (var item in pros)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? realmoney += item.Price;
? ? ? ? ? ? }
? ? ? ? ? ? return realmoney;
? ? ? ? }
? ? ? ? /// <summary>
? ? ? ? /// 打折后的錢
? ? ? ? /// </summary>
? ? ? ? /// <param name="input"></param>
? ? ? ? /// <returns></returns>
? ? ? ? public CalFather Money(int input)//根據用戶的選擇來計算打折后的錢
? ? ? ? {
? ? ? ? ? ? CalFather cal = null;
? ? ? ? ? ? switch (input)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? case 1:cal = new CalRate(0.8); ? ? ? ??
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 2:cal = new CalMN(300, 50);
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 3:cal = new CalNo();?
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? return cal;
? ? ? ? }
? ? ? ? public void ShowPros()
? ? ? ? {
? ? ? ? ? ? ck.ShowPros();
? ? ? ? }
? ? ? ? /// <summary>
? ? ? ? /// 判斷用戶輸入是否合理
? ? ? ? /// </summary>
? ? ? ? public int Input() ?//判斷用戶輸入的是否合規(guī),不合規(guī)則一直輸入
? ? ? ? {
? ? ? ? ? ? bool b = true;
? ? ? ? ? ? int input;
? ? ? ? ? ? while (b)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? try
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? input = Convert.ToInt32(Console.ReadLine());
? ? ? ? ? ? ? ? ? ? if (input <= 3 && input > 0)
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? return input;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? b = true;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? catch
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? Console.WriteLine("您輸入的不正確,請重新輸入:1--8折,2--滿300送50 ?3--不打折");
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? return 0;
? ? ? ? ?
? ? ? ? }
? ? ? ? //打印偽小票
? ? ? ? public void XiaoPiao(ProduckFather[] pros, double money)
? ? ? ? {
? ? ? ? ? ? Console.WriteLine("***************發(fā)票***************");
? ? ? ? ? ? foreach (var item in pros)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? Console.WriteLine("本次您購買了" + item.Name + "\t" + "一共" + item.Count + "\t" + "件" );
? ? ? ? ? ? }
? ? ? ? ? ? Console.WriteLine("總花費了{0}元", money);
? ? ? ? ? ? Console.WriteLine("請評價本次購買:1--滿意 2--良好 3--不滿意");
? ? ? ? ? ? Console.ReadKey();
? ? ? ? ? ? Console.WriteLine("感謝您的評價,祝您生活愉快!");
? ? ? ? }
? ? }

主函數:

//創(chuàng)建超市對象
SupperMarket sp = new SupperMarket();
//展示超市貨物
sp.ShowPros();
//跟用戶交互
sp.SayWhat();

運行界面:

本系統還有部分尚不完善,是開源的,還可以實現進貨的功能,以及try{}catch{}并沒有加很多的異常判斷,系統不算穩(wěn)定,讀者可以自行修改。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:

相關文章

  • ListView Adapter優(yōu)化 實例

    ListView Adapter優(yōu)化 實例

    ListView Adapter優(yōu)化 實例,需要的朋友可以參考一下
    2013-04-04
  • C# 編碼好習慣,獻給所有熱愛c#的同志

    C# 編碼好習慣,獻給所有熱愛c#的同志

    c#編寫者,需要培養(yǎng)的一些好習慣
    2009-02-02
  • C#中獲取文件大小問題

    C#中獲取文件大小問題

    這篇文章主要介紹了C#中獲取文件大小問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • c#中datagridview處理非綁定列的方法

    c#中datagridview處理非綁定列的方法

    這篇文章主要介紹了c#中datagridview處理非綁定列的方法,實例分析了C#中datagridview的使用技巧,需要的朋友可以參考下
    2015-06-06
  • C#中FormClosing與FormClosed的區(qū)別詳細解析

    C#中FormClosing與FormClosed的區(qū)別詳細解析

    本文是對C#中FormClosing與FormClosed的區(qū)別進行了詳細的分析介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-10-10
  • C#實現輸入法功能詳解

    C#實現輸入法功能詳解

    本文主要介紹了C#實現輸入法的相關知識。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • C#實現自動填充文字內容到指定圖片

    C#實現自動填充文字內容到指定圖片

    這篇文章主要為大家詳細介紹了如何使用C#實現自動填充文字內容到指定圖片,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-04-04
  • WPF實現3D粒子波浪效果

    WPF實現3D粒子波浪效果

    這篇文章主要為大家詳細介紹了WPF實現3D粒子波浪效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • WinForm項目中添加幫助文檔功能

    WinForm項目中添加幫助文檔功能

    這篇文章介紹了WinForm項目中添加幫助文檔功能的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • C#6 null 條件運算符

    C#6 null 條件運算符

    本文主要對比C# 6 null運算符與老版本的不同,并且用代碼實例測試,發(fā)現新語法性能提高,語法簡化了。希望看到的同學對你有所幫助
    2016-07-07

最新評論

和田县| 夏河县| 秦安县| 永和县| 芒康县| 邵东县| 鸡西市| 安丘市| 惠东县| 永兴县| 芷江| 湛江市| 区。| 军事| 正蓝旗| 高邑县| 景宁| 惠东县| 炉霍县| 铜川市| 揭西县| 叙永县| 闽清县| 龙里县| 甘南县| 前郭尔| 宁化县| 呈贡县| 宁德市| 揭西县| 玉树县| 北流市| 密山市| 炎陵县| 双鸭山市| 陵川县| 娄烦县| 佛坪县| 泰州市| 亳州市| 宁南县|