排球计分程序重构

需求:作为一名现场记分员,我希望详细记录比赛现场比分增长情况,以便观众及运动员、教练员及时掌握比赛状况。(满意条件:每一次比分的改变,都要形成一条记录)。

计划:估计此次工作需要两周的时间。

需求分析:每次计分的时候都会产生一条记录,并且有详细的比分情况,此次新加了一个精确到得分选手,需要对数据库新加表,并建立外键。而且之前的数据结构需要变化一下。

类图

流程图

程序截图:

代码:

UI层
volleyBll bll = new volleyBll();
        private void xiangxibifen_Load(object sender, EventArgs e)
        {
            dataGridView1.DataSource= bll.selectxiangxidefen();
            DataTable dt = bll.selectxiangxidefen();
            for (int i = 0; i <dt.Rows.Count;i++) 
            {    int j=0;
                 
                if (dt.Rows[i][2] == DBNull.Value)
                { continue;  }
                else
                {
                     j= Convert.ToInt32(dt.Rows[i][2]);
                }
                
               
               dataGridView1.Rows[i].Cells[0].Value = bll.selecxuanshou(j, 1);
              
            }
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                int k = 0;
                if (dt.Rows[i][4] == DBNull.Value)
                { continue; }
                else
                {
                    k = Convert.ToInt32(dt.Rows[i][4]);
                }
                dataGridView1.Rows[i].Cells[1].Value = bll.selecxuanshou(k, 7);
            }
        }
BLL
  public DataTable selectxiangxidefen()
        {
            return dal.Selectxiangxidefen();
        }
        public string selecxuanshou(int serialnum, int team)
        {
            return dal.selecxuanshou(serialnum,team);
        }
Dal
 public DataTable Selectxiangxidefen()
        {
            string sql = "select * from score";
            DataTable dt = SqlHelper.ExecuteDataTable(sql);
            return dt;
        }
        public string selecxuanshou(int serialnum, int team)
        {
            string duiyuan = "";
            string sql = "select  name ,dute from team where serialnum=@serialnum and teamnum=@team ";
            SqlParameter[] pms ={
                 new SqlParameter("@serialnum",serialnum),
           new SqlParameter("@team",team)
           
           };
            SqlDataReader reader = SqlHelper.ExecuteReader(sql, pms);
            if (reader.HasRows)
            {
                while (reader.Read())
                {
                    duiyuan = reader[0].ToString() + reader[1].ToString();

                }
               
            }
            return duiyuan;
        }

代码复审正在进行,此次还是有些地方比如业务逻辑层并没有处理好,可以通过传参数的方法。但是遇到一个问题,数据库的表的外键不知道怎么去创建,所以部分地方不太完美,表没有真正的连接起来。

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