コード例 #1
0
        private void nextDayButton_Click(object sender, RoutedEventArgs e)     // клик по кнопке "следующий день работы"
        {
            if (CurrentDayOfWork < SystemOfBookStore.NumberOfDays)             // если день работы меньше числа дней работы магазина
            {
                RequestToPublisher request = DetermineWhichBooksAreRequired(); // создание заявки
                if (request.rangeOfBooks.Count > 0)
                {
                    SystemOfBookStore.NotifyPublishers(request); // уведомление издательств о новой заявке (получается, что заявка как бы отправляется в конце дня работы магазина)
                }

                CurrentDayOfWork++;
                if (CurrentDayOfWork == SystemOfBookStore.NumberOfDays)
                {
                    nextDay.Visibility         = Visibility.Hidden;  // если последний день работы, то кнопка "следующий день работы" скрывается,
                    resultOfTheWork.Visibility = Visibility.Visible; // а кнопка "результат работы" отображается
                }
                currentDay.Text = CurrentDayOfWork.ToString();
                MessageBox.Show("Next day of work of the bookstore.");
                foreach (RequestToPublisher req in SystemOfBookStore.requests.ToArray())
                {
                    foreach (var book in req.rangeOfBooks.Keys.ToArray())
                    {
                        if (req.rangeOfBooks[book][1] == CurrentDayOfWork)                                                                                                // просмотр заявок, если день привоза книги в заявке совпадает с текущим днем,то
                        {
                            MessageBox.Show(req.rangeOfBooks[book][0] + " copies of the book " + "''" + book.Name + "''" + " " + "of " + book.Author + " are received."); // делается сообщение о привозе экземпляров книги
                            SystemOfBookStore.booksInStore[book] += req.rangeOfBooks[book][0];                                                                            // увеличивается число экземляров книги в магазине на число привезенных экземпляров
                            req.rangeOfBooks.Remove(book);                                                                                                                // удаление книги из невыполненной заявки (она уже привезена)
                            if (req.rangeOfBooks.Count == 0)
                            {
                                SystemOfBookStore.requests.Remove(req); // если в заявке больше нет книг, то она удаляется
                            }
                        }
                    }
                }
                rangeOfBookstore.Clear();
                foreach (Book book in SystemOfBookStore.booksInStore.Keys)
                {
                    rangeOfBookstore.Text += book.ToString() + "number of copies: " + SystemOfBookStore.booksInStore[book] + "\r\n" + "\r\n"; // обновление информации о книгах в TextBox
                }

                foreach (var order in SystemOfBookStore.outstandingOrders.ToArray()) // просмотр невыполненных заказов сразу после привоза книг
                {
                    SellBooks(order);                                                // продать книги заказчику
                    if (order.OrderedBoooks.Count == 0)
                    {
                        SystemOfBookStore.outstandingOrders.Remove(order);
                    }                                                       // если в заказе больше нет книг, то он удаляется из списка невыполненных заказов
                }
            }
        }
コード例 #2
0
        private RequestToPublisher DetermineWhichBooksAreRequired()        // метод , определяющий, какие книги и сколько нужно закупить у издательств
        {
            RequestToPublisher newRequest = new RequestToPublisher();      // формирование новой заявки

            newRequest.DayWhenRequestWasMade = int.Parse(currentDay.Text); // определение дня отправления заявки
            foreach (Book book in SystemOfBookStore.booksInStore.Keys)
            {
                if (SystemOfBookStore.booksInStore[book] < SystemOfBookStore.NumberOfCopiesForRequest) // если число экземпляров книги меньше минимального и нужно заказать проивоз дополнительных экземпляров
                {
                    bool flag = true;
                    foreach (var request in SystemOfBookStore.requests)
                    {
                        if (request.rangeOfBooks.ContainsKey(book)) // если данная книга находится в невыполненных заявках, то заявку на нее снова не делаем
                        {
                            flag = false;
                            break;
                        }
                    }
                    if (flag)
                    {
                        newRequest.rangeOfBooks.Add(book, new int[] { 5, 100 });  // иначе добавляем в заявку информацию о книге (5-число заказываемых экземпляров, 100 - первоначальная установка дня привоза книги)
                        if (SystemOfBookStore.booksInStore[book] == 0)
                        {
                            foreach (var order in SystemOfBookStore.outstandingOrders)
                            {
                                if (order.DayWhenOrderWasMade == int.Parse(currentDay.Text)) // кроме того, если книга, которой недостаточно в магазине, присутствует еще  и в невыполненном заказе,
                                {
                                    if (order.OrderedBoooks.ContainsKey(book))
                                    {
                                        newRequest.rangeOfBooks[book][0] += order.OrderedBoooks[book];  // то прибавляем нужное для привоза кол-во экземпляров
                                    }
                                }
                            }
                        }
                    }
                }
            }


            return(newRequest);   //  метод возвращает заявку
        }