排球比赛计分系统

一、设计思路

计分系统根据不同角色拥有不同的界面和展示效果:

1.管理员-----用户管理,赛事管理,赛事记录,队伍管理

2.比赛主办方-------赛事管理,队伍管理

3.裁判--------赛事记录

其他人员在管理员未分配权限时不具有任何权限,只能观看比赛信息

运用Struts2和hibernate框架,进行数据视图交互

二、代码部分(比赛计分,信息展示部分)

1.GamesDaoImpl.java

package com.dao.impl;

import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.bean.GamesInfo;
import com.bean.GamesNotice;
import com.bean.Users;
import com.dao.BaseDao;
import com.dao.GamesDao;

public class GamesDaoImpl extends BaseDao implements GamesDao {
/*
 * 插入比赛计分信息*/
    public boolean saveGames(GamesInfo games) {
        Session session=null;
        Transaction tr=null;
        try {
            session=getSession();
            tr=session.beginTransaction();
            session.save(games);
            tr.commit();
        } catch (HibernateException e) {
            e.printStackTrace();
            tr.rollback();
            return false;
        }finally{
            closeSession();
        }
        return true;
    }
    /*
     * 插入比赛计分信息成功更新赛事信息*/
    public boolean updateGames(GamesNotice gamesNotice) {
        Session session=null;
        Transaction tr=null;
        try {
            session=getSession();
            tr=session.beginTransaction();
            session.update(gamesNotice);
            tr.commit();
        } catch (HibernateException e) {
            e.printStackTrace();
            tr.rollback();
            return false;
        }finally{
            closeSession();
        }
        return true;
    }
    /*
     * 观看比赛计分信息,模糊查询*/
    public List<GamesInfo> SalChanceList(String Title) {
        List<GamesInfo> SalChanceList=null;
        Session session=null;
        Transaction tr=null;
        try {
            session = getSession();
            tr = session.beginTransaction();
            StringBuffer hql=new StringBuffer();
            hql.append("from GamesInfo where 1=1");
            if (!"".equals(Title)) {
                hql.append(" and GTitle like ‘%"+Title+"%‘ ");
            }
            Query query=session.createQuery(hql.toString());
            query.setFirstResult(1);
            query.setMaxResults(8);
            SalChanceList=query.list();
            tr.commit();
        } catch (Exception e) {
            tr.rollback();
        }
        return SalChanceList;
    }
/*
     * 根据id查询赛事信息*/
    public GamesNotice selectGamesNotice(int id) {
        GamesNotice gamesNotice=null;
        Session session=null;
        try {
            session=getSession();
            String hql="from GamesNotice where NId=?";
            Query query=session.createQuery(hql);
            query.setInteger(0, id);
            List<GamesNotice> list=query.list();
            if(list.size()>0){
                gamesNotice=list.get(0);
            }
        } catch (HibernateException e) {
            e.printStackTrace();
        }finally{
            closeSession();
        }
        return gamesNotice;
    }
    /*
     * 新建赛事信息*/
    public boolean saveGamesNotice(GamesNotice gamesNotice) {
        Session session=null;
        Transaction tr=null;
        try {
            session=getSession();
            tr=session.beginTransaction();
            session.save(gamesNotice);
            tr.commit();
        } catch (HibernateException e) {
            e.printStackTrace();
            tr.rollback();
            return false;
        }finally{
            closeSession();
        }
        return true;
    }
}

2.gamesAction.java

package com.action;

import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import com.bean.GamesInfo;
import com.bean.GamesNotice;
import com.dao.GamesDao;
import com.dao.impl.GamesDaoImpl;
import com.opensymphony.xwork2.ActionSupport;

public class gamesAction extends ActionSupport {
    private GamesInfo games;//计分信息类
    private GamesNotice gamesNotice;//赛事信息类
 public String addGames() {
     GamesDao gamesDao=new GamesDaoImpl();
     //拿到赛事表id查询title
     int id=Integer.parseInt(games.getGTitle());
     GamesNotice gamesNotice=gamesDao.selectGamesNotice(id);
     games.setGTitle(gamesNotice.getNName());
     //比赛信息数据写入数据库
    boolean flag=gamesDao.saveGames(games);
    if(flag=true){
        //执行成功,相应的赛事状态为2已比赛完成
        gamesNotice.setTState(2);
        gamesDao.updateGames(gamesNotice);
        return SUCCESS;
    }else {
        return "error";
    }
}
 public String NoticeAdd(){
     GamesDao gamesDao=new GamesDaoImpl();
     //添加赛事
     boolean flag=gamesDao.saveGamesNotice(gamesNotice);
        if(flag=true){
            return SUCCESS;
        }else {
            return ERROR;
        }
 }
public GamesInfo getGames() {
    return games;
}
public void setGames(GamesInfo games) {
    this.games = games;
}
public GamesNotice getGamesNotice() {
    return gamesNotice;
}
public void setGamesNotice(GamesNotice gamesNotice) {
    this.gamesNotice = gamesNotice;
}

}

3.js方法

     <script type="text/javascript">
     var Team1=0;<%--记录队伍1的胜利次数--%>
     var Team2=0;<%--记录队伍2的胜利次数--%>
function add1(){
    var num1 = parseInt(document.getElementById("txt1").value);<%--获取分数--%>
    var num=num1+1;<%--分数加1--%>
    document.getElementById("txt1").value=num;<%--把分数放到文本框--%>
    Team1=parseInt(document.getElementById("Team1").value);<%--获取胜利次数--%>
    if(num>=25){<%--判断当前分数是否大于25.大于25胜利次数加1--%>
        Team1=Team1+1;
        document.getElementById("Team1").value=Team1;
        }
    var num3 = parseInt(document.getElementById("txt2").value);<%--获取队伍2的分数--%>
    if(num>25||num3==25){<%--队伍1分数是否大于等于25。队伍二分数是否已经是25--%>
        alert("请开始下一局");
        document.getElementById("txt1").value=num1;<%--是则不不能加分--%>
        document.getElementById("Team1").value=Team1-1;<%--刚加的胜利场数减掉--%>
        }
    if(num3==25){<%--对方先到25自己的胜利场次不加不减--%>
        document.getElementById("Team1").value=Team1
        }
}
function add2(){
    var num1 = parseInt(document.getElementById("txt2").value);
    var num=num1+1;
    document.getElementById("txt2").value=num;
    Team2=parseInt(document.getElementById("Team2").value);
    if(num>=25){
        Team2=Team2+1;
        document.getElementById("Team2").value=Team2;
        }
    var num3 = parseInt(document.getElementById("txt1").value);
    if(num>25||num3==25){
        alert("请开始下一局");
        document.getElementById("txt2").value=num-1;
        document.getElementById("Team2").value=Team2-1;
        }
    if(num3==25){
        document.getElementById("Team2").value=Team2;
        }
}

function add3(){
    var num1 = parseInt(document.getElementById("txt3").value);
    var num=num1+1;
    document.getElementById("txt3").value=num;
    Team1=parseInt(document.getElementById("Team1").value);
    if(num>=25){
        Team1=Team1+1;
        document.getElementById("Team1").value=Team1;
        }
    var num3 = parseInt(document.getElementById("txt4").value);
    if(num>25||num3==25){
        alert("请开始下一局");
        document.getElementById("txt3").value=num-1;
        document.getElementById("Team1").value=Team1-1;
        }
    if(num3==25){
        document.getElementById("Team1").value=Team1;
        }
}
function add4(){
    var num1 = parseInt(document.getElementById("txt4").value);
    var num=num1+1;
    document.getElementById("txt4").value=num;
    Team2=parseInt(document.getElementById("Team2").value);
    if(num>=25){
        Team2=Team2+1;
        document.getElementById("Team2").value=Team2;
        }
    var num3 = parseInt(document.getElementById("txt3").value);
    if(num>25||num3==25){
        alert("请开始下一局");
        document.getElementById("txt4").value=num-1;
        document.getElementById("Team2").value=Team2-1;
        }
    if(num3==25){
        document.getElementById("Team2").value=Team2;
        }
}
function add5(){
    var num1 = parseInt(document.getElementById("txt5").value);
    var num=num1+1;
    document.getElementById("txt5").value=num;
    Team1=parseInt(document.getElementById("Team1").value);
    if(num>=25){
        Team1=Team1+1;
        document.getElementById("Team1").value=Team1;
        }
    var num3 = parseInt(document.getElementById("txt6").value);
    if(num>25||num3==25){
        alert("请开始下一局");
        document.getElementById("txt5").value=num-1;
        document.getElementById("Team1").value=Team1-1;
        }
    if(num3==25){
        document.getElementById("Team1").value=Team1;
        }
}
function add6(){
    var num1 = parseInt(document.getElementById("txt6").value);
    var num=num1+1;
    document.getElementById("txt6").value=num;
    Team2=parseInt(document.getElementById("Team2").value);
    if(num>=25){
        Team2=Team2+1;
        document.getElementById("Team2").value=Team2;
        }
    var num3 = parseInt(document.getElementById("txt5").value);
    if(num>25||num3==25){
        alert("请开始下一局");
        document.getElementById("txt6").value=num-1;
        document.getElementById("Team2").value=Team2-1;
        }
    if(num3==25){
        document.getElementById("Team2").value=Team2};
}
function add7(){
    var num1 = parseInt(document.getElementById("txt7").value);<%--获取分数--%>
    var num=num1+1;<%--分数加1--%>
    document.getElementById("txt7").value=num;<%--把分数放到文本框--%>
    Team1=parseInt(document.getElementById("Team1").value);<%--获取队伍1胜利次数--%>
    Team2=parseInt(document.getElementById("Team2").value);<%--获取队伍2胜利次数--%>
    if(Team1==3||Team2==3){<%--判断当前场次是否有队伍胜3场--%>
        alert("比赛结束,请提交");
        document.getElementById("txt7").value=num1;
        }else{
            if(num>=25){<%--判断当前分数是否大于25.大于25胜利次数加1--%>
            Team1=Team1+1;
            document.getElementById("Team1").value=Team1;
            }
        var num3 = parseInt(document.getElementById("txt8").value);<%--获取队伍2的分数--%>
        if(num>25||num3==25){<%--队伍1分数是否大于等于25。队伍二分数是否已经是25--%>
            alert("请开始下一局");
            document.getElementById("txt1").value=num1;<%--是则不不能加分--%>
            document.getElementById("Team1").value=Team1-1;<%--刚加的胜利场数减掉--%>
            }
        if(num3==25){<%--对方先到25自己的场次不加不减--%>
            document.getElementById("Team1").value=Team1
            }
        }
}
function add8(){
    var num1 = parseInt(document.getElementById("txt8").value);
    var num=num1+1;
    document.getElementById("txt8").value=num;
    Team1=parseInt(document.getElementById("Team1").value);
    Team2=parseInt(document.getElementById("Team2").value);
    if(Team1==3||Team2==3){
        alert("比赛结束,请提交");
        document.getElementById("txt8").value=num1;
        }else{
            if(num>=25){
            Team2=Team2+1;
            document.getElementById("Team2").value=Team2;
            }
        var num3 = parseInt(document.getElementById("txt7").value);
        if(num>25||num3==25){
            alert("请开始下一局");
            document.getElementById("txt8").value=num1;
            document.getElementById("Team2").value=Team2-1;
            }
        if(num3==25){
            document.getElementById("Team2").value=Team2
            }
        }
}
function add9(){
    var num1 = parseInt(document.getElementById("txt9").value);
    var num=num1+1;
    document.getElementById("txt9").value=num;
    Team1=parseInt(document.getElementById("Team1").value);
    Team2=parseInt(document.getElementById("Team2").value);
    if(Team1==3||Team2==3){
        alert("比赛结束,请提交");
        document.getElementById("txt9").value=num1;
        }else{
            if(num>=15){
            Team1=Team1+1;
            document.getElementById("Team1").value=Team1;
            }
        var num3 = parseInt(document.getElementById("txt10").value);
        if(num>15||num3==15){
            alert("请开始下一局");
            document.getElementById("txt1").value=num1;
            document.getElementById("Team1").value=Team1-1;
            }
        if(num3==15){
            document.getElementById("Team1").value=Team1
            }
        }
}
function add10(){
    var num1 = parseInt(document.getElementById("txt10").value);
    var num=num1+1;
    document.getElementById("txt10").value=num;
    Team1=parseInt(document.getElementById("Team1").value);
    Team2=parseInt(document.getElementById("Team2").value);
    if(Team1==3||Team2==3){
        alert("比赛结束,请提交");
        document.getElementById("txt10").value=num1;
        }else{
            if(num>=25){
            Team2=Team2+1;
            document.getElementById("Team2").value=Team2;
            }
        var num3 = parseInt(document.getElementById("txt9").value);
        if(num>15||num3==15){
            alert("请开始下一局");
            document.getElementById("txt10").value=num1;
            document.getElementById("Team2").value=Team2-1;
            }
        if(num3==15){
            document.getElementById("Team2").value=Team2
            }
        }
}</script>

三、运行效果

时间: 2024-12-16 13:29:15

排球比赛计分系统的相关文章

排球比赛计分程序功能说明书

编写目的让裁判和排球爱好者,赛事组织便于记录分数和查询赛事记录.目标不包括犯规判定.项目用户赛事组织和裁判以及广大排球爱好者.项目典型场景2016年里约奥运会女排决赛.专业术语插上进攻后排队员插到前排作二传,把球传给前排3个队员扣球的进攻形式.一般以1号位插上为多.插上进攻能保持前排3点进攻,充分利用球网的全长,有利于突破对方的防线.战术变化多,可以打出交叉.梯次.夹塞.立体进攻.双快一游动等战术进攻. 夹塞进攻一位扣球队员却二传手配合,佯扣短平快球,吸引对方拦网.另一位扣手突然插入两人之间扣球

排球比赛计分规则功能说明书

1.1 编写目的 这份需求规格说明书是需求分析阶段的产物,在经过我们小组内的沟通之后,详细的了解了比赛计分规则之后及用户需要所形成的汇总.通过这个文档能够明确以后项目的进度与规划,组织软件的开发与测试. 1.2 项目背景 开发名称:排球比赛计分规则 项目提出者:老师 项目开发者:第二组全体成员 用户:喜欢排球的观众.裁判员.教练及运动员 实现该软件的计算机网络:学校机房 项目与其他软件:系统关系 1.3 专业术语解释 短平快 排球运动快球的一种.一般指二传手正面传出速度快.弧度平的球的同时,扣球

MVC之排球比赛计分程序 ——(五)控制器的设计与实现

控制器 控制器接受用户的输入并调用模型和视图去完成用户的需求.所以当单击Web页面中的超链接和发送HTML表单时, 控制器本身不输出任何东西和做任何处理.它只是接收请求并决定调用哪个模型构件去处理请求, 然后用确定用哪个视图来显示模型处理返回的数据. Controller控制器接受用户请求,然后返回视图.控制器控制视图的产生.我们根据此软件的需求,设计所 需要的Controller.我们添加控制器就需要放到controller文件夹里. 我们为实现此软件的需求,目前我们需要五个Controlle

排球比赛计分程序的典型用户和场景

 姓名 赵四 性别.年龄 男,20 职业 保安 收入 3000~4000/月 知识层次和能力 大专生,有一定的电脑操作能力,对排球非常的感兴趣 生活/工作能力 学习,工作 动机.目的.困难 动机是想看排球比赛,目的给自己喜欢的球队加油,困难是不懂排球规则 用户偏好 看电影,玩游戏 用户比例 不确定 典型场景 休息时想看奥运会,替自己喜欢的球队加油 典型描述 奥运会期间,想看中国女排比赛,但周围没有人懂排球规则, 所以想看这个排球比赛计分规则来了解,  以便更好的理解比赛 姓名: 王五 性别和年龄

计应1班第4小组“排球比赛计分程序”的典型用户、创立场景、用户故事

姓名 张三 年龄 20 职业 在校大学生 收入 月生活费1200 知识层次和能力 大专生,学习计算机,对排球运动很是喜爱 动机,目的,困难 动机是喜欢看排球比赛,目的给中国队加油,困难是不是十分了解排球规则 用户 偏好 运动 用户比例 不确定 典型场景 看奥运会,为中国队加油 典型描述 快到奥运会期间,想看中国女排比赛,但不了解排球规则,所以想看这个排球比赛计分规则来了解,  以便更好的理解比赛 姓名 李四 年龄 50 职业 体育馆负责人 收入 一万/月 知识层次和能力 本科生毕业,管理一个体育

MVC之排球比赛计分程序 ——(一)需求分析与数据库设计

在实际的项目中,需求分析和数据库的设计是很重要的一个环节,这个环节会直接影响项目的开发过程和质量.实际中,这个环节不但需要系统分析师.软件工程师等计算机方面的专家,还需要相关领域的领域专家参与才能完成. 需求分析: 这个项目是一个排球比赛计分程序,其业务极为简单,现将其描述如下. 1.任何观众都可以进行比赛的分数查询,查询完成后,页面上显示查询的相应的比赛内容. 2.任何观众都不可以对分数进行增删改查. 3.记分员可以对比赛进行实时记录,并将分数记录在数据库,方便观众查询,以及对分数进行通过操作

MVC之排球比赛计分程序 ——(七)具体实现

1,新建一个项目,命名为:Volleyball,选择基本模板.如图: 点击确定.创建项目. 2,右键单击model文件夹,添加模型类:模型类分别是:GzScore.cs和Players.cs 具体代码如下: public class Team    {        [Key]        public int TId { get; set; }        [Display(Name = "队伍名称")]        public string TName { get; set

“排球比赛计分程序”的典型用户、场景用户故事

典型用户:   张小明--排球运动员 名字 张小明 性别.年龄 男.20岁 职业 国家排球运动员 收入 10万元/年 知识层次和能力 本科毕业,拥有高超的排球技术 工作状况 平常在基地训练 用户偏好 用一些计分程序 用户比例 ? 典型场景 使用各种计分程序 典型描述 不在打排球就在打排球的路上   李华中---裁判 名字 李华中 性别.年龄 男.44岁 职业 裁判 收入 20万元/年 知识层次和能力 本科,每天和软件打交道 工作状况 训练球员 用户偏好 用一些计分程序 用户比例 ? 典型场景 比

排球比赛计分规则

开发流程如下: ·项目计划 完成这个项目需要的时间:3~5天 ·项目开发 ·需求分析 .用户故事: ·作为一名现场记分员,我希望详细记录比赛现场比分增长情况,以便观众及运动员.教练员及时掌握比赛状况.(满意条件:每一次比分的改变,都要形成一条记录). ·生成设计文档 ·由排球比赛用户故事的需求分析可知,此程序是用来统计各个队伍的总比分和队伍中每个球员的详细得分情况的,并针对每一次比分的改变,都要形成一条记录. ·计划复审 ·正在进一步的商讨中. ·代码规范 ·根据Visual Studio 20