简单的选课系统(6)——选课界面和管理员界面

前言

前面已经写了很多篇,其实每一篇都比较简单,因为我希望自己以后看自己的博客也可以一目了然,所以就分开来写,这一篇就做个结尾吧,把选课界面和管理员的界面一起给出。选课系统(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框架,学了设计样式,但是后来没有进一步去改代码,因为感觉自己要学的东西还是比较多,所以没有再去修改这个代码,在以后的项目设计中会主动去使用框架,使代码简洁。


版权声明:本文为ali_lili原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。