我必须创建一个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);
}
}
}
答案 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);
}
}
这将解决您的所有功能