Java實(shí)現(xiàn)圖書借閱系統(tǒng)
今天這個(gè)是一個(gè)Java小練習(xí),一個(gè)圖書借閱系統(tǒng),需要實(shí)現(xiàn)的功能有:
- 判斷用戶是否需要進(jìn)行借書
- 在用戶選擇借書時(shí),展示出圖書列表
- 圖書列表包含 圖書序號(hào)、圖書名稱、借閱價(jià)格、作者
- 用戶選擇借書數(shù)量、并選擇對(duì)應(yīng)圖書、借閱天數(shù)
- 計(jì)算出用戶需支付金額
Book.java
package com.imooc; /** ?* 圖書類 包含圖書序號(hào) 名稱 價(jià)格 ?* */ public class Book { ? ? private int id; ? ? private String name; ? ? private double price; ? ? private String author; ? ? public Book(int id, String name, double price, String author) { ? ? ? ? // TODO Auto-generated constructor stub ? ? ? ? this.id = id; ? ? ? ? this.setName(name); ? ? ? ? this.price = price; ? ? ? ? this.author = author; ? ? } ? ? public void setId(int id) { ? ? ? ? this.id = id; ? ? } ? ? public int getId() { ? ? ? ? return id; ? ? } ? ? public void setPrice(double price) { ? ? ? ? this.price = price; ? ? } ? ? public double getPrice() { ? ? ? ? return price; ? ? } ? ? public void setAuthor(String author) { ? ? ? ? this.author = author; ? ? } ? ? public String getAuthor() { ? ? ? ? return author; ? ? } ? ? public void setName(String name) { ? ? ? ? this.name = name; ? ? } ? ? public String getName() { ? ? ? ? return name; ? ? } }
BorrowBooks.java
package com.imooc; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class BorrowBooks { ? ? /** ? ? ?* @param args ? ? ?*/ ? ? public static void main(String[] args) { ? ? ? ? // TODO Auto-generated method stub ? ? ? ? System.out.println("~~~~~~~歡迎使用圖書借閱系統(tǒng)~~~~~~~~ "); ? ? ? ? System.out.println("您是否要借書:1.是 >> 點(diǎn)擊其他鍵退出"); ? ? ? ? BorrowBooks test = new BorrowBooks(); ? ? ? ? while (test.test1()) { ? ? ? ? ? ? System.out.println(">>>您可選擇圖書及其價(jià)目表:"); ? ? ? ? ? ? System.out.println("-------------------------------------------"); ? ? ? ? ? ? Book[] books = { new Book(0, "紅樓夢(mèng)", 12, "曹雪芹"), ? ? ? ? ? ? ? ? ? ? new Book(1, "西游記", 12, "吳承恩"), ? ? ? ? ? ? ? ? ? ? new Book(2, "漢鄉(xiāng)", 12, "孑與2"), ? ? ? ? ? ? ? ? ? ? new Book(3, "大魏宮廷", 12, "賤宗首席"), ? ? ? ? ? ? ? ? ? ? new Book(4, "三國(guó)演義", 12, "羅貫中"), ? ? ? ? ? ? ? ? ? ? new Book(5, "水滸傳", 12, "施耐庵") }; ? ? ? ? ? ? System.out.println("序號(hào)" + " ?" + "\t" + "書名" + " ? ? " + "\t" ? ? ? ? ? ? ? ? ? ? + "租金" + " ? ? ?" + "\t" + "作者"); ? ? ? ? ? ? for (Book book : books) { ? ? ? ? ? ? ? ? if (book.getClass().equals(Book.class)) { ? ? ? ? ? ? ? ? ? ? System.out.println(book.getId() + "\t" + "\t" ? ? ? ? ? ? ? ? ? ? ? ? ? ? + book.getName() + "\t" + "\t" + book.getPrice() ? ? ? ? ? ? ? ? ? ? ? ? ? ? + "/天" + "\t" + "\t" + book.getAuthor() + "/著"); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? ? ? System.out.println("-------------------------------------------"); ? ? ? ? ? ? System.out.println("-->請(qǐng)輸入你要借書的數(shù)量:"); ? ? ? ? ? ? Scanner zScanner = new Scanner(System.in); ? ? ? ? ? ? int BookNum = zScanner.nextInt(); ? ? ? ? ? ? if (BookNum > 0) { ? ? ? ? ? ? ? ? List<Book> bookList = new ArrayList<Book>(); ? ? ? ? ? ? ? ? int add = 0; ? ? ? ? ? ? ? ? int bookPrice = 0; ? ? ? ? ? ? ? ? for (int i = 0; i < BookNum; i++) { ? ? ? ? ? ? ? ? ? ? System.out.println(">>請(qǐng)輸入第" + (i + 1) + "本書的序號(hào):"); ? ? ? ? ? ? ? ? ? ? int num = zScanner.nextInt(); ? ? ? ? ? ? ? ? ? ? try { ? ? ? ? ? ? ? ? ? ? ? ? bookList.add(books[num]); ? ? ? ? ? ? ? ? ? ? ? ? System.out.println("----成功添加:" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? + bookList.get(add).getName()); ? ? ? ? ? ? ? ? ? ? ? ? if (books[num].getClass().equals(Book.class)) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? bookPrice += ((Book) bookList.get(add)).getPrice(); ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? add++; ? ? ? ? ? ? ? ? ? ? } catch (Exception e) { ? ? ? ? ? ? ? ? ? ? ? ? // TODO: handle exception ? ? ? ? ? ? ? ? ? ? ? ? System.out.println("您輸入的圖書序號(hào)不正確"); ? ? ? ? ? ? ? ? ? ? ? ? i = i - 1; ? ? ? ? ? ? ? ? ? ? ? ? BookNum = BookNum; ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? System.out.println("->請(qǐng)輸入借閱的天數(shù):"); ? ? ? ? ? ? ? ? Scanner g = new Scanner(System.in); ? ? ? ? ? ? ? ? int bookDay = g.nextInt(); ? ? ? ? ? ? ? ? bookPrice = bookPrice * bookDay; ? ? ? ? ? ? ? ? System.out.println("------------借閱選書完成------------" + "\n" ? ? ? ? ? ? ? ? ? ? ? ? + "下面開(kāi)始統(tǒng)計(jì)數(shù)據(jù).........."); ? ? ? ? ? ? ? ? System.out.print("您借閱的圖書" + BookNum + "本:" + " "); ? ? ? ? ? ? ? ? for (Book book : bookList) { ? ? ? ? ? ? ? ? ? ? System.out.println(book.getName() + " " + "\n"); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? System.out.println(); ? ? ? ? ? ? ? ? System.out.println("共租用:" + bookDay + " 天"); ? ? ? ? ? ? ? ? System.out.println("需要付款:" + bookPrice + " 元"); ? ? ? ? ? ? ? ? System.out.println("->請(qǐng)輸入付款金額:"); ? ? ? ? ? ? ? ? System.out.println("------------"); ? ? ? ? ? ? ? ? Scanner x = new Scanner(System.in); ? ? ? ? ? ? ? ? ?int priceSpread = bookPrice - x.nextInt();//定義差價(jià) ? ? ? ? ? ? ? ? ?while (bookPrice != x.nextInt()) ? ? ? ? ? ? ? ? ?System.out.println("------------" + "\n" + "輸入錯(cuò)誤,請(qǐng)重新輸入金額!"); ? ? ? ? ? ? ? ? /* ? ? ? ? ? ? ? ? ?while (bookPrice != x.nextInt()) ? ? ? ? ? ? ? ? ?{ ? ? ? ? ? ? ? ? ?if (bookPrice > x.nextInt()) { ? ? ? ? ? ? ?int priceSpread = bookPrice - x.nextInt();//定義差價(jià) ? ? ? ? ? ? ? ? ?System.out.println("------------" + "\n" + "您已付款" ? ? ? ? ? ? ?+ x.nextInt() + "元,還需支付" + priceSpread + "元"); ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ?if (bookPrice <x.nextInt()) { ? ? ? ? ? ? ? ? ?int priceSpread = x.nextInt()-bookPrice ;//定義差價(jià) ? ? ? ? ? ? ?System.out.println("------------" + "\n" + "您已付款" ? ? ? ? ? ? ?+ x.nextInt() + "元,找您" + priceSpread + "元"); ? ? ? ? ? ? ?} */ ? ? ? ? ? ? ? ? System.out.println("------------"); ? ? ? ? ? ? ? ? System.out.println(" ? ? ? ? ? ? ?交易成功!"); ? ? ? ? ? ? ? ? System.out.println(); ? ? ? ? ? ? ? ? System.out.println("------------感謝您的使用--------------"); ? ? ? ? ? ? ? ? System.out.println("………………繼續(xù)借書請(qǐng)按1,退出請(qǐng)按其他鍵………………"); ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? System.out.println("您輸入的借書數(shù)量為“0”,自動(dòng)為您退出系統(tǒng)"); ? ? ? ? ? ? ? ? System.exit(0); ? ? ? ? ? ? } ? ? ? ? } ? ? } ? ? private static Object bookPrice(int nextInt) { ? ? ? ? // TODO Auto-generated method stub ? ? ? ? return null; ? ? } ? ? // 捕獲輸入?yún)?shù)不正確異常 ? ? public boolean test1() { ? ? ? ? try { ? ? ? ? ? ? Scanner z = new Scanner(System.in); ? ? ? ? ? ? if (z.nextInt() == 1) { ? ? ? ? ? ? ? ? return true; ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? return false; ? ? ? ? ? ? } ? ? ? ? } catch (Exception e1) { ? ? ? ? ? ? return false; ? ? ? ? } ? ? } }
運(yùn)行效果圖
存在問(wèn)題
在BorrowBooks.java這個(gè)Class中,下面這段代碼本想實(shí)現(xiàn)判斷用戶輸入的金額是否和應(yīng)付金額一致,不一致時(shí)給出不同的回復(fù),但是自己試了好多種方法,都沒(méi)有實(shí)現(xiàn),還是自己懂得太少:
while (bookPrice != x.nextInt()) ? ? ? ?{ ? ? ? ? if (bookPrice > x.nextInt()) { ? ? ? ? int priceSpread = bookPrice - x.nextInt();//定義差價(jià) ? ? ? ? System.out.println("------------" + "\n" + "您已付款" ? ? ? ? + x.nextInt() + "元,還需支付" + priceSpread + "元"); ? ? ? ? } ? ? ? ? if (bookPrice <x.nextInt()) { ? ? ? ? int priceSpread = x.nextInt()-bookPrice ;//定義差價(jià) ? ? ? ? System.out.println("------------" + "\n" + "您已付款" ? ? ? ? + x.nextInt() + "元,找您" + priceSpread + "元"); ? ? ? ? } ? ? ? ? }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Kotlin基礎(chǔ)教程之函數(shù)定義與變量聲明
這篇文章主要介紹了Kotlin基礎(chǔ)教程之函數(shù)定義與變量聲明的相關(guān)資料,需要的朋友可以參考下2017-05-05Java中對(duì)象?和?json?互轉(zhuǎn)四種方式?json-lib、Gson、FastJson、Jackson
這篇文章主要介紹了Java中對(duì)象?和?json?互轉(zhuǎn)?四種方式?json-lib、Gson、FastJson、Jackson,需要的朋友可以參考下2023-11-11詳解servlet調(diào)用的幾種簡(jiǎn)單方式總結(jié)
這篇文章主要介紹了詳解servlet調(diào)用的幾種簡(jiǎn)單方式總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01深入理解Java定時(shí)調(diào)度(Timer)機(jī)制
這篇文章主要介紹了深入理解Java定時(shí)調(diào)度(Timer)機(jī)制,本節(jié)我們主要分析 Timer 的功能。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01Spring中@Service注解的作用與@Controller和@RestController之間區(qū)別
這篇文章主要介紹了Spring中@Service注解的作用與@Controller和@RestController之間的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-03-03MyBatis-Plus 修改和添加自動(dòng)填充時(shí)間方式
這篇文章主要介紹了MyBatis-Plus 修改和添加自動(dòng)填充時(shí)間方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08java中Servlet監(jiān)聽(tīng)器的工作原理及示例詳解
這篇文章主要介紹了java中Servlet監(jiān)聽(tīng)器的工作原理及示例詳解。Servlet監(jiān)聽(tīng)器用于監(jiān)聽(tīng)一些重要事件的發(fā)生,監(jiān)聽(tīng)器對(duì)象可以在事情發(fā)生前、發(fā)生后可以做一些必要的處理。感興趣的可以來(lái)了解一下2020-07-07老生常談Java?網(wǎng)絡(luò)編程?——?Socket?詳解
這篇文章主要介紹了Java?網(wǎng)絡(luò)編程?——?Socket?相關(guān)知識(shí),本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05