数据结构论坛

首页 » 分类 » 问答 » 图书管理系统使用类,抽象类,封装,
TUhjnbcbe - 2025/5/31 19:42:00

目录

图书管理系统

简单的示意图:

分析:

各个类的实现

.Book类

.BookList类

.因为Opration包中各个操作都需要用到book,所以创建一个接口IOpration

4.Usr类

5.Admin类

6.Normal类

7.Main类

8.实现DisplayOpration

9.实现FindOpration

0.实现AddOpration

.实现BorrowOpration

.实现RturnOpration

.实现DlOpration

4.ExitOpration

运行结果图:

图书管理系统

简单的示意图:

分析:

此时分为部分:

一.书的内容和存取书

二.用户登录,分为管理员和普通用户

三.书相关操作

分别可以创建三个包packagbookpackagoprationpackagusr

book包中可以用Book类来表示一本书BookList类来表示N本书

usr包中可以使用Usr类来表示用户,其中Usr又有普通用户可以用NomalUsr类来表示管理员用Admin类来表示

Opration包中分别用

AddOpration类来表示增添图书

DlOpration类来表示删除图书

FindOpration类来表示查找图书

DisplayOpration类来表示显示图书

BorrowOpration类来表示显示图书

RturnOpration类来表示归还图书

ExitOpration类来表示退出图书

各个类的实现

.Book类

packagbook;publicclassBook{privatStringnam;//书的书名privatStringauthor;//书的作者privatintpric;//书的价格privatStringtyp;//书的类型privatboolanisBorrowd;publicBook(Stringnam,Stringauthor,intpric,Stringtyp){this.nam=nam;this.author=author;this.pric=pric;this.typ=typ;}publicStringgtNam(){turnnam;}publicvoidstNam(Stringnam){this.nam=nam;}publicStringgtAuthor(){turnauthor;}publicvoidstAuthor(Stringauthor){this.author=author;}publicintgtPric(){turnpric;}publicvoidstPric(intpric){this.pric=pric;}publicStringgtTyp(){turntyp;}publicvoidstTyp(Stringtyp){this.typ=typ;}publicboolanisBorrowd(){turnisBorrowd;}publicvoidstBorrowd(boolanborrowd){isBorrowd=borrowd;}

OvrridpublicStringtoString(){turn"Book{"+"nam="+nam+\+",author="+author+\+",pric="+pric+",typ="+typ+\+","+((isBorrowd==tru)?"被借出":"未被借出")+};}}

.BookList类

packagbook;publicclassBookList{privatBook[]books=nwBook[00];//用顺序表的方式存书privatintusdSiz;publicBookList(){//给本书在图书管理系统里books[0]=nwBook("JavaSE","博哥",,"专业知识");books[]=nwBook("JavaEE","大博哥",,"专业知识");books[]=nwBook("数据结构","博哥哥",4,"理论知识");usdSiz=;}publicBookgtBook(intpos){turnthis.books[pos];}publicvoidstBooks(intpos,Bookbook){this.books[pos]=book;}publicintgtUsdSiz(){turnusdSiz;}publicvoidstUsdSiz(intusdSiz){this.usdSiz=usdSiz;}}

.因为Opration包中各个操作都需要用到book,所以创建一个接口IOpration

packagOpration;importbook.BookList;importjava.util.Scannr;publicintrfacIOpration{publicvoidwork(BookListbookList);Scannrsc=nwScannr(Systm.in);}

4.Usr类

packagusr;importOpration.IOpration;importbook.BookList;abstractpublicclassUsr{protctdStringnam;//用户名protctdIOpration[]iOprations;//对书的操作publicUsr(Stringnam){this.nam=nam;}abstractpublicintmnu();publicvoiddoOpration(intchoic,BookListbookList){this.iOprations[choic].work(bookList);}}

5.Admin类

packagusr;importOpration.*;importbook.BookList;importjava.util.Scannr;publicclassAdminxtndsUsr{publicAdmin(Stringnam){supr(nam);this.iOprations=nwIOpration[]{nwExitOpration(),//下标为0nwFindOpration(),//下标为nwAddOpration(),//下标为nwDlOpration(),//下标为nwDisplayOpration()//下标为4};}

Ovrridpublicintmnu(){Systm.out.println("======================================");Systm.out.println("hllo"+this.nam+"欢迎来到图书馆里系统");Systm.out.println(".查阅图书");Systm.out.println(".添加图书");Systm.out.println(".删除图书");Systm.out.println("4.显示图书");Systm.out.println("0.退出系统");Systm.out.println("======================================");Scannrsc=nwScannr(Systm.in);intchoic=sc.nxtInt();turnchoic;}}

6.Normal类

packagusr;importOpration.*;importjava.util.Scannr;publicclassNormalUsrxtndsUsr{publicNormalUsr(Stringnam){supr(nam);this.iOprations=nwIOpration[]{nwExitOpration(),//下标为0nwFindOpration(),//下标为nwBorrowOpration(),//下标为nwRturnOpration()//下标为};}

Ovrridpublicintmnu(){Systm.out.println("======================================");Systm.out.println("hllo"+this.nam+"欢迎来到图书馆里系统");Systm.out.println(".查阅图书");Systm.out.println(".借出图书");Systm.out.println(".归还图书");Systm.out.println("0.退出系统");Systm.out.println("======================================");Scannrsc=nwScannr(Systm.in);intchoic=sc.nxtInt();turnchoic;}}

7.Main类

importbook.BookList;importusr.Admin;importusr.NormalUsr;importusr.Usr;importjava.util.Scannr;publicclassMain{publicstaticUsrlogin(){Systm.out.println("请输入你的姓名:");Scannrsc=nwScannr(Systm.in);Stringnam=sc.nxtLin();Systm.out.println("请选择你的身份:.管理员.普通用户");intchoic=sc.nxtInt();if(choic==){turnnwAdmin(nam);}ls{turnnwNormalUsr(nam);}}publicstaticvoidmain(String[]args){BookListbookList=nwBookList();Usrusr=login();//返回的是子类对象,父类引用引用子类对象发生向上转型whil(tru){intchoic=usr.mnu();//父类引用调用了同名的覆盖方法此时发生动态绑定usr.doOpration(choic,bookList);}}}

8.实现DisplayOpration

packagOpration;importbook.Book;importbook.BookList;publicclassDisplayOprationimplmntsIOpration{

Ovrridpublicvoidwork(BookListbookList){Systm.out.println("显示图书");for(inti=0;ibookList.gtUsdSiz();i++){Bookbook=bookList.gtBook(i);Systm.out.println(book);}}}

9.实现FindOpration

packagOpration;importbook.Book;importbook.BookList;publicclassFindOprationimplmntsIOpration{

Ovrridpublicvoidwork(BookListbookList){Systm.out.println("查找图书");Systm.out.println("请输入你要查找的图书的书名:");Stringnam=sc.nxtLin();for(inti=0;ibookList.gtUsdSiz();i++){Bookbook=bookList.gtBook(i);if(book.gtNam().quals(nam)){Systm.out.println("找到了这本书!");Systm.out.println(book);//找到了这本书直接turnturn;}}//循环结束没有找到书Systm.out.println("没有这本书!");}}

0.实现AddOpration

packagOpration;importbook.Book;importbook.BookList;publicclassAddOprationimplmntsIOpration{

Ovrridpublicvoidwork(BookListbookList){Systm.out.println("添加图书!");Systm.out.println("请输入你要添加图书的书名:");Stringnam=sc.nxt();Systm.out.println("请输入你要添加图书的作者:");Stringauthor=sc.nxt();Systm.out.println("请输入你要添加图书的价格:");intpric=sc.nxtInt();Systm.out.println("请输入你要添加图书的类型:");Stringtyp=sc.nxt();Bookbook=nwBook(nam,author,pric,typ);bookList.stBooks(bookList.gtUsdSiz(),book);bookList.stUsdSiz(bookList.gtUsdSiz()+);//usdSiz要加Systm.out.println("添加成功!");}}

.实现BorrowOpration

packagOpration;importbook.Book;importbook.BookList;publicclassBorrowOprationimplmntsIOpration{

Ovrridpublicvoidwork(BookListbookList){Systm.out.println("借出图书");Systm.out.println("请输入你要借的书名:");Stringnam=sc.nxtLin();for(inti=0;ibookList.gtUsdSiz();i++){Bookbook=bookList.gtBook(i);if(book.gtNam().quals(nam)){book.stBorrowd(tru);Systm.out.println("借书成功");turn;}}Systm.out.println("没有你要借的书!");}}

.实现RturnOpration

packagOpration;importbook.Book;importbook.BookList;publicclassRturnOprationimplmntsIOpration{

Ovrridpublicvoidwork(BookListbookList){Systm.out.println("归还图书");Systm.out.println("请输入你要归还的图书:");Stringnam=sc.nxtLin();for(inti=0;ibookList.gtUsdSiz();i++){Bookbook=bookList.gtBook(i);if(book.gtNam().quals(nam)){book.stBorrowd(tru);Systm.out.println("归还成功!");turn;}}Systm.out.println("没有你要归还的书籍");}}

.实现DlOpration

packagOpration;importbook.Book;importbook.BookList;publicclassDlOprationimplmntsIOpration{

Ovrridpublicvoidwork(BookListbookList){Systm.out.println("删除图书");Systm.out.println("请输入你要删除的图书的书名:");Stringnam=sc.nxtLin();intpos=-;for(inti=0;ibookList.gtUsdSiz();i++){Bookbook=bookList.gtBook(i);if(book.gtNam().quals(nam)){pos=i;bak;//有相同的书就返回i的下标}}if(pos==-){//当pos没有改变时,直接返回Systm.out.println("没有你要删除的书籍");turn;}//将pos位置删除,从后往前交换for(inti=pos;ibookList.gtUsdSiz();i++){Bookbook=bookList.gtBook(i+);bookList.stBooks(i,book);}bookList.stUsdSiz(bookList.gtUsdSiz()-);//usdSiz要-Systm.out.println("删除成功!");}}

4.ExitOpration

packagOpration;importbook.BookList;publicclassExitOprationimplmntsIOpration{

Ovrridpublicvoidwork(BookListbookList){Systm.out.println("退出系统");Systm.xit(0);}}

运行结果图:

,

1
查看完整版本: 图书管理系统使用类,抽象类,封装,