Author: Lindsey Peterson Partner: None Start date: 14-Jan-2023 Course: CS 3500, University of Utah, School of Computing Github ID: lindseyp555 Repo: https://github.com/uofu-cs3500-spring23/spreadsheet-lindseyp555 Commit Date: 3-Mar-2023 Solution: Spreadsheet Copyright: CS 3500 and Lindsey Peterson. This work may not be copied for use in Academic Coursework.
#Overview of the spreadsheet functionality The spreadsheet can save data added by the user in a grid. Each cell either holds a string, a number, or a formula. The spreadsheet can evaluate formulas, including those involving the names of other spreadsheets. The user can save their spreadsheet files, open existing spreadsheets, and create new ones.
#Time expenditures Assignment 1: predicted time: 12 hours Actual time: approx. 3 hours learning visual studio and C#, approx. 5 hours writing code and testing Assignment 2: predicted time: 10 hours Actual time: approx 3 hours implementing and 4 hours debugging Assignment 3: predicted time: 8 hours Actual time: approx 4 hours implementing and 4 hours debugging Assignment 4: predicted time: 8 hours Actual time: approx 4 hours implementing and 3 hours debugging and getting help from TAs Assignment 5: predicted time: 10 hours Actual time: approx 5 hours implementing and 6 hours debugging Assignment 6: predicted time: 12 hours Actual time: approx 14 hours
#Examples of good software practice Complexity: dictionary holds the cells organized by their name. This is constant time access as opposed to a data structure like a list that would require us to traverse it in order.
Encapsulation: All methods in the GUI are private so that they don't get called in a random or weird order. This protects the data from changes that someone unfamiliar with the way the GUI works.
DRY: I have implemented helper methods ClearAllData and LoadNewFile so that I don't repeat myself, since the same thing is supposed to happen in the case where the user clicks "yes" on the message, or if the spreadsheet has not changed since its last save.