Object-Oriented Programming in Java - Andrew.cmu.edu - Carnegie ...

There is one exercise in this homework and it is 100 points. ... Put all your java
files, compiled class files and the documentation files into a zip file named
Homework7.zip and submit it via the Drop Box on the blackboard by the due time.
... In this homework, you will write a GUI for displaying student information in a
university.

Part of the document


Object-Oriented Programming in Java
MISM/MSIT 95-712-C
Homework 7
Due: Wednesday, December 1, 2004, start of class
There is one exercise in this homework and it is 100 points.
Follow the commenting and coding convention, and the minimal class
description guidelines as discussed in the lectures for all the classes you
introduce, except for the test driver classes that contain the main
function.
In this homework, you are free to use packages or not. Generate the Java
documentation by running the javadoc utility over all the classes and
packages you introduced. Put all your java files, compiled class files and
the documentation files into a zip file named Homework7.zip and submit it
via the Drop Box on the blackboard by the due time. Also, print all your
.java files with your name and bring them to me at the beginning of the
class on the due date. Don't print nor bring the documentation files.

In this homework, you will write a GUI for displaying student information
in a university. The information is stored hierarchically in separate
files. At the top level, a data file stores the name of the university and
the departments within that university.
See the cmu_departments.dat below
Carnegie Mellon University
Heinz
CIS
The first line represents the name of the university. The remaining lines
are the departments within that university.
For each department, there are three files: XXX_courses.dat,
XXX_students.dat and XXX_studentcourse.dat where XXX is the name of the
department.
See below the Heinz data files:
1. Heinz_courses.dat: This file has the information about the courses. The
fields are course id, course name, credits, course description, and all
the sections.
95712|Object Oriented Programming in Java|12|Teaches Object Oriented
Programming in Java|A|B|C
95703|Database Management|12|Teaches Database Management|A|B|C|D
2. Heinz_students.dat: This file has the information about the students.
The common fields are G or U representing either a graduate or an
undergraduate student, student name, student id and major. The graduate
student records additionally have the research area field whereas the
undergraduate student records additionally have the minor and the GPA
fields. This is the same file format used in Exercise 3 of Homework 4.
G|Adam Smith|123-4567|Heinz|Risk Management
G|Chris Smith|987-6543|Heinz|Product Marketing
3. Heinz_studentcourse.dat: This file contains information about courses
taken by students. The fields are the student id, the course id and the
section. Each line in this file refers to a student taking a specific
course.
123-4567|95712|C
987-6543|95703|A
Similar files exist for the CIS department.
Your program should read the information stored in these files and display
them in a GUI in the following way:
. Introduce Java classes representing the model of this program. Some
classes you can introduce would be to abstract university information,
department information, course information and information abstracting
the records for students taking courses . For abstracting the student
classes, you can use the package edu.heinz.cmu.oop95712c.Student that was
created in Homework 4 (you are free to modify it).
. Create a top level frame with a menu bar. The menu bar should have "File"
and "Look and Feel" menus. "File" menu should have "Open" and "Exit" menu
items. "Look and Feel" menu should have menu items for changing the look
and feel to "Metal", "Motif" and "Windows".
. When the user selects the "Open" menu item, a file chooser dialog box
should come up listing the files in the current directory. The user may
select a file that has the information about university departments (e.g.
cmu_departments.dat).
. When the user selects a file, your program should read all the
information from the files into your objects.
. After reading the files, your program should set up the GUI as shown in
Figure 1, Figure 2 and Figure 3

[pic]

Figure 1 GUI showing the "Courses Taken" tabbed pane

. On the left side is a JTree showing the departments and their students.
. On the right side is a tabbed pane with two panels. The first panel,
shown in Figure 1, lists the courses taken by a student. The table shows
all the courses taken by the student selected in the JTree structure.
Underneath the table is a JEditorPane displaying the course information
in HTML format. When a student is selected on the tree, all the courses
taken by that student should be listed in the table. When a row is
selected in the table, the information about that course should be
displayed inside the editor pane.
. The second panel displays the information about the student that is
selected on the tree. The first form, which is at the top, is common for
all the students. Depending on whether the student is graduate or
undergraduate, the second form displays specific information on a card
layout panel. For graduate students, as shown in Figure 2, the form has
the research area and the GPA fields where the text field for GPA is set
to 4.0 and is not editable. For undergraduate student, as shown in Figure
3, the form has the minor and the GPA fields. Save and Help buttons don't
do anything.


[pic]

Figure 2 GUI showing the "Student Information" tabbed pane for a graduate
student


[pic]

Figure 3 GUI showing the "Student Information" tabbed pane for an
undergraduate student

You can assume that the input files are all well-formed and the users
choose the correct data files.
As usual, details about how to implement this exercise will be discussed in
the class. The executable files and the skeleton code will be available in
Homework7 directory of
http://www.andrew.cmu.edu/user/syucel/Java/homework_solutions/