




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、實踐考核類課程(二)實驗報告 姓 名張楊學 號班 級軟一0901指 導 教 師劉益先實驗名稱學生選課系統開 設 學 期2010 2011第二學期評 定 成 績評定人簽字評 定 日 期東北大學軟件學院2011年4月1. 系統分析與設計 本次實驗是是設計一個基于web平臺的學生選課系統,主要用于實現學生選課,課程管理,與課程維護等等模塊;需要使用的技術是Servlet、JSP、JDBC、DAO等關鍵技術。在本系統中,有三類用戶:系統管理員,教師和學生。三種不同的用戶所具有的操作權限以及操作內容均不一樣。本選課系統給予教師很大的自主權,系統管理員只負責向系統中添加學生和教師的個人信息。教師、學生可以
2、錄網站自行進行選課,排課。系統管理員設置一個選課范圍,教師可以開設課程;學生可以登陸網站選擇課程。教師用戶登陸網站后可以開設課程,為自己的課程編輯課程內容和課程信息。每門課程可以是必修或則選修,教師為每門課程設置一個學分,并可以在課程結束后給予成績和分數,如果學生及格,學生將獲得該課程的學分。對于學生用戶,每個學生除了必須選擇必修課程外,學生可以對自己選課信息進行選擇。系統可以根據學生的選課信息,生成一份學生自己的課表。課程結束后學生可登錄網站查詢成績。1.2 系統功能流程 用戶登錄身份驗證模塊驗證用戶名和密碼,并根據不同的用戶類型,選擇; 用戶登錄身份驗證模塊登陸注冊模塊錄入信息模塊開設課程
3、模塊查詢個人信息模塊評分模塊查看課程模塊選課模塊數據庫模塊 數據庫訪問模塊(1)登錄與注銷 每個用戶都可以用自己的帳號登錄系統。用戶操作完成后推出系統,注銷后可以重新登錄系統。 (2)修改密碼 每個用戶第一次登錄都用默認密碼。(1) 系統管理員管理員號管理員姓名密碼用戶類型設置選課:系統管理員通過此項功能設置選課,只有在選課范圍內,學生才可以選擇課程,不得修改。錄入學生與教師個人信息:通過此項功能可以實現對教師和學生的個人信息添加刪除。(2) 教師用戶教師號教師姓名密碼用戶類型性別職稱顯示和修改個人信息:教師用戶登錄系統后,可以查看和修改教師的個人信息,如姓名,電話,E-mail地址等。開設課
4、程:教師用戶登錄系統后,可以開設課程,可以設置該課程可以設置該課程的最大人數。編輯課程上課時間:教師在開設了課程后,可以靈活地設置上課時間和地點。給學生分數:課程結束后,教師用戶登錄系統,可以為學過課程的學生給予相應的成績,若及格,給予學生學分。(3) 學生用戶學 號系 號班 級成 績政治面貌聯系方式就讀中學學生性別籍貫姓名身份證號交費情況出生日期入學時間簡歷民 族專業號用戶類型顯示和修改個人信息:學生登錄系統后,可以查看和修改學生的個人信息,如姓名,性別,電話等。查看必修課程:學生登錄后,可以查看所有的必修課程。查看該課程的信息,上課時間地點,開課教師信息等。選擇選修課程:學生登錄系統后,在
5、所有選修課程中可以選擇至少兩門選修課程。同時可以查看相關信息。查看最終選課信息:學生登錄系統后,可列出已選擇的課程,若選課信息未被鎖定,則可以退選,若所選課程少于兩門,系統會提示選擇的課程少于兩門。查看學分和成績課程結束后,學生登錄系統可查看自己學習課程的成績。1.3 數據庫設計student,Teacher,Course,List,Admin,每個表與邏輯設計中一種的關系模式相對應。下面是每個數據表中的屬性,包括屬性列的名稱、數據類型、長度、是否可以為空和備注說明等內容。(1) Student表。Student表用來存儲學生的個人信息,使用學號作為主鍵,如表3-2:表3-2 Student表
6、(2) Teacher表。Teacher表用來存儲教師的個人信息,用學校分配給教師的教師編號作為主鍵,這樣可以避免重復,如圖3-3:表3-3 Teacher表(3) Course表。Course表用來存儲課程信息,Course表以課程編號為主鍵,設置課程編號自動增加1(通過建表的時候對屬性列設置“標識”,并設置“標識遞增量”為1)。表中開課教師Id為外鍵,所有“TId”的值必須是Teacher表中的“TId”值。如表3-4:表3-4 Course表(4) List表。List表用來存放課程的上課時間和上課信息,包括課程編號。表3-6 List表(5) Admin表。Admin表用來存放系統管理
7、員信息,如表3-9:表3-9 Admin表2系統實現與測試1系統首頁,點擊進入選課系統登錄頁面 點擊進入選課系統登錄頁面2登陸頁面系統的登陸頁面index.jsp在頁面左邊顯示出三種身份登錄的鏈接。便于不同用戶清晰的看清登錄的位置。不同身份的用戶登錄提交的用戶名和密碼提交到不同身份的數據庫認證頁面中。如學生用戶登錄提交到login.jsp。當驗證通過時,跳到學生用戶的頁面。并把信息保存進session,以供其他頁面判斷用戶是否已經登錄。學生用戶通過歡迎界面進入登錄界面,輸入用戶名以及密碼,然后選擇權限(學生/老師/管理員)進入自己的頁面。該頁面會對用戶是否輸入用戶名或密碼,輸入是否正確進行檢驗
8、,如果輸入正確,則直接進入權限所對應的歡迎界面。否則,則提示用戶名或密碼錯誤。輸入學生學號,進入學生歡迎界面。點擊 查看已選課程,學生可以查看自己的已選課程。點擊注冊課程選項,進入頁面后選擇相應課程后課程列表結果如下:選擇注銷 計算機編程藝術 課程,同上。結果如下管理員選擇管理員進入歡迎界面。選擇 刪除課程 可以進行對相應課程的刪除。選擇 管理課程,可以實現對于課程的管理。選擇 增加學生 可以實現對學生的添加。選擇 添加/刪除老師,可以實現對老師的有效管理。選擇 查看所有學生/老師 可以查看到所有學生/老師的信息。教師以老師身份登錄,界面如下。選擇查看已帶課程,可以查看自己的所有課程。選擇給出
9、成績,可以成功的為學生給出成績。2.1系統采用的關鍵技術在頁面中用到了頁面語言HTML,JavaScript以及JSP;標記語言使用的是:XML;后臺中使用了Servlet服務器,數據庫操作使用的是JDBC,DAO;全局使用了MVC設計模式等,是在JDK+ MyEclipse+Tomcat+MySQL的開發環境中完成了這個學生選課系統。2.2 關鍵程序流程下面用視圖的方式展示學生選課系統的流程!基本表視圖教師課表班級課表學生學籍表學生選課表課程表選修課開課表教師表學院開課表學生表系部表NNNNN111NN11NN2.3 關鍵代碼分析下面將每個模塊中好的部分以及重要的部分進行展示連接數據庫模塊:
10、DataBaseFactory 類用于創建數據庫連接,是一個連接數據庫的工具類!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在這個類中具體定義了學生的動能以及權限(包括:增加/刪除學生,增加/刪除某一門課程,以及顯示全部的課程列表等等)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;/判斷學生是否已經注冊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,選課人數不能為零或負
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 玻璃制品市場推廣策略考核試卷
- 紡織面料色彩搭配技巧考核試卷
- 液化石油氣行業安全生產法律法規應用考核試卷
- 碳排放減少與碳配額管理考核試卷
- 游樂設施項目管理中的團隊溝通考核試卷
- 石材表面處理技術更新考核試卷
- 紡織品的可持續材料開發考核試卷
- 米、面制品消費行為分析考核試卷
- 電動機在不同負載下的性能評估考核試卷
- 景德鎮陶瓷職業技術學院《中國古代文學史四明清文學》2023-2024學年第二學期期末試卷
- 云計算數據備份與恢復預案
- 人教版七年級生物上冊第一單元第一章第二節生物的特征課件
- 住房城鄉建設科學技術計劃項目科研開發類申報書
- (完整版)英語四級詞匯表
- 技工學校國家助學金申請表
- GB/T 2424.7-2024環境試驗第3部分:支持文件及導則試驗A(低溫)和B(高溫)的溫度箱測量(帶負載)
- 重型燃氣輪機用大型鑄鍛件 第3部分:鑄鋼件 編制說明
- 智慧農業的支撐技術簡介
- 政務服務中心物業服務投標方案【新版】(技術方案)
- 重大事故隱患判定標準培訓記錄、培訓效果評估
- 品管圈活動在提高腦卒中患者日常基本生活自理技能訓練執行率的應用效果
評論
0/150
提交評論