第十六周计应151班第四组排球计分程序

计划:

估计这个任务需要多少时间完成:5-6天

开发:

需求分析:作为一个排球记分员,我希望能够方便的记录分数(精确到每球的的分),以便及时的把分数反映给观众。

设计文档:①排球计分程序的加减分②比赛结果的查询③比赛详细记录的查询

具体设计:

计分窗口
public partial class Scoreing : Form
    {
        public string TeamA;
        public string TeamB;
        public int ScoreA = 0;//比分
        public int ScoreB=0;
        public int count = 1;//局数
        public int TeamScoreA = 0;//局比分
        public int TeamScoreB = 0;
        public StringBuilder sb=new StringBuilder();
       VolleybalScore score=new VolleybalScore();
        volleyBll bll = new volleyBll();
        public Scoreing()
        {
            InitializeComponent();
        }

        private void Scoreing_Load(object sender, EventArgs e)
        {
            lblTeamA.Text = TeamA;
            lblTeamB.Text = TeamB;
            jushucount(count);
            score.Teams = TeamA + ":" + TeamB;
        }

        private void btnAddTeamA_Click(object sender, EventArgs e)
        {
            ScoreA++;
            showScore();
            victory();
            jushucount(count);
        }

        private void btnAddteamB_Click(object sender, EventArgs e)
        {
            ScoreB++;
            showScore();
            victory();
            jushucount(count);
        }
        private void showScore()
        {
            lblScoreB.Text = ScoreB.ToString();
            lblScoreA.Text = ScoreA.ToString();
        }
        private void victory()
        {
            if (count < 5)
            {
                if ((ScoreA >= 24 && Math.Abs(ScoreA - ScoreB) >= 2) || (ScoreB >= 24 && Math.Abs(ScoreA - ScoreB) >= 2))
                {
                    if (ScoreA - ScoreB >= 2)
                    {
                        MessageBox.Show(lblCount.Text + TeamA + "胜利");
                        TeamScoreA++;
                        if (Math.Abs(TeamScoreA - TeamScoreB) == 3)
                        {
                            MessageBox.Show("比赛结束"+ TeamA + "胜利");
                            score.Victory = TeamA+ TeamScoreA.ToString() + ":" + TeamScoreB.ToString();
                            score.thirdScore = ScoreA.ToString() + ":" + ScoreB.ToString();
                            bll.InsertScore(score);
                            count=1;
                            ScoreA = 0;
                            ScoreB = 0;
                            showScore();
                        }
                        sb.AppendFormat("第{0}局,{1}:{2}
", count, ScoreA, ScoreB);
                        lblBigScore.Text = sb.ToString();
                        if (count == 1)
                        { score.firstScore = ScoreA.ToString() + ":" + ScoreB.ToString(); }
                        else if (count == 2)
                        { score.secondScore = ScoreA.ToString() + ":" + ScoreB.ToString(); }
                        else if (count == 3)
                        { score.thirdScore = ScoreA.ToString() + ":" + ScoreB.ToString(); }
                        else if (count == 4)
                        { score.fourthScore = ScoreA.ToString() + ":" + ScoreB.ToString(); }
                        count++;
                        ScoreA = 0;
                        ScoreB = 0;
                        showScore();
                    }
                    if (ScoreB - ScoreA >= 2)
                    {
                        MessageBox.Show(lblCount.Text + TeamB + "胜利");
                        TeamScoreB++;
                        if (Math.Abs(TeamScoreA - TeamScoreB) == 3)
                        {
                            MessageBox.Show("比赛结束" + TeamB + "胜利");
                            score.Victory = TeamB + TeamScoreB.ToString() + ":" + TeamScoreA.ToString();
                            score.thirdScore = ScoreA.ToString() + ":" + ScoreB.ToString();
                            bll.InsertScore(score);
                            count=1;
                            ScoreA = 0;
                            ScoreB = 0;
                            showScore();
                            
                        }
                        sb.AppendFormat("第{0}局,{1}:{2}
", count, ScoreA, ScoreB);
                        lblBigScore.Text = sb.ToString();
                        if (count == 1)
                        { score.firstScore = ScoreA.ToString() + ":" + ScoreB.ToString(); }
                        else if (count == 2)
                        { score.secondScore = ScoreA.ToString() + ":" + ScoreB.ToString(); }
                        else if (count == 3)
                        { score.thirdScore = ScoreA.ToString() + ":" + ScoreB.ToString(); }
                        else if (count == 4)
                        { score.fourthScore = ScoreA.ToString() + ":" + ScoreB.ToString(); }
                        count++;
                        ScoreA = 0;
                        ScoreB = 0;
                        showScore();
                    }
                }
            }
            else if (count == 5)
            {
                if ((ScoreA >= 15 && Math.Abs(ScoreA - ScoreB) >= 2) || (ScoreB >= 15 && Math.Abs(ScoreA - ScoreB) >= 2))
                {
                    if (ScoreA - ScoreB >= 2)
                    {
                        MessageBox.Show(lblCount.Text + TeamA + "胜利");
                        TeamScoreA++;
                        score.Victory = TeamA + TeamScoreA.ToString() + ":" + TeamScoreB.ToString();
                        sb.AppendFormat("第{0}局,{1}:{2}
", count, ScoreA, ScoreB);
                        lblBigScore.Text = sb.ToString();
                        score.fifthScore = ScoreA.ToString() + ":" + ScoreB.ToString();

                    }
                    if (ScoreB - ScoreA >= 2)
                    {
                        MessageBox.Show(lblCount.Text + TeamB + "胜利");
                        TeamScoreB++;
                        score.Victory = TeamB + TeamScoreB.ToString() + ":" + TeamScoreA.ToString();
                        sb.AppendFormat("第{0}局,{1}:{2}/0", count, ScoreA, ScoreB);
                        lblBigScore.Text = sb.ToString();
                        score.fifthScore = ScoreA.ToString() + ":" + ScoreB.ToString();
                    }
                    count++;
                    ScoreA = 0;
                    ScoreB = 0;
                    showScore();
                    bll.InsertScore(score);
                }

            }
               
            }
         private void jushucount(int count)
        { 
            if(count==1)
            {
                lblCount.Text= "第一局";
            }
            else if (count == 2)
            {
                lblCount.Text = "第二局";
            }
            else if (count == 3)
            { lblCount.Text = "第三局"; }
            else if (count == 4)
            { lblCount.Text = "第四局"; }
            else if (count == 5)
            {
                lblCount.Text = "第五局";
            }
            else
            {
                lblCount.Text = "第一局";
            }
        }

活动图:

类图

具体编码:

Bll
public bool InsertTeam(string team)
        {
            return dal.InsertTeam(team) > 0;
        }
        public SqlDataReader ShowTeamA()
        {
            return dal.ShowTeamA();
        }
        public SqlDataReader ShowTeamB(string teamA)
        {
            return dal.ShowTeamB(teamA);
        }
        public void InsertScore(VolleybalScore score)
        { dal.InsertScore(score); }
Model
namespace Model
{
    public class VolleybalScore
    {
        public string Teams;
        public string Victory;
        public string firstScore;
        public string secondScore;
        public string thirdScore;
        public string fourthScore;
        public string fifthScore;
    }
}
selectTeam选择队伍窗口
public partial class SelectTeams : Form
    {
        public SelectTeams()
        {
            InitializeComponent();
        }
        private volleyBll bll = new volleyBll();
        private void button1_Click(object sender, EventArgs e)
        {
            AddTeams addform = new AddTeams();
            addform.ShowDialog();
        }
        private void cmbShowTeamA()
        {
            SqlDataReader reader = bll.ShowTeamA();
            while (reader.Read())
            {
                cmbTeamA.Items.Add(reader[0]);
            }
        }
        private void cmbShowTeamB(string teamA)
        {
            SqlDataReader reader = bll.ShowTeamB(teamA);
            while (reader.Read())
            {              
                cmbTeamB.Items.Add(reader[0]);
            }
        }
        private void SelectTeams_Load(object sender, EventArgs e)
        {
            cmbShowTeamA();
        }

        private void cmbTeamA_SelectedIndexChanged(object sender, EventArgs e)
        {
            cmbTeamB.Items.Clear();
            string teamA = cmbTeamA.SelectedItem.ToString();
            cmbShowTeamB(teamA);
        }

        private void btnSubmit_Click(object sender, EventArgs e)
        {           
            Scoreing fm = new Scoreing();
            fm.TeamA = cmbTeamA.SelectedItem.ToString();
            fm.TeamB = cmbTeamB.SelectedItem.ToString();           
            SelectUser user=new SelectUser();
            fm.Show();
            this.Close();
        }

        private void btnBack_Click(object sender, EventArgs e)
        {
            this.Close();
            SelectUser fm = new SelectUser();
            fm.Show();
        }

    

      
    }
DAL 
public int InsertTeam(string team)//添加队伍信息
       {
           string sql = "insert into VolleyballTeams values(@team)";
           SqlParameter pms = new SqlParameter("@team",team);
           int count = SqlHelper.ExecuteNonQuery(sql,pms);
           return count;
       }
       public SqlDataReader ShowTeamA()//显示A队
       {
           string sql = "select * from VolleyballTeams";
           SqlDataReader reader = SqlHelper.ExecuteReader(sql);
           return reader;
       }
       public SqlDataReader ShowTeamB(string teamA)//显示B对
       {
           string sql = "select * from VolleyballTeams where name !=@teamA";
           SqlParameter pms = new SqlParameter("@teamA",teamA);
           SqlDataReader reader = SqlHelper.ExecuteReader(sql, pms);
           return reader;
       }
       public  void InsertScore(VolleybalScore score)//添加大比分
       {
           string sql = "insert into VolleybalScore values(@team,@victory,@firstScore,@secondScore,@thirdScore,@fourthScore,@fifthScore)";
           SqlParameter[] pms = new SqlParameter[]{
               new SqlParameter("@team",score.Teams),
               new SqlParameter("@victory",score.Victory),
               new SqlParameter("@firstScore",score.firstScore),
               new SqlParameter("@secondScore",score.secondScore),
               new SqlParameter("@thirdScore",score.thirdScore),
               new SqlParameter("@fourthScore",score.fourthScore==null?"null":score.fourthScore),
               new SqlParameter("@fifthScore",score.fifthScore==null?"null":score.fifthScore)
       };
           SqlHelper.ExecuteNonQuery(sql,pms);           
       }
  

程序运行截图在上次的博客中已贴出,本次只是完善了功能,UI并无变动

原文地址:https://www.cnblogs.com/colorful-Ji/p/6221643.html