需求
完整代码
Program.cs
using System;
// Program.cs
namespace ConsoleAppDemo
{
class MainClass
{
static void Main(string[] args)
{
// 解决打印中文乱码问题
Console.OutputEncoding = System.Text.Encoding.UTF8;
BookManager bm = BookManager.bookManager;
for (int i = 0; i < 10; i++) {
// 增加
bool result = bm.AddBook(new Book("航海王", 100, new Author("尾田荣一郎", Sex.Male, 45)));
if (result)
{
Console.WriteLine("=========添加图书成功=========");
}
else
{
Console.WriteLine("=========添加图书失败=========");
}
}
// 查询所有
foreach (Book item in bm.QueryAllBook())
{
if (item != null)
{
Console.WriteLine("===========查询所有-start===========");
Console.WriteLine(item.name);
Console.WriteLine(item.price);
Console.WriteLine(item.author.name);
Console.WriteLine(item.author.sex);
Console.WriteLine(item.author.age);
Console.WriteLine("============查询所有-end============");
}
}
// 根据图书名称查询
foreach (Book item in bm.QueryBookName("航海王"))
{
if (item != null)
{
Console.WriteLine("===========据书名查询-start===========");
Console.WriteLine(item.name);
Console.WriteLine(item.price);
Console.WriteLine(item.author.name);
Console.WriteLine(item.author.sex);
Console.WriteLine(item.author.age);
Console.WriteLine("============据书名查询-end============");
}
}
// 根据作者姓名称查询
foreach (Book item in bm.QueryAuthorName("尾田荣一郎"))
{
if (item != null)
{
Console.WriteLine("===========据作者查询-start===========");
Console.WriteLine(item.name);
Console.WriteLine(item.price);
Console.WriteLine(item.author.name);
Console.WriteLine(item.author.sex);
Console.WriteLine(item.author.age);
Console.WriteLine("============据作者查询-end============");
}
}
// 删除所有图书
bool delResult = bm.DeleteAllBook();
if (delResult)
{
Console.WriteLine("============删除成功============");
}
else
{
Console.WriteLine("============删除失败============");
}
// 查询所有
foreach (Book item in bm.QueryAllBook())
{
if (item != null)
{
Console.WriteLine("===========查询所有-start===========");
Console.WriteLine(item.name);
Console.WriteLine(item.price);
Console.WriteLine(item.author.name);
Console.WriteLine(item.author.sex);
Console.WriteLine(item.author.age);
Console.WriteLine("============查询所有-end============");
}
}
}
}
}
Data.cs
using System;
// Data.cs 数据
namespace ConsoleAppDemo
{
/// <summary>
/// 图书类
/// </summary>
class Book
{
public string name; // 书名
public double price; // 书价
public Author author; // 作者信息
public Book(string name, double price, Author author)
{
this.name = name;
this.price = price;
this.author = author;
}
}
/// <summary>
/// 性别 男 女
/// </summary>
enum Sex { Male, Female }
/// <summary>
/// 作者类
/// </summary>
class Author
{
public string name; // 作者
public Sex sex; // 性别
public uint age; // 年龄
public Author(string name, Sex sex, uint age)
{
this.name = name;
this.sex = sex;
this.age = age;
}
}
}
BookManager.cs
using System;
// BookManager.cs 数据管理类
namespace ConsoleAppDemo
{
/// <summary>
/// 单例 - 图书的管理类
/// </summary>
class BookManager
{
private BookManager() { }
public static readonly BookManager bookManager = new BookManager();
private static int capcity = 10; // 容量
public static Book[] allBooks = new Book[capcity]; // 存储所有书籍
private static int count = 0; // 记录存储书籍数量
/// <summary>
/// 添加图书
/// </summary>
/// <param name="book">图书信息</param>
/// <returns>是否添加成功</returns>
public bool AddBook(Book book)
{
if (count >= 10) return false;
allBooks[count++] = book;
return true;
}
/// <summary>
/// 查询所有图书
/// </summary>
/// <returns>图书数组</returns>
public Book[] QueryAllBook()
{
return allBooks;
}
/// <summary>
/// 根据书名查询图书
/// </summary>
/// <param name="name">书名</param>
/// <returns>图书数组</returns>
public Book[] QueryBookName(string name)
{
int count = 0;
Book[] book = new Book[capcity];
foreach (Book item in allBooks)
{
if (item != null)
{
if (item.name == name)
{
book[count++] = item;
}
}
}
return book;
}
/// <summary>
/// 根据作者查询图书
/// </summary>
/// <param name="name">作者</param>
/// <returns>图书数组</returns>
public Book[] QueryAuthorName(string name)
{
int count = 0;
Book[] book = new Book[capcity];
foreach (Book item in allBooks)
{
if (item != null)
{
if (item.author.name == name)
{
book[count++] = item;
}
}
}
return book;
}
/// <summary>
/// 删除所有书籍
/// </summary>
/// <returns>是否删除成功</returns>
public bool DeleteAllBook()
{
// 或者将每个数组中元素置为null
for (int i = 0; i <= count; i++) {
allBooks[i] = null;
}
//allBooks = new Book[capcity];
count = 0;
return true;
}
}
}