ENGR 5200G Programming Methodology and Abstraction for Engineers


Hello, if you have any need, please feel free to consult us, this is my wechat: wx91due


ENGR 5200G Programming Methodology and Abstraction for Engineers
Programming Assignment#2
Due by 11:59pm on Thursday, Oct 24

The objective of this assignment is to design and develop more involved C++ programs with file I/O. Your programs must be well organized and documented, compile error-free, pass cpplint, produce the correct results in a nicely formatted output. The assignment consists of two parts: Part (A) to be completed on Linux worth 50%, and Part (B) on zyBooks worth 50%.

Part (A) Choose one of the following two tasks. You are only required to provide a solution to one of the two tasks, however if you submit solutions to both tasks then only one task will be graded – randomly selected. Please accept the assignment on Github before you start writing code…you must use the starter code provided. Each task solution must consist of: a header file, an implementation file, and an application file. The header file provides the minimum functions to be implemented. Please do not create folders or subdirectories on Github for this assignment, and please remove the source code files you do not implement – for example if you implement the hotel application then remove files for the library application and vice versa. No command line arguments in this assignment.

Task#1: Hotel booking system

Design and develop a C++ application to simulate a hotel booking system. The system will allow users to check room availability, book rooms, cancel bookings, and view booking history. Your solution should utilize the following files from GitHub (hotel.h, hotel.cpp, hotelapp.cpp) – note you need to create the booking_transactions.log file. The application will offer a menu for users to create an account, check room availability, book a room, cancel an existing booking, and view booking history. Upon selection, users must input relevant details. The application should also maintain a transaction log for each account. The application loops back to the menu after each operation, running until the user opts to exit.

It is up to you if you want to have one booking_transactions.log for all accounts, or one per account.

Sample menu:

Welcome to the A+ hotel booking system
Please enter your selection:
1. Create account

2. Check availability

3. Book room

4. Cancel booking

5. Show all transactions

6. Exit

Task#2: Library information system

Design and develop a C++ application for managing a digital library system. The application should include functionalities for adding new books, deleting books, searching for books by various criteria (title, author, genre), and checking out and returning books.

Your solution should utilize the following files from GitHub (library.h, library.cpp, libraryapp.cpp) – note you need create the books.db file referenced in libraryapp.cpp. This application will interact with users through a textual menu, allowing them to perform the listed operations. The application should keep running, displaying the menu after each operation until the user decides to exit.

It is up to you how you manage the books.db file but must be managed programmatically.

Sample menu:

Welcome to the simple library information system
Please enter your selection:
1. Create account
2. Add a book
3. Delete a book
4. Search for a book
5. List all books
6. Exit

Part (B) Complete the following three labs in zyBook: 6.22 Word frequencies; 7.25 Word frequencies - functions; and 7.23 Flip a coin.

Submission Guidelines

Submit Part (A) using the following guidelines, and Part (B) is to be completed on zyBook. Submit your solution (source code & readme) for one of the two tasks in Part (A) by 11:59pm on Thursday, Oct 24 using Github. Please make sure only files for the task you choose are in the repository, remove all other files. The readme file should be updated to contain description of what you have done, how to run your application, and screenshots of sample runs from the Linux command line showing your own username.

If you do not have a Github account, please create one using your @ontariotechu.net email address. Once you have your Github account ready, and if you have not used Git or Github before, please go to the following Github Classroom link for a quick hands-on tutorial – Fundamentals of Git and Github: https://classroom.github.com/a/8HiEET_o

For this course you can use the web interface, vscode, or the git command line – your choice. Just make sure you test all of your programs on Linux and once submitted, download your repo and test it.

Once you have completed a Github tutorial, now for Assignment#2 please accept the invite for the assignment link – ensure you select the correct name before you proceed: https://classroom.github.com/a/-SkxRaoy

Grading Rubrics

The following rubrics will be used as a guideline for Part (A) of the assignment. Part (B) will be auto-graded using pre-defined tests.

Item (%)

Excellent (full mark)
Good (75%)
Satisfactory (50%)
Unsatisfactory (25%)
Zero (zero)
Functionality and Readme file
(50)
Fully functional, output is nicely formatted, with no errors or warning 
Functional but output is poorly organized, & readme file lacks details.
Basic functionality. Readme file does not follow guidelines.
Error messages during run. Readme file not helpful
Doesn’t compile or run, no readme file.
Source code (20)
Follows coding standards (name, date, title, meaningful variable names, whitespaces, etc.).

Readable source code. Doesn’t follow coding standards.
Spaghetti code.
Code provided is incomplete or does not make sense.
No source code provided or the source code is not accessible.
Documentation
(15)
Fully documented, including purpose of program.
Good but not everything is documented.
Basic minimal documentation.
Documentation does not help understand the code.

No documentation.

Linter - cpplint (15)
No errors.
One error.
Two errors.
Three errors.
Four or more errors.

发表评论

电子邮件地址不会被公开。 必填项已用*标注