Question: The task is to implement the two missing methods SaveAll() and ReadAll(). Details: SaveAll() - Serialize the entire collection using JSON format and save to

The task is to implement the two missing methods "SaveAll()" and "ReadAll()". Details:

  • SaveAll()- Serialize the entire collection using JSON format and save to the file set in theALL_FILEconstant.
  • ReadAll()- Reads the file that was saved during SaveAll() and display all of the items in the console.

=========================program.cs================================

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Text.Json;

using System.IO;

namespace AtomApp

{

class Program

{

//add the following statement in global scope

//To create a collection to work with

static List elements = new List();

const string FIRST_FILE = "first-atom.json";

const string ALL_FILE = "all-atoms.json";

//test harness

static void AddAtoms()

{

//add the following statement to a class method

elements.Add(Atom.Parse("Hydrogen 1 0 1.0079 H"));

elements.Add(Atom.Parse("Helium 2 2 4.0026 He")); ;

elements.Add(Atom.Parse("Lithium 3 4 6.941 Li")); ;

elements.Add(Atom.Parse("Beryllium 4 5 9.0122 Be"));

elements.Add(Atom.Parse("Boron 5 6 10.811 B"));

elements.Add(Atom.Parse("Carbon 6 6 12.0107 C"));

elements.Add(Atom.Parse("Nitrogen 7 7 14.0067 N"));

elements.Add(Atom.Parse("Oxygen 8 8 15.9994 O"));

elements.Add(Atom.Parse("Fluorine 9 10 18.9984 F"));

elements.Add(Atom.Parse("Neon 10 10 20.1797 Ne"));

elements.Add(Atom.Parse("Sodium 11 12 22.9897 Na"));

elements.Add(Atom.Parse("Magnesium 12 12 24.305 Mg"));

elements.Add(Atom.Parse("Aluminum 13 14 26.9815 Al"));

elements.Add(Atom.Parse("Silicon 14 14 28.0855 Si"));

elements.Add(Atom.Parse("Phosphorus 15 16 30.9738 P"));

elements.Add(Atom.Parse("Sulfur 16 16 32.065 S"));

elements.Add(Atom.Parse("Chlorine 17 18 35.453 Cl"));

elements.Add(Atom.Parse("Potassium 19 20 39.0983 K"));

elements.Add(Atom.Parse("Argon 18 22 39.948 Ar"));

elements.Add(Atom.Parse("Calcium 20 20 40.078 Ca"));

elements.Add(Atom.Parse("Scandium 21 24 44.9559 Sc"));

elements.Add(Atom.Parse("Titanium 22 26 47.867 Ti"));

elements.Add(Atom.Parse("Vanadium 23 28 50.9415 V"));

elements.Add(Atom.Parse("Chromium 24 28 51.9961 Cr"));

elements.Add(Atom.Parse("Manganese 25 30 54.938 Mn"));

elements.Add(Atom.Parse("Iron 26 30 55.845 Fe"));

elements.Add(Atom.Parse("Nickel 28 31 58.6934 Ni"));

elements.Add(Atom.Parse("Cobalt 27 32 58.9332 Co"));

elements.Add(Atom.Parse("Copper 29 35 63.546 Cu"));

elements.Add(Atom.Parse("Zinc 30 35 65.39 Zn"));

elements.Add(Atom.Parse("Gallium 31 39 69.723 Ga"));

elements.Add(Atom.Parse("Germanium 32 41 72.64 Ge"));

elements.Add(Atom.Parse("Arsenic 33 42 74.9216 As"));

elements.Add(Atom.Parse("Selenium 34 45 78.96 Se"));

elements.Add(Atom.Parse("Bromine 35 45 79.904 Br"));

elements.Add(Atom.Parse("Krypton 36 48 83.8 Kr"));

elements.Add(Atom.Parse("Rubidium 37 48 85.4678 Rb"));

elements.Add(Atom.Parse("Strontium 38 50 87.62 Sr"));

elements.Add(Atom.Parse("Yttrium 39 50 88.9059 Y"));

elements.Add(Atom.Parse("Zirconium 40 51 91.224 Zr"));

elements.Add(Atom.Parse("Niobium 41 52 92.9064 Nb"));

elements.Add(Atom.Parse("Molybdenum 42 54 95.94 Mo"));

elements.Add(Atom.Parse("Technetium 43 55 98 Tc"));

elements.Add(Atom.Parse("Ruthenium 44 57 101.07 Ru"));

elements.Add(Atom.Parse("Rhodium 45 58 102.9055 Rh"));

elements.Add(Atom.Parse("Palladium 46 60 106.42 Pd"));

elements.Add(Atom.Parse("Silver 47 61 107.8682 Ag"));

elements.Add(Atom.Parse("Cadmium 48 64 112.411 Cd"));

elements.Add(Atom.Parse("Indium 49 66 114.818 In"));

elements.Add(Atom.Parse("Tin 50 69 118.71 Sn"));

elements.Add(Atom.Parse("Antimony 51 71 121.76 Sb"));

elements.Add(Atom.Parse("Iodine 53 74 126.9045 I"));

elements.Add(Atom.Parse("Tellurium 52 76 127.6 Te"));

elements.Add(Atom.Parse("Xenon 54 77 131.293 Xe"));

elements.Add(Atom.Parse("Cesium 55 78 132.9055 Cs"));

elements.Add(Atom.Parse("Barium 56 81 137.327 Ba"));

elements.Add(Atom.Parse("Lanthanum 57 82 138.9055 La"));

elements.Add(Atom.Parse("Cerium 58 82 140.116 Ce"));

elements.Add(Atom.Parse("Praseodymium 59 82 140.9077 Pr"));

elements.Add(Atom.Parse("Neodymium 60 84 144.24 Nd"));

elements.Add(Atom.Parse("Promethium 61 84 145 Pm"));

elements.Add(Atom.Parse("Samarium 62 88 150.36 Sm"));

elements.Add(Atom.Parse("Europium 63 89 151.964 Eu"));

elements.Add(Atom.Parse("Gadolinium 64 93 157.25 Gd"));

elements.Add(Atom.Parse("Terbium 65 94 158.9253 Tb"));

elements.Add(Atom.Parse("Dysprosium 66 97 162.5 Dy"));

elements.Add(Atom.Parse("Holmium 67 98 164.9303 Ho"));

elements.Add(Atom.Parse("Erbium 68 99 167.259 Er"));

elements.Add(Atom.Parse("Thulium 69 100 168.9342 Tm"));

elements.Add(Atom.Parse("Ytterbium 70 103 173.04 Yb"));

elements.Add(Atom.Parse("Lutetium 71 104 174.967 Lu"));

elements.Add(Atom.Parse("Hafnium 72 106 178.49 Hf"));

elements.Add(Atom.Parse("Tantalum 73 108 180.9479 Ta"));

elements.Add(Atom.Parse("Tungsten 74 110 183.84 W"));

elements.Add(Atom.Parse("Rhenium 75 111 186.207 Re"));

elements.Add(Atom.Parse("Osmium 76 114 190.23 Os"));

elements.Add(Atom.Parse("Iridium 77 115 192.217 Ir"));

elements.Add(Atom.Parse("Platinum 78 117 195.078 Pt"));

elements.Add(Atom.Parse("Gold 79 118 196.9665 Au"));

elements.Add(Atom.Parse("Mercury 80 121 200.59 Hg"));

elements.Add(Atom.Parse("Thallium 81 123 204.3833 Tl"));

elements.Add(Atom.Parse("Lead 82 125 207.2 Pb"));

elements.Add(Atom.Parse("Bismuth 83 126 208.9804 Bi"));

elements.Add(Atom.Parse("Polonium 84 125 209 Po"));

elements.Add(Atom.Parse("Astatine 85 125 210 At"));

elements.Add(Atom.Parse("Radon 86 136 222 Rn"));

elements.Add(Atom.Parse("Francium 87 136 223 Fr"));

elements.Add(Atom.Parse("Radium 88 138 226 Ra"));

elements.Add(Atom.Parse("Actinium 89 138 227 Ac"));

elements.Add(Atom.Parse("Protactinium 91 140 231.0359 Pa"));

elements.Add(Atom.Parse("Thorium 90 142 232.0381 Th"));

elements.Add(Atom.Parse("Neptunium 93 144 237 Np"));

elements.Add(Atom.Parse("Uranium 92 146 238.0289 U"));

elements.Add(Atom.Parse("Americium 95 148 243 Am"));

elements.Add(Atom.Parse("Plutonium 94 150 244 Pu"));

elements.Add(Atom.Parse("Curium 96 151 247 Cm"));

elements.Add(Atom.Parse("Berkelium 97 150 247 Bk"));

elements.Add(Atom.Parse("Californium 98 153 251 Cf"));

elements.Add(Atom.Parse("Einsteinium 99 153 252 Es"));

elements.Add(Atom.Parse("Fermium 100 157 257 Fm"));

elements.Add(Atom.Parse("Mendelevium 101 157 258 Md"));

elements.Add(Atom.Parse("Nobelium 102 157 259 No"));

elements.Add(Atom.Parse("Rutherfordium 104 157 261 Rf"));

elements.Add(Atom.Parse("Lawrencium 103 159 262 Lr"));

elements.Add(Atom.Parse("Dubnium 105 157 262 Db"));

elements.Add(Atom.Parse("Bohrium 107 157 264 Bh"));

elements.Add(Atom.Parse("Seaborgium 106 160 266 Sg"));

elements.Add(Atom.Parse("Meitnerium 109 159 268 Mt"));

elements.Add(Atom.Parse("Roentgenium 111 161 272 Rg"));

elements.Add(Atom.Parse("Hassium 108 169 277 Hs"));

}

//#1 - Display all the items in the collection elements

static void DisplayAllItems()

{

foreach (Atom a in elements)

Console.WriteLine(a.ToString());

}

//#2 - Serialize the first item using json format and save to a suitable file

static void SaveFirstItem()

{

string jsonString = JsonSerializer.Serialize(elements[0]);

TextWriter writer = new StreamWriter(FIRST_FILE);

writer.Write(jsonString);

writer.Close();

}

//#3 - Read the above file and display the item

static void ReadItem()

{

TextReader reader = new StreamReader(FIRST_FILE);

Atom a = JsonSerializer.Deserialize(reader.ReadToEnd());

Console.WriteLine("--- ATOM READ FROM FILE:");

Console.WriteLine(a.ToString());

reader.Close();

}

//#4 - Serialize the entire collection using json format and save to a suitable file

static void SaveAll()

{

// your implementation goes here

}

//#5 - Read the above file and display all of the items

static void ReadAll()

{

// your implementation goes here

}

static void Main(string[] args)

{

AddAtoms();

//#1

DisplayAllItems();

//#2

SaveFirstItem();

//#3

ReadItem();

//#4

SaveAll();

//#5

ReadAll();

}

}

}

==================================atom.cs====================================

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace AtomApp

{

public class Atom

{

public string Name { get; set; }

public string Symbol { get; set; }

public int Proton { get; set; }

public int Neutron { get; set; }

public double Weight { get; set; }

public Atom()

{

}

public Atom(string name,

int proton,

int neutron,

double weight,

string symbol)

{

Name = name;

Proton = proton;

Neutron = neutron;

Weight = weight;

Symbol = symbol;

}

public static Atom Parse(string objectData)

{

string[] parts = objectData.Split();

Atom a = new Atom();

if (parts.Length != 5)

throw new Exception("Line doesn't have 5 parts!");

else

{

a.Name = parts[0];

a.Proton = int.Parse(parts[1]);

a.Neutron = int.Parse(parts[2]);

a.Weight = double.Parse(parts[3]);

a.Symbol = parts[4];

}

return a;

}

public override string ToString()

{

return $"Element Name: {Name}, Element Symbol: {Symbol}, Protons: {Proton}, Neutrons: {Neutron}";

}

}

}

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Mathematics Questions!