预约系统中,新用户可以自己注册,然后管理员开通。
注册界面如下:
客户端新用户注册代码:
private void button1_Click(object sender, EventArgs e) { if(txtUserID.Text.Trim ()==""|| txtUserName.Text.Trim ()=="") { MessageBox.Show ("用户名ID 和用户名不能为空"); return ; } //声明一个用户类 Users registerUser = new Users(); registerUser.UserID = txtUserID.Text.Trim(); registerUser.Name = txtUserName.Text.Trim(); registerUser.Department = cmbSchoolList.Text; //声明一个初始密码,如果用户用此密码登陆,服务器可识别为未开通用户 registerUser.Password = "msdcmsdcmsdcmsdcmsdc"; //把实体类发送个客户端,并获取返回的结果 ResMessage resMessage = newTcpConnection.SendReceiveObject<ResMessage>("ReqRegUser", "ResRegUser", 5000, registerUser); if (resMessage.Message == "操作成功") { MessageBox.Show("新用户注册成功,请等待学校管理员审核,审核通过后初始密码为 123456"); this.Close(); } else { MessageBox.Show("出现错误,错误信息为:" + resMessage.Message); } }
服务器端的相关处理代码:
构造函数中声明:
//注册新用户 NetworkComms.AppendGlobalIncomingPacketHandler<Users>("ReqRegUser", HandlRegUser);
处理方法
private void HandlRegUser(PacketHeader header, Connection connection, Users Users) { string userID = Users.UserID; Users oldUser =DoUsers.GetUserByID(userID); // =-1代表不存在相关记录 if (oldUser.Id == -1) { DoUsers.Save(Users); ResMessage resMessage = new ResMessage("操作成功"); connection.SendObject("ResRegUser", resMessage); } else { ResMessage resMessage = new ResMessage("用户ID已经存在"); connection.SendObject("ResRegUser", resMessage); } }
DoUsers.GetUserByID方法
public static Users GetUserByID(string userID) { using (IDataReader reader = DBUsers.GetOneByUserID(userID)) { Users theUser = PopulateFromReader(reader); return theUser; } }
DoUsers中的Save方法
public static bool Save(Users Users) { if (Users.Id > 0) { return Update(Users); } else { return Create(Users); } }
Update和Create方法
private static bool Create(Users Users) { int newID = 0; newID = DBUsers.Create( Users.UserID, Users.Name, Users.Password, Users.Declaring, Users.Status, Users.IsMale, Users.UserLevel, Users.Enabled, Users.RegisterTime, Users.LastLoginTime, Users.DepID, Users.Department); Users.Id = newID; return (newID > 0); } /// <summary> /// Updates this instance of Users. Returns true on success. /// </summary> /// <returns>bool</returns> private static bool Update(Users Users) { return DBUsers.Update( Users.Id, Users.UserID, Users.Name, Users.Password, Users.Declaring, Users.Status, Users.IsMale, Users.UserLevel, Users.Enabled, Users.RegisterTime, Users.LastLoginTime, Users.DepID, Users.Department); }
DBUsers类
public static class DBUsers { /// <summary> /// Gets the connection string for read. /// </summary> /// <returns></returns> private static string GetReadConnectionString() { return ConfigurationManager.AppSettings["MSSQLConnectionString"]; } /// <summary> /// Gets the connection string for write. /// </summary> /// <returns></returns> private static string GetWriteConnectionString() { if (ConfigurationManager.AppSettings["MSSQLWriteConnectionString"] != null) { return ConfigurationManager.AppSettings["MSSQLWriteConnectionString"]; } return ConfigurationManager.AppSettings["MSSQLConnectionString"]; } /// <summary> /// Inserts a row in the RcUsers table. Returns new integer id. /// </summary> /// <param name="userID"> userID </param> /// <param name="name"> name </param> /// <param name="password"> password </param> /// <param name="declaring"> declaring </param> /// <param name="status"> status </param> /// <param name="isMale"> isMale </param> /// <param name="userLevel"> userLevel </param> /// <param name="enabled"> enabled </param> /// <param name="registerTime"> registerTime </param> /// <param name="lastLoginTime"> lastLoginTime </param> /// <param name="depID"> depID </param> /// <param name="department"> department </param> /// <returns>int</returns> public static int Create( string userID, string name, string password, string declaring, int status, bool isMale, int userLevel, bool enabled, DateTime registerTime, DateTime lastLoginTime, int depID, string department) { SqlParameterHelper sph = new SqlParameterHelper(GetWriteConnectionString(), "Users_Insert", 12); sph.DefineSqlParameter("@UserID", SqlDbType.NVarChar, 200, ParameterDirection.Input, userID); sph.DefineSqlParameter("@Name", SqlDbType.NVarChar, 200, ParameterDirection.Input, name); sph.DefineSqlParameter("@Password", SqlDbType.NVarChar, 200, ParameterDirection.Input, password); sph.DefineSqlParameter("@Declaring", SqlDbType.NVarChar, 200, ParameterDirection.Input, declaring); sph.DefineSqlParameter("@Status", SqlDbType.Int, ParameterDirection.Input, status); sph.DefineSqlParameter("@IsMale", SqlDbType.Bit, ParameterDirection.Input, isMale); sph.DefineSqlParameter("@UserLevel", SqlDbType.Int, ParameterDirection.Input, userLevel); sph.DefineSqlParameter("@Enabled", SqlDbType.Bit, ParameterDirection.Input, enabled); sph.DefineSqlParameter("@RegisterTime", SqlDbType.DateTime, ParameterDirection.Input, registerTime); sph.DefineSqlParameter("@LastLoginTime", SqlDbType.DateTime, ParameterDirection.Input, lastLoginTime); sph.DefineSqlParameter("@DepID", SqlDbType.Int, ParameterDirection.Input, depID); sph.DefineSqlParameter("@Department", SqlDbType.NVarChar, 100, ParameterDirection.Input, department); int newID = Convert.ToInt32(sph.ExecuteScalar()); return newID; } /// <summary> /// Updates a row in the RcUsers table. Returns true if row updated. /// </summary> /// <param name="id"> id </param> /// <param name="userID"> userID </param> /// <param name="name"> name </param> /// <param name="password"> password </param> /// <param name="declaring"> declaring </param> /// <param name="status"> status </param> /// <param name="isMale"> isMale </param> /// <param name="userLevel"> userLevel </param> /// <param name="enabled"> enabled </param> /// <param name="registerTime"> registerTime </param> /// <param name="lastLoginTime"> lastLoginTime </param> /// <param name="depID"> depID </param> /// <param name="department"> department </param> /// <returns>bool</returns> public static bool Update( int id, string userID, string name, string password, string declaring, int status, bool isMale, int userLevel, bool enabled, DateTime registerTime, DateTime lastLoginTime, int depID, string department) { SqlParameterHelper sph = new SqlParameterHelper(GetWriteConnectionString(), "Users_Update", 13); sph.DefineSqlParameter("@Id", SqlDbType.Int, ParameterDirection.Input, id); sph.DefineSqlParameter("@UserID", SqlDbType.NVarChar, 200, ParameterDirection.Input, userID); sph.DefineSqlParameter("@Name", SqlDbType.NVarChar, 200, ParameterDirection.Input, name); sph.DefineSqlParameter("@Password", SqlDbType.NVarChar, 200, ParameterDirection.Input, password); sph.DefineSqlParameter("@Declaring", SqlDbType.NVarChar, 200, ParameterDirection.Input, declaring); sph.DefineSqlParameter("@Status", SqlDbType.Int, ParameterDirection.Input, status); sph.DefineSqlParameter("@IsMale", SqlDbType.Bit, ParameterDirection.Input, isMale); sph.DefineSqlParameter("@UserLevel", SqlDbType.Int, ParameterDirection.Input, userLevel); sph.DefineSqlParameter("@Enabled", SqlDbType.Bit, ParameterDirection.Input, enabled); sph.DefineSqlParameter("@RegisterTime", SqlDbType.DateTime, ParameterDirection.Input, registerTime); sph.DefineSqlParameter("@LastLoginTime", SqlDbType.DateTime, ParameterDirection.Input, lastLoginTime); sph.DefineSqlParameter("@DepID", SqlDbType.Int, ParameterDirection.Input, depID); sph.DefineSqlParameter("@Department", SqlDbType.NVarChar, 100, ParameterDirection.Input, department); int rowsAffected = sph.ExecuteNonQuery(); return (rowsAffected > 0); } /// <summary> /// Deletes a row from the RcUsers table. Returns true if row deleted. /// </summary> /// <param name="id"> id </param> /// <returns>bool</returns> public static bool Delete( int id) { SqlParameterHelper sph = new SqlParameterHelper(GetWriteConnectionString(), "Users_Delete", 1); sph.DefineSqlParameter("@Id", SqlDbType.Int, ParameterDirection.Input, id); int rowsAffected = sph.ExecuteNonQuery(); return (rowsAffected > 0); } /// <summary> /// Gets an IDataReader with one row from the RcUsers table. /// </summary> /// <param name="id"> id </param> public static IDataReader GetOne( int id) { SqlParameterHelper sph = new SqlParameterHelper(GetReadConnectionString(), "Users_SelectOne", 1); sph.DefineSqlParameter("@Id", SqlDbType.Int, ParameterDirection.Input, id); return sph.ExecuteReader(); } //根据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(); } /// <summary> /// Gets an IDataReader with some list row from the RcUsers table. /// </summary> /// <param name="id"> id </param> public static IDataReader GetTopList( int id) { SqlParameterHelper sph = new SqlParameterHelper(GetReadConnectionString(), "Users_SelectTopList", 1); sph.DefineSqlParameter("@pid", SqlDbType.Int, ParameterDirection.Input, id); return sph.ExecuteReader(); } //根据用户单位获取本单位所有用户 public static IDataReader GetListByDep(string department) { SqlParameterHelper sph = new SqlParameterHelper(GetReadConnectionString(), "Users_SelectListByDep", 1); sph.DefineSqlParameter("@Department", SqlDbType.NVarChar, 100, ParameterDirection.Input, department); return sph.ExecuteReader(); } //根据用户单位获取本单位所有用户 新注册 public static IDataReader GetNewListByDep(string department) { SqlParameterHelper sph = new SqlParameterHelper(GetReadConnectionString(), "Users_SelectNewListByDep", 1); sph.DefineSqlParameter("@Department", SqlDbType.NVarChar, 100, ParameterDirection.Input, department); return sph.ExecuteReader(); } /// <summary> /// Gets a count of rows in the RcUsers table. /// </summary> public static int GetCount() { return Convert.ToInt32(SqlHelper.ExecuteScalar( GetReadConnectionString(), CommandType.StoredProcedure, "Users_GetCount", null)); } /// <summary> /// Gets a Listcount of rows in the RcUsers table. /// </summary> public static int GetListCount(int pid) { SqlParameter theSqlParameter = new SqlParameter("@Pid", pid); return Convert.ToInt32(SqlHelper.ExecuteScalar( GetReadConnectionString(), CommandType.StoredProcedure, "Users_GetListCount", theSqlParameter)); } /// <summary> /// Gets an IDataReader with all rows in the RcUsers table. /// </summary> public static IDataReader GetAll() { return SqlHelper.ExecuteReader( GetReadConnectionString(), CommandType.StoredProcedure, "Users_SelectAll", null); } /// <summary> /// Gets a page of data from the RcUsers table. /// </summary> /// <param name="pageNumber">The page number.</param> /// <param name="pageSize">Size of the page.</param> /// <param name="totalPages">total pages</param> public static IDataReader GetPage( int pageNumber, int pageSize, out int itemCount) { itemCount = GetCount(); SqlParameterHelper sph = new SqlParameterHelper(GetReadConnectionString(), "Users_SelectPage", 2); sph.DefineSqlParameter("@PageNumber", SqlDbType.Int, ParameterDirection.Input, pageNumber); sph.DefineSqlParameter("@PageSize", SqlDbType.Int, ParameterDirection.Input, pageSize); return sph.ExecuteReader(); } public static IDataReader GetListPage( int pageNumber, int pageSize, int pid, out int itemCount) { itemCount = GetListCount(pid); SqlParameterHelper sph = new SqlParameterHelper(GetReadConnectionString(), "Users_SelectListPage", 3); sph.DefineSqlParameter("@PageNumber", SqlDbType.Int, ParameterDirection.Input, pageNumber); sph.DefineSqlParameter("@PageSize", SqlDbType.Int, ParameterDirection.Input, pageSize); sph.DefineSqlParameter("@pid", SqlDbType.Int, ParameterDirection.Input, pid); return sph.ExecuteReader(); } }