@@ -6,16 +6,24 @@ using System.Data; | |||
namespace StuMgmClient | |||
{ | |||
enum ErrCode | |||
{ | |||
Success, | |||
FailSerial, | |||
FailDeserial, | |||
FailConnect, | |||
FailSend, | |||
FailReceive, | |||
ErrData, | |||
} | |||
public enum FuncCode | |||
{ | |||
VerifLogin = 1, | |||
GetCourseInfo, | |||
GetUserCourseInfo, | |||
} | |||
public enum Roles | |||
{ | |||
NotFound = -1, | |||
@@ -25,11 +33,24 @@ namespace StuMgmClient | |||
Student = 3, | |||
} | |||
[Serializable] | |||
public class ClientRequest | |||
{ | |||
public FuncCode Func; | |||
public object Object; | |||
public ClientRequest(FuncCode func, object obj) | |||
{ | |||
Func = func; | |||
Object = obj; | |||
} | |||
} | |||
[Serializable] | |||
public class UserInfo | |||
{ | |||
public string Account; | |||
public string Password; | |||
public string Token; | |||
public Roles UserRole; | |||
public UserInfo(string account, string password) | |||
{ | |||
@@ -38,16 +59,89 @@ namespace StuMgmClient | |||
} | |||
} | |||
public class CourseInfo | |||
{ | |||
public short Id; | |||
public short Pid; | |||
public int Time; | |||
public string Name; | |||
public string Content; | |||
} | |||
[Serializable] | |||
public enum CourseStatusEnum | |||
{ | |||
lll, | |||
...// | |||
} | |||
[Serializable] | |||
public class ServerSend | |||
public class UserCourseInfo | |||
{ | |||
public short JobId;//工号 | |||
public string Name;//姓名 | |||
public string InfoDescribe;//信息描述 | |||
} | |||
/* | |||
#region 学生题目信息一览 | |||
#endregion | |||
#region 学生单题详细信息 | |||
public class HistoryInfo | |||
{ | |||
DateTime Time; | |||
string Describe; | |||
} | |||
public class DetailInfo | |||
{ | |||
public short permission { get; set; } | |||
public DataSet ds { get; set; } | |||
public short CourseId; | |||
public short JobId; | |||
List<HistoryInfo> Describes; | |||
} | |||
#endregion | |||
*/ | |||
//[Serializable] | |||
//public class ServerSend | |||
//{ | |||
// public short permission { get; set; } | |||
// public DataSet ds { get; set; } | |||
//} | |||
} | |||
@@ -56,71 +150,71 @@ namespace StuMgmClient | |||
namespace StuMgmClient | |||
{ | |||
class Data | |||
{ | |||
//状态值字符串转字典 | |||
public Dictionary<int, int> StateParsing(DataTable table) | |||
{ | |||
Dictionary<int, int> myDictionary = new Dictionary<int, int>(); | |||
ClientMysql cm = new ClientMysql(); | |||
DataSet ds = cm.SelectState(); | |||
DataRow dr = ds.Tables["user_info"].Rows[0]; | |||
string state = dr["course_status"].ToString(); | |||
int num = 0; | |||
int oldTem = 0; | |||
//切割字符串 | |||
string[] sArray = state.Split(new char[2] { ':', ';' }); | |||
foreach (string i in sArray) | |||
{ | |||
if (i.Equals("")) { break; } | |||
int tem = Convert.ToInt32(i); | |||
num++; | |||
if (num % 2 != 0) | |||
{ | |||
myDictionary.Add(tem, 0); | |||
oldTem = tem; | |||
} | |||
else | |||
{ | |||
myDictionary[oldTem] = tem; | |||
} | |||
} | |||
return myDictionary; | |||
} | |||
//字典转字符串 | |||
public string DicParsing(Dictionary<int, int> dic) | |||
{ | |||
string stateText = ""; | |||
foreach (var item in dic) | |||
{ | |||
stateText = stateText + item.Key + ":" + item.Value + ";"; | |||
} | |||
return stateText; | |||
} | |||
//查询所有子节点 | |||
public void GetAllNodes(string id, DataTable table, ref Dictionary<int, int> nodesDic) | |||
{ | |||
//把父节点的数据筛选出来 | |||
DataRow[] rows = table.Select("pid =" + id);//取根 | |||
if (rows.Length <= 0) | |||
{ | |||
nodesDic.Add(Convert.ToInt32(id), 0); | |||
return; | |||
} | |||
foreach (DataRow dr in rows) | |||
{ | |||
GetAllNodes(dr["id"].ToString(), table, ref nodesDic); | |||
} | |||
//class Data | |||
//{ | |||
// //状态值字符串转字典 | |||
// public Dictionary<int, int> StateParsing(DataTable table) | |||
// { | |||
// Dictionary<int, int> myDictionary = new Dictionary<int, int>(); | |||
// ClientMysql cm = new ClientMysql(); | |||
// DataSet ds = cm.SelectState(); | |||
// DataRow dr = ds.Tables["user_info"].Rows[0]; | |||
// string state = dr["course_status"].ToString(); | |||
// int num = 0; | |||
// int oldTem = 0; | |||
// //切割字符串 | |||
// string[] sArray = state.Split(new char[2] { ':', ';' }); | |||
// foreach (string i in sArray) | |||
// { | |||
// if (i.Equals("")) { break; } | |||
// int tem = Convert.ToInt32(i); | |||
// num++; | |||
// if (num % 2 != 0) | |||
// { | |||
// myDictionary.Add(tem, 0); | |||
// oldTem = tem; | |||
// } | |||
// else | |||
// { | |||
// myDictionary[oldTem] = tem; | |||
// } | |||
// } | |||
// return myDictionary; | |||
// } | |||
// //字典转字符串 | |||
// public string DicParsing(Dictionary<int, int> dic) | |||
// { | |||
// string stateText = ""; | |||
// foreach (var item in dic) | |||
// { | |||
// stateText = stateText + item.Key + ":" + item.Value + ";"; | |||
// } | |||
// return stateText; | |||
// } | |||
// //查询所有子节点 | |||
// public void GetAllNodes(string id, DataTable table, ref Dictionary<int, int> nodesDic) | |||
// { | |||
// //把父节点的数据筛选出来 | |||
// DataRow[] rows = table.Select("pid =" + id);//取根 | |||
// if (rows.Length <= 0) | |||
// { | |||
// nodesDic.Add(Convert.ToInt32(id), 0); | |||
// return; | |||
// } | |||
// foreach (DataRow dr in rows) | |||
// { | |||
// GetAllNodes(dr["id"].ToString(), table, ref nodesDic); | |||
// } | |||
} | |||
//获取所有子节点Dictionary | |||
public Dictionary<int, int> GetNodesDic(DataTable table) | |||
{ | |||
Dictionary<int, int> nodesDic = new Dictionary<int, int>(); | |||
GetAllNodes("0", table, ref nodesDic); | |||
return nodesDic; | |||
} | |||
} | |||
// } | |||
// //获取所有子节点Dictionary | |||
// public Dictionary<int, int> GetNodesDic(DataTable table) | |||
// { | |||
// Dictionary<int, int> nodesDic = new Dictionary<int, int>(); | |||
// GetAllNodes("0", table, ref nodesDic); | |||
// return nodesDic; | |||
// } | |||
//} | |||
} |
@@ -1,22 +1,19 @@ | |||
using System; | |||
using System.Data; | |||
using System.Net.Sockets; | |||
using System.Text.RegularExpressions; | |||
using System.Windows.Forms; | |||
using StuMgmLib.MyNameSpace; | |||
namespace StuMgmClient | |||
{ | |||
public partial class LoginForm : Form | |||
{ | |||
const string deaultIp = "10.10.0.44"; | |||
const int deaultPort = 502; | |||
public LoginForm() | |||
{ | |||
InitializeComponent(); | |||
SystemComm.Init(deaultIp, deaultPort); | |||
if(SystemData.InitSystemData()!= ErrCode.Success) | |||
throw new Exception("初始化异常,请重新启动"); | |||
} | |||
//DataSet ds = null; | |||
////账号密码正则校验 | |||
//public bool RegexUser(string u, string p) | |||
@@ -47,63 +44,40 @@ namespace StuMgmClient | |||
{ | |||
} | |||
private void btnSubmit_Click(object sender, EventArgs e) | |||
{ | |||
Login(); | |||
Roles userRole; | |||
string token; | |||
if (VerifLogin(out userRole, out token) != ErrCode.Success) | |||
return; | |||
switch (userRole) | |||
{ | |||
case Roles.Student: | |||
ShowStudentForm(token); | |||
break; | |||
default: | |||
MessageBox.Show(userRole.ToString()); | |||
break; | |||
} | |||
} | |||
//登陆方法 | |||
public void Login() | |||
ErrCode VerifLogin(out Roles userRole, out string token) | |||
{ | |||
string userName = txtUserName.Text; | |||
string pawssword = txtPassWord.Text; | |||
Info.ServerSend ss = ConnectServer(); | |||
ErrCode errcode = SystemCtrl.VerifLogin(txtUserName.Text, txtPassWord.Text, out userRole, out token); | |||
if (errcode != ErrCode.Success) | |||
MessageBox.Show(errcode.ToString()); | |||
return errcode; | |||
} | |||
////权限管理 | |||
// int powerNum = (int)ss.permission; | |||
// ds = ss.ds; | |||
// switch (powerNum) | |||
// { | |||
// case (int)Roles.Student: | |||
// StudentForm stu = new StudentForm(ds); | |||
// stu.Show(); | |||
// login.Hide(); | |||
// break; | |||
// case (int)Roles.Teacher: | |||
// TeacherForm tf = new TeacherForm(ds); | |||
// tf.Show(); | |||
// login.Hide(); | |||
// break; | |||
// case (int)Roles.Admin: | |||
// AdminForm af = new AdminForm(); | |||
// af.Show(); | |||
// login.Hide(); | |||
// break; | |||
// case (Int32)Roles.NotFound: | |||
// MessageBox.Show("账号或用户名错误", "提示"); | |||
// break; | |||
// } | |||
////登陆连接服务器 | |||
//public Info.ServerSend ConnectServer() | |||
//{ | |||
// Socket client= ClientConnect.Connect("10.10.0.44", 502); | |||
// if (client== null) | |||
// { | |||
// MessageBox.Show("连接失败", "提示"); | |||
// return null; | |||
// } | |||
// else | |||
// { | |||
// ClientConnect.Send(client); | |||
// Info.ServerSend ss = ClientConnect.Receive(client); | |||
// return ss; | |||
// } | |||
//} | |||
void ShowStudentForm(string token) | |||
{ | |||
this.Hide(); | |||
StudentForm stu = new StudentForm(token); | |||
stu.ShowDialog(); | |||
this.Show(); | |||
} | |||
} | |||
} |
@@ -275,7 +275,6 @@ | |||
this.Name = "LoginForm"; | |||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; | |||
this.Text = "信捷电气学员管理系统"; | |||
this.Load += new System.EventHandler(this.LoginForm_Load); | |||
this.tableLayoutPanel2.ResumeLayout(false); | |||
this.tableLayoutPanel2.PerformLayout(); | |||
this.tableLayoutPanel1.ResumeLayout(false); | |||
@@ -55,7 +55,7 @@ | |||
<Reference Include="System.Xml" /> | |||
</ItemGroup> | |||
<ItemGroup> | |||
<Compile Include="ClientConnect.cs"> | |||
<Compile Include="SystemComm.cs"> | |||
<SubType>Code</SubType> | |||
</Compile> | |||
<Compile Include="Data.cs" /> | |||
@@ -91,6 +91,8 @@ | |||
<Compile Include="StudentNavigation.Designer.cs"> | |||
<DependentUpon>StudentNavigation.cs</DependentUpon> | |||
</Compile> | |||
<Compile Include="SystemCtrl.cs" /> | |||
<Compile Include="SystemData.cs" /> | |||
<Compile Include="Utility.cs" /> | |||
<EmbeddedResource Include="SelectFrom.resx"> | |||
<DependentUpon>SelectFrom.cs</DependentUpon> | |||
@@ -128,12 +130,6 @@ | |||
<DesignTimeSharedInput>True</DesignTimeSharedInput> | |||
</Compile> | |||
</ItemGroup> | |||
<ItemGroup> | |||
<ProjectReference Include="..\StuMgmLib\StuMgmLib.csproj"> | |||
<Project>{34ad3363-1b1c-4f4a-898c-c1a1f215fddd}</Project> | |||
<Name>StuMgmLib</Name> | |||
</ProjectReference> | |||
</ItemGroup> | |||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> | |||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. | |||
Other similar extension points exist, see Microsoft.Common.targets. | |||
@@ -5,8 +5,6 @@ VisualStudioVersion = 12.0.30501.0 | |||
MinimumVisualStudioVersion = 10.0.40219.1 | |||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StuMgmClient", "StuMgmClient.csproj", "{95FDEE92-6C6E-41F1-A1C3-2FCDB1413781}" | |||
EndProject | |||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StuMgmLib", "..\StuMgmLib\StuMgmLib.csproj", "{34AD3363-1B1C-4F4A-898C-C1A1F215FDDD}" | |||
EndProject | |||
Global | |||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | |||
Debug|Any CPU = Debug|Any CPU | |||
@@ -17,10 +15,6 @@ Global | |||
{95FDEE92-6C6E-41F1-A1C3-2FCDB1413781}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{95FDEE92-6C6E-41F1-A1C3-2FCDB1413781}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{95FDEE92-6C6E-41F1-A1C3-2FCDB1413781}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{34AD3363-1B1C-4F4A-898C-C1A1F215FDDD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{34AD3363-1B1C-4F4A-898C-C1A1F215FDDD}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{34AD3363-1B1C-4F4A-898C-C1A1F215FDDD}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{34AD3363-1B1C-4F4A-898C-C1A1F215FDDD}.Release|Any CPU.Build.0 = Release|Any CPU | |||
EndGlobalSection | |||
GlobalSection(SolutionProperties) = preSolution | |||
HideSolutionNode = FALSE | |||
@@ -75,7 +75,6 @@ namespace StuMgmClient | |||
this.Controls.Add(this.tlpIndex); | |||
this.Name = "StudentForm"; | |||
this.Text = "学员信息"; | |||
this.Load += new System.EventHandler(this.StudentForm_Load); | |||
this.tlpIndex.ResumeLayout(false); | |||
this.ResumeLayout(false); | |||
@@ -10,19 +10,21 @@ namespace StuMgmClient | |||
{ | |||
public partial class StudentForm : Form | |||
{ | |||
public StudentForm(DataSet ds) | |||
string m_token; | |||
public StudentForm(string token) | |||
{ | |||
InitializeComponent(); | |||
//登陆身份缓存数据 | |||
studentTree.Ds= ds; | |||
m_token = token; | |||
if (SystemCtrl.RefreshUserCourseInfo(token) != ErrCode.Success) | |||
throw new Exception("获取用户信息异常,请重新启动"); | |||
} | |||
private void StudentForm_Load(object sender, EventArgs e) | |||
void GetStudentData() | |||
{ | |||
} | |||
} | |||
} |
@@ -14,102 +14,106 @@ namespace StuMgmClient | |||
{ | |||
InitializeComponent(); | |||
} | |||
//个人信息 | |||
private DataSet ds = null; | |||
public DataSet Ds | |||
{ | |||
get { return ds; } | |||
set { ds = value; } | |||
} | |||
//节点table | |||
DataTable table = null; | |||
//dataRows转化成的table | |||
DataTable tableClone = null; | |||
Data da = new Data(); | |||
private void StudentTree_Load(object sender, EventArgs e) | |||
{ | |||
dgvStudent.Visible = false; | |||
BindRoot(); | |||
//da.GetNodesDic(table); | |||
} | |||
////个人信息 | |||
//private DataSet ds = null; | |||
//public DataSet Ds | |||
//{ | |||
// get { return ds; } | |||
// set { ds = value; } | |||
//} | |||
////节点table | |||
//DataTable table = null; | |||
////dataRows转化成的table | |||
//DataTable tableClone = null; | |||
//Data da = new Data(); | |||
//private void StudentTree_Load(object sender, EventArgs e) | |||
//{ | |||
// dgvStudent.Visible = false; | |||
// BindRoot(); | |||
// //da.GetNodesDic(table); | |||
//} | |||
private void StudentTree_Load(object sender, EventArgs e) { } | |||
////添加父节点的方法 | |||
//private void BindRoot() | |||
//{ | |||
// //ClientMysql cm = new ClientMysql(); | |||
// // DataSet ds = cm.SelectNode(); | |||
// table = Ds.Tables["course_info"]; | |||
// //把父节点的数据帅选出来 | |||
// DataRow[] rows = table.Select("pid=0");//取根 | |||
// foreach (DataRow dRow in rows) | |||
// { | |||
// TreeNode rootNode = new TreeNode(); | |||
// rootNode.Tag = dRow; | |||
// rootNode.Text = dRow["name"].ToString(); | |||
// //把此节点放入树中 | |||
// StudenTree.Nodes.Add(rootNode); | |||
// //绑定子节点 | |||
// BindChildAreas(rootNode);//调用添加子节点的方法 | |||
// } | |||
//} | |||
//添加父节点的方法 | |||
private void BindRoot() | |||
{ | |||
//ClientMysql cm = new ClientMysql(); | |||
// DataSet ds = cm.SelectNode(); | |||
table = Ds.Tables["course_info"]; | |||
//把父节点的数据帅选出来 | |||
DataRow[] rows = table.Select("pid=0");//取根 | |||
foreach (DataRow dRow in rows) | |||
{ | |||
TreeNode rootNode = new TreeNode(); | |||
rootNode.Tag = dRow; | |||
rootNode.Text = dRow["name"].ToString(); | |||
//把此节点放入树中 | |||
StudenTree.Nodes.Add(rootNode); | |||
//绑定子节点 | |||
BindChildAreas(rootNode);//调用添加子节点的方法 | |||
} | |||
} | |||
//添加子节点的方法、递归绑定子区域 | |||
private void BindChildAreas(TreeNode fNode) | |||
{ | |||
DataRow dr = (DataRow)fNode.Tag;//父节点数据关联的数据行 | |||
int fAreaId = Convert.ToInt32(dr["id"]); //父节点ID | |||
DataRow[] rows1 = table.Select("pid =" + fAreaId);//子区域 | |||
if (rows1.Length == 0) //递归终止,区域不包含子区域时 | |||
{ | |||
return; | |||
} | |||
foreach (DataRow dRow in rows1) | |||
{ | |||
TreeNode node = new TreeNode(); | |||
node.Tag = dRow; | |||
node.Text = dRow["name"].ToString(); | |||
//添加子节点 | |||
fNode.Nodes.Add(node); | |||
} | |||
} | |||
//子节点单击显示内容 | |||
private void StudentTree_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) | |||
{ | |||
if (e.Button == System.Windows.Forms.MouseButtons.Left) //单击鼠标左键才响应 | |||
{ | |||
if (e.Node.Level == 1) //判断子节点才响应 | |||
{ | |||
dgvStudent.Visible = true; | |||
DataRow dr = (DataRow)e.Node.Tag; | |||
int fAreaId = Convert.ToInt32(dr["id"]); //子节点ID | |||
DataRow[] drows = table.Select("pid =" + fAreaId);//取根 | |||
tableClone = table.Clone();//克隆表结构 | |||
foreach (DataRow drr in drows) | |||
{ | |||
tableClone.ImportRow(drr); | |||
} | |||
dgvStudent.AutoGenerateColumns = false; | |||
dgvStudent.AllowUserToAddRows = false; | |||
dgvStudent.DataSource = tableClone; | |||
} | |||
} | |||
} | |||
////添加子节点的方法、递归绑定子区域 | |||
//private void BindChildAreas(TreeNode fNode) | |||
//{ | |||
// DataRow dr = (DataRow)fNode.Tag;//父节点数据关联的数据行 | |||
// int fAreaId = Convert.ToInt32(dr["id"]); //父节点ID | |||
// DataRow[] rows1 = table.Select("pid =" + fAreaId);//子区域 | |||
// if (rows1.Length == 0) //递归终止,区域不包含子区域时 | |||
// { | |||
// return; | |||
// } | |||
// foreach (DataRow dRow in rows1) | |||
// { | |||
// TreeNode node = new TreeNode(); | |||
// node.Tag = dRow; | |||
// node.Text = dRow["name"].ToString(); | |||
// //添加子节点 | |||
// fNode.Nodes.Add(node); | |||
// } | |||
//} | |||
////子节点单击显示内容 | |||
//private void StudentTree_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) | |||
private void StudentTree_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { } | |||
//我的任务_查看按钮方法 | |||
//{ | |||
// if (e.Button == System.Windows.Forms.MouseButtons.Left) //单击鼠标左键才响应 | |||
// { | |||
// if (e.Node.Level == 1) //判断子节点才响应 | |||
// { | |||
// dgvStudent.Visible = true; | |||
// DataRow dr = (DataRow)e.Node.Tag; | |||
// int fAreaId = Convert.ToInt32(dr["id"]); //子节点ID | |||
// DataRow[] drows = table.Select("pid =" + fAreaId);//取根 | |||
// tableClone = table.Clone();//克隆表结构 | |||
// foreach (DataRow drr in drows) | |||
// { | |||
// tableClone.ImportRow(drr); | |||
// } | |||
// dgvStudent.AutoGenerateColumns = false; | |||
// dgvStudent.AllowUserToAddRows = false; | |||
// dgvStudent.DataSource = tableClone; | |||
// } | |||
// } | |||
//} | |||
private void DgvStudent_CellContentClick(object sender, DataGridViewCellEventArgs e) | |||
{ | |||
if (e.ColumnIndex == 1 && e.RowIndex != -1) | |||
{ | |||
//Dictionary<int, int> stateDic = da.StateParsing(table); | |||
Dictionary<int, int> stateDic = da.GetNodesDic(table); | |||
// string s=da.DicParsing(stateDic); | |||
DataRow drViews = tableClone.Rows[e.RowIndex]; | |||
int state = stateDic[Convert.ToInt32((drViews["id"]))]; | |||
SelectFrom sf = new SelectFrom(drViews, state); | |||
//string test = da.DicParsing(stateDic); | |||
sf.ShowDialog(); | |||
// ShowData(); | |||
} | |||
} | |||
{ } | |||
////我的任务_查看按钮方法 | |||
//private void DgvStudent_CellContentClick(object sender, DataGridViewCellEventArgs e) | |||
//{ | |||
// if (e.ColumnIndex == 1 && e.RowIndex != -1) | |||
// { | |||
// //Dictionary<int, int> stateDic = da.StateParsing(table); | |||
// Dictionary<int, int> stateDic = da.GetNodesDic(table); | |||
// // string s=da.DicParsing(stateDic); | |||
// DataRow drViews = tableClone.Rows[e.RowIndex]; | |||
// int state = stateDic[Convert.ToInt32((drViews["id"]))]; | |||
// SelectFrom sf = new SelectFrom(drViews, state); | |||
// //string test = da.DicParsing(stateDic); | |||
// sf.ShowDialog(); | |||
// // ShowData(); | |||
// } | |||
//} | |||
} | |||
} |
@@ -1,37 +1,40 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Diagnostics; | |||
using System.Net; | |||
using System.Net.Sockets; | |||
namespace StuMgmClient | |||
{ | |||
class Comm | |||
class SystemComm | |||
{ | |||
#region 基本函数 | |||
const int bufSize = 1024 * 1024; | |||
static IPEndPoint m_ipEndpoint; | |||
static Socket m_socket; | |||
static byte[] m_buf; | |||
void Init(string ip,int port) | |||
internal static void Init(string ip, int port) | |||
{ | |||
IPAddress ipAdress = IPAddress.Parse(ip); | |||
m_ipEndpoint = new IPEndPoint(ipAdress, port); | |||
m_buf = new byte[bufSize]; | |||
} | |||
void Connect() | |||
static bool Connect() | |||
{ | |||
try | |||
{ | |||
m_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); | |||
m_socket.Connect(m_ipEndpoint); | |||
return m_socket.Connected; | |||
} | |||
catch (Exception ex) | |||
{ | |||
Debug.Print(ex.Message); | |||
return false; | |||
} | |||
} | |||
bool Send(byte[] data) | |||
static bool Send(byte[] data) | |||
{ | |||
try | |||
{ | |||
@@ -44,7 +47,7 @@ namespace StuMgmClient | |||
return false; | |||
} | |||
} | |||
bool Receive() | |||
static bool Receive() | |||
{ | |||
try | |||
{ | |||
@@ -58,42 +61,35 @@ namespace StuMgmClient | |||
return false; | |||
} | |||
} | |||
void DisConnect() | |||
static void DisConnect() | |||
{ | |||
client.Close(); | |||
m_socket.Close(); | |||
} | |||
#endregion | |||
internal ErrCode VerifLogin(string userName,string pawssword,out Roles role) | |||
internal static ErrCode GetData(ClientRequest req,out object o) | |||
{ | |||
role = Roles.Error; | |||
Connect(); | |||
UserInfo cs = new UserInfo(userName,pawssword); | |||
o = null; | |||
if (!Connect()) | |||
return ErrCode.FailConnect; | |||
byte[] sendBuf; | |||
if(Utility.BinSerialize(cs,out sendBuf )) | |||
if (!Utility.BinSerialize(req, out sendBuf)) | |||
return ErrCode.FailSerial; | |||
if (Send(sendBuf)) | |||
if (!Send(sendBuf)) | |||
return ErrCode.FailSend; | |||
if (Receive()) | |||
if (!Receive()) | |||
return ErrCode.FailReceive; | |||
object o; | |||
if (Utility.BinDeserialize(m_buf, out o)) | |||
return ErrCode.FailDeserial; | |||
if (!(o is UserInfo)) | |||
return ErrCode.ErrData; | |||
DisConnect(); | |||
role = ((UserInfo)o).UserRole; | |||
if (!Utility.BinDeserialize(m_buf, out o)) | |||
return ErrCode.FailDeserial; | |||
return ErrCode.Success; | |||
} | |||
} | |||
} | |||
@@ -0,0 +1,88 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace StuMgmClient | |||
{ | |||
class SystemCtrl | |||
{ | |||
internal static ErrCode VerifLogin(string userName, string pawssword, out Roles role, out string token) | |||
{ | |||
role = Roles.Error; | |||
token = string.Empty; | |||
UserInfo cs = new UserInfo(userName, pawssword); | |||
ClientRequest req = new ClientRequest(FuncCode.VerifLogin, cs); | |||
object o; | |||
ErrCode err = SystemComm.GetData(req, out o); | |||
if (err != ErrCode.Success) | |||
return err; | |||
if (!(o is UserInfo)) | |||
return ErrCode.ErrData; | |||
role = ((UserInfo)o).UserRole; | |||
token = ((UserInfo)o).Token; | |||
return ErrCode.Success; | |||
} | |||
internal static ErrCode GetCourseInfo(out List<CourseInfo> courseInfo) | |||
{ | |||
courseInfo = null; | |||
ClientRequest req = new ClientRequest(FuncCode.VerifLogin, null); | |||
object o; | |||
ErrCode err = SystemComm.GetData(req, out o); | |||
if (err != ErrCode.Success) | |||
return err; | |||
if (!(o is List<CourseInfo>)) | |||
return ErrCode.ErrData; | |||
courseInfo = (List<CourseInfo>)o; | |||
return ErrCode.Success; | |||
} | |||
internal static ErrCode RefreshUserCourseInfo(string token) | |||
{ | |||
UserCourseInfo info; | |||
ErrCode err; | |||
err = GetUserCourseInfo(token, out info); | |||
if (err != ErrCode.Success) | |||
return err; | |||
err = SystemData.RefreshUserCourseInfo(info); | |||
if (err != ErrCode.Success) | |||
return err; | |||
return ErrCode.Success; | |||
} | |||
static ErrCode GetUserCourseInfo(string token ,out UserCourseInfo info) | |||
{ | |||
info = null; | |||
ClientRequest req = new ClientRequest(FuncCode.GetUserCourseInfo, token); | |||
object o; | |||
ErrCode err = SystemComm.GetData(req, out o); | |||
if (err != ErrCode.Success) | |||
return err; | |||
if (!(o is UserCourseInfo)) | |||
return ErrCode.ErrData; | |||
info = (UserCourseInfo)o; | |||
return ErrCode.Success; | |||
} | |||
} | |||
} |
@@ -0,0 +1,40 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace StuMgmClient | |||
{ | |||
class SystemData | |||
{ | |||
static Dictionary<short, CourseInfo> allCourseInfo; | |||
static Dictionary<short,CourseStatusEnum> allCourseStatus; | |||
internal static ErrCode InitSystemData() | |||
{ | |||
ErrCode err; | |||
err = InitCourseInfo(); | |||
if (err != ErrCode.Success) | |||
return err; | |||
return ErrCode.Success; | |||
} | |||
static ErrCode InitCourseInfo() | |||
{ | |||
ErrCode err; | |||
List<CourseInfo> courseInfo; | |||
err = SystemCtrl.GetCourseInfo(out courseInfo); | |||
if (err != ErrCode.Success) | |||
return err; | |||
...//将List<CourseInfo>转为Dictionary<short, CourseInfo> | |||
return ErrCode.Success; | |||
} | |||
internal static ErrCode RefreshUserCourseInfo(UserCourseInfo info) | |||
{ | |||
...//将UserCourseInfo转为Dictionary<short,CourseStatusEnum> | |||
return ErrCode.Success; | |||
} | |||
} | |||
} |