選課系統中用到了4個表,分别是classs、yonghu、teacher、student。在使用者中存放管理者的資訊name和password以及id,在另三個表中存放對應的資料如圖:

calss:
teacher:
student:
yonghu:
首先root使用者提前定義好名字以及密碼,老師和學生可以由root進行增加
登入時根據選擇的使用者類型将輸入的使用者名和密碼與資料庫中對應的進行判斷,根據使用者的不同類型跳轉到不同的界面。登陸成功後将登入使用者的名字存放到session中,之後進行一系列例如更改個人資訊、添加課程時直接調用session中的目前使用者的名字進行更改。
下面是代碼:
DAO:
1 packageDao;2
3 importjava.sql.Connection;4 importjava.sql.Statement;5 importjava.util.ArrayList;6 importjava.util.List;7 importjava.sql.ResultSet;8 importDBUtil.DBUtil;9 importEntity.teacher;10 importEntity.student;11 importEntity.Classs;12 public classDao {13 publicString dopost(String username,String password,String leibie) {14 String i="-1";15 String sql=null;16 if(leibie.equals("老師"))17 {18 sql="select * from teacher where xingming = '"+username+"'";19 }20 else if(leibie.equals("學生"))21 {22 sql="select * from student where xingming = '"+username+"'";23 }24 else if(leibie.equals("管理者"))25 {26 sql="select * from yonghu where name = '"+username+"'";27 }28 Connection conn =DBUtil.getConn();29 Statement state = null;30 ResultSet rs = null;31 try{32 state =conn.createStatement();33 rs =state.executeQuery(sql);34 while(rs.next()) {35 String password1 = rs.getString("password");36 if(password.equals(password1)) {37 i=rs.getString("id");38 }39 break;40 }41 }catch(Exception e) {42 e.printStackTrace();43 } finally{44 DBUtil.close(rs,state, conn);45 }46 returni;47 }48 public booleanteadd(teacher tea) {49
50 String sql = "insert into teacher(gonghao,xingbie,xingming,xuexiao,zhicheng,password,id) values('"+ tea.getGonghao() + "','"+ tea.getXingbie() +"','"+ tea.getXingming() +"','" + tea.getXuexiao() +"','"+ tea.getZhicheng() +"' , '"+tea.getPassword()+"' , '"+tea.getId()+"')";51 Connection conn =DBUtil.getConn();52 Statement state = null;53 boolean f = false;54 int a = 0;55
56 try{57 state =conn.createStatement();58 a=state.executeUpdate(sql);59 } catch(Exception e) {60 e.printStackTrace();61 } finally{62
63 DBUtil.close(state, conn);64 }65
66 if (a > 0) {67 f = true;68 }69 returnf;70
71 }72 public booleanstadd(student stu) {73
74 String sql = "insert into student(xuehao,xingming,xingbie,banji,zhuanye,password,id) values('"+ stu.getXuehao() + "','"+ stu.getXingming() +"','"+ stu.getXingbie() +"','" + stu.getBanji() +"','"+ stu.getZhuanye() +"' , '"+stu.getPassword()+"' , '"+stu.getId()+"')";75 Connection conn =DBUtil.getConn();76 Statement state = null;77 boolean f = false;78 int a = 0;79
80 try{81 state =conn.createStatement();82 a=state.executeUpdate(sql);83 } catch(Exception e) {84 e.printStackTrace();85 } finally{86
87 DBUtil.close(state, conn);88 }89
90 if (a > 0) {91 f = true;92 }93 returnf;94
95 }96 public booleanclaadd(String bianhao,String name,String number,String prename) {97
98
99 String sql = "insert into classs(clahao,claname,number,tea,num) values('"+ bianhao + "','"+ name +"','"+ number +"','"+prename+"', '0')";100 Connection conn =DBUtil.getConn();101 Statement state = null;102 boolean f = false;103 int a = 0;104
105 try{106 state =conn.createStatement();107 a=state.executeUpdate(sql);108 } catch(Exception e) {109 e.printStackTrace();110 } finally{111
112 DBUtil.close(state, conn);113 }114
115 if (a > 0) {116 f = true;117 }118 returnf;119
120 }121 public booleanteagai(String leibie,String neirong,String prename) {122
123 String sql = "update teacher set "+ leibie+" = '"+ neirong+"' "+"where xingming = '"+prename+"'";124 Connection conn =DBUtil.getConn();125 Statement state = null;126 boolean f = false;127 int a = 0;128
129 try{130 state =conn.createStatement();131 a=state.executeUpdate(sql);132 } catch(Exception e) {133 e.printStackTrace();134 } finally{135
136 DBUtil.close(state, conn);137 }138
139 if (a > 0) {140 f = true;141 }142 returnf;143
144 }145 public booleanstugai(String leibie,String neirong,String prename) {146
147 String sql = "update student set "+ leibie+" = '"+ neirong+"' "+"where xingming = '"+prename+"'";148 Connection conn =DBUtil.getConn();149 Statement state = null;150 boolean f = false;151 int a = 0;152
153 try{154 state =conn.createStatement();155 a=state.executeUpdate(sql);156 } catch(Exception e) {157 e.printStackTrace();158 } finally{159
160 DBUtil.close(state, conn);161 }162
163 if (a > 0) {164 f = true;165 }166 returnf;167
168 }169 public Listlist(){170 String sql="select * from classs";171 Connection conn =DBUtil.getConn();172 Statement state =null;173 ResultSet rs = null;174 List list = new ArrayList<>();175 try{176 state =conn.createStatement();177 rs =state.executeQuery(sql);178 Classs bean = null;179 while(rs.next()) {180 String claname1=rs.getString("claname");181 String clahao1=rs.getString("clahao");182 String number1=rs.getString("number");183 String tea1=rs.getString("tea");184 String num1=rs.getString("num");185 bean = newClasss(clahao1,claname1,number1,tea1,num1);186 list.add(bean);187
188 }189
190 }catch(Exception e) {191 e.printStackTrace();192 } finally{193 DBUtil.close(rs,state, conn);194 }195 returnlist;196 }197 public booleanjia(String num,String number,String clahao) {198 boolean f=false;199 int n1=Integer.parseInt(num);200 int n2=Integer.parseInt(number);201 if(n1
216 DBUtil.close(state, conn);217 }218
219 if (a > 0) {220 f = true;221 }222
223 }224 returnf;225 }226 }
DBUtil:
1 packageDBUtil;2
3
4 importjava.sql.Connection;5 importjava.sql.DriverManager;6 importjava.sql.PreparedStatement;7 importjava.sql.ResultSet;8 importjava.sql.SQLException;9 importjava.sql.Statement;10
11
12 public classDBUtil {13
14 public static String db_url = "**********";15 public static String db_user = "****";16 public static String db_pass = "******";17
18 public staticConnection getConn () {19 Connection conn = null;20
21 try{22 Class.forName("com.mysql.jdbc.Driver");23 conn =DriverManager.getConnection(db_url, db_user, db_pass);24 } catch(Exception e) {25 e.printStackTrace();26 }27
28 returnconn;29 }//end getConn
30
31 public static voidclose (Statement state, Connection conn) {32 if (state != null) {33 try{34 state.close();35 } catch(SQLException e) {36 e.printStackTrace();37 }38 }39
40 if (conn != null) {41 try{42 conn.close();43 } catch(SQLException e) {44 e.printStackTrace();45 }46 }47 }48
49 public static voidclose (ResultSet rs, Statement state, Connection conn) {50 if (rs != null) {51 try{52 rs.close();53 } catch(SQLException e) {54 e.printStackTrace();55 }56 }57
58 if (state != null) {59 try{60 state.close();61 } catch(SQLException e) {62 e.printStackTrace();63 }64 }65
66 if (conn != null) {67 try{68 conn.close();69 } catch(SQLException e) {70 e.printStackTrace();71 }72 }73 }74
75 public static void main(String[] args) throwsSQLException {76 Connection conn =getConn();77 PreparedStatement pstmt = null;78 ResultSet rs = null;79 String sql ="select * from yonghu";80 pstmt =conn.prepareStatement(sql);81 rs =pstmt.executeQuery();82 if(rs.next()){83 System.out.println("連接配接成功");84 }else{85 System.out.println("連接配接失敗");86 }87 }88 }
Entity中定義了4個類:
classs:
1 packageEntity;2
3 public classClasss {4 privateString clahao;5 privateString claname;6 privateString number;7 privateString tea;8 privateString num;9 publicString getClahao() {10 returnclahao;11 }12 public voidsetClahao(String clahao) {13 this.clahao =clahao;14 }15 publicString getClaname() {16 returnclaname;17 }18 public voidsetClaname(String claname) {19 this.claname =claname;20 }21 publicString getNumber() {22 returnnumber;23 }24 public voidsetNumber(String number) {25 this.number =number;26 }27 publicString getTea() {28 returntea;29 }30 public voidsetTea(String tea) {31 this.tea =tea;32 }33 publicString getNum() {34 returnnum;35 }36 public voidsetNum(String num) {37 this.num =num;38 }39 publicClasss(String clahao,String claname,String number, String tea,String num) {40 super();41 this.clahao=clahao;42 this.claname=claname;43 this.number=number;44 this.tea=tea;45 this.num=num;46 }47
48 }
另外三個是user、teacher、student結構和這個一樣就不上了。
Servlet:
1 packageServlet;2 importjava.io.IOException;3 importjava.util.List;4
5 importjavax.servlet.ServletException;6 importjavax.servlet.annotation.WebServlet;7 importjavax.servlet.http.HttpServlet;8 importjavax.servlet.http.HttpServletRequest;9 importjavax.servlet.http.HttpServletResponse;10 importjavax.servlet.http.HttpSession;11 importEntity.teacher;12 importEntity.User;13 importEntity.student;14 importEntity.Classs;15 importDao.Dao;16
17
18
19
20 @WebServlet("/Servlet")21 public class Servlet extendsHttpServlet {22 private static final long serialVersionUID = 1L;23
24
25 publicServlet() {26 super();27
28 }29 protected void service(HttpServletRequest req, HttpServletResponse resp) throwsServletException, IOException {30 req.setCharacterEncoding("utf-8");31 String method = req.getParameter("method");32 if ("dopost".equals(method)) {33 dopost(req,resp);34 }35 if ("tiao".equals(method)) {36 tiao(req,resp);37 }38 if ("teadd".equals(method)) {39 teadd(req,resp);40 }41 if ("stadd".equals(method)) {42 stadd(req,resp);43 }44 if ("claadd".equals(method)) {45 claadd(req,resp);46 }47 if ("teagai".equals(method)) {48 teagai(req,resp);49 }50 if ("stugai".equals(method)) {51 stugai(req,resp);52 }53 if("list".equals(method)){54 list(req,resp);55 }56 if("jia".equals(method)) {57 jia(req,resp);58 }59
60 }61
62
63 private void dopost(HttpServletRequest req, HttpServletResponse resp) throwsIOException, ServletException{64
65 req.setCharacterEncoding("utf-8");66 String username = req.getParameter("username");67 String password = req.getParameter("password");68 String leibie=req.getParameter("leibie");69 HttpSession session =req.getSession();70 session.setAttribute("prename",username);71 Dao dao=newDao();72 String id=dao.dopost(username, password,leibie);73 if(id.equals("-1")) {74 req.setAttribute("message", "登入失敗!");75 req.getRequestDispatcher("index.jsp").forward(req,resp);76 }77 else if(id.equals("0")) {78 req.setAttribute("message", "登陸成功!");79 req.getRequestDispatcher("allteacher.jsp").forward(req,resp);80 }81 else if(id.equals("1")) {82 req.setAttribute("message", "登陸成功!");83 req.getRequestDispatcher("allstudent.jsp").forward(req,resp);84 }85 else if(id.equals("2")) {86 req.setAttribute("message", "登陸成功!");87 req.getRequestDispatcher("root.jsp").forward(req,resp);88 }89 }90 private void tiao(HttpServletRequest req, HttpServletResponse resp) throwsIOException, ServletException{91 req.setCharacterEncoding("utf-8");92 String leibie=req.getParameter("leibie");93 if(leibie.equals("學生")) {94 req.setAttribute("message", "請開始添加學生資訊!");95 req.getRequestDispatcher("student.jsp").forward(req,resp);96 }97 if(leibie.equals("老師")) {98 req.setAttribute("message", "請添加老師資訊!");99 req.getRequestDispatcher("teacher.jsp").forward(req,resp);100 }101 }102 private void teadd(HttpServletRequest req, HttpServletResponse resp) throwsIOException, ServletException{103 req.setCharacterEncoding("utf-8");104 String gonghao=req.getParameter("gonghao");105 String xingming=req.getParameter("xingming");106 String xingbie=req.getParameter("xingbei");107 String xuexiao=req.getParameter("xuexiao");108 String zhicheng=req.getParameter("zhicheng");109 String password=req.getParameter("password");110 String id="0";111 teacher tea=newteacher(gonghao,xingbie,xingming,xuexiao,zhicheng,password,id);112 Dao dao =newDao();113 boolean f=dao.teadd(tea);114 if(f) {115 req.setAttribute("message", "添加成功!");116 req.getRequestDispatcher("root.jsp").forward(req,resp);117 } else{118 req.setAttribute("message", "添加失敗!");119 req.getRequestDispatcher("teacher.jsp").forward(req,resp);120 }121 }122 private void stadd(HttpServletRequest req, HttpServletResponse resp) throwsIOException, ServletException{123 req.setCharacterEncoding("utf-8");124 String xuehao=req.getParameter("xuehao");125 String xingming=req.getParameter("xingming");126 String xingbie=req.getParameter("xingbei");127 String banji=req.getParameter("banji");128 String zhuanye=req.getParameter("zhuanye");129 String password=req.getParameter("password");130 String id="1";131 student stu=newstudent(xuehao,xingming,xingbie,banji,zhuanye,password,id);132 Dao dao =newDao();133 boolean f=dao.stadd(stu);134 if(f) {135 req.setAttribute("message", "添加成功!");136 req.getRequestDispatcher("root.jsp").forward(req,resp);137 } else{138 req.setAttribute("message", "添加失敗!");139 req.getRequestDispatcher("teacher.jsp").forward(req,resp);140 }141 }142 private void claadd(HttpServletRequest req, HttpServletResponse resp) throwsIOException, ServletException{143 req.setCharacterEncoding("utf-8");144 HttpSession session =req.getSession();145 String prename=null;146 prename=(String)session.getAttribute("prename");147 String bianhao=req.getParameter("hao");148 String name=req.getParameter("name");149 String number=req.getParameter("number");150 Dao dao =newDao();151 boolean f=dao.claadd(bianhao,name,number,prename);152 if(f) {153 req.setAttribute("message", "添加成功!");154 req.getRequestDispatcher("allteacher.jsp").forward(req,resp);155 } else{156 req.setAttribute("message", "添加失敗!");157 req.getRequestDispatcher("addclass.jsp").forward(req,resp);158 }159 }160 private void teagai(HttpServletRequest req, HttpServletResponse resp) throwsIOException, ServletException{161 req.setCharacterEncoding("utf-8");162 HttpSession session =req.getSession();163 String prename=null;164 prename=(String)session.getAttribute("prename");165 String leibie=req.getParameter("leibie");166 String neirong=req.getParameter("neirong");167
168 Dao dao =newDao();169 boolean f=dao.teagai(leibie,neirong,prename);170 if(f) {171 req.setAttribute("message", "修改成功!");172 req.getRequestDispatcher("allteacher.jsp").forward(req,resp);173 } else{174 req.setAttribute("message", "修改失敗!");175 req.getRequestDispatcher("updatetea.jsp").forward(req,resp);176 }177 }178 private void stugai(HttpServletRequest req, HttpServletResponse resp) throwsIOException, ServletException{179 req.setCharacterEncoding("utf-8");180 HttpSession session =req.getSession();181 String prename=null;182 prename=(String)session.getAttribute("prename");183 String leibie=req.getParameter("leibie");184 String neirong=req.getParameter("neirong");185 Dao dao =newDao();186 boolean f=dao.stugai(leibie,neirong,prename);187 if(f) {188 req.setAttribute("message", "修改成功!");189 req.getRequestDispatcher("allstudent.jsp").forward(req,resp);190 } else{191 req.setAttribute("message", "修改失敗!");192 req.getRequestDispatcher("updatestu.jsp").forward(req,resp);193 }194 }195 private void list(HttpServletRequest req, HttpServletResponse resp) throwsIOException, ServletException{196
197 Dao dao=newDao();198 List holds =dao.list();199 req.setAttribute("holds", holds);200 req.getRequestDispatcher("xuan.jsp").forward(req,resp);201 }202 private void jia(HttpServletRequest req, HttpServletResponse resp) throwsIOException, ServletException{203 req.setCharacterEncoding("UTF-8");204 String num=req.getParameter("num");205 String number=req.getParameter("number");206 String clahao=req.getParameter("clahao");207 Dao dao=newDao();208 boolean f=dao.jia(num, number, clahao);209 if(f) {210 req.setAttribute("message", "選課成功!");211 req.getRequestDispatcher("allstudent.jsp").forward(req,resp);212 } else{213 req.setAttribute("message", "選課失敗!");214 req.getRequestDispatcher("xuan.jsp").forward(req,resp);215 }216 }217 }
然後就是各個jsp界面了
index:
1
2 pageEncoding="UTF-8"%>
3
4
5
6
7
登入
8
9
10
11 Object message = request.getAttribute("message");12 if (message != null && !"".equals(message)) {13 %>
14
15 alert("");16 var asd=request.getAttribute("username");17
18
19 }20 %>
21
22
23 使用者名
24
25
26 密碼
27
28
29
類别
30 學生
31 老師
32 管理者
33
34
35
36
37
38
39
40
root:
1
2 pageEncoding="UTF-8"%>
3
4
5
6
7
目前位置:添加資訊
8
9
10
11 Object message = request.getAttribute("message");12 if (message != null && !"".equals(message)) {13 %>
14
15 alert("");16 var asd=request.getAttribute("username");17
18
19 }20 %>
21
22
23
類别
24 學生
25 老師
26
27
28
29
30
31
32
33
34
35
36
37
38
teacher:
添加老師資訊
var asd=request.getAttribute("name");
工号: | |
---|---|
姓名: | |
性别: | 男女 |
學校: | |
職稱: | |
密碼: | |
student:
添加學生資訊
var asd=request.getAttribute("name");
學号: | |
---|---|
姓名: | |
性别: | 男 name="xingbei" type="radio" value="女" />女 |
班級: | |
專業: | |
密碼: | |
allteacher:
1
2 pageEncoding="UTF-8"%>
3
4
5
6
7
目前位置:首頁
8
9
10
11 Object message = request.getAttribute("message");12 if (message != null && !"".equals(message)) {13 %>
14
15 alert("");16 var asd=request.getAttribute("username");17
18
19 }20 %>
21
24
25
26
27
目前使用者:${prename }
28
29
30 修改個人資訊
31
32
33
34 添加課程資訊
35
36
37
38
39
40
41
42
43
44
45
46
allstudent:
1
2 pageEncoding="UTF-8"%>
3
4
5
6
7
8
目前位置:首頁
9
10
11
12 Object message = request.getAttribute("message");13 if (message != null && !"".equals(message)) {14 %>
15
16 alert("");17 var asd=request.getAttribute("username");18
19
20 }21 %>
22
25
26
27
28
目前使用者:${prename }
29
30
31 修改個人資訊
32
33
34
35 選課
36
37
38
39
40
41
42
43
44
45
46
addclass:
1
2 pageEncoding="UTF-8"%>
3
4
5
6
7
添加老師資訊
8
9
10
11 Object message = request.getAttribute("message");12 if (message != null && !"".equals(message)) {13 %>
14
15 alert("");16 var asd=request.getAttribute("name");17
18
19 }20 %>
21
22
23
24
25
課程編号:
26
27
28
29
課程名稱:
30
31
32
33
選課人數:
34
35
36
37
38
39
40
41
42
43
44
45
46
47
updatestu:
1
2 pageEncoding="UTF-8"%>
3
4
5
6
7
8
Insert title here
9
10
11
12 Object message = request.getAttribute("message");13 if(message!=null && !"".equals(message)){14 %>
15
16 alert("");17
18
19
20 String prename=null;21 prename=request.getParameter(prename);22 %>
23
24
25
26
${prename }
27
28
29
30
31
類别
32
33 xuehao
34 xingming
35 xingbie
36 banji
37 zhuanye
38
39
40
41
42
43
44
45
46
47
48
49
50
updatetea:
1
2 pageEncoding="UTF-8"%>
3
4
5
6
7
Insert title here
8
9
10
11 Object message = request.getAttribute("message");12 if(message!=null && !"".equals(message)){13 %>
14
15 alert("");16
17
18
19 String prename=null;20 prename=request.getParameter(prename);21 %>
22
23
目前使用者:${prename }
24
25
26
27
類别
28 gonghao
29 xingming
30 xingbie
31 xuexiao
32 zhicheng
33
34
35
36
37
38
39
40
41
42
43
44
45
xuan:
1
2 pageEncoding="UTF-8"%>
3
4
5
6
7
8
9
課程資訊
10
11
12
13 Object message = request.getAttribute("message");14 if (message != null && !"".equals(message)) {15 %>
16
17 alert("");18 var asd=request.getAttribute("username");19
20
21 }22 %>
23
24
25
課程編号
26
課程名稱
27
任課老師
28
已選人數
29
課程人數
30
31
32
33
34
${item.clahao}
35
${item.claname}
36
${item.tea}
37
${item.num}
38
${item.number}
39
選課
40
41
42
43
44
45
46
47
這就是全部的代碼了,做這個系統的過程中我遇到的難點是如何保持一個使用者的登入狀态,可以再之後這個使用者進行操作時簡單便捷的擷取目前使用者的資訊,找了資料之後發現session對象符合我的要求,便開始在我原來的代碼上進行更改。最終實作了登入狀态的保持。