您好,登錄后才能下訂單哦!
今天給大家介紹一下JAVA中怎么進行圖書管理系統的實現。文章的內容小編覺得不錯,現在給大家分享一下,覺得有需要的朋友可以了解一下,希望對大家有所幫助,下面跟著小編的思路一起來閱讀吧。
在學習了Java語法的類、接口、繼承、多態、接口等基礎語法后的一簡單的項目練習。
具體功能為:
1、簡單的根據姓名的登錄
2、管理員端:其功能為,查閱書籍、增加書籍、刪除書籍、打印書籍、按價格整理書籍、退出。
3、普通用戶端:查閱書籍、借閱書籍、歸還書籍、退出。
實現效果:
先輸入用戶姓名,在根據選擇決定身份為管理員或者是用戶。如果是管理員,就顯示管理員和它的菜單,如果是用戶就顯示用戶的菜單。
整個系統分為4部分,這里分別用三個包和一個Main類實現。分別是Book包,Operation包,User包。
包含book、bookList。兩個java文件
book用來描述每本書的特征。
bookList則表示整個書架。
package Book; /** * @author 珍菇辣條 */ public class book { private String name; private String author; private double price; private String type; private boolean isBorrowed; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public double getPrice() { return price; } public void setPrice(int price) { this.price = price; } public String getType() { return type; } public void setType(String type) { this.type = type; } public boolean isBorrowed() { return isBorrowed; } public void setBorrowed(boolean borrowed) { isBorrowed = borrowed; } public book(String name, String author, double price, String type) { this.name = name; this.author = author; this.price = price; this.type = type; } @Override public String toString() { return "book{" + "name='" + name + '\'' + ", author='" + author + '\'' + ", price=" + price + ", type='" + type + '\'' + ((isBorrowed==true)? "已借出 " :" 未借出") + '}'; } public double compare(book o1,book o2){ return o1.getPrice()-o2.getPrice(); } }
package Book; /** * @author 珍菇辣條 */ public class bookList { private book[]books=new book[10]; private int usedSize; public bookList(){ books[0]=new book("百年孤獨", "加西亞·馬爾克斯", 39.60,"小說"); books[1]=new book("無聲告白", "伍綺詩", 35.00, "小說"); books[2]=new book("沉思錄", "馬可·奧勒留", 32.00,"哲學"); books[3]=new book("數據結構與算法", "汪沁", 45.00, "教科書"); this.usedSize=4; } /** * 合法和放沒放滿目前沒有考慮 * 默認放到順序表的最后 * @param pos * @param book */ public void setBooks(int pos,book book){ this.books[pos]=book; } public book getBook(int pos){ return this.books[pos]; } public int getUsedSize() { return usedSize; } public void setUsedSize(int usedSize) { this.usedSize = usedSize; } public book[] getBooks(){ return this.books; } }
將操作寫成接口。后面讓每個方法繼承這個接口
Operation包包含了兩種身份的所有方法。先在包里將所有的類方法全部實現。在具體整合到User包里的管理員和普通用戶里。用一個數組來囊括這些方法。
增加書籍會提示管理員一步步輸入需要增加書籍的信息。如果書架里已經用了這本書,那就不會再添加到書架上。
package Opreation; import Book.bookList; import Book.book; import java.util.Scanner; public class AddOperation implements IOperaion{ @Override public void work(bookList bookList){ System.out.println("新增書籍"); Scanner scanner=new Scanner(System.in); System.out.println("輸入新增圖書的名字"); String name=scanner.nextLine(); System.out.println("輸入圖書的作者"); String Authorname=scanner.nextLine(); System.out.println("輸入圖書的類型"); String sype=scanner.nextLine(); System.out.println("輸入圖書的價格"); int price=scanner.nextInt(); int currentSize=bookList.getUsedSize(); for (int i = 0; i <bookList.getUsedSize() ; i++) { book book=bookList.getBook(i); if(name.equals(book.getName())){ System.out.println("書架已經有這本書了,不要再添加了哦: "); return; } } String type = null; String author=null; book book=new book(name, author, price, type); bookList.setBooks(currentSize, book); bookList.setUsedSize(currentSize+1); System.out.println("新增成功"); } }
在刪除之前先檢查書架上是否包含要刪除的書,如果沒有就不能刪除。
package Opreation; import Book.bookList; import Book.book; import java.util.Scanner; public class DelOperation implements IOperaion { @Override public void work(bookList bookList){ System.out.println("刪除書籍"); Scanner scanner=new Scanner(System.in); System.out.println("要刪除那本書?"); String name=scanner.nextLine(); int currentSize=bookList.getUsedSize(); int index=-1; for (int i = 0; i <currentSize ; i++) { book book=bookList.getBook(i); if(name.equals(book.getName())){ //找到了 index=i; } } if(index==-1){ //沒找到 System.out.println("沒有你要刪除的書 ~.~"); return; }else { for (int i = index; i <currentSize-1 ; i++) { book book1=bookList.getBook(i+1); bookList.setBooks(i, book1); } //防止內存泄漏 bookList.setBooks(currentSize-1, null); //控制usedSize bookList.setUsedSize(currentSize-1); } } }
這個很好實現,只需要遍歷書籍找到這本書。把書籍的狀態改成true就可以啦。
package Opreation; import Book.bookList; import Book.book; import java.util.Scanner; public class BorrowOperation implements IOperaion{ @Override public void work(bookList bookList){ System.out.println("借閱書籍"); Scanner scanner=new Scanner(System.in); System.out.println("輸入要借閱圖書的名字"); String name=scanner.nextLine(); int currentSize=bookList.getUsedSize(); for (int i = 0; i <currentSize ; i++) { book book=bookList.getBook(i); if(name.equals(book.getName())&& !book.isBorrowed()){ //找到了,就借出去唄。把它的狀態改成true。 book.setBorrowed(true); System.out.println("給你借出去啦"); return; } } System.out.println("沒有這本書呀或者已經被借出 "); } }
和借閱書籍相同,將修改后的已借出,修改成未借出即可。
package Opreation; import Book.book; import Book.bookList; import java.util.Scanner; public class ReturnOperation implements IOperaion{ @Override public void work(bookList bookList){ System.out.println("歸還書籍"); Scanner scanner=new Scanner(System.in); System.out.println("輸入要歸還圖書的名字"); String name=scanner.nextLine(); int currentSize=bookList.getUsedSize(); for (int i = 0; i <currentSize ; i++) { book book=bookList.getBook(i); if(name.equals(book.getName())){ //找到了,就歸還唄。把它的狀態改成false。 book.setBorrowed(false); System.out.println("已歸還!"); return; } } System.out.println("沒有這本書呀,還不了"); } }
遍歷書籍,并打印每一本書的信息即可。
package Opreation; import Book.book; import Book.bookList; public class DisPlayOperation implements IOperaion{ @Override public void work(bookList bookList){ int currentSize=bookList.getUsedSize(); for (int i = 0; i <currentSize ; i++) { book book=bookList.getBook(i); System.out.println(book); } } }
通過書籍的名字遍歷書架,查找書籍,如果名字沒有對的上的,認為沒有這本書。
package Opreation; import Book.bookList; import Book.book; import jdk.swing.interop.SwingInterOpUtils; import java.awt.print.Book; import java.util.Scanner; public class FindOperation implements IOperaion{ @Override public void work(bookList bookList){ System.out.println("這是給好兄弟查找書籍的: "); Scanner scanner=new Scanner(System.in); System.out.println("好兄弟找查找那本書? "); String name= scanner.nextLine(); for (int i = 0; i <bookList.getUsedSize(); i++) { book book=bookList.getBook(i); if(name.equals(book.getName())){ System.out.println("找到這本書了,信息如下: "); System.out.println(book); return; } } System.out.println("確實是沒有這本書哦!"); } }
將書架的書按照價格降序排序。需要先給book類實現比較方法。排序用的是直接插入排序。
package Opreation; import Book.bookList; import Book.book; import java.util.Scanner; public class SortOperation implements IOperaion { @Override public void work(bookList bookList){ System.out.println("整理圖書!"); int currentSize=bookList.getUsedSize(); book book1=bookList.getBook(0); book books[]=bookList.getBooks(); for (int i = 1; i <currentSize ; i++) { book tmp=books[i]; int j=i-1; for (; j >=0 ; j--) { if(compare(books[j],tmp)<0){ books[j+1]=books[j]; } else { break; } } books[j+1]=tmp; } System.out.println("已按價格降序整理完畢"); } public double compare(book o1,book o2){ return o1.getPrice()-o2.getPrice(); }
即為退出程序。
package Opreation; import Book.bookList; public class ExitOperation implements IOperaion{ @Override public void work(bookList bookList){ System.out.println("退出系統咯"); System.exit(1); } }
包含管理員和普通用戶,和User類。每種身份包含不同的方法、菜單。管理員個普通用戶繼承自User。
package USER; import Opreation.IOperaion; import Book.bookList; public abstract class User { protected String name; protected IOperaion[] iOperaions; public User(String name){ this.name=name; } public abstract int menu(); public void doOperatopm(int choice,bookList bookList){ this.iOperaions[choice].work(bookList); } }
package USER; import Opreation.*; import java.util.Scanner; public class AdminUser extends User { public AdminUser(String name){ super(name); this.iOperaions=new IOperaion[]{ new ExitOperation(), new FindOperation(), new AddOperation(), new DelOperation(), new DisPlayOperation(), new SortOperation() }; } @Override public int menu() { Scanner scanner=new Scanner(System.in); System.out.println("~~~~~~~~~~~~~"); System.out.println("歡迎"+this.name +",這里是管理員菜單"); System.out.println("1、查找圖書"); System.out.println("2、新增圖書"); System.out.println("3、刪除圖書"); System.out.println("4、顯示圖書"); System.out.println("5、整理書籍(按價格)"); System.out.println("0、退出系統"); System.out.println("~~~~~~~~~~~~~"); int choice=scanner.nextInt(); return choice; } }
package USER; import Opreation.*; import java.util.Scanner; public class NormarUser extends User{ public NormarUser(String name) { super(name); //就把普通用戶的操作,封裝/存儲到接口數組重 this.iOperaions=new IOperaion[] { new ExitOperation(), new FindOperation(), new BorrowOperation(), new ReturnOperation(), }; } @Override public int menu() { Scanner scanner=new Scanner(System.in); System.out.println("~~~~~~~~~~~~~"); System.out.println("歡迎"+this.name +",這里是用戶菜單"); System.out.println("1、查找圖書"); System.out.println("2、借閱圖書"); System.out.println("3、歸還圖書"); System.out.println("0、退出系統"); System.out.println("~~~~~~~~~~~~~"); int choice=scanner.nextInt(); return choice; } }
通過一個Main類來調動所有的類。
import USER.AdminUser; import USER.NormarUser; import USER.User; import Book.bookList; import java.util.Scanner; /** * @author 珍菇辣條 */ public class Main { public static User login() { Scanner scanner = new Scanner(System.in); System.out.println("請輸入你的姓名 : "); String name = scanner.nextLine(); System.out.println(name+"你的身份是?: 1->管理員 0->:用戶"); int choice = scanner.nextInt(); if (choice == 1) { return new AdminUser(name); } else { return new NormarUser(name); } } public static void main(String[] args) { bookList bookList = new bookList(); User user = login(); /** * 打印菜單,并讓用戶選擇身份,要操作的事情 */ while (true) { int choice = user.menu(); //根據菜單的選項,來調用合適的方法 user.doOperatopm(choice, bookList); } } }
1.SpringMVC,Spring Web MVC是一種基于Java的實現了Web MVC設計模式的請求驅動類型的輕量級Web框架。2.Shiro,Apache Shiro是Java的一個安全框架。3.Mybatis,MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優秀持久層框架。4.Dubbo,Dubbo是一個分布式服務框架。5.Maven,Maven是個項目管理和構建自動化工具。6.RabbitMQ,RabbitMQ是用Erlang實現的一個高并發高可靠AMQP消息隊列服務器。7.Ehcache,EhCache 是一個純Java的進程內緩存框架。
以上就是JAVA中怎么進行圖書管理系統的實現的全部內容了,更多與JAVA中怎么進行圖書管理系統的實現相關的內容可以搜索億速云之前的文章或者瀏覽下面的文章進行學習哈!相信小編會給大家增添更多知識,希望大家能夠支持一下億速云!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。