本周把启航一面的任务的框架和所有功能的实现都写完了,但对于新添加的图书保存文件的实现还没有解决...
本后的Java学习了API的部分类,和面对对象的部分进阶教程,
后附源码
package com.book;
import java.util.ArrayList;
import java.util.Scanner;
public class B_Main {
//管理者数表
public static ArrayList<Manager> ListManager = new ArrayList<>();
//图书数组
public static ArrayList<Book> ListBook = new ArrayList<>();
//学生数组
public static ArrayList<BorrowStudent> ListStudent = new ArrayList<>();
//身份选择代号
public static final String MANAGER = "1";
public static final String STUDENT= "2";
public static final String EXIT= "0";
//管理员登录选择代号
public static final String MANAGER_GET = "1";
public static final String FIND_MANGER_COUNT = "2";
public static final String BUILD_MANAGER_COUNT = "3";
//学生登录选择代号
public static final String STUDENT_GET = "1";
public static final String BUILD_STUDENT_COUNT = "2";
public static final String FIND_STUDENT_COUNT = "3";
//管理员操作代号
public static final String ADD_BOOK = "1";
public static final String FIND_BOOK = "2";
public static final String FIND_STUDENT = "3";
public static final String REVISE_BOOK_INFORMATION = "4";
public static void main(String[] args) {
String choose;
Scanner cin = new Scanner(System.in);
while(true) {
menu1();
choose = cin.next();
switch (choose) {
//管理者
case MANAGER -> {
menu2();
String choose1 = cin.next();
switch (choose1){
case MANAGER_GET -> {
if(ManGet(ListManager)){
loop1 : while (true) {
menu5();
//管理者登录后的选择
choose = cin.next();
switch (choose) {
//
case ADD_BOOK -> AddBook(ListBook);
case FIND_BOOK -> {
System.out.println("请输入您要查找的图书信息");
String Find = cin.next();
if (!OutFindBook(Find, ListBook)) {
System.out.println("未查询到有关书籍");
}
}
case FIND_STUDENT -> {
System.out.println("请输入您要查找学生的姓名");
String name = cin.next();
System.out.println("请输入您要查找对的学生的学号");
String Id = cin.next();
boolean judge = FindStudent(ListStudent, name, Id);
if (!judge) {
System.out.println("未找到该学生");
}
}
case REVISE_BOOK_INFORMATION -> {
System.out.println("请输入您要修改或删除的图书编号");
String find_book_id = cin.next();
System.out.println("请输入您要修改或删除的书名");
String find_book_name = cin.next();
boolean judge = FindBook(find_book_id, find_book_name, ListBook);
if (!judge) {
System.out.println("未查询到该书籍");
}
}
case EXIT -> {
break loop1;
}
default -> System.out.println("输入错误,无此选项,请重新输入");
}
}
}
}
case FIND_MANGER_COUNT-> {
System.out.println("请输入您的账号(电话号码)");
String PhoneNumber = cin.next();
System.out.println("请输入您的姓名");
String name = cin.next();
System.out.println("请输入注册密钥");
String Key = cin.next();
if (!FindManagerPassword(ListManager, PhoneNumber, name, Key)) {
System.out.println("输入信息有误,请检查后再试");
}
}
case BUILD_MANAGER_COUNT -> BuildManagerCount(ListManager);
case EXIT -> {
break;
}
default -> System.out.println("输入错误,无此选项,请重新输入");
}
}
//学生
case STUDENT -> {
menu3();
//学生选择
String Choose2 = cin.next();
switch (Choose2){
//学生登录
case STUDENT_GET -> {
if (StudentGet()){
loop2 : while(true) {
menu4();
choose = cin.next();
switch (choose) {
//借阅图书
case "1" -> {
System.out.println("请输入您要借阅的书名");
String name = cin.next();
System.out.println("请输入您要借阅图书的ID");
String Id = cin.next();
BorrowBook(name, Id, ListBook);
}
//归还图书
case "2" -> {
System.out.println("请输入您要归还借阅的书名");
String name = cin.next();
System.out.println("请输入您要归还图书的ID");
String Id = cin.next();
ReturnBook(name, Id, ListBook);
}
//查找图书
case "3" -> {
System.out.println("请输入您要查找的图书信息");
String Find = cin.next();
if (!OutFindBook(Find, ListBook)) {
System.out.println("未查询到有关书籍");
}
}
//返回上一步
case EXIT -> {
break loop2;
}
default -> System.out.println("输入错误,无此选项,请重新输入");
}
}
}
}
//创建学生账号
case BUILD_STUDENT_COUNT -> BuildStudentCount(ListStudent);
//找回账号
case FIND_STUDENT_COUNT -> {
System.out.println("请输入您的学号");
String id = cin.next();
System.out.println("请输入您的姓名");
String name = cin.next();
if(FindStudentPassword(ListStudent,id,name)){
System.out.println("输入信息有误,请检查后再试");
}
}
//学生窗口退出
case EXIT-> {
break;
}
default -> System.out.println("输入错误,无此选项,请重新输入");
}
}
//退出程序
case EXIT -> {
System.exit(0);
}
default -> System.out.println("输入错误,无此选项,请重新输入");
}
}
}
//初始的身份菜单
public static void menu1() {
System.out.println("--------------欢迎来到bk的图书管理系统--------------");
System.out.println("请选择您的身份:");
System.out.println("1.管理员");
System.out.println("2.学生登入");
System.out.println("0.退出程序");
}
//管理员的登陆菜单
public static void menu2(){
System.out.println("请选择您要进行的操作:");
System.out.println("1.管理员账号登入");
System.out.println("2.找回密码");
System.out.println("3.注册管理账号(需要登入钥匙)");
System.out.println("0.返回上一步");
}
//管理员登陆后的操作菜单
public static void menu5(){
System.out.println("请选择您的操作:");
System.out.println("1.增加图书");
System.out.println("2.查找图书");
System.out.println("3.查找借阅者");
System.out.println("4.修改图书信息");
System.out.println("0.返回上一步");
}
//修改信息选择
public static void menu6(){
System.out.println("请选择您要修改的信息");
System.out.println("1.价格");
System.out.println("2.出版社");
System.out.println("3.数量");
System.out.println("4.出版时间");
System.out.println("5.作者");
System.out.println("0.返回上一步");
}
//学生登陆菜单
public static void menu3(){
System.out.println("请选择您的操作");
System.out.println("1.学生登入");
System.out.println("2.注册学生账号");
System.out.println("3.忘记密码");
System.out.println("0.返回上一步");
}
//学生的操作菜单
public static void menu4(){
System.out.println("请选择您要进行的操作:");
System.out.println("1.借阅图书");
System.out.println("2.归还图书");
System.out.println("3.查找图书");
System.out.println("0.返回上一步");
}
//管理员登录
public static boolean ManGet(ArrayList<Manager> ListManager){
if (ListManager.size() == 0){
System.out.println("当前未有管理者,请先注册管理者账号");
return false;
}
Scanner cin = new Scanner(System.in);
System.out.println("请输入手机号");
String UserName = cin.next();//接受账号
//检索账号(手机号)是否存在
for (Manager m : ListManager) {
boolean judge = UserName.equals(m.getM_Phone());
if (judge) {
System.out.println("请输入密码");
String Password = cin.next();//接收密码
if (m.getM_Password().equals(Password)) {
System.out.println("登陆成功!");
return true;
} else {
System.out.println("密码输入错误!");
return false;
}
}
}
System.out.println("未检索到系统内存在改账号,请检查是否输入错误");
return false;
}
//注册管理者账号;
public static void BuildManagerCount(ArrayList<Manager> ListManager){
Scanner cin = new Scanner(System.in);
//输入姓名
System.out.println("请输入您的姓名");
String name = cin.next();
//创建账号;使用手机号作为登入账号
String PhoneNumber;
while(true) {
System.out.println("请输入您的手机号码");
PhoneNumber = cin.next();
if (PhoneNumber.length() != 11) {
System.out.println("输入有误,请重新输入");
}else {
break;
}
}
//输入密码
String Password1;
String Password2;
while(true) {
System.out.println("请输入您的密码");
Password1 = cin.next();
//再次输入密码,以确认输入正确
System.out.println("请再次输入您的密码");
Password2 = cin.next();
if(!Password1.equals(Password2)){
System.out.println("两次密码不一致,请重新输入");
}else{
break;
}
}
//输入管理者密钥,以确保管理者不被随意注册
System.out.println("请输入注册钥匙");
String key;
while(true){
key = cin.next();
if(!key.equals(Manager.getM_Key())){
System.out.println("密钥输入错误,请重新输入");
}else{
break;
}
}
Manager m = new Manager(Password1,name,PhoneNumber);
ListManager.add(m);
System.out.println("注册成功!");
}
//添加图书
public static void AddBook(ArrayList<Book> list){
Scanner cin = new Scanner(System.in);
System.out.println("请输入图书的id");
String B_Id = cin.next();
System.out.println("请输入书名");
String B_Name = cin.next();
System.out.println("请输入作者");
String Writer = cin.next();
System.out.println("请输入出版社(全称)");
String Press = cin.next();
System.out.println("请输入出版时间(格式:XXXX年XX月XX日)");
String Publish_Time = cin.next();
System.out.println("请输入数量");
int sum = cin.nextByte();
System.out.println("请输入价格");
double price = cin.nextByte();
Book b = new Book(B_Id,B_Name,Writer,Press,Publish_Time,sum,price);
list.add(b);
System.out.println("添加成功!");
}
//查找图书-修改或删除图书信息
public static boolean FindBook(String FindBookId,String FindBookName,ArrayList<Book> ListBook){
Scanner cin = new Scanner(System.in);
if (ListBook.size() == 0){
System.out.println("当前系统未添加图书");
}
for (Book b : ListBook) {
if (FindBookId.equals(b.getB_Id()) && FindBookName.equals(b.getB_Name())) {
b.ShowBook();
System.out.println("请选择您要进行的操作:(1->修改信息 2->删除书籍信息)");
String choose = cin.next();
if (choose.equals("1")) {
menu6();
choose = cin.next();
ReviseBookInformation(b, choose);
return true;
}else if (choose.equals("2")){
ListBook.remove(b);
System.out.println("删除成功");
return true;
}
}
}
return false;
}
//修改图书信息
public static void ReviseBookInformation(Book b,String choose){
Scanner cin = new Scanner(System.in);
System.out.println("请输入修改后的信息");
//录入输入信息
int re_sum = 0;
double re_price = 0;
String re_string = "";
if (choose.equals("3")) re_sum = cin.nextByte();
if (choose.equals("1")) re_price = cin.nextByte();
else{
re_string = cin.next();
}
//修改信息
switch(choose){
case "1" -> b.setPrice(re_price);
case "2" -> b.setPress(re_string);
case "3" -> b.setSum(re_sum);
case "4" -> b.setPublish_Time(re_string);
case "5" -> b.setWriter(re_string);
default -> System.out.println("输入错误请重新输入");
}
System.out.println("修改成功!");
b.ShowBook();
}
//输出查找图书信息
public static boolean OutFindBook(String FindBookName,ArrayList<Book> ListBook){
if (ListBook.size() == 0){
System.out.println("当前尚未添加图书");
return false;
}
for (Book b : ListBook) {
if (FindBookName.equals(b.getB_Name())) {
b.ShowBook();
} else if (FindBookName.equals(b.getB_Id())) {
b.ShowBook();
} else if (FindBookName.equals(b.getPress())) {
b.ShowBook();
} else if (FindBookName.equals(b.getWriter())) {
b.ShowBook();
}
}
return false;
}
//查找学生信息
public static boolean FindStudent(ArrayList<BorrowStudent> list,String name,String id){
if (list.size() == 0){
System.out.println("当前尚未有学生借阅");
return false;
}
BorrowStudent s1;
for (BorrowStudent borrowStudent : list) {
s1 = borrowStudent;
if (s1.getS_name().equals(name) && s1.getS_Id().equals(id)){
s1.ShowStudent();
return true;
}
}
return false;
}
//找回密码(管理员)
public static boolean FindManagerPassword(ArrayList<Manager> list,String PhoneNumber,String name,String key){
Scanner cin = new Scanner(System.in);
for(int i = 0;i < list.size();i++){
Manager m = list.get(i);
if (m.getM_Phone().equals(PhoneNumber) && m.getM_Name().equals(name) && Manager.getM_Key().equals(key)){
do {
System.out.println("请输入新的密码");
String NewNumber1 = cin.next();
System.out.println("请再次输入密码");
String NewNumber2 = cin.next();
if (NewNumber1.equals(NewNumber2)) {
ListManager.get(i).setM_Password(NewNumber1);
System.out.println("密码修改成功!");
break;
}
System.out.println("两次输入密码不一致,请重新输入");
}while(true);
return true;
}
}
return false;
}
//学生登录
public static boolean StudentGet(){
Scanner cin = new Scanner(System.in);
String S_Id;
String S_Password;
System.out.println("请输入您的学号");
S_Id = cin.next();
for (BorrowStudent s1 : ListStudent) {
boolean judge = S_Id.equals(s1.getS_Id());
if (judge) {
System.out.println("请输入密码");
S_Password = cin.next();
if (S_Password.equals(s1.getS_Password())) {
System.out.println("登录成功!");
return true;
} else {
System.out.println("密码输入错误");
return false;
}
}
}
System.out.println("未检索到系统内存在改账号,请检查是否输入错误");
return false;
}
//学生信息认证
public static void BuildStudentCount(ArrayList<BorrowStudent> ListStudent){
Scanner cin = new Scanner(System.in);
String S_name;//姓名
String S_Id;//学号
String S_Password;//密码
String College;//学院
String Object;//专业
String S_Class;//班级
System.out.println("请输入您的姓名");
S_name = cin.next();
//录入密码
String S_Password1;
String Password2;
while(true) {
System.out.println("请输入您的密码");
S_Password1 = cin.next();
//再次输入密码,以确认输入正确
System.out.println("请再次输入您的密码");
Password2 = cin.next();
if(!S_Password1.equals(Password2)){
System.out.println("两次密码不一致,请重新输入");
}else{
break;
}
}
System.out.println("请输入您的学号");
S_Id = cin.next();
System.out.println("请输入您的学院");
College = cin.next();
System.out.println("请输入您的专业");
Object = cin.next();
System.out.println("请输入您的班级");
S_Class = cin.next();
BorrowStudent S1 = new BorrowStudent(S_name,S_Id,S_Password1,College,Object,S_Class);
ListStudent.add(S1);
System.out.println("注册成功!");
}
//找回学生密码
public static boolean FindStudentPassword(ArrayList<BorrowStudent> list,String id,String name){
Scanner cin = new Scanner(System.in);
for (int i = 0;i < list.size(); i++){
BorrowStudent s1 = list.get(i);
if (s1.getS_Id().equals(id) && s1.getS_name().equals(name)){
do {
System.out.println("请输入新的密码");
String NewNumber1 = cin.next();
System.out.println("请再次输入密码");
String NewNumber2 = cin.next();
if (NewNumber1.equals(NewNumber2)) {
ListManager.get(i).setM_Password(NewNumber1);
System.out.println("密码修改成功!");
break;
}
System.out.println("两次输入密码不一致,请重新输入");
}while(true);
return true;
}
}
return false;
}
//借阅图书
public static void BorrowBook(String BookName,String BookId,ArrayList<Book> list){
int i = 0;
for (Book b : list){
if(b.getB_Name().equals(BookName) && b.getB_Id().equals(BookId) ){
i++;
if (b.getSum() >= 1){
b.setSum(b.getSum() - 1);
System.out.println("借阅成功!");
}else {
System.out.println("剩余数量不足");
}
}
}
if (i != 1) {
System.out.println("未查询到该图书");
}
}
//归还图书
public static void ReturnBook(String BookName,String BookId,ArrayList<Book> list){
for (Book b : list){
if(b.getB_Name().equals(BookName) && b.getB_Id().equals(BookId)){
b.setSum(b.getSum() + 1);
System.out.println("归还成功!");
}else {
System.out.println("未查询到该图书");
}
}
}
}