联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-21:00
  • 微信:codinghelp

您当前位置:首页 >> Python编程Python编程

日期:2021-05-07 11:12

Project Requirements for Year 2021

Total mark for the project: 100% (Question 1-5 MANDATORY) + 20% (Question 6&7 BONUS)

Create a new Eclipse workspace named "Project_1234567890" on the desktop of your computer (replace

1234567890 with your student ID number). For each question below, create a new project in that workspace. Call each

project by its question number: "Question1", "Question2", etc. If you do not remember how to create a workspace

or projects, read the "Introduction to Eclipse" document which is on iSpace. Answer all the questions below. At the end of

the project, create a ZIP archive of the whole workspace folder. The resulting ZIP file must be called

"Project_1234567890.zip" (replace 1234567890 with your student ID number). Upload the ZIP file on iSpace.

Here are a few extra instructions:

? Give meaningful names to your variables so we can easily know what each variable is used for in your program.

? Put comments in your code (in English!) to explain WHAT your code is doing and also to explain HOW your program

is doing it. Also put comments in your tests.

? Make sure all your code is properly indented (formatted). Your code should be beautiful to read.

Failure to follow these instructions will result in you losing points.

Question1

In this project you need to write software for UIC's finance office. The finance office deals with the finances of different

kinds of people at UIC: students who pay money for their tuitions, employees who receive money for their salaries, etc.

All these people pay or receive a certain amount of money, expressed in yuans.

Write a Payer interface for people who pay money to the finance office, with the following UML specification:

+-------------------------------+

| <<interface>> |

| Payer |

+-------------------------------+

| + getName(): String |

| + getDebt(): int |

| + pay(int amount): void |

+-------------------------------+

and a Person class that implements Payer and has the following UML specification:

+------------------------------------+

| Person |

+------------------------------------+

| - name: String |

| - debt: int |

+------------------------------------+

| + Person(String name, int debt) |

| + getName(): String |

| + getDebt(): int |

| # setDebt(int debt): void |

| + pay(int amount): void |

| + testPerson(): void |

+------------------------------------+

The name instance variable indicates the name of the Person. The debt instance variable indicates the amount of money

that the person must pay to UIC (to simplify the assignment we will assume that money is always expressed as an integer

number of yuans).

The setDebt method changes the amount of debt that a person has. The setDebt method is protected, not

public. This means that only subclasses of the Person class can use the setDebt method. All the other classes in the

software cannot use the setDebt method, so they cannot change the amount of debt a person has, which is good for

security.

The purpose of the pay method is to decrease or increase the amount of debt a person has (depending on what kind of

person it is) by the amount given as argument to the method. The pay method of the Person class is abstract, since

we do not know what kind of person the person is (a person paying money or a person receiving money).

Also add to your program a Test class to test your Person class.

Question2

Add a class Student that extends Person. The constructor of the Student class takes as arguments a name and the

amount of UIC debt that the student has (because the student needs to pay tuition or pay for the dormitory, for example).

The Student class does not have any instance variable.

The pay method of the Student class makes the student pay money to UIC, which decreases the amount of debt that

the student has by the amount of money given as argument to the method. A student can have a negative debt (meaning

that the student paid too much to UIC, which always makes UIC happy).

Make sure you test all the methods of your new Student class, including inherited methods.

Question3

Add a class Employee that extends Person. The constructor of the Employee class takes as arguments the name of

the employee and the salary that UIC must pay to the employee. If the salary given as argument is strictly less than zero

then the constructor must throw a NegativeSalaryException with the message "An employee cannot have

a negative salary!" The Employee class does not have any instance variable.

Warning: the constructor of the Employee class takes as argument the salary of the employee (the amount of money

that UIC must pay to the employee) but the debt instance variable of the Person class indicates how much money the

person must pay to UIC. Therefore, a positive salary is the same as a negative debt.

The pay method of the Employee class makes UIC pay money to the employee, which decreases the current salary of

the employee by the amount of money given as argument to the method (so the debt of the employee becomes less

negative!) For example, if an employee currently has a salary of 10000 yuans (-10000 yuans of debt) and pay(2000) is

called then the employee's salary becomes 8000 yuans (-8000 yuans of debt, meaning that UIC still needs to pay an extra

8000 yuans to the employee after paying the 2000 yuans). It is fine for the pay method to be given a negative value as

argument, which means the employee then just receives a salary increase. For example, if an employee currently has a

salary of 10000 yuans and pay(-2000) is called then the employee's salary becomes 12000 yuans. An employee cannot

be overpaid money by UIC though, so the current salary of the employee must always be positive or zero, never negative

(the debt of the employee cannot be positive). If the argument given to the pay method is too positive and would change

the employee's salary to become negative, then instead the current salary of the employee must not change and the pay

method must throw a NegativeSalaryException with the message "An employee cannot be overpaid

by XXX yuans!", where XXX is replaced with the amount of the overpayment. For example, if an employee currently

has a salary of 10000 yuans and pay(12000) is called then the employee still has a salary of 10000 yuans and the

method throws a NegativeSalaryException with the message "An employee cannot be overpaid by

2000 yuans!"

Note: to simplify the project, do not worry about the setDebt method.

Change other classes and interfaces as necessary.

Question4

Add a class FacultyMember that extends Employee. The constructor of the FacultyMember class takes as

arguments the name of the faculty member and the salary that UIC must pay to the faculty member. The

FacultyMember class does not have any instance variable.

The pay method of the FacultyMember class makes UIC pay money to the faculty member, which decreases the

current salary of the faculty member by the amount of money given as argument to the method (so the debt of the faculty

member becomes less negative!) In addition to the normal salary, a faculty member might also temporarily borrow extra

money from UIC that the faculty member will need to reimburse later, so the salary of a faculty member might then

become negative (the debt becomes positive) without throwing any exception: a negative salary (positive debt) then just

means that the faculty member has temporarily borrowed some money.

Change other classes and interfaces as necessary.

Question5

Add a FinanceOffice class with the following UML specification:

+--------------------------------------------+

| FinanceOffice |

+--------------------------------------------+

| - name: String |

| - payers: ArrayList<Payer> |

+--------------------------------------------+

| + FinanceOffice(String name) |

| + addPayer(Payer payer): void |

| + totalDebt(): int |

| + getDebt(String name): int |

| + pay(String name, int amount): void |

| + testFinanceOffice(): void |

+--------------------------------------------+

When a finance office is created, it has an arraylist of payers but the arraylist is empty (the arraylist does not contain any

payer).

The addPayer method takes a payer as argument and adds the payer to the arraylist of payers for the finance office.

The totalDebt method returns as result the total amount of debt of all the payers of the finance office (if the result is

positive then it means that the finance office will receive more money from all the students (and the faculty members

with debts) than it needs money to pay all the salaries of the employees and UIC will then make a profit; if the result is

negative then it means that the finance office will not get enough money from the students and will need to borrow extra

money from a bank to be able to pay all the employees, otherwise UIC will go bankrupt; if the result is zero then it means

that the money paid by all the students will exactly cover the salaries of the employees).

The getDebt method takes as argument the name of a payer and returns as result the current amount of debt for this

payer. If the finance office does not have a payer with the correct name then the getDebt method must throw an

UnknownPayerException with the message "Payer XXX unknown", where XXX is replaced with the name of

the payer. Do not worry about multiple payers having the same name.

The pay method takes as argument the name of a payer and an amount of money and uses the pay method of that payer

to pay that amount of money to that payer. If the finance office does not have a payer with the correct name then the

pay method must throw an UnknownPayerException with the message "Payer XXX unknown", where XXX is

replaced with the name of the payer. Do not worry about multiple payers having the same name.

Note: the pay method does not catch any exception, it only throws exceptions.

Question6

In this question and the next one we want to create a command line interface (CLI) for our finance office software.

Add a CLI class with a main method. Your code then has two classes with a main method: the Test class that you can

use to run all your tests for all your classes, and the CLI class that you will now use to run the interactive text-based

interface of your program.

The CLI class does not have any testCLI method because this class is only used to allow users to use the software

interactively.

Add to the CLI class a private static input instance variable which is a Scanner object that reads input from the

standard input stream System.in:

private static Scanner input = new Scanner(System.in);

Always use this input scanner object when you need to read input. (Never close this scanner object, because this would

also close the standard input stream System.in, and then the next time you tried to read something from the standard

input stream you would get a NoSuchElementException!)

In addition to the main method and the input instance variable, the CLI class has two methods called readLine and

readPosInt.

The readLine method is static and private, it takes a string as argument, and returns another string as result. The

readPosInt method is static and private, it takes a string as argument, and returns a positive integer as result.

The readLine method uses System.out.print (not println) to print its string argument on the screen (later

when we use the readLine method, the string argument of the method will be a message telling the user to type some

text). Then the readLine method uses the input scanner object to read a whole line of text from the user of the

program and returns the text as result.

The readPosInt method uses System.out.print (not println) to print its string argument on the screen (later

when we use the readPosInt method, the string argument of the method will be a message telling the user to type some

integer). Then the readPosInt method uses the input scanner object to read an integer from the user of the program.

After reading the integer, the readPosInt method must also use the scanner's nextLine method to read the single

newline character that comes from the user pressing the Enter key on the keyboard after typing the integer (if you do

not read this newline character using the nextLine method inside the readPosInt method, then the newline

character will remain in the input stream, and, the next time you use the readLine method described above, the

readLine method will just immediately read only the newline character from the input stream and return an empty

string as result, without waiting for the user to type anything!)

If the user types something which is not an integer, then the nextInt method of the scanner will throw an

InputMismatchException. In that case the code of your readPosInt method must catch the exception, use

System.out.println to print the error message "You must type an integer!" to the user (use

System.out.println for this, not System.err.println, otherwise you might hit a bug in Eclipse...), use the

scanner's nextLine method to read (and ignore) the wrong input typed by the user of the program (if you do not do

this, the wrong input typed by the user will remain in the input stream, and the next time you call the nextInt method

again, you will get an InputMismatchException again!), and then do the whole thing again (including printing again

the string argument of the readPosInt method) to try to read an integer again (hint: put the whole code of the method

inside a while loop).

After reading the integer and the newline character (which is just ignored), the readPosInt method tests the integer.

If the integer is bigger than or equal to zero, then the readPosInt method returns the integer as result. If the integer

is strictly less than zero, then the readPosInt method uses System.out.println to print the error message

"Positive integers only!" to the user (use System.out.println for this, not System.err.println,

otherwise you might hit a bug in Eclipse...), and then does the whole thing again (including printing again the string

argument of the readPosInt method) to try to read an integer again (hint: just print the error message, and then the

while loop you already have around the whole code will automatically do the whole thing again...)

For example, if you want to check that your two methods readLine and readPosInt work correctly, put the following

code in the main method of your CLI class:

public static void main(String[] args) {

String str1 = readLine("Type some text: ");

System.out.println("Text read is: " + str1);

int i = readPosInt("Type an integer: ");

System.out.println("Integer read is: " + i);

String str2 = readLine("Type some text again: ");

System.out.println("Text read is: " + str2);

}

then running the main method of the CLI class should look like this (where aaaa bbbb, cccc, dddd eeee, -100,

-200, 1234, and ffff gggg are inputs typed by the user on the keyboard):

Type some text: aaaa bbbb

Text read is: aaaa bbbb

Type an integer: cccc

You must type an integer!

Type an integer: dddd eeee

You must type an integer!

Type an integer: -100

Positive integers only!

Type an integer: -200

Positive integers only!

Type an integer: 1234

Integer read is: 1234

Type some text again: ffff gggg

Text read is: ffff gggg

Question7

Once you have checked that your methods readLine and readPosInt work correctly, remove all the code inside the

main method of the CLI class so that the main method is empty again.

In the rest of this question, use the readLine and readPosInt methods every time your program needs to read a

string or an integer from the user.

In the empty main method of the CLI class, create a single FinanceOffice object with the name "UIC FO". The

main method of the CLI class must then print a menu that allows the user of your software to do six different actions

that involve the finance office object, and your program must then read an integer from the user that indicates which

action must be performed by the program (see below for the details of each action). Use the readPosInt method to

print the menu (give the string for the menu as the argument of readPosInt) and to read the integer typed by the user.

For example, the menu should look like this:

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6):

The user then types an integer between 1 and 6 to select the action.

For example (where 3 is an input from the user):

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

and your program then performs the selected action.

After an action has been performed by your program, your program must again print the menu and ask again the user of

the program for the next action to perform (hint: put the whole code of the main method inside a while loop, except

for the one line of code that creates the single finance office object).

If the user types an integer which is not between 1 and 6, then your program must print an error message "Unknown

action!" to the user (hint: when testing the integer for the action, use the default case of a switch statement)

and then print the menu again (by just going back to the beginning of the while loop).

For example (where 7 is an input from the user):

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 7

Unknown action!

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6):

If the user types something which is not an integer, the readPosInt method that you implemented in the previous

question will automatically repeat the menu and ask the user to type an integer again until the user actually types an

integer, so you do not have to worry about this in the code of the main method of your CLI class.

For example (where aaaa and bbbb cccc are inputs from the user):

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): aaaa

You must type an integer!

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): bbbb cccc

You must type an integer!

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6):

Here are the detailed explanations for each action.

Action1:printingthetotalamountofdebt.

When the user of the software specifies action 1, your program must simply print on the screen the total amount of debt

for all the payers of the finance office. Then your program goes back to printing the menu of actions (by just going back

to the beginning of the while loop).

For example (where 1 is an input from the user):

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 1

Total amount of debt: 2000

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6):

Action2:addinganewpayer tothefinanceoffice.

When the user of the software specifies action 2, your program must add a new payer to the finance office. To add a new

payer, your program needs to ask the user three things: the type of payer(an integerread using readPosInt: the integer

1 represents a student, the integer 2 represents an employee, the integer 3 represents a faculty member, and any other

integer must result in an error message "Unknown type of payer!" being printed and the software going

immediately back to the main menu), the name of the payer (a string read using readLine), and the initial amount of

money for the debt (for a student) or the salary (for an employee or a faculty member) when the payer is created. You

program must then create the correct payer, add it to the finance office, and print an information message for the user of

the software. The program then goes back to the menu.

For example (where 1, 2, -100, 4, 2, 1, UIC Student, 5000, 1, 2, 2, Thomas, 1000, 1, 2, 3, Jane, 2000, and 1

are inputs from the user):

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 1

Total amount of debt: 0

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 2

Enter the payer type (student:1 employee:2 faculty member:3): -100

Positive integers only!

Enter the payer type (student:1 employee:2 faculty member:3): 4

Unknown type of payer!

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 2

Enter the payer type (student:1 employee:2 faculty member:3): 1

Enter the name of the payer: UIC Student

Enter the initial amount of money: 5000

Student "UIC Student" with 5000 yuans of debt added

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 1

Total amount of debt: 5000

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 2

Enter the payer type (student:1 employee:2 faculty member:3): 2

Enter the name of the payer: Thomas

Enter the initial amount of money: 1000

Employee "Philippe" with 1000 yuans of salary added

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 1

Total amount of debt: 4000

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 2

Enter the payer type (student:1 employee:2 faculty member:3): 3

Enter the name of the payer: Jane

Enter the initial amount of money: 2000

Faculty member "Meunier" with 2000 yuans of salary added

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 1

Total amount of debt: 2000

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6):

Note that the readPosInt method prevents the initial amount of money from being negative, so the constructor for

the Employee class will never throw a NegativeSalaryException when you create an employee object.

Nevertheless, the code of the main method of your CLI class must handle this exception correctly by printing the error

message "BUG! This must never happen!" and immediately terminating the program using System.exit(1).

The same applies to a faculty member.

Action3:listingtheamountofdebtfor a givenpayer.

When the user of the software specifies action 3, your program must ask the user to type the name of a payer, and the

program then prints the amount of debt for this payer.

For example (where 3, UIC Student, 3, Thomas, 3, and Jane are inputs from the user):

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: UIC Student

UIC Student has 5000 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: Thomas

Philippe has -1000 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: Jane

Meunier has -2000 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6):

If the name of the payer is wrong (the finance office does not have a payer with this name) then an

UnknownPayerException will be thrown by the FinanceOffice object. The code of the main method of your

CLI class must then catch this exception, print the error message from the exception object, and then it just goes back to

printing the menu of actions (by just going back to the beginning of the while loop).

For example (where 3 and aaaa are inputs from the user):

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: aaaa

Payer aaaa unknown

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6):

Action4:paying money to agivenpayer.

When the user of the software specifies action 4, your program must ask the user to type the name of a payer and an

amount of money, and the program then uses that amount of money to call the pay method of the payer with that name.

Then the program goes back to the main menu.

For example:

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: UIC Student

UIC Student has 5000 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 4

Enter the name of the payer: UIC Student

Enter the amount of money: 1000

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: UIC Student

UIC Student has 4000 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: Thomas

Philippe has -1000 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 4

Enter the name of the payer: Thomas

Enter the amount of money: -500

Positive integers only!

Enter the amount of money: 500

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: Thomas

Philippe has -500 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: Jane

Meunier has -2000 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 4

Enter the name of the payer: Jane

Enter the amount of money: 500

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: Jane

Meunier has -1500 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6):

If the name of the payer is wrong (the finance office does not have a payer with this name) then an

UnknownPayerException will be thrown by the FinanceOffice object. The code of the main method of your

CLI class must then catch this exception, print the error message from the exception object, and then it just goes back to

printing the menu of actions (by just going back to the beginning of the while loop).

For example:

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 4

Enter the name of the payer: aaaa

Enter the amount of money: 1000

Payer aaaa unknown

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6):

If a payer is an employee and the amount of money typed by the user is too big then a NegativeSalaryException

will be thrown by the Employee object. The code of the main method of your CLI class must then catch this exception,

print the error message from the exception object, and then it just goes back to printing the menu of actions (by just going

back to the beginning of the while loop).

For example:

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: Thomas

Philippe has -500 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 4

Enter the name of the payer: Thomas

Enter the amount of money: 1500

An employee cannot be overpaid by 1000 yuans!

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: Thomas

Philippe has -500 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: UIC Student

UIC Student has 4000 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 4

Enter the name of the payer: UIC Student

Enter the amount of money: 5000

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: UIC Student

UIC Student has -1000 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: Jane

Meunier has -1500 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 4

Enter the name of the payer: Jane

Enter the amount of money: 2000

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: Jane

Meunier has 500 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6):

Action5:taking money fromagivenpayer.

When the user of the software specifies action 5, your program must ask the user to type the name of a payer and an

amount of money, and the program then uses that amount of money, makes it negative, and pays that negative amount

to the payer with that name. Then the program goes back to the main menu.

For example:

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: UIC Student

UIC Student has 4000 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 5

Enter the name of the payer: UIC Student

Enter the amount of money: 1000

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: UIC Student

UIC Student has 5000 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: Thomas

Philippe has -500 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 5

Enter the name of the payer: Thomas

Enter the amount of money: -500

Positive integers only!

Enter the amount of money: 500

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: Thomas

Philippe has -1000 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: Jane

Meunier has -1500 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 5

Enter the name of the payer: Jane

Enter the amount of money: 500

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: Jane

Meunier has -2000 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6):

If the name of the payer is wrong (the finance office does not have a payer with this name) then an

UnknownPayerException will be thrown by the FinanceOffice object. The code of the main method of your

CLI class must then catch this exception, print the error message from the exception object, and then it just goes back to

printing the menu of actions (by just going back to the beginning of the while loop).

For example:

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 5

Enter the name of the payer: aaaa

Enter the amount of money: 1000

Payer aaaa unknown

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6):

Note that, even if a payer is an employee, the readPosInt method prevents the amount of money typed by the user

from being negative. This means an employee will never throw a NegativeSalaryException. Nevertheless, the

code of the main method of your CLI class must handle this exception by printing the error message "BUG! This

must never happen!" and immediately terminating the program using System.exit(1).

Action6:quittingthe program.

When the user of the software specifies action 6, your program must print a "Goodbye!" message, and terminate the

program using: System.exit(0).

For example (where 6 is an input from the user):

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 6

Goodbye!

Here is a more complete example of running the software:

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): aaaa

You must type an integer!

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): bbbb cccc

You must type an integer!

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): -100

Positive integers only!

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 7

Unknown action!

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 1

Total amount of debt: 0

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 2

Enter the payer type (student:1 employee:2 faculty member:3): -100

Positive integers only!

Enter the payer type (student:1 employee:2 faculty member:3): 4

Unknown type of payer!

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 2

Enter the payer type (student:1 employee:2 faculty member:3): 1

Enter the name of the payer: UIC Student

Enter the initial amount of money: 5000

Student "UIC Student" with 5000 yuans of debt added

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 1

Total amount of debt: 5000

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 2

Enter the payer type (student:1 employee:2 faculty member:3): 2

Enter the name of the payer: Thomas

Enter the initial amount of money: 1000

Employee "Philippe" with 1000 yuans of salary added

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 1

Total amount of debt: 4000

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 2

Enter the payer type (student:1 employee:2 faculty member:3): 3

Enter the name of the payer: Jane

Enter the initial amount of money: 2000

Faculty member "Meunier" with 2000 yuans of salary added

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 1

Total amount of debt: 2000

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: UIC Student

UIC Student has 5000 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: Thomas

Philippe has -1000 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: Jane

Meunier has -2000 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: aaaa

Payer aaaa unknown

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 4

Enter the name of the payer: UIC Student

Enter the amount of money: 1000

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: UIC Student

UIC Student has 4000 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 4

Enter the name of the payer: Thomas

Enter the amount of money: -1000

Positive integers only!

Enter the amount of money: 1000

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: Thomas

Philippe has 0 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 4

Enter the name of the payer: Jane

Enter the amount of money: 500

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: Jane

Meunier has -1500 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 1

Total amount of debt: 2500

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 4

Enter the name of the payer: aaaa

Enter the amount of money: 1000

Payer aaaa unknown

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 5

Enter the name of the payer: UIC Student

Enter the amount of money: 1000

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: UIC Student

UIC Student has 5000 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 5

Enter the name of the payer: Thomas

Enter the amount of money: -1000

Positive integers only!

Enter the amount of money: 1000

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: Thomas

Philippe has -1000 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 5

Enter the name of the payer: Jane

Enter the amount of money: 500

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: Jane

Meunier has -2000 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 1

Total amount of debt: 2000

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 5

Enter the name of the payer: aaaa

Enter the amount of money: 1000

Payer aaaa unknown

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 4

Enter the name of the payer: UIC Student

Enter the amount of money: 6000

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: UIC Student

UIC Student has -1000 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 4

Enter the name of the payer: Thomas

Enter the amount of money: 1500

An employee cannot be overpaid by 500 yuans!

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: Thomas

Philippe has -1000 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 4

Enter the name of the payer: Jane

Enter the amount of money: 2500

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 3

Enter the name of the payer: Jane

Meunier has 500 yuans of debt

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 1

Total amount of debt: -1500

Type an action (total:1 add:2 get:3 give:4 take:5 quit:6): 6

Goodbye!


版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp