Starting from:
$35

$29

Programming Assignment 6 Solution




Description




This is an individual assignment. Please do not collaborate



If you think that this document does not clearly describes the assignment, ask questions before its too late.



This assignment is about using C++ STL, exception handling and/or creating Class templates.




Your program reads two files:



– data.txt




– commands.txt




According to content in data.txt, the program utilizes necessary STL classes and/or user-created classes for a catalog representation.



Your program creates a log file(output.txt) for certain steps of operations performed on catalog.






data.txt




This file holds information about a catalog. A catalog can be one of the following:



– Book catalog




– Music catalog




– Movie catalog




The type of the catalog is specified in the first line of data.txt






Book Catalog




Each line in a book catalog keeps information about a book.



Format:



<title <authors <year <tags




Example: Contents of data.txt for a book catalog



book



"Hilbert Spaces With Applications" "Lokenath Debnathl, Piotr Mikusinski" "2005" "Mathematics,



,→ Set Theory"




"The Neolithic Revolution in the Near East: Transforming the Human Landscape" "Alan H. Simmons" ,→ "2011" "Social Science, Anthropology, Cultural, General, Archaeology"



"Learning Flask Framework" "Matt Copperwaite, Charles Leifer" "2015" "Computers, Programming



,→ Languages, Python, Internet, Application Development, Web, Web Programming"




"Graphics Gems V" "Alan W. Paeth" "1995" ""



Music Catalog




Each line in a music catalog keeps information about a music album.



Format:



<title <artists <year <genre




• Example: Contents of data.txt for a music catalog







1
music



"Professor Satchafunkilus and the Musterion of Rock" "Joe Satriani" "2008" "Guitar Virtuoso"



3"Physical Graffiti" "Led Zeppelin" "1975" "Rock"




4"Witchdoctor's Son" "Okay Temiz, Johnny Dyani" "2017" "Jazz, Fusion"




5"Return Of The Mother Head's Family Reunion" "Richie Kotzen" "2007" "Rock, Guitar Virtuoso"




Movie Catalog




Each line in a movie catalog keeps information about a movie.



Format:



<title <director <year <genre <starring




Example: Contents of data.txt for a movie catalog



movie



"The Lord of the Rings: The Fellowship of the Ring" "Peter Jackson" "2001" "Adventure, Drama, ,→ Fantasy" "Elijah Wood, Ian McKellen, Orlando Bloom"



"Twelve Monkeys" "Terry Gilliam" "1995" "Mystery, Sci-Fi, Thriller" " Bruce Willis, Madeleine



,→ Stowe, Brad Pitt"




"Perfume: The Story of a Murderer" " Tom Tykwer" "2006" "Crime, Drama, Fantasy" "Ben Whishaw, ,→ Dustin Hoffman, Alan Rickman"



"Cold Mountain" "Anthony Minghella" "2003" "Adventure, Drama, History" " Jude Law, Nicole ,→ Kidman, Renee Zellweger"



commands.txt




This file includes several commands which work on the catalog information you read from data.txt. Each line is a command. The following should be recognized:




There are two commands.



search <string in <field




sort <field




search command




Format:



search <string in <field




Output:



This command returns a list of matched(partially or fully) entries (one entry in a line). Search should be limited to the field specified. Not found returns no line.




Example:



search "Joe" in "artists"




This returns the following line:




"Professor Satchafunkilus and the Musterion of Rock" "Joe Satriani" "2008" "Guitar Virtuoso"




sort command




Format: sort <field
Output:



2
This command returns a list of sorted entries (ascending order)




Example: sort "title"



This returns the following lines:




"Cold Mountain" "Anthony Minghella" "2003" "Adventure, Drama, History" " Jude Law, Nicole ,→ Kidman, Renee Zellweger"



"Perfume: The Story of a Murderer" " Tom Tykwer" "2006" "Crime, Drama, Fantasy" "Ben Whishaw,



,→ Dustin Hoffman, Alan Rickman"




"The Lord of the Rings: The Fellowship of the Ring" "Peter Jackson" "2001" "Adventure, Drama, ,→ Fantasy" "Elijah Wood, Ian McKellen, Orlando Bloom"



"Twelve Monkeys" "Terry Gilliam" "1995" "Mystery, Sci-Fi, Thriller" " Bruce Willis, Madeleine ,→ Stowe, Brad Pitt"



output.txt




This file keeps the log of the operations. The following events should be recorded in the specified format:




catalog read



output of commands






catalog read




First specify the type of the catalog.



At the end, state the number of unique entries.



Catalog Read: music




4 unique entries







output of commands




State the command.



Append its output.



search "Joe" in "artists"




"Professor Satchafunkilus and the Musterion of Rock" "Joe Satriani" "2008" "Guitar Virtuoso"




Exceptions




Your program should catch certain exceptions and create log entries for them.



You need to catch the following exceptions:






Missing field exception




If any of the field in any entries is missing your program should omit that line and create an exception record in the log file.



Exception: missing field

























3
Duplicate entry exception




If the first field of any entries fully match, your program should create an exception for each repetition and log these instances in the log file.



Exception: duplicate entry




Wrong command exception




If the command is not in the expected format(unrecognized field name, extra information etc. . . ), log this instance as an exception.



Exception: command is wrong




A full example.




Suppose we are given the following data.txt file and commands.txt file:



data.txt



movie



"The Lord of the Rings: The Fellowship of the Ring" "Peter Jackson" "2001" "Adventure, Drama, ,→ Fantasy" "Elijah Wood, Ian McKellen, Orlando Bloom"



"Twelve Monkeys" "Terry Gilliam" "1995" "Mystery, Sci-Fi, Thriller" " Bruce Willis, Madeleine ,→ Stowe, Brad Pitt"



"Twelve Monkeys" "" "" "Sci-Fi, Thriller" " Bruce Willis, Madeleine Stowe, Brad Pitt"



"Perfume: The Story of a Murderer" " Tom Tykwer" "2006" "Crime, Drama, Fantasy" "Ben Whishaw, ,→ Dustin Hoffman, Alan Rickman"



"Twelve Monkeys" "" "" "Mystery, Sci-Fi, Thriller" " Bruce Willis, Madeleine Stowe, Brad Pitt"



7"Cold Mountain" "Anthony Minghella" "2003" "Adventure, Drama, History"




commands.txt



search "Monkeys" in "title"



2search "Spice" in "type"




3sort "year"




The first line is movie. This means your application will going to run in movie organiser mode.



Following is the log file for this example:



output.txt



Catalog Read: movie



Exception: duplicate entry



"Twelve Monkeys" "" "" "Sci-Fi, Thriller" " Bruce Willis, Madeleine Stowe, Brad Pitt"



4Exception: duplicate entry




5 "Twelve Monkeys" "" "" "Mystery, Sci-Fi, Thriller" " Bruce Willis, Madeleine Stowe, Brad Pitt" 6 Exception: missing field




7"Cold Mountain" "Anthony Minghella" "2003" "Adventure, Drama, History"




83 unique entries




9search "Monkeys" in "title"




"Twelve Monkeys" "Terry Gilliam" "1995" "Mystery, Sci-Fi, Thriller" " Bruce Willis, Madeleine ,→ Stowe, Brad Pitt"



Exception: command is wrong



search "Spice" in "type"



sort "year"



"Twelve Monkeys" "Terry Gilliam" "1995" "Mystery, Sci-Fi, Thriller" " Bruce Willis, Madeleine ,→ Stowe, Brad Pitt"






4
"The Lord of the Rings: The Fellowship of the Ring" "Peter Jackson" "2001" "Adventure, Drama, ,→ Fantasy" "Elijah Wood, Ian McKellen, Orlando Bloom"



"Perfume: The Story of a Murderer" " Tom Tykwer" "2006" "Crime, Drama, Fantasy" "Ben Whishaw, ,→ Dustin Hoffman, Alan Rickman"



Remarks




Be careful with the order of exceptions. If an entry has a missing field and it has the same first field with another entry, you should throw missing field exception.
Assume no other errors will be present in the files.



Try to generalize your program. (you can use templates).



Efficiency is important. (try to use the existing (STL) containers and their methods for sorting etc. . . )



Turn in:




Source code of a complete C++ program and a suitable makefile. You should use c++11 standard. Your code will be tested in a linux-gcc environment.



A script will be used in order to check the correctness of your results. So, be careful not to violate the expected output format.
Provide comments unless you are not interested in partial credit. (If I cannot easily understand your design, you may loose points.)



You cannot get full credit if your implementation contradicts with the statements in this document.
























































































































5

More products