Please See Attachment for full details...
Congratulations - you are a newly recruited analyst programmer, working for one of the
major IT companies. Your company won a contract to develop a naval vessel identification
system for the Ministry of Defence (MoD). The system, which will be operated onboard
submarines, has to display all the details of a military naval vessel, such as submarines or
aircraft carriers, as soon as one is detected by its acoustic signature. It is your task to
design the system using Object Oriented techniques and to implement it in C++, STL, and
The system to be developed stores data about military naval vessels. Vessels can be
added to and deleted from the database. An operator can browse the database. The
operator can also search for a vessel in the database using the vessel's name or signature
(see below). The system has the ability to read an acoustic signature from a hydrophone
(which is a special kind of microphone for underwater operation). It then looks up the
internal database of naval vessels. For this assignment, an acoustic signature consists of a
numerical value from the range between 0000 and 9999 and is unique for each vessel. The
system then displays the data of the vessel with the closest match and also an indication
of how good the match is (e.g. as a percentage).
Each vessel is of a certain type and has a maximum speed (in knots), a name, a length (in
meters), a maximum range (in nautical miles), a maximum displacement (in tons) and a
crew. There are two general types of naval vessels: submarines and surface vessels.
Submarines have the additional attributes: maximum dive depth (in meters), maximum
speed submerged (knots) and displacement submerged (tons). There are ballistic missile
submarines (SSB), which carry a certain number of SLBMs (Submarine Launched Ballistic
Missiles), and attack submarines (SSK), which carry a certain number of torpedoes.
Surface vessels, which might support the operation of a number of helicopters, can be
divided into aircraft carriers, destroyers and fleet auxiliaries. Aircraft carriers carry and
support the operation of a number of aircraft. Each destroyer has a primary weapon
system, which can be either a gun system or a guided missile system. A fleet auxiliary has
a deck space (in square meters) and a storage capacity, which is measured in litres, in the
case of a tanker, or in cubic metres in the case of a landing platform dock. The latter
might also carry and support the operation of a number of aircraft.
3. Task and Deliverables
Analyse the situation described above. Develop, implement and test an OO design in C++
for the system described above. You need to use as many levels of inheritance as possible
as well as a Three-tier architecture. All the data has to be held in a single, dynamic data
structure. You also need to document your design and to give a demonstration of the
software to your lab tutor.
The software needs to provide the following functionality: It is necessary to be able to add
details of new vessels to the system and to delete a vessel from the database. An operator
can search for a vessel in the database using either the name or the signature of a vessel.
The operator can also browse forwards and backwards through the database.
The data needs to be stored permanently in text files on the local hard drive. The data in
the files should be stored either as comma separated values (csv) or XML. Therefore,
functions for loading data from files and for saving data from memory into a file are