Homework 4
CS320, Fall 2004

Due: Thursday, Nov 18

Please upload your files using the online turnin server. The files should include all the source code, documentation, and an HTML file hw4.html, which contains a link to your JSP page on the CS server. Note that file uploading will be disabled automatically after 11:59PM of the due date, so please turn in your work on time.

[Problem Description]

For this assignment, add support for events to the  web calendar you developed in Homework 3, and keep all information about users, tasks, and events in a database. Again, all features described in previous assignments must work; otherwise there will be a credit penalty of up to 30pt.
[Events] (40pt)

Events are things that are associated with certain time periods, e.g. "CS320 Lecture on Tuesday from 1:30PM to 3:10PM". More specifically, an event has at least the following properties:
Your web calendar should allow a user to add a new event, and when the user selects a date, the calendar should display the events that are associated with that date. The interfaces for adding new events and displaying existing events are completely up to you. Particularly good interface design will receive up to 20pt extra credit. The following two figures are screenshots of Mozilla Calendar, from which you might find some inspiration.

[Display Events] [Display Events]
Figure 1. Display Events
Figure 2. Add a New Event

[Database] (40pt)

Design database tables to store information about users, tasks, and events. Since this is not a database class, you do not have to worry about normal forms and such. However, you have to make sure your database design is functional and correct, for example, a username attribute should have a UNIQUE constraint to ensure that no one can register a user name which is identical to an existing user name. For this part of the assignment, you need to turn in a calendar.sql file which includes all the CREATE TABLE statements for your database.

Once your database is set up, modify your calendar application to use the database for storing tasks and events, as well as for user authentication. Note that you do not have to create a user registration page - we will leave that for the next assignment.