C#のリファクタリングエンジンルーム - 学生の基本的な情報のメンテナンス[クエリ]の組み合わせは、(プロセス指向の考え方は、アイデアやプロセスに焦点を当て、別の部屋の再建を要します)

免責事項:この記事はブロガーオリジナル記事ですが、許可ブロガーなく再生してはなりません。https://blog.csdn.net/whc888666/article/details/88037253
序文
部屋の料金体系の再構築は、いくつかの時間のために、今のセクターの問い合わせの組み合わせを行っているされているが、全体はまだ非常に良いですが、私はたくさんのことを学びました。多くの形態は、ステップバイステップでそれを行うには、独自のアイデアによるものです。オブジェクト指向の考え方が、また場所で(カプセル化、継承、多態性)がありません。これらは、プログラムには反映されません。私の主な目的は、自分の考え明確な根拠を整理することができることです。最適化された後に、オブジェクト指向の考え方。この方法では、私は2つの間に非常に明確な違いがあることができ、そして第二に、非常に明確に彼らがどのように変換されますすることができます。今日、私はあなたが何の組み合わせから作られているオブジェクト指向のクエリを使用していない表示するために来ます。私たちはあなたのオブジェクト指向の考え方を組み合わせたクエリを表示するために戻ってきます。
フローチャート

フローチャートは、すべてのアイデアのソースコードです。非常に重要。私が一番の理由は、すべての時間の上に置く理由です。フローチャートは、私の考えでは、コードを取得する方法である、私が描く方法です。
複合クエリーは、各ステップが描か達成するためにどのように、あなたは理解しますが、それはまだ非常に簡単です、我々限り、難しいことではありません。私は少し難しいと言っている:フィールドに応じて、さまざまなコントロールの出現は、これも実際の動作が困難なことです。もう一つのポイントは、の組み合わせとの間の関係を決定することである。選択されていない組み合わせの間の関係は、最初のクエリ行に記載されている2は、第一の関係の組合せを表示、最初の関係は、クエリ行目と2行目で表される;. 3. 2つの組み合わせの間の関係は、それが悪いフォームの関係上のすべてのクエリを過ごすために持っていることを意味使用していました。
実際には、この事に関するお問い合わせの組み合わせ。すべての以下のフローチャートの(多くの場所で非常に専門的ではありませんが、私の思考の記録を防ぐことはできませんが)。
ここに画像を挿入説明

コード表示

UI层

オブジェクト指向のロジックのアイデアはBLLを置く必要性を判断するために必要なので、判断の多くは、ここに置くべきではありませんが、フローチャートの明確な説明はどこ、私のUI層です。私のアイデアのより流暢なパフォーマンスのために。もちろん、後の時間は、オブジェクト指向の考え方に厳密に従っを最適化しますか。場合... elseロジックの上に構築された場合:コアコードは、ということです。他のすべてが非常に簡単になります。

namespace UI
{
    public partial class frmStudentInfoDefend : Form
    {
        public frmStudentInfoDefend()
        {
            InitializeComponent();
        }

        //封装一个方法
        public string English(string str)
        {
            switch (str)
            {
                case "卡号":
                    return "cardno";
                case "学号":
                    return "studentNo";
                case "姓名":
                    return "studentName";
                case "性别":
                    return "sex";
                case "专业":
                    return "department";
                case "年级":
                    return "grade";
                case "班级":
                    return "classno";
                default:
                    return "";
                                                          
            }
        }
        private void cmdQuery_Click(object sender, EventArgs e)
        {
            //实例化Model层
            StudentInfo studentinfo = new StudentInfo();

            //实例化Facade层
            fStudentInfoDefend fstudentinfodefend = new fStudentInfoDefend();

            //将UI层的数据传入Model层
            studentinfo.cmbName1 =English(cmbName1.Text.Trim());
            studentinfo.cmbName2 = English(cmbName2.Text.Trim());
            studentinfo.cmbName3 = English(cmbName3.Text.Trim());

            studentinfo.cmbOpert1 = cmbOpert1.Text.Trim();
            studentinfo.cmbOpert2 = cmbOpert2.Text.Trim();
            studentinfo.cmbOpert3 = cmbOpert3.Text.Trim();

            studentinfo.cmbGroupQuery1 = cmbGroupQuery1.Text.Trim();
            studentinfo.cmbGroupQuery2 = cmbGroupQuery2.Text.Trim();

            studentinfo.txtQueryContent1 = txtQueryContent1.Text.Trim();
            studentinfo.txtQueryContent2 = txtQueryContent2.Text.Trim();
            studentinfo.txtQueryContent3 = txtQueryContent3.Text.Trim();

            //接收DAL层的数据
            DataTable table = fstudentinfodefend.SelectStudentInfo(studentinfo);
            //组合两个控件都为空的情况
            if (cmbGroupQuery1.Text.Trim ()=="" && cmbGroupQuery2.Text.Trim()=="")
            {
                //设置其他控件不可用
                cmbName2.Enabled = false;
                cmbName3.Enabled = false;

                cmbOpert2.Enabled = false;
                cmbOpert3.Enabled = false;

                txtQueryContent2.Enabled = false;
                txtQueryContent3.Enabled = false;

                //判空
             if (cmbName1.Text.Trim() == "" || cmbOpert1.Text.Trim() == "" || txtQueryContent1.Text.Trim() == "")
                {
                    MessageBox.Show("信息不能为空,请将信息填写完整!");
                    return;
                }
                else
                { 
                    dataGridView.DataSource = table;
                    MessageBox.Show("查询成功!", "提示");
                }
            }

            //组合控件2为空的情况
            else if (cmbGroupQuery2 .Text .Trim ()=="")
            {
                //判空
                DataTable tableGroup1 = fstudentinfodefend.SelectStuGroup1(studentinfo);
                if (cmbName1.Text.Trim() == "" || cmbOpert1.Text.Trim() == "" || txtQueryContent1.Text.Trim() == ""|| cmbName2.Text.Trim() == "" || cmbOpert2.Text.Trim() == "" || txtQueryContent2.Text.Trim() == "")
                {
                    MessageBox.Show("信息不能为空,请将信息填写完整!");

                    //设置其他控件不可用
                    cmbName3.Enabled = false;
                    cmbOpert3.Enabled = false;
                    txtQueryContent3.Enabled = false;
                    return;
                }
                else
                {
                    dataGridView.DataSource = tableGroup1;
                    MessageBox.Show("查询成功!", "提示");
                }
            }

            //组合控件都不为空的情况
            else
            {
                DataTable tableGroup1And2 = fstudentinfodefend.SelectStuGroup1And2(studentinfo);
                //判空
                if (cmbName1.Text.Trim() == "" || cmbOpert1.Text.Trim() == "" || txtQueryContent1.Text.Trim() == "" || cmbName2.Text.Trim() == "" || cmbOpert2.Text.Trim() == "" || txtQueryContent2.Text.Trim() == ""||cmbName3.Text.Trim() == "" || cmbOpert3.Text.Trim() == "" || txtQueryContent3.Text.Trim() == "")
                {
                    MessageBox.Show("信息不能为空,请将信息填写完整!");
                    return;
                }
                else
                {
                    dataGridView.DataSource = tableGroup1And2;
                    MessageBox.Show("查询成功!", "提示");
                }
            }
        }

        private void frmStudentInfoDefend_Load(object sender, EventArgs e)
        {
            //查询条件
            cmbName1.Items.Add("卡号");
            cmbName1.Items.Add("学号");
            cmbName1.Items.Add("姓名");
            cmbName1.Items.Add("性别");
            cmbName1.Items.Add("专业");
            cmbName1.Items.Add("年级");
            cmbName1.Items.Add("班级");

            cmbName2.Items.Add("卡号");
            cmbName2.Items.Add("学号");
            cmbName2.Items.Add("姓名");
            cmbName2.Items.Add("性别");
            cmbName2.Items.Add("专业");
            cmbName2.Items.Add("年级");
            cmbName2.Items.Add("班级");

            cmbName3.Items.Add("卡号");
            cmbName3.Items.Add("学号");
            cmbName3.Items.Add("姓名");
            cmbName3.Items.Add("性别");
            cmbName3.Items.Add("专业");
            cmbName3.Items.Add("年级");
            cmbName3.Items.Add("班级");

            //操作符
            cmbOpert1.Items.Add(">");
            cmbOpert1.Items.Add("<");
            cmbOpert1.Items.Add("=");
            cmbOpert1.Items.Add("<>");

            cmbOpert2.Items.Add(">");
            cmbOpert2.Items.Add("<");
            cmbOpert2.Items.Add("=");
            cmbOpert2.Items.Add("<>");

            cmbOpert3.Items.Add(">");
            cmbOpert3.Items.Add("<");
            cmbOpert3.Items.Add("=");
            cmbOpert3.Items.Add("<>");

            //组合关系
            cmbGroupQuery1.Items.Add("与");
            cmbGroupQuery1.Items.Add("或");

            cmbGroupQuery2.Items.Add("与");
            cmbGroupQuery2.Items.Add("或");
        }

        private void cmdClear_Click(object sender, EventArgs e)
        {
            //清空控件
            cmbName1.Text= "";
            cmbName2.Text = "";
            cmbName3.Text = "";

            cmbOpert1.Text = "";
            cmbOpert2.Text = "";
            cmbOpert3.Text = "";

            txtQueryContent1.Text = "";
            txtQueryContent2.Text = "";
            txtQueryContent3.Text = "";

            cmbGroupQuery1.Text = "";
            cmbGroupQuery2.Text = "";
        }
    }
}

BLL層

オブジェクト指向の考え方は、この層は非常に重要です。この層のロジックの多くので、部屋はあなたに私の復興を表示するために、今日のオブジェクト指向の私の考えではありませんので。だから、この層のコードは、彼の本来の意味を失っています。したがって、ここでの層のコードを示してもいません。

DAL層

私はオブジェクト指向の考え方でコードを記述する必要はありませんので、必然的に他の人の完全に異なると私のDALのDAL層につながります。オブジェクト指向のクエリ方法は、層は、データベース処理手順に格納されています。それはずっと簡単になります。私のDALはまだ私に多くの労力を要します。しかし、同じオブジェクト指向の考え方を達成することができ達しました。アイデアは、コード自体よりも重要です。

namespace DAL
{
    public class StudentInfoDefendDAO:IStudentInfoDefend
    {
        SqlHelper sqlhelper = new SqlHelper();
        public DataTable SelectStudentInfo(StudentInfo studentinfo)
        {
            string name =studentinfo.cmbName1;
            string fuhao = studentinfo.cmbOpert1;
            string text= studentinfo.txtQueryContent1;
            string addtext = name + fuhao + text;
            string sql = @"select * from [student_Info] where "+addtext+" ";
            DataTable table = sqlhelper.ExecuteQuery(sql, CommandType.Text);
            return table;
        }

        public DataTable SelectStuGroup1(StudentInfo studentinfo)
        {
            string nameGroup1 = studentinfo.cmbName1;
            string fuhaoGroup1 = studentinfo.cmbOpert1;
            string textGroup1 = studentinfo.txtQueryContent1;
            string addtextGroup1 = nameGroup1 + fuhaoGroup1 + textGroup1;
            string sql = @"select * from [student_Info] where " + addtextGroup1 + " ";
            DataTable tableGroup1 = sqlhelper.ExecuteQuery(sql, CommandType.Text);
            return tableGroup1;
        }

        public DataTable SelectStuGroup1And2(StudentInfo studentinfo)
        {
            string nameGroup1And2 = studentinfo.cmbName1;
            string fuhaoGroup1And2 = studentinfo.cmbOpert1;
            string textGroup1And2 = studentinfo.txtQueryContent1;
            string addtextGroup1And2 = nameGroup1And2 + fuhaoGroup1And2 + textGroup1And2;
            string sql = @"select * from [student_Info] where " + addtextGroup1And2 + " ";
            DataTable tableGroup1And2 = sqlhelper.ExecuteQuery(sql, CommandType.Text);
            return tableGroup1And2;
        }
    }
}
概要
実際には、クエリの組み合わせは、三つの形式の合計は、組み合わせ検索で部屋の料金体系、とても簡単です。私は、今日は、プロセス指向のクエリの組み合わせであると言うことができるすべての人に見せるためにさまざまなアイデアや方法で再びそれを行うだろう。お問い合わせの考え方の背後にあるオブジェクトの組み合わせを展示します、それらの違いをどのようないくつかを見るために時間を持っています。

もちろん、私はまた、私は深く感謝して、私の兄の欠点を指摘したいと思います。

おすすめ

転載: blog.csdn.net/whc888666/article/details/88037253