Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.97/29: Рейтинг темы: голосов - 29, средняя оценка - 4.97
0 / 0 / 0
Регистрация: 21.06.2021
Сообщений: 175

Программа "Библиотека"

02.10.2021, 20:38. Показов 5861. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать программу "Библиотека"
В библиотеке должен быть каталог книг (изначально в каталоге 6 книг). Должна быть возможность добавить книгу в каталог, исключить из каталога, вывести содержимое каталога по алфавиту (по автору или по названию книги), вывести список книг определенного автора, найти книгу в списке по слову или по нескольким словам в названии.
Книгу можно "взять почитать" из библиотеки на определенное количество дней, при этом в журнал должно записываться кто и на сколько дней какую книгу взял из библиотеки.
У каждой книги должен быть параметр, показывающий количество дней, которое книга была у читателей.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 class Program
    {
        static void Main(string[] args)
        {
            InitializeBookList();
            Console.ReadKey();
          
        } 
 
        public static List<KatalogBook> books; 
 
        public static void InitializeBookList()
        {
            books = new List<KatalogBook>();
            books.AddRange(new[]
            {
              new KatalogBook(0, "Джоан Роулинг", "Гарри Поттер", 150, DateTime.Today),
              new KatalogBook(1, "Джек Лондон", "Любовь к жизни", 350, DateTime.Today),
              new KatalogBook(2, "Антуан де Сент - Екзюпери", "Маленький принц", 550, DateTime.Today),
              new KatalogBook(3, "Артур Голден", "Мемуары Гейши", 750, DateTime.Today),
              new KatalogBook(4, "Рей Бредбери", "451 градус по Фаренгейту", 950, DateTime.Today),
              new KatalogBook(5, "Стивен Кинг", "Темная башня", 1150, DateTime.Today)
            });
 
        }
    }


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
namespace Библиотека
{
    class KatalogBook
    {
        public int ID { get; set; }
        public string Author { get; set; }
        public string Name { get; set; }
        public DateTime UsingDay{ get; set; }
        public int PageNumber { get; set; }
 
        public KatalogBook(int id, string author, string name, int pageNumber, DateTime day)
        {
            ID = id;
            Author = author;
            Name = name;
            PageNumber = pageNumber;
            UsingDay = day;
        }
    }
}

Вопрос: в том ли направлении идет движение? И как сделать сортировку по автору и поиск книги по слову?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.10.2021, 20:38
Ответы с готовыми решениями:

Программа библиотека
Доброе утро. Друзья, помогите, пожалуйста, написать код на C#. Задание: Дан каталог книг. Про книгу известно: автор, название, год...

Программа на С# и библиотека на C++ с ассемблерной вставкой
Есть программа на С# Windows Forms Небольшую часть программы (вычисления) нужно написать на ассемблере, т.к. важна скорость...

Как сделать, чтобы при отсутствии библиотеки программа писала "Библиотека отсутствует"?
C# Как сделать что-бы при отсутствии библиотеки программа писала например &quot;библиотека отсутствует&quot; а не выдавала необработанное...

34
0 / 0 / 0
Регистрация: 21.06.2021
Сообщений: 175
04.10.2021, 13:12  [ТС]
Студворк — интернет-сервис помощи студентам
ipsorokin, это препод показал "огрызок того, как правильно". Ну я начала его писать и оно у меня все красное((((

Добавлено через 33 секунды
ipsorokin, скинул в общий чат вчнра. Тип помочь нам
0
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
04.10.2021, 13:21
Цитата Сообщение от HatakeIra Посмотреть сообщение
Ну я начала его писать и оно у меня все красное((((
Ну так List<T>, где Т - это то, из чего будет состоять лист. Если List<Book>, значит лист состоит из объектов Book (в данном случае это экземпляры класса Book).
0
0 / 0 / 0
Регистрация: 21.06.2021
Сообщений: 175
04.10.2021, 13:35  [ТС]
ipsorokin, домой прийду буду делать дальше)
И правильнее))))

Добавлено через 9 минут
ipsorokin, прост угнетает, сдаю задание, что разбираю с вами - х.ерня, сдаю задание, что делаю сама - х.ерня. Переделай.
Вот вчера психанула и поросила скинуть в чат, его виденее программы.(
0
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
04.10.2021, 13:42
Цитата Сообщение от HatakeIra Посмотреть сообщение
домой прийду буду делать дальше)
И правильнее))))
Делайте уж как изначально планировали - с наследованием, Catalog от List<Book>. Единственное, что можете позаимствовать, так это класс меню, ну и модифицировать его под ситуацию свою.
0
0 / 0 / 0
Регистрация: 21.06.2021
Сообщений: 175
04.10.2021, 13:52  [ТС]
ipsorokin, окей))
0
0 / 0 / 0
Регистрация: 21.06.2021
Сообщений: 175
05.10.2021, 15:32  [ТС]
ipsorokin, угайте что? А наследование низяя. Сказали делать из того огрызка кода, что скинули)
0
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
05.10.2021, 16:09
Цитата Сообщение от HatakeIra Посмотреть сообщение
Сказали делать из того огрызка кода, что скинули)
Единственное правильное решение?

Добавлено через 14 минут
HatakeIra, ну тогда сделайте без него. Начните с каталога, используйте его имя если нужно.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Catalog{
   private List<Book> books;
   public Catalog(string name)
   {
      Name=name;
      books = newList<Book>();
   }
   public string Name {get;}
   public List<Book> Books => books;
 
   /* Ниже методы для удаления/добавления в каталог и т.д
    * все это делать над books
    */
}
Если каталогов должно быть несколько, тогда создайте библиотеку
C#
1
2
3
4
5
6
class Library{
   private List<Catalog> catalogs;
   public List<Catalog> Catalogs =>catalogs;
 
   // Ниже методы для удаления/добавления в библиотеку и т.д 
}
Сложность может оказать в том, что извне Books и Catalogs будут доступны только для чтения. Соответсвенно все действия связанные с их изменениями должны буть внутри класса, где они находятся.
1
0 / 0 / 0
Регистрация: 21.06.2021
Сообщений: 175
05.10.2021, 22:35  [ТС]
ipsorokin, в процессе завершения)
Да преподаватель сказал, что код должен быть понятен и прост. А у меня с наследием и лямбда и аутами не просто и не понятно(((
0
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
05.10.2021, 22:41
HatakeIra, наследование, на которое я тогда не обратил внимания, было не более чем, условно, переменная
C#
1
2
class Catalog : List<Book> // это
List<Book> Catalog = new() // и это одно и то же
Цитата Сообщение от HatakeIra Посмотреть сообщение
мямбда
ауты ладно, а мямбды то за что.
0
0 / 0 / 0
Регистрация: 21.06.2021
Сообщений: 175
05.10.2021, 23:11  [ТС]
ipsorokin, я потом по мимо этого листа, создала целый класс наследников))
Ахах
За то, что "МЫ ТЫКОЕ НЕ ПРОХОДИЛИ"
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3460 / 2781 / 575
Регистрация: 04.09.2018
Сообщений: 8,743
Записей в блоге: 3
07.10.2021, 12:10
HatakeIra, странный у вас учебный процесс... Задание явно намекает на механизм наследования, и, обычно, такие задания как-раз и дают для закрепления понимания наследования классов. А у вас получается вы слишком много чего не проходили. Это как писать тригонометрический калькулятор используя только +/-. Потому что sin и cos еще не проходили
0
0 / 0 / 0
Регистрация: 21.06.2021
Сообщений: 175
07.10.2021, 13:33  [ТС]
wizard41, вот по этому я и туплю. Ибо хз чего и куда((

C#
1
2
3
4
5
6
7
8
 class Program
    {
        static void Main(string[] args)
        {
            Library library = new Library("'3 cats & 3 tails'");
            Menu.Start(library);
        }
    }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
class Book
    {
        public string Author;
        public string Title;
        public bool IsAvailable;
 
        public Book(string author, string title)
        {
            Author = author;
            Title = title;
            IsAvailable = true; // этот параметр будет изменяться когда книгу берут из библиотеки, изначально все true(криво оно меняется)
        }
    }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
 class Library
    {
        public string LibraryName;
        public List<Book> ListOfBooks = new List<Book>()
        {
                {new Book("J.K. Rowling", "Harry Potter") },
                {new Book("Antoine de Saint-Exupery", "The Little Prince") },
                {new Book("Mark Levin", "American Marxism") },
                {new Book("Ray Bradbury", "Fahrenheit 451") },
                {new Book("Stephen King", "The Dark Tower") },
 
        };
        public List<Reader> Ledger = new List<Reader>();
 
        public Library(string libraryName)
        {
            LibraryName = libraryName;
        }
 
        public List<Book> SearchBook(string name)
        {
            // создаем новый лист и записываем в него книги если они содержат введеную для поиска подстроку
            List<Book> newList = new List<Book>();
 
            foreach (var book in ListOfBooks)
            {
                if (book.Title.ToLower().Contains(name.ToLower()))
                {
                    newList.Add(book);
                }
            }
            return newList;
        }
 
        public void RemoveReader(int IndexOfReaderToRemove)
        {
            Ledger.RemoveAt(IndexOfReaderToRemove);
        }
 
        public List<Book> SortByAuthor()
        {
            // возвращает BookLedger отсортированный по возрастанию в имени автора
            return ListOfBooks.OrderBy(book => book.Author).ToList();
        }
 
        public List<Book> SortByTitle()
        {
            // возвращает BookLedger отсортированный по возрастанию в названии книги
            return ListOfBooks.OrderBy(book => book.Title).ToList();
        }
 
        public void AddBook(string author, string bookTitle)
        {
            // тихонько добавляет книгу в лист
            ListOfBooks.Add(new Book(author, bookTitle));
        }
 
        public void RemoveBook(string author, string bookTitle)
        {
            // тут мы перебираем все книги пока не совпадёт и автор и название. Проверяем что в результате перебора совпало чтото {toRemove} = true и только тогда удаляем из листа
            int i = 0;
            int elementIdToRemoveFromLedger = 0;
            bool toRemove = false;
            foreach (var book in ListOfBooks)
            {
                if (book.Author == author && book.Title == bookTitle)
                {
                    elementIdToRemoveFromLedger = i;
                    toRemove = true;
                    break;
                }
                i++;
            }
            if (toRemove == true)
            {
                if (ListOfBooks[elementIdToRemoveFromLedger].IsAvailable)
                {
                    ListOfBooks.RemoveAt(elementIdToRemoveFromLedger);
                    Console.WriteLine("Book is removed.");
                }
                else
                {
                    Console.WriteLine("Someone is reading this book. Wait tiil it return to library!");
                }
            }
            else
            {
                Console.WriteLine("Nothing found, nothing removed.");
            }
        }
    }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
class Menu
    {
        static public void Start(Library library)
        {
            int day = 1;
            while (true)
            {
                Console.Clear();
                Console.WriteLine($"Day: {day}. Welcome to {library.LibraryName} Library! \n");
 
                //ChooseMenuPoint(ourLibrary);
                switch (AskMainMenuPoint())
                {
                    case 1:
                        TheListOfBooks(library);
                        break;
                    case 2:
                        SearchBook(library);
                        break;
                    case 3:
                        SortByAuthor(library);
                        break;
                    case 4:
                        SortByTitle(library);
                        break;
                    case 5:
                        AddBook(library);
                        break;
                    case 6:
                        RemoveBook(library);
                        break;
                    case 7:
                        TakeBook(library);
                        break;
                    case 8:
                        ShowStatistic(library);
                        break;
                    case 9:
                        Environment.Exit(0);
                        break;
                }
                CheckAvaliablityCounters(library);
                day++;
            }
        }
 
        static public void CheckAvaliablityCounters(Library library)
        {
            // каждый раз когда цикл основного меню заканчивается - прибавляем +1 день и умньшаем срок в чтении всех книг на 1
            // если оставшийся срок книги у читателя = 0 то удаляем
            int readerNumber = 0;
            if (library.Ledger.Count > 0)
            {
                for (int i = 0; i < library.Ledger.Count; i++)
                {
                    if (library.Ledger[i].LeftTerm == 0)
                    {
                        int getBookIndex = SearchBookIndexByNameAndAuthor(library, library.Ledger[i].Book.Title, library.Ledger[i].Book.Author) - 1;
                        if (getBookIndex >= 0 && getBookIndex < library.ListOfBooks.Count)
                        {
                            library.ListOfBooks[getBookIndex].IsAvailable = true;
                        }
                        library.RemoveReader(i);
                        i--;
                    }
                    else
                    {
                        library.Ledger[i].LeftTerm--;
                    }
                    readerNumber++;
                }
            }
            else
            {
                foreach (var book in library.ListOfBooks)
                {
                    book.IsAvailable = true;
                }
            }
        }
 
        static public void TakeBook(Library library)
        {
            string ReaderName;
            int bookIndexUserChosen;
            int term;
            // display all books with isAvaliable = true
            if (TheListOfAvaliableBooks(library) > 0)
            {
                // ask book name and get her index in List of avaliable Books
                bookIndexUserChosen = ChooseBook(library) - 1;
                //get index of chosen book in global list (not in avaliable one)
                int BookIndexInGlobalList = GetBookIndexInGlobalIndex(library, bookIndexUserChosen);
                // ask term (how long would you like to read?)
                term = AskTermToReadBook();
                // ask user name 
                ReaderName = ChooseName(library);
                //check if name is a new or is in the list of readers (read something already)
                while (!CheckNameIfExist(library, ReaderName))
                {
                    Console.WriteLine("\n This reader is already reading some books. You are not allowed to get more!\n");
                    ReaderName = ChooseName(library);
                }
                // Add Reader + book + reading term to Ledger.List (list of readers)
                library.Ledger.Add(new Reader(ReaderName, library.ListOfBooks[BookIndexInGlobalList], term));
                // Change book parameter isAvaliable to False in list of books
                library.ListOfBooks[bookIndexUserChosen].IsAvailable = false;
            }
            else
            {
                Console.WriteLine("\n No books avaliable right now, try your luck tomorrow :)");
            }
        }
 
        static public int GetBookIndexInGlobalIndex(Library library, int bookIndexUserChosen)
        {
            int indx = 0;
            int kindx = 0;
            foreach (var book in library.ListOfBooks)
            {
                if (book.IsAvailable == true)
                {
                    indx++;
                }
                if (bookIndexUserChosen == indx)
                {
                    return kindx;
                }
                kindx++;
            }
            return bookIndexUserChosen;
        }
 
        static public int AskTermToReadBook()
        {
            Console.WriteLine("\n How long would you like to read this book? [1-14 days] Select and press \"Enter\":");
            int termOutput;
            bool isNum = int.TryParse(Console.ReadLine(), out termOutput);
 
            while (!isNum || (termOutput < 1 || termOutput > 14))
            {
                Console.WriteLine("\n Wrong inout! Try again[1-14 days] Select and press \"Enter\":");
                isNum = int.TryParse(Console.ReadLine(), out termOutput);
            }
            return termOutput;
        }
 
        static public bool CheckNameIfExist(Library library, string name)
        {
            foreach (var reader in library.Ledger)
            {
                if (name == reader.Name)
                {
                    return false;
                }
            }
            return true;
        }
 
        static public int TheListOfAvaliableBooks(Library library)
        {
            int indx = 1;
            Console.WriteLine("\n All avaliable books in library:\n");
            foreach (var book in library.ListOfBooks)
            {
                if (book.IsAvailable == true)
                {
                    Console.WriteLine(indx + "." + book.Author + "-" + book.Title);
                    indx++;
                }
            }
            return indx;
        }
 
        static public string ChooseName(Library library)
        {
            bool check = false;
            Console.WriteLine("\n Enter name [2+ length, latin chars only] and press \"Enter\":");
            string name = Console.ReadLine();
            name = name.Trim(new char[] { ' ' });
            for (int i = 0; i < name.Length; i++)
            {
                if (name.ToLower()[i] >= 'a' && name[i] <= 'z' && name[i] != ' ')
                {
                    check = true;
                }
                else
                {
                    check = false;
                    break;
                }
            }
            while (name.Length < 2 || !check)
            {
                Console.WriteLine("\n Wrong input! Enter again and press \"Enter\":");
                Console.Beep(330, 500);
                name = Console.ReadLine();
                name = name.Trim(new char[] { ' ' });
                for (int i = 0; i < name.Length; i++)
                {
                    if (name.ToLower()[i] >= 'a' && name[i] <= 'z' && name[i] != ' ')
                    {
                        check = true;
                    }
                    else
                    {
                        check = false;
                        break;
                    }
                }
            }
            return name;
        }
 
        static public int ChooseBook(Library library)
        {
            // generate list of avaliable books
            List<Book> avaliableBooksList = new List<Book>();
            foreach (var book in library.ListOfBooks)
            {
                if (book.IsAvailable == true)
                {
                    avaliableBooksList.Add(book);
                }
            }
            //user input number in list of avaliable books
            Console.WriteLine($"\n Enter number of book [1-5] and press \"Enter\":");
            string input = Console.ReadLine();
            int.TryParse(input, out int numInput);
            while (!int.TryParse(input, out numInput) || numInput > avaliableBooksList.Count || numInput < 1)
            {
                Console.WriteLine("\n Bad input! Try again. Enter number [1-5] and press \"Enter\":");
                input = Console.ReadLine();
            }
            int globalIndex = SearchBookIndexByNameAndAuthor(library, avaliableBooksList[numInput - 1].Title, avaliableBooksList[numInput - 1].Author);
            return globalIndex;
        }
 
        static public int SearchBookIndexByNameAndAuthor(Library library, string name, string author)
        {
            int indx = 0;
            foreach (var book in library.ListOfBooks)
            {
                if (book.Title == name && book.Author == author)
                {
                    return indx + 1;
                }
                indx++;
            }
            return 0;
        }
 
        static public int AskMainMenuPoint()
        {
            Console.WriteLine($"\n Please select an option by number [1-9] and press \"Enter\": \n"
                + "1 - The list of books in our library \n"
                + "2 - Search book \n"
                + "3 - Sort books by author \n"
                + "4 - Sort books by title \n"
                + "5 - Add book \n"
                + "6 - Remove book \n"
                + "7 - Take book \n"
                + "8 - Show book statistic\n"
                + "9 - Exit");
 
            int menuPoint;
            bool isNum = int.TryParse(Console.ReadLine(), out menuPoint);
 
            while (!isNum || (menuPoint < 1 || menuPoint > 9))
            {
                Console.WriteLine("\n Wrong inout! Try again. Select options by number [1-9] and press \"Enter\":");
                isNum = int.TryParse(Console.ReadLine(), out menuPoint);
            }
            return menuPoint;
        }
 
        static public void TheListOfBooks(Library library)
        {
            Console.WriteLine("\n All books in library:\n");
            foreach (var book in library.ListOfBooks)
            {
                Console.WriteLine(book.Author + " - " + book.Title + " [" + book.IsAvailable + "]");
            }
            Console.WriteLine("\n Press any key to continue...");
            Console.ReadKey(true);
        }
 
        static public void SearchBook(Library library)
        {
            string name = " ";
            while (name == " ")
            {
                Console.Write("\n Enter book title to search and press \"Enter\":");
                name = Console.ReadLine().Trim();
                foreach (char x in name)
                {
                    if (!char.IsLetter(x))
                    {
                        name = " ";
                        Console.WriteLine("\n Wrong title. Try again.");
                        break;
                    }
                }
                if (name.Length == 0)
                {
                    name = " ";
                    Console.WriteLine("\n Title is empty.");
                    continue;
                }
            }
 
           
            List<Book> newList = library.SearchBook(name);
            if (newList.Count > 0)
            {
                Console.WriteLine("\n Found such books:");
                foreach (var book in newList)
                {
                    Console.WriteLine(book.Author + " - " + book.Title + " [" + book.IsAvailable + "]");
                }
            }
            else
            {
                Console.WriteLine("\n Nothing found!");
            }
            Console.WriteLine("\n Press any key to continue...");
            Console.ReadKey(true);
        }
 
        static public void SortByAuthor(Library library)
        {
            Console.WriteLine("\n All books in library sorted by Author:\n");
            foreach (var book in library.SortByAuthor())
            {
                Console.WriteLine(book.Author + " - " + book.Title + " [" + book.IsAvailable + "]");
            }
            Console.WriteLine("\n Press any key to continue...");
            Console.ReadKey(true);
        }
 
        static public void SortByTitle(Library library)
        {
            Console.WriteLine("\n All books in library sorted by Title:\n");
            foreach (var book in library.SortByTitle())
            {
                Console.WriteLine(book.Author + " - " + book.Title + " [" + book.IsAvailable + "]");
            }
            Console.WriteLine("\n Press any key to continue...");
            Console.ReadKey(true);
        }
 
        static public void AddBook(Library library)
        {
            string author = " ";
            while (author == " ")
            {
                Console.Write("\n Enter book author to add and press \"Enter\":");
                author = Console.ReadLine().Trim();
                foreach (char x in author)
                {
                    if (!char.IsLetter(x))
                    {
                        author = " ";
                        Console.WriteLine("\n Wrong author. Try again.");
                        break;
                    }
                }
                if (author.Length == 0)
                {
                    author = " ";
                    Console.WriteLine("\n Author is empty.");
                    continue;
                }
            }
            string title = " ";
            while (title == " ")
            {
                Console.Write("\n Enter book title to add and press \"Enter\":");
                title = Console.ReadLine().Trim();
                foreach (char x in title)
                {
                    if (!char.IsLetter(x))
                    {
                        title = " ";
                        Console.WriteLine("\n Wrong title. Try again.");
                        break;
                    }
                }
                if (title.Length == 0)
                {
                    title = " ";
                    Console.WriteLine("\n Title is empty.");
                    continue;
                }
            }
            library.AddBook(author, title);
            TheListOfBooks(library);
        }
 
        static public void RemoveBook(Library library)
        {
            string author = " ";
            while (author == " ")
            {
                Console.Write("\n Enter book author to remove and press \"Enter\":");
                author = Console.ReadLine().Trim();
                foreach (char x in author)
                {
                    if (!char.IsLetter(x))
                    {
                        author = " ";
                        Console.WriteLine("\n Wrong author. Try again.");
                        break;
                    }
                }
                if (author.Length == 0)
                {
                    author = " ";
                    Console.WriteLine("\n Title is empty.");
                    continue;
                }
            }
            string title = " ";
            while (title == " ")
            {
                Console.Write("\n Enter book title to remove and press \"Enter\":");
                title = Console.ReadLine().Trim();
                foreach (char x in title)
                {
                    if (!char.IsLetter(x))
                    {
                        title = " ";
                        Console.WriteLine("\n Wrong title. Try again.");
                        break;
                    }
                }
                if (title.Length == 0)
                {
                    title = " ";
                    Console.WriteLine("\n Title is empty.");
                    continue;
                }
            }
            library.RemoveBook(author, title);
            TheListOfBooks(library);
        }
 
        static public void ShowStatistic(Library library)
        {
            int avaliable = 0;
            foreach (var book in library.ListOfBooks)
            {
                if (book.IsAvailable == true) { avaliable++; }
            }
            Console.WriteLine($"\n There are {library.ListOfBooks.Count} books in total: {avaliable} avaliable and {library.ListOfBooks.Count - avaliable} in use.\n");
            if (library.Ledger.Count > 0)
            {
                int index = 1;
                foreach (var reader in library.Ledger)
                {
                    Console.WriteLine($"{index}. User {reader.Name} got book \"{reader.Book.Title}\" wrote by \"{reader.Book.Author}\" for {reader.Term} days and {reader.LeftTerm} days more left!");
                    index++;
                }
            }
            Console.WriteLine("\n Press any key to continue...");
            Console.ReadKey(true);
        }
    }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Reader
    {
        public string Name;
        public Book Book;
        public int Term; // на какой срок
        public int LeftTerm;
 
        public Reader(string name, Book book, int term)
        {
            Name = name;
            Book = book;
            Term = term;
            LeftTerm = term;
        }
    }
Поставили 6 из 10 возможных. Сказали, что можно лучше и проще. Я расстроена и желание что либо делать нет(

Добавлено через 1 минуту
А у нас наследование только упоминалось. И все. Тип есть такая штука - идем дальше.....
0
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
07.10.2021, 13:38
Цитата Сообщение от HatakeIra Посмотреть сообщение
Сказали, что можно лучше и проще.
Вот им так же и отвечайте
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3460 / 2781 / 575
Регистрация: 04.09.2018
Сообщений: 8,743
Записей в блоге: 3
07.10.2021, 13:59
Цитата Сообщение от HatakeIra Посмотреть сообщение
А у нас наследование только упоминалось.
Зато, видимо, конструкции linq вы изучили углубленно?
0
0 / 0 / 0
Регистрация: 21.06.2021
Сообщений: 175
07.10.2021, 15:41  [ТС]
wizard41, да как сказать) мы изучили создание классов и их конструкторов))
А сегодня разбирали что такое стек и куча) ахаха
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.10.2021, 15:41

Программа - библиотека
Представим, что у вас есть небольшая библиотека, напишите программу для ориентации в этой библиотеке, с помощью которой вы можете: 1....

Не запускается программа (библиотека NTL)
Подключила библиотеку NTL. Запустила программу все работает. А начинаю объявлять переменную (ZZ a;) Программа зависает. Никаких ошибок не...

Программа Библиотека как запустить?
Program Biblioteka; uses crt; type knigi=record nom:integer; {номер книги} nazvanie: string ; {название книги} ...

Программа компилируется как библиотека
Темплэйт в про файле стоит апп. Но если скомпилировать и проверить запускной файл утилитой file, она выводит ELF 32-bit LSB shared...

Программа на С# и библиотека на C++ с ассемблерной вставкой
Есть программа на С# Windows Forms Небольшую часть программы (вычисления) нужно написать на ассемблере, т.к. важна скорость...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы Кратко. . .
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем **Полевые заметки о двухнедельной совместной работе**. . .
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru