public static List <string> getLastResults(int student_ID, string themeName, string blockName, string loadName) // Возвращает последний результат пользователя { List <string> lastResults = new List <string>(); results data = createEntery(); for (int row = 0; row < data.ID.Count() - 1; row++) { if (System.Convert.ToInt32(data.ID[row]) == student_ID) { if (data.theme[row].ToString() == themeName) { if (data.block[row].ToString() == blockName) { if (data.load[row].ToString() == loadName) { lastResults = new List <string> { data.timeSpent[row].ToString(), data.scoreResult[row].ToString(), data.correctAnswers[row].ToString(), data.testDate[row].ToString() }; } } } } } return(lastResults); }
// "Генерация" ID public static int idGeneration(results r, int id = -1) { Random rnd = new Random(); // Провреятся если такой пользователь for (int i = 0; i < r.ID.Count(); i++) { if (r.lastName[i].ToString() == r.lastName[r.lastName.Count() - 1].ToString() && r.firstName[i].ToString() == r.firstName[r.firstName.Count() - 1].ToString() && r.secondName[i].ToString() == r.secondName[r.secondName.Count() - 1].ToString() && r.group[i].ToString() == r.group[r.group.Count() - 1].ToString()) { id = System.Convert.ToInt32(r.ID[i]); } } // Если нет, то генерируется случайное ID if (id == -1) { restart: id = rnd.Next(100000, 999999); foreach (int item in r.ID) // Проверка на наличие такого же ID { if (id == item) { goto restart; // Если ID слуйчано уже получилось такое, какое есть генерируется новое и проврка начинается заного } } } return(id); }
public static void saveData(results r) // Загрузка в Results.json { using (StreamWriter file = File.CreateText("Database/Results_Test.json")) { JsonSerializer serializer = new JsonSerializer(); serializer.Serialize(file, r); } }
public static results createEntery() { using (StreamReader file = new StreamReader("Database/Results_Test.json", System.Text.Encoding.UTF8)) { JsonTextReader reader = new JsonTextReader(file); JObject obj_students = (JObject)JToken.ReadFrom(reader); JArray arr_ID = obj_students.GetValue("ID") as JArray; JArray arr_lastName = obj_students.GetValue("lastName") as JArray; JArray arr_firstName = obj_students.GetValue("firstName") as JArray; JArray arr_secondName = obj_students.GetValue("secondName") as JArray; JArray arr_group = obj_students.GetValue("group") as JArray; JArray arr_theme = obj_students.GetValue("theme") as JArray; JArray arr_block = obj_students.GetValue("block") as JArray; JArray arr_load = obj_students.GetValue("load") as JArray; JArray arr_variant = obj_students.GetValue("variant") as JArray; JArray arr_timeSpent = obj_students.GetValue("timeSpent") as JArray; JArray arr_tips = obj_students.GetValue("tips") as JArray; JArray arr_scoreResult = obj_students.GetValue("scoreResult") as JArray; JArray arr_correctAnswers = obj_students.GetValue("correctAnswers") as JArray; JArray arr_testDate = obj_students.GetValue("testDate") as JArray; results r = new results { ID = arr_ID, lastName = arr_lastName, firstName = arr_firstName, secondName = arr_secondName, group = arr_group, theme = arr_theme, block = arr_block, load = arr_load, variant = arr_variant, timeSpent = arr_timeSpent, tips = arr_tips, scoreResult = arr_scoreResult, correctAnswers = arr_correctAnswers, testDate = arr_testDate }; return(r); } }
public static Dictionary <Tuple <string, string, string, string>, List <List <string> > > getAllResults() // Возвращает полный список результатов вида /* * { * ["Фамилия", "Имя", "Отчество", "Группа"]: [ * ["Тема", "Блок", "Нагрузка", "Вариант", "Потраченное время", "Кол-во подсказок", "Баллы/Оценка", "Правильные ответы", "Дата"], * ["Тема", "Блок", "Нагрузка", "Вариант", "Потраченное время", "Кол-во подсказок", "Баллы/Оценка", "Правильные ответы", "Дата"], * ... * ], * ["Фамилия", "Имя", "Отчество", "Группа"]: [ * ["Тема", "Блок", "Нагрузка", "Вариант", "Потраченное время", "Кол-во подсказок", "Баллы/Оценка", "Правильные ответы", "Дата"], * ["Тема", "Блок", "Нагрузка", "Вариант", "Потраченное время", "Кол-во подсказок", "Баллы/Оценка", "Правильные ответы", "Дата"], * ... * ], * ... * } */ { results r = createEntery(); Dictionary <Tuple <string, string, string, string>, List <List <string> > > allResults = new Dictionary <Tuple <string, string, string, string>, List <List <string> > >(); List <string> explored = new List <string>(); for (int i = 0; i < r.theme.Count; i++) { if (!explored.Contains(r.ID[i].ToString())) // Если ID еще не обрабатывалось, то начинаем работу с ним { var FIOG = new Tuple <string, string, string, string> // Записываем в отдельный список ФИО и группу ( r.lastName[i].ToString(), r.firstName[i].ToString(), r.secondName[i].ToString(), r.group[i].ToString() ); var testData = new List <List <string> >(); // Инициализация списка, с данными о всех прохождениях студента testData.Add (new List <string> { r.theme[i].ToString(), r.block[i].ToString(), r.load[i].ToString(), r.variant[i].ToString(), r.timeSpent[i].ToString(), r.tips[i].ToString(), r.scoreResult[i].ToString(), r.correctAnswers[i].ToString(), r.testDate[i].ToString() } ); allResults.Add(FIOG, testData); // Добавление данных в общий словарь explored.Add(r.ID[i].ToString()); } else // Если ID уже был обработан хотя бы раз, то мы записываем данные о тестах в значения, используя как ключ пользовательские данные { var FIOG = new Tuple <string, string, string, string> // Записываем в отдельный список ФИО и группу ( r.lastName[i].ToString(), r.firstName[i].ToString(), r.secondName[i].ToString(), r.group[i].ToString() ); var testData = new List <List <string> >(); // Инициализация списка, с данными о всех прохождениях студента testData.Add (new List <string> { r.theme[i].ToString(), r.block[i].ToString(), r.load[i].ToString(), r.variant[i].ToString(), r.timeSpent[i].ToString(), r.tips[i].ToString(), r.scoreResult[i].ToString(), r.correctAnswers[i].ToString(), r.testDate[i].ToString() } ); foreach (List <string> row in allResults[FIOG]) { testData.Add(row); } allResults[FIOG] = testData; } } return(allResults); }