CS 250 Computer Programming and Problem Solving - FALL 1998
|
[ Home | Syllabus | Notes | Glossary | CS250 WEB Version Home Page | Project Page | Final Study Guide]
Term Project
Student Registration System
Requirements Version 1.0 (October 27, 1998)
Brief Description
Our class has been asked to propose, design and implement a
software system to keep track of Student Registration for the University. The following
requirements are deemed to be very important. You may have to add additional requirements
as your analysis proceeds.
- The student registration information must be stored on a file which is read
in at the beginning of the program and written out at the end.
- The user interface includes functions which:
- Add a new student
- Add a new course
- Add and drop courses for a student.
- Calculate the number of credits taken and tuition bill for a student.
- Print a list of courses taken by a student.
- Print a class roster listing every student registered for a given course.
- The Student Registration Information is only required for the current
semester.
Learning Objectives
- Practice Object Oriented Analysis and Design
- Plan and complete a project using good software engineering
techniques
- Define and implement a testing strategy which is realistic and
comprehensive
- Design and implement appropriate data structures and algorithms
to be used in the implementation of this project
- Develop experience in C++ programming of an object-oriented
implementation to a small project.
- Use C++ features of inheritance, templates, and operator
overload.
Project Phases
- Phase I: Analysis and Design (November 10)
- Identify major scenarios
- Identify objects and their relationships
- Define specification files for all classes( in C++)
- Phase II: Implementation Plan and Unit Testing (November 19)
- Define an incremental build strategy
- Implement key objects needed in build 1
- Define and implement Unit Tests of these objects
- Submit testing results
- Phase III: Full Implementation (December 8)
- User Interface Provided
- Full implementation of requirements
- Makefile
- Testing Results
Incremental Build
It is likely that you will come up with ideas for a system which
will be too large to build all at once
- You need to finish by the end of the semester
- You want to get paid earlier for work done.
- You are not sure how well the system will work and want to try
out a smaller version first
- The administration needs something quick for the Spring semester.
In any case, you need to plan for several iterations in any
large project.
A series of system releases with increasing functionality and
performance. How to decide:
- Examine scenarios for risk and importance to customer and basic
needs.
In the term project, iteration planning can be used to
distinguish between individual and team projects.
Project Implementation Requirements
INDIVIDUAL PROJECTS
- Lists must use a template class
- Read/Write lists of Objects to files by overloading the insertion and extraction
operators ("<<" and ">>") for both the list object and the
member of list object.
- Strings data members must use a string class.
- Must use inheritance.
TEAM PROJECTS: Additional requirements should be negotiated
with the instructor before November 24. Suggestions:
- Implement alternate versions of the LIST Object using binary and linear search
algorithms and perform experiments to compare their performance. Your solution should hide
the differences inside the class functions, so that the calling application is unaware of
the different implementations (PLUG-N-PLAY).
- Additional features such as check enrollment limit before adding student,
storing past semester course lists and grades, checking for scheduling conflicts in
student's course list.
Project Deliverables
For Phase I, submit the following files
- Text file containing major scenarios
- Text file identifying objects and their relationships (has-a,
is-a, uses-a(parameter))
- Define Specification files for all classes( in C++).
Specification files should be checked for syntax by compiling them with an empty main
program which includes the header file. (It does not have to link or execute).
For Phase II, submit the following files
- All header, implementation and test driver files
- Makefile which will compile the different unit tests (can be one or more main
programs)
- Output file showing results of testing with explanations where necessary.
For Phase III, submit the following files
- All header and source files
- Makefile which will compile the project
- Test data used for test final program
- Results of your testing
- Test drivers written.
- Design Documentation
Partial Credit will be given. However, you must explain what has been implemented. You
must describe your testing plan and results You should strive to submit a working version
of something, even with reduced functionality. Parts of the design for which you have
written code that does not work can be commented out, isolated by compiler directives or
included in a separate "design" version in a sub directory. You must explain
what progress you have made and show the results of tests on the working parts of the
program. If I can't understand what you have completed, I won't give credit).
Copyright chris wild 1998.
For problems or questions regarding this website contact [Chris
Wild (e-mail:wild@cs.odu.edu].
Last updated: November 23, 1998.