代做CSCl251 Advanced Programming Assignment 3代写留学生C/C++程序

- 首页 >> Web

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.



站长地图