機房重構 — 註冊

  最近在學“機房重構” 做一個網吧系統的開始首先是登錄,然後再是註冊(我的順序是這樣的)。

那麼,接下來我來總結下機房重構 — 註冊窗體設計和代碼(完整)。

 

1.窗體:

2.代碼

(1).Entity(實體層)

    public class UserEntity
    {

        public string UserID { set; get; }

        public string UserName { set; get; }

        public string Password { set; get; }

        public string Level { set; get; }

        public string State { set; get; }

        public string Sex { set; get; }

        public decimal Cash { set; get; }

        public DateTime Date { set; get; }

        public DateTime Time { set; get; }

        public string WrokrName { set; get; }
        
    
    }

2.IDAL層(接口層)

 //定義註冊時查詢和添加學生信息的接口
    public interface IStuIDAL                    
    {

        DataTable SelectStu(Entity.UserEntity UserID);    //查詢ID是否存在
        int AddUser(Entity.UserEntity user);      //添加用戶到User表
                                                    
      
    }

3.DAL

public int AddUser(Entity.UserEntity userinfo)
        {
            SQLHeIper sqlHeIper = new SQLHeIper();

           

            SqlParameter[] sqlParams = new SqlParameter[]
            {
                new SqlParameter("@UserID",userinfo.UserID),
                new SqlParameter("@PWD",userinfo.Password),
                new SqlParameter("@UserName",userinfo.UserName),
                new SqlParameter("@Level",userinfo.Level),
                new SqlParameter("@State",userinfo.State),
                new SqlParameter("@Cash",userinfo.Cash),
                new SqlParameter("@Sex",userinfo.Sex),
                new SqlParameter("Date",userinfo.Date),
                new SqlParameter("Time",userinfo.Time),
            };

            string sql = "INSERT INTO User_Info(UserID,PWD,UserName,Level,State,Cash,Sex,Date,Time)Values(@UserID,@PWD,@UserNam
 e,@Level,@State,@Cash,@Sex,@Date,@Time)";

            int result = sqlHeIper.ExecuteNonQuery(sql, sqlParams, CommandType.Text);
            return result;
        }

(3)BLL(邏輯業務層)

//註冊
    public class RegisterBLL
    {
        
        //查詢卡號是否被註冊
        public DataTable SelectStuBLL(Entity.UserEntity StuInfo)
        {
            Factory.LogFactory fact = new Factory.LogFactory();   //實例化工廠層

            IDAL.IStuIDAL idal = fact.Loguser();

            //接收D層的返回值
            DataTable table = idal.SelectStu(StuInfo);

            return table;

        }
        
        //把用戶添加到User_info表中
        public int AddUserBLL(Entity.UserEntity user)
        {
            Factory.LogFactory fact = new LogFactory();   //實例化工廠
            IDAL.IStuIDAL idal = fact.Loguser();  //調用工廠方法創建接口
            int result = idal.AddUser(user);
            return result;
        }
    }

(5)Factory(工廠層)


    //註冊
    public class LogFactory
    {
        string StrDB = System.Configuration.ConfigurationManager.AppSettings["DB"];
        public IStuIDAL Loguser()
        {
            // DAL層的類名
            string ClassName = StrDB + "." + "StuDAL";

            return (IDAL.IStuIDAL)Assembly.Load(StrDB).CreateInstance(ClassName);   //反射加工廠的應用
            
        }
    }

(6)Facade(外觀層)

public class RegisterFacade
    {
        //註冊
        //用戶表user_info
        public DataTable SelectFacade(Entity.UserEntity user)
        {
            DataTable flag;
            BLL.RegisterBLL selectUser = new RegisterBLL();
            flag = selectUser.SelectStuBLL(user);
            return flag;
        }
        //用戶表User_info增加
        public int AddFacade(Entity.UserEntity add)
        {
            int flag;
            BLL.RegisterBLL adduser = new RegisterBLL();
            flag = adduser.AddUserBLL(add);
            return flag;

        }
    }

(7)UI

private void Button1_Click(object sender, EventArgs e)
        {
       
            if (txtCard.Text.Trim() == "" || txtLevel.Text.Trim() == "" || txtName.Text.Trim() == "" || comState.Text.Trim() == ""|| txtLevel.Text.Trim() == "" || comSex.Text.Trim() == "" || txtCash.Text.Trim() == "")
            {
                MessageBox.Show("請將信息填寫完整", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }         
            
            if (Convert.ToInt32(txtCash.Text.Trim()) < 10)
            {
                MessageBox.Show("臨時用戶充值額度不能低於10元!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;   //否則返回
            }

            if (txtLevel.Text == "VIP用戶")
            {
                if (Convert.ToInt32(txtCash.Text.Trim()) < 30)
                {
                        MessageBox.Show("VIP用戶充值額度不能低於30元!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        return;   //否則返回
                }
            }

            
       
            //判斷用戶是否存在
            //實例化外觀層
            Facade.RegisterFacade facade = new Facade.RegisterFacade();
            Entity.UserEntity user = new Entity.UserEntity();
            user.UserID = Convert.ToString(txtCard.Text.Trim());   //判斷卡號是否存在
            DataTable table = facade.SelectFacade(user);

            if (table.Rows.Count !=0)
            {
                MessageBox.Show("此小主已存在", "溫馨提示");
            }
            else
            {
                //將輸入的數據存儲到“實體層中”
                //開始添加信息到“學生表”中。
                user.UserID = Convert.ToString(txtCard.Text.Trim()) ;
                user.UserName = txtName.Text.Trim();
                user.Password = txtPassword.Text.Trim();
                user.Level = txtLevel.Text.Trim();
                user.Sex = comSex.Text.Trim();
                user.Cash = Convert.ToDecimal(txtCash.Text.Trim());
                user.State = "未結賬";
                user.Date = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd").Trim());   //日期
                user.Time = Convert.ToDateTime(DateTime.Now.ToString("HH:mm:ss").Trim());   //時間

                //調用外觀層方法提示註冊成功
                facade.AddFacade(user);
                MessageBox.Show("註冊成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); 

            }

            //判斷是否註冊成功
            
                      
        }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章