联系方式

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

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

日期:2019-04-25 10:47

COMP122 Assessment 3

Graphical User Interfaces

Due 2019-05-02 at 5pm

COMP122 Assessment 3 Due 2019-05-02 at 5pm

A GUI for a new cryptographic routine

Your employer has patented a brand new and super secure encryption algorithm and you are tasked

with building a flashy UI for end-users to help the marketing department turn it into gold.

You are told that the encryption mechanism uses an integer as secret key when translating plain texts to

crypto texts and back. Both encryption and decryption are done using the same method, called rotate.

To encrypt a plain text string plaintext with key k (an int), you would pass both values as parameters

to this function: cryptotext = rotate(plaintext, k); Conversely, decoding works very much

the same way, but using the inverse key as follows: plaintext = rotate(cryptotext, -k);

To comply with recent governmental regulations, and to make some extra money, your employer

decided to additionally include a back-door – a separate routine that allows to deduce plain texts from

crypto texts without knowing the secret key.

Both crypto-routines are implemented as methods of a class called Caesar, but the implementation

details are proprietary and above your pay grade. So instead of the source code of this class, you are

only given an interface called RotationCipher (see the UML diagram below and also the javadoc

comments in RotationCipher.java) that declares the two routines.

<<interface>>

RotationCipher

+ rotate(s : String, n: int) : String

+ decipher(s : String) : String

Additionally, you are given a file called Caesar.class that contains the compiled bytecode of the

Caesar class, which implements this interface, and which you can instantiate in your code to access

the crypto-routines.

Requirements

You are tasked to write a graphical user interface based on the Swing toolkit that allows users to encrypt

and decrypt text using the new method.

a. Write a Java program called CaesarGUI that allows users to encrypt and decrypt text. You can

add any JComponent widgets you like but as a minimum there should be

a JFrame window to hold all other components

JTextFields (or similar components) for the plain text, the integer key, and crypto text.

a JButton for the user to click on and trigger the conversion

appropriate JLabels to identify the above.

2

COMP122 Assessment 3 Due 2019-05-02 at 5pm

When the button is clicked, your program should read the input plain text and integer key o the

respective components, call the rotate method and update the component for the crypto text.

b. Document your design. Where in your code do you instantiate the Caesar class? How do

the dierent component depend on each other (who creates who)? Describe your design in a

separate report (a PDF). Good documentation would include javadoc and in-line comments at an

appropriate level (don’t document every line of code). You should also add an UML class diagram

that displays all component classes and their attributes/methods that you used in your code.

c. (Bonus) Add some way of validating the input of the integer key. Acceptable solutions would be

if, in case the input cannot be parsed as an integer, the text field turns red, a warning pop-up or

some status line displays an error message. You may also use (or write) Component classes that

make it impossible for users to input non-integers. Document your design choices.

d. (Bonus) Write another GUI, similar to the one above, that uses Caesar.decipher to decipher

encrypted text without the secret key.

Hints

As mentioned in the lectures, it is good practice (but not required) to define your main window

as subclass of JFrame and assemble the components in its constructor.

To react to the user clicking on your button, you will want to write an ActionListener (a class

that implements this interface) and register an instance of this listener class with the button. This

is the Controller part of your Model-View-Controller program. Have a look at the code examples

in lecture 17 to see how to do this.

To get or set the content of a TextField, use its methods getText() and setText() with

signatures as below. See the API docs on oracle.com for more.

1 public String getText();

2 public void setText(String s);

For part c) remember the input validation we discussed as examples for exception handling in

lectures 11 & 12. You may use java.io.Scanner or java.lang.Integer’s parseInt method,

which takes a String, returns an int and possibly throws a NumberFormatException.

1 try{

2 int i = Integer.parseInt(text)

3 }

4 catch ( NumberFormatException e ){ ... }

3

COMP122 Assessment 3 Due 2019-05-02 at 5pm

Submission Instructions

Deadline: Thursday, 2 May 2019, 5:00pm

Submission server: https://sam.csc.liv.ac.uk/COMP/Submissions.pl

Your submission should be a single compressed .zip file called comp122_assessment_3_SID.zip

where SID should be replaced by your student ID. This file should include:

1. Your implementation. This must include the .java source files. Put everything into a subfolder

called ‘src’, including the interface and class file you received for the exercise.

2. A report in .pdf format. You can structure this report as you like and do not need to have the

same formal structure nor pseudo-code as in A1.

Marking Scheme

Each part counts towards the final mark of this coursework as follows.

a b c d

50% 30% 10% 10%

To get full marks for parts c) and d) you need to include documentation, not just the implementation

alone. You do not need to include a full UML class diagram for part d) but it’d make sense to have one

diagram that covers a) and c).

If your code does not compile and run on departmental computer systems you will suer a penalty of

5%. The same applies if your submission does not exactly follow the submission instructions regarding

file name and type.

Your submission is an individual piece of work. No collaboration with other students is allowed!

Expect that plagiarism detection soware will be run on your submission to compare your work to

that of other students. Late submissions and plagiarism/collusion are subject to the University Code

of Practice on Assessment, available here1

. In particular, since these are online submissions, a late

penalty of 5% applies for every 24h period aer the deadline.

Notice that I will not grant extensions requested aer the submission deadline!

1

https://www.liverpool.ac.uk/media/livacuk/tqsd/code-of-practice-on-assessment/code_of_practice_on_assessment.pdf

4


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

python代写
微信客服:codinghelp