C#方法,用于查找列表中的Book,以及从列表中删除Book

时间:2016-09-18 22:36:20

标签: c# list methods

我必须创建一个Library类,其中包含一个包含Title,Author和ID#的Books列表。我必须制作方法来添加书籍,按标题查找书籍,显示所有书籍以及删除书籍。

我的addBook()方法是否正确?

我的findBook()方法有一个错误,就是在Book类中创建一个构造函数但是已经有了一个构造函数。

此外,我真的不知道从列表中删除书籍的位置...我已经查找了从列表中删除项目的解决方案,但我真的不知道如何在我的程序中实现它。< / p>

我不了解很多东西,因为我的第一个大学课程CSE 1301很糟糕,我在1302年必须学习基本的东西以及更复杂的东西。

public class Library
{
    public string name;
    public List<Book> books = new List<Book>();

    public void addBook(string title, string author)
    {
        int bookQuantity;

        string btitle;
        string bauthor;

        bookQuantity = int.Parse(Console.ReadLine());

        for (int x = 0; x <= bookQuantity; x++)
        {
            Console.WriteLine("Enter Title:");
            btitle = Console.ReadLine();

            Console.WriteLine("Enter Author:");
            bauthor = Console.ReadLine();

            books.Add(new Book(btitle, bauthor));
        }
    }

    public void findBook()
    {
        var obj = new Book();
        obj.ID = "xy";
        string id = obj.ID;

        Book result = books.Find(x => x.ID == "xy");
    }

    public void displayBooks()
    {
        foreach (Book b in books)
        {
            Console.WriteLine(b.ToString());
        }
    }

    public void removeBook()
    {

    }

    public Library()
    {

    }
}

public class Book
{
    public string title;
    public string author;
    public int id;
    static int isbn;

    public string ID { get; set; }

    public void assignID()
    {
        id = isbn;
        isbn++;
    }

    public Book(string title, string author)
    {
        this.title = title;
        this.author = author;
    }

    public override string ToString()
    {
        return string.Format("Title: " + title, "\nAuthor: " + author, "\nISBN: " + id);
    }
}

2 个答案:

答案 0 :(得分:1)

方法不正确。它有一些缺陷: 1.它调用I / O方法从用户获取信息。但这不是这个功能应该做的。它的工作是为图书馆添加一本书。应该通过参数给出有关该书的信息,然后使用该信息构建一本新书并将其添加到内部列表中。没有其他的。你实际上拥有大部分代码,因此解决问题的方法就是删除一堆代码并重新编写剩下的代码。 2.函数说“添加书”,但实际上它根据用户输入添加了多本书,并忽略了传递给它的参数。一个函数应该说它做了什么,然后实际做到了。

同样适用于你的findBook()代码,它既不接受任何参数(它如何知道要查找的内容?)也不返回任何内容(无论它发现什么都被忽略,任何其他代码都不能使用)

您的代码还有许多其他问题,但我关注的是您提出的关于addBook()的问题。但是,一般情况下,如果你创建的函数可以执行他们所说的内容,获取参数并返回内容,不执行额外的工作或执行I / O操作,那么您可能可以自行改进代码。如果您有跟进问题,请告诉我。

答案 1 :(得分:-1)

你的构造函数必须是第一种方法......你有&#34; public void AssignId()&#34;作为第一种方法......编译器没有看到你的构造函数...在构造函数下面移动assignID,你的程序将编译...

至于remove方法,只需使用标题或isbn(您的选择或两者)遍历列表然后list.remove ...