说明
- 是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:游戏界面
已知待改进
- 两个的界面都需要写的更好看一些
- 关于排行榜的显示情况方案二还不算按要求显示了
- 方案一的昵称检查方面和功能我也不知道算不算合格了
- 方案一只有登陆没有退出
- 待补充