Write a program in java for a print server. Your program should use array of 5 p
ID: 3642947 • Letter: W
Question
Write a program in java for a print server. Your program should use array of 5 printers and a Queue to save print jobs.
Each printer will have a name, max number of print jobs and link to print jobs.Enter printer information when the program starts.
The print server will recieve the folowing information from the user: printer name he wishes to use, file name to be printed and number of pages.
The program should have a menu to do the following:
1.Insert print jobs: Take print job information from the user and add them to the list. The program should check that number of print jobs doesn't exceed the limit of the printer. otherwise inform the user the printer can't serve the task and ask to select another one.
2. search a print job: Take the file name and check if it exists in the list of all printers. print the file name, printer name and number of pages if the print job is found. otherwise inform the user the file doesn't exist.
Explanation / Answer
please rate
keep file name as PrintServer.java
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
class PrintJobs{
String fileName;
int noOfPages;
public PrintJobs(String fileName,int noOfPages){
this.fileName = fileName;
this.noOfPages = noOfPages;
}
public String getFileName(){
return fileName;
}
public int getNoOfPages(){
return noOfPages;
}
}
class Printer{
String name;
int maxJobs;
int currentlyUsed;
Queue<PrintJobs> q = new LinkedList<PrintJobs>();
public String getPrinterName(){
return name;
}
public int getMaxJobs(){
return maxJobs;
}
public Printer(String name,int maxJobs){
this.name = name;
this.maxJobs = maxJobs;
currentlyUsed = 0;
}
public void addJob(String fileName,int noOfPages){
if(currentlyUsed< maxJobs){
PrintJobs temp = new PrintJobs(fileName, noOfPages);
q.add(temp);
currentlyUsed++;
System.out.println("Job added to queue");
}else{
System.out.println("Printer queue is full. Try some other printer.");
}
}
public PrintJobs findJob(String name){
for(PrintJobs j: q){
if(j.getFileName().equalsIgnoreCase(name)){
return j;
}
}
return null;
}
}
public class PrintServer {
Printer p[] = new Printer[5];
Scanner input = new Scanner(System.in);
PrintServer(){
for(int i=0;i<5;i++){
System.out.println("Enter printer "+i+" name: ");
String name = input.next();
System.out.println("Enter maximum number of jobs for "+name+": ");
int jobs = input.nextInt();
p[i] = new Printer(name,jobs);
}
getUserChoice();
}
public Printer findPrinter(String printerName){
for(int i=0;i<5;i++){
if(p[i].getPrinterName().equalsIgnoreCase(printerName)){
return p[i];
}
}
return null;
}
public boolean findJob(String fileName){
boolean jobFound = false;
PrintJobs temp;
for(int i=0;i<5;i++){
if((temp=p[i].findJob(fileName))!=null){
jobFound = true;
System.out.println("Printer "+p[i].getPrinterName()+" has "+fileName+" in queue with "+temp.getNoOfPages()+" pages to print in file.");
}
}
return jobFound;
}
public void getUserChoice(){
boolean finished = false;
System.out.println("1. Insert print job 2. Search print job 3. Exit");
int choice = 0;
while(!finished){
System.out.println("Enter chocie: ");
choice = input.nextInt();
switch(choice){
case 1:{
System.out.println("Enter printer name: ");
String printerName = input.next();
Printer p = findPrinter(printerName);
if(p==null){
System.out.println("Printer not found..");
break;
}
System.out.println("Enter file name: ");
String fileName = input.next();
System.out.println("Enter number of pages: ");
int pages = input.nextInt();
p.addJob(fileName, pages);
break;
}
case 2:{
System.out.println("Enter file name: ");
String fileName = input.next();
if(!findJob(fileName))
System.out.println("Job not found");
break;
}
case 3:
System.out.println("Exiting");
finished = true;
break;
}
}
}
public static void main(String[] args){
new PrintServer();
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.