Your task is to design two separate applications in C++:
* a personal address book
the system should store the name, address, postcode and telephone number of an individual. The application should read a number (>1) of peoples details from a file. You should provide the ability to add and delete new entries as well as the ability to search for an entry by name. On completion your program should write all details back to a file.
* a marks database for this course
the system should store the name, address, postcode and exam mark for each individual. The application should read a number (>1) of peoples details from a file. You should provide the ability to add and delete entries as well as print a list of names and marks sorted by exam mark (descending order).
Your design should be based around a suitable class design which provides a generic object used in both applications. You should also try to minimise code duplication in your design. You will operate in teams of three people. Division of labour within your project is your decision. In order to easily divide labour between your team it is essential that you first produce a well thought through design. From a good design it should be possible to allocate work between your team while minimising integration issues.
**Design Specification Hints.**
Your design should be based on a base person object with at least two derived classes for a) the personal address book and b) the marks database. Each class should be declared in a separate header file and implemented in a separate source file. Use public, protected, private, inline functions, constant variables and other C++ language features as appropriate for good code structure. Error checking should be included where appropriate. USE the standard template library **list** for storage within your program.
The project will be assessed in three parts:
1) Report: good description of design and specification [30%]
2) Quality of code; good structure, correct use of language features, clarity of implementation, error checking, good comments [50%]
3) Working code: demonstration of full implementation [20%]
****WE WANT THE DESIGN BY 18/11/2003 at 21:00***
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.
2) Installation package that will install the software (in ready-to-run condition) on the platform(s) specified in this bid request.
3) Exclusive and complete copyrights to all work purchased. (No GPL, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site).
> *i) Abstract summarising the project (max 200 words)*
> *ii) Software design (maximum 2 pages): include decisions on*
> > > *Overall software design (with diagram of class hierarchy)
> > > Memory management
> > > Error handling
> > > Additional related class and functionality implemented*
> *iii) Documentation (maximum 1 page): describe how to use the classes*
> *iv) Conclusions (maximum ½ page): summary of key achievements and suggestions for improvement*
> *v) Appendix: a compact printout of code header and source files.*
**WE WANT THE DESIGN BY 18/11/2003 at 21:00***