ref: dd82d34b0fb7572f9525ba52642cc460ba9cf4f6
parent: 96c2f72ed84c8afc0d21b01232cd62219e3789aa
author: mkf <mkf@d510>
date: Fri May 12 15:17:57 EDT 2023
rewrite
--- a/Main.java
+++ b/Main.java
@@ -1,44 +1,165 @@
+//package BookProj;
+
import java.util.*;
import java.time.*;
-public class Main
+enum Types
{
- public static void main(String args[])
+ Status,
+ AgeGroup,
+ Abstract,
+ Author,
+ Name,
+ ISBN,
+}
+
+enum Role
+{
+ Admin,
+ User,
+}
+
+interface Prog
+{
+ boolean logon(Admin u);
+ boolean logon(RegularUser u);
+ /* askpass(User u); */
+ void logout(Admin u);
+ void setup();
+ /* void logout(User u);
+ void menu();
+ // Book FindBook(type key, String value); // Pointer to whole book
+ String FindBook(type key, String value); // Pointer to ISBN
+ void ReturnBook(String ISBN);
+ void ReturnBook(Book b); */
+ static boolean askpass(Admin u)
{
+ String t;
Scanner s = new Scanner(System.in);
- User m = new RegUser(s.nextLine());
- System.out.println(m.ID);
+
+ /* oh yeah, console and stuff
+ if(System.console() != null)
+ char passwd[], esc = 'q';
+ // oh yeah, password and stuff
+ if(passwd = cons.readPassword("[%s]", "Password:")) != null)
+ {
+ if(u.checkPass(passwd))
+ t = true;
+ java.util.Arrays.fill(passwd, ' ');
+ } */
+
+ System.out.print("password?> ");
+ t = s.nextLine();
+ if(u.checkPass(t))
+ return true;
+ else
+ return false;
}
+
}
+
+
class Book
{
- private String agegroup, abstract, author, name, ISBN;
- void Register()
- {
- }
+ /* hashmap, array list here */
+ private boolean Status;
+ private String Abstract, Author, Name, ISBN;
+// Register()
+// List()
+// WriteStatus()
+// String LastStatus();
+// boolean AgeOk(int age);
}
+
abstract class User
{
- String username;
- int ID, reserved; //?
- LocalTime regTime;
- abstract bool IsReserved()
+ private Role role;
+ private String Username, Reserved;
+ private int ID;
+ private LocalDateTime RegTime;
+ // abstract boolean IsReserved(String ISBN);
+ User(Role r, String u, int id, LocalDateTime rt)
+ {
+ this.role = r;
+ this.Username = u;
+ this.ID = id;
+ this.RegTime = rt;
+ }
+ Role getRole()
+ {
+ return this.role;
+ }
+ String getUsername()
+ {
+ return this.Username;
+ }
+
+ int getID()
+ {
+ return this.ID;
+ }
+
+ boolean setReserved(String n)
+ {
+ /* ensure he has no books */
+ if(this.Reserved == null)
+ {
+ this.setReserved(n);
+ return true;
+ }
+ // XXX add case if that book doesn't exist
+ else
+ {
+ System.err.println("the user already have a book");
+ return false;
+ }
+ }
+
+ String getReserved()
+ {
+ /* ISBN */
+ return this.Reserved;
+ }
+
+ LocalDateTime getRegTime()
+ {
+ return this.RegTime;
+ }
+
}
-class RegUser extends User
+
+class Admin extends User
{
- int age;
- RegUser(String uname)
+ private Role role = Role.Admin;
+ private String Password;
+ public static boolean Active = false;
+ Admin(String user, String pass)
{
- this.username = uname;
- this.ID = (int)(Math.random() * 1000);
- this.regTime = LocalTime.now();
+ // XXX, make an ID range for admins?
+ super(Role.Admin, user, 1, LocalDateTime.now());
+ /* maybe check if password is too easy? */
+ this.Password = pass;
}
- bool IsReserved(int ISBN)
+ boolean setReserved(Book b)
{
- if(ISBN = ID)
+ return false; /* XXX */
+ }
+
+ boolean setReserved(String ISBN)
+ {
+ return false; /* XXX */
+ }
+
+ boolean isReserved(String ISBN)
+ {
+ return false; /* XXX */
+ }
+ boolean checkPass(String pass)
+ {
+ if(this.Password.equals(pass))
return true;
else
return false;
@@ -45,19 +166,167 @@
}
}
-class Admin extends User
+class RegularUser extends User
{
- private Sting password;
- private bool active
- Admin(String password)
+ private Role role = Role.User;
+ private int Age;
+ RegularUser(String username, int age)
{
-
+ super(Role.User, username, (int)Math.random()*100, LocalDateTime.now());
+ this.Age = age;
}
- void setActive(bool a, String pass)
+/*
+ boolean IsReserved(Book b)
{
- if(pass == this.password)
- this.active = a;
+ if(this.Reserved == b.getISBN())
+ return true;
else
- System.out.println("auth failure");
+ return false;
+ } */
+ boolean IsReserved(String ISBN)
+ {
+ if(this.getReserved() == ISBN)
+ return true;
+ else
+ return false;
}
+
}
+
+class Lib implements Prog
+{
+
+ // XXX think more, make read.password work if it can,
+ ArrayList<RegularUser> UsersList = new ArrayList<RegularUser>();
+ ArrayList<Book> BooksList = new ArrayList<Book>();
+ static Admin adm;
+ public boolean logon(Admin u)
+ {
+ while(!Prog.askpass(u))
+ {
+ System.err.println("Please try again");
+ }
+ System.out.println("Login as " + u.getUsername() + " successful");
+ u.Active = true;
+ return true;
+ }
+
+ public boolean logon(RegularUser u)
+ {
+ /* maybe later i want to do more stuff here */
+ System.out.println("Login as " + u.getUsername() + " successful");
+ return true;
+ }
+ public void logout(Admin u)
+ {
+ System.out.println("Logging out...");
+ u.Active = false;
+ }
+ public void setup()
+ {
+ /* isn't java wonderful? */
+ String user = "", pass = "";
+ Scanner s = new Scanner(System.in);
+ System.out.println("Setting up Admin:");
+ while(user == "")
+ {
+ System.out.print("Admin username?> ");
+ user = s.nextLine();
+ }
+
+ while(pass == "")
+ {
+
+ System.out.print("Admin password?> ");
+ pass = s.nextLine();
+ }
+ adm = new Admin(user, pass);
+
+ }
+ public void menu()
+ {
+ System.out.printf(
+ "1) new book\n" +
+ "2) new user\n" +
+ "3) find book\n" +
+ "4) take book\n" +
+ "5) return book\n" +
+ "6) add new admin\n" +
+ "7) quit!\n" +
+ "8) logout\n");
+ }
+
+ public void getInput()
+ {
+ int in;
+ boolean flag = true;
+ Scanner s = new Scanner(System.in);
+ while(flag)
+ {
+ System.out.print("menu> ");
+ in = s.nextInt();
+ switch(in)
+ {
+/* XXX
+ case 1:
+ l.addbook();
+ break;
+ case 2:
+ l.adduser();
+ break;
+ case 3:
+ l.findbook();
+ break;
+ case 4:
+ l.takebook();
+ break;
+ case 5:
+ l.returnbook();
+ break;
+*/
+ case 6:
+ this.logout(this.adm);
+ flag = false;
+ break;
+/*
+ case 7:
+ l.quit();
+ break;
+ case 8:
+ this.newadm(this.adm);
+ break;
+*/
+ default:
+ System.out.println("Invalid answer!, please try again.");
+ break;
+ }
+ }
+ }
+}
+
+public class Main
+{
+ public static void main(String args[])
+ {
+ int in;
+ Scanner s = new Scanner(System.in);
+// Scanner sf = New Scanner(file)? XXX
+
+ Lib l = new Lib();
+ l.setup();
+ while(true)
+ {
+ l.logon(l.adm);
+ while(l.adm.Active)
+ {
+ l.menu();
+ /* only exists if user either logs out or smh */
+ l.getInput();
+ /* user wants to quit */
+ if(l.adm.Active)
+ return;
+ }
+ }
+ }
+}
+