學生管理系統(tǒng)jsp實驗報告_第1頁
學生管理系統(tǒng)jsp實驗報告_第2頁
學生管理系統(tǒng)jsp實驗報告_第3頁
學生管理系統(tǒng)jsp實驗報告_第4頁
學生管理系統(tǒng)jsp實驗報告_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、實踐考核類課程(二)實驗報告 姓 名張楊學 號班 級軟一0901指 導 教 師劉益先實驗名稱學生選課系統(tǒng)開 設 學 期2010 2011第二學期評 定 成 績評定人簽字評 定 日 期東北大學軟件學院2011年4月1. 系統(tǒng)分析與設計 本次實驗是是設計一個基于web平臺的學生選課系統(tǒng),主要用于實現(xiàn)學生選課,課程管理,與課程維護等等模塊;需要使用的技術是Servlet、JSP、JDBC、DAO等關鍵技術。在本系統(tǒng)中,有三類用戶:系統(tǒng)管理員,教師和學生。三種不同的用戶所具有的操作權(quán)限以及操作內(nèi)容均不一樣。本選課系統(tǒng)給予教師很大的自主權(quán),系統(tǒng)管理員只負責向系統(tǒng)中添加學生和教師的個人信息。教師、學生可以

2、錄網(wǎng)站自行進行選課,排課。系統(tǒng)管理員設置一個選課范圍,教師可以開設課程;學生可以登陸網(wǎng)站選擇課程。教師用戶登陸網(wǎng)站后可以開設課程,為自己的課程編輯課程內(nèi)容和課程信息。每門課程可以是必修或則選修,教師為每門課程設置一個學分,并可以在課程結(jié)束后給予成績和分數(shù),如果學生及格,學生將獲得該課程的學分。對于學生用戶,每個學生除了必須選擇必修課程外,學生可以對自己選課信息進行選擇。系統(tǒng)可以根據(jù)學生的選課信息,生成一份學生自己的課表。課程結(jié)束后學生可登錄網(wǎng)站查詢成績。1.2 系統(tǒng)功能流程 用戶登錄身份驗證模塊驗證用戶名和密碼,并根據(jù)不同的用戶類型,選擇; 用戶登錄身份驗證模塊登陸注冊模塊錄入信息模塊開設課程

3、模塊查詢個人信息模塊評分模塊查看課程模塊選課模塊數(shù)據(jù)庫模塊 數(shù)據(jù)庫訪問模塊(1)登錄與注銷 每個用戶都可以用自己的帳號登錄系統(tǒng)。用戶操作完成后推出系統(tǒng),注銷后可以重新登錄系統(tǒng)。 (2)修改密碼 每個用戶第一次登錄都用默認密碼。(1) 系統(tǒng)管理員管理員號管理員姓名密碼用戶類型設置選課:系統(tǒng)管理員通過此項功能設置選課,只有在選課范圍內(nèi),學生才可以選擇課程,不得修改。錄入學生與教師個人信息:通過此項功能可以實現(xiàn)對教師和學生的個人信息添加刪除。(2) 教師用戶教師號教師姓名密碼用戶類型性別職稱顯示和修改個人信息:教師用戶登錄系統(tǒng)后,可以查看和修改教師的個人信息,如姓名,電話,E-mail地址等。開設課

4、程:教師用戶登錄系統(tǒng)后,可以開設課程,可以設置該課程可以設置該課程的最大人數(shù)。編輯課程上課時間:教師在開設了課程后,可以靈活地設置上課時間和地點。給學生分數(shù):課程結(jié)束后,教師用戶登錄系統(tǒng),可以為學過課程的學生給予相應的成績,若及格,給予學生學分。(3) 學生用戶學 號系 號班 級成 績政治面貌聯(lián)系方式就讀中學學生性別籍貫姓名身份證號交費情況出生日期入學時間簡歷民 族專業(yè)號用戶類型顯示和修改個人信息:學生登錄系統(tǒng)后,可以查看和修改學生的個人信息,如姓名,性別,電話等。查看必修課程:學生登錄后,可以查看所有的必修課程。查看該課程的信息,上課時間地點,開課教師信息等。選擇選修課程:學生登錄系統(tǒng)后,在

5、所有選修課程中可以選擇至少兩門選修課程。同時可以查看相關信息。查看最終選課信息:學生登錄系統(tǒng)后,可列出已選擇的課程,若選課信息未被鎖定,則可以退選,若所選課程少于兩門,系統(tǒng)會提示選擇的課程少于兩門。查看學分和成績課程結(jié)束后,學生登錄系統(tǒng)可查看自己學習課程的成績。1.3 數(shù)據(jù)庫設計student,Teacher,Course,List,Admin,每個表與邏輯設計中一種的關系模式相對應。下面是每個數(shù)據(jù)表中的屬性,包括屬性列的名稱、數(shù)據(jù)類型、長度、是否可以為空和備注說明等內(nèi)容。(1) Student表。Student表用來存儲學生的個人信息,使用學號作為主鍵,如表3-2:表3-2 Student表

6、(2) Teacher表。Teacher表用來存儲教師的個人信息,用學校分配給教師的教師編號作為主鍵,這樣可以避免重復,如圖3-3:表3-3 Teacher表(3) Course表。Course表用來存儲課程信息,Course表以課程編號為主鍵,設置課程編號自動增加1(通過建表的時候?qū)傩粤性O置“標識”,并設置“標識遞增量”為1)。表中開課教師Id為外鍵,所有“TId”的值必須是Teacher表中的“TId”值。如表3-4:表3-4 Course表(4) List表。List表用來存放課程的上課時間和上課信息,包括課程編號。表3-6 List表(5) Admin表。Admin表用來存放系統(tǒng)管理

7、員信息,如表3-9:表3-9 Admin表2系統(tǒng)實現(xiàn)與測試1系統(tǒng)首頁,點擊進入選課系統(tǒng)登錄頁面 點擊進入選課系統(tǒng)登錄頁面2登陸頁面系統(tǒng)的登陸頁面index.jsp在頁面左邊顯示出三種身份登錄的鏈接。便于不同用戶清晰的看清登錄的位置。不同身份的用戶登錄提交的用戶名和密碼提交到不同身份的數(shù)據(jù)庫認證頁面中。如學生用戶登錄提交到login.jsp。當驗證通過時,跳到學生用戶的頁面。并把信息保存進session,以供其他頁面判斷用戶是否已經(jīng)登錄。學生用戶通過歡迎界面進入登錄界面,輸入用戶名以及密碼,然后選擇權(quán)限(學生/老師/管理員)進入自己的頁面。該頁面會對用戶是否輸入用戶名或密碼,輸入是否正確進行檢驗

8、,如果輸入正確,則直接進入權(quán)限所對應的歡迎界面。否則,則提示用戶名或密碼錯誤。輸入學生學號,進入學生歡迎界面。點擊 查看已選課程,學生可以查看自己的已選課程。點擊注冊課程選項,進入頁面后選擇相應課程后課程列表結(jié)果如下:選擇注銷 計算機編程藝術 課程,同上。結(jié)果如下管理員選擇管理員進入歡迎界面。選擇 刪除課程 可以進行對相應課程的刪除。選擇 管理課程,可以實現(xiàn)對于課程的管理。選擇 增加學生 可以實現(xiàn)對學生的添加。選擇 添加/刪除老師,可以實現(xiàn)對老師的有效管理。選擇 查看所有學生/老師 可以查看到所有學生/老師的信息。教師以老師身份登錄,界面如下。選擇查看已帶課程,可以查看自己的所有課程。選擇給出

9、成績,可以成功的為學生給出成績。2.1系統(tǒng)采用的關鍵技術在頁面中用到了頁面語言HTML,JavaScript以及JSP;標記語言使用的是:XML;后臺中使用了Servlet服務器,數(shù)據(jù)庫操作使用的是JDBC,DAO;全局使用了MVC設計模式等,是在JDK+ MyEclipse+Tomcat+MySQL的開發(fā)環(huán)境中完成了這個學生選課系統(tǒng)。2.2 關鍵程序流程下面用視圖的方式展示學生選課系統(tǒng)的流程!基本表視圖教師課表班級課表學生學籍表學生選課表課程表選修課開課表教師表學院開課表學生表系部表NNNNN111NN11NN2.3 關鍵代碼分析下面將每個模塊中好的部分以及重要的部分進行展示連接數(shù)據(jù)庫模塊:

10、DataBaseFactory 類用于創(chuàng)建數(shù)據(jù)庫連接,是一個連接數(shù)據(jù)庫的工具類!package com.jinkun.data;import java.sql.*;public class DataBaseFactory private Connection conn=null; public void DataBaseFactory() throws Exception/得到一個statement public Statement getStatement() throws Exception DriverManager.registerDriver(new org.gjt.mm.mysql

11、.Driver(); Class.forName(org.gjt.mm.mysql.Driver).newInstance(); String url =jdbc:mysql:/localhost:3306/register?user=root&password=&useUnicode=true&characterEncoding=UTF-8; conn= DriverManager.getConnection(url); return conn.createStatement(); public ResultSet executeQuery(Statement stmt,String que

12、ry) throws Exception ResultSet rs=stmt.executeQuery(query); return rs; public boolean execute(Statement stmt,String query) throws Exception boolean rs=stmt.execute(query); return rs; public void executeUpdate(Statement stmt,String query) throws SQLException stmt.executeUpdate(query); public void clo

13、se() throws SQLException if(conn!=null) conn.close(); 學生模塊:studentDao在這個類中具體定義了學生的動能以及權(quán)限(包括:增加/刪除學生,增加/刪除某一門課程,以及顯示全部的課程列表等等)public class StudentDao private DataBaseFactory dataBase;public StudentDao()dataBase=new DataBaseFactory();/注銷學生的一門課程public void cancelCoursed(String userid,String classid) th

14、rows SQLException, ExceptionString query=delete from list where Cno=+classid+;dataBase.executeUpdate(dataBase.getStatement(), query);dataBase.close();public Student getStudent(String stuno) throws ExceptionStudent student=null;String sqlStudent = select * from student where studentID=+stuno+;ResultS

15、et rs=(ResultSet) dataBase.executeQuery(Statement) dataBase.getStatement(), sqlStudent);if(rs.next()student=new Student(rs.getString(1),rs.getString(2),rs.getString(3);dataBase.close();return student;/增加一個學生public void addStudent(Student student) throws SQLException, ExceptionString sqlStudent=inser

16、t into student values(+student.getID()+,+student.getName()+, +student.getPassword()+);dataBase.executeUpdate(Statement) dataBase.getStatement(), sqlStudent);dataBase.close();public List getAllStudents() throws ExceptionList students=new ArrayList();String sqlStudent=select * from student;ResultSet r

17、s=(ResultSet) dataBase.executeQuery(Statement) dataBase.getStatement(), sqlStudent);while(rs.next()String studentid=rs.getString(1);String studentName=rs.getString(2);String password=rs.getString(3);Student s=new Student(studentid,studentName,password);students.add(s);dataBase.close();return student

18、s;public Course getCourse(String courseid) throws ExceptionCourse c=null;String sqlStudent=select * from course where id=+courseid+;ResultSet rs=(ResultSet) dataBase.executeQuery(Statement) dataBase.getStatement(), sqlStudent);if(rs.next()String className=rs.getString(2);String teacherName=rs.getStr

19、ing(3);int counts=Integer.parseInt(rs.getString(5);c=new Course(courseid,className,teacherName,counts);rs.close();dataBase.close();return c;/得到課程列表,用于顯示某個學生注冊的全部的課程public List getCourses(Student student) throws ExceptionList signUpInfo=new ArrayList();String sqlStudent=select * from list where Sno=+

20、student.getID()+;ResultSet rs=(ResultSet) dataBase.executeQuery(Statement) dataBase.getStatement(), sqlStudent);while(rs.next()String cno=rs.getString(3);signUpInfo.add(this.getCourse(cno);rs.close();dataBase.close();return signUpInfo;/判斷學生是否已經(jīng)注冊public boolean isRegistered(String studentid,String co

21、urseid) throws ExceptionString sqlStudent=select * from list where Sno=+studentid+;ResultSet rs=(ResultSet) dataBase.executeQuery(Statement) dataBase.getStatement(),sqlStudent);while(rs.next()String courid=rs.getString(3);if(courid.equals(courseid)return true;rs.close();dataBase.close();return false

22、;/用于注冊一個學生public boolean register(String studentid,String courseid,String teacherid) throws SQLException, ExceptionString sql=select * from counts where id=1;ResultSet rs=dataBase.executeQuery(dataBase.getStatement(),sql);int i=0;if(rs.next()i=Integer.parseInt(rs.getString(2);i+;sql=update counts se

23、t idcounts=+i+ where id=1;dataBase.executeUpdate(dataBase.getStatement(),sql);String sqlStudent=insert into list values(+i+,+studentid+,+courseid+,+teacherid+,+!+);dataBase.executeUpdate(Statement) dataBase.getStatement(), sqlStudent);dataBase.close();return true;老師模塊:TeacherDao與studentDao是類似的;下面展示t

24、eacher的servletdopost方法;public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException request.setCharacterEncoding(gbk);String type = request.getParameter(submit); if(type.equals(check) String number1 = request.getParameter(number); request.setAttrib

25、ute(number1, number1); RequestDispatcher d=request.getRequestDispatcher(/teacher/teaching.jsp); d.forward(request, response);else if(type.equals(reply)HttpSession s=request.getSession();String teachernum=(String) s.getAttribute(id);TeacherDao t=new TeacherDao();tryTeacher tea=t.getTeacher(teachernum

26、);try int limit = Integer.parseInt(request.getParameter(limit); String coursename = request.getParameter(coursename); String coursenum = request.getParameter(coursenum); try CourseDao c1=new CourseDao(); System.out.print(teachernum); Course course=c1.getCourse(coursenum); if(course=null) Course c =

27、new Course(coursenum,coursename,tea.getName(),limit); CourseDao cdao=new CourseDao(); cdao.addCourse(teachernum, c); doError(request,response,已成功完成); else doError(request,response,已有該門課程); catch(Exception e)e.printStackTrace();catch(Exception e)doError(request,response,非法字符輸入);catch(Exception e)doEr

28、ror(request,response,后臺出錯);else if(type.equals(verify)String studentnum = request.getParameter(studentnum);String coursenum=request.getParameter(classNo);String grade = request.getParameter(grade); TeacherDao teach = new TeacherDao(); try teach.grade(coursenum, studentnum, grade); catch (Exception e

29、) / TODO Auto-generated catch blocke.printStackTrace(); System.out.println(of);public void doError(HttpServletRequest request, HttpServletResponse response,String msg) throws IOExceptionresponse.setContentType(text/html);response.setCharacterEncoding(UTF-8);PrintWriter out=response.getWriter();out.p

30、rint( +信息);out.print(msg);out.print(返回);out.print();out.close();return;課程模塊:管理員模塊:public class ManageServlet extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException String action=request.getParameter(action);if(action.equals

31、(deleteCourse)this.doDeleteCourse(request, response);if(action.equals(addStudent)this.doAddStudent(request, response);if(action.equals(stuinfo)RequestDispatcher rs=request.getRequestDispatcher(/admin/studentInfo.jsp);rs.forward(request,response);if(action.equals(teacherInfo)RequestDispatcher rs=requ

32、est.getRequestDispatcher(/admin/teacherInfo.jsp);rs.forward(request,response);if(action.equals(deleteTeacher)doDeleteTeacher(request,response);if(action.equals(addTeacher)doAddTeacher(request,response);if(action.equals(logout)HttpSession session=request.getSession();session.invalidate();response.sen

33、dRedirect(http:/localhost:8080/Exercise/login.jsp) public void doAddTeacher(HttpServletRequest request,HttpServletResponse response)String id=request.getParameter(teacherID);String name=request.getParameter(teacherName);String password=request.getParameter(password);tryint tid=Integer.parseInt(id);T

34、eacherDao tdao=new TeacherDao();if(tdao.getTeacher(id)!=null)doError(request,response,已存在該老師,addTeacher.jsp);elseTeacher a=new Teacher(id,name,password);trytdao.addTeacher(a);doError(request,response,成功添加,addTeacher.jsp);catch(Exception e)/doError(request,response,添加失敗);e.printStackTrace();catch(Exc

35、eption e)doError(request,response,非法證件號碼!,addTeacher.jsp);public void doDeleteTeacher(HttpServletRequest request,HttpServletResponse response)String id=request.getParameter(id);TeacherDao tdao=new TeacherDao();tryTeacher t=tdao.getTeacher(id);trytdao.deleteTeacher(t);doError(request,response,成功刪除,de

36、leteTeacher.jsp);catch(Exception e)doError(request,response,操作出錯 ,請重新再來,deleteTeacher.jsp);catch(Exception e)doError(request,response,出錯了,deleteTeacher.jsp);public void doAddStudent(HttpServletRequest request,HttpServletResponse response)String id=request.getParameter(studentID);String studentName=r

37、equest.getParameter(studentName);String password=request.getParameter(password);tryint stuid=Integer.parseInt(id);if(stuid)doError(request,response,非法證件號碼,addStudent.jsp);elseStudentDao studao=new StudentDao();if(studao.getStudent(id)!=null)doError(request,response,已存在該學生,addStudent.jsp);elseStudent

38、 s=new Student(id,studentName,password);trystudao.addStudent(s);doError(request,response,成功添加,addStudent.jsp);catch(Exception e)doError(request,response,添加失敗,addStudent.jsp);catch(Exception e)doError(request,response,非法證件號碼!,addStudent.jsp);public void doDeleteCourse(HttpServletRequest request,HttpS

39、ervletResponse response)String courseid=request.getParameter(id);CourseDao coursedao=new CourseDao();/*if(coursedao.deleteCourse(courseid)=true)doError(request,response,刪除成功);elsedoError(request,response,刪除操作失敗);*/trycoursedao.deleteCourse(courseid);doError(request,response,成功刪除,deleteCourse.jsp);ca

40、tch(Exception e)/doError(request,response,出錯);doError(request,response,后臺出錯,deleteCourse.jsp);/*public void doAddCourse(HttpServletRequest request, HttpServletResponse response) String classid=request.getParameter(id);tryint id=Integer.parseInt(classid);String className=request.getParameter(classNam

41、e);String teacherName=request.getParameter(teacherName);tryint counts=Integer.parseInt(request.getParameter(counts);CourseDao coursedao=new CourseDao();if(coursedao.getCourse(classid)=null)Course course=new Course(classid,className,teacherName,counts);trycoursedao.addCourse(course);catch(Exception e)doError(request,response,添加失敗);elsedoError(request,response,已有該門課程);if(counts=0) doError(request,response,選課人數(shù)不能為零或負

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論