パスワードを変更するためのC#コンピュータルームの再構築

【インターフェース設計】

【序文】

パスワードフォームを変更する2つの主要な機能があります。

1.元のパスワードが正しいかどうかを確認します

2.データベースの新しいパスワードを更新します

元のパスワードが正しいかどうかを確認する方法が重要です。ログイン時にカード番号からデータベーステーブルでカード番号に対応するパスワードを見つけることができます。ログイン時にカード番号を取得するにはどうすればよいですか?ログインコードに静的な静的変数を設定して、カード番号を保存し、パスワード変更ウィンドウで使用します。

次の図は、ログインコードに設定された静的変数です。

 

 [コードの実装]:2つの行があります(元のパスワードを検索し、新しいパスワードを更新します)

IDAL层

    public interface CardInfoIDAL
    {
        //查询原密码
        DataTable checkPassword(string cardNo);

        //更新新密码
        int changePassword(string cardNo,string passWord);
    }

ファクトリーレイヤー

    public class CardInfoFactory
    {
        //获取配置文件
        string strDB = System.Configuration.ConfigurationManager.AppSettings["DB"];
        //应用反射来获取DAL层操作
        public CardInfoIDAL cardInfo()
        {
            //程序集+类名
            string className = strDB + "." + "CardInfoDAL";
            //反射+工厂
            return (CardInfoIDAL)Assembly.Load(strDB).CreateInstance(className);
        }
    }

 DALレイヤー

  public class CardInfoDAL : CardInfoIDAL
    {
        //实例化一个SqlHelper类
        SqlHelper sqlHelper = new SqlHelper();

        //更新新密码
        public int changePassword(string cardNo, string passWord)
        {
            //进行数据库更新,返回结果
            SqlParameter[] sqlParams =
            {
                    new SqlParameter("@cardno",cardNo),
                    new SqlParameter("@password",passWord),

             };
            string sqlUpdate = "UPDATE Card_Info SET password=@password WHERE cardno=@cardno";
            int res = sqlHelper.ExecuteNonQuery(sqlUpdate, sqlParams, CommandType.Text);
            return res;
        }

        //查询原密码
        public DataTable checkPassword(string cardNo)
        {
            SqlParameter[] sqlParams =
            {
                new SqlParameter("@cardno",cardNo)
            };
            string sqlQuery = @"SELECT * FROM [Card_Info] WHERE cardno=@cardno";
            DataTable table = sqlHelper.ExecuteQuery(sqlQuery, sqlParams, CommandType.Text);
            return table;
        }
    }

BLLレイヤー

 public class CardInfoBLL
    {
        //实例化一个工厂层
        CardInfoFactory cardFactory = new CardInfoFactory();

        //更新新密码
        public Boolean changePassword(string cardNo, string passWord)
        {
            //用idal接收工厂方法的返回值
            CardInfoIDAL idal = cardFactory.cardInfo();
            int res = idal.changePassword(cardNo,passWord);
            return isCheck(res);

        }

        //查询原密码,判断原密码是否正确
        public Boolean checkPassword(string cardNo,string passWord)
        {
            //用idal接收工厂返回值
            CardInfoIDAL idal= cardFactory.cardInfo();
            //用table接收接口方法的返回值
            DataTable table= idal.checkPassword(cardNo);
            string dt = table.Rows[0]["password"].ToString();
            if (passWord==dt.Trim())
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }

ファサード层

    public class CardInfoFacade
    {
        //实例化B层
        CardInfoBLL cardBll = new CardInfoBLL();

        //更新新密码
        public Boolean changePassword(string cardNo,string passWord)
        {
            Boolean flag = cardBll.changePassword(cardNo,passWord);
            return flag;
        }

        //查询原密码
        public Boolean checkPassword(string cardNo, string passWord)
        {
            Boolean flag = cardBll.checkPassword(cardNo,passWord);
            return flag;
        }
    }

UI层

        private void btnOK_Click(object sender, EventArgs e)
        {
            //判断文本框是否为空
            if (txtOldCode.Text.Trim()=="" ||txtNewCode1.Text.Trim()==""||txtNewCode2.Text.Trim()=="")
            {
                MessageBox.Show("文本框不能为空,请输入!");
                return;
            }

            //判断两次密码是否一致
            if (txtNewCode1.Text.Trim()!=txtNewCode2.Text.Trim())
            {
                MessageBox.Show("两次密码输入的不一致,请重新输入!");
                txtNewCode1.Text = "";
                txtNewCode2.Text = "";
                txtNewCode1.Focus();
                return;
            }
            
            //实例化一个外观层
            CardInfoFacade changeCodeFacade = new CardInfoFacade();
            //登录时的卡号
            string cardNo = CardInfoLogin.userId;
            string passWord = txtOldCode.Text.Trim();
            Boolean flag = changeCodeFacade.checkPassword(cardNo,passWord);
            //判断原密码是否正确
            if (flag==false)
            {
                MessageBox.Show("原密码不正确,请重新输入!");
                txtOldCode.Text = "";
                txtOldCode.Focus();
                return;
            }
            //接收信息
            passWord = txtNewCode1.Text.Trim();
            Boolean flag1= changeCodeFacade.changePassword(cardNo,passWord);
            if (flag1==true)
            {
                MessageBox.Show("修改密码成功!");
                txtOldCode.Text="";
                txtNewCode1.Text = "";
                txtNewCode2.Text = "";
            }
            else
            {
                MessageBox.Show("密码修改失败,请重试!");
                txtOldCode.Text = "";
                txtNewCode1.Text = "";
                txtNewCode2.Text = "";
                txtOldCode.Focus();
            }
        }

アイデアは非常に重要です。アイデアを明確にすると、コードの実装が簡単になります。

おすすめ

転載: blog.csdn.net/wtt15100/article/details/107020667
おすすめ