一、计划

          这个程序需要四天。

 二、开发

      1、需求分析:

用户故事:作为一个教练,我希望了解每一场队友和对方的比赛加分和扣分细节,以及所有队员每一场的得分与排行情况,以便于更好的对队员做出战术安排。(满意条件:精确到每一局的结果比分)。

从分析用例故事可以知道完成此程序需要这四项任务:1.选择队伍 2.查看本队比赛情况(外加本场本队的对方情况)3.查询比赛记录 4.链接数据库

      2.设计文档:

赛制分析:

    以奥运会赛制为例:预选赛、小组赛、淘汰赛(四分之一)、半决赛、决赛。预选赛:选出十二支队伍小组赛:单循环赛制,选出以积分排名每组前4,进行八强淘汰,A、B两队A1vsB4,A4vsB1,剩余抽签配对。半决赛:A1/B4胜方VS  A2/B2(B3)胜方;A4vsB1胜方VS  A2/B3(B2)胜方。小组赛排名第6的并列第11名,第5的并列第9名,淘汰赛负方并列第5,。小组赛排名由总分决定。若平局。按获胜次数决定,按输赢比率决定,按得分比率决定,按最后一场获胜代表队排名靠前。

积分规则

若为3:0或3:1,胜者得3分,负者不得分。若为3:2,胜者2分,负者1分。

    3.设计复审:

       由寝室的室友进行复查,提出建议。

4.代码规范:

根据Visual Studio 2010规范去写。

5.具体设计:

      我制定的积分规则如下:

1、计分方式:比赛结果为3:0、3:1时,胜队积3分,负队积0分;比赛结果为3:2时,胜队积3分,负队积2分;积分高者排名在前。

2、当积分相等时,决定名次顺序为:①谁的胜场多;②每局比分的差距

           活动图:

6.具体编码:(以下为代码)

private void lblIndex_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)//跳转到查询页面
        {
            this.Close();
            historySelect a = new historySelect();
            a.Show();
        }

private void begin_Click(object sender, EventArgs e)//比赛开始并且检测是否为空
        {
            if (textName.Text.Trim() == "" || Ateam.Text.Trim() == "" || Bteam.Text.Trim() == "")
            {
                MessageBox.Show("比赛名、队伍名均不能为空");
            }
            else
            {
                writeHistory1 w = new writeHistory1();
                w.bisai(textName.Text);
                w.TeamA(Ateam.Text);
                w.TeamB(Bteam.Text);
                w.Show();
                this.Close();
            }
            
        }

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)//退出
        {
           Application.Exit();
        }

计分界面:

int sA, sB;
        StringBuilder sb = new StringBuilder();
       
        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);
        }
        public void insertPM( string team,int score,int chang,int ju) //排名插入
        {
            string sql = "insert into paiming values(@game,@team,@score,@chang,@ju)";
            SqlParameter[] sp = {
                                    new SqlParameter("@game",name.Text),
                                    new SqlParameter("@team",team),
                                    new SqlParameter("@score",score),
                                    new SqlParameter("@chang",chang),
                                    new SqlParameter("@ju",ju)    
                                    };
            SqlHelper.ExecuteNonQuery(sql, sp);
        }
        public void update(string team, int score, int chang, int ju) 
        {
            string sql = "update paiming set score=@score,chang=@chang,ju=@ju where dname=@team";
            SqlParameter[] sp = {
                                    new SqlParameter("@score",score),
                                    new SqlParameter("@chang",chang),
                                    new SqlParameter("@ju",ju),
                                    new SqlParameter("@team",team)
                                };
            SqlHelper.ExecuteNonQuery(sql, sp);
        }
        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 B_Click(object sender, EventArgs e)//乙方加分
        {
            int a = int.Parse(scoreB.Text) + 1;
            int b = int.Parse(scoreA.Text);
            sb.AppendFormat("{0}:{1}={2}:{3}\r\n", teamA.Text, teamB.Text, b, a);
            
            int i = Convert.ToInt32(lblNum.Text.Substring(1, 1));
            int sa = Convert.ToInt32(lblB.Text);
            scoreB.Text =a.ToString();
            if (i < 5)
            {
                if (a >= 25 && a - b >= 2)
                {
                    string str = string.Format("本局乙方:{0}胜",teamB.Text);
                    MessageBox.Show(str);
                    scoreA.Text = "0";
                    scoreB.Text = "0";
                    sa++; i++;
                    lblB.Text = (sa).ToString();
                    lblNum.Text = "第" + i + "局";
                    sb.AppendFormat("第{0}局  {1}:{2}={3}:{4}  本局{5}胜\r\n", i - 1, teamA.Text, teamB.Text, b, a, teamB.Text);
                    switch (i - 1)
                    {
                        case 1: one = string.Format("{0}:{1}", b, a); break;
                        case 2: two = string.Format("{0}:{1}", b, a); break;
                        case 3: three = string.Format("{0}:{1}", b, a); break;
                        case 4: four = string.Format("{0}:{1}", b, a); break;
                    }
                }
            }
            else
            {
                if (a >= 15 && a - b >= 2)
                {
                    sb.AppendFormat("第{0}局  {1}:{2}={3}:{4}  本局{5}胜\r\n", i-1,teamA.Text,teamB.Text ,b, a,teamB.Text);
                    string str = string.Format("本局乙方:{0}胜", teamB.Text);
                    MessageBox.Show(str);
                    sa++;
                    lblB.Text = (sa).ToString();
                    five = string.Format("{0}:{1}", b, a);
                }
            }
            if (sa == 3) {
                sb.AppendFormat("本场比赛乙方:{0}胜\r\n比赛结束", teamB.Text);
                string str = string.Format("本场比赛{0}胜", teamB.Text);
                win.Text = str;
                win.Visible = true;
                A.Visible = false;
                B.Visible = false;
                insert(teamB.Text);
                if (lblA.Text == "2") { sB = 2; sA = 1; }
                else { sB = 3; sA = 0; }
                select(teamB.Text.ToString(), sB, 1, sa);
                select(teamA.Text.ToString(), sA, 0, Convert.ToInt32(lblA.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();
                sb.AppendFormat("比赛受到争议:甲方减分\r\n{0}:{1}={2}:{3}\r\n", teamA.Text, teamB.Text, a, b);
                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();
                sb.AppendFormat("比赛受到争议:乙方减分\r\n{0}:{1}={2}:{3}\r\n", teamA.Text, teamB.Text, a, b);
                textBox1.Text = sb.ToString();
            }
            else
            {
                MessageBox.Show("操作失败");
            }
        }

比赛记录查询:

private void cmbLoad()
        {
            cmbName.Items.Clear();

string sql = "select game from paiqiu";
            SqlDataReader reader = SqlHelper.ExecuteReader(sql);
            if (reader.HasRows)
            {
                while (reader.Read())
                {
                    cmbName.Items.Add(reader[0]);
                }
            }
            reader.Close();
        }
        private void dgvLoad()
        {
            string sql = "select * from paiqiu";
            dgvGame.DataSource = SqlHelper.ExecuteDataTable(sql);
        }
        private void Form2_Load(object sender, EventArgs e)
        {
            cmbLoad();
            dgvLoad();
            
        }

private void select_Click(object sender, EventArgs e)//单个查询
        {
            StringBuilder sql = new StringBuilder("select * from paiqiu where 1=1");
            if (!string.IsNullOrEmpty(cmbName.Text))
            {
                sql.Append(" and game like '%" + cmbName.Text + "%'");
            }
            SqlDataReader reader= SqlHelper.ExecuteReader(sql.ToString());
            if (reader.HasRows)
            {
                dgvGame.DataSource = SqlHelper.ExecuteDataTable(sql.ToString());
            }
            else 
            {
                MessageBox.Show("没有查询到比赛记录!");
            }
        }

private void lblWrite_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)//跳转计分页面
        {
            this.Close();
            writeHistory0 a = new writeHistory0();
            a.Show();
        }

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
             Application.Exit();
        }

private void dgvGame_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            int x = e.ColumnIndex;
            int y = e.RowIndex;
            if(x==0&&y!=-1)
            {
                child ch = new child();
                ch.xq(dgvGame.CurrentRow.Cells[11].Value.ToString());
                ch.Show();
            }

}

private void button1_Click(object sender, EventArgs e)
        {
            selectPM sp = new selectPM();
            sp.Show();
        }

比赛排名查询:

private void selectPM_Load(object sender, EventArgs e)
        {
            string sql = "select * from paiming";
            dgvPM.DataSource = SqlHelper.ExecuteDataTable(sql);
            for (int i =1 ; i < dgvPM.Rows.Count+1 ; i++)
            {
                dgvPM.Rows[i-1].Cells["ranking"].Value = i;
            }
        }

private void dgvPM_Sorted(object sender, EventArgs e)
        {
            for (int i = 1; i < dgvPM.Rows.Count + 1; i++)
            {
                dgvPM.Rows[i - 1].Cells["ranking"].Value = i;
            }
        }

 运行截图:

          7.代码复审:

          由寝室室友进行复审,查漏补缺。

 8.测试:测试三次(通过)

三、报告

          1.测试报告:

2.计算工作量:实际工作时间为4天零8个小时。

3.事后总结与过程改进计划:

           排球积分程序完成后我发现了自己有很多不足的地方,首先对于一开始的目标不明确,不知如何下手,出发点不清而浪费了好多时间;其次在设计过程中尤其是代码编写的过程中遇到了不小的问题,很多老师讲过的都不太会,这点以后必须要改进,有些重要地方需要做下笔记;最后对于这个积分程序还有很多的不足,可以说是个半成品,这如果是在公司里做项目是绝对不允许的,随后两天我会把这个程序再完善下,期间出现的bug还没来的及修改。总体来说这是我第一次做这个工程,共勉吧!

转载于:https://www.cnblogs.com/niu5606993/p/6257293.html

排球积分程序最后 冲刺相关推荐

  1. 排球积分程序(二)——需求分析

    不啰嗦,直接进入需求分析环节. 需求分析: 这个项目是一个排球积分程序,可以把功能分为两部分,一是积分,另一部分是查积分. 一:积分: 1.首先介绍排球比赛积分规则 排球比赛采用五局三胜制,胜三局的队 ...

  2. 排球积分程序(三)——模型类的设计

    ---恢复内容开始--- 模型类 根据需求的要求需要一个队伍类,一个队员类,一个主队比分类,一个客队比分类(这两个类可以合成一个,但是建立外键的时候两个外键不知道该怎么去解决,于是分开了) 队伍模型 ...

  3. 排球计分程序(三)—— 模型类的设计与实现

    通过EF框架设计模型生成数据图和表: 1)添加运动员模型类: namespace 排球计分程序.Models {     public class Ball     {         public ...

  4. 衔接上一学期:排球积分规则

    一.计划           这个程序开发时间:两周.  二.开发       1.需求分析: 用户故事:作为一个教练,我希望了解每一场队友和对方的比赛加分和扣分细节,以及所有队员每一场的得分与排行情 ...

  5. 排球计分程序功能说明书

    目标: 帮助排球裁判计分,以减轻裁判的负担.并记录比赛计分的过程.目标不包括犯规的判定.详细的了解了比赛计分规则之后及用户需要所形成的汇总.通过这个文档能够明确以后项目的进度与规划,组织软件的开发与测 ...

  6. STM32F103系列驱动MH-Z14A 二氧化碳(CO2)传感器详解,使用串口输出读取(后附免费免积分程序下载链接)

    MH-Z14A 二氧化碳传感器概述         MH-Z14A 二氧化碳气体传感器(以下简称传感器)是一个通用智能小型传感器,利用非色散红外(NDIR)原理对空气中存在的 CO2进行探测,具有很好 ...

  7. 连续签到程序逻辑分析以及做任务赚积分程序逻辑分析【完整版】

    签到程序逻辑分析 流程图SVG代码 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www. ...

  8. ofdm解调中 累加器(2048个离散波点)代替积分 程序 哪位大神帮帮忙完全没有头绪

    ofdm解调中 积分 那部分可以用累加器代替 rom是512个点 一个T码元周期里有2048个点 与载波相乘之后的 累加器 完全不懂怎么写 求大神指导 写个程序参考 (T=2048)  MULT输出的 ...

  9. java设计篮球积分程序_java毕业设计_基于java的篮球赛事管理系统

    随着学校的规模不断扩大,学生人数急剧增加,有关学生的篮球赛事信息也成倍增长.面对庞大的信息量,有必要开发篮球比赛邀约系统来提高对篮球比赛邀约的管理工作的效率. 本篮球比赛邀约系统选用Windows作为 ...

  10. php会员签到送积分程序,PHP用户连续签到赠送额外积分

    class IntegralService{ /** * [积分赠送日志]公共方法 * @param $userId 用户ID * @param $fkType 赠送类型:1:新用户注册:2用户签到: ...

最新文章

  1. 传统自定义标签(2)-Tag接口的执行流程(包含执行顺序的图片)
  2. Zookeeper系列(十)zookeeper的服务端启动详述
  3. 如何维持手机电池寿命_一块能用百年的手机电池将诞生,你愿意花高价购买吗?...
  4. 南宁师范大学计算机与信息工程学院研究生,南宁师范大学计算机与信息工程学院(专业学位)职业技术教育保研...
  5. 1075: 聚餐人数统计
  6. jvm系列(十):教你如何成为Java的OOM Killer
  7. LeetCode 21. 合并两个有序链表 golang
  8. 如何化身BAT面试收割机?不吃透都对不起自己
  9. 前端学习(2352):view组件的使用
  10. Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine
  11. 【HDU3530】 [Sdoi2014]数数 (AC自动机+数位DP)
  12. linux su root 免密码,Ubuntu 18.04.2切换到root用户的三种方式及设置免密码操作
  13. Asp.net AJAX JavaScript 基本类型扩展(7)——String 类型及其扩展
  14. spring boot demo(spring jdbc访问数据)
  15. linux操作系统死机处理办法
  16. C语言从键盘输入1605,山东理工大学ACM平台题答案关于C语言 1605 Balloon Comes!
  17. 七牛非Cocoapods 手动集成霹雳直播SDK(通用版)
  18. SQLserver分离数据库
  19. 如何配置谷歌浏览器_如何科学地使用Chrome?下载谷歌浏览器?
  20. 什么是oop,你对他是怎么理解的

热门文章

  1. VIOS查看网卡对应的插槽
  2. PFC离散元与FLAC3D数值仿真核心技术与应用” 线上培训
  3. 中华第一考----系统架构设计师考试
  4. convexHull实现
  5. hive分隔符_Hive表字段、行、map默认分隔符
  6. Jest测试框架入门之快照测试(附踩坑指南)
  7. 安装SSMS报错:0x80070643
  8. ip地址:string和int互转方案
  9. Error: Unbalanced delimiter found in string
  10. (3)Android常见界面控件