EN3085 Assessed Coursework 2
You should solve the problems independently from other students and submit only your own work. Submit the programs and a short report explaining your solutions and demonstrating their correctness by 9am, 17/05/21 through Learning Central.
1.Your company has won a contract to create a software system for a local furniture warehouse. The warehouse stocks three main types of furniture: sofas, beds and tables. The program should allow a staff member to add new models of sofas, beds and tables to the cataloguing system, to print out the details of a particular model, including the number of items held in the warehouse and to update the number of items for a particular model. Your colleagues have provided you with the following class hierarchy diagram:
a.Write a C++ class Item according to the given diagram. Derive from it three subclasses: Sofa, Bed and Table. The class Item should have member variables to store the name of the model and the number of items held in a warehouse. The subclasses should have additional data members as specified in the diagram. Include member function declarations into your four class definitions according to the diagram. In addition, include two constructor declarations for each of the subclasses: one constructor with parameters for passing the values of all data members and another constructor with no parameters, but which allows the user to enter the values for all data members interactively. Include also inline accessors and mutators for appropriate class data members. Use virtual functions appropriately.
b.Write definitions of all member functions for all classes.
c.Expand your classes with useful extra data members and functionality.
d.Write a C++ program, which will use the above classes. Use as many of the C++ and C++ Standard Library features as you can. You may consider creating additional class(es) to manage the warehouse stock.
e.Provide documentation for your program, including a short description of the problem-solving phase and the implementation of your program, as well as an account of its limitations and possible improvements. In addition, as part of the documentation, provide evidence of testing. You must supply and explain the choice of values, which you used to test your program and the answers given by the program. You should also document any particular cases for which your program fails, or better add code to your program to make sure that they do not occur. There is no limit on the length of the report, but as a guide, this report is not expected to be longer than 4 pages. Nonetheless, feel free to submit a longer report without asking.
Submission Procedure
You should solve the problems independently from other students and submit only your own work. Submit the programs and a short report explaining your solutions and demonstrating their correctness by 9am, 17/05/21 through Learning Central.
You should submit exactly 4 files in total:
1.One report as a pdf or a MS word file.
2.One header file with extension .h or .hpp, where all your class definitions should be included.
3.One implementation file with extension .cpp, where all your class implementations should be included.
4.One .cpp file containing the main() function and possibly some global functions.
Do not copy your program code into a report or a MS file, only attach the original .h and .cpp files as described above. Any incomplete submission will be considered late.
The marking criteria is on the next page.
Marking criteria:
(1) Source code. Marks will be awarded for:
• A correctly functioning program. The program should operate according to the specification.
• An efficient program and elegant algorithms. Try to develop algorithms, which are efficient in terms of the amount of data, which needs to be stored (e.g. minimum number of variables used), and the speed in which they operate.
• A user-friendly program. When your program runs, the messages on the screen should be easy to understand and succinct.
• A well commented program. The judicious use of commenting is essential if somebody else is to easily understand your program.
With that in mind, each coding question will be marked using the following scheme
Programming techniques usage & understanding (70%) Programming Style/presentation (30%)
Outstanding
(90-100%) Exceptionally comprehensive and detailed knowledge of programming concepts that goes beyond what was taught, achieving an exceptional understanding level. An exceptional effort was achieved through an unusually ingenious manner to organise and comment the code.
Excellent
(80-89%) Demonstrated a thorough and detailed knowledge, that goes beyond the taught programming concepts required to solve the problem; significant new insights. Extremely clear & well-structured program, with excellent & efficient use of comments
Comprehensive
(70-79%) A thorough usage and understanding of the taught programming concepts. A very clear and well-structured program; with a good usage of comments
Good
(60-69%) Good usage and understanding of taught programming concepts but with some minor omissions or errors. A fairly clear and well-structured program but could be structured or annotated better.
Fair
(50-59%) Adequate usage and knowledge of taught programming concepts but with some errors and omissions. Reasonably organised code but with limited effort in the presentation.
Bare pass
(40-49%) Some usage of taught programming concepts but with frequent errors and omissions. Poorly organised code, resulting in lack of clarity about its structure.
Fail
(30-39%) Limited usage of taught programming concepts with frequent major errors and omissions. Poor code structure suggesting a lack of understanding on how a program is organised.
Insufficient
(20-29%) Very limited usage of taught programming concepts with frequent major errors and omissions. Poor code structure demonstrating a lack of understanding on how a program is organised
Unsatisfactory
(10-19%) Minimal programming knowledge demonstrate, numerous major errors. Almost no effort was done in trying to present the code properly.
Poor
(<10%) Almost no programming work completed No effort was done in trying to present the code properly.
(2) Documentation. Marks will be awarded for:
A well documented program. Include a short description of the problem-solving phase and the implementation of your program, as well as an account of its limitations and possible improvements.
A well tested program. You must supply and explain the choice of values, which you used to test your program and the answers, which the program gave. You should also document any particular cases for which your program fails, or better add code to your program to make sure that they do not occur.