计划:
估计这个任务需要多少时间完成: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并无变动