📄 libsys.java
字号:
/**
This program is designed to provide a basic information management
of a school library.
Author: Kai Zhou
E-mail: endlesswinds@hotmail.com
Last Changed: 24th, Sep, 2007
*/
import java.util.StringTokenizer;
import java.util.Scanner;
public class Libsys {
private Student[] arrayOfStudents=new Student[100];
private Staff[] arrayOfStaffs=new Staff[100];
private PrintedResource[] arrayOfItems=new PrintedResource[100];
private int numberOfStudent=0;
private int numberOfStaff=0;
private int numberOfItem=0;
public static void main(String[] args)
{
String readLine; //Store what user input.
Scanner keyboard=new Scanner(System.in);
readLine=keyboard.nextLine();
Libsys librarySystem=new Libsys(); // Create an object to invoke nostatic method.
while(!librarySystem.exitSystem(readLine))
{
librarySystem.runCommander(readLine);
readLine=keyboard.nextLine(); //Read the next commander.
}
System.exit(0);
}
private boolean exitSystem(String readLine)
{
return readLine.equalsIgnoreCase("exit");
}
private String commanders(String readLine)
{
String delimiters=" ";
StringTokenizer wordFactory=new StringTokenizer(readLine,delimiters);
String Commander=wordFactory.nextToken();
return Commander;
}//Separate the commanders form the readline.
private void runCommander(String readLine)
{
if(commanders(readLine).equalsIgnoreCase("ADD_MEMB"))
{
addMember(readLine);
}
else if(commanders(readLine).equalsIgnoreCase("ADD_ITEM"))
{
addItem(readLine);
}
else if(commanders(readLine).equalsIgnoreCase("EDIT_MEMB"))
{
editMember(readLine);
}
else if(commanders(readLine).equalsIgnoreCase("EDIT_ITEM"))
{
editItem(readLine);
}
else if(commanders(readLine).equalsIgnoreCase("BORROW"))
{
borrowItems(readLine);
}
else if(commanders(readLine).equalsIgnoreCase("RETURN"))
{
returnItems(readLine);
}
else if(commanders(readLine).startsWith("DEL_"))
{
delete(readLine);
}
else if(commanders(readLine).startsWith("LIST_"))
{
list(readLine);
}
else if(commanders(readLine).startsWith("COUNT_"))
{
count(readLine);
}
}//Call related method according to the commanders.
public void addMember(String readLine)
{
String delimiters=",";
StringTokenizer wordFactory=new StringTokenizer(readLine,delimiters);
String beginWord=wordFactory.nextToken();
String memberID=beginWord.substring(9,17);
String givenName=wordFactory.nextToken();
String familyName=wordFactory.nextToken();
String birthday=wordFactory.nextToken();
String email=wordFactory.nextToken();
String telephoneNumber=wordFactory.nextToken();
if(memberID.startsWith("STUD"))
{
arrayOfStudents[numberOfStudent]=new Student(memberID,givenName,familyName,birthday,email,telephoneNumber);
numberOfStudent=numberOfStudent+1;
}
else if(memberID.startsWith("STAFF"))
{
arrayOfStaffs[numberOfStaff]=new Staff(memberID,givenName,familyName,birthday,email,telephoneNumber);
numberOfStaff=numberOfStaff+1;
}
else
{
System.exit(0);
}
}
public void addItem(String readLine)
{
String delimiters=",";
StringTokenizer wordFactory=new StringTokenizer(readLine,delimiters);
String beginWord=wordFactory.nextToken();
String callNumber=beginWord.substring(9,15);
String title=wordFactory.nextToken();
String author=wordFactory.nextToken();
String publisher=wordFactory.nextToken();
String dateOfPublication=wordFactory.nextToken();
arrayOfItems[numberOfItem]=new PrintedResource(callNumber,title,dateOfPublication,author,publisher);
numberOfItem=numberOfItem+1;
}
private int matchString(String ID,Student[] IDGroup)
{
int index=0;
for(;index<numberOfStudent;index++)
{
if(IDGroup[index].getMemberID().equalsIgnoreCase(ID))break;
}
return index;
}//find the index of the student ID.
private int matchString(String ID,Staff[] IDGroup)
{
int index=0;
for(;index<numberOfStaff;index++)
{
if(IDGroup[index].getMemberID().equalsIgnoreCase(ID))break;
}
return index;
}//find the index of the staff ID.
private int matchString(String ID,PrintedResource[] IDGroup)
{
int index=0;
for(;index<numberOfItem;index++)
{
if(IDGroup[index].getCallNumer().equalsIgnoreCase(ID))break;
}
return index;
}//find the index of the call number.
public void editMember(String readLine)
{
String delimiters=",";
StringTokenizer wordFactory=new StringTokenizer(readLine,delimiters);
String beginWord=wordFactory.nextToken();
String memberID=beginWord.substring(10, 18);
String givenName=wordFactory.nextToken();
String familyName=wordFactory.nextToken();
String birthday=wordFactory.nextToken();
String email=wordFactory.nextToken();
String telephoneNumber=wordFactory.nextToken();
if(memberID.startsWith("STUD"))
{
int index=matchString(memberID,arrayOfStudents);
arrayOfStudents[index].setGivenName(givenName);
arrayOfStudents[index].setFamilyName(familyName);
arrayOfStudents[index].setBirthday(birthday);
arrayOfStudents[index].setEmail(email);
arrayOfStudents[index].setTelephoneNumber(telephoneNumber);
}
else if(memberID.startsWith("STAFF"))
{
int index=matchString(memberID,arrayOfStaffs);
arrayOfStaffs[index].setGivenName(givenName);
arrayOfStaffs[index].setFamilyName(familyName);
arrayOfStaffs[index].setBirthday(birthday);
arrayOfStaffs[index].setEmail(email);
arrayOfStaffs[index].setTelephoneNumber(telephoneNumber);
}
}
public void editItem(String readLine)
{
String delimiters=",";
StringTokenizer wordFactory=new StringTokenizer(readLine,delimiters);
String beginWord=wordFactory.nextToken();
String callNumber=beginWord.substring(10, 16);
String title=wordFactory.nextToken();
String author=wordFactory.nextToken();
String publisher=wordFactory.nextToken();
String dateOfPublication=wordFactory.nextToken();
int index=matchString(callNumber,arrayOfItems);
arrayOfItems[index].setTitle(title);
arrayOfItems[index].setAuthor(author);
arrayOfItems[index].setPublisher(publisher);
arrayOfItems[index].setDateOfPublication(dateOfPublication);
}
public void borrowItems(String readLine)
{
String delimiters=",";
StringTokenizer wordFactory=new StringTokenizer(readLine,delimiters);
String beginWord=wordFactory.nextToken();
String memberID=beginWord.substring(7, 15);
String callNumber=wordFactory.nextToken();
String returnDate=wordFactory.nextToken();
if(memberID.startsWith("STUD"))
{
int indexOfStudent=matchString(memberID,arrayOfStudents);
int indexOfItem=matchString(callNumber,arrayOfItems);
if(!arrayOfItems[indexOfItem].getAvailable())
{
System.out.println("ERR_BORROW: "+arrayOfItems[indexOfItem].getCallNumer()+" is not available");
}//determine whether the Item is available.
else if(arrayOfStudents[indexOfStudent].getItemBorrowed()>=arrayOfStudents[indexOfStudent].getMaxBorrow())
{
System.out.println("ERR_BORROW: "+arrayOfStudents[indexOfStudent].getMemberID()+" can not borrow any more item!");
}//determine whether the member beyond the max number of items can borrow.
else
{
arrayOfStudents[indexOfStudent].borrowItem(arrayOfStudents, indexOfStudent, arrayOfItems, indexOfItem, returnDate);
}
}
else if(memberID.startsWith("STAFF"))
{
int indexOfStaff=matchString(memberID,arrayOfStaffs);
int indexOfitem=matchString(callNumber,arrayOfItems);
if(!arrayOfItems[indexOfitem].getAvailable())
{
System.out.println("ERR_BORROW: "+arrayOfItems[indexOfitem].getCallNumer()+" is not available");
}//determine whether the Item is available.
else if(arrayOfStaffs[indexOfStaff].getItemBorrowed()>=arrayOfStaffs[indexOfStaff].getMaxBorrow())
{
System.out.println("ERR_BORROW: "+arrayOfStaffs[indexOfStaff].getMemberID()+" can not borrow any more item!");
}//determine whether the member beyond the max number of items can borrow.
else
{
arrayOfStaffs[indexOfStaff].borrowItem(arrayOfStaffs, indexOfStaff, arrayOfItems, indexOfitem, returnDate);
}
}
}
public void delete(String readLine)
{
String delimiters=" ";
StringTokenizer wordFactory=new StringTokenizer(readLine,delimiters);
String commander=wordFactory.nextToken();
String deleteID=wordFactory.nextToken();
if(commander.equalsIgnoreCase("DEL_MEMB"))
{
if(deleteID.startsWith("STUD"))
{
int index=matchString(deleteID,arrayOfStudents);
if(arrayOfStudents[index].getItemBorrowed()==0)
{
for(int i=index;i<numberOfStudent-1;i++)
{
arrayOfStudents[i]=arrayOfStudents[i+1];
}
numberOfStudent--;
}//delete the element from the array. Copy the rest element one position forward.
else System.out.println("ERR_DELETE: "+deleteID+" can not be deleted! Should return all borrowed items first.");
}
else if(deleteID.startsWith("STAFF"))
{
int index=matchString(deleteID,arrayOfStaffs);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -