录播教室预约系统(五)-用户登陆
来源:互联网 发布:php工程师简历 编辑:程序博客网 时间:2024/04/29 09:46
客户端登陆界面如下:
客户端代码:
Program.cs 中 //在全局处理函数中忽略相关消息 不添加日志 NetworkComms.IgnoreUnknownPacketTypes = true; ConnectionInfo connInfo = new ConnectionInfo("127.0.0.1", 2539); Connection newTcpConnection = TCPConnection.GetConnection(connInfo); //连接服务器完成****************************************** //初始化主窗口 MainForm mainForm = new MainForm(); //显示登录窗口 frmLogin loginForm = new frmLogin(applicationName, mainForm, newTcpConnection); //根据登陆窗口返回的信息,打开主窗口,或者是注册窗口 if (loginForm.ShowDialog() == DialogResult.OK) { if(loginForm.Register == 5) { Application.Run(mainForm); } else { Register newRegister = new Register(); newRegister.Initialize(newTcpConnection); Application.Run(newRegister); } }
登陆窗口中的登陆按钮相关代码
private void btnLogin_Click(object sender, EventArgs e) { // 如果通过输入验证 if (UserInputCheck()) { try { // 保存登录身份是否合法验证结果 bool isPass = false; Users theUser = new Users(); theUser.UserID = txtLoginName.Text.Trim(); theUser.Password = txtUserPwd.Text.Trim(); //发送当前登陆用户的信息给服务器,并从服务器获取返回的信息 LoginResult loginResult = newTcpConnection.SendReceiveObject<LoginResult>("Login", "LoginResult", 5000, theUser); if (loginResult.Message=="登录成功") { //记录用户名 netConfiguration.UserID = theUser.UserID; netConfiguration.Save(); //初始化主窗口中的属性 theUser.Department = loginResult.Department; theUser.Name = loginResult.UserName; mainForm.InitiaLize(this.newTcpConnection, theUser); // 标识验证通过 isPass = true; Register = 5; this.DialogResult = DialogResult.OK; } // 如果未通过验证 if (!isPass) { MessageBox.Show(loginResult.Message); } } catch (Exception ex) { ShowLoginLostToolTip(ex); } } }
User.cs实体类代码:
[ProtoContract] public class Users { #region Constructors public Users() { } #endregion #region Private Properties private int id = -1; private string userID = string.Empty; private string name = string.Empty; private string password = string.Empty; private string declaring = string.Empty; private int status = -1; private bool isMale = false; private int userLevel = -1; private bool enabled = false; private DateTime registerTime = DateTime.UtcNow; private DateTime lastLoginTime = DateTime.UtcNow; private int depID = -1; private string department = string.Empty; #endregion #region Public Properties [ProtoMember(1)] public int Id { get { return id; } set { id = value; } } [ProtoMember(2)] public string UserID { get { return userID; } set { userID = value; } } [ProtoMember(3)] public string Name { get { return name; } set { name = value; } } [ProtoMember(4)] public string Password { get { return password; } set { password = value; } } [ProtoMember(5)] public string Declaring { get { return declaring; } set { declaring = value; } } [ProtoMember(6)] public int Status { get { return status; } set { status = value; } } [ProtoMember(7)] public bool IsMale { get { return isMale; } set { isMale = value; } } [ProtoMember(8)] public int UserLevel { get { return userLevel; } set { userLevel = value; } } [ProtoMember(9)] public bool Enabled { get { return enabled; } set { enabled = value; } } [ProtoMember(10)] public DateTime RegisterTime { get { return registerTime; } set { registerTime = value; } } [ProtoMember(11)] public DateTime LastLoginTime { get { return lastLoginTime; } set { lastLoginTime = value; } } [ProtoMember(12)] public int DepID { get { return depID; } set { depID = value; } } [ProtoMember(13)] public string Department { get { return department; } set { department = value; } } #endregion }
服务器端程序的处理代码:
在服务器端构造函数中声明针对登陆操作的处理器:
//用户验证处理器 NetworkComms.AppendGlobalIncomingPacketHandler<Users>("Login", HandleUserVerify);
//用户登录验证 private void HandleUserVerify(PacketHeader header, Connection connection, Users theUser) { LoginResult loginResult = new LoginResult(); Users currentUser = DoUsers.GetUserByID(theUser.UserID); string message; if (currentUser != null) { if (currentUser.Password == theUser.Password) message = "登录成功"; else if (currentUser.Password == "msdcmsdcmsdcmsdcmsdc") message = "用户未开通,请与管理员联系"; else if (currentUser.Password != theUser.Password) message = "用户名密码不匹配"; else message = "登录不成功,原因未知"; } else { message = "用户不存在"; } loginResult.Message = message; loginResult.Department = currentUser.Department; loginResult.UserName = currentUser.Name; connection.SendObject("LoginResult", loginResult); }
[ProtoContract] public class LoginResult { [ProtoMember(1)] public string Message { get; set; } [ProtoMember(2)] public string Department { get; set; } [ProtoMember(3)] public string UserName { get; set; } public LoginResult() { } public LoginResult(string message) { this.Message = message; } public LoginResult(string message,string department) { this.Message = message; this.Department = department; } public LoginResult(string message, string department,string userName) { this.Message = message; this.Department = department; this.UserName = userName; } }
DoUsers类中相关方法
public static Users GetUserByID(string userID) { using (IDataReader reader = DBUsers.GetOneByUserID(userID)) { Users theUser = PopulateFromReader(reader); return theUser; } }
private static Users PopulateFromReader(IDataReader reader) { Users Users = new Users(); if (reader.Read()) { Users.Id = Convert.ToInt32(reader["Id"]); Users.UserID = reader["UserID"].ToString(); Users.Name = reader["Name"].ToString(); Users.Password = reader["Password"].ToString(); Users.Declaring = reader["Declaring"].ToString(); Users.Status = Convert.ToInt32(reader["Status"]); Users.IsMale = Convert.ToBoolean(reader["IsMale"]); Users.UserLevel = Convert.ToInt32(reader["UserLevel"]); Users.Enabled = Convert.ToBoolean(reader["Enabled"]); Users.RegisterTime = Convert.ToDateTime(reader["RegisterTime"]); Users.LastLoginTime = Convert.ToDateTime(reader["LastLoginTime"]); Users.DepID = Convert.ToInt32(reader["DepID"]); Users.Department = reader["Department"].ToString(); } return Users; }
DBUsers类中相关方法
//根据UserID获取记录 public static IDataReader GetOneByUserID(string userID) { SqlParameterHelper sph = new SqlParameterHelper(GetReadConnectionString(), "Users_SelectOneByUserID", 1); sph.DefineSqlParameter("@UserID", SqlDbType.NVarChar, 200, ParameterDirection.Input, userID); return sph.ExecuteReader(); }
数据库中相关的存储过程
CREATE PROCEDURE [dbo].Users_SelectOneByUserID @UserID nvarchar(100)ASSELECT [Id], [UserID], [Name], [Password], [Declaring], [Status], [IsMale], [UserLevel], [Enabled], [RegisterTime], [LastLoginTime], [DepID], [Department] FROM [dbo].[Users] WHERE UserID=@UserID
0 0
- 录播教室预约系统(五)-用户登陆
- 录播教室预约系统序言
- 录播教室预约系统(一)-数据库表
- 录播教室预约系统(六)-注册新用户
- 录播教室预约系统(八)-客户端部门管理员增加教室
- 录播教室预约系统(二)-服务器端与数据库的交互
- 录播教室预约系统(三)-DepTable表[普通表]
- 录播教室预约系统(七)-客户端更改密码
- 录播教室预约系统(九)-客户端部门管理员设定教室的预约规则
- 录播教室预约系统(十一)-客户端获取本单位的所有教室
- 录播教室预约系统(四)-ClassRoom表[带有外键的表]
- 录播教室预约系统(十)-客户端部门管理员重置本单位其他人员密码
- 教室预约系统,求大神帮忙!!
- 功能教室预约系统开源下载(c#源码)
- 二分-预约教室
- 关于录播教室的几点担心
- Python模拟登陆4:进入图书馆预约系统查看是否预约成功
- 统一用户登陆系统
- JS学习之----闭包
- OpenJWeb与K学团结成战略合作关系
- 录播教室预约系统(三)-DepTable表[普通表]
- 录播教室预约系统(四)-ClassRoom表[带有外键的表]
- 复习Properties类的一些知识
- 录播教室预约系统(五)-用户登陆
- 小识三层
- 黑马程序员------Foundation框架------OC集合类的操作
- Leopard开发约定
- Python篇----基础知识(供查询)
- 最短路:Dijkstra算法和Floyd算法
- 录播教室预约系统(六)-注册新用户
- JQuery总结
- URAL 1142. Relations(dp啊)