排球计分

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

计划:估计此次工作需要长时间的努力。

需求分析: 程序需要能做到每次分数变化的时候都要记录。

设计文档:

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("操作失败");
 }

}

个人总结: 上个学期,没学好,这学期我要努力奋斗。

时间: 2024-10-11 14:24:22

排球计分的相关文章

排球计分程序

需求:作为一名现场记分员,我希望详细记录比赛现场比分增长情况,以便观众及运动员.教练员及时掌握比赛状况.(满意条件:每一次比分的改变,都要形成一条记录). 计划:估计此次工作需要一周的时间. 需求分析: 根据用户需求可知我们此次程序需要做到每次分数变化的时候都要记录.当记分员操作之后就要形成记录. 设计文档: 数据关系图: Team(队伍表) 字段 数据类型 说明 Num Vchar(10) 队伍的编号(主键) Name Vchar(50) 队伍的名称 Athlete(队员表) 字段 数据类型

排球计分程序重构(一)

前言: 上学期制作的排球计分程序,本次重构主要进行了一些功能性的完善,能够查询队伍比分,以及计分精确到队员. 已经将网站发布到我的服务器上面可以浏览 http://www.colorfulhy520.top:82/Home/Index 进入正题: 初步计划将文章系列分为以下几篇: 1.综述 2.数据库设计 3.Controller和View设计 4.代码讲解 5.总结 运用到的技术 1.Petapoco PetaPoco是一款适用于.NET应用程序的轻型对象关系映射器(ORM, Object R

MVC实战之排球计分(一)—— 需求分析与数据库设计

一.需求分析: 这个程序是排球计分程序,其业务非常简单,具体如下: 1.本程序可以选择用户身份,通过不同角度记录比赛分数. 2.不同身份记录的比赛成绩将会存储在不同的数据表(目前适合运动员和观众使用). 3.用户键入数据后,可以继续对数据进行操作(如:删除.修改.查看详情). 4,不同的身份的用户 ,不能修改非己的数据.只能修改自己的数据. 这个项目的用例图如下: 数据库设计:设计数据表之前,首先进行实体和关系的识别与确定.通过需求分析,可以观察得出,本项目的实体有:观众,运动员.(观众可以修改

排球计分规则之三层架构

需求: 作为一名现场记分员,我希望详细记录比赛现场比分增长情况,以便观众及运动员.教练员及时掌握比赛状况.(满意条件:每一次比分的改变,都要形成一条记录). 计划: 估计此次工作需要一周的时间. 需求分析: 根据用户需求可知我们此次程序需要做到每次分数变化的时候都要记录.当记分员操作之后就要形成记录. 设计文档: 根据<2015-2016赛季中国排球联赛竞赛规程>,计分规则如下: 1.目前的排球比赛采用五局三胜制.前四局每局25分,每局比赛完成后交换场地,达到24分时,必须比赛的双方相差2分才

排球计分规则3.17

用户故事: 作为一名现场记分员,我希望详细记录比赛现场比分增长情况,以便观众及运动员.教练员及时掌握比赛状况.(满意条件:每一次比分的改变,都要形成一条记录) 运行截图: 下附代码: ---------historySelect.cs---------- using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using Sys

排球计分程序——简单显示比分界面

作业:作为一个观众,我希望了解某一场比赛的比分,以便了解赛况.(满意条件:精确到每一局的结果比分)排球计分程序之--用户故事. 根据我当前的能力和老师要求,我想的页面效果大概是这样: 数据库的表: 运行效果如下: 选择第三局: 已胜局数还没写出来,比赛最终结果还没写出来: 部分代码如下: public class PartResult { public int partNum { get; set; } public int resultA { get; set; } public int re

排球计分规则小结

排球比赛计分规则为:目前的排球比赛采用五局三胜制.前四局每局25分,每局比赛完成后交换场地,达到24分时,必须比赛的双方相差2分才能分出胜负:决胜局为15分,比赛的双方任何一方先达到8分时,交换场地继续比赛,当双方同时达到14分时候,也是必须相差两分才能决出胜负.排球计分的发展历程:1917年规定每局为15分.1918年规定上场运动员每队为6人.1922年规定每方必须在3次以内将球击过网.比赛方法以前采用发球得分制,1998年10月28日国际排联决定改为每球得分制,仍为五局三胜,前四局每局先得2

ASP.NET MVC 排球计分程序 (一)综述

---恢复内容开始--- 本篇博客主要是为了用MVC来做出一个排球的计分程序,该计分程序主要实现的功能有,将两队队员的姓名和其对应的球衣号插入数据库,根据在场上的表现,由记分员记录两队的发球,扣球,拦网等得分情况,在比赛过程中可以实现自动判断是否到达获胜比分,是否获得本场比赛的胜利.当比赛胜时.可以查询出本场的MVP,以及最佳得分员,最佳发球员等数据. 初步计划将这个文章系列分为以下几篇: 1.综述 2. 一些排球计分的基本实现方 3.需求分析与数据库设计 4.实体类和SQLHelper类的设计

ASP.NET MVC 排球计分程序 (三)需求分析与数据库设计

需求分析: 软件名称:排球计分程序 1.  需要键入比赛人员的的姓名,需要根据场上的比赛结果及时做出操作,记分员可以在记错的情况下撤销上一部操作.比赛结束,记分员应能查询到每个队伍的进球情况,以及拦网.击球等的最高分.全场MVP. 2.系统界面:两队比赛,每次有队伍得分,由记分员向系统内输入数据,将该队的分数通过单击按钮的方式加分,每次加分,将分数写入数据库.也应有减分的按钮,每次减分,写入数据库. 系统内:自动计算每队的得分情况是否达到该局胜利,如果胜利及时显示该局胜利的消息. 最后输出:每单

ASP.NET MVC 排球计分程序 (四)实体类和SqlHelper类的设计

整体解决方案的图如下: . 在Model里添加一个叫PersonA的类 public class PersonA { public int id { get; set; } public string name { get; set; } } 添加一个叫PersonB的类 public class PersonB { public int id { get; set; } public string name { get; set; } } 添加一个叫ScoreA的类 public class