排球積分程序最後 衝刺

1、計劃sql

          這個程序須要四天。數據庫

 2、開發測試

      一、需求分析:ui

       用戶故事:做爲一個教練,我但願瞭解每一場隊友和對方的比賽加分和扣分細節,以及全部隊員每一場的得分與排行狀況,以便於更好的對隊員作出戰術安排。(滿意條件:精確到每一局的結果比分)。this

                      從分析用例故事能夠知道完成此程序須要這四項任務:1.選擇隊伍 2.查看本隊比賽狀況(外加本場本隊的對方狀況)3.查詢比賽記錄 4.連接數據庫編碼

      2.設計文檔:spa

       賽制分析:設計

      以奧運會賽制爲例:預選賽、小組賽、淘汰賽(四分之一)、半決賽、決賽。預選賽:選出十二支隊伍小組賽:單循環賽制,選出以積分排名每組前4,進行八強淘汰,A、B兩隊A1vsB4,A4vsB1,剩餘抽籤配對。半決賽:A1/B4勝方VS  A2/B2(B3)勝方;A4vsB1勝方VS  A2/B3(B2)勝方。小組賽排名第6的並列第11名,第5的並列第9名,淘汰賽負方並列第5,。小組賽排名由總分決定。若平局。按獲勝次數決定,按輸贏比率決定,按得分比率決定,按最後一場獲勝表明隊排名靠前。

      積分規則

      若爲3:0或3:1,勝者得3分,負者不得分。若爲3:2,勝者2分,負者1分。3d

      3.設計複審:代碼規範

       由寢室的室友進行復查,提出建議。

      4.代碼規範:

       根據Visual Studio 2010規範去寫。

      5.具體設計:

      我制定的積分規則以下:

                              一、計分方式:比賽結果爲3:0、3:1時,勝隊積3分,負隊積0分;比賽結果爲3:2時,勝隊積3分,負隊積2分;積分高者排名在前。

                              二、當積分相等時,決定名次順序爲:①誰的勝場多;②每局比分的差距

           活動圖:

 

          6.具體編碼:(如下爲代碼)

      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}\r\n", 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}勝\r\n", 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}勝\r\n", 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}勝\r\n比賽結束",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}\r\n", 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}勝\r\n", 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}勝\r\n", 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}勝\r\n比賽結束", 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}\r\n甲方:{1}  乙方:{2}\r\n",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("比賽受到爭議:甲方減分\r\n{0}:{1}={2}:{3}\r\n", 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("比賽受到爭議:乙方減分\r\n{0}:{1}={2}:{3}\r\n", 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;
            }
        }

   運行截圖:

          7.代碼複審:

          由寢室室友進行復審,查漏補缺。

           8.測試:測試三次(經過)

3、報告

          1.測試報告:

          2.計算工做量:實際工做時間爲4天零8個小時。

          3.過後總結與過程改進計劃:

排球積分程序完成後我發現了本身有不少不足的地方,首先對於一開始的目標不明確,不知如何下手,出發點不清而浪費了好多時間;其次在設計過程當中尤爲是代碼編寫的過程當中遇到了不小的問題,不少老師講過的都不太會,這點之後必需要改進,有些重要地方須要作下筆記;最後對於這個積分程序還有不少的不足,能夠說是個半成品,這若是是在公司裏作項目是絕對不容許的,隨後兩天我會把這個程序再完善下,期間出現的bug還沒來的及修改。整體來講這是我第一次作這個工程,共勉吧!

相關文章
相關標籤/搜索