C#面向?qū)ο髮?shí)現(xiàn)圖書(shū)管理系統(tǒng)
本文實(shí)例為大家分享了C#面向?qū)ο髮?shí)現(xiàn)圖書(shū)管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
這個(gè)系統(tǒng)需要兩個(gè)類(lèi):class Book,class BookManager
首先先進(jìn)行對(duì)Book類(lèi)成員的聲明。
class Book
? ? {
? ? ? ? //數(shù)據(jù)
? ? ? ? string id;
? ? ? ? public string Id
? ? ? ? {
? ? ? ? ? ? get { return id; }
? ? ? ? ? ? set { id = value;}
? ? ? ? }
? ? ? ? //使用了lamda表達(dá)式, 跟上面的get/set等價(jià)
? ? ? ? public string Name { get => name; set => name = value; }
? ? ? ? string name;
? ? ? ? string author;
? ? ? ? float price;
? ? ? ? int page;
? ? ? ? public int Page { get; set; }
? ? ? ? public void print()
? ? ? ? {
? ? ? ? ? ? string str = string.Format("書(shū)名是{0},作者是{1},編號(hào)是{2},價(jià)格{3},頁(yè)數(shù){4}",
? ? ? ? ? ? ? ? name,author,id,price,page);
? ? ? ? ? ? Console.WriteLine(str);
? ? ? ? }
? ? }BookManager類(lèi)的聲明
//數(shù)據(jù)成員
int size;//容器的大小
? ? ? ? public int curIndex;//當(dāng)前存儲(chǔ)的位置
? ? ? ? Book[] books; //定義一個(gè)Book類(lèi)型的數(shù)組
?? ??? ? //函數(shù)成員
? ? ? ? public BookManager(int size)
? ? ? ? {
? ? ? ? ? ? curIndex = 0;
? ? ? ? ? ? this.size = size;
? ? ? ? ? ? //申請(qǐng)了一個(gè)容器,目前里面還沒(méi)有值
? ? ? ? ? ? books = new Book[size];
? ? ? ? }實(shí)現(xiàn)添加的方法
1、curIndex一開(kāi)始的位置是[0],將b的內(nèi)存地址存入數(shù)組中的第0位后,curIndex+1,這樣的話(huà)下一次存儲(chǔ)時(shí)會(huì)將數(shù)據(jù)存儲(chǔ)到第1位。
2、判斷數(shù)組的游標(biāo)是否大于容器大小, 大于則要進(jìn)行數(shù)組擴(kuò)容
public void addBook(Book b)//傳入Book的一個(gè)引用 b
? ? ? ? {
? ? ? ? ? ? books[curIndex] = b;//將b存入數(shù)組?
? ? ? ? ? ? curIndex++;
? ? ? ? ? ? if (curIndex>=size)//判斷數(shù)組的游標(biāo)是否大于容器大小, 大于則要進(jìn)行數(shù)組擴(kuò)容
? ? ? ? ? ? {
? ? ? ? ? ? ? ? size = size + size / 2;//將容器的大小擴(kuò)容增加原來(lái)的一半
? ? ? ? ? ? ? ? Book[] booksNew = new Book[size];//定義一個(gè)新的Book類(lèi)型數(shù)組 booksNew
? ? ? ? ? ? ? ? Array.Copy(books,booksNew, books.Length);//使用Copy函數(shù)將books數(shù)組里面的值賦值給booksNew,長(zhǎng)度為books的長(zhǎng)度?
? ? ? ? ? ? ? ? books = booksNew;
? ? ? ? ? ? }
? ? ? ? }重寫(xiě)刪除的文本,通過(guò)ID遍歷
public bool delBook(string id)
? ? ? ? {
? ? ? ? ? ? int findCurIndex = 0;
? ? ? ? ? ? bool isFind = false;
? ? ? ? ? ? for (int i = 0; i < curIndex; i++)//通過(guò)遍歷比較兩個(gè)id
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if (books[i].Id.Equals(id))
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? findCurIndex = i;
? ? ? ? ? ? ? ? ? ? isFind = true;
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? return false;
? ? ? ? }查找書(shū)籍方法
public Book find(string id)
? ? ? ? {
? ? ? ? ? ? if (string.IsNullOrEmpty(id))
? ? ? ? ? ? {
? ? ? ? ? ? ? ? return null;//返回空引用
? ? ? ? ? ? }
? ? ? ? ? ? for (int i = 0; i < curIndex; i++)//通過(guò)遍歷比較兩個(gè)id
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if (books[i]!=null&&books[i].Id.Equals(id))
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? return books[i];
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? return null;
? ? ? ? }顯示所有書(shū)籍方法
public void showAllBook()
? ? ? ? {
? ? ? ? ? ? Console.WriteLine("所有的書(shū)籍信息如下");
? ? ? ? ? ? for (int i = 0; i < curIndex; i++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? books[i].print();
? ? ? ? ? ? }
? ? ? ? }以上,書(shū)和管理器的類(lèi)就寫(xiě)完了 接下來(lái)在主函數(shù)中運(yùn)行測(cè)試:
using System;
namespace 圖書(shū)管理系統(tǒng)
{
? ? class Program
? ? {
? ? ? ? static void Main(string[] args)
? ? ? ? {
? ? ? ? ? ? Console.WriteLine("歡迎進(jìn)入圖書(shū)管理軟件");
? ? ? ? ? ? int num = 1;
? ? ? ? ? ? BookManager manager = new BookManager(2);//容器(數(shù)據(jù)庫(kù))
? ? ? ? ? ? while (true)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? Console.Clear();//清理控制臺(tái)信息
? ? ? ? ? ? ? ? Console.WriteLine("1、錄入書(shū)籍\n2、查找書(shū)籍\n3、刪除書(shū)籍\n4、顯示所有書(shū)籍\n按對(duì)應(yīng)的數(shù)字進(jìn)入該功能,按Q退出");
? ? ? ? ? ? ? ? string str = Console.ReadLine();
? ? ? ? ? ? ? ? num = int.Parse(str);
? ? ? ? ? ? ? ? switch (num)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? case 1://錄入書(shū)籍
? ? ? ? ? ? ? ? ? ? ? ? Console.WriteLine("已經(jīng)進(jìn)入錄入書(shū)籍功能");
? ? ? ? ? ? ? ? ? ? ? ? Console.Write("輸入編號(hào):");
? ? ? ? ? ? ? ? ? ? ? ? string id = Console.ReadLine();
? ? ? ? ? ? ? ? ? ? ? ? Console.Write("輸入書(shū)名:");
? ? ? ? ? ? ? ? ? ? ? ? string name = Console.ReadLine();
? ? ? ? ? ? ? ? ? ? ? ? Console.Write("輸入作者名字:");
? ? ? ? ? ? ? ? ? ? ? ? string authName = Console.ReadLine();
? ? ? ? ? ? ? ? ? ? ? ? Console.Write("輸入書(shū)的價(jià)格:");
? ? ? ? ? ? ? ? ? ? ? ? float price = float.Parse(Console.ReadLine());
? ? ? ? ? ? ? ? ? ? ? ? Console.Write("輸入書(shū)的頁(yè)數(shù):");
? ? ? ? ? ? ? ? ? ? ? ? int page = int.Parse(Console.ReadLine());
? ? ? ? ? ? ? ? ? ? ? ? Book book = new Book(authName, price);//通過(guò)構(gòu)造函數(shù)生成對(duì)象,并且賦值
? ? ? ? ? ? ? ? ? ? ? ? //通過(guò)屬性對(duì)對(duì)象賦值
? ? ? ? ? ? ? ? ? ? ? ? book.Id = id;
? ? ? ? ? ? ? ? ? ? ? ? book.Name = name;
? ? ? ? ? ? ? ? ? ? ? ? book.Page = page;
? ? ? ? ? ? ? ? ? ? ? ? //把書(shū)存儲(chǔ)到管理器中
? ? ? ? ? ? ? ? ? ? ? ? manager.addBook(book);
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case 2://查找書(shū)籍
? ? ? ? ? ? ? ? ? ? ? ? if (manager.curIndex == 0)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? Console.Write("系統(tǒng)里一本書(shū)都沒(méi)有!");
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? id = Console.ReadLine();
? ? ? ? ? ? ? ? ? ? ? ? Book curBook = manager.find(id);
? ? ? ? ? ? ? ? ? ? ? ? if (curBook != null)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? Console.WriteLine("找到了書(shū),信息如下:");
? ? ? ? ? ? ? ? ? ? ? ? ? ? curBook.print();
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? Console.WriteLine("沒(méi)有找到書(shū)");
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case 3://刪除書(shū)籍
? ? ? ? ? ? ? ? ? ? ? ? Console.Write("輸入要?jiǎng)h除的書(shū)籍編號(hào):");
? ? ? ? ? ? ? ? ? ? ? ? id = Console.ReadLine();
? ? ? ? ? ? ? ? ? ? ? ? Book _curBook = manager.find(id);
? ? ? ? ? ? ? ? ? ? ? ? if (_curBook != null)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? Console.WriteLine("已刪除{0}這本書(shū)", _curBook.Name);
? ? ? ? ? ? ? ? ? ? ? ? ? ? manager.delBook(_curBook.Id);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? Console.WriteLine("沒(méi)有找到書(shū)");
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case 4://顯示所有書(shū)籍
? ? ? ? ? ? ? ? ? ? ? ? if (manager.curIndex != 0)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? manager.showAllBook();
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? Console.WriteLine("系統(tǒng)里一本書(shū)都沒(méi)有!");
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? if (str.ToLower().Contains('q'))
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? Console.ReadKey();
? ? ? ? ? ? }
? ? ? ? }
? ? }
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
c#泛型序列化對(duì)象為字節(jié)數(shù)組的示例
這篇文章主要介紹了c#泛型序列化對(duì)象為字節(jié)數(shù)組的示例,需要的朋友可以參考下2014-04-04
C#實(shí)現(xiàn)對(duì)Json字符串處理實(shí)例
這篇文章主要介紹了C#實(shí)現(xiàn)對(duì)Json字符串處理,通過(guò)一個(gè)json實(shí)例分析了C#進(jìn)行JSON操作的方法,需要的朋友可以參考下2014-09-09
C# 常用協(xié)議實(shí)現(xiàn)模版及FixedSizeReceiveFilter示例(SuperSocket入門(mén))
本文主要介紹了常用協(xié)議實(shí)現(xiàn)模版及FixedSizeReceiveFilter示例。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-01-01
C#學(xué)習(xí)教程之Socket的簡(jiǎn)單使用
這篇文章主要給大家介紹了關(guān)于C#學(xué)習(xí)教程之Socket的簡(jiǎn)單使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02
c#中多線程訪問(wèn)winform控件的若干問(wèn)題小結(jié)
大部分情況下都會(huì)碰到使用多線程控制界面上控件信息的問(wèn)題。然而我們并不能用傳統(tǒng)方法來(lái)解決這個(gè)問(wèn)題,下面我將詳細(xì)的介紹2013-10-10
C# WebApi 接口返回值不困惑:返回值類(lèi)型詳解
這篇文章主要介紹了C# WebApi 接口返回值不困惑:返回值類(lèi)型詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07

