Создать класс "Печатное издание" с использованием ООП - C#
Формулировка задачи:
Требуется создать класс "Печатное издание", где есть название книги, ФИО автора, стоимость, оглавление.
Стоимость книги со временем меняется.
Для художественной литературы: первые 5 лет она равна стоимости покупки книги, следующие 5 лет уменьшается на 20% в год, пока не станет равной нулю, если возраст книги превышает 100 лет, то ее стоимость в k раз превышает первоначальную стоимость.
Для прочих книг: первые 5 лет она равна стоимости покупки книги, следующие 5 лет уменьшается на 20% в год, пока не станет равной нулю.
Решить эту задачу для учета 3 книг, выдаваемых различным читателям, возможна в случае порчи замена книги на книгу с не меньшей стоимостью.
Программа должна: показать не выданные книги;
Дать информацию о замене книг.
Я представляю как сделать этот класс, но решить задачу не могу.
ЗЫ. в качестве дополнительного поля еще можно использовать bool поле, которое будет отвечать за то, что книгу отдали на руки читателю.
Решение задачи: «Создать класс "Печатное издание" с использованием ООП»
textual
Листинг программы
using System; using System.Collections; using System.Collections.Generic; namespace PrintEdition { //Класс печатное издание public class PrintEdition { public decimal CostBook { get; private set; } public string NameBook { get; private set; } public string AuthorName { get; private set; } public string TableOfContents { get; private set; } private static IList _printBooks = new List<PrintEdition>(); public static IEnumerable PrintBooks { get { return ArrayList.ReadOnly(_printBooks); } } public PrintEdition IssueBook() { _printBooks.Remove(this); return this; } public PrintEdition(decimal costBook, string nameBook, string authorName, string tableOfContents, int printDateYear, bool isArtBook = false) { int intervalYears = DateTime.Now.Year - printDateYear; this.CostBook = GetCostOnBook(intervalYears, costBook, isArtBook); this.NameBook = nameBook; this.AuthorName = authorName; this.TableOfContents = tableOfContents; Console.WriteLine("Появилась новая книга:\n {0} - {1} - {2}, цена руб.: {3}", AuthorName, NameBook, TableOfContents, CostBook); } public static void AddBook(PrintEdition printEditionBook) { _printBooks.Add(printEditionBook); } public static void AddBooks(IEnumerable printEditionBook) { foreach (var printEdition in printEditionBook) _printBooks.Add(printEdition); } public static void ShowNotIssueBooks() { if (_printBooks.Count > 0) { Console.WriteLine("Список не выданных книг:"); foreach (PrintEdition printBook in _printBooks) { Console.WriteLine("Книга:\n {0} - {1} - {2}, цена руб.: {3}", printBook.AuthorName, printBook.NameBook, printBook.TableOfContents, printBook.CostBook); } } else { Console.WriteLine("Все книги были выданы."); } } private decimal GetCostOnBook(int intervalYears, decimal costBook, bool isArtBook) { if (IsCorrectIntervalInYears(intervalYears)) { if (intervalYears > 5 && intervalYears < 10) { int percentReductionCost = (intervalYears - 5)*20; int percentBalance = 100 - percentReductionCost; int realRatio = percentBalance/100; costBook = costBook*realRatio; } else if (intervalYears >= 10 && intervalYears <= 100 && isArtBook) { costBook = 0; } else if (intervalYears >= 10 && !isArtBook) { costBook = 0; } if (intervalYears > 100 && isArtBook) { Console.WriteLine( "Книга издавалась более 100 лет назад,\n введите коэффициент увеличения стоимости от первоначальной цены:"); int k; if(int.TryParse(Console.ReadLine(), out k)) { costBook = costBook * k; } } } return costBook; } private bool IsCorrectIntervalInYears(int intervalYears) { return intervalYears >= 0; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д