moClay
@moClay
учусь всему

Как добавить метод добавления книг?

Допустим я написал программу из 3-х классов. 1-ый класс с 3-мя параметрами: название книги, ее автора и год издания

using System;
using System.Collections.Generic;
using System.Text;

namespace lab1._1
{
    class Book
    {
        public string name;
        public string author;
        public int year;
        public int quantity;
        public Book(string name, string author, int year, int quantity)
        {
            this.name = name;
            this.author = author;
            this.year = year;
            this.quantity = quantity;
        }
        public Book()
        {
            name = "Евгений Онегин";
            author = "А.С. Пушкин";
            year = 1833;
            quantity = 4;
        }
        public void GetInformation()
        {
            Console.WriteLine("книга '{0}' автор {1} была издана в {2} году, колличество экземпляров: {3}", name,
            author, year, quantity);
        }
    }
}


так же есть класс library для хранения книг в коллекции book

using System;
using System.Collections.Generic;
using System.Text;

namespace lab1._1
{
    class library
    {
        public List<Book> books = new List<Book> { };
        private string filterAuthor;
        public List<Book> fnd(string author)
        {
            filterAuthor = author;
            List<Book> res = books.FindAll(PredicateAuthor);
            return res;
        }
        private bool PredicateAuthor(Book bk)
        {
            if (bk.author == filterAuthor)
                return true;

            else
                return false;
        }
}
}


и главная программа где добавляются книги

namespace lab1._1
{
    class Program
    {
        static void Main(string[] args)
        {
            Book b1 = new Book("Война и мир", "Л.Н. Толстой", 1869, 6);
            Book b2 = new Book();
            Book b3 = new Book("Филипок", "Л.Н. Толстой", 1875, 7);
            Book b4 = new Book();
            Book b5 = new Book("Отцы и дети", "Л.Н. Толстой", 1999, 3);
            Book b6 = new Book();
            library bibl1 = new library(); // создание новой библиотек
            bibl1.books.Add(b1); // добавление книг в коллекцию библиотеки
            bibl1.books.AddRange(new Book[] { b2, b3, b4, b5 });
            List<Book> res = bibl1.fnd("Л.Н. Толстой");

            foreach (Book b in res)
            {
                b.GetInformation();
            }
            Console.ReadKey();

           
        }

    }
}


Вопрос состоит в следующем: как добавить в класс library метод с помощью которого можно добавлять книги и выводить их в главной программе ( Program ). Ниже прикрепляю свои неудачные попытки это сделать

1-ая

public void Add_book(string name, string author, int year, int quantity)
        {
               string n = name;
               string a = author;
               int y = year;
               int q = quantity;
               Console.Write("Введите название: ");
               n = Console.ReadLine();
               Console.Write("Введите автора: ");
               a = Console.ReadLine();
               Console.Write("Введите год: ");
               y = int.Parse(Console.ReadLine());
               Console.Write("Введите колличество: ");
               q = int.Parse(Console.ReadLine());
               //List<Book> ser = new Book() { name = n, author = a, year = y, quantity = q };
               return;
        }


2-ая

public void Add_book(string[] arg)
        {
            Book vvod = new Book();
            Console.Write("Введите название: ");
            vvod.name = Console.ReadLine();
            Console.Write("Введите автора: ");
            vvod.author = Console.ReadLine();
            Console.Write("Введите год: ");
            vvod.year = int.Parse(Console.ReadLine());
            Console.Write("Введите колличество: ");
            vvod.quantity = int.Parse(Console.ReadLine());
        }


3-я

public void Add_new()
        {
            List<Book> parts = new List<Book>();
            parts.Add(new Book() { name = "crank arm", author = "dsds", year = 1312, quantity = 5 });
            parts.Add(new Book() { name = "аофлвы", author = "Л.Н. Толстой", year = 1333, quantity = 10 });

            foreach (Book aPart in parts)
            {
                Console.WriteLine(aPart);
            }
        }


P.S. простите если не получилось красиво вставить код не так давно на этой платформе. Заранее спасибо :3
  • Вопрос задан
  • 651 просмотр
Решения вопроса 1
Morpheus_God
@Morpheus_God
Как то сложно все у вас выходит.
Если хотите сделать некую модель библиотеки над книгами то как вариант, тут не конечное решение вашей проблемы, но может натолкнет вас.
Есть модель книги
public class Book
    {
        public string Name { get; set; }
        public string Author { get; set; }
    }

Есть класс обертка над списком(Библиотекой). Тут вы можете реализовать любые методы для фильтрации и вывода нужной вам информации. Как пример я описал метод добавления книги.
public  class Library
    {
        private List<Book> books;

        public Library()
        {
            books = new List<Book>();
        }

        public IEnumerable<Book> GetAllBooks { 
            get
            {
                return books;
            }
         }

        public void AddBook(Book b)
        {
            books.Add(b);
        }

    }

Ну и место где все это связывается и выводится
class Program
    {
        static void Main(string[] args)
        {
            var library = new Library();

            library.AddBook(new Book { Author = "Пушкин", Name = "Руслан и Людмила" });
            library.AddBook(new Book { Author = "Булгаков", Name = "Мастер и Маргарита" });


            foreach(var book in library.GetAllBooks)
            {
                Console.WriteLine($"{book.Author} {book.Name}");
            }


            Console.ReadLine();

        }
    }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы