c#机房重构修改密码与继承

前言:
根据标题大家应该能大概能猜测到,下面我要分享的内容了吧! 没错,就是在修改密码的时候利用继承。做到修改密码这个功能只写一遍,但是你能在多个窗体使用(包括控件)。当然大家看到这肯定有的丈二和尚摸不着头的感觉,大家别着急继续往下看。是有前提条件的!
前提条件:
在vb版机房收费系统,没有根据不同的级别显示不同的窗体。只是简单的分了下权限而已。所以修改密码这个功能只写一遍就可以了。
现在重构版是根据不同的级别显示不同的窗体。这时虽然修改密码和查询密码,用的都是同一个数据表。但是窗体控件和方法调用还得手写三遍,这个时候利用继承。就可以把第一个修改密码的窗功能完成继承过来,只有在调用这个窗体的时候。单例模式需要从新写之外,其他的都不需要从新写。(这个相当于使用了模板方法,模板方法就是制造一个共同的模板。具有和模板相同功能的窗体,都可以使用这个模板)

好了理论到此结束!
代码实现:
模板
在这里插入图片描述
确定命令按钮代码

  #region 判断新密码框是否有内容
            if (newpwd1.Text=="" && newpwd2.Text == "")
            {
                newpwd1.CausesValidation = true;
                MessageBox.Show("新密码不能为空");
            }
            else
            {
                //判断新密码和确认密码是否一致
                if (newpwd1.Text == newpwd2.Text)
                {
                    #region 密码的查询与更新
                    //实例化学生
                    UserLevel student = new UserLevel();
                    //给学生卡号,密码赋值
                    //通过UserLevel.UserIdALL全局变量来锁定用户。
                    student.UserID = UserLevel.UserIDAll;//确保只能修改自己的密码
                    student.UserPwd = oldPwd.Text;
                    //实例化外观,用来查询密码
                    StuPwdFacade facade = new StuPwdFacade();
                    //接收返回值
                    string strFlage = facade.SelectStuPwd(student);
                    #region 更新密码判断
                    if (strFlage == "密码更新成功!")
                    {
                        
                        //更新用户密码
                        UserLevel user = new UserLevel();
                        user.UserID = UserLevel.UserIDAll;
                        user.UserPwd = newpwd1.Text;
                        facade.UpUserlevel(user);
                    }
                    #endregion
                    MessageBox.Show(strFlage);
                    //强制退出
                    
                    #endregion
                }
                else
                {
                    MessageBox.Show("密码不一致,请从新输入!");
                }//end if
            }
            #endregion

单例模式(在跳转到修改密码之前的窗体使用)

 public static StuPwd stupwd;
  //判断是否已经实例化
            if (stuReCharge==null)
            {
                stuReCharge = new StuReCharge();
                stuReCharge.Show();//显示窗体
            }//end if

退出按钮代码

//改变单例模式的状态
StudentMain.stupwd = null;
            this.Close();//关闭

继承者代码:
在这里插入图片描述
从从这个图片就可以看到,这里面的控件都是锁定的状态。不可更改里面的代码。
从下面图片就可以看到,和继承类是一样的方法。只不过在继承之前,需要先新建一个Windows窗体,继承完了窗体的布局和模板一摸一样。
在这里插入图片描述
继承的退出按钮

//更改单例模式的状态
 OperatorMain.opertonPwd = null;
            this.Close();//关闭

单例模式(在跳转到修改密码之前的窗体使用)

//修改密码窗体
        public static OperPwd opertonPwd;
  //判断是否已经被实例化
            if (opertonPwd ==null)
            {
                opertonPwd = new OperPwd();
                opertonPwd.Show();
            }
posted @ 2019-12-21 15:00  康世行  阅读(31)  评论(0编辑  收藏  举报