zoukankan      html  css  js  c++  java
  • 新需求下的排球计分程序

    暑假针对不同的需求对学期末的排球计分程序进行了重构。记录如下:

    当然在做这个程序的时候,也一定会用到我们平时所学的其他技术:

    1.C#语言

    2.ASP.NET  MVC

    3.关系数据库基础知识

    4.软件工程基础知识

    5.PetaPoco技术

    6.JQuery,Ajax

    7.UiIKit  H5框架。

    8.T4模板。

    需求:

    作为一名教练员,我希望知道详细得分信息,以便于了队员的状态。

    设计文档

    在参考我们平时使用的比赛网站做出如下设计文档:

    首先我们进入首页,首页我们选择业务项目,之后进入具体的业务页面,使用活动图表示如下:

    比分变化关系按照《2015-2016赛季中国排球联赛竞赛规程》,计分规则如下:

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

    2、每点击一次按钮,分数列表就增加一行。

    3、己方失误时。对方增加一分。

    以下为数据表设计

    Athlete为运动员信息表:

    Id为队员ID

    AthleteName为运动员员姓名

    TeamId为运动员所属队伍ID

    Stature为运动员身高

    Weight为运动员体重

    Place为运动员号码

    Arae为运动员所属地区

    Team为队伍表:

    Id为队伍ID

    TeamName为队伍名字

    Game为比赛表

    Id为比赛ID

    RaceNumber为比赛编号

    HomeTeamId为主队队伍ID

    HomeTeamSco为主队比分

    GuestTeamId为客队队伍ID

    GuestTeamSco为客队队伍比分

    Section为小节表:

    Id为小节ID(标识)

    GameId为小节所属比赛ID

    SectionNum为小节数

    HomeTeamId为主队队伍ID

    HomeSecSco为主队小节得分

    GuestTeamId为客队队伍ID

    GuestSecSco为客队小节得分

    Bout为回合表

    Id为小节Id(标识)

    GameId为回合所属比赛ID

    SectionNum为回合所属小节数

    HomeTeamId为主队队伍ID

    HomeSco为主队回合得分

    HomeScoDetails为主队得分详情

    GuestTeamId为客队队伍ID

    GuestSecSco为客队小节得分

    GuestScoDetails为客队队得分详情

    控制器设计

    Index包含比赛管理和新闻展示。

    Main为计分台部分。

    Management为队伍管理,运动员管理。

    数据库操作方面由PetaPoco插件和T4模板所生成(Database First)

    具体步骤参照了yan_xiaodi的博客。

    以下为具体编码:


    本次采用布局页_Layout.cshtml

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <meta charset="utf-8" />
     5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     6     <title>@ViewBag.Title</title>
     7     <script src="~/Content/js/jquery-3.2.1.js"></script>
     8     @*<script src="~/Content/js/jquery.js"></script>*@
     9     <script src="~/Content/js/jquery.validate.min.js"></script>
    10     <script src="~/Content/js/jquery.validate.unobtrusive.min.js"></script>
    11     <script src="~/Content/js/jquery.unobtrusive-ajax.min.js"></script>
    12     <link href="~/Content/Css/uikit.css" rel="stylesheet" />
    13 </head>
    14 <body>
    15     <div>
    16         <nav class="uk-navbar">
    17             <ul class="uk-navbar-nav">
    18                 <li><a href="~/Index/Index">首页</a></li>
    19                 <li><a href="~/Main/Index">计分台</a></li>
    20                 <li class="uk-parent">
    21                     <a href="">管理</a>
    22                     <div class="uk-dropdown uk-dropdown-navbar">
    23                         <ul class="uk-nav uk-nav-navbar">
    24                             <li><a href="">队伍</a></li>
    25                             <li><a href="">队员</a></li>
    26                             <li><a href="">比赛</a></li>
    27                         </ul>
    28                     </div>
    29                 </li>
    30             </ul>
    31         </nav>
    32     </div>
    33   
    34         @RenderBody()
    35 </body>
    36 </html>

    Index主页

    @model List<Game>
    
        <div class="uk-slidenav-position" data-uk-slideshow>
            <ul class="uk-slideshow">
                <li><img src="~/Content/images/20741-106.jpg" width="200" height="90" alt=""></li>
                <li><img src="~/Content/images/278346-106.jpg" width="200" height="90" alt=""></li>
                <li><img src="~/Content/images/310745-106.jpg" width="200" height="90" alt=""></li>
            </ul>
            <ul class="uk-dotnav uk-dotnav-contrast uk-position-bottom uk-flex-center">
                <li data-uk-slideshow-item="0"><a href="#">Item 1</a></li>
                <li data-uk-slideshow-item="1"><a href="#">Item 2</a></li>
                <li data-uk-slideshow-item="2"><a href="#">Item 3</a></li>
            </ul>
        </div>
    
    
    
    <table id="PageList" class="uk-table">
        <tbody>
            <tr>
                <th>比赛编号</th>
                <th>主队</th>
                <th>比分</th>
                <th>客队</th>
                <th>操作</th>
            </tr>
            @{
                foreach (var item in Model)
                {
    
                    <tr>
                        <td>@item.RaceNumber</td>
                        <td>
                        @{ 
                            string homeName = Team.Fetch("select * from Team where Id ="+item.HomeTeamId+"").FirstOrDefault().TeamName;
                            @Html.Raw(homeName);
                           
                        }
                        </td>
                        <td>@item.HomeTeamSco : @item.GuestTeamSco</td>
                        <td>
                            @{
                                string guestName = Team.Fetch("select * from Team where Id =" + item.GuestTeamId + "").FirstOrDefault().TeamName;
                               @Html.Raw(guestName);
                            }
                        </td>
                        <td>查看</td>
                    </tr>
                }
            }
        </tbody>
    </table>

    Mian下选择队伍页:

     1 @using (Ajax.BeginForm(new AjaxOptions {
     2     Url= "/Teams/AddTeam",
     3     HttpMethod = "Post",
     4     OnSuccess = "success",
     5     OnBegin = ""
     6 }))
     7 {
     8     <div class="layui-form" style="100%;height:300px;">
     9         <div style="margin-left:35%; margin-bottom:30px;margin-top:10px;" ><img class="layui-anim layui-anim-fadein layui-anim-rotate " src="~/Content/Image/rabbit.gif"/></div>
    10         <div class="layui-form-item">
    11             <label class="layui-form-label">队名</label>
    12             <div class="layui-input-block">
    13                 <input type="text" name="teamName" id="teamName" placeholder="请输入队名" autocomplete="off" class="layui-input">
    14             </div>
    15         </div>
    16         <div class="layui-form-item">
    17             <div class="layui-input-block" style="text-align:center;">
    18                 <input type="submit" class="layui-btn" id="btn" value="立即提交" />
    19             </div>
    20         </div>
    21     </div>
    22 }
    23 <script>
    24     function success(data) {
    25         if (data == "添加成功") {
    26             layer.msg(data, { icon: 1 });
    27             setTimeout("window.location = '/Teams/GetTeams'", 2000);
    28         }
    29         else {
    30             layer.msg(data, { icon: 2 });
    31         }
    32     }
    33 </script>

    Mian下计分台

    <div class="uk-grid" style="80%; text-align:center; margin-left:9%;margin-top:10px;">
    @using (Ajax.BeginForm(new AjaxOptions
    {
        Url = "/Scoreing/ScoreTwo",
        HttpMethod = "Post",
        OnSuccess = "success",
        OnBegin = ""
        //Confirm= "isOK"
    }))
    { <fieldset class="layui-elem-field ">
            <legend>计分板</legend>
            <div class="layui-field-box">
                <div class="layui-form">
                    <div class="layui-form-item">
                        <input type="hidden" value="@ViewBag.Id" id="CompetitionId" name="CompetitionId" />
                        <input type="hidden" value="@ViewBag.HomeTeamId" id="HomeTeamId" name="HomeTeamId" />
                        <input type="hidden" value="@ViewBag.GuestTeamId" id="GuestTeamId" name="GuestTeamId" />
                        <input type="hidden" value="1" id="Innings" name="Innings" />
                        <input type="hidden" name="HomeTeamDetailScore" id="InputHomeTeamDetailScore" value="0">
                        <input type="hidden" name="GuestTeamDetailScore"  id="InputGuestTeamDetailScore" value="0">
                        <label class="layui-form-label" style="margin-left:42%;font-size:24px; color:#FF5722;" id="inningsStr">第1局</label>
                    </div>
                    <div class="layui-form-item" style="300px;height:100px;margin-left:23%;font-size:18px; color:#FF5722;">
                        <label class="layui-form-label" id="HomeTeamName">@ViewBag.HomeTeamName</label>
                        <label class="layui-form-label" id="HomeTeamDetailScore">0</label>
    
    
                    </div>
    
                    <div class="layui-form-item" style="300px;height:100px;float:right;margin-top:-115px; margin-right:25%;font-size:18px; color:#FF5722;">
    
                        <label class="layui-form-label" id="GuestTeamDetailScore">0</label>
                        <label class="layui-form-label" id="GuestTeamName">@ViewBag.GuestTeamName</label>
    
                    </div>
                    <div class="layui-form-item">
                        <div class="layui-input-block">
                            <input type="button" class="layui-btn" id="homeTeamScorebtn" style="margin-left:30%;" value="主队得分" />
                            <input type="button" class="layui-btn" id="guestTeamScorebtn" style="margin-left:10%;" value="客队得分" />
                        </div>
                    </div>
    
    
                    @*//-----------------------------------------------------------------------主队得分选择队员面板*@
    
                    <div class="layui-form" id="homeTeamScorediv" style="margin-top:30px;margin-left:36%;">
                        <div class="layui-form-item">
                            <label class="layui-form-label">得分队员</label>
                            <div class="layui-input-inline">
                                <select name="HomeTeamMemberId" id="HomeTeamMemberId">
                                    <option value="0" selected>请选择队员</option>
                                    @{
                                        List<TeamMember> homeMemberList = ViewBag.HomeMemberList as List<TeamMember>;
                                        foreach (var item in homeMemberList)
                                        {
                                        <option value="@item.Id">@item.MembersName</option>
                                        }
                                    }
                                </select>
                            </div>
                        </div>
                        <div class="layui-form-item">
                            <label class="layui-form-label">得分详情</label>
                            <div class="layui-input-inline">
                                <input type="text" name="HomeTeamDetail" id="HomeTeamDetail" placeholder="请输入得分详情" autocomplete="off" class="layui-input">
                            </div>
                        </div>
                        <div class="layui-form-item">
                            <div class="layui-input-block">
                                <input type="submit" class="layui-btn" value="确定"  id="HomeSubmit" />
                            </div>
                        </div>
    
                    </div>
                    @*//----------------------------------------------------------------------客队得分选择队员面板-*@
                    <div class="layui-form" id="guestTeamScorediv" style="margin-top:30px;margin-left:36%;">
                        <div class="layui-form-item">
                            <label class="layui-form-label">得分队员</label>
                            <div class="layui-input-inline" id="guestTeamMemberDiv">
                                <select name="GuestTeamMemberId" id="GuestTeamMemberId">
                                    <option value="0" selected>请选择队员</option>
                                    @{
                                        List<TeamMember> guestMemberList = ViewBag.GuestMemberList as List<TeamMember>;
                                        foreach (var item in guestMemberList)
                                        {
                                        <option value="@item.Id">@item.MembersName</option>
                                        }
                                    }
                                </select>
                            </div>
                        </div>
                        <div class="layui-form-item">
                            <label class="layui-form-label">得分详情</label>
                            <div class="layui-input-inline">
                                <input type="text" name="GuestTeamDetail" id="GuestTeamDetail" placeholder="请输入得分详情" autocomplete="off" class="layui-input">
                            </div>
                        </div>
                        <div class="layui-form-item">
                            <div class="layui-input-block">
                                <input type="submit" class="layui-btn" value="确定"  id="GuestSubmit"/>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </fieldset>}
    
    
    <script>
        layui.use('form', function () {
            var form = layui.form;
        });
        $("#homeTeamScorediv").hide();
        $("#guestTeamScorediv").hide();
        $("#homeTeamScorebtn").click(function () {
            $("#guestTeamScorediv").fadeOut();
            $("#homeTeamScorediv").show();
            var homeScore = $("#InputHomeTeamDetailScore").val();
            homeScore++;
            $("#HomeTeamDetailScore").html(homeScore);
    
        });
        $("#guestTeamScorebtn").click(function () {
            $("#homeTeamScorediv").fadeOut();
            $("#guestTeamScorediv").show();
            var guestScore = $("#InputGuestTeamDetailScore").val();
            guestScore++;
            $("#GuestTeamDetailScore").html(guestScore);
        });
        $("#HomeSubmit").click(function () {
            $("#homeTeamScorediv").fadeOut();
            var homeScore = $("#InputHomeTeamDetailScore").val();
            homeScore++;
            var guestScore = $("#InputGuestTeamDetailScore").val();
            $("#InputHomeTeamDetailScore").val(homeScore);
            $("#GuestTeamMemberId").val(0);
            $("#GuestTeamDetail").val("");
            victory(homeScore, guestScore);
        });
        $("#GuestSubmit").click(function () {
            $("#guestTeamScorediv").fadeOut();
            var guestScore = $("#InputGuestTeamDetailScore").val();
            guestScore++;
            var homeScore = $("#InputHomeTeamDetailScore").val();
            $("#InputGuestTeamDetailScore").val(guestScore);
            $("#HomeTeamMemberId").val(0);
            $("#HomeTeamDetail").val("");
            victory(homeScore, guestScore);
        });
        function success(data) {
            //if (data == "添加成功") {
            //    layer.msg(data, { icon: 1 });
            //    setTimeout("window.location = '/Teams/GetTeams'", 2000);
            //}
            //else {
            //    layer.msg(data, { icon: 2 });
            //}
        }
        function victory( homeScore, guestScore)
        {
    
            var Innings = $("#Innings").val();
            var HomeTeamId = $("#HomeTeamId").val();
            var GuestTeamId = $("#GuestTeamId").val();
            var CompetitionId = $("#CompetitionId").val();
            if (Innings < 5) {
                if ((parseInt(homeScore) >= 24 || parseInt(guestScore)>=24) && (Math.abs(homeScore - guestScore) >= 2))
                {
                    layer.msg("" + Innings + "局结束", { icon: 1 });             
                    $.post("/Scoreing/HuiHeScore/",
                        {
                            CompetitionId: CompetitionId,
                            Innings: Innings,
                            HomeTeamId: HomeTeamId,
                            GuestTeamId: GuestTeamId,
                            HomeTeamScore: homeScore,
                            GuestTeamScore: guestScore
    
                        }, function (data)
                        {
                            if (data != "ok") {
                                layer.msg("比赛结束", { icon: 1 });
                                setTimeout("window.location = '"+data+"'", 2000);
                            }
                            else
                            {
                                Innings++;
                                $("#Innings").val(Innings);
                                $("#inningsStr").html("" + Innings + "");
                                $("#InputHomeTeamDetailScore").val(0);
                                $("#InputGuestTeamDetailScore").val(0);
                                $("#GuestTeamDetailScore").html(0);
                                $("#HomeTeamDetailScore").html(0);
    
                            }
                        });
                   
                }
            }
            else if (Innings == 5)
            {           
                if ((parseInt(homeScore) >= 15 || parseInt(guestScore) >= 15) && (Math.abs(homeScore - guestScore) >= 2))
                {
                    layer.msg("" + Innings + "局结束", { icon: 1 });
                    $.post("/Scoreing/HuiHeScore/",
                        {
                            CompetitionId: CompetitionId,
                            Innings: Innings,
                            HomeTeamId: HomeTeamId,
                            GuestTeamId: GuestTeamId,
                            HomeTeamScore: homeScore,
                            GuestTeamScore: guestScore
    
                        }, function (data) {
                            if (data != "ok") {
                                layer.msg("比赛结束", { icon: 1 });
                                setTimeout("window.location = '" + data + "'", 2000);
                            }
                        });
                }
                
                
            }
    
        }
    </script>

    以下为UI的表现,主要使用UIKit

    主页

    选择队伍

    计分台

    测试只是简单的进行了流程测试和功能测试。

    经过这次迭代。虽然比起上次有些进步。但是比起预期的设想。还差的很远。文中用到的好多东西还是不太熟练。表单提交和Ajax理解不够全面。希望在以后的迭代中将这些技术融会贯通。

  • 相关阅读:
    课后作业
    课后作业
    课后作业3
    课后作业
    课后作业
    课后作业
    java 加减法2
    java 出计算题
    Java web 登录界面
    构建之法读后感
  • 原文地址:https://www.cnblogs.com/hutengqi/p/7501511.html
Copyright © 2011-2022 走看看