zoukankan      html  css  js  c++  java
  • MVC项目实践(五)——逻辑操作的实现

    接下来是逻辑操作的实现,直接决定了各页面中的各个操作类需要实现何种操作,它明确了各个页面的职责。

    由设计文档可以知道我们的第一个页面为选择业务:

     1 @model VolleyballScoring.Models.Team
     2 
     3 @{
     4     ViewBag.Title = "Index";
     5 }
     6 
     7 <h2>Index</h2>
     8 <h3>选择你想要进行的事情</h3>
     9 <div>@Html.ActionLink("查询队伍","Index","Teams")</div>
    10 <div>@Html.ActionLink("计分台","Scoring")</div>
    11 <div>@Html.ActionLink("观看比赛","Index","Audience")</div>

    以下为队伍的控制器操作:

      1 namespace VolleyballScoring.Controllers
      2 {
      3     public class TeamsController : Controller
      4     {
      5         private VolleyballDBContext db = new VolleyballDBContext();
      6 
      7         //
      8         // GET: /Teams/
      9 
     10         public ActionResult Index()
     11         {
     12             return View(db.Teams.ToList());
     13         }
     14 
     15         //
     16         // GET: /Teams/Details/5
     17 
     18         public ActionResult Details(int id = 0)
     19         {
     20             Team team = db.Teams.Find(id);
     21             if (team == null)
     22             {
     23                 return HttpNotFound();
     24             }
     25             return View(team);
     26         }
     27 
     28         //
     29         // GET: /Teams/Create
     30 
     31         public ActionResult Create()
     32         {
     33             return View();
     34         }
     35 
     36         //
     37         // POST: /Teams/Create
     38 
     39         [HttpPost]
     40         public ActionResult Create(Team team)
     41         {
     42             if (ModelState.IsValid)
     43             {
     44                 db.Teams.Add(team);
     45                 db.SaveChanges();
     46                 return RedirectToAction("Index");
     47             }
     48 
     49             return View(team);
     50         }
     51 
     52         //
     53         // GET: /Teams/Edit/5
     54 
     55         public ActionResult Edit(int id = 0)
     56         {
     57             Team team = db.Teams.Find(id);
     58             if (team == null)
     59             {
     60                 return HttpNotFound();
     61             }
     62             return View(team);
     63         }
     64 
     65         //
     66         // POST: /Teams/Edit/5
     67 
     68         [HttpPost]
     69         public ActionResult Edit(Team team)
     70         {
     71             if (ModelState.IsValid)
     72             {
     73                 db.Entry(team).State = EntityState.Modified;
     74                 db.SaveChanges();
     75                 return RedirectToAction("Index");
     76             }
     77             return View(team);
     78         }
     79 
     80         //
     81         // GET: /Teams/Delete/5
     82 
     83         public ActionResult Delete(int id = 0)
     84         {
     85             Team team = db.Teams.Find(id);
     86             if (team == null)
     87             {
     88                 return HttpNotFound();
     89             }
     90             return View(team);
     91         }
     92 
     93         //
     94         // POST: /Teams/Delete/5
     95 
     96         [HttpPost, ActionName("Delete")]
     97         public ActionResult DeleteConfirmed(int id)
     98         {
     99             Team team = db.Teams.Find(id);
    100             db.Teams.Remove(team);
    101             db.SaveChanges();
    102             return RedirectToAction("Index");
    103         }
    104 
    105         protected override void Dispose(bool disposing)
    106         {
    107             db.Dispose();
    108             base.Dispose(disposing);
    109         }
    110     }
    111 }

    其他实体类的控制器与之大同小异,就不在此赘述。

    下面是操作双方得分的接口:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Text;
     4 using NGuestBook.Entity;
     5 
     6 namespace VolleyballScoring.Interface
     7 {
     8     /// <summary>
     9     /// 业务逻辑接口——计分员
    10     /// </summary>
    11     public interface IAdminBLL
    12     {
    13         /// <summary>
    14         /// 增加计分
    15         /// </summary>
    16         /// <param name="Section">新小节类</param>
    17         /// <returns>是否成功</returns>
    18         bool Add(Section sec);
    19 
    20         /// <summary>
    21         /// 删除比分
    22         /// </summary>
    23         /// <param name="id">欲删除的小节ID</param>
    24         /// <returns>是否成功</returns>
    25         bool Remove(int id);
    26 
    27     }
    28 }

    以下是按照《2015-2016赛季中国排球联赛竞赛规程》的比分变化规则的逻辑表现

      

    public  class  Admin:IAminBLL
    {
         public void Action(Game game,Section sec)
        {
            if (sec.SNum < 4)//前四局的加分计算和判断。
                {
                    if (sec.RouA >= 24 && sec.RouB >= 24)//当两队24分平的情况。
                    {
                        if (Math.Abs(sec.RouA - sec.RouB) == 2)
                        {
                            if (sec.RouA > sec.RouB)
                            {
                                game.SscoA += 1;
                                SscoA.Text = game.SscoA.ToString();
                                sec.RouA = 0;
                                ScoreA.Text = sec.RouA.ToString();
                                sec.RouB = 0;
                                ScoreB.Text = sec.RouB.ToString();
                            }
                            else
                            {
                                game.SscoB += 1;
                                SscoB.Text = game.SscoB.ToString();
                                sec.RouA = 0;
                                ScoreA.Text = sec.RouA.ToString();
                                sec.RouB = 0;
                                ScoreB.Text = sec.RouB.ToString();
                            }
                        }
                    }
                    else if(sec.RouA<24||sec.RouB<24) //当两队没有达到24分平的时候。
                    {
                        if (sec.RouA == 25)
                        {
                            game.SscoA += 1;
                            SscoA.Text = game.SscoA.ToString();
                            sec.RouA = 0;
                            ScoreA.Text = sec.RouA.ToString();
                            sec.RouB = 0;
                            ScoreB.Text = sec.RouB.ToString();
                        }
                        else if (sec.RouB == 25)
                        {
                            game.SscoB += 1;
                            SscoB.Text = game.SscoB.ToString();
                            sec.RouA = 0;
                            ScoreA.Text = sec.RouA.ToString();
                            sec.RouB = 0;
                            ScoreB.Text = sec.RouB.ToString();
                        }
                    }
                }
                else if (sec.SNum == 4)//第五局的加分计算和判断。
                {
                    if (sec.RouA >= 14 && sec.RouB >= 14)//当两队24分平的情况。
                    {
                        if (Math.Abs(sec.RouA - sec.RouB) == 2)
                        {
                            if (sec.RouA > sec.RouB)
                            {
                                game.SscoA += 1;
                                SscoA.Text = game.SscoA.ToString();
                            }
                            else
                            {
                                game.SscoB += 1;
                                SscoB.Text = game.SscoB.ToString();
                            }
                        }
                    }
                    else if (sec.RouA < 14 || sec.RouB < 14) //当两队没有达到24分平的时候。
                    {
                        if (sec.RouA == 15)
                        {
                            game.SscoA += 1;
                            SscoA.Text = game.SscoA.ToString();
                        }
                        else if (sec.RouB == 15)
                        {
                            game.SscoB += 1;
                            SscoB.Text = game.SscoB.ToString();
                        }
                    }
                }
                else
                {
                    Response.Write("<script>alert('比赛已结束');</script>");
                }
    
        }  
    }    

    以上就是主要的逻辑业务表现,下一篇是具体的UI页面的表现

  • 相关阅读:
    征集“微软武汉DOTNET俱乐部武汉大学樱花赏”活动内容
    2007上半年微软武汉.NET俱乐部活动预告。
    [微软新技术培训]微软新技术预览之Microsoft Office SharePoint Server 2007
    武汉.NET俱乐部武大赏樱花精彩图片
    [微软新技术培训]微软新技术预览之Visual Studio Team System
    [摘]互联网传说
    python:注释最多的冒泡排序
    《C#线程参考手册》读书笔记(一):定义线程
    【转】C# DateTime 日期计算
    详谈WPF开发中的数据虚拟化
  • 原文地址:https://www.cnblogs.com/hutengqi/p/7074056.html
Copyright © 2011-2022 走看看