需求:作为一名现场记分员,我希望详细记录比赛现场比分增长情况,以便观众及运动员、教练员及时掌握比赛状况。(满意条件:每一次比分的改变,都要形成一条记录)。
计划:估计此次工作需要长时间的努力。
需求分析: 程序需要能做到每次分数变化的时候都要记录。
设计文档:
1、排球比赛采用五局三胜制。前四局每局25分,每局比赛完成后交换场地,达到24分时,必须比赛的双方相差2分才能分出胜负;决胜局为15分,比赛的双方任何一方先达到8分时,交换场地继续比赛,当双方同时达到14分时候,也是必须相差两分才能决出胜负。
2、每加一分,数据库中的数据+1,分数列表行+1。
代码如下:
public static class SqlHelper { private static readonly string constr = ConfigurationManager.ConnectionStrings["player"].ConnectionString; public static int ExecuteNonQuery(string sql, params SqlParameter[] pms) { using (SqlConnection con = new SqlConnection(constr)) { using (SqlCommand cmd = new SqlCommand(sql, con)) { if (pms != null) { cmd.Parameters.AddRange(pms); } con.Open(); return cmd.ExecuteNonQuery(); } } } public static object ExecuteScalar(string sql, params SqlParameter[] pms) { using (SqlConnection con = new SqlConnection(constr)) { using (SqlCommand cmd = new SqlCommand(sql, con)) { if (pms != null) { cmd.Parameters.AddRange(pms); } con.Open(); return cmd.ExecuteScalar(); } } } public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] pms) { SqlConnection con = new SqlConnection(constr); using (SqlCommand cmd = new SqlCommand(sql, con)) { if (pms != null) { cmd.Parameters.AddRange(pms); } try { con.Open(); return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection); } catch (Exception) { con.Close(); con.Dispose(); throw; } } } public static DataTable ExecuteDataTable(string sql, params SqlParameter[] pms) { DataTable dt = new DataTable(); using (SqlDataAdapter adapter = new SqlDataAdapter(sql, constr)) { if (pms != null) { adapter.SelectCommand.Parameters.AddRange(pms); } adapter.Fill(dt); } return dt; } internal static void ExecuteDataTable() { throw new NotImplementedException(); } } } 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); } 第一局: if (int.Parse(txtone.Text) < 25) { int a = int.Parse(txtone.Text); a++; txtone.Text = a.ToString(); int c = int.Parse(txtone2.Text); if (a == 25 && a - 1 > c) { MessageBox.Show("第一局" + btnwin1.Text); lblfirst.Text = "第一局比分是" + txtone.Text + ":" + txtone2.Text; int b = int.Parse(txtscore1.Text); b++; txtscore1.Text = b.ToString(); } } else { int a = int.Parse(txtone.Text); a++; txtone.Text = a.ToString(); int c = int.Parse(txtone2.Text); if (a - 1 > c) { MessageBox.Show("第一局" + btnwin1.Text); lblfirst.Text = "第一局比分是" + txtone.Text + ":" + txtone2.Text; int b = int.Parse(txtscore1.Text); b++; txtscore1.Text = b.ToString(); } } } else if (int.Parse(txtscore1.Text) + int.Parse(txtscore2.Text) ==1) { //第一局结束 将数据放入到数据库中 ChaRuDAL dal = new ChaRuDAL(); //插入第一队球员信息 public int insert(string name,string score) { return dal.insert(name,score); } //插入第二队队球员信息 public int insert1(string name,string score) { return dal.insert1(name,score); } 工作人员查询 public DataTable getAllName() { string sql = "select distinct name from one"; return SqlHelper.ExecuteDataTable(sql,null); } //查询最高分 string sql = "select count(*) as name,score from one group by score order by count(*) desc;"; SqlDataReader dr=SqlHelper.ExecuteReader(sql,null); if (dr.HasRows) { dr.Read(); name= "@name"; score= dr["score"].ToString(); } 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 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(); 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(); textBox1.Text = sb.ToString(); } else { MessageBox.Show("操作失败"); } }
个人总结: 上个学期,没学好,这学期我要努力奋斗。