每周三写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")+" "); %> <%} %> <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+"的选课记录如下 "); 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")+" "); } } 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
好,结束!