Best代写-最专业靠谱代写IT | CS | 留学生作业 | 编程代写Java | Python |C/C++ | PHP | Matlab | Assignment Project Homework代写

c#代写 | Cpt S 321 Homework Assignment

c#代写 | Cpt S 321 Homework Assignment


Submission Instructions:

• Create a branch called “Branch_HW9” and work in this branch for this assignment.

• When you are done, merge the branch back to the master.

– Tag the version that you would want us to correct with the assignment number. For example,

“HW9”. IMPORTANT REMINDER: If a HW does not have a tag by the due date, it will NOT be graded and it will receive automatically 0.

– On Canvas -> Assignments -> Submit the link to your repository by the HW deadline.

Assignment Instructions:

Read each step’s instructions carefully before you write any code.

In this assignment, you will add loading and saving capabilities to your spreadsheet application. If you created a Workbook class for the previous assignment (or would like to create one for this assignment) then add Load and Save methods to it. Otherwise you can add these methods to your Spreadsheet class.

Design an XML format for your spreadsheet data. At a high level, it will probably have a structure somewhat like:


<cell name=“B1”>





You’ll obviously have more than one cell in most cases. Make sure you do the following:

● Provide saving and loading functions that take a stream as the parameter.

● Add menu options in the UI for saving and loading.

● Make sure the saving and loading code is in the logic engine.

● Use existing XML classes from the .NET framework.

● When saving, only write data from cells that have one or more non-default properties. This means that if a cell hasn’t been changed in any way then you don’t need to write data for it to the file.

● Clear all spreadsheet data before loading file data. The load-from-file action is NOT a merge with existing content.

● Clear the undo/redo stacks after loading a file.

● Make sure formulas are properly evaluated after loading.

● You may assume only valid XML files will be loaded, but make sure loading is resilient to XML that has different ordering from what your saving code produces as well as extra tags. As a simple example, if you’re always writing the <bgcolor> tag first for each cell followed by the <text> tag, then your loader must still support files that have these two in the opposite order. Also, if you didn’t write more than these two tags within the <cell> content, your loader should just ignore extra tags when loading. See the example below.

● Use XML reading/writing capabilities from .NET. Do not write your own XML parsers that do things manually down at the string level. We discussed several options in class, such as XDocument, XmlDocument, XmlReader, and XmlWriter.

If you saved:


<cell name=“B1”>





then you must be able to load:


<cell unusedattr=“abc” name=“B1”> <text>=A1+6</text>


<bgcolor>FF8000</bgcolor> <another_unused_tag>data</another_unused_tag>



Point breakdown (the assignment is worth 10 points):

● 5 points for implementing the correct functionality

And as usual:

● 1 point: For a “healthy” version control history, i.e., 1) the HW assignment should be built iteratively, 2) every commit should be a cohesive functionality, 3) the commit message should concisely describe what is being committed, 4) you should follow TDD – i.e., write and commit tests first and then implement and commit the functionality. ● 1 point: Code is clean, efficient and well organized.

● 1 point: Quality of identifiers.

● 1 point: Existence and quality of comments.

● 1 point: Existence and quality of test cases.