JavaFX代写|CS213 Assignment 3 Photos


For this assignment you will build a single-user photo application that allows storage and management of photos in one or more albums.

All user interaction must be implemented in Java FX, and all UIs–except for standard Java FX dialogs such as Alert and TextInputDialog–must be designed in FXML.


Your application must implement the following features:

Date of photo

Since we won’t examine the contents of a photo file to get the date the photo was taken, we will instead use the last modification date of the photo file (as provided via the Java API to the filesystem) as a proxy. (The user interface will still refer to this as the date the photo was taken.)

To store and manipulate dates and times, you have two options:

You can use a java.util.Calendar instance.

In which case, when you set a date and time on an instance, also make sure you set milliseconds to zero, as in cal.set(Calendar.MILLISECOND,0), otherwise your equality checks won’t work correctly.

Alternatively, you may use the classes in the java.time package.


Photos can be tagged with pretty much any attribute you think is useful to search on, or group by. Examples are location where photo was taken, and names of people in a photo, so you can search for photos by location and/or names.

From the implementation point of view, it may be useful to think of a tag as a combination of tag name and tag value, e.g. (“location”,”New Brunswick”), or (“person”,”susan”). A photo may have multiple tags (name+valuepairs), but no two tags for the same photo will have the same name and value combination.

Additional details:

You can set up some tag types beforehand for the user to pick from (e.g. location)

Depending on the tag type, a user can either have a single value for it, or multiple values (e.g. for any photo, location can only have one value, but if there’s a person tag, that can have multiple values, one per person that appears in the photo)

A user can define their own tag type and add it to the list (so from that point on, that tag type will show up in the preset list of types the user can choose from)

Location of Photos – Stock photos and User photos

There are two sets of photos, stock photos that come pre-loaded with the application, and user photos that are loaded/imported by a user when they run the application.

Stock photos are photos that you will keep in the application’s workspace. You must have no fewer than 5 stock photos, and no more than 10.

Create a special username called “stock” (no password, or password=”stock”) and store the stock photos under this user, in an album named “stock”.

Leave the photos in the application’s workspace so the graders can test your application starting with your stock photos, then load other photos from their computer, see “User photos” below.

Try to work with low/medium resolution pictures for the stock photos because they will be on Bitbucket and downloaded by the graders, and you don’t want to bloat your project size.

User photos are photos that your application can allow a user to load from their computer, so they can be housed anywhere on the user’s machine. The actual photos must NOT be in your application’s workspace. Instead, your application should only store the location of the photo on the user’s machine.

User photo information must NOT be in the released project in Bitbucket since each installation of your
application on a machine will have its own set of users.


When the application starts, a user logs in with username. Password implementation is optional. It makes for a “real” scenario, but is irrelevant to the essence of the project. (There is no credit for the password feature, if you choose to implement it.)

Admin Subsystem

There must be a special username admin that will put the application in an administration sub-system.

The admin user can then do any of the following:

  • List users
  • Create a new user
  • Delete an existing user

Note: If you elect to implement passwords for users, make “admin” the password for the admin user, so it’s easier to grade.

Otherwise we will need to ask you, or look in some README file, etc, which just turns out to be a needless hassle.


本网站支持淘宝 支付宝 微信支付  paypal等等交易。如果不放心可以用淘宝交易!

E-mail:  微信:itcsdx