using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Threading;
using System.Diagnostics;
namespace ConsoleApplication1
{
    class Program
    {
        static string UserName = "gsw";
        static string Password = "000000";
        static double Money = 0;
        static bool Mark = false;
        static String[][] Arri = new string[5][];
        static int[] Num ={10,10,10,10,0};
        static void Main(string[] args)
        {
           
            Arri[0]=new string[]{ "1、", "果粒橙", "3.00" };
            Arri[1]=new string[]{ "2、", "绿茶", "3.00" };
            Arri[2]=new string[]{ "3、", "矿泉水", "1.00"};
            Arri[3]=new string[]{ "4、", "营养快线", "4.00" };
            Arri[4] = new string[] {"","","" };
            SS(Arri, Num);
    }
        /// <summary>
        /// 后台维护
        /// </summary>
        /// <param name="Arri">商品信息</param>
        /// <param name="Num">商品价格</param>
        static void WeiHu(string[][] Arri, int[] Num)
        {
            while (true)
            {
                Console.Clear();
                Console.WriteLine("管理员,欢迎你!");
                Console.WriteLine("请根据提示输入,并进行操作!");
                Console.WriteLine("1、添加种类     2、删除种类    3、修改数量   4、修改价格   5、返回主目录");
                switch (Console.ReadLine())
                {
                    case "1":
                        if (Arri[4][0] == "")
                        {
                            Arri[4][0] = "7、";
                            Console.WriteLine("请输入你所添加的商品名称:");
                            string Name = Console.ReadLine();
                            if (Name != Arri[0][1] && Name != Arri[1][1] && Name != Arri[2][1] && Name != Arri[3][1])
                            {
                                Arri[4][1] = Name;
                                //Console.WriteLine();
                            }
                            else
                            {
                                Console.WriteLine("对不起!商品已出售!");
                                Thread.Sleep(1500);
                                break;
                            }
                            Console.WriteLine("请输入商品的价格如:\"3.00\":");
                            Arri[4][2] = Console.ReadLine();
                            Console.WriteLine("请输入出售的数量:");
                            Num[4] = int.Parse(Console.ReadLine());
                        }
                        else
                        {
                            Console.WriteLine("对不起!所出售的商品数量已达上限!");
                            Thread.Sleep(1500);
                        }
                        break;
                    case "2":
                        Console.WriteLine("请输入你要删除的商品的名称:");
                        string Del = Console.ReadLine();
                        for (int i = 0; i < 5; i++)
                        {

                            if (Arri[i][1] == Del)
                            {
                                Arri[i][1] = "";
                                break;
                            }
                        }
                        break;
                    case "3":
                        Console.WriteLine("请输入你要修改数量的商品名称:");
                        string Dell = Console.ReadLine();

                        for (int i = 0; i < 5; i++)
                        {

                            if (Arri[i][1] == Dell)
                            {
                                Console.WriteLine("请输入商品数量:");
                                Num[i] = int.Parse(Console.ReadLine());
                                break;
                            }
                        }
                        break;
                    case "4":
                        Console.WriteLine("请输入你要修改价格的商品名称:");
                        string Delll = Console.ReadLine();

                        for (int i = 0; i < 5; i++)
                        {

                            if (Arri[i][1] == Delll)
                            {
                                Console.WriteLine("请输入商品价格如:\"3.00\":");
                                Arri[i][2] = Console.ReadLine();
                                break;
                            }
                        }
                        break;
                    case "5":
                        return;
                        break;
                    default:
                        Console.WriteLine("输入错误!请重新输入!");
                        Thread.Sleep(1000);
                        break;
                }
            }
           
        }
        /// <summary>
        /// 出售
        /// </summary>
        /// <param name="Arri">商品信息</param>
        /// <param name="Num">商品价格</param>
        static void SS(string[][] Arri,int[] Num)
        {
            while (true)
            {
                Console.Clear();
                Console.WriteLine("******欢迎使用本自动售货机!******");
                if (Arri[0][1] != "")
                {
                    Console.WriteLine("{0}{1}   价格:{2:c}元  剩余数量{3}", Arri[0][0], Arri[0][1], Arri[0][2], Num[0]);
                }
                if (Arri[1][1] != "")
                {
                    Console.WriteLine("{0}{1}     价格:{2:c}元  剩余数量{3}", Arri[1][0], Arri[1][1], Arri[1][2], Num[1]);
                }
                if (Arri[2][1] != "")
                {
                    Console.WriteLine("{0}{1}   价格:{2:c}元  剩余数量{3}", Arri[2][0], Arri[2][1], Arri[2][2], Num[2]);
                }
                if (Arri[3][1] != "")
                {
                    Console.WriteLine("{0}{1} 价格:{2:c}元  剩余数量{3}", Arri[3][0], Arri[3][1], Arri[3][2], Num[3]);
                }
                Console.WriteLine("5、维护");
                Console.WriteLine("6、退出");
                if (Arri[4][1] != "")
                {
                    Console.WriteLine("***********新增加的商品************");
                    Console.WriteLine("{0}{1}  价格:{2:c}元  剩余数量{3}", Arri[4][0], Arri[4][1], Arri[4][2], Num[4]);
                }
               
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("请输入你要买的商品号,若要维护请按\"5\"");
                Console.ResetColor();
                switch (Console.ReadLine())
                {
                    case "1":
                        if (Arri[0][1] != "")
                        {
                            if (Num[0] > 0)
                            {
                                SellGLC();
                                if (Mark == true)
                                {
                                    Num[0]--;
                                }
                            }

                            else
                            {
                                Console.ForegroundColor = ConsoleColor.Red;
                                Console.WriteLine("对不起,已售完!将返回主目录!");
                                Console.ResetColor();
                                Thread.Sleep(2000);
                            }
                        }
                        else
                        {
                            Console.WriteLine("对不起!没有该商品!");
                            Thread.Sleep(500);
                        }
                        break;
                    case "2":
                        if (Arri[1][1] != "")
                        {
                            if (Num[1] > 0)
                            {
                                SellGreenTea();
                                if (Mark == true)
                                {
                                    Num[1]--;
                                }
                            }
                            else
                            {
                                Console.ForegroundColor = ConsoleColor.Red;
                                Console.WriteLine("对不起,已售完!将返回主访目录!");
                                Console.ResetColor();
                                Thread.Sleep(2000);
                            }
                        }
                        else
                        {
                            Console.WriteLine("对不起!没有该商品!");
                            Thread.Sleep(500);
                        }
                        break;
                    case "3":
                        if (Arri[2][1] != "")
                        {
                            if (Num[2] > 0)
                            {
                                SellWater();
                                if (Mark == true)
                                {
                                    Num[2]--;
                                }
                            }
                            else
                            {
                                Console.ForegroundColor = ConsoleColor.Red;
                                Console.WriteLine("对不起,已售完!将返回主目录!");
                                Console.ResetColor();
                                Thread.Sleep(2000);
                            }
                        }
                        else
                        {
                            Console.WriteLine("对不起!没有该商品!");
                            Thread.Sleep(500);
                        }
                        break;
                    case "4":
                        if (Arri[3][1] != "")
                        {
                            if (Num[3] > 0)
                            {
                                SellYingYang();
                                if (Mark == true)
                                {
                                    Num[3]--;
                                }
                            }
                            else
                            {
                                Console.ForegroundColor = ConsoleColor.Red;
                                Console.WriteLine("对不起,已售完!将返回主目录!");
                                Console.ResetColor();
                                Thread.Sleep(2000);
                            }
                        }
                        else
                        {
                            Console.WriteLine("对不起!没有该商品!");
                            Thread.Sleep(500);
                        }
                        break;
                        case "5":
                        GetPassword();
                        break;
                    case "6":
                        Voice("谢谢您的使用,欢迎下次再来!");
                        Thread.Sleep(4500);
                        return;
                    case "7":
                        if (Arri[4][1] != "")
                        {
                            if (Num[3] > 0)
                            {
                                SellW();
                                if (Mark == true)
                                {
                                    Num[4]--;
                                }
                            }
                            else
                            {
                                Console.ForegroundColor = ConsoleColor.Red;
                                Console.WriteLine("对不起,已售完!将返回主目录!");
                                Console.ResetColor();
                                Thread.Sleep(2000);
                            }
                        }
                        else
                        {
                            Console.WriteLine("对不起!没有该商品!");
                            Thread.Sleep(500);
                        }
                        break;
                    default:
                        Console.WriteLine("对不起!输入错误,请重新输入:");
                        Thread.Sleep(1000);
                        break;
                }

            }
        }
        /// <summary>
        /// 出售果粒橙
        /// </summary>
        static void SellGLC()
        {
            Console.WriteLine("您选择购买果粒橙!请投币");
            Money = double.Parse(Console.ReadLine());
            if (Money < 3)
            {
                Set();
                Mark = false;
            }
            else
            {
                Console.Beep();
                Console.WriteLine("交易成功!找零{0:c}元", Money - 3);
                Mark = true;
                SetVoice();
            }
        }
        /// <summary>
        /// 出售绿茶
        /// </summary>
        static void SellGreenTea()
        {
            Console.WriteLine("您选择购买绿茶!请投币");
            double.TryParse(Console.ReadLine(),out Money);
            if (Money < 3)
            {
                Set();
                Mark = false;
            }
            else
            {
                Console.Beep();
                Console.WriteLine("交易成功!找零{0:c}元", Money - 3);
                Mark = true;
                SetVoice();
            }
        }
        /// <summary>
        /// 出售矿泉水
        /// </summary>
        static void SellWater()
        {
            Console.WriteLine("您选择购买矿泉水!请投币");
            Money = double.Parse(Console.ReadLine());
            if (Money < 1)
            {
                Set();
                Mark = false;
            }
            else
            {
                Console.Beep();
                Console.WriteLine("交易成功!找零{0:c}元", Money - 1);
                Mark = true;
                SetVoice();
            }
        }
        /// <summary>
        /// 出售新添加的商品
        /// </summary>
        static void SellW()
        {
            Console.WriteLine("您选择购买{0}!请投币",Arri[4][1]);
            Money = double.Parse(Console.ReadLine());
            if (Money <double.Parse(Arri[4][2]))
            {
                Set();
                Mark = false;
            }
            else
            {
                Console.Beep();
                Console.WriteLine("交易成功!找零{0:c}元", Money - double.Parse(Arri[4][2]));
                Mark = true;
                SetVoice();
            }
        }
        /// <summary>
        /// 出售营养快线
        /// </summary>
        static void SellYingYang()
        {
            Console.WriteLine("您选择购买营养快线!请投币");
            Money = double.Parse(Console.ReadLine());
            if (Money < 4)
            {
                Set();
                Mark = false;
            }
            else
            {
                Console.Beep();
                Console.WriteLine("交易成功!找零{0:c}元", Money - 4);
                Mark = true;
                SetVoice();
            }
        }
        /// <summary>
        /// 设置使用语音
        /// </summary>
        static void Set()
        {
            Console.Beep();
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("投入金额太小,请取回您的钱,任意键返回主目录");
            Console.ResetColor();
            Voice("投入金额太小,请取回您的钱,任意键返回主目录");
            Console.ReadKey(true);
        }
        /// <summary>
        /// 交易成功后的语音
        /// </summary>
        static void SetVoice()
        {
            Voice("请拿好您的钱与物品!任意键返回主目录");
            Console.ReadKey(true);
        }
        /// <summary>
        /// 设置语音
        /// </summary>
        /// <param name="i">要说的话</param>
        static void Voice(string i)
        {
            string content = "CreateObject(\"SAPI.SpVoice\").Speak\"" + i + "\"";
            File.WriteAllText(Environment.CurrentDirectory + @"/a.vbs", content, Encoding.Default);
            Process.Start(Environment.CurrentDirectory+@"/a.vbs");
        }
        /// <summary>
        /// 密码验证
        /// </summary>
        static void GetPassword()
        {
            int mark = 3;
            while (mark > 0)
            {
                string password = "";
                Console.WriteLine("请输入用户名:");
                string temun = Console.ReadLine();

                Console.WriteLine("请输入密码:");

                for (int i = 0; i < 6; i++)
                {
                    ConsoleKeyInfo ski = Console.ReadKey(true);
                    Console.Write("*");
                    if (int.Parse(ski.KeyChar.ToString()) < 6)
                    {
                        password = password + ski.KeyChar.ToString();
                    }
                }
                Console.ReadKey(true);
                Console.WriteLine();
                if (UserName == temun && Password == password)
                {
                    WeiHu(Arri,Num);
                    return;

                }
                else
                {
                    mark--;
                    Console.WriteLine("用户名或密码错误,还余{0}次输入机会,请重新输入:", mark);


                }
            }
        }

    }
}