每周三写JAVA作业好像已经成了惯例啊,另外今天也会总结昨天上课的课堂测试……当然肯定是改良过的啦。
好,开始开始!
课堂测试:(这期课堂测试是在上课之前开始的……)
完成学生选课系统;
A类
1、学生以学号、密码登录,登录成功后跳转到选课界面,选课界面包括课程名称、教师名称、上课地点等信息,点击选课按钮,显示选课成功。 2、后台增加用户信息表、选课表(学号、课程名称、教师名称、上课地点)
B类
1、直接在上次界面上添加学号文本框、选课按钮,提交到选课表,后台增加选课表。
自选其中一个完成
应对这个题目我写了5个界面,分别是用于登录的index.jsp、作为用户主菜单的Next1.jsp、作为选课界面的Proto.jsp、将信息写入数据库的next.jsp以及查询选课结果的logo.jsp。
源代码如下:
index.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<title>添加课程</title>
<script type="text/javascript">
function checkaccount() {
var x=document.getElementById("account").value;
if(x.length>20) {
alert("用户账户位数不能大于20")
document.getElementById("account").value = "";
}
}
function checkpwd() {
var x=document.getElementById("password").value;
if(x.length>20) {
alert("密码最大只有20位")
document.getElementById("password").value = "";
}
}
function Checka(){
var Username = document.getElementById("account").value;
if (Username == "" || account.value == null ) {
alert("用户名不能为空");
}
}
function Checkp(){
var Username = document.getElementById("password").value;
if (Username == "" || password.value == null ) {
alert("密码不能为空");
}
}
</script>
</head>
<body style="text-align:center;">
<br><br><br>
<form name="form2" action="Next1.jsp" method="post">
学号 <input type="text" name="account" id="account" onblur="checkaccount()"><br><br>
密码 <input type="password" name="password" id="password" onblur="checkpwd()"><br><br>
<input type="submit" value="登录">
</form>
</body>
</html>
Next1.jsp:
<%@ page language="java" import="java.util.*" import="java.text.*" import ="java.sql.*" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<title>上课计划</title>
</head>
<body style="text-align:center;">
<br><br><br>
<pre>
<%
Class.forName("com.mysql.cj.jdbc.Driver");
Connection connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC","root","260702266");
Statement state=connect.createStatement();
int i=0;int result=1;
try{
String name=new String(request.getParameter("account").getBytes("ISO-8859-1"),"utf-8");
String teacher=new String(request.getParameter("password").getBytes("ISO-8859-1"),"utf-8");
ResultSet rs = state.executeQuery("select count(*) from account where account='"+name+"'and password='"+teacher+"'");
rs.next();
result = rs.getInt(1);
session.setAttribute("account",name);
}catch(Exception e)
{}
if(result!=0){
out.println("用户"+(String)session.getAttribute("account")+",欢迎使用选课系统");
%>
<br>
<form name="form23" action="Proto.jsp" method="post">
<input type="submit" value="选课!">
</form>
<form name="form23" action="logo.jsp" method="post">
<input type="submit" value="查询选课结果">
</form>
<%
}
else
{out.println("用户名或密码错误");}
%>
<form name="form3" action="index.jsp" method="post">
<input type="submit" value="重新登录">
</form>
</pre>
</body>
</html>
Proto.jsp:
<%@ page language="java" import="java.util.*" import="java.text.*" import ="java.sql.*" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<title>添加处理中……</title>
</head>
<body style="text-align:center;">
<br><br><br>
<pre>
<%
Class.forName("com.mysql.cj.jdbc.Driver");
Connection connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC","root","260702266");
Statement state=connect.createStatement();
int i=0;
%>
<form name="form3" action="next.jsp" method="post">
<% ResultSet rsp = state.executeQuery("select * from class");
for (int g=0;rsp.next();g++) {%>
<input type="radio" name="degree" value="<%=g %>" > 选这个
<%
out.println("");
out.println("课程名称:"+rsp.getString("name"));
out.println("任课教师:"+rsp.getString("teacher"));
out.println("上课地点:"+rsp.getString("place")+"\n");
%>
<%} %>
<input type="submit" value="选完啦!">
</form>
</pre>
</body>
</html>
next.jsp:
<%@ page language="java" import="java.util.*" import="java.text.*" import ="java.sql.*" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<title>上课计划</title>
</head>
<body style="text-align:center;">
<br><br><br>
<pre>
<%
Class.forName("com.mysql.cj.jdbc.Driver");
Connection connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC","root","260702266");
Statement state=connect.createStatement();
ResultSet rs = state.executeQuery("select count(*) from class");
rs.next();
int result = rs.getInt(1);
int one= Integer.parseInt(request.getParameter("degree"));
String str=(String)session.getAttribute("account");
switch(one){
case 0:
state.executeUpdate("INSERT INTO class2 VALUES ('C++','刘立嘉','一教','"+str+"')");
break;
case 1:
state.executeUpdate("INSERT INTO class2 VALUES ('JAVA','王建民','基教','"+str+"')");
break;
case 2:
state.executeUpdate("INSERT INTO class2 VALUES ('数据结构','刘丹','三教','"+str+"')");
break;
}
out.print("选课成功!");
%>
<form name="form3" action="Next1.jsp" method="post">
<input type="submit" value="返回主页面">
</form>
</pre>
</body>
</html>
logo.jsp:
<%@ page language="java" import="java.util.*" import="java.text.*" import ="java.sql.*" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<title>上课计划</title>
</head>
<body style="text-align:center;">
<br><br><br>
<pre>
<%
Class.forName("com.mysql.cj.jdbc.Driver");
Connection connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC","root","260702266");
Statement state=connect.createStatement();
int i=0;
String str=(String)session.getAttribute("account");
ResultSet rs = state.executeQuery("select count(*) from class2 where account='"+str+"'");
rs.next();
int result = rs.getInt(1);
if(result!=0)
{
out.println("用户"+str+"的选课记录如下\n");
ResultSet rsp = state.executeQuery("select * from class2 where account='"+str+"'");
for(;rsp.next();)
{
out.println(rsp.getString("name"));
out.println(rsp.getString("teacher"));
out.println(rsp.getString("place")+"\n");
}
}
else{
out.println("您还没有选课记录哦!");
}
%>
<form name="form3" action="Next1.jsp" method="post">
<input type="submit" value="返回主页面">
</form>
</pre>
</body>
</html>
运行效果如下:
登录:
跳转至主界面:
选课:
查询已有的选课结果:
从数据库中查看:
如果胡乱输入账户密码会提示:
如果选择了重复的课程也会提示:
未来可能还会加点什么退课重选获取选课时间排序之类的,不过那都是后话啦
动手动脑1、2:(这两个明显一个事我就把它们放一起了)
Finally这个东西虽说是“必定会执行的语句”,但它本身其实还是try的附属品,如果try根本就没被执行,Finally也会被跳过,而且其执行的先后顺序也和try片段的执行顺序相同
比如下面的代码:
package test;
public class EmbededFinally
{
public static void main(String args[])
{
int result;
try
{
System.out.println("in Level 1");
try
{
System.out.println("in Level 2");
result=100/0; //Level 2
try
{
System.out.println("in Level 3");
//result=100/0; //Level 3
}
catch (Exception e)
{
System.out.println("Level 3:" + e.getClass().toString());
}
finally
{
System.out.println("In Level 3 finally");
}
// result=100/0; //Level 2
}
catch (Exception e)
{
System.out.println("Level 2:" + e.getClass().toString());
}
finally
{
System.out.println("In Level 2 finally");
}
// result = 100 / 0; //level 1
}
catch (Exception e)
{
System.out.println("Level 1:" + e.getClass().toString());
}
finally
{
System.out.println("In Level 1 finally");
}
}
}
运行结果为:
可以看到,错误于2中出现,3被跳过,因此3的finally也并没有执行,另外,会先运行当前正在运行的try的finally
好,结束!