CS112 GUI Coding Final Project Specification 150 Points Spring 2022 1 Objective In this project you will learn how to build a GUI for a practical purpose. 2 Groups/Collaboration For this assignment you may have a team of up to 2 students, including yourself, from the CS112 Spring 2022 class. It is expected that you will commit to equal shares of the work with those in your team. While it is possible to be in a team by yourself this is not recommended. You may collaborate with your fellow students outside your tema. That being said each team will be responsible for turning in their own work. The following are things which constitute collaboration: • Asking a fellow student to explain an approach. • Asking a fellow student to check a few lines of code for mistakes. • Discussing potential approaches to solving the problem. • Distribution of test cases. Collaboration with a fellow student needs to be documented. This is as simple as mentioning it in an acknowledgements section in your write up. Please detail the extent of the collaboration as well. The following are things which do NOT constitute collaboration: • Copying large chunks of code. • Copying any part of the write up. • Using ideas/code without any knowledge of the other party. • Getting code from a fellow student who is not in this class. • Getting another student to fix your code. 1 The actions above are outlines of what is and what isn’t collaboration. If you don’t know if something would be collaboration please email me, but usually if you are wondering if something would be collaboration it probably isn’t. If you take any of the above actions, or similar, it will be considered plagiarism and you will receive a 0. Additionally, normal reporting procedures for academic dishonesty will be followed. 3 Project The project will be done in the Java language using the Swing and AWT packages. While the focus of the application is up to each team to decide, each project must have the following: • Be in the MVC GUI design pattern. • At least 3 different windows. • At least 3 different UI elements per window. • At least 4 different UI element types across the project. • At least 1 Listener used per window. • Data stored in a file. • Data read from that file. • Data written to that file. Note: A UI element is determined by it’s class so three labels would not be sufficient for 3 different UI elements. In addition to writing code you will be required to submit the following documentation: • UML diagrams for each class. • A User Manual These documents will be separate assignments and will need to be submitted electronically. I will not accept physical copies. You may submit scans or photos of your paper copies, however. The user manual must conform to the following style: • Font Size: 12pt • Spacing: Single Spaced • Font: Times New Roman • Margins: 1” top, bottom, left, and right 2 For each of these projects you will be required to create a presentation which takes no less than 5 minutes with an upper limit to be determined based on the total number of teams. This presentation will take place on the last day or two before finals week. The topic will be your project including the following details: • Current Functionality • Remaining Functionality to implement • Future Functionality (beyond the current scope) Your presentation is welcome to have visual aids (i.e. a powerpoint presentation,) but that is not required. It may also include a live demo, but your projects are not required to be completed before then. 4 Rubric Item Points Presentation 50 Functioning Code 100 5 Deliverables You a zip file with your code will be submitted to canvas before the day of the final. Each person in a team must submit to their canvas assignment. Thus, if two people are teamed up each will submit the team’s work on canvas. This ensures the instructor will have multiple copies in case something goes wrong. The instructor will only evaluate a single copy. 6 Example Project An example project you might construct is a bank manager app. This app would keep track of usernames, accounts, and account balances. It might have the following screens: • A window for selecting which user to view. • A window describing the current activities of the user (withdrawals and deposits) • A window for closing accounts. • A window for transferring money from one account to another (within the bank.) 3