计算机代写|Lecture 15 Final Project Part-1 SHA256 UCSD ECE 111

本次美国JavaFX代写是一个照片管理程序开发的assignment,需要UML设计文档

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.

Features

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.

Tags

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.

Login

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.