基于java的彩票选号系统的二次开发

引言:在网上看到了一个较为简易的基于java的彩票选号系统,其主要通过后台生成中奖号码,用户选择并输入号码的方式进行,界面设计较为的简陋,源代码也只实现了较为基础的功能,并存在一些问题,比如用户输入错误时的逻辑问题;故而我在源代码的基础上进行了一定的界面美化和功能的补全,以下先附上源代码:

点击查看代码
package com.bigwork;

import java.io.*;
import java.util.TreeSet;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import javax.servlet.annotation.*;

@WebServlet("/LotteryNumberSelection")
public class LotteryNumberSelection extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        TreeSet<Integer> WinNumbers = new TreeSet<>();
        int k = 0;
        while(k != 7){
            int a= (int)(Math.random()*30 + 1);
            if(!WinNumbers.contains(a)) {
                WinNumbers.add(a);
                k++;
            }
        }

        int inum1= Integer.parseInt(req.getParameter("num1"));
        int inum2= Integer.parseInt(req.getParameter("num2"));
        int inum3= Integer.parseInt(req.getParameter("num3"));
        int inum4= Integer.parseInt(req.getParameter("num4"));
        int inum5= Integer.parseInt(req.getParameter("num5"));
        int inum6= Integer.parseInt(req.getParameter("num6"));
        int inum7= Integer.parseInt(req.getParameter("num7"));
        Integer[] CustomerNumbers = new Integer[7];
        CustomerNumbers[0] = inum1;
        CustomerNumbers[1] = inum2;
        CustomerNumbers[2] = inum3;
        CustomerNumbers[3] = inum4;
        CustomerNumbers[4] = inum5;
        CustomerNumbers[5] = inum6;
        CustomerNumbers[6] = inum7;

        int count = 0;
        for (int i = 0; i < 7; i++) {
            if(WinNumbers.contains(CustomerNumbers[i])) {
                count++;
            }
        }

        if(count < 5) {
            req.setAttribute("WinNumbers", WinNumbers);
            req.getRequestDispatcher("Fail.jsp").forward(req,resp);
        }
        if(count == 7) {
            req.setAttribute("WinNumbers", WinNumbers);
            req.getRequestDispatcher("FirstPrize.jsp").forward(req,resp);
        }
        if(count == 6) {
            req.setAttribute("WinNumbers", WinNumbers);
            req.getRequestDispatcher("SecondPrize.jsp").forward(req,resp);
        }
        if(count == 5) {
            req.setAttribute("WinNumbers", WinNumbers);
            req.getRequestDispatcher("ThirdPrize.jsp").forward(req,resp);
        }
    }
}
原项目截图: 选号界面:

image
中奖界面:

改进方向:
1、优化彩票选号的界面设计
2、优化彩票选号时的逻辑
3、优化中奖后的界面设计并显示中奖号码
4、使彩票选号更加的人性化
程序流程图:

改进结果:
1、优化了彩票选号的界面设计,使其更加的美观

2、增加了下拉框选择号码,避免数据的输入问题,也使彩票选号更加的人性化

3、优化中奖后的界面设计并显示中奖号码


改进后的代码:

点击查看代码
LotteryNumberSelection.java:
package com.bigwork;

import java.io.*;
import java.util.TreeSet;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import javax.servlet.annotation.*;

@WebServlet("/LotteryNumberSelection")
public class LotteryNumberSelection extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        TreeSet<Integer> WinNumbers = new TreeSet<>();
        int k = 0;
        while(k != 7){
            int a= (int)(Math.random()*30 + 1);
            if(!WinNumbers.contains(a)) {
                WinNumbers.add(a);
                k++;
            }
        }

        int inum1= Integer.parseInt(req.getParameter("num1"));
        int inum2= Integer.parseInt(req.getParameter("num2"));
        int inum3= Integer.parseInt(req.getParameter("num3"));
        int inum4= Integer.parseInt(req.getParameter("num4"));
        int inum5= Integer.parseInt(req.getParameter("num5"));
        int inum6= Integer.parseInt(req.getParameter("num6"));
        int inum7= Integer.parseInt(req.getParameter("num7"));
        Integer[] CustomerNumbers = new Integer[7];
        CustomerNumbers[0] = inum1;
        CustomerNumbers[1] = inum2;
        CustomerNumbers[2] = inum3;
        CustomerNumbers[3] = inum4;
        CustomerNumbers[4] = inum5;
        CustomerNumbers[5] = inum6;
        CustomerNumbers[6] = inum7;

        int count = 0;
        for (int i = 0; i < 7; i++) {
            if(WinNumbers.contains(CustomerNumbers[i])) {
                count++;
            }
        }

        if(count < 5) {
            req.setAttribute("WinNumbers", WinNumbers);
            req.getRequestDispatcher("Fail.jsp").forward(req,resp);
        }
        if(count == 7) {
            req.setAttribute("WinNumbers", WinNumbers);
            req.getRequestDispatcher("FirstPrize.jsp").forward(req,resp);
        }
        if(count == 6) {
            req.setAttribute("WinNumbers", WinNumbers);
            req.getRequestDispatcher("SecondPrize.jsp").forward(req,resp);
        }
        if(count == 5) {
            req.setAttribute("WinNumbers", WinNumbers);
            req.getRequestDispatcher("ThirdPrize.jsp").forward(req,resp);
        }
    }
}

index.jsp:
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
    <title>彩票选号</title>
    <style>
        body {
            background: linear-gradient(to bottom right, #A0D468, #4BB2D0);
            font-family: Arial, sans-serif;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
        }
        .container {
            background-color: #fff;
            padding: 20px;
            border-radius: 5px;
            box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
            display: flex;
            flex-direction: column;
            align-items: center;
        }
        h1 {
            text-align: center;
            margin-bottom: 20px;
            color: #FF2222;
        }
        form {
            display: flex;
            flex-direction: column;
            align-items: center;
        }
        select {
            width: 300px;
            padding: 10px;
            margin-bottom: 10px;
            border: 1px solid #ccc;
            border-radius: 3px;
        }
        button {
            background-color: #4CAF50;
            color: #fff;
            border: none;
            border-radius: 5px;
            padding: 10px;
            width: 100%;
            font-size: 18px;
            cursor: pointer;
            transition: background-color 0.3s;
        }
        button:disabled {
            background-color: #cccccc;
        }
        button:hover:enabled{
            background-color: #45A049;
        }
        .rules {
            text-align: center;
            color: #FF3333;
            margin-top: 20px;
        }
        .rule-text {
            margin: 0;
            text-align: left;
            padding-left: 20px;
        }
        .reminder {
            text-align: center;
            font-size: 14px;
            color: #666;
        }
    </style>
    <script>
        function checkForm() {
            var selects = document.getElementsByTagName("select");
            var button = document.getElementById("submitBtn");
            var selectedCount = 0;
            for (var i = 0; i < selects.length; i++) {
                if (selects[i].value !== "") {
                    selectedCount++;
                }
            }
            if (selectedCount === selects.length) {
                button.disabled = false;
            } else {
                button.disabled = true;
            }
        }
    </script>
</head>
<body>
<div class="container">
    <h1>彩票选号,赢取丰厚大奖!</h1>
    <form  action="LotteryNumberSelection"  method="post">
        <select  name="num1" onchange="checkForm()">
            <option  value=""  selected  disabled  hidden>请选择第一个号码</option>
            <% for (int i = 1; i <= 30; i++) { %>
            <option value="<%= i %>"><%= i %></option>
            <% } %>
        </select>
        <select  name="num2" onchange="checkForm()">
            <option  value=""  selected  disabled  hidden>请选择第二个号码</option>
            <% for (int i = 1; i <= 30; i++) { %>
            <option value="<%= i %>"><%= i %></option>
            <% } %>
        </select>
        <select  name="num3" onchange="checkForm()">
            <option  value=""  selected  disabled  hidden>请选择第三个号码</option>
            <% for (int i = 1; i <= 30; i++) { %>
            <option value="<%= i %>"><%= i %></option>
            <% } %>
        </select>
        <select  name="num4" onchange="checkForm()">
            <option  value=""  selected  disabled  hidden>请选择第四个号码</option>
            <% for (int i = 1; i <= 30; i++) { %>
            <option value="<%= i %>"><%= i %></option>
            <% } %>
        </select>
        <select  name="num5" onchange="checkForm()">
            <option  value=""  selected  disabled  hidden>请选择第五个号码</option>
            <% for (int i = 1; i <= 30; i++) { %>
            <option value="<%= i %>"><%= i %></option>
            <% } %>
        </select>
        <select  name="num6" onchange="checkForm()">
            <option  value=""  selected  disabled  hidden>请选择第六个号码</option>
            <% for (int i = 1; i <= 30; i++) { %>
            <option value="<%= i %>"><%= i %></option>
            <% } %>
        </select>
        <select  name="num7" onchange="checkForm()">
            <option  value=""  selected  disabled  hidden>请选择第七个号码</option>
            <% for (int i = 1; i <= 30; i++) { %>
            <option value="<%= i %>"><%= i %></option>
            <% } %>
        </select>
        <button id="submitBtn" type="submit" disabled>提交</button>
    </form>
    <div class="rules">
        <p class="rule-text"><span style="text-align: left">中奖规则:</span></p>
        <p class="rule-text"><span style="text-align: left">一等奖:</span>七个号码全部选中</p>
        <p class="rule-text"><span style="text-align: left">二等奖:</span>选中七个号码中的六个号码</p>
        <p class="rule-text"><span style="text-align: left">三等奖:</span>选中七个号码中的五个号码</p>
        <p class="rule-text"><span style="text-align: left">其他情况为:</span>未中奖!</p>
    </div>
    <p class="reminder">温馨提示:理性购彩,切勿沉迷</p>
</div>
</body>
</html>

FirstPrize.jsp:
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
    <title>一等奖</title>
    <style>
        body {
            background-color: #FFF5E6;
            font-family: Arial, sans-serif;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
        }
        .container {
            background-color: #FF4B33;
            padding: 20px;
            border-radius: 5px;
            box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
            display: flex;
            flex-direction: column;
            align-items: center;
            color: #FFFFFF;
        }
        h1 {
            text-align: center;
            margin-bottom: 20px;
            font-size: 36px;
            color: #FFFFFF;
        }
        .message {
            font-size: 18px;
            color: #FFFFFF;
        }
    </style>
</head>
<body>
<div class="container">
    <h1>恭喜您中奖了!</h1>
    <p   class="message">您的号码中了一等奖!</p>
    <p>中奖号码为:${requestScope.WinNumbers}</p>
</div>
</body>
</html>

SecondPrize.jsp:
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
    <title>二等奖</title>
    <style>
        body {
            background-color: #FFF5E6;
            font-family: Arial, sans-serif;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
        }
        .container {
            background-color: #FF4B33;
            padding: 20px;
            border-radius: 5px;
            box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
            display: flex;
            flex-direction: column;
            align-items: center;
            color: #FFFFFF;
        }
        h1 {
            text-align: center;
            margin-bottom: 20px;
            font-size: 36px;
            color: #FFFFFF;
        }
        .message {
            font-size: 18px;
            color: #FFFFFF;
        }
    </style>
</head>
<body>
<div class="container">
    <h1>恭喜您中奖了!</h1>
    <p   class="message">您的号码中了二等奖!</p>
    <p>中奖号码为:${requestScope.WinNumbers}</p>
</div>
</body>
</html>

ThirdPrize.jsp:
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
    <title>三等奖</title>
    <style>
        body {
            background-color: #FFF5E6;
            font-family: Arial, sans-serif;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
        }
        .container {
            background-color: #FF4B33;
            padding: 20px;
            border-radius: 5px;
            box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
            display: flex;
            flex-direction: column;
            align-items: center;
            color: #FFFFFF;
        }
        h1 {
            text-align: center;
            margin-bottom: 20px;
            font-size: 36px;
            color: #FFFFFF;
        }
        .message {
            font-size: 18px;
            color: #FFFFFF;
        }
    </style>
</head>
<body>
<div class="container">
    <h1>恭喜您中奖了!</h1>
    <p   class="message">您的号码中了三等奖!</p>
    <p>中奖号码为:${requestScope.WinNumbers}</p>
</div>
</body>
</html>

Fail.jsp:
<%@  page  contentType="text/html;  charset=UTF-8"  pageEncoding="UTF-8"  %>
<!DOCTYPE  html>
<html>
<head>
    <title>未中奖</title>
    <style>
        body  {
            background-color:  #F5F5F5;
            font-family:  Arial,  sans-serif;
            display:  flex;
            justify-content:  center;
            align-items:  center;
            height:  100vh;
            margin:  0;
        }
        .container  {
            background-color:  #fff;
            padding:  20px;
            border-radius:  5px;
            box-shadow:  0  2px  5px  rgba(0,  0,  0,  0.1);
            display:  flex;
            flex-direction:  column;
            align-items:  center;
        }
        h1  {
            text-align:  center;
            margin-bottom:  20px;
            color:  #FF2222;
        }
        .message  {
            font-size:  18px;
            color:  #333;
        }
    </style>
</head>
<body>
<div  class="container">
    <h1>未中奖!</h1>
    <p  class="message">很遗憾,您的号码没有中奖!请继续努力,祝您好运!</p>
    <p>中奖号码为:${requestScope.WinNumbers}</p>
</div>
</body>
</html>

开发感想:
在二次开发的过程中,我首先遇到的是对原有代码的理解和消化,需要消耗一定时间去理解原作者的编码思路和想法。而且在开发过程中我也遇到了一些技术难题,有些问题是在原项目中未曾遇到的,我通过不断地查阅资料并尝试不同的解决方案,在每一次解决问题的过程,都是对我软件开发与创新能力的提升和锻炼。同时,在开发的过程中,我也发现了原项目中的一些不足和可以优化的地方。通过二次开发,我们不仅对这些问题进行了修复,还增加了一些新的功能和特性。这让我意识到,二次开发不仅是对原有代码的修改和完善,更是一个创新和提升的过程。

posted @   项俊杰  阅读(125)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示