using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Threading;
using System.Diagnostics;

namespace 自动售货机
{
    class Program
    {
        static double money;
        static double temmoney;
        static void Main(string[] args)
        {            
            SY("欢迎使用自动售货机");          
            Console.WriteLine("欢迎使用自动售货机");           
            while (true)
            {              
                SY("请你输入所需商品代号:    1.可乐  2.矿泉水  3.雪碧  4.绿茶  5.退出");
                Console.WriteLine("请你输入所需商品代号:  1.可乐  2.矿泉水  3.雪碧  4.绿茶  5.退出");
                switch (Console.ReadLine())
                {
                    case "1":
                        money = 3;
                        //SY("你选择的是可乐,所需3元,请投币!!!");
                        Console.WriteLine("你选择的是可乐,单价3元,请选择数量:");
                        int num = int.Parse(Console.ReadLine());
                        Console.WriteLine("请投币:");
                        try
                        {
                            double Tmoney = double.Parse(Console.ReadLine());
                            if (XD(Tmoney))
                            {
                                KeLe(Tmoney,num);
                            }
                            Console.ForegroundColor = ConsoleColor.Red;
                            Console.WriteLine("返回请按任意键!");
                            Console.ForegroundColor = ConsoleColor.Black;
                            Console.ReadKey();
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e.Message);
                            Console.ReadKey();
                        }
                        break;
                    case "2":
                          money = 1;
                        Console.WriteLine("你选择的是矿泉水,单价1元,请选择数量:");
                        int num1 = int.Parse(Console.ReadLine());
                        Console.WriteLine("请投币:");
                        try
                        {
                            double Tmoney = double.Parse(Console.ReadLine());
                            if (XD(Tmoney))
                            {
                                Water(Tmoney,num1);
                            }
                           Console.ForegroundColor = ConsoleColor.Red;
                           Console.WriteLine("返回请按任意键!");
                           Console.ForegroundColor = ConsoleColor.Black;
                           Console.ReadKey();
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e.Message);
                            Console.ReadKey();
                        }
                        break;
                    case "3":
                         money = 10;
                        Console.WriteLine("你选择的是雪碧,单价10元,请选择数量:");
                        int num2 = int.Parse(Console.ReadLine());
                        Console.WriteLine("请投币:");
                        try
                        {
                            double Tmoney = double.Parse(Console.ReadLine());
                            if (XD(Tmoney))
                            {
                                XuBi(Tmoney,num2);
                            }
                            Console.ForegroundColor = ConsoleColor.Red;
                            Console.WriteLine("返回请按任意键!");
                            Console.ForegroundColor = ConsoleColor.Black;
                            Console.ReadKey();
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e.Message);
                            Console.ReadKey();
                        }
                        break;
                    case "4":
                         money = 7;
                        Console.WriteLine("你选择的是绿茶,单价7元,请选择数量:");
                        int num3 = int.Parse(Console.ReadLine());
                        Console.WriteLine("请投币:");
                        try
                        {
                            double Tmoney = double.Parse(Console.ReadLine());
                            if (XD(Tmoney))
                            {
                                LvCha(Tmoney,num3);
                            }
                            Console.ForegroundColor = ConsoleColor.Red;
                            Console.WriteLine("返回请按任意键!");
                            Console.ForegroundColor = ConsoleColor.Black;
                            Console.ReadKey();
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e.Message);
                            Console.ReadKey();
                        }
                        break;
                    case "5":
                        return;                 
                }
                Console.Clear();     
            }
        }
        /// <summary>
        /// 限定投币面值
        /// </summary>
        static bool XD(double Tmoney)
        {
            while (true)
            {
                if (Tmoney == 1 || Tmoney == 5 || Tmoney == 10 || Tmoney == 50 || Tmoney == 100)
                {
                   
                    return true;
                }
                else
                {
                    //return false;
                    //Console.WriteLine("请重新输入面值为1 5 10 50 100的人民币");
                    throw new MyException("异常了!!!你输入的人民币币值不对,请检验!!!"+"\r\n"+"返回请按任意键");                                   
                }
            }
        }
        /// <summary>
        /// 语音加载
        /// </summary>
        /// <param name="vodio"></param>
        static void SY(string vodio)
        {
            string content = "CreateObject(\"SAPI.SpVoice\").Speak\"" + vodio + "\"";
            File.WriteAllText(Environment.CurrentDirectory+@"\a.vbs", content, Encoding.Default);
            Thread.Sleep(500);
            Process.Start(Environment.CurrentDirectory + @"\a.vbs");
            return;
        }
        /// <summary>
        /// 可乐
        /// </summary>
        /// <param name="Tmoney"></param>
        static void KeLe(double Tmoney,int num)
        {
            money = money * num;
            mark1:
            if (Tmoney == money)
            {
                Console.WriteLine("欢迎使用,请拿好你的可乐");
            }          
            else if(Tmoney>=money)
            {
                temmoney = Tmoney - money;
                Console.WriteLine("拿好可乐,找你{0:c}元",temmoney);
            }
            else
            {
                bool mark;
                while (true)
                {
                    Console.WriteLine("请再次投币:");
                    double dm = double.Parse(Console.ReadLine());
                    if (XD(dm))
                    {
                        Tmoney += dm;
                        if (money == Tmoney || Tmoney > money)
                        {
                            mark = false;
                            goto mark1;
                        }
                    }
                    //}
                }
            }

        }
        /// <summary>
        /// 矿泉水
        /// </summary>
        /// <param name="Tmoney"></param>
        static void Water(double Tmoney,int num)
        {
            money = money * num;
        mark1:
            if (Tmoney == money)
            {
                Console.WriteLine("欢迎使用,请拿好你的矿泉水");
            }
            else if (Tmoney >= money)
            {
                temmoney = Tmoney - money;
                Console.WriteLine("拿好矿泉水,再找你{0:c}元", temmoney);
            }
            else
            {
                bool mark;
                while (true)
                {
                    double dm;
                    Console.WriteLine("请再次投币:");
                    dm= double.Parse(Console.ReadLine());                    
                     if (XD(dm))
                     {
                         Tmoney += dm;
                         if (money == Tmoney || Tmoney > money)
                         {
                             mark = false;
                             goto mark1;
                         }
                     }
                }
            }

        }
        /// <summary>
        /// 雪碧
        /// </summary>
        /// <param name="Tmoney"></param>
        static void XuBi(double Tmoney,int num)
        {
            money = money * num;
        mark1:
            if (Tmoney == money)
            {
                Console.WriteLine("欢迎使用,请拿好你的雪碧");
            }
            else if (Tmoney >= money)
            {
                temmoney = Tmoney - money;
                Console.WriteLine("拿好雪碧,再找你{0:c}元", temmoney);
            }
            else
            {
                bool mark;
                while (true)
                {
                    double dm;
                    Console.WriteLine("请再次投币:");
                    dm= double.Parse(Console.ReadLine());
                    if (XD(dm))
                    {
                        Tmoney += dm;
                        if (money == Tmoney || Tmoney > money)
                        {
                            mark = false;
                            goto mark1;
                        }
                    }
                }
            }

        }
        /// <summary>
        /// 绿茶
        /// </summary>
        /// <param name="Tmoney"></param>
        static void LvCha(double Tmoney,int num)
        {
            money = money * num;
        mark1:
            if (Tmoney == money)
            {
                Console.WriteLine("欢迎使用,请拿好你的绿茶");
            }
            else if (Tmoney >= money)
            {
                temmoney = Tmoney - money;
                Console.WriteLine("拿好绿茶,再找你{0:c}元", temmoney);
            }
            else
            {
                bool mark;
                while (true)
                {
                    double dm;
                    Console.WriteLine("请再次投币:");
                    dm= double.Parse(Console.ReadLine());
                    if (XD(dm))
                    {
                        Tmoney += dm;
                        if (money == Tmoney || Tmoney > money)
                        {
                            mark= false;
                            goto mark1;
                        }
                    }
                }
               // throw new MyException("你的钱不足,请继续投币!!!");
            }

        }
    }
}
 

 

捕捉异常类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace 自动售货机
{
    class MyException : Exception
    {

        public MyException(string message)
            : base(message)
        {
            File.AppendAllText(@"G:\1.txt", message + "\r\n");
        }
    }
}