CSCl251 Advanced Programming
Assignment 3
Aim
The objectives of this assignment includes:
·Learning about generic programming templates,operator overloading,STL(containers & algorithms)and writing io manipulators
● Apply the concepts learnt by developing a data processing program
Background
In this assignment,you are required to develop a program that reads in and process some ‘messy’records from a file that contains data meant for different kinds of classes.These data are jumbled up and unsorted,and to make it worse,for any particular row of record,there may be multiple duplicates scattered over the entire file!
You program should be called ‘csci251_a3.exe’,and should posses the following capabilities:
a)read in the records from a user-specified filename
b)remove all duplicate rows of data
c) filter and display the data according to user-specified sorting criteria
d)store the records displayed in c),in a user-specified filename
The next section provides information about the requirements for developing this program.
Task Requirements
A) Appendix A provides a sample input data from a file called ‘messy.txt’.It contains information meant to be stored in 4 classes:’Point2D’,’Point3D’,’Line2D’and ‘Line3D’.Please refer to the table in Appendix A for a description of the format in which the input data for each of the classes is stored.
B) Note1: You are to research and determine which kind of STL containers (e.g.Map, Vector,Set,Lists etc)you should use,to store all the various objects from the 4 classes.
For this assignment you are not allowed to use array[]to store any of your data!
C) Appendix B provides a description of the 4 classes:’Point2D’,’Point3D’,’Line2D’ and ‘Line3D’,and the relationships between them.You are to study the diagrams and implement them accordingly.
D) Appendix C provides the sample output format and a description of the format requirements,for each of the 4 classes.These format are to be applied whether the data from these classes are output to a file orterminal.
E) Note2: To output data,you are required to create your own output manipulator(s) to display/store data in the format described in Appendix C.You are further required to overload the insertion operator ‘<<‘,for each of the 4 classes,to support the process of inserting data to the terminal,or the relevant file stream.(Hint:Research on the concept of writingoutput manipulators.E.g. https://en.cppreference.com/w/cpp/io/manip/left )
F) Note3: All output data must not contain any duplicates!There are many approaches to solving this problem.Firstly,you could check for,and remove duplicate records at the point of reading in the input.Alternatively,you could temporarily store the data in a STL container,research and make use of any STL algorithm to search for,and remove the duplicates.Another (inefficient)way is to store everything in STL container,but your program needs to ensure that when user wishes to see /store the records in a file,no duplicate records are shown.
G) Appendix D provides a description of a few generic template functions that you are supposed to develop.These utility’functions plays a supporting role,and they should be developed in a separate header file called ‘MyTemplates.h’ .
H)Your program should allow user specify the filtering criteria so that user can specify which set of records he wishes to view /store.Your program should allow the following options:
i) Point2D records <=default selected option
ii) Point3D records
i) Line2D records
iv) Line3D records
l)Your program should allow user to specify the sorting criteria so that user can specify which attributes (of a set of records)to order the data by.The sorting criteria is based on the current filtering criteria.
For example,if the current filtering criteria is ‘Only Point2D records’,your program should restrict user to the options of sorting the data by’x’,’y’&scalar value ‘distFrOrigin’only!
Please refer to Appendix E for a detailed description of the combinations of filtering criteria,and the respective(allowable)sorting criteria.
J) Hint: It is not necessary to develop your own sorting algorithm,or make use of any of the classical algorithms like ‘Quick-Sort’,’Bubble-Sort’to fulfill the sorting requirements. There is a function defined in STL algorithm (i.e.#include <algorithm>)called ‘sort’. You should research on its usage,code the necessary comparator functions(for each of the 4 classes +sorting criteria).Once you mastered its usage,you will easily achieve the desired sorting effect using less than 3 lines of code!
K)To assist you in visualizing the desired program interactions,please refer to Appendix F which provides a sample menu displaying the output data /messages in response to user input.
L)Once the program is completed and tested to be working successfully,you are highly encouraged to add on”new features”to the program that you feel are relevant to the problem.Additional marks may be awarded subject to the relevancy and correctness of the new functionalities.(Note:the additional features will only be considered IF the program has correctly fulfilled all the basic requirements elaborated in the earlier sections!)
M)You are to use only C++language to develop your program.There is no restriction on the IDE as long as your source files can be compiled by g++compiler (that comes packaged in Ubuntu linux)and executed in the Ubuntu terminal shell environment.
Deliverables
1) The deliverables include the following:
a)The actual working C++program(soft copy),with comments on each file, function or block of code to help the tutor understand its purpose.
b)A softcopy word document that elaborates on:
(Interpreted) requirements of the program
Diagram / Illustrations of program design
Summary of implementation of each module in your program
Reflections on program development (e.g. assumptions made, difficulties faced, what could have been done better, possible enhancements in future, what have you learnt, etc)
c)A program demo/software testing during lab session.You must be prepared to perform certain tasks/answer any questions posed by the tutor.
2) IMPT:Please follow closely, to the submission instructions in Appendix G, which contains details about what to submit,file naming conventions,when to submit,where to submit,etc.
3) The software demo /testing will be held during lab session where you are supposed to submit your assignment.Some time will be allocated for you to present / demonstrate your program’s capabilities during the session.
Grading
Student’s deliverable will be graded according to the following criteria:
(i) Program fulfills all the basic requirements stipulated by the assignment
(ii) Successful demonstration of a working program,clarity of explanation /presentation and satisfactory answers provided during Q&A session.
ii) Additional effort(e.g.enhancing the program with relevant features over and above task requirements,impressive,’killer’presentation)
(iv) After the submission of deliverables,students will be required undergo a software testing process (to determine the correctness and fulfillment of software requirements.)Further instructions will be given by the Tutor during the subsequent respective labs.Please pay attention as failure to adhere to instructions will result in deduction of marks.
Reviews
There are no reviews yet.