Overview
For this project you will implement two classes MySortedLinkedList, and WeekActivities that support a
weekly calendar implementation. This calendar implementation allows users to
schedule activities, and perform typical calendar activities. In addition,
you will design a basic GUI for some of the functionality offered by the
WeekActtivites class.
Objectives
This project will give you practice using linear data structures, the Java
Collections Framework and basic GUI development..
Grading
- (70%) Tests
- (30%) Public JUnit tests
- (40%) Release JUnit tests
- (10%) Student Tests
- (15%) GUI
- (5%) Style
Clarifications
Any clarifications or corrections associated with this project will be
available at: Clarifications
Code Distribution
The project's code distribution is available by checking out
the project named Calendar. The code distribution
provides you with the following:
- A package named calendar - In this package you will find shells
for the classes named MySortedLinkedList, and
WeekActivities. These are the classes you need to implement for
this project. In the calendar package you will also find the following
support classes and enumerated types: Activity,
ActivityComparator, Date, Day, and Time. You will use these
classes and enumerated types during the implementation of the calendar
application; you should not modify any of them.
- A package named tests - Includes the public tests
(PublicTests.java) and a shell for a class (StudentTests.java)
that you must complete with your own tests.
- PublicTests.java - This class represents the set of JUnit public
tests. Some of the tests rely on expected results that can be found in
text files beginning with a "pub" prefix.
- StudentTests.java - This class represents the tests you must
provide for your code.
- A package named gui - This is where you will place the classes
representing your gui.
Specifications
For this project you will implement the classes MySortedLinkedList and WeekActivities that support a
weekly calendar implementation. In addition, you will design/implement a
basic GUI for some of the functionality offered by the WeekActivities class.
The calendar application documentation can be found in the project's javadoc documentation.
You get to decide how your GUI looks like and how it interacts with the
WeekActivities class. When it comes to the GUI keep the following in mind:
- Your GUI must use at least one of the following elements: JFrame,
JButton, JTextField.
- You do not need to implement a fancy/complex/beautiful GUI to get full
credit.
- Your GUI must provide access to the functionality associated with the
following WeekActivities methods: isTimePeriodAvailable, addActivity,
getActivity, removeActivity, and anyActivitiesOnDay. If you want to
provide access to all the functionality associated with WeekActivities
that is fine, but you will not get extra credit. You get to decide how to
provide access to the WeekActivities functionality through the GUI (this
is your opportunity to create and design!)
- You may not use System.out.println.
- Feel free to use JOptionPane class methods.
- All your GUI code must be located in the gui package. Make sure you
define a class name CalendarGUI that we can use to run the GUI
application.
Requirements
- The MySortedLinkedList class
may not be implemented using the Java API ArrayList class or the Java API
LinkedList class.
- You may not add any classes that support the implementation of the
classes MySortedLinkedList or WeekActivities. Notice that for the
development of the GUI you can create as many classes as you understand
are necessary.
- Verify that your project passes the submit server tests (https://submit.cs.umd.edu/)
- See StudentTests.html
for information regarding the implementation of student tests.
- You must attempt to submit your project immediately after checking out
the project (even if you have not implemented any methods). This will
allow you to verify that the submission process is working as expected.
- You should submit your project often. This will keep versions of your
project in the submit server that are easy to retrieve (you can also get
previous versions from your CVS repository). If your computer crashes or
you experience any other problem you will have a permanent backup in the
submit server.
- You have five (not three) tokens for this project in the submit
server.
- Style
- Good variable names.
- You must avoid code duplication by calling appropriate methods
(rather than cutting and pasting code). You may define your own
private utility methods to perform often repeated tasks.
- Style as defined by the Eclipse Format Element option (Source
→ Format → Format Element) or as specified in Code
Conventions for the JavaTM Programming Language (focus on the
following sections: Indentation, Declarations, Statements, White
Space, and Naming Conventions).
- Although you should avoid source lines exceeding 80 characters, you
will not be penalize if they are present in your code.
Honor Section Requirements
- You must implement the MyIterator<E> remove method.
- Your GUI must also use a JTable.
Suggestions on How to Start/Implement This Programming Assignment
- Look at the PublicTests.java file so you understand the expected
functionality for the classes you must implement.
- Thorougly test your MySortedLinkedList class by writing the appropriate
student tests.
- Do not wait until the last minute to start working on the project;
there is plenty to do.