通过C#实现自动售货机接口

通过C#实现自动售货机接口的完整攻略如下:

一、了解接口

在开始编写自动售货机接口之前,需要先了解什么是接口。接口(Interface)是一种抽象的类型,它定义了让其他程序集(Assembly)访问该程序集的功能。通过接口,可以使一个类实现多个不相关的类型。

二、创建项目

  1. 打开Visual Studio,创建一个新的C#控制台应用程序项目;
  2. 在解决方案资源管理器中,右键单击项目名称,选择添加 -> 新建项 -> 接口;
  3. 在弹出的对话框中,输入接口名称(例如:IVendingMachine),点击添加;
  4. 在打开的接口文件中,添加自动售货机需要实现的方法(例如:SelectItemInsertCoinReturnCoinGetItem等)。

示例代码如下:

public interface IVendingMachine
{
    bool SelectItem(string item);

    bool InsertCoin(double amount);

    double ReturnCoin();

    string GetItem();
}

三、创建自动售货机类并实现接口

  1. 创建自动售货机类,并实现接口中定义的方法;
  2. 在类中定义自动售货机需要用到的变量(例如:_itemList_coinAmount等);
  3. 实现接口中定义的方法,完成自动售货机的具体操作。

示例代码如下:

public class VendingMachine : IVendingMachine
{
    private Dictionary<string, double> _itemList;
    private List<double> _coinAmount;

    public VendingMachine()
    {
        _itemList = new Dictionary<string, double>();
        _itemList.Add("Coke", 1.5);
        _itemList.Add("Pepsi", 1.6);
        _itemList.Add("Soda", 1.2);
        _coinAmount = new List<double>();
    }

    public bool SelectItem(string item)
    {
        if (_itemList.ContainsKey(item))
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    public bool InsertCoin(double amount)
    {
        if (amount == 0.1 || amount == 0.5 || amount == 1 || amount == 2)
        {
            _coinAmount.Add(amount);
            return true;
        }
        else
        {
            return false;
        }
    }

    public double ReturnCoin()
    {
        double totalAmount = 0;
        foreach(double amount in _coinAmount)
        {
            totalAmount += amount;
        }
        _coinAmount.Clear();
        return totalAmount;
    }

    public string GetItem()
    {
        double totalAmount = 0;
        foreach(double amount in _coinAmount)
        {
            totalAmount += amount;
        }
        if(totalAmount >= _itemList[item])
        {
            _coinAmount.Clear();
            return item;
        }
        else
        {
            return null;
        }
    }
}

四、使用自动售货机类

  1. 在程序中使用自动售货机类,并实例化一个对象;
  2. 调用自动售货机类中定义的方法,完成自动售货机的操作。

示例代码如下:

static void Main(string[] args)
{
    VendingMachine vendingMachine = new VendingMachine();

    bool isSuccess = vendingMachine.SelectItem("Coke");//选择物品
    if(isSuccess)
    {
        isSuccess = vendingMachine.InsertCoin(1);//插入硬币
        if(isSuccess)
        {
            double change = vendingMachine.ReturnCoin(); //退还硬币
            string item = vendingMachine.GetItem(); //获取物品
            Console.WriteLine("Change:{0}, Item:{1}", change, item);
        }
    }
}

以上就是通过C#实现自动售货机接口的完整攻略,希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:通过C#实现自动售货机接口 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • C#编程简单实现生成PDF文档的方法示例

    综述 在C#编程中生成PDF文档是一项非常有用的功能。PDF文档可以在任何设备上展示并保留格式,因此它可以被广泛应用于数据报表、电子书等领域。本文将会详细讲述如何使用C#编程实现生成PDF文档的方法,同时提供两个实例来演示如何操作。 步骤 引入PDF库 在C#中生成PDF文档之前,需要下载和使用第三方PDF库。有很多开源的PDF生成库可以方便的使用,例如iT…

    C# 2023年6月1日
    00
  • .NET Framework 3.5 Win11无法安装怎么办 .NET Framework3.5安装教程

    如果在Windows 11上安装.NET Framework 3.5时遇到问题,可以尝试以下解决方案: 1. 使用Windows 功能启用或禁用 Windows 11中已经预装了.NET Framework 3.5,但默认情况下未启用。因此,可以尝试使用Windows 功能启用或禁用来启用.NET Framework 3.5。以下是步骤: 打开“控制面板”并…

    C# 2023年5月15日
    00
  • C#使用iCSharpcode进行文件压缩实现方法

    下面是“C#使用iCSharpcode进行文件压缩实现方法”的完整攻略。 1. 引入iCSharpcode.SharpZipLib库 在C#中使用iCSharpcode进行文件压缩需要引入其提供的SharpZipLib库。可以通过NuGet来引入,也可以直接下载安装至本地项目中。 2. 使用ZipOutputStream进行文件压缩 压缩一个文件可以使用如下…

    C# 2023年6月1日
    00
  • c#获取字符串宽度的示例代码(字节数方法)

    下面我将详细讲解如何通过c#获取字符串宽度的示例代码。首先,我们要明确一下字符宽度的概念。由于不同的字符在显示上会占用不同的宽度,因此需要通过特定的算法来计算字符的宽度。在下面的攻略中,我们将介绍使用字节数方法来获取字符串宽度。 步骤一:定义计算宽度的方法 在c#中,我们可以使用Encoding类来进行字节转换,然后根据指定编码的字节数,得出字符串的宽度。下…

    C# 2023年6月8日
    00
  • C#实现鼠标消息捕获

    C#实现鼠标消息捕获的完整攻略 鼠标消息捕获是指程序可以在窗口或控件外部接收并处理鼠标事件(如鼠标移动、鼠标点击等)。在C#中,可以通过重载窗口或控件的WndProc方法来实现对鼠标消息的捕获。 在窗口或控件中重载WndProc方法 首先,需要定义一个常量,用于表示捕获鼠标消息的消息代码。在Winuser.h文件中,WM_MOUSEMOVE、WM_LBUTT…

    C# 2023年6月1日
    00
  • c#数据类型基础

    C#数据类型基础 一、基础数据类型 C#中的基本数据类型有以下几种: 整型:int、long、short、byte、sbyte、uint、ulong、ushort 浮点型:float、double 字符型:char 布尔型:bool 对象型:object 字符串型:string 空类型:void 其中,整型数据类型可以存储整数;浮点型数据类型可以存储带小数点…

    C# 2023年5月15日
    00
  • C#递归实现显示文件夹及所有文件并计算其大小的方法

    下面是“C#递归实现显示文件夹及所有文件并计算其大小的方法”的完整攻略。 1. 确定递归终止条件 首先,我们要确定递归的终止条件。在本题中,终止条件一般是当遍历到文件时,直接输出文件的名称和大小,并返回上一级目录继续遍历。因此,我们可以使用File和Directory类来判定当前路径是否为文件或目录,并在遇到文件时直接输出。 2. 确定遍历方式 其次,我们需…

    C# 2023年6月1日
    00
  • aspx 页面弹出窗口代码大全

    下面是详细的攻略: ASPX 页面弹出窗口代码大全 在 ASPX 页面中,弹出窗口是实现一些交互和提示的重要手段。下面是常用的弹出窗口代码集合。 alert 弹出窗口 alert 可以在页面上弹出一个提示信息窗口,用法如下: alert(‘Hello, World!’); 其中,’Hello, World!’ 是想要显示在弹出窗口中的提示信息。 confir…

    C# 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部