jsp实现简单猜数字游戏(操作数据库和不操作数据库)

说明

  • 是java web基础学习时的限时作业,还有很多地方简陋不足,待改进【可能会记着改进吧】。
  • 所有代码通过IDEA配置好后可运行。
  • 方案一的数据库账号密码记得修改成自己的配置。

功能要求

  • 有登陆界面,只要输入一个昵称,且要检查昵称是否已经被其它用户使用
  • 游戏页面,一个猜数字的游戏,随机生成一个0-50之间的整数,要求玩家输入自己猜的,并对用户输入数字进行检查,并对输入情况进行反馈,连续6次没有猜对则游戏失败,游戏成功猜对要将情况记入排行榜,询问用户是否开始新的游戏。
  • 排行榜页面,显示所有参加游戏的用户的游戏情况

实验方案及说明

方案一:结合数据库

文件说明及部分代码:

使用jdbc-odbc连接,要先设置odbc数据源。

login.jsp:登陆界面

<%@ page import="java.sql.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>猜数字游戏登陆界面</title>
</head>
<body background="other/number.jpg" style="width: 838px;">
<div style="border-radius: 3px;position: relative;left: 50%;top: 50%;">
    <table style="background-color: skyblue;">
        <form method="post" action="">
            <tr>
                <td colspan="2">用户登陆</td>
            </tr>
            <tr>
                <td>用户:</td>
                <td><input type="text" name="nickname"></td>
            </tr>
            <tr>
                <td colspan="2"><input type="submit" value="确认" style="width: 200px"></td>
            </tr>
            <tr>
                <td colspan="2"><a href="rank.jsp">排行榜</a></td>
            </tr>
        </form>
    </table>
</div>
<%
    Connection conn = null;
    Statement stat = null;
    ResultSet res = null;
    int ress = 0;
    try{
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    }catch (ClassNotFoundException e){
    e.printStackTrace();
    }
    try{
    conn = DriverManager.getConnection("jdbc:odbc:what","root",yourpassword);
    }catch (SQLException e){
    e.printStackTrace();
    }
    if(conn!=null&&request.getParameter("nickname")!=null){
        request.setCharacterEncoding("utf-8");
        try {
            PreparedStatement prep = conn.prepareStatement("select * from player where nickname=?");
            prep.setString(1, request.getParameter("nickname"));
            res = prep.executeQuery();
        }catch (SQLException e){
            e.printStackTrace();
        }
        if (res.next()){
            String name = res.getString("nickname");
        }else{
            try {
                PreparedStatement prep = conn.prepareStatement("insert into player(nickname) values(?)");
                prep.setString(1, request.getParameter("nickname"));
                ress = prep.executeUpdate();
            }catch (SQLException e){
                e.printStackTrace();
            }
        }
    }
%>
<%
    if(request.getParameter("nickname")!=null){
        session.setAttribute("login-status",1);
        session.setAttribute("user",request.getParameter("nickname"));
    %>
    <jsp:forward page="play.jsp"></jsp:forward>
<%
    }
%>
</body>
</html>

play.jsp:游戏界面

rank.jsp:排行榜

win.jsp:游戏胜利后进行积分

player.sql:数据库设计文件

create table player(
  id int auto_increment,
  nickname char(20) not null unique,
  score int default 0,
  playnumber int default 0,
  winnumber int default 0,
  primary key(id)
);

方案二:不用数据库

文件说明及部分代码:

checkin.jsp:检查昵称

in.jsp:登陆界面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>登陆界面</title>
  </head>
  
  <body>
  <script>
	  document.cookie="score=0";
  </script>
    <form name="Form" action="checkin.jsp" method="post">
    	<table border="1" align="center">
    		<tr>
    			<td>请输入你的昵称:</td>
    			<td><input name="account" type="text" ></td>
    		</tr>
    		<tr>
    			<td colspan="2" align="center"><input type="submit" value="登录">
    			<input type="reset" value="清空"></td>
    		</tr>
    	</table>
    
    </form>
  </body>
</html>

p.jsp:排行榜界面

game.jsp:游戏界面

已知待改进

  • 两个的界面都需要写的更好看一些
  • 关于排行榜的显示情况方案二还不算按要求显示了
  • 方案一的昵称检查方面和功能我也不知道算不算合格了
  • 方案一只有登陆没有退出
  • 待补充
发布了28 篇原创文章 · 获赞 1 · 访问量 1674

猜你喜欢

转载自blog.csdn.net/doordiev/article/details/105742456