Java 实现图书馆管理系统
生活随笔
收集整理的這篇文章主要介紹了
Java 实现图书馆管理系统
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
一:創建對象
1.學生類對象Student?:
2.圖書類對象book :
3.管理員類對象OP:
二.創建主要交互界面MainMenu,并實現主界面功能
1.創建交互界面:
2.實現主界面功能:
三:創建OP管理界面:
(1).交互界面:
(2):實現"管理學生"功能:
2.實現"管理圖書"功能OPbookManage:
(1).交互界面:
(2)功能實現:
四.創建學生功能界面:
1.創建交互界面
2.實現功能:
Ciallo~(∠?ω< )⌒★我是夏娜!
今天給大家帶來一個圖書館管理系統.
通過本管理系統,可以實現管理員(OP)和學生(Student)兩大類功能
管理員:學生以及圖書的增刪改查
學生:借書系統以及密碼重置
增加賬號安全系統:學生輸錯密碼過多賬號鎖定,可通過管理員解封,管理員輸錯密碼無法解封
完整的交互系統
一:創建對象
1.學生類對象Student?:
public class Student {private String name;private String sex;private int id;private String bookid;private String phonenum;private boolean ifbook;//是否借書private boolean safe;//true代表賬號正常,fause代表賬號被封private String password;//我是啥幣,我居然忘記整密碼了;public Student(){}public Student(String name,String sex,int id,String bookid,String phonenum,boolean safe,String password,boolean ifbook){this.name=name;this.id=id;this.sex=sex;this.bookid=bookid;this.phonenum=phonenum;this.safe=safe;this.password=password;this.ifbook=ifbook;}public String getName(){return name;}public void setName(String name){ this.name=name; }public String getSex(){return sex;}public void setSex(String sex){this.sex=sex;}public int getId(){return id;}public void setId(int id){this.id=id;}public String getBookid(){return bookid;}public void setBookid(String bookid){this.bookid=bookid;}public String getPhonenum(){return phonenum;}public void setPhonenum(String phonenum) { this.phonenum = phonenum; }public boolean getSafe() { return safe; }public void setSafe(boolean safe) { this.safe = safe; }public String getPassword() { return password; }public void setPassword(String password) { this.password = password; }public boolean getIfbook() { return ifbook; }public void setIfbook(boolean ifbook) { this.ifbook = ifbook; }2.圖書類對象book :
public class book {private String bookid;private String bookname;private boolean jie; //true表示借走,false表示沒借走public book() { }public book(String bookid,String bookname,boolean jie){this.bookid=bookid;this.bookname=bookname;this.jie=jie;}public String getBookid(){return bookid;}public void setBookid(String bookid){this.bookid=bookid;}public String getBookname() {return bookname;}public void setBookname(String bookname) {this.bookname = bookname;}public boolean getJie() {return jie;}public void setJie(boolean jie) {this.jie = jie;}}3.管理員類對象OP:
public class OP { //我超,( )( )!private int opid=114514;private int oppassword=1919810;private boolean safe;public boolean getSafe() {return safe;}public void setSafe(boolean safe) {this.safe = safe;} }(OP賬號不可更改)
二.創建主要交互界面MainMenu,并實現主界面功能
在此使用ArrayList容器保存學生對象(list2)
1.創建交互界面:
import java.util.Scanner; import java.util.ArrayList; public class MainMenu {static ArrayList<Student> list2 = new ArrayList<>();public static void main(String[] args) {while (true) {System.out.println("Ciallo~(∠?ω< )⌒★ 歡迎來到圖書管理系統!");System.out.println("請選擇您需要的操作:");System.out.println("1.普通賬號登錄");System.out.println("2.管理員賬號登錄(默認管理員賬號:114514 密碼:1919810)");System.out.println("3.注冊普通法賬號");System.out.println("4.忘記密碼");System.out.println("5.退出");System.out.println("請選擇:");Scanner in = new Scanner(System.in);String a = in.next();switch (a) {case "1":login(list2);break;case "2":OPlogin();break;case "3":zhuce(list2);break;case "4":wangji(list2);break;case "5":System.out.println("拜拜拜拜拜拜拜拜拜拜拜拜拜拜拜拜拜拜");System.exit(0);}}}2.實現主界面功能:
注冊賬號要求:
id唯一
手機號必須11位
找回密碼要求:
輸入正確姓名和手機號
//功能方法****************************************************************//登錄private static void login(ArrayList<Student> list) {Scanner in = new Scanner(System.in);System.out.println("請輸入賬號(id):");int a = in.nextInt();if (ifOnly(list, a)) {System.out.println("賬號不存在!");return;}for (int i = 0; i < 3; i++) {System.out.println("請輸入密碼:");String password = in.next();int index = findindex(list, a);if (!list.get(index).getSafe()) {System.out.println("(笑臉手指)該賬號已鎖定,請聯系管理員(OP)解封!");return;}if (list.get(index).getPassword().equals(password)) {STUmenu x = new STUmenu();System.out.println("亻爾 女子");x.STUmenu114(list,index);//進入STUmenureturn;}if (i == 2) {list.get(index).setSafe(false);System.out.println("(笑臉手指)輸入錯誤次數過多!該賬號已鎖定!");}System.out.println("密碼錯誤!還有" + (2 - i) + "次機會!");}}//OP上號private static void OPlogin() {OP OP6 = new OP();Scanner in = new Scanner(System.in);int OP1, OP2;while (true) {System.out.println("請輸入您的OP賬號");try {OP1 = in.nextInt();if (OP1 != 114514)System.out.println("OP賬號不存在!");elsebreak;} catch (Exception e) {System.out.println("輸入非法!\n\n");return;}}if (OP6.getSafe()) {System.out.println("(流汗黃豆)您的OP賬號已鎖定!");return;}System.out.println("請輸入您的OP密碼:");for (int i = 0; i < 3; i++) {OP2 = in.nextInt();OPmenu OP666 = new OPmenu();if (OP2 == 1919810) {OP666.OPmenu();break;}if (i == 2) {OP6.setSafe(false);System.out.println("OP賬戶已鎖定!vivo50告訴你密碼(笑)");System.exit(0);}System.out.print("密碼錯誤!請重試!");System.out.println("(您還有" + (2 - i) + "次機會!)");}}//注冊public static void zhuce(ArrayList<Student> list) {Scanner in = new Scanner(System.in);System.out.print("請輸入新學生的id:");int id;while (true) {id = in.nextInt();if (ifOnly(list, id)) {System.out.println("id注冊成功^_^");break;}System.out.println("id已經被占用,請重新輸入");}String p1;while (true) {System.out.println("請輸入新密碼:");p1 = in.next();System.out.println("請再次輸入密碼");String p2 = in.next();if (p1.equals(p2))break;System.out.println("兩次密碼不相同!請重試!");}System.out.print("請輸入姓名:");String name = in.next();System.out.println("請輸入您的性別\n支持112種性別:");String sex = in.next();System.out.println("請輸入11位電話號碼:");String phonenum;while (true) {phonenum = in.next();if (phonenum.length() == 11) {System.out.println("輸入成功!已完成注冊!");break;}System.out.println("電話號碼格式非法!請重新輸入!");}Student s = new Student(name, sex, id, null, phonenum, true, p1,false);list.add(s);}//忘記密碼private static void wangji(ArrayList<Student> list) {Scanner in = new Scanner(System.in);System.out.println("請輸入您的原id:");int id = in.nextInt();if (ifOnly(list, id)) {System.out.println("未查詢到id(" + id + ")!");return;}int index = findindex(list, id);System.out.println("查詢到id(" + id + "),進入驗證環節");System.out.println("請輸入您的手機號碼:");String num = in.next();System.out.println("請輸入您的姓名:");String name = in.next();Student stu = list.get(index);if (!(stu.getPhonenum().equals(num) && stu.getName().equals(name))) {System.out.println("手機號或姓名輸入錯誤!(笑臉手指)");return;}System.out.println("驗證成功!開始修改");String p1;while (true) {System.out.println("請輸入新密碼:");p1 = in.next();System.out.println("請再次輸入密碼");String p2 = in.next();if (p1.equals(p2))break;System.out.println("兩次密碼不相同!請重試!");}stu.setPassword(p1);System.out.println("密碼重置成功!");}//輔助方法**********************************************************************//查找id的序列public static int findindex(ArrayList<Student> list, int x) {int i = 0;for (; i < list.size(); i++) {if (list.get(i).getId() == x)break;}return i;}//id查重public static boolean ifOnly(ArrayList<Student> list, int x) {for (Student z : list) {if (x == z.getId()) {return false;}}return true;} }三:創建OP管理界面:
這里我分成了"管理學生"和"管理圖書"的兩個大功能,
為了方便管理,我將主要交互界面和"管理學生"功能放在了一個類中
1.創建主要交互界面及實現"管理學生"功能OPmenu:
(1).交互界面:
import java.util.ArrayList; import java.util.Scanner;public class OPmenu {public void OPmenu(){while (true) {System.out.println(" 歡迎您,尊貴的管理員!");System.out.println("請選擇您的操作:");System.out.println("1.學生管理");System.out.println("2.圖書管理");System.out.println("3.返回上一級");System.out.println("請選擇:");Scanner in = new Scanner(System.in);String a = in.next();switch (a) {case "1":StuManage();break;case "2":OPbookManage.OPbookManage666();break;case "3":return;default:System.out.println("輸入非法!請重試!");}}}public static void StuManage(){ArrayList<Student> list2=MainMenu.list2;while(true){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("7.返回上一級");System.out.println("請選擇:");Scanner in = new Scanner(System.in);String a=in.next();switch (a){case "1":findStu(list2);break;case "2":MainMenu.zhuce(list2);break;case "3":DelStu(list2);break;case "4":OutputAllStu(list2);break;case "5":changeStu(list2);break;case "6":jiefeng(list2);case "7":break;default:System.out.println("輸入非法!請重試!");}}}(2):實現"管理學生"功能:
//************************************************************************************public static void findStu(ArrayList<Student>list2){System.out.println("請輸入您想查詢的學生id:");Scanner in=new Scanner(System.in);int id = in.nextInt();// MainMsnu中的IfOnly方法來查找id是否存在if(MainMenu.ifOnly(list2,id)){System.out.println("該id不存在!");return;}int index=MainMenu.findindex(list2,id);System.out.println("查詢到學生"+list2.get(index).getName()+".");System.out.println("學號\t\t\t姓名\t\t\t性別\t\t\t電話號碼\t\t\t密碼\t\t\t");outStu(list2,index);}private static void DelStu(ArrayList<Student>list2){System.out.println("請輸入您想刪除的學生id:");Scanner in=new Scanner(System.in);int id = in.nextInt();if(MainMenu.ifOnly(list2,id)){System.out.println("該id不存在!");return;}int index=MainMenu.findindex(list2,id);list2.remove(index);System.out.println("刪除成功!");}private static void OutputAllStu(ArrayList<Student>list2){System.out.println("學號\t\t\t姓名\t\t\t性別\t\t\t電話號碼\t\t\t密碼\t\t\t");for (int i = 0; i < list2.size(); i++) {outStu(list2,i);}}private static void changeStu(ArrayList<Student>list2){System.out.println("請輸入想修改學生的id:");Scanner in = new Scanner(System.in);int id=in.nextInt();if(MainMenu.ifOnly(list2,id)){System.out.println("該學生不存在!請檢查輸入是否有誤!");}int index=MainMenu.findindex(list2,id);System.out.println("請輸入想修改的東西:\n1.姓名\n2.性別\n3.電話號碼\n4.密碼\n5.退出");String a=in.next();switch (a){case "1":System.out.println("請輸入新的姓名:");list2.get(index).setName(in.next());System.out.println("修改完成");break;case "2":System.out.println("請輸入新的性別:");list2.get(index).setSex(in.next());System.out.println("修改完成");break;case "3":System.out.println("請輸入新的信息:");list2.get(index).setPhonenum(in.next());System.out.println("修改完成");break;case "4":System.out.println("請輸入新密碼:");list2.get(index).setPassword(in.next());System.out.println("修改完成");break;case "5":return;default:System.out.println("輸入非法!請重試!");}}private static void jiefeng(ArrayList<Student> list2){System.out.println("請輸入想要解封學生id:");Scanner in = new Scanner(System.in);int id = in.nextInt();if(MainMenu.ifOnly(list2,id)){System.out.println("未查詢到id");return;}int index=MainMenu.findindex(list2,id);if(list2.get(index).getSafe()){System.out.println("該學生無需解封!");return;}System.out.println("查詢到學生"+list2.get(index).getName()+"是否解封?\n1.是\n2.否");String a = in.next();switch (a){case "1":list2.get(index).setSafe(true);System.out.println("已解封");return;case "2":System.out.println("已取消!");return;default:System.out.println("輸入非法!請重試!");}} //***************************************************************************//輸出某學生信息private static void outStu(ArrayList<Student>list2 ,int index){System.out.println(list2.get(index).getId()+"\t\t\t"+list2.get(index).getName()+"\t\t\t"+list2.get(index).getSex()+"\t\t\t"+list2.get(index).getPhonenum()+"\t\t\t"+list2.get(index).getPassword());} }2.實現"管理圖書"功能OPbookManage:
在此使用ArrayList容器保存圖書對象(list1)
(1).交互界面:
import java.util.Scanner; import java.util.ArrayList; public class OPbookManage {public static ArrayList<book> list1 = new ArrayList<>();public static void OPbookManage666() {ArrayList<book> list1 = STUmenu.list1;Scanner in = new Scanner(System.in);while (true) {System.out.println("圖書管理:");System.out.println("1.增加圖書");System.out.println("2.刪除圖書");System.out.println("3.查找圖書信息");System.out.println("4.圖書一覽");System.out.println("5.返回上一級");String a = in.next();switch (a) {case "1":addBook(list1);break;case "2":delBook(list1);break;case "3":findBook(list1);break;case "4":allBook(list1);break;case"5":return;default:System.out.println("輸入非法!請重新輸入!");}}}(2)功能實現:
//********************************************************private static void addBook(ArrayList<book> list1) {System.out.println("請輸入圖書id");Scanner in = new Scanner(System.in);String bookid = in.next();if (bookChaChong(list1, bookid)) {System.out.println("id已被占用!");return;}System.out.println("請輸入圖書名:");String bookName = in.next();book NEWbook = new book();NEWbook.setBookid(bookid);NEWbook.setBookname(bookName);NEWbook.setJie(false);list1.add(NEWbook);System.out.println("圖書添加成功!");}private static void delBook(ArrayList<book> list1) {System.out.println("請輸入想要刪除的圖書id:");Scanner in = new Scanner(System.in);String bookid = in.next();if (!bookChaChong(list1, bookid)) {System.out.println("未查找到id:" + bookid + "的圖書!");return;}System.out.println("查找到圖書!確認要刪除嗎");while (true) {System.out.println("1.確認");System.out.println("2.當然確認");System.out.println("3.終止且返回");String a = in.next();switch (a) {case "1":case "2":int index = STUmenu.findindex(list1, bookid);//借用STUmenu的方法list1.remove(index);System.out.println("刪除成功!");return;case "3":System.out.println("已終止");return;default:System.out.println("輸入非法!請重新輸入!");}}}private static void findBook(ArrayList<book> list1) {System.out.println("請輸入想要查找的圖書id:");Scanner in = new Scanner(System.in);String bookid = in.next();if (!bookChaChong(list1, bookid)) {System.out.println("未找到圖書!");return;}int index = STUmenu.findindex(list1, bookid);//借用STUmenu的方法book b = list1.get(index);System.out.println("id:\t" + b.getBookid());System.out.println("圖書名稱:\t" + b.getBookname());if (b.getJie()) {int Stuindex=findSTUindex(MainMenu.list2,bookid);System.out.print("借閱狀態:已被"+MainMenu.list2.get(Stuindex).getName()+"借走");} else {System.out.println("借閱狀態:未借閱");}}public static void allBook(ArrayList<book> list1){System.out.println("圖書一覽表");System.out.println("id\t\t書名\t\t借閱狀態");for (int i = 0; i < list1.size(); i++) {System.out.print(list1.get(i).getBookid()+"\t\t"+list1.get(i).getBookname()+"\t\t");if(list1.get(i).getJie())System.out.println("已借");elseSystem.out.println("未借");}}//*****************************************************************************************//圖書id查重private static boolean bookChaChong(ArrayList<book> list1, String bookid) {for (int i = 0; i < list1.size(); i++) {if (list1.get(i).getBookid().equals(bookid))return true;}return false;}//通過圖書id查找學生索引private static int findSTUindex(ArrayList<Student> list2,String bookid){for (int i = 0; i < list2.size(); i++) {if(list2.get(i).getBookid().equals(bookid))return i;}return -1;}四.創建學生功能界面:
1.創建交互界面
import java.util.Scanner; import java.util.ArrayList; public class STUmenu {public static ArrayList<book>list1=OPbookManage.list1;//導入OPbookManage的list1public void STUmenu114(ArrayList<Student> list2, int index) {while(true) {System.out.println("^_^歡迎來到圖書館借書系統!");System.out.println("請選擇:");System.out.println("1.借書");System.out.println("2.還書");System.out.println("3.圖書一覽");System.out.println("4.返回上一級");System.out.print("請鍵入你的選擇:");Scanner in = new Scanner(System.in);String a = in.next();switch (a) {case "1":jie(list1, list2,index);break;case "2":huan(list1,list2,index);break;case "3":OPbookManage.allBook(list1);break;case "4":return;default:System.out.println("輸入非法!請重新選擇!");}}}2.實現功能:
private void jie(ArrayList<book> list1,ArrayList<Student> list2,int i) {Scanner in = new Scanner(System.in);if(list2.get(i).getIfbook()){System.out.println("您已借書!請先還書!");return;}System.out.println("請輸入圖書名稱:");String name=in.next();if(!chunzai(list1,name)){System.out.println("圖書 "+name+" 不存在!");return;}int index=findindex(list1,name);if(list1.get(index).getJie()){System.out.println("書被借走辣(悲)");return;}System.out.println("借書成功!");list1.get(index).setJie(true);list2.get(i).setBookid(list1.get(index).getBookid());//在學生類存儲book的idlist2.get(i).setIfbook(true);}private static void huan(ArrayList<book>list1,ArrayList<Student>list2,int index){Scanner in = new Scanner(System.in);if(!list2.get(index).getIfbook()){System.out.println("您未借書,無需還書!");return;}System.out.println("2222");System.out.println("您當前借的書為:"+findname(list1,list2,index)+",您確認要還么?");System.out.println("1.還還還!");System.out.println("2.當然要還辣!");System.out.println("3.不還");System.out.print("請選擇:");while(true){String a=in.next();switch (a){case "1":case "2":changehuan(list1,list2,index);return;case"3":System.out.println("好好好~");return;default:System.out.println("輸入非法!請重新選擇!");break;}}}//**************************************************************************************//查找圖書是否存在private static boolean chunzai(ArrayList<book> list1,String x){for (int i = 0; i < list1.size(); i++) {if(list1.get(i).getBookname().equals(x))return true;}return false;}//用圖書名字查找圖書索引;public static int findindex(ArrayList<book> list1,String name){int i;for (i = 0; i < list1.size(); i++) {if(list1.get(i).getBookname().equals(name))return i;}return -1;} //通過學生類保存的圖書id來查找圖書名private static String findname(ArrayList<book>list1,ArrayList<Student>list2,int index) {for (int i = 0; i < list2.size(); i++) {if (list2.get(index).getBookid().equals(list1.get(i).getBookid()))return list1.get(i).getBookname();}return null;}//改變圖書狀態為未借閱,學生狀態為未借書private static void changehuan(ArrayList<book>list1,ArrayList<Student>list2,int index){list2.get(index).setIfbook(false);list2.get(index).setBookid(null);String bookid=list2.get(index).getBookid();int bookIndex=findindex(list1,bookid);list1.get(bookIndex).setJie(false);System.out.println("更改完成!");}}大功告成!完成了整個圖書管理系統功能!
本人第一次發博客,如果覺得我的文章有幫助的話,可以點個贊哦^_^
總結
以上是生活随笔為你收集整理的Java 实现图书馆管理系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Consistent-Teacher
- 下一篇: 钉钉、企业微信和飞书对比