




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 . . . 实践考核类课程(二)实验报告姓 名学 号20090725班 级软一0901指 导 教 师益先实验名称学生选课系统开 设 学 期2010 2011第二学期评 定 成 绩评定人签字评 定 日 期东北大学软件学院2011年4月27 / 281. 系统分析与设计本次实验是是设计一个基于web平台的学生选课系统,主要用于实现学生选课,课程管理,与课程维护等等模块;需要使用的技术是Servlet、JSP、JDBC、DAO等关键技术。在本系统中,有三类用户:系统管理员,教师和学生。三种不同的用户所具有的操作权限以与操作容均不一样。本选课系统给予教师很大的自主权,系统管理员只负责向系统中添加学生
2、和教师的个人信息。教师、学生可以录自行进行选课,排课。系统管理员设置一个选课围,教师可以开设课程;学生可以登陆选择课程。教师用户登陆后可以开设课程,为自己的课程编辑课程容和课程信息。每门课程可以是必修或则选修,教师为每门课程设置一个学分,并可以在课程结束后给予成绩和分数,如果学生与格,学生将获得该课程的学分。对于学生用户,每个学生除了必须选择必修课程外,学生可以对自己选课信息进行选择。系统可以根据学生的选课信息,生成一份学生自己的课表。课程结束后学生可登录查询成绩。1.2 系统功能流程用户登录身份验证模块验证用户名和密码,并根据不同的用户类型,选择;用户登录身份验证模块登陆注册模块录入信息模块
3、开设课程模块查询个人信息模块评分模块查看课程模块选课模块数据库模块 数据库访问模块(1)登录与注销 每个用户都可以用自己的登录系统。用户操作完成后推出系统,注销后可以重新登录系统。 (2)修改密码 每个用户第一次登录都用默认密码。(1) 系统管理员管理员号管理员XX密码用户类型设置选课:系统管理员通过此项功能设置选课,只有在选课围,学生才可以选择课程,不得修改。录入学生与教师个人信息:通过此项功能可以实现对教师和学生的个人信息添加删除。(2) 教师用户教师号教师XX密码用户类型性别职称显示和修改个人信息:教师用户登录系统后,可以查看和修改教师的个人信息,如,E-mail地址等。开设课程:教师用
4、户登录系统后,可以开设课程,可以设置该课程可以设置该课程的最大人数。编辑课程上课时间:教师在开设了课程后,可以灵活地设置上课时间和地点。给学生分数:课程结束后,教师用户登录系统,可以为学过课程的学生给予相应的成绩,若与格,给予学生学分。(3) 学生用户学 号系 号班 级成 绩政治面貌联系方式就读中学学生性别籍贯姓名XX号交费情况出生日期入学时间简历民 族专业号用户类型显示和修改个人信息:学生登录系统后,可以查看和修改学生的个人信息,如,性别,等。查看必修课程:学生登录后,可以查看所有的必修课程。查看该课程的信息,上课时间地点,开课教师信息等。选择选修课程:学生登录系统后,在所有选修课程中可以选
5、择至少两门选修课程。同时可以查看相关信息。查看最终选课信息:学生登录系统后,可列出已选择的课程,若选课信息未被锁定,则可以退选,若所选课程少于两门,系统会提示选择的课程少于两门。查看学分和成绩课程结束后,学生登录系统可查看自己学习课程的成绩。1.3 数据库设计student,Teacher,Course,List,Admin,每个表与逻辑设计中一种的关系模式相对应。下面是每个数据表中的属性,包括属性列的名称、数据类型、长度、是否可以为空和备注说明等容。(1) Student表。Student表用来存储学生的个人信息,使用学号作为主键,如表3-2:表3-2 Student表(2) Teacher
6、表。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表用来存放系统管理员信息,如表3-9:表
7、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 关键代码分析下面将每个模块中好的部分以与重要的部分进行展示连接数据库模块:DataBaseFactor
10、y 类用于创建数据库连接,是一个连接数据库的工具类!package .jinkun.data;import java.sql.*;publicclass DataBaseFactory private Connection conn=null; publicvoidDataBaseFactory() throws Exception/得到一个statementpublic Statement getStatement() throws Exception DriverManager.registerDriver(new org.gjt.mm.mysql.Driver(); Class.forN
11、ame("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);returnconn.createStatement(); public ResultSet executeQuery(Statement stmt
12、,String query) throws Exception ResultSet rs=stmt.executeQuery(query); return rs; publicboolean execute(Statement stmt,String query) throws Exceptionboolean rs=stmt.execute(query); return rs; publicvoid executeUpdate(Statement stmt,String query) throws SQLException stmt.executeUpdate(query); publicv
13、oid close() 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 class
14、id) throws 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 *
15、 from student where studentID='"+stuno+"'"ResultSet 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 addStuden
16、t(Student student) throws SQLException, ExceptionString sqlStudent="insert into student values('"+student.getID()+"','"+student.getName()+"'," +"'"+student.getPassword()+"')"dataBase.executeUpdate(Statement) dataBase.getStatem
17、ent(), sqlStudent);dataBase.close();public List<Student> getAllStudents() throws ExceptionList<Student> students=new ArrayList();String sqlStudent="select * from student"ResultSet rs=(ResultSet) dataBase.executeQuery(Statement) dataBase.getStatement(), sqlStudent);while(rs.next
18、()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 students;public Course getCourse(String courseid) throws ExceptionCourse c=null;String sqlStudent="
19、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.getString(3);int counts=Integer.parseInt(rs.getString(5);c=new Course(
20、courseid,className,teacherName,counts);rs.close();dataBase.close();return c;/得到课程列表,用于显示某个学生注册的全部的课程public List<Course> getCourses(Student student) throws ExceptionList<Course> signUpInfo=new ArrayList<Course>();String sqlStudent="select * from list where Sno='"+stude
21、nt.getID()+"'"ResultSet rs=(ResultSet) dataBase.executeQuery(Statement) dataBase.getStatement(), sqlStudent);while(rs.next()Stringo=rs.getString(3);signUpInfo.add(this.getCourse(cno);rs.close();dataBase.close();return signUpInfo;/判断学生是否已经注册public boolean isRegistered(String studentid,S
22、tring courseid) 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
23、;rs.close();dataBase.close();return false;/用于注册一个学生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.ne
24、xt()i=Integer.parseInt(rs.getString(2);i+;sql="update counts set idcounts='"+i+"' where id='1'"dataBase.executeUpdate(dataBase.getStatement(),sql);String sqlStudent="insert into list values('"+i+"','"+studentid+"','&quo
25、t;+courseid+"','"+teacherid+"','"+"!"+"')"dataBase.executeUpdate(Statement) dataBase.getStatement(), sqlStudent);dataBase.close();return true;老师模块:TeacherDao与studentDao是类似的;下面展示teacher的servletdopost方法;public void doPost( ServletRequest requ
26、est, ServletResponse response)throws ServletException, IOException request.setCharacterEncoding("gbk");String type = request.getParameter("submit"); if(type.equals("check") String number1 = request.getParameter("number"); request.setAttribute("number1&quo
27、t;, number1); RequestDispatcher d=request.getRequestDispatcher("/teacher/teaching.jsp"); d.forward(request, response);else if(type.equals("reply") Session s=request.getSession();String teachernum=(String) s.getAttribute("id");TeacherDao t=new TeacherDao();tryTeacher tea
28、=t.getTeacher(teachernum);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
29、 course=c1.getCourse(coursenum); if(course=null) Course c = 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.printSt
30、ackTrace();catch(Exception e)doError(request,response,"非法字符输入");catch(Exception e)doError(request,response,"后台出错");else if(type.equals("verify")String studentnum = request.getParameter("studentnum");String coursenum=request.getParameter("classNo");St
31、ring grade = request.getParameter("grade"); TeacherDao teach = new TeacherDao(); try teach.grade(coursenum, studentnum, grade); catch (Exception e) / TODO Auto-generated catch blocke.printStackTrace(); System.out.println("of");public void doError( ServletRequest request, ServletR
32、esponse response,String msg) throws IOExceptionresponse.setContentType("text/html");response.setCharacterEncoding("UTF-8");PrintWriter out=response.getWriter();out.print("<html><head><meta -equiv='Content-Type' content='text/html' charset='
33、utf-8'></meta>" +"<title>信息</title></head><body>");out.print(msg);out.print("<a href='localhost:8080/Exercise/teacher/teacher.jsp' method='get'>返回</a>");out.print("</body></html>");out.clo
34、se();return;课程模块:管理员模块:public class ManageServlet extends Servlet public void doGet( ServletRequest request, ServletResponse response)throws ServletException, IOException String action=request.getParameter("action");if(action.equals("deleteCourse")this.doDeleteCourse(request, res
35、ponse);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=re
36、quest.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") Session session=request
37、.getSession();session.invalidate();response.sendRedirect("localhost:8080/Exercise/login.jsp") public void doAddTeacher( ServletRequest request, ServletResponse response)String id=request.getParameter("teacherID");String name=request.getParameter("teacherName");String pa
38、ssword=request.getParameter("password");tryint tid=Integer.parseInt(id);TeacherDao 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,re
39、sponse,"成功添加","addTeacher.jsp");catch(Exception e)/doError(request,response,"添加失败");e.printStackTrace();catch(Exception e)doError(request,response,"非法证件!","addTeacher.jsp");public void doDeleteTeacher( ServletRequest request, ServletResponse response
40、)String id=request.getParameter("id");TeacherDao tdao=new TeacherDao();tryTeacher t=tdao.getTeacher(id);trytdao.deleteTeacher(t);doError(request,response,"成功删除","deleteTeacher.jsp");catch(Exception e)doError(request,response,"操作出错 ,请重新再来","deleteTeacher.j
41、sp");catch(Exception e)doError(request,response,"出错了","deleteTeacher.jsp");public void doAddStudent( ServletRequest request, ServletResponse response)String id=request.getParameter("studentID");String studentName=request.getParameter("studentName");String
42、 password=request.getParameter("password");tryint stuid=Integer.parseInt(id);if(stuid<2000|stuid>20110000)doError(request,response,"非法证件","addStudent.jsp");elseStudentDao studao=new StudentDao();if(studao.getStudent(id)!=null)doError(request,response,"已存在该学生&
43、quot;,"addStudent.jsp");elseStudent 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
44、,response,"非法证件!","addStudent.jsp");public void doDeleteCourse( ServletRequest request, ServletResponse response)String courseid=request.getParameter("id");CourseDao coursedao=new CourseDao();/*if(coursedao.deleteCourse(courseid)=true)doError(request,response,"删除成功
45、");elsedoError(request,response,"删除操作失败");*/trycoursedao.deleteCourse(courseid);doError(request,response,"成功删除","deleteCourse.jsp");catch(Exception e)/doError(request,response,"出错");doError(request,response,"后台出错","deleteCourse.jsp");/
46、*public void doAddCourse( ServletRequest request, ServletResponse response) String classid=request.getParameter("id");tryint id=Integer.parseInt(classid);String className=request.getParameter("className");String teacherName=request.getParameter("teacherName");tryint cou
47、nts=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,"选课人数不能为零或负数");catch(Exception e)doError(request,response,"可选人数必须为整数数字");catch(Exception e)doError(request,response,"课程ID必须为整数");*/public void doError( ServletReq
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 健康知识普及培训会议课件
- 健康扶贫知识培训方案课件
- 侵蚀性葡萄胎课件
- 广西钦州市第十三中学2025-2026学年高一上学期第一周考试历史试卷(含答案)
- 2025年江西省宜春市靖安县靖安中学物理高三上期末联考模拟试题
- 项目办廉洁管理办法
- 解放军枪械库管理办法
- 中山戏剧演出管理办法
- 官方版论文版权转让合同5篇
- 企业消防安全培训意义课件
- 1:500地形图测绘技术方案
- 磷酸哌嗪宝塔糖的毒理学研究
- 国际商务课件全套教程
- 22.3 实际问题与二次函数 课件 2024-2025学年人教版数学九年级上册
- 贵州省遵义市播州区2024届六年级下学期小升初招生数学试卷含解析
- 【课件】2025届高三生物一轮复习备考策略研讨
- 灵芝培训课件
- 新疆城市绿地养护管理标准
- 环形开挖预留核心土法
- 店长管理培训:店务管理
- 医院成立房颤中心文件
评论
0/150
提交评论