目录
图书管理系统
简单的示意图:
分析:
各个类的实现
.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);}}运行结果图:
,