用于在列表中查找Book的C#方法

时间:2017-05-26 07:39:00

标签: c#

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

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

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

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

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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 using System.Threading.Tasks;

namespace ConsoleApplication9
{

    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(title, author);
            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);
        }
    }

}

3 个答案:

答案 0 :(得分:0)

在你的&#34; findBook&#34;您正在创建一个新的图书对象两次,而不是返回任何内容。

你可能想要这样的东西:

public Book findBook(string id)
{
    return books.Find(x => x.ID == id);
}

如果我们打破这个:

&#34;公共&#34;是&#34; Access Modifier&#34;并描述了谁可以访问您的方法。

&#34;图书&#34;是我们要从方法返回的对象类。当我们正在寻找一本书时,在这里返回Book类的实例是有意义的。

&#34; findBook&#34;是你方法的名称。

&#34;(string id)&#34;在大括号中,您声明了方法作为输入所使用的变量。我们声明我们需要一个&#34;字符串&#34;并给它起名字&#34; id&#34;。

最后要调用此方法,我们可以使用代码:

Book myBook = findBook("xy");

答案 1 :(得分:0)

public Book findBook(string title, string author)
{
    Book result = null;
    foreach(Book b in books)
    {
        if(b.title == title && b.author == author)
        {
            result = b;
            break;
        }
    }
    return result;
}

也可能有用,检查一本书是否已经存在

public bool hasBook(string title, string author)
{
    return (findBook(title, author) != null);
}

答案 2 :(得分:0)

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

        public void addBook(string title, string author)
        {
            var bookQuantity = int.Parse(Console.ReadLine());


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

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

                books.Add(new Book() { title = btitle, author = bauthor, ID = x + 1, isbn = x + 1 });
            }
        }


        public void findBook()
        {
            Console.WriteLine("Enter ID:");
            var id = int.Parse(Console.ReadLine());

            Book result = books.FirstOrDefault((book => book.ID == id));
        }

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

        public void removeBook()
        {
            Console.WriteLine("Enter ID:");
            var id = int.Parse(Console.ReadLine());
            var temp = books.FirstOrDefault(book => book.ID == id);
            if (temp != null)
                books.Remove(temp);
        }
    }

    public class Book
    {
        public string title { get; set; }
        public string author { get; set; }
        public int isbn { get; set; }
        public int ID { get; set; }

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

这将解决您的所有功能