wm: java

Download patch

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;
+			}
+		}
+	}
+}
+