public async Task PopulateMarks() { foreach (String nextLine in DatabaseUtilities.ReadDB(@"Marks")) { String[] singleMark = nextLine.Split('#'); MarksDictionary.Add(int.Parse(singleMark[0]), (new Mark { MarkID = int.Parse(singleMark[0]), UserID = singleMark[1], TestID = int.Parse(singleMark[2]), MarkInt = int.Parse(singleMark[3]), MarkPercent = int.Parse(singleMark[4]) })); MarkID = (int.Parse(singleMark[0]) + 1); } }
//_____________________________Method to Print to a marksheet at the passed path returns true if marks exist for the selected test__________________________ public bool PopulateMarkSheet(String fileName, bool marksExist) { if (MarksDictionary.Any(n => n.Value.TestID == this.ChosenTestID)) { StreamWriter sw = new StreamWriter(fileName); int highestMark = 0, lowestMark = 100, average = 0, count = 0; String space = " ", highestMarkString = null, lowestMarkString = null; int spaceLength = 25; sw.WriteLine("Marks for " + TestName); sw.WriteLine("-----------------------------------------------------"); sw.WriteLine("Name" + space + "| Mark"); sw.WriteLine("-----------------------------------------------------"); //___________________Writeline for each user that has completed chosen test, calculate highest, lowest and average______________________________ foreach (KeyValuePair <int, Mark> mark in MarksDictionary.Where(n => n.Value.TestID == this.ChosenTestID)) { space = ""; foreach (KeyValuePair <int, String> user in UsersDictionary) { if (user.Key == int.Parse(MarksDictionary[mark.Key].UserID)) { for (int i = 0; i < spaceLength - user.Value.Length; i++) { space += " "; } sw.WriteLine(user.Value + space + "| " + MarksDictionary[mark.Key].MarkPercent.ToString() + "%"); average += MarksDictionary[mark.Key].MarkPercent; if (MarksDictionary[mark.Key].MarkPercent > highestMark) { highestMark = MarksDictionary[mark.Key].MarkPercent; highestMarkString = user.Value + space + "| " + MarksDictionary[mark.Key].MarkPercent.ToString() + "%"; } else { if (MarksDictionary[mark.Key].MarkPercent == highestMark) { highestMarkString += "\n" + user.Value + space + "| " + MarksDictionary[mark.Key].MarkPercent.ToString() + "%"; } } if (MarksDictionary[mark.Key].MarkPercent < lowestMark) { lowestMark = MarksDictionary[mark.Key].MarkPercent; lowestMarkString = user.Value + space + "| " + MarksDictionary[mark.Key].MarkPercent.ToString() + "%"; } else { if (MarksDictionary[mark.Key].MarkPercent == lowestMark) { lowestMarkString += "\n" + user.Value + space + "| " + MarksDictionary[mark.Key].MarkPercent.ToString() + "%"; } } } } count++; } //__________________________________Output highest, lowest and average__________________________________________ average = average / count; sw.WriteLine("------------------Highest Mark/s---------------------"); sw.WriteLine(highestMarkString); sw.WriteLine("-------------------Lowest Mark/s---------------------"); sw.WriteLine(lowestMarkString); sw.WriteLine("-------------------Class Average---------------------"); sw.WriteLine("Class Average | " + average + "%"); sw.Close(); marksExist = true; } else { MessageBox.Show("No Marks exist for that test yet!", "Nope", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); marksExist = false; } return(marksExist); }