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

举报
ksh1998 发表于 2021/12/25 23:08:26 2021/12/25
【摘要】 前言: 根据标题大家应该能大概能猜测到,下面我要分享的内容了吧! 没错,就是在修改密码的时候利用继承。做到修改密码这个功能只写一遍,但是你能在多个窗体使用(包括控件)。当然大家看到这肯定有的丈二和尚摸不着...

前言:
根据标题大家应该能大概能猜测到,下面我要分享的内容了吧! 没错,就是在修改密码的时候利用继承。做到修改密码这个功能只写一遍,但是你能在多个窗体使用(包括控件)。当然大家看到这肯定有的丈二和尚摸不着头的感觉,大家别着急继续往下看。是有前提条件的!
前提条件:
在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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

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

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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

退出按钮代码

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

  
 
  • 1
  • 2
  • 3

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

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

  
 
  • 1
  • 2
  • 3

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

//修改密码窗体
        public static OperPwd opertonPwd;
  //判断是否已经被实例化
            if (opertonPwd ==null)
            {
                opertonPwd = new OperPwd();
                opertonPwd.Show();
            }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

文章来源: kangshihang.blog.csdn.net,作者:康世行,版权归原作者所有,如需转载,请联系作者。

原文链接:kangshihang.blog.csdn.net/article/details/103644114

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。