コード例 #1
0
ファイル: Cmo.cs プロジェクト: sskhaustov/Bank_Model_cs
 public Cmo(int _max_count)
 {
     set_start_id();
     time            = 0;
     all_clients     = 0;
     refused_clients = 0;
     tot_xchg        = 0;
     tot_acnt        = 0;
     tot_cred        = 0;
     tot_card        = 0;
     is_working      = true;
     day_time        = 300; //рабочий день - 5 минут))
     set_random_creatime();
     RT         = request_type.NONE;
     clients    = new Queue[2];
     clients[0] = new Queue(_max_count); //очередь на 1-2 кассы (обмен)
     clients[1] = new Queue(_max_count); //очередь на 3-7 кассы (остальные операции)
     kasses     = new Operator[7];
     for (int i = 0; i < 7; i++)
     {
         if (i < 2)
         {
             kasses[i] = new Operator(kassa_type.N12);
         }
         else
         {
             kasses[i] = new Operator(kassa_type.N37);
         }
     }
 }
コード例 #2
0
ファイル: Cmo.cs プロジェクト: sskhaustov/Bank_Model_cs
 public Cmo(int _max_count)
 {
     set_start_id();
     time = 0;
     all_clients = 0;
     refused_clients = 0;
     tot_xchg = 0;
     tot_acnt = 0;
     tot_cred = 0;
     tot_card = 0;
     is_working = true;
     day_time = 300; //рабочий день - 5 минут))
     set_random_creatime();
     RT = request_type.NONE;
     clients = new Queue[2];
     clients[0] = new Queue(_max_count); //очередь на 1-2 кассы (обмен)
     clients[1] = new Queue(_max_count); //очередь на 3-7 кассы (остальные операции)
     kasses = new Operator[7];
     for (int i = 0; i < 7; i++)
     {
         if (i < 2)
             kasses[i] = new Operator(kassa_type.N12);
         else
             kasses[i] = new Operator(kassa_type.N37);
     }
 }
コード例 #3
0
ファイル: Cmo.cs プロジェクト: sskhaustov/Bank_Model_cs
        private Request create_request() //генерация заявки
        {
            int caser;

            caser = rnd.Next(4); //тип заявки выбирается случайным образом
            switch (caser)
            {
            case 0:
                RT   = request_type.ACNT;
                time = 30;
                tot_acnt++;
                break;

            case 1:
                RT   = request_type.CARD;
                time = 80;
                tot_card++;
                break;

            case 2:
                RT   = request_type.CRED;
                time = 60;
                tot_cred++;
                break;

            case 3:
                RT   = request_type.XCHG;
                time = 50;
                tot_xchg++;
                break;
            }
            Request r = new Request(ID++, time, true, RT);

            return(r);
        }
コード例 #4
0
ファイル: Request.cs プロジェクト: sskhaustov/Bank_Model_cs
 public Request(Request _other)
 {
     ID = _other.ID;
     service_time = _other.service_time;
     request_state = _other.request_state;
     operation = _other.operation;
 }
コード例 #5
0
ファイル: Form1.cs プロジェクト: sskhaustov/Bank_Model_cs
        private request_type type_operation(string s)
        {
            switch (s)
            {
            case "ACNT":
                _type = request_type.ACNT;
                BANK.set_acnt();
                break;

            case "CARD":
                _type = request_type.CARD;
                BANK.set_card();
                break;

            case "CRED":
                _type = request_type.CRED;
                BANK.set_cred();
                break;

            case "XCHG":
                _type = request_type.XCHG;
                BANK.set_xchg();
                break;
            }
            return(_type);
        }
コード例 #6
0
ファイル: Request.cs プロジェクト: sskhaustov/Bank_Model_cs
        private Random dec; //отклонение от среднего времени обработки заявки

        #endregion Fields

        #region Constructors

        public Request()
        {
            ID = 0;
            service_time = 0;
            request_state = false;
            operation = request_type.NONE;
        }
コード例 #7
0
ファイル: Request.cs プロジェクト: sskhaustov/Bank_Model_cs
 public Request(int _ID, int _service_time, bool _request_state, request_type _operation)
 {
     ID = _ID;
     service_time = _service_time;
     request_state = _request_state;
     operation = _operation;
 }
コード例 #8
0
 public Request(int _ID, int _service_time, bool _request_state, request_type _operation)
 {
     ID            = _ID;
     service_time  = _service_time;
     request_state = _request_state;
     operation     = _operation;
 }
コード例 #9
0
 public Request(Request _other)
 {
     ID            = _other.ID;
     service_time  = _other.service_time;
     request_state = _other.request_state;
     operation     = _other.operation;
 }
コード例 #10
0
 private Random dec;                     //отклонение от среднего времени обработки заявки
 public Request()
 {
     ID            = 0;
     service_time  = 0;
     request_state = false;
     operation     = request_type.NONE;
 }
コード例 #11
0
        public ActionResult DeleteConfirmed(int id)
        {
            request_type request_type = db.request_type.Find(id);

            db.request_type.Remove(request_type);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
コード例 #12
0
 public ActionResult Edit([Bind(Include = "id,name")] request_type request_type)
 {
     if (ModelState.IsValid)
     {
         db.Entry(request_type).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(request_type));
 }
コード例 #13
0
        public ActionResult Create([Bind(Include = "id,name")] request_type request_type)
        {
            if (ModelState.IsValid)
            {
                db.request_type.Add(request_type);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(request_type));
        }
コード例 #14
0
        // GET: /Request_types/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            request_type request_type = db.request_type.Find(id);

            if (request_type == null)
            {
                return(HttpNotFound());
            }
            return(View(request_type));
        }
コード例 #15
0
ファイル: Cmo.cs プロジェクト: sskhaustov/Bank_Model_cs
 request_type RT;               //тип заявки
 public Cmo()
 {
     ID              = 0;
     time            = 0;
     creating_time   = 0;
     all_clients     = 0;
     tot_xchg        = 0;
     tot_acnt        = 0;
     tot_cred        = 0;
     tot_card        = 0;
     day_time        = 0;
     is_working      = true;
     refused_clients = 0;
     RT              = request_type.NONE;
 }
コード例 #16
0
ファイル: Cmo.cs プロジェクト: sskhaustov/Bank_Model_cs
        private int tot_xchg; //всего хсhg

        #endregion Fields

        #region Constructors

        public Cmo()
        {
            ID = 0;
            time = 0;
            creating_time = 0;
            all_clients = 0;
            tot_xchg = 0;
            tot_acnt = 0;
            tot_cred = 0;
            tot_card = 0;
            day_time = 0;
            is_working = true;
            refused_clients = 0;
            RT = request_type.NONE;
        }
コード例 #17
0
        private int set_service_time(request_type operation, int dec)
        {
            int service_time = 0;

            if (operation == request_type.ACNT)
            {
                service_time = 30 + dec;
            }
            else if (operation == request_type.XCHG)
            {
                service_time = 50 + dec;
            }
            else if (operation == request_type.CARD)
            {
                service_time = 80 + dec;
            }
            else
            {
                service_time = 60 + dec;
            }
            return(service_time);
        }
コード例 #18
0
ファイル: Form1.cs プロジェクト: sskhaustov/Bank_Model_cs
 private request_type type_operation(string s)
 {
     switch (s)
     {
         case "ACNT":
             _type = request_type.ACNT;
             BANK.set_acnt();
             break;
         case "CARD":
             _type = request_type.CARD;
             BANK.set_card();
             break;
         case "CRED":
             _type = request_type.CRED;
             BANK.set_cred();
             break;
         case "XCHG":
             _type = request_type.XCHG;
             BANK.set_xchg();
             break;
     }
     return _type;
 }
コード例 #19
0
        private void button1_Click(object sender, EventArgs e)
        {
            int            n           = int.Parse(textBox2.Text); //общее количество заявок
            List <Request> list_client = new List <Request>();
            int            ID          = 1;
            Random         rnd         = new Random();
            request_type   operation   = request_type.NONE;
            int            start_time;
            int            service_time     = 0;
            int            timer            = 20;
            int            dec              = 0;
            int            tot_reject_XCHG  = 0; //количество отказов первого типа
            int            tot_reject_ACNT  = 0; //количетво отказов второго типа
            double         tot_queue_count1 = 0;
            double         tot_queue_count2 = 0;
            double         avr_queue_count1 = 0;
            double         avr_queue_count2 = 0;

            //генерируем заявки
            for (int i = 0; i < n; i++)
            {
                int type = rnd.Next(4);
                switch (type)
                {
                case 0:
                    operation    = request_type.ACNT;
                    dec          = rnd.Next(-10, 10);
                    service_time = set_service_time(operation, dec);
                    break;

                case 1:
                    operation    = request_type.CARD;
                    dec          = rnd.Next(-10, 10);
                    service_time = set_service_time(operation, dec);
                    break;

                case 2:
                    operation    = request_type.CRED;
                    dec          = rnd.Next(-10, 10);
                    service_time = set_service_time(operation, dec);
                    break;

                case 3:
                    operation    = request_type.XCHG;
                    dec          = rnd.Next(-10, 10);
                    service_time = set_service_time(operation, dec);
                    break;
                }
                start_time = timer + rnd.Next(-10, 10);
                list_client.Add(new Request(ID, start_time, service_time, true, operation));
                ID++;
                timer += 5;
            }
            foreach (Request client in list_client)
            {
                textBox1.Text += client.ID + " " + client.operation + " " + client.start_time + " " + "\r\n";
            }
            //создаем кассы
            ID = 1;
            List <Kassa> list_kassa = new List <Kassa>(7);

            for (int i = 0; i < 7; i++)
            {
                if (i == 0 || i == 1)
                {
                    list_kassa.Add(new Kassa(ID, kassa_type.N12)); ID++;
                }
                else
                {
                    list_kassa.Add(new Kassa(ID, kassa_type.N37)); ID++;
                }
            }
            foreach (Kassa kassir in list_kassa)
            {
                textBox3.Text += kassir.state + " " + kassir.k_type + "\r\n";
            }
            //создаем очереди для заявок
            int             q_volume = int.Parse(textBox4.Text);
            Queue <Request> q12      = new Queue <Request>(q_volume);
            Queue <Request> q37      = new Queue <Request>(q_volume);

            List <Request> list_ready  = new List <Request>(n);
            int            global_time = 0;

            ///*

            while (list_ready.Count != n)
            {
                //освобождаем кассы
                foreach (Kassa kassir in list_kassa)
                {
                    if (kassir.state == operator_state.Occuped && (kassir.cl.start_time + kassir.cl.service_time) == global_time)
                    {
                        list_ready.Add(kassir.cl);
                        kassir.cl    = null;
                        kassir.state = operator_state.Vacant;
                    }
                }
                //добавляем из очередей новые заявки в свободные кассы
                foreach (Kassa kassir in list_kassa)
                {
                    if (kassir.state == operator_state.Vacant && kassir.k_type == kassa_type.N12 && q12.Count != 0)
                    {
                        kassir.cl    = q12.Peek();
                        kassir.state = operator_state.Occuped;
                        q12.Dequeue();
                    }
                    if (kassir.state == operator_state.Vacant && kassir.k_type == kassa_type.N37 && q37.Count != 0)
                    {
                        kassir.cl    = q37.Peek();
                        kassir.state = operator_state.Occuped;
                        q37.Dequeue();
                    }
                }
                foreach (Request client in list_client)
                {
                    if (client.start_time == global_time)
                    {
                        foreach (Kassa kassir in list_kassa)
                        {
                            if (kassir.state == operator_state.Vacant && kassir.k_type == kassa_type.N12 && client.operation == request_type.XCHG)
                            {
                                kassir.cl    = client;
                                kassir.state = operator_state.Occuped;
                                break;
                            }

                            if (kassir.state == operator_state.Vacant && kassir.k_type == kassa_type.N37)
                            {
                                if (client.operation == request_type.ACNT || client.operation == request_type.CARD || client.operation == request_type.CRED)
                                {
                                    kassir.cl    = client;
                                    kassir.state = operator_state.Occuped;
                                    break;
                                }
                            }

                            if (kassir.state == operator_state.Occuped && kassir.ID == 2 && client.operation == request_type.XCHG)
                            {
                                if (q12.Count == q_volume)
                                {
                                    client.request_state = false;
                                    list_ready.Add(client);
                                    tot_reject_XCHG++;
                                }
                                else
                                {
                                    q12.Enqueue(client);
                                }
                                break;
                            }
                            if (kassir.state == operator_state.Occuped && kassir.ID == 7)
                            {
                                if (client.operation == request_type.ACNT || client.operation == request_type.CARD || client.operation == request_type.CRED)
                                {
                                    if (q37.Count == q_volume)
                                    {
                                        client.request_state = false;
                                        list_ready.Add(client);
                                        tot_reject_ACNT++;
                                    }
                                    else
                                    {
                                        q37.Enqueue(client);
                                    }
                                }
                            }
                        }
                    }
                }
                tot_queue_count1 += q12.Count;
                tot_queue_count2 += q37.Count;
                global_time++;
            }
            //  */
            foreach (Request client in list_ready)
            {
                textBox5.Text += client.ID + " " + client.operation + " " + client.start_time + " " + client.service_time + " " + client.request_state + "\r\n";
            }
            textBox6.Text = tot_reject_XCHG.ToString();
            textBox7.Text = tot_reject_ACNT.ToString();

            avr_queue_count1 = Math.Round(tot_queue_count1 / global_time, 3);
            textBox8.Text    = avr_queue_count1.ToString();
            avr_queue_count2 = Math.Round(tot_queue_count2 / global_time, 3);
            textBox9.Text    = avr_queue_count2.ToString();
            textBox3.Text    = global_time.ToString();
        }
コード例 #20
0
ファイル: Cmo.cs プロジェクト: sskhaustov/Bank_Model_cs
 //генерация заявки
 private Request create_request()
 {
     int caser;
     caser = rnd.Next(4); //тип заявки выбирается случайным образом
     switch (caser)
     {
         case 0:
             RT = request_type.ACNT;
             time = 30;
             tot_acnt++;
             break;
         case 1:
             RT = request_type.CARD;
             time = 80;
             tot_card++;
             break;
         case 2:
             RT = request_type.CRED;
             time = 60;
             tot_cred++;
             break;
         case 3:
             RT = request_type.XCHG;
             time = 50;
             tot_xchg++;
             break;
     }
     Request r = new Request(ID++, time, true, RT);
     return r;
 }