| @@ -0,0 +1,192 @@ | |||||
| /* Describtion : Class for Data Send From Client / Server | |||||
| * Company : Wuxi Xinje | |||||
| * Author : Somuns | |||||
| * DateTime : 2021/1/18 | |||||
| */ | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| namespace StuMgmLib | |||||
| { | |||||
| public enum ClientFunc | |||||
| { | |||||
| // 普通用户允许的操作 | |||||
| /// <summary> | |||||
| /// 验证登录 | |||||
| /// </summary> | |||||
| VerifyLogin = 1, | |||||
| /// <summary> | |||||
| /// 获取所有课程信息 | |||||
| /// </summary> | |||||
| GetCourseInfo, | |||||
| /// <summary> | |||||
| /// 获取用户信息 | |||||
| /// </summary> | |||||
| GetUserInfo, | |||||
| /// <summary> | |||||
| /// 修改课程状态 | |||||
| /// </summary> | |||||
| ChangeCourseStatus, | |||||
| // 老师允许的操作 | |||||
| //100 | |||||
| //// 管理员允许的操作 | |||||
| //200 | |||||
| //GetSomeoneUserCInfo = 6, | |||||
| //SUpdateCourse = 4, | |||||
| //TUpdateCourse = 5, | |||||
| } | |||||
| public enum Lvl | |||||
| { | |||||
| NotFound = -1, | |||||
| Error = -2, | |||||
| Student = 99, | |||||
| Teacher = 199, | |||||
| Admin = 299, | |||||
| } | |||||
| public enum CourseStatus | |||||
| { | |||||
| } | |||||
| #region 基本收发类 | |||||
| [Serializable] | |||||
| public class Request | |||||
| { | |||||
| public ClientFunc Func; | |||||
| public short JobId; | |||||
| public string Token; | |||||
| public Request() { } | |||||
| public Request(ClientFunc func) | |||||
| { | |||||
| Func = func; | |||||
| } | |||||
| } | |||||
| [Serializable] | |||||
| public class Response | |||||
| { | |||||
| public bool Res; | |||||
| public string ErrMsg; | |||||
| public Response() | |||||
| { | |||||
| Res = true; | |||||
| } | |||||
| public Response(string errMsg) | |||||
| { | |||||
| Res = false; | |||||
| ErrMsg = errMsg; | |||||
| } | |||||
| } | |||||
| #endregion | |||||
| #region 用户登录 | |||||
| [Serializable] | |||||
| public class LoginReq : Request | |||||
| { | |||||
| public string Password; | |||||
| public LoginReq(string password) // Changed | |||||
| { | |||||
| Password = password; | |||||
| } | |||||
| } | |||||
| [Serializable] | |||||
| public class LoginRes : Response | |||||
| { | |||||
| public string Token; | |||||
| public Lvl Level; | |||||
| public LoginRes(string token, Lvl level) | |||||
| { | |||||
| Token = token; | |||||
| Level = level; | |||||
| } | |||||
| } | |||||
| #endregion | |||||
| #region 获取所有课程信息 | |||||
| [Serializable] | |||||
| public class CourseInfoReq : Request | |||||
| { | |||||
| } | |||||
| [Serializable] | |||||
| public class CourseInfoRes : Response | |||||
| { | |||||
| /// <summary> | |||||
| /// 课程ID | |||||
| /// </summary> | |||||
| public short Id; | |||||
| public short Pid; | |||||
| /// <summary> | |||||
| /// 该题所需用时(单位s) | |||||
| /// </summary> | |||||
| public int Time; | |||||
| public string Name; | |||||
| public string Content; | |||||
| public CourseInfoRes(short id, short pid, int time, string name, string content) | |||||
| { | |||||
| Id = id; | |||||
| Pid = pid; | |||||
| Time = time; | |||||
| Name = name; | |||||
| Content = content; | |||||
| } | |||||
| } | |||||
| #endregion | |||||
| #region 用户信息 | |||||
| [Serializable] | |||||
| public class UserInfoReq : Request | |||||
| { | |||||
| public short User; | |||||
| public UserInfoReq(short user) | |||||
| { | |||||
| short User = user; | |||||
| } | |||||
| } | |||||
| [Serializable] | |||||
| public class UserInfoRes : Response | |||||
| { | |||||
| public short JobId;//工号 | |||||
| public string Name;//姓名 | |||||
| /// <summary> | |||||
| /// 各课程的当前状态 | |||||
| /// </summary> | |||||
| public string Status; | |||||
| public UserInfoRes(short jobId, string name, string status) | |||||
| { | |||||
| short JobId = jobId; | |||||
| string Name = name; | |||||
| string Status = status; | |||||
| } | |||||
| // ..public DateTime Entry; | |||||
| //public string Details;//老师对于该生的描述 | |||||
| } | |||||
| #endregion | |||||
| #region 用户课程状态修改 | |||||
| public class CrsStasReq : Request | |||||
| { | |||||
| /// <summary> | |||||
| /// 需要修改者的工号 | |||||
| /// </summary> | |||||
| public short User; | |||||
| /// <summary> | |||||
| /// 需要修改的课程 | |||||
| /// </summary> | |||||
| public short Id; | |||||
| public CourseStatus Status; | |||||
| public CrsStasReq(short user, short id, CourseStatus status) | |||||
| { | |||||
| short User = user; | |||||
| short Id = id; | |||||
| CourseStatus Status = status; | |||||
| } | |||||
| } | |||||
| public class CrsStasRes : Response | |||||
| { | |||||
| } | |||||
| #endregion | |||||
| } | |||||
| @@ -1,140 +0,0 @@ | |||||
| /* Describtion : Class for Data Send From Client / Server | |||||
| * Company : Wuxi Xinje | |||||
| * Author : Somuns | |||||
| * DateTime : 2021/1/18 | |||||
| */ | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| namespace StuMgmLib.MyNameSpace | |||||
| { | |||||
| #region QuickTable | |||||
| internal class QTInfo | |||||
| { | |||||
| public int Token; | |||||
| public Lvl Level; | |||||
| public QTInfo(int token, Lvl lv) | |||||
| { | |||||
| Token = token; | |||||
| Level = lv; | |||||
| } | |||||
| } | |||||
| public class QT // quickTable | |||||
| { | |||||
| internal const Int16 tokenMaxCount = 32767; | |||||
| internal static Dictionary<short, QTInfo> quickTable = new Dictionary<short, QTInfo>(); | |||||
| } | |||||
| #endregion | |||||
| #region ClientClass | |||||
| public enum ClientFunc | |||||
| { | |||||
| VerifyLogin = 1, | |||||
| GetCourseInfo = 2, | |||||
| GetSelfUserCourseInfo = 3, | |||||
| GetSomeoneUserCInfo = 6, | |||||
| SUpdateCourse = 4, | |||||
| TUpdateCourse = 5, | |||||
| } | |||||
| public enum Lvl | |||||
| { | |||||
| NotFound = -1, | |||||
| Error = -2, | |||||
| Admin = 1, | |||||
| Teacher = 2, | |||||
| Student = 3, | |||||
| } | |||||
| [Serializable] | |||||
| public class ClientRequest | |||||
| { | |||||
| public ClientFunc Func; | |||||
| public object Object; | |||||
| public ClientRequest(ClientFunc func, object obj) | |||||
| { | |||||
| Func = func; | |||||
| Object = obj; | |||||
| } | |||||
| } | |||||
| [Serializable] | |||||
| public class UserInfoLogin | |||||
| { | |||||
| public short Account; | |||||
| public string Password; | |||||
| public UserInfoLogin(short account, string password) // Changed | |||||
| { | |||||
| Account = account; | |||||
| Password = password; | |||||
| } | |||||
| } | |||||
| [Serializable] | |||||
| public class UserCourseInfoReq | |||||
| { | |||||
| public short Job_Id; | |||||
| public int Token; | |||||
| } | |||||
| [Serializable] | |||||
| public class UserCourseInfoOper | |||||
| { | |||||
| public short Job_Id; | |||||
| public int Token; | |||||
| public string Status; | |||||
| } | |||||
| #endregion | |||||
| #region ServerClass | |||||
| [Serializable] | |||||
| public class ServerResponse | |||||
| { | |||||
| public bool Final; | |||||
| public string ErrMessage; | |||||
| public object Object; | |||||
| public ServerResponse(object obj) | |||||
| { | |||||
| Object = obj; | |||||
| } | |||||
| } | |||||
| [Serializable] | |||||
| public class LoginResponse | |||||
| { | |||||
| public int Token; | |||||
| public Lvl Level; | |||||
| } | |||||
| [Serializable] | |||||
| public class CourseInfo | |||||
| { | |||||
| public short Id; | |||||
| public short Pid; | |||||
| public int Time; | |||||
| public string Name; | |||||
| public string Content; | |||||
| } | |||||
| [Serializable] | |||||
| public class UserCourseInfo | |||||
| { | |||||
| public short JobId;//工号 | |||||
| public string Name;//姓名 | |||||
| public string Status; | |||||
| // ..public DateTime Entry; | |||||
| public string Details;//信息描述 | |||||
| } | |||||
| #endregion | |||||
| } | |||||
| @@ -43,12 +43,9 @@ | |||||
| <Reference Include="System.Xml" /> | <Reference Include="System.Xml" /> | ||||
| </ItemGroup> | </ItemGroup> | ||||
| <ItemGroup> | <ItemGroup> | ||||
| <Compile Include="MyNameSpace\CommonData.cs" /> | |||||
| <Compile Include="MyNameSpace\SystemCtrl.cs"> | |||||
| <SubType>Code</SubType> | |||||
| </Compile> | |||||
| <Compile Include="MyNameSpace\TcpConn.cs" /> | |||||
| <Compile Include="CommonData.cs" /> | |||||
| <Compile Include="Properties\AssemblyInfo.cs" /> | <Compile Include="Properties\AssemblyInfo.cs" /> | ||||
| <Compile Include="Utility.cs" /> | |||||
| </ItemGroup> | </ItemGroup> | ||||
| <ItemGroup /> | <ItemGroup /> | ||||
| <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> | <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> | ||||
| @@ -0,0 +1,31 @@ | |||||
| using System.IO; | |||||
| using System.Runtime.Serialization.Formatters.Binary; | |||||
| namespace StuMgmLib | |||||
| { | |||||
| class Utility | |||||
| { | |||||
| /// <summary> | |||||
| /// 序列化 | |||||
| /// </summary> | |||||
| public static byte[] SerializeBin<T>(T c) | |||||
| { | |||||
| MemoryStream ms = new MemoryStream(); | |||||
| BinaryFormatter iFormatter = new BinaryFormatter(); | |||||
| iFormatter.Serialize(ms, c); | |||||
| byte[] buf = ms.GetBuffer(); | |||||
| return buf; | |||||
| } | |||||
| /// <summary> | |||||
| /// 反序列化 | |||||
| /// </summary> | |||||
| public static T DeserializeBin<T>(byte[] buf) | |||||
| { | |||||
| MemoryStream ms = new MemoryStream(buf); | |||||
| BinaryFormatter iFormatter = new BinaryFormatter(); | |||||
| var obj = (T)iFormatter.Deserialize(ms); | |||||
| return obj; | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -51,6 +51,9 @@ | |||||
| </Compile> | </Compile> | ||||
| <Compile Include="Program.cs" /> | <Compile Include="Program.cs" /> | ||||
| <Compile Include="Properties\AssemblyInfo.cs" /> | <Compile Include="Properties\AssemblyInfo.cs" /> | ||||
| <Compile Include="SystemCtrl.cs" /> | |||||
| <Compile Include="TcpConn.cs" /> | |||||
| <Compile Include="Utility.cs" /> | |||||
| <EmbeddedResource Include="Properties\Resources.resx"> | <EmbeddedResource Include="Properties\Resources.resx"> | ||||
| <Generator>ResXFileCodeGenerator</Generator> | <Generator>ResXFileCodeGenerator</Generator> | ||||
| <LastGenOutput>Resources.Designer.cs</LastGenOutput> | <LastGenOutput>Resources.Designer.cs</LastGenOutput> | ||||
| @@ -14,30 +14,7 @@ namespace StuMgmLib.MyNameSpace | |||||
| { | { | ||||
| public class SystemCtrl | public class SystemCtrl | ||||
| { | { | ||||
| #region 流 | |||||
| /// <summary> | |||||
| /// 序列化 | |||||
| /// </summary> | |||||
| static byte[] Serialize<T>(T c) | |||||
| { | |||||
| MemoryStream ms = new MemoryStream(); | |||||
| BinaryFormatter iFormatter = new BinaryFormatter(); | |||||
| iFormatter.Serialize(ms, c); | |||||
| byte[] buf = ms.GetBuffer(); | |||||
| return buf; | |||||
| } | |||||
| /// <summary> | |||||
| /// 反序列化 | |||||
| /// </summary> | |||||
| static T Deserialize<T>(byte[] buf) | |||||
| { | |||||
| MemoryStream ms = new MemoryStream(buf); | |||||
| BinaryFormatter iFormatter = new BinaryFormatter(); | |||||
| var obj = (T)iFormatter.Deserialize(ms); | |||||
| return obj; | |||||
| } | |||||
| #endregion | |||||
| /// <summary> | /// <summary> | ||||
| /// 获取返回数据 | /// 获取返回数据 | ||||
| @@ -48,14 +25,14 @@ namespace StuMgmLib.MyNameSpace | |||||
| { | { | ||||
| var cr = Deserialize<ClientRequest>(clientRequset); | var cr = Deserialize<ClientRequest>(clientRequset); | ||||
| ServerResponse sr = new ServerResponse(null); | |||||
| Response sr = new Response(null); | |||||
| switch (cr.Func) | switch (cr.Func) | ||||
| { | { | ||||
| case ClientFunc.VerifyLogin: | case ClientFunc.VerifyLogin: | ||||
| #region 登陆验证 | #region 登陆验证 | ||||
| LoginResponse lr = new LoginResponse(); | LoginResponse lr = new LoginResponse(); | ||||
| sr = new ServerResponse(lr); | |||||
| sr = new Response(lr); | |||||
| UserInfoLogin login = (UserInfoLogin)cr.Object; | UserInfoLogin login = (UserInfoLogin)cr.Object; | ||||
| getPerFromDB(login, out sr.Final, out sr.ErrMessage, out lr.Level); | getPerFromDB(login, out sr.Final, out sr.ErrMessage, out lr.Level); | ||||
| @@ -66,7 +43,7 @@ namespace StuMgmLib.MyNameSpace | |||||
| #endregion | #endregion | ||||
| case ClientFunc.GetCourseInfo: | case ClientFunc.GetCourseInfo: | ||||
| #region 获取课程表 | #region 获取课程表 | ||||
| sr.Object = getCosInfo(out sr.Final, out sr.ErrMessage); | |||||
| sr.Data = getCosInfo(out sr.Final, out sr.ErrMessage); | |||||
| break; | break; | ||||
| #endregion | #endregion | ||||
| case ClientFunc.GetSelfUserCourseInfo: | case ClientFunc.GetSelfUserCourseInfo: | ||||
| @@ -74,7 +51,7 @@ namespace StuMgmLib.MyNameSpace | |||||
| UserCourseInfoReq ucir = (UserCourseInfoReq)cr.Object; | UserCourseInfoReq ucir = (UserCourseInfoReq)cr.Object; | ||||
| UserCourseInfo uc = new UserCourseInfo(); | UserCourseInfo uc = new UserCourseInfo(); | ||||
| sr = new ServerResponse(uc); | |||||
| sr = new Response(uc); | |||||
| vrTokenFrT(ucir.Job_Id, ucir.Token, out sr.Final, out sr.ErrMessage); | vrTokenFrT(ucir.Job_Id, ucir.Token, out sr.Final, out sr.ErrMessage); | ||||
| if (!sr.Final) | if (!sr.Final) | ||||
| @@ -98,7 +75,7 @@ namespace StuMgmLib.MyNameSpace | |||||
| if (!sr.Final) | if (!sr.Final) | ||||
| break; | break; | ||||
| sr.Object = getUsrCosStatus(uciO.Status, out sr.Final, out sr.ErrMessage); | |||||
| sr.Data = getUsrCosStatus(uciO.Status, out sr.Final, out sr.ErrMessage); | |||||
| break; | break; | ||||
| #endregion | #endregion | ||||
| @@ -0,0 +1,52 @@ | |||||
| using System.IO; | |||||
| using System.Runtime.Serialization.Formatters.Binary; | |||||
| namespace StuMgmLib | |||||
| { | |||||
| class Utility | |||||
| { | |||||
| /// <summary> | |||||
| /// 序列化 | |||||
| /// </summary> | |||||
| static byte[] Serialize<T>(T c) | |||||
| { | |||||
| MemoryStream ms = new MemoryStream(); | |||||
| BinaryFormatter iFormatter = new BinaryFormatter(); | |||||
| iFormatter.Serialize(ms, c); | |||||
| byte[] buf = ms.GetBuffer(); | |||||
| return buf; | |||||
| } | |||||
| /// <summary> | |||||
| /// 反序列化 | |||||
| /// </summary> | |||||
| static T Deserialize<T>(byte[] buf) | |||||
| { | |||||
| MemoryStream ms = new MemoryStream(buf); | |||||
| BinaryFormatter iFormatter = new BinaryFormatter(); | |||||
| T obj = (T)iFormatter.Deserialize(ms); | |||||
| return obj; | |||||
| } | |||||
| } | |||||
| } | |||||
| #region QuickTable | |||||
| internal class QTInfo | |||||
| { | |||||
| public int Token; | |||||
| public Lvl Level; | |||||
| public QTInfo(int token, Lvl lv) | |||||
| { | |||||
| Token = token; | |||||
| Level = lv; | |||||
| } | |||||
| } | |||||
| public class QT // quickTable | |||||
| { | |||||
| internal const Int16 tokenMaxCount = 32767; | |||||
| internal static Dictionary<short, QTInfo> quickTable = new Dictionary<short, QTInfo>(); | |||||
| } | |||||
| #endregion | |||||