前言
前面已经写了很多篇,其实每一篇都比较简单,因为我希望自己以后看自己的博客也可以一目了然,所以就分开来写,这一篇就做个结尾吧,把选课界面和管理员的界面一起给出。选课系统(5)的运行结果有一个选课按钮,点击它进入选课界面,也是直接给出选课界面代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="h2.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
if(session.getAttribute("userName")==null)
response.sendRedirect("iindex.jsp");
String userName=(String)session.getAttribute("userName");
if(userName.equals("10"))
response.sendRedirect("index5.jsp");
%>
<%
String realname="";
if(session.getAttribute("realname")!=null)
realname=(String)session.getAttribute("realname");
String str="1";
boolean flag=false;
String a;
int number=0;
String Number=request.getParameter("number");
String Name;
if(Number!=null)
{number=Integer.valueOf(Number);
}
for(int i=0;i<=number;i++){
Name="choose"+i;
if(request.getParameter(Name)!=null)
{str=new String(request.getParameter("choose"+i).getBytes("ISO-8859-1"),"UTF-8").trim();
flag=selected.choosen( userName, str);
if(flag==false) out.print("选课失败");
}
}
%>
可以选的课:
<%
//boolean flag;
int n=0;
String classes[]=allcourse.allclasses();
String teachers[]=allcourse.allteachers();
int numbers[]=allcourse.allnumbers();
out.print(classes.length);
//flag=allcourse.allclasses();
for(int i=0;i<classes.length&&classes[i]!=null;i++){
%>
<form action="" method="post" name="game1" >
<input type="checkbox" name="choose<%=i %>" value="<%=classes[i] %> ">
课程名称:<input type="text" value="<%=classes[i] %>" style="width:100px">
任课老师<input type="text" value="<%=teachers[i] %>" style="width:100px">
选课人数<input type="text" value="<%=numbers[i] %>" style="width:100px"><br/>
<% n=i;} %>
<%//if(i==classes.length-1||classes[i+1]==null){ %>
<input type="hidden" name="number" value="<%=n%>">
<input type="submit" value="宣科">
</form>
<br><br><br><br><br><br>
<%if(!realname.equals("")){ %>
<%=realname %>已选的科目为:<br>
<% }
for(int i=0;i<=4;i++){
Name="cancel"+i;
if(request.getParameter(Name)!=null)
{
//out.print(i);
str=new String(request.getParameter("cancel"+i).getBytes("ISO-8859-1"),"UTF-8").trim();
flag=cancel.cancelCourse(userName, str);
}
}
%>
<%
int n1=0;
String[] course=new String[5];
course=selected.selecedtResult(userName);
for(int i=0;i<5;i++){
if(course[i]==null)
out.print("");
else{
%>
<form action="" method="post" name="game">
<input type="checkbox" value="<%=course[i]%>" name="cancel<%=i %>" /><%=course[i]%><br>
<%
n1=i;}}
%>
<input type="hidden" name="number1" value="<%=n1%>">
<input type="submit" value="取消" name="cancel">
</form>
</body>
</html>
该界面调用了allcourse方法和selected方法,这里也直接给出代码:
package h2;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public class allcourse {
public static String[] allclasses() {
String classes[]=new String[10];
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
//String course
int i=0;
try{
String sql="SELECT COURSENAME FROM LIXIAOLI.COURSE WHERE NUMBER<5";
con=connection.getConnection();
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
//if(!rs.wasNull())return true;
while(rs.next()) {
classes[i++]=rs.getString("COURSENAME");
}
//con.close();
//stmt.close();
}
catch(Exception e) {
System.out.println(e.getMessage());
}
//if(i==0) {courses[0]="1";return courses;}
//else
return classes;
}
public static String[] allteachers() {
String teachers[]=new String[10];
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
//String course
int i=0;
try{
String sql="SELECT TEACHER FROM LIXIAOLI.COURSE WHERE NUMBER<5";
con=connection.getConnection();
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
while(rs.next()) {
teachers[i++]=rs.getString("TEACHER");
}
//con.close();
//stmt.close();
}
catch(Exception e) {
System.out.println(e.getMessage());
}
//if(i==0) {courses[0]="1";return courses;}
//else
return teachers;
}
public static int[] allnumbers() {
int numbers[]=new int[10];
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
//String course
int i=0;
try{
String sql="SELECT NUMBER FROM LIXIAOLI.COURSE WHERE NUMBER<5";
con=connection.getConnection();
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
while(rs.next()) {
numbers[i++]=rs.getInt("NUMBER");
}
//con.close();
//stmt.close();
}
catch(Exception e) {
System.out.println(e.getMessage());
}
//if(i==0) {courses[0]="1";return courses;}
//else
return numbers;
}
}
package h2;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public class selected {
public static String[] selecedtResult(String userName) {
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
String courses[]=new String[5];
String a="数据库";
int i=0;
try{
String sql="SELECT COURSE FROM LIXIAOLI.USER_COURSE WHERE USERNAME='"+userName+"'";
con=connection.getConnection();
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
if (!rs.wasNull()){
while(rs.next()) {
courses[i++]=rs.getString("COURSE");
}
}
}
catch(Exception e) {
System.out.println(e.getMessage());
}
return courses;
}
public static boolean choosen(String userName,String choosecourse) {
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
int i=0,j=0,k=0;
try{
String sql="INSERT INTO LIXIAOLI.USER_COURSE VALUES('"+userName+"','"+choosecourse+"')";
String sql2="SELECT * FROM LIXIAOLI.USER_COURSE WHERE COURSE='"+choosecourse+"' AND USERNAME='"+userName+"'";
String sql3="SELECT * FROM LIXIAOLI.USER_COURSE WHERE USERNAME='"+userName+"'";
String sql1="UPDATE LIXIAOLI.COURSE SET NUMBER=NUMBER+1 WHERE COURSENAME='"+choosecourse+"'";
con=connection.getConnection();
stmt=con.createStatement();
rs=stmt.executeQuery(sql3);
while(rs.next()) {
k++;
}if(k<5) {
rs=stmt.executeQuery(sql2);
if(!rs.next()) {
i=stmt.executeUpdate(sql);
j=stmt.executeUpdate(sql1);}
if (j>0){
return true;
}
} }
catch(Exception e) {
System.out.println(e.getMessage());
}
return false;
}
public static String teachername(String coursename ) {
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
String teachername="";
try{
String sql="SELECT TEACHER FROM LIXIAOLI.COURSE WHERE COURSENAME='"+coursename+"'";
con=connection.getConnection();
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
if(rs.next())
teachername=rs.getString("TEACHER");
}
catch(Exception e) {
System.out.println(e.getMessage());
}
return teachername;
}
}
运行结果为:
选课可以是多选,取消课也是设置了多选按钮。当时在写代码的时候,这个界面是写了最久的,很多小问题,所以最后写出来的代码也比较乱。
管理员界面
在登陆界面的时候讲过,如果用户名和密码都是10的话,就是会跳转到管理员界面,管理员可以查询某一门课有什么学生选,哪个学生选了哪些课,现在也是直接给出代码和相应的java类
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.sql.*" %>
<%@page import="java.util.Properties" %>
<%@page import="java.awt.*" %>
<%@page import="java.awt.event.ActionEvent" %>
<%@page import="java.awt.event.ActionListener" %>
<%@page import="javax.swing.*" %>
<%@page import="h2.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
if(session.getAttribute("userName")==null)
response.sendRedirect("iindex.jsp");
String userName=(String)session.getAttribute("userName");
if(!userName.equals("10"))
response.sendRedirect("iindex.jsp");
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
String str;
String usercode[];
String username[]=new String[5];
int i=0;
int k=0;
String temp;
String result="nn";
String name="";
String Name;
try{String sql="SELECT * FROM LIXIAOLI.COURSE";
con=connection.getConnection();
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
ResultSetMetaData rsma=rs.getMetaData();
int colCount=rsma.getColumnCount();
out.print("<table border='1'ellspacing='0'>");
out.print("<tr>");
out.print("<td>"+"课程"+"</td>");
out.print("<td>"+"任课老师"+"</td>");
out.print("<td>"+"选课人数"+"</td>");
out.print("</td>");
while(rs.next()){
out.print("<tr>");
out.print("<td>");
%>
<form action="" method="post">
<input type="checkbox" name="classes<%=k%>" value="<%=rs.getString(1)%>"><%=rs.getString(1)%>
<% out.print("</td>");
k=k+1;
for(int j=2;j<=colCount;j++){
out.print("<td>"+rs.getString(j)+"</td>");
}
out.print("</tD>");
}%>
<%
out.print("</table>");
for( i=0;i<10;i++)
{
name="classes"+i;
Name=request.getParameter("classes"+i);
if(Name!=null){
str=new String(Name.getBytes("ISO-8859-1"),"UTF-8").trim();
usercode=manager.manage(str);
for(int p=0;p<usercode.length&&usercode[p]!=null;p++)
username[p]=manager.managestudent(usercode[p]);
out.print("<table border='1'ellspacing='0'>");
out.print("<tr>");
out.print("<td>"+"课程"+"</td>");
out.print("<td>"+"选课学生学号"+"</td>");
out.print("<td>"+"选课学生姓名"+"</td>");
out.print("</td>");
Name=new String(Name.getBytes("ISO-8859-1"),"UTF-8");
for(int j=0;j<usercode.length&&usercode[j]!=null;j++)
{
str=new String(usercode[j].getBytes("ISO-8859-1"),"UTF-8");
temp=new String(username[j].getBytes("ISO-8859-1"),"UTF-8");
out.print("<tr>");
out.print("<td>"+Name+"</td>");
out.print("<td>"+str+"</td>");
out.print("<td>"+username[j]+"</td>");
out.print("</td>");
}
out.print("</table>");
}
}
}
catch(Exception e) {
System.out.println(e.getMessage());
}
%>
<input type="submit" value="查询" >
</form>
<input type="button" value="察看学生的选课情况" onclick="window.location.href = 'index6.jsp'">
</body>
</html>
运行结果为:
管理员可以点击自己想要查询的课程,可以是多选,然后点击查询按钮,就可以看到选择该课程的学生
点击查看学生的选课情况按钮,就进入另一个界面(index6.jsp)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.sql.*" %>
<%@page import="java.util.Properties" %>
<%@page import="java.awt.*" %>
<%@page import="java.awt.event.ActionEvent" %>
<%@page import="java.awt.event.ActionListener" %>
<%@page import="javax.swing.*" %>
<%@page import="h2.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
String str;
String usercode[];
String course[]=new String[5];
int i=0;
int k=0;
String temp;
String result="nn";
String name="";
String Name;
try{
String sql="SELECT USERNAME FROM LIXIAOLI.USER";
con=connection.getConnection();
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
ResultSetMetaData rsma=rs.getMetaData();
int colCount=rsma.getColumnCount();
out.print("<table border='1'ellspacing='0'>");
out.print("<tr>");
out.print("<td>"+"学生姓名"+"</td>");
out.print("<td>"+"所选课程数量"+"</td>");
out.print("</td>");
while(rs.next()){
if(!rs.getString("USERNAME").equals("10")){
out.print("<tr>");
out.print("<td>");
%>
<form action="" method="post">
<input type="checkbox" name="name<%=k%>" value="<%=rs.getString(1)%>"><%=manager.managestudent(rs.getString(1))%>
<% out.print("</td>");
k=k+1;
out.print("<td>"+manager.StudentCourseCount(rs.getString(1))+"</td>");
out.print("</td>");
}}%>
<%
out.print("</table>");
for( i=0;i<5;i++)
{
name="name"+i;
Name=request.getParameter("name"+i);
if(Name!=null){
str=new String(Name.getBytes("ISO-8859-1"),"UTF-8").trim();
course=selected.selecedtResult(str);
out.print("<table border='1'ellspacing='0'>");
out.print("<tr>");
out.print("<td>"+"学生学号"+"</td>");
out.print("<td>"+"学生姓名"+"</td>");
out.print("<td>"+"所选课程"+"</td>");
out.print("</td>");
Name=new String(Name.getBytes("ISO-8859-1"),"UTF-8");
for(int j=0;j<course.length&&course[j]!=null;j++)
{
//str=new String(usercode[j].getBytes("ISO-8859-1"),"UTF-8");
// temp=new String(username[j].getBytes("ISO-8859-1"),"UTF-8");
out.print("<tr>");
out.print("<td>"+Name+"</td>");
out.print("<td>"+manager.managestudent(Name)+"</td>");
out.print("<td>"+course[j]+"</td>");
out.print("</td>");
}
out.print("</table>");
}
}
}
catch(Exception e) {
System.out.println(e.getMessage());
}
%>
<input type="submit" value="查询" >
</form>
</body>
</html>
运行结果为:
同样点击学生名字和查询按钮,可以看到该学生选课情况:
这里调用了selected类和manager类:
package h2;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public class manager {
public static String[] manage(String coursename) {
String username[]=new String[5];
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
int i=0;
try{
String sql="SELECT USERNAME FROM LIXIAOLI.USER_COURSE WHERE COURSE='"+coursename+"'";
con=connection.getConnection();
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
while(rs.next()) {
username[i++]=rs.getString("USERNAME");
}
}
catch(Exception e) {
System.out.println(e.getMessage());
}
return username;
}
public static String managestudent(String usercode) {
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
String username="";
try{
String sql="SELECT REALNAME FROM LIXIAOLI.USER WHERE USERNAME='"+usercode+"'";
con=connection.getConnection();
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
if(rs.next()) {
username=rs.getString("REALNAME");
}
}
catch(Exception e) {
System.out.println(e.getMessage());
}
return username;
}
public static int StudentCourseCount(String username) {
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
int count=0;
try{
String sql="SELECT * FROM LIXIAOLI.USER_COURSE WHERE USERNAME='"+username+"'";
con=connection.getConnection();
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
while(rs.next()) {
count++;
}
}
catch(Exception e) {
System.out.println(e.getMessage());
}
return count;
}
}
package h2;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public class selected {
public static String[] selecedtResult(String userName) {
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
String courses[]=new String[5];
String a="数据库";
int i=0;
try{
String sql="SELECT COURSE FROM LIXIAOLI.USER_COURSE WHERE USERNAME='"+userName+"'";
con=connection.getConnection();
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
if (!rs.wasNull()){
while(rs.next()) {
courses[i++]=rs.getString("COURSE");
}
}
}
catch(Exception e) {
System.out.println(e.getMessage());
}
return courses;
}
public static boolean choosen(String userName,String choosecourse) {
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
int i=0,j=0,k=0;
try{
String sql="INSERT INTO LIXIAOLI.USER_COURSE VALUES('"+userName+"','"+choosecourse+"')";
String sql2="SELECT * FROM LIXIAOLI.USER_COURSE WHERE COURSE='"+choosecourse+"' AND USERNAME='"+userName+"'";
String sql3="SELECT * FROM LIXIAOLI.USER_COURSE WHERE USERNAME='"+userName+"'";
String sql1="UPDATE LIXIAOLI.COURSE SET NUMBER=NUMBER+1 WHERE COURSENAME='"+choosecourse+"'";
con=connection.getConnection();
stmt=con.createStatement();
rs=stmt.executeQuery(sql3);
while(rs.next()) {
k++;
}if(k<5) {
rs=stmt.executeQuery(sql2);
if(!rs.next()) {
i=stmt.executeUpdate(sql);
j=stmt.executeUpdate(sql1);}
if (j>0){
return true;
}
} }
catch(Exception e) {
System.out.println(e.getMessage());
}
return false;
}
public static String teachername(String coursename ) {
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
String teachername="";
try{
String sql="SELECT TEACHER FROM LIXIAOLI.COURSE WHERE COURSENAME='"+coursename+"'";
con=connection.getConnection();
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
if(rs.next())
teachername=rs.getString("TEACHER");
}
catch(Exception e) {
System.out.println(e.getMessage());
}
return teachername;
}
}
总结该选课系统功能
本来应该在最开始就说明功能的,但是当时没有想到,所以在这里补充一下:首先是登陆界面,新用户可以进行注册,老用户输入了正确的用户名和密码后就可以查询自己的选课情况,即自己选了什么课,接着可以点击按钮进入选课操作。逻辑和代码都不难。还有就是管理员,输入指定的管理员账号和密码可以查询选课结果,就是查询每个学生选课什么课,每一门课分别有哪些学生选。
总结
由于本人还是小白,所以代码风格还比较乱,以后会多加注意。但是这里代码乱不仅仅是写胆码习惯不好,而是没有使用框架。前阵子也学了MVC框架,学了设计样式,但是后来没有进一步去改代码,因为感觉自己要学的东西还是比较多,所以没有再去修改这个代码,在以后的项目设计中会主动去使用框架,使代码简洁。