– Assignment 2 – Travel Tracker 2.0Task:Create both a console program and a Graphical User Interface (GUI) program similar to yourfirst assignment, using Python 3 and the Kivy toolkit, as described in the followinginformation and accompanying screencast video. This assignment will help you build skillsusing classes and GUIs as well as giving you more practice using techniques like selection,repetition, exceptions, lists, dictionaries, file I/O and functions. Some requirements have intext help references, like , that refer to the resources list near the bottom of thisdocument. Please check these references to find help on that topic. Everything you need tocomplete this assignment can be found in the subject materials.Classes:The most important learning outcome of this assignment is to be able to use classes tocreate reusable data types that simplify and modularise your programs. The fact that youcan use these classes in both console and GUI programs highlights this modularity.It is important that you create these classes first – before any code that requires them.This is good coding practice. You should write and then test each method of each class –one at a time – committing as you go (e.g., you might commit each time you complete amethod and its tests).The starter code includes two files (test_place.py and test_placecollection.py) withincomplete code for testing your classes. Complete these files with simple tests, that youwrite as you develop your Place and PlaceCollection classes.Do not change the existing tests… write code that makes these tests pass.You may use assert as shown in lectures , or just very simple tests that print the resultsof calling the methods you are testing with expected and actual results .Once you have written and tested your classes, you can then use the Place class in yourconsole program.We will assess your Git commit history to see (and mark) that you do these in anappropriate order, so make sure you write your classes, with tests, then the consoleprogram, before attempting any functionality for the GUI.• Complete the Place class in place.py.This should be a simple class with the required attributes for a place (name, country,priority and visited status) and the methods:o __init__o __str__o two methods to mark the place as unvisited/visitedo a method to determine if a place is considered “important”, which is defined ashaving a priority 0”.• Pressing the Tab key should move between the text fields. (popup_demo from )• When the user successfully adds a place, the entry fields should be cleared and thenew place button should appear on the right. (dynamic_widgets from )• When the user clicks the “Clear” button, all text in the input fields and the status labelshould be cleared.General Coding Requirements:• At the very top of your main.py file, complete the comment containing your details.• Document all of your classes and methods clearly with docstrings. Include inline/blockcomments as appropriate. You do not need comments in the kv file.• Make use of named constants where appropriate. E.g., colours could be constants.• Use functions/methods appropriately for each significant part of the program.Remember that functions should follow the Single Responsibility Principle.• Use exception handling where appropriate to deal with input errors. When errorchecking inside functions (e.g., a handler for clicking the Add Place button), you mightlike to consider the “Function with error checking” pattern from .• Complete your GUI design using the kv language in the app.kv file. Creating the placebuttons should be done in main.py, not in the kv file, since this will be dynamic(dynamic_widgets from ).Project Reflection:It is important and beneficial for you to start developing good coding and working practices,so you will complete a short but thoughtful reflection on this project. Complete the templateprovided in the README and reflect on what you learned regarding both coding and yourdevelopment process. This is worth significant marks, so allocate significant time to it.We expect answers that show some detail and thought, not just trivial statements.Git/GitHub:You must use Git version control with your project stored in the private repository on GitHubthat will be created when you accept the GitHub Classroom invitation above. Please ensureyou use Git properly – not through the GitHub website, but through PyCharm orconsole/terminal. Do proper commits with good messages locally, then push your changesto GitHub – as you have been taught in the subject. Do not create commits directly via theGitHub site. You are assessed on your use of version control including commits and commitmessages, using the imperative voice (like “Add X” not “Added X”). Submission:Submit a single zip file by uploading it on LearnJCU under Assessment (click on the title ofthe assignment). Your zip file should contain the entire project directory, including the .gitdirectory (just zip up your project directory). Make sure your GitHub (Classroom) URL isincluded in main.py. Please name the zip file like: FirstnameLastnameA2.zip.Please also enter your GitHub (Classroom) URL as plain text in the text box for submissionas this allows us to find and visit your repository without downloading your zip file.Due:Submit your assignment by the date and time specified on LearnJCU. Submissions receivedafter this date will incur late penalties as described in the subject outline.Integrity:The work you submit for this assignment must be your own. Submissions that are detectedto be too similar to that of another student will be dealt with according to the Collegeprocedures for handling plagiarism and may result in serious penalties.The goals of this assignment include helping you gain understanding of fundamentalprogramming concepts and skills, and future subjects will build on this learning. Therefore, itis important that you develop these skills to a high level by completing the work and gainingthe understanding yourself. You may discuss the assignment with other students and getassistance from your peers, but you may not do any part of anyone else’s work for them andyou may not get anyone else to do any part of your work. Note that this means you shouldnever give a copy of your work to anyone or accept a copy of anyone else’s work,including looking at another student’s work or having a classmate look at your work.If you require assistance with the assignment, please ask general questions in #cp1404 onSlack, or get specific assistance with your own work by talking with your lecturer or tutor.The subject materials (lecture notes, practicals, textbook and other guides provided in thesubject) contain all of the information you need for this assignment. You should not useonline resources (e.g., Stack Overflow or other forums) to find resources or assistance asthis would limit your learning and would mean that you would not achieve the goals of theassignment – mastering fundamental programming concepts and skills. Assistance: Who can you get help from?Use this diagram to determine from whomyou may seek help with your programs. Resources: Where can you get codefrom? Use this diagram to determine whereyou may find code to use in your programs. Sample Output:Study the screencast provided with this assignment to see how the GUI program shouldwork, including what the messages should be and when they occur.Marking Scheme:Ensure that you follow the processes and guidelines taught in class in order to produce high quality work. Do not just focus on getting theprogram working. This assessment rubric provides you with the characteristics of exemplary down to very limited work in relation to task criteria. CriteriaExemplary (9, 10)Good (7, 8)Satisfactory (5, 6)Limited (2, 3, 4)Very Limited (0)Project reflection15%The project reflection is complete anddescribes development and learning well,shows careful thought, highlights insightsmade during code development.Exhibits aspects ofexemplary (left) andsatisfactory (right)Project reflection contains some goodcontent but is insufficient in coverage,depth or insight.Exhibits aspects ofsatisfactory (left) andvery limited (right)Many aspects of the project reflectionare missing or could be improved.Use of version control10%Git/GitHub has been used effectively and therepository contains a good number ofcommits with good messages thatdemonstrate incremental code developmentstarting with classes and testing thenconsole before GUI.Git/GitHub used but several aspects ofthe use of version control are poor, e.g.,not enough commits, or meaninglessmessages that don’t represent valuableincremental development in anappropriate order.Git/GitHub not used.Console program8%Class is used correctly in console program.Class is used in console program but notcorrectly.Class is not used in console program.Error handling8%Errors are handled correctly and robustly asrequired.Some errors are handled but not all, orerrors are not handled properly.No reasonable error handling.Correctness16%GUI layout is correct and program workscorrectly for all functionality required.Aspects of the GUI layout are incompleteor poorly done or there are significantproblems with functionality required.GUI layout is very poor or not done.Program works incorrectly for allfunctionality required.Identifier naming10%All function, variable and constant namesare appropriate, meaningful and consistent.Several function, variable or constantnames are not appropriate, meaningful orconsistent.Many function, variable or constantnames are not appropriate, meaningfulor consistent.Use of code constructs12%Appropriate and efficient code use, includingno unnecessary duplication, good logicalchoices for control and storage, good use ofconstants, no global variables, good use offunctions in main app, etc.Several problems, e.g., unnecessaryduplication, poor control, no use ofconstants, improper use of globalvariables, poor use of functions in mainapp.Many problems with code use.Use of classes andmethods10%Classes and methods are used correctly asrequired. Method inputs and outputs are welldesigned.Some aspects of classes and methodsare not well used, e.g., methods not usedwhere they should be, problems withmethod/parameter design, incorrect useof objects.Classes and methods used very poorlyor not used at all.Commenting6%Code contains helpful # block comments, allclasses and methods have meaningfuldocstrings and main module docstringcontains all details (name, date, basicdescription, GitHub URL).Comments are reasonable, but someclasses and methods have no docstrings,and/or there is some noise (too manycomments), and/or missing details in mainmodule docstrings.Commenting is very poor or not done.Formatting5%All formatting is appropriate, includingindentation, horizontal spacing and verticalline spacing. PyCharm shows no formattingwarnings.Problems with formatting reducesreadability of code. PyCharm showsmultiple formatting warnings.Readability is poor due to formattingproblems. PyCharm shows manyformatting warnings.
- Assignment status: Already Solved By Our Experts
- (USA, AUS, UK & CA PhD. Writers)
- CLICK HERE TO GET A PROFESSIONAL WRITER TO WORK ON THIS PAPER AND OTHER SIMILAR PAPERS, GET A NON PLAGIARIZED PAPER FROM OUR EXPERTS