• 本学期最后一个博客


    用户故事

    作为一名赛事组织人员,我需要每场比赛的结果及比赛积分,以便对比赛队伍做出排名。

    赛制分析:

    以奥运会赛制为例:

    预选赛、小组赛、淘汰赛(四分之一)、半决赛、决赛。

    预选赛:选出十二支队伍

    小组赛:单循环赛制,选出以积分排名每组前4,进行八强淘汰,AB两队A1vsB4A4vsB1,剩余抽签配对。

    半决赛:A1/B4胜方VS  A2/B2(B3)胜方;A4vsB1胜方VS  A2/B3(B2)胜方。

    小组赛排名第6的并列第11名,第5的并列第9名,淘汰赛负方并列第5,。小组赛排名由总分决定。若平局。按获胜次数决定,按输赢比率决定,按得分比率决定,按最后一场获胜代表队排名靠前。

    积分规则

    若为3:03:1,胜者得3分,负者不得分。

    若为3:2,胜者2分,负者1分。

    预计用时:4 day

    实际用时:7 day

    活动图:

    运行结果:

    作业的总结:

    本次作业的一个重大缺点就是没有使用三层架构,还有部分功能依然有缺陷。

    在做的过程中,没有完全按照流程走,是一个遗憾。

    下面附上代码:

    计分初始界面:

     private void lblIndex_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)//跳转到查询页面
            {
                this.Close();
                historySelect a = new historySelect();
                a.Show();
            }

            private void begin_Click(object sender, EventArgs e)//比赛开始并且检测是否为空
            {
                if (textName.Text.Trim() == "" || Ateam.Text.Trim() == "" || Bteam.Text.Trim() == "")
                {
                    MessageBox.Show("比赛名、队伍名均不能为空");
                }
                else
                {
                    writeHistory1 w = new writeHistory1();
                    w.bisai(textName.Text);
                    w.TeamA(Ateam.Text);
                    w.TeamB(Bteam.Text);
                    w.Show();
                    this.Close();
                }
               
            }

            private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)//退出
            {
               Application.Exit();
            }

     计分界面:

    int sA, sB;
            StringBuilder sb = new StringBuilder();
          
            public string bisai(string str)//获取比赛名控件值
            {
                return name.Text = str;
            }
            public void TeamA(string str)//获取甲方队伍名
            {
                teamA.Text = str;
            }
            public void TeamB(string str)//获取乙方队伍名
            {
                teamB.Text = str;
            }
            public void insert(string win) //记录插入
            {
                string sql = "insert into paiqiu(game,teamA,teamB,one,two,three,four,five,win,qiangqing) values(@game,@teamA,@teameB,@one,@two,@three,@four,@five,@win,@qiangqing)";
                SqlParameter[] sp = {
                                            new SqlParameter("@game",name.Text),
                                            new SqlParameter("@teamA",teamA.Text),
                                            new SqlParameter("@teameB",teamB.Text),
                                            new SqlParameter("@one",one),
                                            new SqlParameter("@two",two),
                                            new SqlParameter("@three",three),
                                            new SqlParameter("@four",four==null?DBNull.Value:(object)four),
                                            new SqlParameter("@five",five==null?DBNull.Value:(object)five),
                                            new SqlParameter("@win",win),
                                            new SqlParameter("@qiangqing",sb.ToString())
                                        };
                SqlHelper.ExecuteNonQuery(sql, sp);
            }
            public void insertPM( string team,int score,int chang,int ju) //排名插入
            {
                string sql = "insert into paiming values(@game,@team,@score,@chang,@ju)";
                SqlParameter[] sp = {
                                        new SqlParameter("@game",name.Text),
                                        new SqlParameter("@team",team),
                                        new SqlParameter("@score",score),
                                        new SqlParameter("@chang",chang),
                                        new SqlParameter("@ju",ju)   
                                        };
                SqlHelper.ExecuteNonQuery(sql, sp);
            }
            public void update(string team, int score, int chang, int ju)
            {
                string sql = "update paiming set score=@score,chang=@chang,ju=@ju where dname=@team";
                SqlParameter[] sp = {
                                        new SqlParameter("@score",score),
                                        new SqlParameter("@chang",chang),
                                        new SqlParameter("@ju",ju),
                                        new SqlParameter("@team",team)
                                    };
                SqlHelper.ExecuteNonQuery(sql, sp);
            }
            public void select(string team,int score,int chang,int ju)
            {
                string sql = "select * from paiming where sname='"+name.Text.ToString()+"' and dname='"+team+"'";
                SqlDataReader reader=SqlHelper.ExecuteReader(sql);
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        int score0 = Convert.ToInt32(reader[2]) + score;
                        int chang0 = Convert.ToInt32(reader[3]) + chang;
                        int ju0 = Convert.ToInt32(reader[4]) + ju;
                        update(team, score0, chang0, ju0);
                    }
                }
                else
                {
                    insertPM(team, score, chang, ju);
                }
            }
            string one=null, two=null, three=null, four=null, five=null;

            private void A_Click(object sender, EventArgs e)//甲方加分
            {
                int a=int.Parse(scoreA.Text) + 1;
                int b = int.Parse(scoreB.Text);
                sb.AppendFormat("{0}:{1}={2}:{3} ", teamA.Text, teamB.Text, a, b);
               
                int i=Convert.ToInt32( lblNum.Text.Substring(1, 1));
                int sa = Convert.ToInt32(lblA.Text);
                scoreA.Text = a.ToString();
                if (i < 5)
                {
                    if (a >= 25 && a - b >= 2)
                    {
                        string str = string.Format("本局甲方:{0}胜", teamA.Text);
                        MessageBox.Show(str);
                        scoreA.Text = "0";
                        scoreB.Text = "0";
                        sa++; i++;
                        lblA.Text = (sa).ToString();
                        lblNum.Text = "第" + i + "局";
                        sb.AppendFormat("第{0}局  {1}:{2}={3}:{4}  本局{5}胜 ", i - 1, teamA.Text, teamB.Text, a, b, teamA.Text);
                        switch(i-1)
                        {
                            case 1:one=string.Format("{0}:{1}",a,b); break;
                            case 2:two=string.Format("{0}:{1}",a,b); break;
                            case 3:three=string.Format("{0}:{1}",a,b); break;
                            case 4:four=string.Format("{0}:{1}",a,b); break;
                        }
                    }
                }
                else
                {
                    if(a>=15&&a-b>=2)
                    {
                        sb.AppendFormat("第{0}局  {1}:{2}={3}:{4}  本局{5}胜 ", i - 1, teamA.Text, teamB.Text, a, b, teamA.Text);
                        string str = string.Format("本局甲方:{0}胜", teamA.Text);
                        MessageBox.Show(str);
                        sa++;
                        lblA.Text = (sa).ToString();
                        five=string.Format("{0}:{1}",a,b);
                    }
                }
                if (sa == 3) {
                    sb.AppendFormat("本场比赛甲方:{0}胜 比赛结束",teamA.Text);
                    string str=string.Format("本场比赛{0}胜",teamA.Text);
                    win.Text = str;
                    win.Visible = true;
                    A.Visible = false;
                    B.Visible = false;
                    insert(teamA.Text);
                    if (lblB.Text == "2") { sA = 2; sB = 1; }
                    else { sA = 3; sB = 0; }
                    select(teamA.Text.ToString(),sA,1,sa);
                    select(teamB.Text.ToString(), sB, 0, Convert.ToInt32(lblB.Text));
                }
                textBox1.Text = sb.ToString();
            }
           
            private void B_Click(object sender, EventArgs e)//乙方加分
            {
                int a = int.Parse(scoreB.Text) + 1;
                int b = int.Parse(scoreA.Text);
                sb.AppendFormat("{0}:{1}={2}:{3} ", teamA.Text, teamB.Text, b, a);
               
                int i = Convert.ToInt32(lblNum.Text.Substring(1, 1));
                int sa = Convert.ToInt32(lblB.Text);
                scoreB.Text =a.ToString();
                if (i < 5)
                {
                    if (a >= 25 && a - b >= 2)
                    {
                        string str = string.Format("本局乙方:{0}胜",teamB.Text);
                        MessageBox.Show(str);
                        scoreA.Text = "0";
                        scoreB.Text = "0";
                        sa++; i++;
                        lblB.Text = (sa).ToString();
                        lblNum.Text = "第" + i + "局";
                        sb.AppendFormat("第{0}局  {1}:{2}={3}:{4}  本局{5}胜 ", i - 1, teamA.Text, teamB.Text, b, a, teamB.Text);
                        switch (i - 1)
                        {
                            case 1: one = string.Format("{0}:{1}", b, a); break;
                            case 2: two = string.Format("{0}:{1}", b, a); break;
                            case 3: three = string.Format("{0}:{1}", b, a); break;
                            case 4: four = string.Format("{0}:{1}", b, a); break;
                        }
                    }
                }
                else
                {
                    if (a >= 15 && a - b >= 2)
                    {
                        sb.AppendFormat("第{0}局  {1}:{2}={3}:{4}  本局{5}胜 ", i-1,teamA.Text,teamB.Text ,b, a,teamB.Text);
                        string str = string.Format("本局乙方:{0}胜", teamB.Text);
                        MessageBox.Show(str);
                        sa++;
                        lblB.Text = (sa).ToString();
                        five = string.Format("{0}:{1}", b, a);
                    }
                }
                if (sa == 3) {
                    sb.AppendFormat("本场比赛乙方:{0}胜 比赛结束", teamB.Text);
                    string str = string.Format("本场比赛{0}胜", teamB.Text);
                    win.Text = str;
                    win.Visible = true;
                    A.Visible = false;
                    B.Visible = false;
                    insert(teamB.Text);
                    if (lblA.Text == "2") { sB = 2; sA = 1; }
                    else { sB = 3; sA = 0; }
                    select(teamB.Text.ToString(), sB, 1, sa);
                    select(teamA.Text.ToString(), sA, 0, Convert.ToInt32(lblA.Text));
                }
                textBox1.Text = sb.ToString();
            }

            private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)//记录显示
            {
                if (textBox1.Visible == false)
                {
                    textBox1.Visible = true;
                }
                else
                {
                    textBox1.Visible = false;
                }
            }

            private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)//比赛重置
            {
                this.Close();
                writeHistory0 a = new writeHistory0();
                a.Show();
             
            }

            private void Form1_Load(object sender, EventArgs e)
            {
                sb.AppendFormat("比赛名称:{0} 甲方:{1}  乙方:{2} ",name.Text, teamA.Text, teamB.Text);
                textBox1.Text = sb.ToString();
            }

            private void lblIndex_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)//跳转到查询
            {
                this.Close();
                historySelect a = new historySelect();
                a.Show();
            }

            private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)//退出
            {
                Application.Exit();
            }
          

            private void btn1_Click(object sender, EventArgs e)//甲方减分
            {
                int a = int.Parse(scoreA.Text);
                int b = int.Parse(scoreB.Text);
                if (a > 0)
                {
                    a--;
                    scoreA.Text = a.ToString();
                    sb.AppendFormat("比赛受到争议:甲方减分 {0}:{1}={2}:{3} ", teamA.Text, teamB.Text, a, b);
                    textBox1.Text = sb.ToString();
                }
                else
                {
                    MessageBox.Show("操作失败");
                }
            }

            private void btn2_Click(object sender, EventArgs e)//乙方减分
            {
                int a = int.Parse(scoreA.Text);
                int b = int.Parse(scoreB.Text);
                if (b > 0)
                {
                    b--;
                    scoreB.Text = b.ToString();
                    sb.AppendFormat("比赛受到争议:乙方减分 {0}:{1}={2}:{3} ", teamA.Text, teamB.Text, a, b);
                    textBox1.Text = sb.ToString();
                }
                else
                {
                    MessageBox.Show("操作失败");
                }
            }

    比赛记录查询:

    private void cmbLoad()
            {
                cmbName.Items.Clear();

                string sql = "select game from paiqiu";
                SqlDataReader reader = SqlHelper.ExecuteReader(sql);
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        cmbName.Items.Add(reader[0]);
                    }
                }
                reader.Close();
            }
            private void dgvLoad()
            {
                string sql = "select * from paiqiu";
                dgvGame.DataSource = SqlHelper.ExecuteDataTable(sql);
            }
            private void Form2_Load(object sender, EventArgs e)
            {
                cmbLoad();
                dgvLoad();
               
            }

            private void select_Click(object sender, EventArgs e)//单个查询
            {
                StringBuilder sql = new StringBuilder("select * from paiqiu where 1=1");
                if (!string.IsNullOrEmpty(cmbName.Text))
                {
                    sql.Append(" and game like '%" + cmbName.Text + "%'");
                }
                SqlDataReader reader= SqlHelper.ExecuteReader(sql.ToString());
                if (reader.HasRows)
                {
                    dgvGame.DataSource = SqlHelper.ExecuteDataTable(sql.ToString());
                }
                else
                {
                    MessageBox.Show("没有查询到比赛记录!");
                }
            }

            private void lblWrite_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)//跳转计分页面
            {
                this.Close();
                writeHistory0 a = new writeHistory0();
                a.Show();
            }

            private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
            {
                 Application.Exit();
            }

            private void dgvGame_CellContentClick(object sender, DataGridViewCellEventArgs e)
            {
                int x = e.ColumnIndex;
                int y = e.RowIndex;
                if(x==0&&y!=-1)
                {
                    child ch = new child();
                    ch.xq(dgvGame.CurrentRow.Cells[11].Value.ToString());
                    ch.Show();
                }
              

            }

            private void button1_Click(object sender, EventArgs e)
            {
                selectPM sp = new selectPM();
                sp.Show();
            }

    比赛排名查询:

     private void selectPM_Load(object sender, EventArgs e)
            {
                string sql = "select * from paiming";
                dgvPM.DataSource = SqlHelper.ExecuteDataTable(sql);
                for (int i =1 ; i < dgvPM.Rows.Count+1 ; i++)
                {
                    dgvPM.Rows[i-1].Cells["ranking"].Value = i;
                }
            }

            private void dgvPM_Sorted(object sender, EventArgs e)
            {
                for (int i = 1; i < dgvPM.Rows.Count + 1; i++)
                {
                    dgvPM.Rows[i - 1].Cells["ranking"].Value = i;
                }
            }

  • 相关阅读:
    es6里面的arr方法
    for循环比较
    window.location各属性的值
    浏览器的缓存机制
    es6中的双箭头函数
    前端开发模拟数据------webpack-api-mocker
    对象的深拷贝和浅拷贝
    Web应用程序的安全问题
    this指向问题
    postman使用篇最全整理
  • 原文地址:https://www.cnblogs.com/ljc960321/p/6257414.html
Copyright © 2020-2023  润新知