diff --git a/Project/src/LMS/Borrower.java b/Project/src/LMS/Borrower.java index 2619e16..910bde3 100644 --- a/Project/src/LMS/Borrower.java +++ b/Project/src/LMS/Borrower.java @@ -36,11 +36,7 @@ public void printBorrowedBooks() if (!borrowedBooks.isEmpty()) { System.out.println("\nBorrowed Books are: "); - - System.out.println("------------------------------------------------------------------------------"); - System.out.println("No.\t\tTitle\t\t\tAuthor\t\t\tSubject"); - System.out.println("------------------------------------------------------------------------------"); - + printBookHeader(); for (int i = 0; i < borrowedBooks.size(); i++) { System.out.print(i + "-" + "\t\t"); @@ -58,11 +54,7 @@ public void printOnHoldBooks() if (!onHoldBooks.isEmpty()) { System.out.println("\nOn Hold Books are: "); - - System.out.println("------------------------------------------------------------------------------"); - System.out.println("No.\t\tTitle\t\t\tAuthor\t\t\tSubject"); - System.out.println("------------------------------------------------------------------------------"); - + printBookHeader(); for (int i = 0; i < onHoldBooks.size(); i++) { System.out.print(i + "-" + "\t\t"); @@ -74,6 +66,15 @@ public void printOnHoldBooks() System.out.println("\nNo On Hold books."); } + public void printBookHeader() + { + + System.out.println("------------------------------------------------------------------------------"); + System.out.println("No.\t\tTitle\t\t\tAuthor\t\t\tSubject"); + System.out.println("------------------------------------------------------------------------------"); + + } + // Updating Borrower's Info public void updateBorrowerInfo() throws IOException { diff --git a/Project/src/LMS/Library.java b/Project/src/LMS/Library.java index 3b016e0..796fb89 100644 --- a/Project/src/LMS/Library.java +++ b/Project/src/LMS/Library.java @@ -1,17 +1,8 @@ package LMS; - // Including Header Files. import java.io.*; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.SQLIntegrityConstraintViolationException; -import java.sql.Statement; -import java.sql.Types; import java.util.*; import java.util.logging.Level; import java.util.logging.Logger; @@ -19,12 +10,12 @@ public class Library { - private String name; // name of library - private Librarian librarian; // object of Librarian (only one) - private ArrayList persons; // all clerks and borrowers - private ArrayList booksInLibrary; // all books in library are here! + public String name; // name of library + public Librarian librarian; // object of Librarian (only one) + public ArrayList persons; // all clerks and borrowers + public ArrayList booksInLibrary; // all books in library are here! - private ArrayList loans; // history of all books which have been issued + public static ArrayList loans; // history of all books which have been issued public int book_return_deadline; //return deadline after which fine will be generated each day public double per_day_fine; @@ -33,7 +24,7 @@ public class Library { /*----Following Singleton Design Pattern (Lazy Instantiation)------------*/ - private static Library obj; + public static Library obj; public static Library getInstance() { @@ -46,7 +37,7 @@ public static Library getInstance() } /*---------------------------------------------------------------------*/ - private Library() // default cons. + public Library() // default cons. { name = null; librarian = null; @@ -110,9 +101,6 @@ public ArrayList getBooks() return booksInLibrary; } - /*---------------------------------------*/ - - /*-----Adding all People in Library----*/ public boolean addLibrarian(Librarian lib) { //One Library can have only one Librarian @@ -143,1082 +131,12 @@ public void addLoan(Loan l) loans.add(l); } - /*----------------------------------------------*/ - - /*-----------Finding People in Library--------------*/ - public Borrower findBorrower() - { - System.out.println("\nEnter Borrower's ID: "); - - int id = 0; - - Scanner scanner = new Scanner(System.in); - - try{ - id = scanner.nextInt(); - } - catch (java.util.InputMismatchException e) - { - System.out.println("\nInvalid Input"); - } - - for (int i = 0; i < persons.size(); i++) - { - if (persons.get(i).getID() == id && persons.get(i).getClass().getSimpleName().equals("Borrower")) - return (Borrower)(persons.get(i)); - } - - System.out.println("\nSorry this ID didn't match any Borrower's ID."); - return null; - } - - public Clerk findClerk() - { - System.out.println("\nEnter Clerk's ID: "); - - int id = 0; - - Scanner scanner = new Scanner(System.in); - - try{ - id = scanner.nextInt(); - } - catch (java.util.InputMismatchException e) - { - System.out.println("\nInvalid Input"); - } - - for (int i = 0; i < persons.size(); i++) - { - if (persons.get(i).getID() == id && persons.get(i).getClass().getSimpleName().equals("Clerk")) - return (Clerk)(persons.get(i)); - } - - System.out.println("\nSorry this ID didn't match any Clerk's ID."); - return null; - } - - /*------- FUNCS. on Books In Library--------------*/ public void addBookinLibrary(Book b) { booksInLibrary.add(b); } - - //When this function is called, only the pointer of the book placed in booksInLibrary is removed. But the real object of book - //is still there in memory because pointers of that book placed in IssuedBooks and ReturnedBooks are still pointing to that book. And we - //are maintaining those pointers so that we can maintain history. - //But if we donot want to maintain history then we can delete those pointers placed in IssuedBooks and ReturnedBooks as well which are - //pointing to that book. In this way the book will be really removed from memory. - public void removeBookfromLibrary(Book b) - { - boolean delete = true; - - //Checking if this book is currently borrowed by some borrower - for (int i = 0; i < persons.size() && delete; i++) - { - if (persons.get(i).getClass().getSimpleName().equals("Borrower")) - { - ArrayList borBooks = ((Borrower)(persons.get(i))).getBorrowedBooks(); - - for (int j = 0; j < borBooks.size() && delete; j++) - { - if (borBooks.get(j).getBook() == b) - { - delete = false; - System.out.println("This particular book is currently borrowed by some borrower."); - } - } - } - } - - if (delete) - { - System.out.println("\nCurrently this book is not borrowed by anyone."); - ArrayList hRequests = b.getHoldRequests(); - - if(!hRequests.isEmpty()) - { - System.out.println("\nThis book might be on hold requests by some borrowers. Deleting this book will delete the relevant hold requests too."); - System.out.println("Do you still want to delete the book? (y/n)"); - - Scanner sc = new Scanner(System.in); - - while (true) - { - String choice = sc.next(); - - if(choice.equals("y") || choice.equals("n")) - { - if(choice.equals("n")) - { - System.out.println("\nDelete Unsuccessful."); - return; - } - else - { - //Empty the books hold request array - //Delete the hold request from the borrowers too - for (int i = 0; i < hRequests.size() && delete; i++) - { - HoldRequest hr = hRequests.get(i); - hr.getBorrower().removeHoldRequest(hr); - b.removeHoldRequest(); - } - } - } - else - System.out.println("Invalid Input. Enter (y/n): "); - } - - } - else - System.out.println("This book has no hold requests."); - - booksInLibrary.remove(b); - System.out.println("The book is successfully removed."); - } - else - System.out.println("\nDelete Unsuccessful."); - } - - - - // Searching Books on basis of title, Subject or Author - public ArrayList searchForBooks() throws IOException - { - String choice; - String title = "", subject = "", author = ""; - - Scanner sc = new Scanner(System.in); - BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); - - while (true) - { - System.out.println("\nEnter either '1' or '2' or '3' for search by Title, Subject or Author of Book respectively: "); - choice = sc.next(); - - if (choice.equals("1") || choice.equals("2") || choice.equals("3")) - break; - else - System.out.println("\nWrong Input!"); - } - - if (choice.equals("1")) - { - System.out.println("\nEnter the Title of the Book: "); - title = reader.readLine(); - } - - else if (choice.equals("2")) - { - System.out.println("\nEnter the Subject of the Book: "); - subject = reader.readLine(); - } - - else - { - System.out.println("\nEnter the Author of the Book: "); - author = reader.readLine(); - } - - ArrayList matchedBooks = new ArrayList(); - - //Retrieving all the books which matched the user's search query - for(int i = 0; i < booksInLibrary.size(); i++) - { - Book b = booksInLibrary.get(i); - - if (choice.equals("1")) - { - if (b.getTitle().equals(title)) - matchedBooks.add(b); - } - else if (choice.equals("2")) - { - if (b.getSubject().equals(subject)) - matchedBooks.add(b); - } - else - { - if (b.getAuthor().equals(author)) - matchedBooks.add(b); - } - } - - //Printing all the matched Books - if (!matchedBooks.isEmpty()) - { - System.out.println("\nThese books are found: \n"); - - System.out.println("------------------------------------------------------------------------------"); - System.out.println("No.\t\tTitle\t\t\tAuthor\t\t\tSubject"); - System.out.println("------------------------------------------------------------------------------"); - - for (int i = 0; i < matchedBooks.size(); i++) - { - System.out.print(i + "-" + "\t\t"); - matchedBooks.get(i).printInfo(); - System.out.print("\n"); - } - - return matchedBooks; - } - else - { - System.out.println("\nSorry. No Books were found related to your query."); - return null; - } - } - - - - // View Info of all Books in Library - public void viewAllBooks() - { - if (!booksInLibrary.isEmpty()) - { - System.out.println("\nBooks are: "); - - System.out.println("------------------------------------------------------------------------------"); - System.out.println("No.\t\tTitle\t\t\tAuthor\t\t\tSubject"); - System.out.println("------------------------------------------------------------------------------"); - - for (int i = 0; i < booksInLibrary.size(); i++) - { - System.out.print(i + "-" + "\t\t"); - booksInLibrary.get(i).printInfo(); - System.out.print("\n"); - } - } - else - System.out.println("\nCurrently, Library has no books."); - } - - - //Computes total fine for all loans of a borrower - public double computeFine2(Borrower borrower) - { - System.out.println("---------------------------------------------------------------------------------------------------------------------------------------------------------------------"); - System.out.println("No.\t\tBook's Title\t\tBorrower's Name\t\t\tIssued Date\t\t\tReturned Date\t\t\t\tFine(Rs)"); - System.out.println("-------------------------------------------------------------------------------------------------------------------------------------------------------------------"); - - double totalFine = 0; - double per_loan_fine = 0; - - for (int i = 0; i < loans.size(); i++) - { - Loan l = loans.get(i); - - if ((l.getBorrower() == borrower)) - { - per_loan_fine = l.computeFine1(); - System.out.print(i + "-" + "\t\t" + loans.get(i).getBook().getTitle() + "\t\t\t" + loans.get(i).getBorrower().getName() + "\t\t" + loans.get(i).getIssuedDate() + "\t\t\t" + loans.get(i).getReturnDate() + "\t\t\t\t" + per_loan_fine + "\n"); - - totalFine += per_loan_fine; - } - } - - return totalFine; - } - - - public void createPerson(char x) - { - Scanner sc = new Scanner(System.in); - BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); - - System.out.println("\nEnter Name: "); - String n = ""; - try { - n = reader.readLine(); - } catch (IOException ex) { - Logger.getLogger(Library.class.getName()).log(Level.SEVERE, null, ex); - } - System.out.println("Enter Address: "); - String address = ""; - try { - address = reader.readLine(); - } catch (IOException ex) { - Logger.getLogger(Library.class.getName()).log(Level.SEVERE, null, ex); - } - - int phone = 0; - - try{ - System.out.println("Enter Phone Number: "); - phone = sc.nextInt(); - } - catch (java.util.InputMismatchException e) - { - System.out.println("\nInvalid Input."); - } - - //If clerk is to be created - if (x == 'c') - { - double salary = 0; - - try{ - System.out.println("Enter Salary: "); - salary = sc.nextDouble(); - } - catch (java.util.InputMismatchException e) - { - System.out.println("\nInvalid Input."); - } - - Clerk c = new Clerk(-1,n,address,phone,salary,-1); - addClerk(c); - - System.out.println("\nClerk with name " + n + " created successfully."); - System.out.println("\nYour ID is : " + c.getID()); - System.out.println("Your Password is : " + c.getPassword()); - } - - //If librarian is to be created - else if (x == 'l') - { - double salary = 0; - try{ - System.out.println("Enter Salary: "); - salary = sc.nextDouble(); - } - catch (java.util.InputMismatchException e) - { - System.out.println("\nInvalid Input."); - } - - Librarian l = new Librarian(-1,n,address,phone,salary,-1); - if(addLibrarian(l)) - { - System.out.println("\nLibrarian with name " + n + " created successfully."); - System.out.println("\nYour ID is : " + l.getID()); - System.out.println("Your Password is : " + l.getPassword()); - } - } - - //If borrower is to be created - else - { - Borrower b = new Borrower(-1,n,address,phone); - addBorrower(b); - System.out.println("\nBorrower with name " + n + " created successfully."); - - System.out.println("\nYour ID is : " + b.getID()); - System.out.println("Your Password is : " + b.getPassword()); - } - } - - - - public void createBook(String title, String subject, String author) - { - Book b = new Book(-1,title,subject,author,false); - - addBookinLibrary(b); - - System.out.println("\nBook with Title " + b.getTitle() + " is successfully created."); - } - - - - // Called when want an access to Portal - public Person login() - { - Scanner input = new Scanner(System.in); - - int id = 0; - String password = ""; - - System.out.println("\nEnter ID: "); - - try{ - id = input.nextInt(); - } - catch (java.util.InputMismatchException e) - { - System.out.println("\nInvalid Input"); - } - - System.out.println("Enter Password: "); - password = input.next(); - - for (int i = 0; i < persons.size(); i++) - { - if (persons.get(i).getID() == id && persons.get(i).getPassword().equals(password)) - { - System.out.println("\nLogin Successful"); - return persons.get(i); - } - } - - if(librarian!=null) - { - if (librarian.getID() == id && librarian.getPassword().equals(password)) - { - System.out.println("\nLogin Successful"); - return librarian; - } - } - - System.out.println("\nSorry! Wrong ID or Password"); - return null; - } - - - // History when a Book was Issued and was Returned! - public void viewHistory() - { - if (!loans.isEmpty()) - { - System.out.println("\nIssued Books are: "); - - System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------"); - System.out.println("No.\tBook's Title\tBorrower's Name\t Issuer's Name\t\tIssued Date\t\t\tReceiver's Name\t\tReturned Date\t\tFine Paid"); - System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------"); - - for (int i = 0; i < loans.size(); i++) - { - if(loans.get(i).getIssuer()!=null) - System.out.print(i + "-" + "\t" + loans.get(i).getBook().getTitle() + "\t\t\t" + loans.get(i).getBorrower().getName() + "\t\t" + loans.get(i).getIssuer().getName() + "\t " + loans.get(i).getIssuedDate()); - - if (loans.get(i).getReceiver() != null) - { - System.out.print("\t" + loans.get(i).getReceiver().getName() + "\t\t" + loans.get(i).getReturnDate() +"\t " + loans.get(i).getFineStatus() + "\n"); - } - else - System.out.print("\t\t" + "--" + "\t\t\t" + "--" + "\t\t" + "--" + "\n"); - } - } - else - System.out.println("\nNo issued books."); - } - - - - - - - - - - //---------------------------------------------------------------------------------------// - /*--------------------------------IN- COLLABORATION WITH DATA BASE------------------------------------------*/ - - // Making Connection With Database - public Connection makeConnection() - { - try - { - String host = "jdbc:derby://localhost:1527/LMS"; - String uName = "haris"; - String uPass= "123"; - Connection con = DriverManager.getConnection( host, uName, uPass ); - return con; - } - catch ( SQLException err ) - { - System.out.println( err.getMessage( ) ); - return null; - } - } - - - // Loading all info in code via Database. - public void populateLibrary(Connection con) throws SQLException, IOException - { - Library lib = this; - Statement stmt = con.createStatement( ); - - /* --- Populating Book ----*/ - String SQL = "SELECT * FROM BOOK"; - ResultSet rs = stmt.executeQuery( SQL ); - - if(!rs.next()) - { - System.out.println("\nNo Books Found in Library"); - } - else - { - int maxID = 0; - - do - { - if(rs.getString("TITLE") !=null && rs.getString("AUTHOR")!=null && rs.getString("SUBJECT")!=null && rs.getInt("ID")!=0) - { - String title=rs.getString("TITLE"); - String author=rs.getString("AUTHOR"); - String subject=rs.getString("SUBJECT"); - int id= rs.getInt("ID"); - boolean issue=rs.getBoolean("IS_ISSUED"); - Book b = new Book(id,title,subject,author,issue); - addBookinLibrary(b); - - if (maxID < id) - maxID = id; - } - }while(rs.next()); - - // setting Book Count - Book.setIDCount(maxID); - } - - /* ----Populating Clerks----*/ - - SQL="SELECT ID,PNAME,ADDRESS,PASSWORD,PHONE_NO,SALARY,DESK_NO FROM PERSON INNER JOIN CLERK ON ID=C_ID INNER JOIN STAFF ON S_ID=C_ID"; - - rs=stmt.executeQuery(SQL); - - if(!rs.next()) - { - System.out.println("No clerks Found in Library"); - } - else - { - do - { - int id=rs.getInt("ID"); - String cname=rs.getString("PNAME"); - String adrs=rs.getString("ADDRESS"); - int phn=rs.getInt("PHONE_NO"); - double sal=rs.getDouble("SALARY"); - int desk=rs.getInt("DESK_NO"); - Clerk c = new Clerk(id,cname,adrs,phn,sal,desk); - - addClerk(c); - } - while(rs.next()); - - } - - /*-----Populating Librarian---*/ - SQL="SELECT ID,PNAME,ADDRESS,PASSWORD,PHONE_NO,SALARY,OFFICE_NO FROM PERSON INNER JOIN LIBRARIAN ON ID=L_ID INNER JOIN STAFF ON S_ID=L_ID"; - - rs=stmt.executeQuery(SQL); - if(!rs.next()) - { - System.out.println("No Librarian Found in Library"); - } - else - { - do - { - int id=rs.getInt("ID"); - String lname=rs.getString("PNAME"); - String adrs=rs.getString("ADDRESS"); - int phn=rs.getInt("PHONE_NO"); - double sal=rs.getDouble("SALARY"); - int off=rs.getInt("OFFICE_NO"); - Librarian l= new Librarian(id,lname,adrs,phn,sal,off); - - addLibrarian(l); - - }while(rs.next()); - - } - - /*---Populating Borrowers (partially)!!!!!!--------*/ - - SQL="SELECT ID,PNAME,ADDRESS,PASSWORD,PHONE_NO FROM PERSON INNER JOIN BORROWER ON ID=B_ID"; - - rs=stmt.executeQuery(SQL); - - if(!rs.next()) - { - System.out.println("No Borrower Found in Library"); - } - else - { - do - { - int id=rs.getInt("ID"); - String name=rs.getString("PNAME"); - String adrs=rs.getString("ADDRESS"); - int phn=rs.getInt("PHONE_NO"); - - Borrower b= new Borrower(id,name,adrs,phn); - addBorrower(b); - - }while(rs.next()); - - } - - /*----Populating Loan----*/ - - SQL="SELECT * FROM LOAN"; - - rs=stmt.executeQuery(SQL); - if(!rs.next()) - { - System.out.println("No Books Issued Yet!"); - } - else - { - do - { - int borid=rs.getInt("BORROWER"); - int bokid=rs.getInt("BOOK"); - int iid=rs.getInt("ISSUER"); - Integer rid=(Integer)rs.getObject("RECEIVER"); - int rd=0; - Date rdate; - - Date idate=new Date (rs.getTimestamp("ISS_DATE").getTime()); - - if(rid!=null) // if there is a receiver - { - rdate=new Date (rs.getTimestamp("RET_DATE").getTime()); - rd=(int)rid; - } - else - { - rdate=null; - } - - boolean fineStatus = rs.getBoolean("FINE_PAID"); - - boolean set=true; - - Borrower bb = null; - - - for(int i=0;i books = getBooks(); - - for(int k=0;k persons = lib.getPersons(); - - for(int i=0;i books = lib.getBooks(); - - for(int i=0;i books = loans; - - for(int i=0;i persons = lib.getPersons(); - - /* Setting Person ID Count */ - int max=0; - - for(int i=0;i books = lib.getBooks(); - - /*Filling Book's Table*/ - for(int i=0;i books = lib.getBooks(); + + for(int k=0;k persons = lib.getPersons(); + + for(int i=0;i books = lib.getBooks(); + + for(int i=0;i books = Library.loans; + + for(int i=0;i persons = lib.getPersons(); + + /* Setting Person ID Count */ + int max=0; + + for(int i=0;i books = lib.getBooks(); + + /*Filling Book's Table*/ + for(int i=0;i borBooks = ((Borrower)(persons.get(i))).getBorrowedBooks(); + + for (int j = 0; j < borBooks.size() && delete; j++) + { + if (borBooks.get(j).getBook() == b) + { + delete = false; + System.out.println("This particular book is currently borrowed by some borrower."); + } + } + } + } + + if (delete) + { + System.out.println("\nCurrently this book is not borrowed by anyone."); + ArrayList hRequests = b.getHoldRequests(); + + if(!hRequests.isEmpty()) + { + System.out.println("\nThis book might be on hold requests by some borrowers. Deleting this book will delete the relevant hold requests too."); + System.out.println("Do you still want to delete the book? (y/n)"); + + Scanner sc = new Scanner(System.in); + + while (true) + { + String choice = sc.next(); + + if(choice.equals("y") || choice.equals("n")) + { + if(choice.equals("n")) + { + System.out.println("\nDelete Unsuccessful."); + return; + } + else + { + //Empty the books hold request array + //Delete the hold request from the borrowers too + for (int i = 0; i < hRequests.size() && delete; i++) + { + HoldRequest hr = hRequests.get(i); + hr.getBorrower().removeHoldRequest(hr); + b.removeHoldRequest(); + } + } + } + else + System.out.println("Invalid Input. Enter (y/n): "); + } + + } + else + System.out.println("This book has no hold requests."); + + booksInLibrary.remove(b); + System.out.println("The book is successfully removed."); + } + else + System.out.println("\nDelete Unsuccessful."); + } + + + + // Searching Books on basis of title, Subject or Author + public ArrayList searchForBooks() throws IOException + { + String choice; + String title = "", subject = "", author = ""; + + Scanner sc = new Scanner(System.in); + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + + while (true) + { + System.out.println("\nEnter either '1' or '2' or '3' for search by Title, Subject or Author of Book respectively: "); + choice = sc.next(); + + if (choice.equals("1") || choice.equals("2") || choice.equals("3")) + break; + else + System.out.println("\nWrong Input!"); + } + + if (choice.equals("1")) + { + System.out.println("\nEnter the Title of the Book: "); + title = reader.readLine(); + } + + else if (choice.equals("2")) + { + System.out.println("\nEnter the Subject of the Book: "); + subject = reader.readLine(); + } + + else + { + System.out.println("\nEnter the Author of the Book: "); + author = reader.readLine(); + } + + ArrayList matchedBooks = new ArrayList(); + + //Retrieving all the books which matched the user's search query + for(int i = 0; i < booksInLibrary.size(); i++) + { + Book b = booksInLibrary.get(i); + + if (choice.equals("1")) + { + if (b.getTitle().equals(title)) + matchedBooks.add(b); + } + else if (choice.equals("2")) + { + if (b.getSubject().equals(subject)) + matchedBooks.add(b); + } + else + { + if (b.getAuthor().equals(author)) + matchedBooks.add(b); + } + } + + //Printing all the matched Books + if (!matchedBooks.isEmpty()) + { + System.out.println("\nThese books are found: \n"); + + System.out.println("------------------------------------------------------------------------------"); + System.out.println("No.\t\tTitle\t\t\tAuthor\t\t\tSubject"); + System.out.println("------------------------------------------------------------------------------"); + + for (int i = 0; i < matchedBooks.size(); i++) + { + System.out.print(i + "-" + "\t\t"); + matchedBooks.get(i).printInfo(); + System.out.print("\n"); + } + + return matchedBooks; + } + else + { + System.out.println("\nSorry. No Books were found related to your query."); + return null; + } + } + + + + // View Info of all Books in Library + public void viewAllBooks() + { + if (!booksInLibrary.isEmpty()) + { + System.out.println("\nBooks are: "); + + System.out.println("------------------------------------------------------------------------------"); + System.out.println("No.\t\tTitle\t\t\tAuthor\t\t\tSubject"); + System.out.println("------------------------------------------------------------------------------"); + + for (int i = 0; i < booksInLibrary.size(); i++) + { + System.out.print(i + "-" + "\t\t"); + booksInLibrary.get(i).printInfo(); + System.out.print("\n"); + } + } + else + System.out.println("\nCurrently, Library has no books."); + } + + + //Computes total fine for all loans of a borrower + public double computeFine2(Borrower borrower) + { + System.out.println("---------------------------------------------------------------------------------------------------------------------------------------------------------------------"); + System.out.println("No.\t\tBook's Title\t\tBorrower's Name\t\t\tIssued Date\t\t\tReturned Date\t\t\t\tFine(Rs)"); + System.out.println("-------------------------------------------------------------------------------------------------------------------------------------------------------------------"); + + double totalFine = 0; + double per_loan_fine = 0; + + for (int i = 0; i < loans.size(); i++) + { + Loan l = loans.get(i); + + if ((l.getBorrower() == borrower)) + { + per_loan_fine = l.computeFine1(); + System.out.print(i + "-" + "\t\t" + loans.get(i).getBook().getTitle() + "\t\t\t" + loans.get(i).getBorrower().getName() + "\t\t" + loans.get(i).getIssuedDate() + "\t\t\t" + loans.get(i).getReturnDate() + "\t\t\t\t" + per_loan_fine + "\n"); + + totalFine += per_loan_fine; + } + } + + return totalFine; + } + + + public void createPerson(char x) + { + Scanner sc = new Scanner(System.in); + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + + System.out.println("\nEnter Name: "); + String n = ""; + try { + n = reader.readLine(); + } catch (IOException ex) { + Logger.getLogger(Library.class.getName()).log(Level.SEVERE, null, ex); + } + System.out.println("Enter Address: "); + String address = ""; + try { + address = reader.readLine(); + } catch (IOException ex) { + Logger.getLogger(Library.class.getName()).log(Level.SEVERE, null, ex); + } + + int phone = 0; + + try{ + System.out.println("Enter Phone Number: "); + phone = sc.nextInt(); + } + catch (java.util.InputMismatchException e) + { + System.out.println("\nInvalid Input."); + } + + //If clerk is to be created + if (x == 'c') + { + double salary = 0; + + try{ + System.out.println("Enter Salary: "); + salary = sc.nextDouble(); + } + catch (java.util.InputMismatchException e) + { + System.out.println("\nInvalid Input."); + } + + Clerk c = new Clerk(-1,n,address,phone,salary,-1); + addClerk(c); + + System.out.println("\nClerk with name " + n + " created successfully."); + System.out.println("\nYour ID is : " + c.getID()); + System.out.println("Your Password is : " + c.getPassword()); + } + + //If librarian is to be created + else if (x == 'l') + { + double salary = 0; + try{ + System.out.println("Enter Salary: "); + salary = sc.nextDouble(); + } + catch (java.util.InputMismatchException e) + { + System.out.println("\nInvalid Input."); + } + + Librarian l = new Librarian(-1,n,address,phone,salary,-1); + if(addLibrarian(l)) + { + System.out.println("\nLibrarian with name " + n + " created successfully."); + System.out.println("\nYour ID is : " + l.getID()); + System.out.println("Your Password is : " + l.getPassword()); + } + } + + //If borrower is to be created + else + { + Borrower b = new Borrower(-1,n,address,phone); + addBorrower(b); + System.out.println("\nBorrower with name " + n + " created successfully."); + + System.out.println("\nYour ID is : " + b.getID()); + System.out.println("Your Password is : " + b.getPassword()); + } + } + + + + public void createBook(String title, String subject, String author) + { + Book b = new Book(-1,title,subject,author,false); + + addBookinLibrary(b); + + System.out.println("\nBook with Title " + b.getTitle() + " is successfully created."); + } + + + + // Called when want an access to Portal + public Person login() + { + Scanner input = new Scanner(System.in); + + int id = 0; + String password = ""; + + System.out.println("\nEnter ID: "); + + try{ + id = input.nextInt(); + } + catch (java.util.InputMismatchException e) + { + System.out.println("\nInvalid Input"); + } + + System.out.println("Enter Password: "); + password = input.next(); + + for (int i = 0; i < persons.size(); i++) + { + if (persons.get(i).getID() == id && persons.get(i).getPassword().equals(password)) + { + System.out.println("\nLogin Successful"); + return persons.get(i); + } + } + + if(librarian!=null) + { + if (librarian.getID() == id && librarian.getPassword().equals(password)) + { + System.out.println("\nLogin Successful"); + return librarian; + } + } + + System.out.println("\nSorry! Wrong ID or Password"); + return null; + } + + + // History when a Book was Issued and was Returned! + public void viewHistory() + { + if (!loans.isEmpty()) + { + System.out.println("\nIssued Books are: "); + + System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------"); + System.out.println("No.\tBook's Title\tBorrower's Name\t Issuer's Name\t\tIssued Date\t\t\tReceiver's Name\t\tReturned Date\t\tFine Paid"); + System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------"); + + for (int i = 0; i < loans.size(); i++) + { + if(loans.get(i).getIssuer()!=null) + System.out.print(i + "-" + "\t" + loans.get(i).getBook().getTitle() + "\t\t\t" + loans.get(i).getBorrower().getName() + "\t\t" + loans.get(i).getIssuer().getName() + "\t " + loans.get(i).getIssuedDate()); + + if (loans.get(i).getReceiver() != null) + { + System.out.print("\t" + loans.get(i).getReceiver().getName() + "\t\t" + loans.get(i).getReturnDate() +"\t " + loans.get(i).getFineStatus() + "\n"); + } + else + System.out.print("\t\t" + "--" + "\t\t\t" + "--" + "\t\t" + "--" + "\n"); + } + } + else + System.out.println("\nNo issued books."); + } + + + +} diff --git a/Project/src/LMS/Main.java b/Project/src/LMS/Main.java index eb587f3..eae75ae 100644 --- a/Project/src/LMS/Main.java +++ b/Project/src/LMS/Main.java @@ -41,7 +41,7 @@ public static int takeInput(int min, int max) // Functionalities of all Persons public static void allFunctionalities(Person person, int choice) throws IOException { - Library lib = Library.getInstance(); + LibraryOperations lib = new LibraryOperations(); Scanner scanner = new Scanner(System.in); int input = 0; @@ -268,7 +268,8 @@ public static void main(String[] args) //-------------------INTERFACE---------------------------// - Library lib = Library.getInstance(); + LibraryOperations lib = new LibraryOperations(); + LibraryDatabase dbOperation=new LibraryDatabase(); // Setting some by default information like name of library ,fine, deadline and limit of hold request lib.setFine(20); @@ -277,7 +278,7 @@ public static void main(String[] args) lib.setName("FAST Library"); // Making connection with Database. - Connection con = lib.makeConnection(); + Connection con = dbOperation.makeConnection(); if (con == null) // Oops can't connnect ! { @@ -287,7 +288,7 @@ public static void main(String[] args) try { - lib.populateLibrary(con); // Populating Library with all Records + dbOperation.populateLibrary(con); // Populating Library with all Records boolean stop = false; while(!stop) @@ -470,7 +471,7 @@ else if (person.getClass().getSimpleName().equals("Librarian")) } //Loading back all the records in database - lib.fillItBack(con); + dbOperation.fillItBack(con); } catch(Exception e) { diff --git a/Project/src/LMS/Person.java b/Project/src/LMS/Person.java index 36f2229..831467c 100644 --- a/Project/src/LMS/Person.java +++ b/Project/src/LMS/Person.java @@ -12,21 +12,21 @@ public abstract class Person static int currentIdNumber = 0; //This will be unique for every person, since it will be incremented when everytime //when a person is created - public Person(int dd, String n, String a, int p) // para cons. + public Person(int id, String name, String address, int phoneNo) // para cons. { currentIdNumber++; - if(dd==-1) + if(id==-1) { id = currentIdNumber; } else - id = dd; + this.id = id; password = Integer.toString(id); - name = n; - address = a; - phoneNo = p; + this.name = name; + this.address = address; + this.phoneNo = phoneNo; } // Printing Info of a Person