哈利路亚
Let's take one million years picnic
欢迎来到Sean Cleveland的博客
JAVA学习日报 10/27(快乐作业)

每周三写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

好,结束!

posted on 2020-10-27 19:34  哈利路亚#0207  阅读(82)  评论(0编辑  收藏  举报
Live2D