1
This commit is contained in:
parent
82960a6ebe
commit
fe9c8a3f0c
16
StudentManager/Common/CursonManager.cs
Normal file
16
StudentManager/Common/CursonManager.cs
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace StudentManager.Common
|
||||||
|
{
|
||||||
|
public class CursonManager
|
||||||
|
{
|
||||||
|
public int CursonIndex { get; set; } = 0;
|
||||||
|
public int CursonCount { get; set; } = 0;
|
||||||
|
public string CursonName { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,5 @@
|
|||||||
using StudentManager.Data;
|
using DryIoc.ImTools;
|
||||||
|
using StudentManager.Data;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -7,80 +8,131 @@ using System.Threading.Tasks;
|
|||||||
|
|
||||||
namespace StudentManager.Common
|
namespace StudentManager.Common
|
||||||
{
|
{
|
||||||
public class ErrorInfo
|
public class QuestionBase
|
||||||
{
|
{
|
||||||
public int ID { get; set; } = 0;
|
public int ID { get; set; } = 0;
|
||||||
public bool Status { get; set; } = false;
|
public bool Status { get; set; } = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class ErrorBase
|
||||||
|
{
|
||||||
|
public QuestionBase QuestionBase { get; set; } = new QuestionBase();
|
||||||
|
public int TotalUseCount { get; set; } = 1;
|
||||||
|
public int ErrorCount { get; set; } = 1;
|
||||||
|
public int CorrectCount { get; set; } = 0;
|
||||||
|
}
|
||||||
|
|
||||||
public class ErrorSet
|
public class ErrorSet
|
||||||
{
|
{
|
||||||
public int TotalCount { get; set; } = 0;
|
public int TotalCount { get; set; } = 0;
|
||||||
public int CorrectCount { get; set; } = 0;
|
public int CorrectCount { get; set; } = 0;
|
||||||
public Dictionary<int, ErrorInfo> Errores { get; set; } = new Dictionary<int, ErrorInfo>();
|
public Dictionary<int, ErrorBase> Errores { get; set; } = new Dictionary<int, ErrorBase>();
|
||||||
public List<int> ErrorArray { get; set; } = new List<int>();
|
public List<int> ErrorArray { get; set; } = new List<int>();
|
||||||
public List<int> CorrectArray { get; set; } = new List<int>();
|
public List<int> CorrectArray { get; set; } = new List<int>();
|
||||||
|
public int CorrectThresholds { get; set; } = 2;
|
||||||
|
|
||||||
public void InitErrorSetData()
|
public void InitErrorSetData()
|
||||||
{
|
{
|
||||||
foreach (var item in Errores)
|
foreach (var item in Errores)
|
||||||
{
|
{
|
||||||
if(item.Value.Status == true) CorrectArray.Add(item.Value.ID);
|
if (item.Value.QuestionBase.Status == true) CorrectArray.Add(item.Value.QuestionBase.ID);
|
||||||
else ErrorArray.Add(item.Value.ID);
|
else ErrorArray.Add(item.Value.QuestionBase.ID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddQuestion(QuestionBase question)
|
||||||
|
{
|
||||||
|
if (question.Status)
|
||||||
|
{
|
||||||
|
AddCorrectQuestion(question);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
AddErrorQuestion(question);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddErrorQuestion(int id)
|
public void AddErrorQuestion(int id)
|
||||||
{
|
{
|
||||||
if (Errores.ContainsKey(id))
|
|
||||||
{
|
|
||||||
TotalCount++;
|
|
||||||
ErrorArray.Add(id);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Errores.Add(id, new ErrorInfo { ID = id });
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddCorrectQuestion(int id)
|
public void AddCorrectQuestion(int id)
|
||||||
{
|
{
|
||||||
if (Errores.ContainsKey(id))
|
|
||||||
{
|
|
||||||
TotalCount++;
|
|
||||||
CorrectCount++;
|
|
||||||
Errores[id].Status = true;
|
|
||||||
|
|
||||||
ErrorArray.Remove(id);
|
|
||||||
CorrectArray.Add(id);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void AddErrorQuestion(QuestionBase question)
|
||||||
|
{
|
||||||
|
if (Errores.ContainsKey(question.ID))
|
||||||
|
{
|
||||||
|
Errores[question.ID].TotalUseCount++;
|
||||||
|
Errores[question.ID].ErrorCount++;
|
||||||
|
|
||||||
public void AddErrorQuestion(QuestionData question)
|
CompareToErrorArray(Errores[question.ID]);
|
||||||
{
|
|
||||||
if (Errores.ContainsKey(question.Id))
|
|
||||||
{
|
|
||||||
TotalCount++;
|
|
||||||
ErrorArray.Add(question.Id);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Errores.Add(question.Id, new ErrorInfo { ID = question.Id });
|
TotalCount++;
|
||||||
|
Errores.Add(question.ID, new ErrorBase { QuestionBase = { ID = question.ID } });
|
||||||
|
ErrorArray.Add(question.ID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddErrorQuestion(QuestionData question)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddCorrectQuestion(QuestionBase id)
|
||||||
|
{
|
||||||
|
if (Errores.ContainsKey(id.ID))
|
||||||
|
{
|
||||||
|
CorrectCount++;
|
||||||
|
Errores[id.ID].QuestionBase.Status = true;
|
||||||
|
Errores[id.ID].CorrectCount++;
|
||||||
|
|
||||||
|
CompareToCorrectArray(Errores[id.ID]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CompareToErrorArray(ErrorBase id)
|
||||||
|
{
|
||||||
|
if (id.QuestionBase.Status == false || ErrorArray.Contains(id.QuestionBase.ID)) return;
|
||||||
|
|
||||||
|
|
||||||
|
if ((id.CorrectCount - id.CorrectCount) <= CorrectThresholds)
|
||||||
|
{
|
||||||
|
id.QuestionBase.Status = false;
|
||||||
|
CorrectArray.Remove(id.QuestionBase.ID);
|
||||||
|
ErrorArray.Add(id.QuestionBase.ID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CompareToCorrectArray(ErrorBase id)
|
||||||
|
{
|
||||||
|
if (id.QuestionBase.Status == true || CorrectArray.Contains(id.QuestionBase.ID)) return;
|
||||||
|
|
||||||
|
|
||||||
|
if ((id.CorrectCount - id.CorrectCount) > CorrectThresholds)
|
||||||
|
{
|
||||||
|
id.QuestionBase.Status = true;
|
||||||
|
ErrorArray.Remove(id.QuestionBase.ID);
|
||||||
|
CorrectArray.Add(id.QuestionBase.ID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddCorrectQuestion(QuestionData question)
|
public void AddCorrectQuestion(QuestionData question)
|
||||||
{
|
{
|
||||||
if (Errores.ContainsKey(question.Id))
|
AddCorrectQuestion(new QuestionBase { ID = question.Id });
|
||||||
{
|
}
|
||||||
TotalCount++;
|
|
||||||
CorrectCount++;
|
|
||||||
Errores[question.Id].Status = true;
|
|
||||||
|
|
||||||
ErrorArray.Remove(question.Id);
|
public void QueryErrorSet(int id)
|
||||||
CorrectArray.Add(question.Id);
|
{
|
||||||
}
|
Errores.Clear();
|
||||||
|
|
||||||
|
SQLHelper.Query<UserQuestionData>(Tables.UQTable, id).ForEach(x =>
|
||||||
|
{
|
||||||
|
AddQuestion(new QuestionBase { ID = x.PID, Status = x.Status});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,17 +21,22 @@ namespace StudentManager.Common
|
|||||||
work.AddHomeWork(item);
|
work.AddHomeWork(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CommonHomeWork.QuestionInfo.Count > 0)
|
if (CommonHomeWork.Questions.Count > 0)
|
||||||
{
|
{
|
||||||
work.Append(CommonHomeWork);
|
work.Append(CommonHomeWork);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
student.CurentHomeWork = work;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void Public()
|
public static void Public()
|
||||||
{
|
{
|
||||||
|
foreach (var item in StudentLib.StudentDic)
|
||||||
|
{
|
||||||
|
item.Value.PublicHomeWork();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using DryIoc.ImTools;
|
using DryIoc.ImTools;
|
||||||
|
using StudentManager.Data;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
@ -12,28 +13,28 @@ namespace StudentManager.Common
|
|||||||
{
|
{
|
||||||
public int Lesson { get; set; } = 0;
|
public int Lesson { get; set; } = 0;
|
||||||
public bool Status { get; set; } = false;
|
public bool Status { get; set; } = false;
|
||||||
public HashSet<ErrorInfo> QuestionInfo { get; set; } = new HashSet<ErrorInfo>();
|
public HashSet<QuestionBase> Questions { get; set; } = new HashSet<QuestionBase>();
|
||||||
|
|
||||||
public void AddHomeWork(ErrorInfo workInfo)
|
public void AddHomeWork(QuestionBase workInfo)
|
||||||
{
|
{
|
||||||
QuestionInfo.Add(workInfo);
|
Questions.Add(workInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddHomeWork(int id)
|
public void AddHomeWork(int id)
|
||||||
{
|
{
|
||||||
QuestionInfo.Add(new ErrorInfo { ID = id });
|
Questions.Add(new QuestionBase { ID = id });
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RemoveHomeWork(ErrorInfo workInfo)
|
public void RemoveHomeWork(QuestionBase workInfo)
|
||||||
{
|
{
|
||||||
QuestionInfo.Remove(workInfo);
|
Questions.Remove(workInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Append(HomeWork homeWork)
|
public void Append(HomeWork homeWork)
|
||||||
{
|
{
|
||||||
foreach (var item in homeWork.QuestionInfo)
|
foreach (var item in homeWork.Questions)
|
||||||
{
|
{
|
||||||
QuestionInfo.Add(item);
|
Questions.Add(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -75,6 +76,18 @@ namespace StudentManager.Common
|
|||||||
}
|
}
|
||||||
return works;
|
return works;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void QueryCQSet(int id)
|
||||||
|
{
|
||||||
|
HomeWorks.Clear();
|
||||||
|
|
||||||
|
SQLHelper.Query<CursonQuestionsData>(Tables.CQTable, id).ForEach(x =>
|
||||||
|
{
|
||||||
|
HashSet<QuestionBase> Questions = new HashSet<QuestionBase>();
|
||||||
|
x.ProblemIDS.ForEach(y => Questions.Add(new QuestionBase { ID = y, Status = x.CorrectIDS.Contains(y) }));
|
||||||
|
HomeWorks.Add(x.Lesson, new HomeWork { Lesson = x.Lesson, Questions = Questions, Status = x.Status == 1 });
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -68,6 +68,13 @@ namespace StudentManager.Common
|
|||||||
(data as CursonQuestionsData).TotalCount = (data as CursonQuestionsData).ProblemIDS.Length;
|
(data as CursonQuestionsData).TotalCount = (data as CursonQuestionsData).ProblemIDS.Length;
|
||||||
(data as CursonQuestionsData).CorrectCount = (data as CursonQuestionsData).CorrectIDS.Length;
|
(data as CursonQuestionsData).CorrectCount = (data as CursonQuestionsData).CorrectIDS.Length;
|
||||||
}
|
}
|
||||||
|
else if (typeof(T) == typeof(UserQuestionData))
|
||||||
|
{
|
||||||
|
(data as UserQuestionData).PID = (int)reader[1];
|
||||||
|
(data as UserQuestionData).ErrorCount = (byte)reader[2];
|
||||||
|
(data as UserQuestionData).CorrectCount = (byte)reader[3];
|
||||||
|
(data as UserQuestionData).Status = (byte)reader[4] == 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using Microsoft.VisualBasic;
|
using Microsoft.VisualBasic;
|
||||||
|
using StudentManager.Common;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
@ -12,7 +13,6 @@ namespace StudentManager.Data
|
|||||||
{
|
{
|
||||||
public static class QuestionLib
|
public static class QuestionLib
|
||||||
{
|
{
|
||||||
public static string LibPath = "C:\\Users\\zc\\Desktop\\FileLib\\";
|
|
||||||
public static string FileName = "questionLib.dbqi";
|
public static string FileName = "questionLib.dbqi";
|
||||||
public static Dictionary<int, QuestionData> QuestionDic { get; set; } = new Dictionary<int, QuestionData>();
|
public static Dictionary<int, QuestionData> QuestionDic { get; set; } = new Dictionary<int, QuestionData>();
|
||||||
|
|
||||||
@ -20,22 +20,18 @@ namespace StudentManager.Data
|
|||||||
{
|
{
|
||||||
QuestionDic.Clear();
|
QuestionDic.Clear();
|
||||||
|
|
||||||
Debug.Assert(Path.Exists(LibPath));
|
Debug.Assert(Path.Exists(StudentLib.LibPath));
|
||||||
string file = File.ReadAllText(LibPath + FileName);
|
string file = File.ReadAllText(StudentLib.LibPath + FileName);
|
||||||
QuestionDic = JsonSerializer.Deserialize<Dictionary<int, QuestionData>>(file);
|
QuestionDic = JsonSerializer.Deserialize<Dictionary<int, QuestionData>>(file);
|
||||||
}
|
}
|
||||||
public static void Save()
|
public static void Save()
|
||||||
{
|
{
|
||||||
File.WriteAllText((LibPath + FileName), JsonSerializer.Serialize(QuestionDic));
|
File.WriteAllText((StudentLib.LibPath + FileName), JsonSerializer.Serialize(QuestionDic));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Test()
|
public static void FreshAllQuestion()
|
||||||
{
|
{
|
||||||
QuestionDic.Add(1, new QuestionData
|
SQLHelper.Query<QuestionData>(Tables.QuesTable).ForEach(x => QuestionDic.Add(x.Id, x));
|
||||||
{
|
|
||||||
Id = 1,
|
|
||||||
Type = "test"
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static QuestionData Get(int id)
|
public static QuestionData Get(int id)
|
||||||
|
@ -4,6 +4,7 @@ using System.Collections.Generic;
|
|||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Reflection.Metadata.Ecma335;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@ -12,7 +13,7 @@ namespace StudentManager.Data
|
|||||||
{
|
{
|
||||||
public static class StudentLib
|
public static class StudentLib
|
||||||
{
|
{
|
||||||
public static string LibPath = "C:\\Users\\zc\\Desktop\\FileLib\\";
|
public static string LibPath = $"{Environment.GetFolderPath(Environment.SpecialFolder.Desktop)}\\FileLib\\";
|
||||||
public static string FileName = "studentLib.dbsi";
|
public static string FileName = "studentLib.dbsi";
|
||||||
public static Dictionary<int, StudentInfo> StudentDic { get; set; } = new Dictionary<int, StudentInfo>();
|
public static Dictionary<int, StudentInfo> StudentDic { get; set; } = new Dictionary<int, StudentInfo>();
|
||||||
|
|
||||||
@ -33,20 +34,39 @@ namespace StudentManager.Data
|
|||||||
|
|
||||||
public static void Save()
|
public static void Save()
|
||||||
{
|
{
|
||||||
|
Directory.CreateDirectory(Path.GetFullPath(LibPath));
|
||||||
File.WriteAllText((LibPath + FileName), JsonSerializer.Serialize(StudentDic));
|
File.WriteAllText((LibPath + FileName), JsonSerializer.Serialize(StudentDic));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Test()
|
public static void FreshAllStudentInfo()
|
||||||
{
|
{
|
||||||
StudentDic.Add(1, new StudentInfo
|
StudentDic.Clear();
|
||||||
|
|
||||||
|
SQLHelper.Query<StudentData>(Tables.UserTable).ForEach(x =>
|
||||||
|
StudentDic.Add(x.UID, new StudentInfo
|
||||||
{
|
{
|
||||||
UID = 123,
|
UID = x.UID,
|
||||||
Name = "John Doe",
|
Name = x.Name,
|
||||||
Gender = "Male",
|
Address = x.Address,
|
||||||
Contact = "123-456-7890",
|
Contact = x.Contact,
|
||||||
Address = "123 Main St",
|
Grade = x.Grade,
|
||||||
Grade = 10,
|
}));
|
||||||
});
|
|
||||||
|
foreach (var item in StudentDic)
|
||||||
|
{
|
||||||
|
GetStudentDetailInfo(item.Value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static StudentInfo QueryStudentDetailInfo(int uid)
|
||||||
|
{
|
||||||
|
return GetStudentDetailInfo(Get(uid));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static StudentInfo Get(int uid)
|
||||||
|
{
|
||||||
|
if (!StudentDic.ContainsKey(uid)) return null;
|
||||||
|
return StudentDic[uid];
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Remove(StudentInfo studentInfo)
|
public static void Remove(StudentInfo studentInfo)
|
||||||
@ -58,6 +78,19 @@ namespace StudentManager.Data
|
|||||||
{
|
{
|
||||||
StudentDic.Remove(id);
|
StudentDic.Remove(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static StudentInfo GetStudentDetailInfo(StudentInfo studentData)
|
||||||
|
{
|
||||||
|
studentData.ErrorSet.QueryErrorSet(studentData.UID);
|
||||||
|
studentData.HomeWorkSet.QueryCQSet(studentData.UID);
|
||||||
|
return studentData;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void GetStudentDetailInfo(ref StudentInfo studentData)
|
||||||
|
{
|
||||||
|
studentData.ErrorSet.QueryErrorSet(studentData.UID);
|
||||||
|
studentData.HomeWorkSet.QueryCQSet(studentData.UID);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class StudentInfo
|
public class StudentInfo
|
||||||
@ -74,6 +107,9 @@ namespace StudentManager.Data
|
|||||||
|
|
||||||
public HomeWork CurentHomeWork { get; set; } = new HomeWork();
|
public HomeWork CurentHomeWork { get; set; } = new HomeWork();
|
||||||
|
|
||||||
|
public void PublicHomeWork()
|
||||||
|
{
|
||||||
|
HomeWorkSet.AddHomeWork(CurentHomeWork);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
16
StudentManager/Data/UserQuestionData.cs
Normal file
16
StudentManager/Data/UserQuestionData.cs
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace StudentManager.Data
|
||||||
|
{
|
||||||
|
public class UserQuestionData : IDataCommon
|
||||||
|
{
|
||||||
|
public int PID { get; set; } = 0;
|
||||||
|
public int ErrorCount { get; set; } = 0;
|
||||||
|
public int CorrectCount { get; set; } = 0;
|
||||||
|
public bool Status = false;
|
||||||
|
}
|
||||||
|
}
|
@ -135,14 +135,16 @@ namespace StudentManager.Model
|
|||||||
|
|
||||||
this.regionManager = regionManager;
|
this.regionManager = regionManager;
|
||||||
|
|
||||||
QueryAll();
|
|
||||||
|
|
||||||
|
|
||||||
|
StudentInfo studentInfo = new StudentInfo();
|
||||||
|
|
||||||
StudentLib.Test();
|
//QueryAll();
|
||||||
|
|
||||||
|
StudentLib.FreshAllStudentInfo();
|
||||||
StudentLib.Save();
|
StudentLib.Save();
|
||||||
|
|
||||||
QuestionLib.Test();
|
QuestionLib.Load();
|
||||||
QuestionLib.Save();
|
QuestionLib.Save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user