Beispiel #1
0
        /// <summary>
        /// 银行排队叫号
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            try
            {
                IBankQueue bankQueue = null;
                Console.WriteLine("请选择存储结构类型:1.顺序队列,2.链队列");
                string flag = Console.ReadLine();
                switch (flag)
                {
                case "1":
                    Console.WriteLine("请输入队列可容纳人数:");
                    int count = Convert.ToInt32(Console.ReadLine());
                    bankQueue = new CSeqBankQueue(count);
                    break;

                case "2":
                    bankQueue = new LinkBankQueue();
                    break;
                }
                int             windowsnum     = 5;
                ServiceWindow[] serviceWindows = new ServiceWindow[windowsnum];
                Thread[]        serviceThread  = new Thread[windowsnum];
                for (int i = 0; i < windowsnum; i++)
                {
                    serviceWindows[i]       = new ServiceWindow();
                    serviceWindows[i].Bankq = bankQueue;
                    serviceThread[i]        = new Thread(serviceWindows[i].service);
                    serviceThread[i].Name   = (i + 1).ToString();
                    serviceThread[i].Start();
                }

                while (true)
                {
                    Console.WriteLine("点击获取号码:");
                    Console.ReadLine();
                    if (bankQueue != null && (bankQueue.GetLength() < bankQueue.MaxSize || flag == "2"))
                    {
                        int callnumber = bankQueue.GetCallNum();
                        Console.WriteLine("{2}:您的号码时:{0},前面还有{1}位等待。", callnumber, bankQueue.GetLength(), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                        bankQueue.In(callnumber);
                    }
                    else
                    {
                        Console.WriteLine("请重试");
                    }
                    Console.WriteLine();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message + ex.StackTrace);
            }
        }
Beispiel #2
0
        public static void Main(string[] args)
        {
            IBankQueue bankQueue = null;

            Console.WriteLine("请选择存储结构的类型:1.顺序队列 2.链队列");
            char seleflag = Convert.ToChar(Console.ReadLine());

            switch (seleflag)
            {
            case '1':
                int count;
                Console.Write("请输入队列可容纳人数:");
                count     = Convert.ToInt32(Console.ReadLine());
                bankQueue = new CSeqBankQueue(count);
                break;

            case '2':
                bankQueue = new LinkBankQueue();
                break;
            }
            int windowcount = 1;

            ServiceWindow[] sw  = new ServiceWindow[windowcount];
            Thread[]        swt = new Thread[windowcount];
            for (int i = 0; i < windowcount; i++)
            {
                sw[i]       = new ServiceWindow();
                sw[i].BankQ = bankQueue;
                swt[i]      = new Thread(new ThreadStart(sw[i].Service));
                swt[i].Name = "" + (i + 1);
                swt[i].Start();
            }
            while (true)
            {
                Console.Write("请点击触摸屏幕获取号码:");
                Console.ReadLine();
                int callnumber;
                if (!bankQueue.IsFull())
                {
                    callnumber = bankQueue.GetCallnumber();
                    Console.WriteLine("您的号码是:{0},你前面有{1}位,请等待", callnumber, bankQueue.GetLength());
                    bankQueue.EnQueue(callnumber);
                }
                else
                {
                    Console.WriteLine("现在业务繁忙,请稍后再来!");
                }
                Console.WriteLine();
            }
        }