Project 2 - Online Course Registration

Part 1 - Due - Wednesday, March 3, 2004

Part 2 - Due - Wednesday, March 10,2004

The goal of this assignment is to give you some experience with Servlets, JDBC, and mysql. You are going to create a web site that will allow a student to do online course registration.

Your website will use Java Servlets to accept information from the user and display information for the user. Your Servlets will access a back-end mysql database which stores information about the students (student table), all courses offered (course table), and the entries detailing which students are registered for which courses (reg_entry table). Your Servlets may retrieve information from the database and display it for the user as well as take information from the user and update the information currently stored in the database.

Your assignment is to design and implement a website that will allow the following functions:

  1. Login: A student should be able to log in using a student id number and password. Your site should accept the username and password and verify that the user is in the database (student table) and that the password matches the password stored in the database.
  2. Display Current Registration Status: Once logged in, a student should be able to view a list of the courses for which she is currently registered (join the reg_entry table and the course table). Also, note that the user may not be registered for any courses. You must determine what you will display in this case.
  3. Add a Course: A student should be able to view the list of courses offered (course table in the database) and select to add one of those courses to her schedule. Also, note that if the user tries to add a course for which she is already registered, she should receive an error message.
  4. Delete a Course: A student should be able to select one of the courses for which she is registered and delete it from her schedule.
The following documents should help get you started using the necessary technology:
Getting Started with mysql
Getting Started with Servlets

The following pieces of code should help you get started with writing Servlets and using a database:
Welcome.java
Login.java

Part 1 Turnin

For Part 1, you need to (1) turn in a full specification of your design, (2) turn in the implementation of functions 1 and 2 above (Login and Display Current Registration Status), and (3) demonstrate to me your current progress. Your specification should include all of the components (classes/servlets) you will implement, the functions of each component, and the interaction between the components. You will be graded on your design, so I encourage you to think carefully about how to design your system. Your implementation should include placeholders for the latter functions. For example, your part 1 implementation might provide the user with the option of adding a class even though you may not have completed the code to actually add a course to a user's schedule.

On March 3, class will be held in Clapp 202. You required to be there to demonstrate your progress. If you do not demonstrate your project on this day, it is your responsibility to come and speak with me about alternate scheduling before March 3. Points will be deducted if you do not complete your demonstration by March 3.

Part 2 Turnin

For Part 2, you will demostrate the full workings of your website. Your website should support all of the functions outlined above. You will give a short (5 mintues) presentation where you demonstrate all of the features of your website and tell the class about any interesting design choices you made, or any particularly challening problems you came across. It is likely that we will not complete the demonstrations during the class period. Therefore, I will bribe you to stay for the first part of the lunch hour by providing pizza. If you need to leave early, you need to speak with me and we will schedule your demonstration for the first part of the class. If you are allergic to pizza, or have any other dietary restrictions, let me know! If you do not demonstrate your project on this day, it is your responsibility to come and speak with me about alternate scheduling before March 10. Points will be deducted if you do not complete your demonstration by March 10.

Misc Info: This assignment is to be done individually. You may speak with other students about your design and your implementation. However, any work you turn in must be your own, original work. You are not to look at another student's code or written documentation.

Efforts above an beyond the requirements will be rewarded with extra credit. For example, you could modify the Add a Course function to allow the student to browse available courses by department and/or you could provide the ability to add a new student to the database using an online form. If you want to discuss the amount of extra credit you will receive for adding a particular feature, come and speak with me.

Sami Rollins