Your cart is currently empty!
Revision Log R3: Fixed user ID / user name confusion in ‘grade’ command R2: Fixed section selection commands to be consistent with multiple sections. Add a comment about violating normal forms to implement constraints. Use ‘points’ instead of ‘weight’ in item commands to be consistent with data model description. Added comment about testing and Eclipse.…
Revision Log
R3:
R2:
Summary
In this project, you will design and implement a Java application for managing grades in a class. This needs to be a command shell application using Cliché, like the examples we are building in class.
Problem Setup
Simplifying assumptions: this application will be used by a single instructor (so we do not need to handle multiple users), but it may be used for multiple classes.
Part 1: Data Model
Draw an E-R model for the data needed for this problem.
Part 2: PostgreSQL Schema
Write SQL CREATE TABLE statements to implement your model. Include foreign key relationships and suitable indexes. Your database must be in the 4th Normal Form; if you need normal form violations for other desirable things such as constraints, that is acceptable; document in your schema file with comments. The comment should identify the normal form violated and explain why the violation is necessary
Part 3: Java Program
Write a Java command shell program (using Cliché) to implement the application. You need to implement the following commands, along with others you deem necessary or helpful:
Class Management
o select-class CS410 Fall 2018 1 selects a specific section
All other commands are to be interpreted in the context of the currently active class.
This is like your current directory in a Unix command line.
Category and Item Management
Student Management
Grade Reporting
Grade Calculation
For reporting grades, calculate grades out of 100. Rescale category weights so they sum to 100; within each category, compute the fraction of possible points a student has achieved (divide their total grade points in that category by the total possible points based on item point counts).
For both student-grades and gradebook, report grades two ways: a total grade, based on total possible points (including items for which the student does not have a grade at all), and an attempted grade, that is based on the point values of the items for which they have a grade.
You should do as much of the grade computations as possible in SQL – minimize your Java computations.
Extra Credit
Add a command ‘import-grades itemname gradefile.csv’ that loads multiple students’ grades for an item from a CSV file where student usernames are in the first column and student grades are in the second.
Submission
Submit a zip file containing the following files:
I need to be able to run ‘mvn package’ in your unzipped submission to build your project and prepare it to run. If you have your project properly configured to use Maven, and zip up the project directory, that should work.
Test with the Maven-based build. Eclipse’s compiler is unhelpfully forgiving.