java控制臺輸出圖書館管理系統(tǒng)
java控制臺輸出圖書館管理系統(tǒng)(只用java代碼不用數(shù)據(jù)庫和GUI,java入門的新手秒懂)
在個項(xiàng)目中,我只用數(shù)組保存數(shù)據(jù),和只用for循環(huán)和if條件語句來完成,連數(shù)組工具類都沒用,所以導(dǎo)致要用到很多的條件語句,雖然比較局限,但可以讓新手快速體驗(yàn)一下做小項(xiàng)目的樂趣,也可以練練for和if這些語句,練練一下它們之間嵌套的邏輯關(guān)系等,因?yàn)闀r間有限所以沒有去優(yōu)化了,主要還是讓新手們體驗(yàn)下做java項(xiàng)目的面向?qū)ο缶幊趟枷耄∣OP),給新手們體驗(yàn)一下做項(xiàng)目的樂趣,嘿嘿!
話不多說了,直接切入正題。
設(shè)計思路如下圖:

首先用eclipse建立包和類(為了簡單明了我的項(xiàng)目結(jié)構(gòu)設(shè)計如下):

//在UserData.java里邊輸入以下代碼
package com.jiaxun.library.data;
public class UserData {
private String username = "小詢";//用戶名
private String password = "zengjiaxun";//密碼
public String getUser() {
return username;
}
public String getPassword() {
return password;
}
}
//在BookData.java中輸入以下代碼
package com.jiaxun.library.data;
public class BookData {
//書庫
public BookData() {
{
String noreaders= "無";
for (int i = 0; i < borrowreaders.length; i++) {
borrowreaders[i]=noreaders;
}
for (int i = 0; i < 5; i++) {
switch (i) {
case 0:
booknames[i]="神級強(qiáng)者在都市";
authors[i]="日當(dāng)午";
pubdates[i]="2016-03-31";
sumpaginations[i]="1320";
break;
case 1:
booknames[i]="都市修仙高手";
authors[i]="雪無淚";
pubdates[i]="2017-07-25";
sumpaginations[i]="656";
break;
case 2:
booknames[i]="護(hù)花神兵";
authors[i]="雞飛蛋打";
pubdates[i]="2016-01-31";
sumpaginations[i]="1120";
break;
case 3:
booknames[i]="七界仙尊 ";
authors[i]="無良書生";
pubdates[i]="2017-04-04";
sumpaginations[i]="1310";
break;
case 4:
booknames[i]="戀上調(diào)皮公主";
authors[i]="殘落筱筱";
pubdates[i]="2012-08-20";
sumpaginations[i]="954";
break;
}
}
}
}
public String[] booknames = new String[10];// 書名
public String[] authors = new String[10];// 作者
public String[] pubdates = new String[10];// 出版日期
public String[] sumpaginations = new String[10];// 總頁數(shù)
public String[] borrowreaders = new String[10];// 借閱人
}
//在Bo.java中輸入以下代碼
package com.jiaxun.library.bo;
import java.util.Scanner;
import com.jiaxun.library.data.BookData;
import com.jiaxun.library.data.UserData;
public class Bo {
public static BookData book = new BookData();
UserData user = new UserData();
// 管理員登錄驗(yàn)證
public int login(String username, String password) {
if (username.equals(user.getUser())) {
if (password.equals(user.getPassword())) {
return 1;// 賬號和密碼驗(yàn)證通過
} else {
return 0;// 密碼錯誤
}
} else {
return -1;// 賬號不存在
}
}
/*
* 菜單功能展示列表
*
* 圖書信息展示功能
*/
public void showBook() {
System.out.println("本圖書館共有" + (book.booknames.length - remainSpace()) + "本書");
int a = bookinfo();
if (a == 0) {
// 展示所有圖書信息
showAll();
} else if (a > 0 && a <= book.booknames.length) {
// 展示相關(guān)圖書信息
showPart(a);
} else {
System.out.println("輸入的編號不合法!");
showBook();
}
}
// 展示所有圖書信息
public void showAll() {
for (int i = 0; i < book.booknames.length; i++) {
if (book.booknames[i] != null) {
System.out.println("---------------------------------------編號" + (i + 1)
+ "--------------------------------------------------------------");
System.out.println("書籍編號為" + (i + 1) + "的詳細(xì)信息為:");
System.out.print("書名:" + book.booknames[i] + " ");
System.out.print("作者:" + book.authors[i] + " ");
System.out.print("出版日期:" + book.pubdates[i] + " ");
System.out.print("總頁數(shù):" + book.sumpaginations[i] + " ");
System.out.println("借閱者:" + book.borrowreaders[i]);
}
}
System.out.println(
"---------------------------------------------------------------------------------------------------------");
}
// 展示相關(guān)圖書信息
public void showPart(int a) {
int i = a;
System.out.println(
"---------------分界線---------------------------------------------------------------------------------------------------");
System.out.println("書籍編號" + (i) + "的詳細(xì)信息為:");
System.out.print("書名:" + book.booknames[i - 1] + " ");
System.out.println("作者:" + book.authors[i - 1] + " ");
System.out.print("出版日期:" + book.pubdates[i - 1] + " ");
System.out.print("總頁數(shù):" + book.sumpaginations[i - 1] + " ");
System.out.println("借閱者:" + book.borrowreaders[i - 1]);
System.out.println(
"---------------------------------------------------------------分界線---------------------------------------------------");
}
//根據(jù)編號判斷要全局展示還是部分展示
public int bookinfo() {
for (int i = 0; i < book.booknames.length; i++) {
if (book.booknames[i] != null) {
System.out.println("書名編號" + (i + 1) + ":" + book.booknames[i] + " ");
}
}
System.out.print("輸入相應(yīng)編號即可查看相應(yīng)書籍的詳細(xì)信息(輸入0則查看所有信息):");
Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
return i;
}
// 錄入新書籍判斷
public int addBook(String bookname, String author, String pubdate, String sumpagination) {
int flag = 0;// 1為成功,0為圖書館已經(jīng)存在該新書,-1為倉庫爆滿
if (book.booknames[book.booknames.length - 1] != null) {
flag = -1;// 爆滿
}
if (book.booknames[book.booknames.length - 1] == null) {
for (int i = 0; i < book.booknames.length; i++) {
if (bookname.equals(book.booknames[i])) {
flag = 0;// 已存在book.booknames[i]
break;
}
if (!(bookname.equals(book.booknames[i]))) {
// 添加書籍
add(bookname, author, pubdate, sumpagination);
flag = 1;// 成功
break;
}
}
}
return flag;
}
// 錄入新書籍
public void add(String bookname, String author, String pubdate, String sumpagination) {
for (int i = 0; i < book.booknames.length; i++) {
if (book.booknames[i] == null) {
book.booknames[i] = bookname;
book.authors[i] = author;
book.pubdates[i] = pubdate;
book.sumpaginations[i] = sumpagination;
break;
}
}
}
// 存放書本的剩余容量
public int remainSpace() {
int count = 0;
try {
for (int i = 0; i < book.booknames.length; i++) {
if (book.booknames[i] == null) {
++count;
}
}
} catch (Exception e) {
// TODO: handle exception
}
return count;
}
// 修改時根據(jù)書名查找相關(guān)的書籍信息
public int selectBook(String bookname) {
int flag = 0;
for (int i = 0; i < book.booknames.length; i++) {
if (bookname.equals("")) {
flag = -1;// -1為未輸入書名
break;
}
// 其他情況下為匹配館里的圖書
if (bookname.equals(book.booknames[i])) {
flag = 1;// 1找到相關(guān)書名
showPart(i + 1);
break;
}
if (!bookname.equals(book.booknames[i])) {
if (i == book.booknames.length - 1) {
flag = 0;// 0為未找到
}
}
}
return flag;
}
// 根據(jù)書名查找索引,有此書返其索引,無返-1
public int selectIndex(String bookname) {
int flag = -1;
for (int i = 0; i < book.booknames.length; i++) {
if (bookname.equals(book.booknames[i])) {
flag = i;
}
}
return flag;// 找不到此書
}
// 修改書籍信息 1書名 2作者 3出版日期 4總頁數(shù) 5借閱者
public void modinfo(int a, String value, int index) {
switch (a) {
case 1:
book.booknames[index] = value;
break;
case 2:
book.authors[index] = value;
break;
case 3:
book.pubdates[index] = value;
break;
case 4:
book.sumpaginations[index] = value;
break;
case 5:
book.borrowreaders[index] = value;
break;
}
}
// 刪除書籍功能
public void deleteBook(String bookname) {
int a = selectIndex(bookname);
book.booknames[a] = null;
book.authors[a] = null;
book.pubdates[a] = null;
book.sumpaginations[a] = null;
book.booknames[a] = null;
}
// 檢查書是否存在館里和是否已借出
public int testReader(String bookname) {
// 館里有此書,查找此書的索引,有此書a>=0,無返-1
int a = selectIndex(bookname);
// 館里有此書
if (a >= 0) {
if ((book.borrowreaders[a].equals("無") || book.borrowreaders[a].equals("")))// 無人借此書,""為掃描器的直接回車值
return 0;//未借
else
return 1;//已借
} else {
return -1;// 館里沒有此書
}
}
//將借閱者設(shè)置為無或者為空
public void setBorrowReader(String bookname){
int a = selectIndex(bookname);
book.borrowreaders[a]="無";
}
//查詢指定書的借閱者
public String getBorrowReader(String bookname){
int a = selectIndex(bookname);
return book.borrowreaders[a];
}
//書籍借閱功能
public void borrow(String bookname,String readername){
int a = selectBook(bookname);
book.borrowreaders[a]=readername;
}
}
//在LibraryUI.java中輸入以下代碼
package com.jiaxun.library.ui;
import java.util.Scanner;
import com.jiaxun.library.bo.Bo;
public class LibraryUI {
Bo bo = new Bo();
public static void main(String[] args) {
LibraryUI ui = new LibraryUI();
ui.welcome();// 歡迎界面
}
// 歡迎界面
public void welcome() {
System.out.println("*********************************");
System.out.println("********小☆詢圖書館管理系統(tǒng)********");
System.out.println("*********************************");
loginBoundary();// 登錄界面
}
// 管理員登錄界面
public void loginBoundary() {
System.out.print("管理員賬號:");
Scanner scanner = new Scanner(System.in);
String username = scanner.nextLine();
System.out.print("登 錄 密 碼 :");
Scanner scanner1 = new Scanner(System.in);
String password = scanner1.nextLine();
int flag = bo.login(username, password);// 登錄驗(yàn)證
switch (flag) {
case 0:// 密碼錯誤
System.out.println("密碼錯誤,請重新輸入。");
loginBoundary();
break;
case 1:// 驗(yàn)證通過
System.out.println("登錄成功!");
showMenu();// 登錄成功后跳轉(zhuǎn)至菜單功能管理
break;
case -1:// 賬戶不存在
System.out.println("您輸入的管理員賬號不存在,請確認(rèn)后再輸入。");
loginBoundary();
break;
}
}
// 菜單功能展示列表
public void showMenu() {
System.out.println("請輸入功能編號進(jìn)入相應(yīng)的功能:");
System.out.println("所有的圖書信息——編號:1");
System.out.println("錄入新的書籍——編號:2");
System.out.println("修改書籍基本信息——編號:3");
System.out.println("刪除書籍功能——編號:4");
System.out.println("還書功能——編號:5");
System.out.println("書籍借閱功能——編號:6");
System.out.println("退出系統(tǒng)——編號:7");
System.out.print("請輸入功能編號:");
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();//
switch (a) {
case 1:// 圖書信息
showBook();
returnMethod();// 返回主菜單
break;
case 2:// 錄入新書籍
addBook();
break;
case 3:// 修改書籍基本信息
modBookInfo();
break;
case 4:// 刪除書籍
delete();
break;
case 5:// 還書
returnBook();
break;
case 6:// 借閱
borrowBook();
break;
case 7:// 退出登錄
welcome();
scanner.close();
break;
}
}
// 返回主菜單功能
public void returnMethod() {
System.out.print("按下ENTER鍵返回到功能主菜單:");
Scanner scanner = new Scanner(System.in);
String i = scanner.nextLine();
showMenu();
}
// 圖書信息展示功能
public void showBook() {
bo.showBook();
}
// 錄入新書籍功能
public void addBook() {
System.out.print("請輸入要增加的書籍名稱:");// 書名
Scanner scanner = new Scanner(System.in);
String bookname = scanner.nextLine();
System.out.print("請輸入" + bookname + "的作者:");// 作者
Scanner scanner1 = new Scanner(System.in);
String author = scanner1.nextLine();
System.out.print("請輸入" + bookname + "的出版日期(格式如2000-01-01):");// 出版日期
Scanner scanner2 = new Scanner(System.in);
String pubdate = scanner2.nextLine();
System.out.print("請輸入" + bookname + "的總頁數(shù)(頁):");// 總頁數(shù)
Scanner scanner3 = new Scanner(System.in);
String sumpagination = scanner3.nextLine();
int flag = bo.addBook(bookname, author, pubdate, sumpagination);
// 1為成功,0為圖書館已經(jīng)存在該新書,-1為倉庫爆滿
switch (flag) {
case 1:
System.out.println("新書籍" + bookname + "添加成功,目前圖書館還有" + bo.remainSpace() + "個位置可以存放新書籍。");
returnMethod();// 書籍添加界面中的返回功能,可選擇繼續(xù)添加或者回到主菜單
break;
case 0:
System.out.println("添加書籍失敗," + bookname + "已存在該圖書館中!");
returnMethod();// 書籍添加界面中的返回功能,可選擇繼續(xù)添加或者回到主菜單
break;
case -1:
System.out.println("添加失敗,圖書館已經(jīng)存儲量已經(jīng)爆滿了,請刪除部分書籍后再進(jìn)行添加。");
showMenu();
break;
}
}
// 修改書籍信息
public void modBookInfo() {
System.out.print("請輸入您要操作的書名:");
Scanner scanner = new Scanner(System.in);
String bookname = scanner.nextLine();
// 根據(jù)書名查找相關(guān)的書籍信息
int flag = bo.selectBook(bookname);
switch (flag) {
case 0:
System.out.print("未找到相關(guān)書籍,輸入0回車進(jìn)入該層功能,輸入1回車返回到功能主菜單。");
int a = scanner.nextInt();
if (a == 0) {
modBookInfo();
} else if (a == 1) {
showMenu();
}
break;
case -1:
System.out.println("書名為空,輸入0回車進(jìn)入該層功能,輸入1回車返回到功能主菜單。");
int a1 = scanner.nextInt();
if (a1 == 0) {
modBookInfo();
} else {
showMenu();
}
break;
case 1:
System.out.print("以上信息為相關(guān)書名查找的結(jié)果,其中(數(shù)字“1”代表書名,數(shù)字“2”代表作者,數(shù)字“3”代表出版日期,數(shù)字“4”代表總頁數(shù),數(shù)字“5”代表借閱者)輸入相關(guān)數(shù)字可以修改相關(guān)信息:");
int a2 = scanner.nextInt();// 1書名 2作者 3出版日期 4總頁數(shù) 5借閱者
if (a2 > 0 && a2 < 6) {
System.out.print("請輸入您想修改的" + sortName(a2) + ":");
Scanner scanner2 = new Scanner(System.in);
String value = scanner2.nextLine();
int index = bo.selectIndex(bookname);
bo.modinfo(a2, value, index);
System.out.println(bookname + "這本書的相關(guān)信息修改成功!");
returnMethod();
} else {
System.out.println("您輸入的數(shù)字不合法。請重試!");
modBookInfo();
}
break;
}
}
// 修改的分類名稱
public String sortName(int flag) {
if (flag == 1)
return "書名";
if (flag == 2)
return "作者";
if (flag == 3)
return "出版日期";
if (flag == 4)
return "總頁數(shù)";
else
return "借閱者";
}
// 刪除書籍功能
public void delete() {
System.out.print("請輸入要被刪除的書名:");
Scanner scanner = new Scanner(System.in);
String bookname = scanner.nextLine();
int flag = bo.testReader(bookname);
// 存在此書并無人借
if (flag == 0) {
bo.deleteBook(bookname);
System.out.println(bookname + "已從圖書館成功移除!輸入0回到主菜單,輸入1則繼續(xù)刪除");
delReturn();
} else if (flag == 1) {// 有人借
System.out.println("此書已借出,請等待歸還后再刪除。輸入0回到主菜單,輸入1則繼續(xù)刪除");
delReturn();
} else {// 不存在此書
System.out.println("本館不存在此書,請仔細(xì)較對。輸入0回到主菜單,輸入1則繼續(xù)刪除");
delReturn();
}
}
// 刪除的返回操作
public void delReturn() {
Scanner scanner1 = new Scanner(System.in);
int i = scanner1.nextInt();
if (i == 0) {
showMenu();
} else if (i == 1) {
delete();
}
}
// 還書功能
public void returnBook() {
System.out.print("請輸入要還的書籍名稱:");
Scanner scanner = new Scanner(System.in);
String bookname = scanner.nextLine();
int flag = bo.testReader(bookname);
if (flag == 0) {
System.out.println(bookname + "暫未借出。");
System.out.print("輸入0回車返回至主菜單,輸入其他鍵則繼續(xù)還書");
String a = scanner.nextLine();
if(a.equals("0")){
showMenu();
}else {
returnBook();
}
} else if (flag == -1) {
System.out.println(bookname + "不存在該圖書館中。");
System.out.print("輸入0回車返回至主菜單,輸入其他鍵則繼續(xù)還書");
String a = scanner.nextLine();
if(a.equals("0")){
showMenu();
}else {
returnBook();
}
} else if (flag == 1) {
System.out.println(bo.getBorrowReader(bookname) + "已經(jīng)還書成功!");
bo.setBorrowReader(bookname);
System.out.print("輸入0回車返回至主菜單,輸入其他鍵則繼續(xù)還書");
String a = scanner.nextLine();
if(a.equals("0")){
showMenu();
}else {
returnBook();
}
}
}
// 書籍借閱功能
public void borrowBook() {
System.out.print("請輸入要借的書名:");
Scanner scanner = new Scanner(System.in);
String bookname = scanner.nextLine();
int flag = bo.testReader(bookname);
switch (flag) {
case 0://存在此書并無人借的情況
System.out.println("請輸入借閱者的名字:");
String readername = scanner.nextLine();
bo.borrow(bookname,readername);
System.out.println(readername+"從該圖書館里借出了以"+bookname+"為名的書籍。");
System.out.print("輸入0回車返回至主菜單,輸入1回車則繼續(xù)借書:");
int a0 = scanner.nextInt();
if(a0==0)
showMenu();
if(a0==1)
borrowBook();
break;
case 1://存在此書被借的情況
System.out.println("借書失敗," + bookname + "已被借!");
System.out.print("輸入0回車返回至主菜單,輸入1回車則繼續(xù)借書:");
int a = scanner.nextInt();
switch (a) {
case 0:
showMenu();
break;
case 1:
borrowBook();
break;
}
case -1://不存在此書的情況
System.out.println("借書失敗," + bookname + "不存在該圖書館中。");
System.out.print("輸入0回車返回至主菜單,輸入1回車則繼續(xù)借書:");
int a1 = scanner.nextInt();
switch (a1) {
case 0:
showMenu();
break;
case 1:
borrowBook();
break;
}
}
}
}
更多學(xué)習(xí)資料請關(guān)注專題《管理系統(tǒng)開發(fā)》。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 圖書管理系統(tǒng)java代碼實(shí)現(xiàn)
- 圖書管理系統(tǒng)java版
- Java+MySQL實(shí)現(xiàn)圖書管理系統(tǒng)(完整代碼)
- 一個簡陋的java圖書管理系統(tǒng)
- java實(shí)現(xiàn)圖書館管理系統(tǒng)
- java實(shí)現(xiàn)簡單的圖書管理系統(tǒng)
- JAVA初級項(xiàng)目——實(shí)現(xiàn)圖書管理系統(tǒng)
- java+mysql實(shí)現(xiàn)圖書館管理系統(tǒng)實(shí)戰(zhàn)
- java實(shí)現(xiàn)圖書管理系統(tǒng)
- Java?Web實(shí)現(xiàn)簡易圖書管理系統(tǒng)
相關(guān)文章
Java實(shí)現(xiàn)在線五子棋對戰(zhàn)游戲(人機(jī)對戰(zhàn))
這篇文章主要為大家詳細(xì)介紹了如何利用Java語言實(shí)現(xiàn)在線五子棋對戰(zhàn)游戲(人機(jī)對戰(zhàn)),文中的實(shí)現(xiàn)步驟講解詳細(xì),感興趣的可以嘗試一下2022-09-09
IDEA導(dǎo)入Eclipse項(xiàng)目的方法步驟(圖文教程)
這篇文章主要介紹了IDEA導(dǎo)入Eclipse項(xiàng)目的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
SpringBoot項(xiàng)目如何連接MySQL8.0數(shù)據(jù)庫
這篇文章主要介紹了SpringBoot項(xiàng)目如何連接MySQL8.0數(shù)據(jù)庫,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11
Java實(shí)現(xiàn)兩人五子棋游戲(四) 落子動作的實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)兩人五子棋游戲,落子動作的實(shí)現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03
關(guān)于SpringBoot使用@ExceptionHandler注解局部異常處理
這篇文章主要介紹了關(guān)于SpringBoot使用@ExceptionHandler注解局部異常處理,SpringBoot提供了多種方式來處理異常,在本文中,我們將介紹SpringBoot中的@ExceptionHandler注解,演示如何使用它進(jìn)行局部異常處理2023-07-07
SpringBoot中自定義注解實(shí)現(xiàn)參數(shù)非空校驗(yàn)的示例
這篇文章主要介紹了SpringBoot中自定義注解實(shí)現(xiàn)參數(shù)非空校驗(yàn),幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下2020-11-11

