学生选课系统课设报告_第1页
学生选课系统课设报告_第2页
学生选课系统课设报告_第3页
学生选课系统课设报告_第4页
学生选课系统课设报告_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

南昌航空大学科技学院课程设计报告题 目: 学生成绩管理系统 专 业: 信息管理与信息系统 学 号: 学生姓名: 陈正文 电子邮箱: 联系电话: 成 绩内容 (30%)技术 (30%)创新 (20%)文档 (20%)总成绩南昌航空大学科技学院经济与管理系2013年 1 月 15日1目录第一章:绪论2第二章:需求分析4第三章:总体设计8第四章:详细设计14第五章:系统实现16第六章:系统测试36第七章:设计总结37一、绪论1、引言1.1编写目的:网上选课系统针对在校学生和教师使用。从学生的角度来说,由于学校教学制度的改革,现在大部分高等院校开始实行的是学生的自主选课模式。传统的教学模式(学生按照学校安排好的课程上课)已经不能适应新型的教学模式,如果仍然通过纸上的方式选课,一方面浪费了大量的人力、物力资源,另一方面浪费时间以及会在人为的统计汇总过程中出现可避免的差错等情况。随着高校人数的增多,上述弊端会越来越多的暴露出来。如果利用网络进行选课,学生只要在计算机前输入自己的个人选课信息即可完成教务部门原来几倍的作业量。从教师的角度来说,教师提出代课申请完成课程发布的工作更加容易,得到教学的信息更加快捷,因此通过网上选课系统可以大幅度的减少教师的工作量,方便了教学工作。1.2项目背景:我国高校都实行了学分制,它的核心是允许学生自由选课,即把学习的自主权交给学生。在这里,学生选课时的制约因素比较复杂,工作量也很大,而且往往需要在较短的时间内完成。运用计算机辅助选课,即能实时地对大量选课数据进行检验和统计,十分方便地输出选课结果,同时也避免了人工处理时容易产生的错误。在高等学校的教务管理工作中,课程表的编排是一项十分复杂、棘手的工作。在排课过程中,除了满足大量的制约条件以外,还必须解决许多冲突与矛盾,例如:两位教师不能同一时间在同一班级上课、一位教师不能在同一时间上两门课等等。利用计算机辅助进行课表编排工作,既提高了排课工作的科学性,又可大大减轻管理人员的工作强度,提高工作效率,从而使学校教务管理现代化迈上了一个新台阶。2、任务描述2.1目标:学生正确登录到系统中,查询可选课程,选择自己喜欢的课程,并可以删除已选课程,查看课程表。2.2运行环境:本系统用java开发,无论事windows系统还是linux,只要具备tomcat和mysql环境都可以正确运行。3、数据描述3.1输入收据:用户名和密码,查询条件等3.2输出数据;可选课程列表,已选课程列表,课程表。4、功能要求: 1.已注册用户的正确登录。 2.登录用户查询可选课程。支持模糊查询。 3.用户选课,支持批量处理。 4.已选课程的查询。删除,支持批量处理。 5.查询课表,显示学分。二、需求分析1、需求调查11组织机构调查教务处负责后台管理本系统,网络中心负责日常维护,教务处组织教师和学生使用本系统进行网上录入课程和网上选课。12 业务需求调查 开 始选课准备进入选课主页登录:录入学号和密码正确进入选课主界面修改密码进入修改密码菜单返回登录页面不正确进入选课(筛选制)公共选修课网上选课(单击需选模块)一般选修课网上选课(单击需选菜单)单击“课程名称”、“教师姓名”、“详细信息”显示具体的相关信息单击需选课程前面的小方框使之打上小黑钩单击选定选定课程显示在网页下面单击退选确定选课,退出系统退选核对本人基本信息13对新系统的要求调查2、功能需求21功能划分 1.已注册用户的正确登录。 2.登录用户查询可选课程。支持模糊查询。 3.用户选课,支持批量处理。 4.已选课程的查询。删除,支持批量处理。 5.查询课表,显示学分。22功能描述身份验证:通过登录才可进入选课系统,登录信息提交后检验登录者的身份是否合法,合法,则转入对应的操作界面。在本系统中,只有三种身份:学生、老师、管理员。选课:用于学生的网上选课,通过选择被选学期,查看被选专业的课程,完成该学期的选课任务。查看课表:学生选完课程之后可以实时查看学生课表,帮助学生确定上课时间地点.3、数据描述31数据描述32数据库描述 教师号姓名性别系别教师课程课程号课程名学分状态(教师申请用)学时已选人数限选人数星期节数系别系别系别号系别名专业别专业号专业名学生学号姓名年龄姓名年级班级专业课程号成绩学生号选课表33数据词典 1: 性别:男,女 2:课程属性:必修,选修,任选。4、性能需求41 数据精确度 :暂无2时间特性:暂无43适应性:暂无5、运行需求 51 用户界面:采用树状导航菜单,简单明了。52 硬件接口: 本系统要求每个计算机都有网卡。53 软件接口:暂无54基本要求 1)体系结构:Broswer/Server2)操作系统: windows系列或Linux系列3)数据库管理系统:mysql4)开发工具:eclipse软件需求:操作系统WINDOWS 2000 Advance Server以上;数据库服务器端软件mysql, eclipse。硬件需求:10M以上的LAN接入网络带宽,P4 3.0G Xeon CPU /1G内存/360G(10K) SCSI硬盘的服务器,P3以上微机(带网卡)的客户机,P4 3.0G Xeon CPU /1G内存/36G(10K) RAID硬盘的数据库服务器6、其他需求 具有高可使用性、安全保密要高、可维护性要强、可移植性要求强。三、总体设计1、总体结构和模块外部设计 11功能结构登陆系统管理员学生教师信息管理学生信息管理可选课程查询登陆密码设置成绩查询成绩录入成绩修改 已选课程查询课程表查询学生选课12模块设计登陆模块: l 登陆模块:用户在提供正确的验证信息之后,进一步使用本系统。管理员模块: l 教师信息管理模块:增删查改教师的基本信息。l 学生信息管理模块:增删查改学生的基本信息。l 登陆密码设置模块:用于修改登陆密码。l 成绩查询模块:查询所有成绩的基本信息。l 成绩录入模块:录入所教学生的成绩信息。l 成绩修改模块:修改所教学生的成绩信息。学生模块: l 查询可选课程l 选择喜欢的课程l 查询所选课程l 删除所选课程l 查看本学期课表13总体结构设计当学生成功登录后,将学生的姓名、学号、密码、学期作为共用信息保存下来,作为密码修改模块、查询选课信息模块、修改选课信息模块使用时的参数。查询选课信息模块中的课程编码、学期、教师姓名信息作为传递参数用于查询教师信息模块、查询选课名单模块、查询课程信息模块、修改选课信息。同样,教师登录模块中,成功登录后将教师名、教师的身份证号、教师姓名作为参数保存下来,传递到密码修改模块、查询已发布课程信息模块、删除课程发布信息模块、修改课程发布信息模块。2、数据结构设计 关系模式:系别:(系别号,系别名)专业:(专业号,专业名)学生:(学号,姓名,年龄,性别,年级,班级,系别名,专业名)教师:(教师号,姓名,性别,系别号)课程:(课程号,课程名,学分,学时,状态,已选人数,限选人数,星期,节数)选课结果:(学号,课程号,成绩)授课:(课程号,教师号)管理员:(ID,用户名,密码)3、数据库设计31逻辑设计系别表dic_xy字段数据类型长度允许空值备注id int 11否主键namevarchar50否系别名专业表Profess字段数据类型长度允许空值备注ProIDint20否主键 专业号ProNamevarchar50否专业名称学生表Student字段数据类型长度允许空值备注Snochar20否学号 主键Snamevarchar50否学生姓名Sagechar20否学生年龄SsexChar20否性别Sgradevarchar20否年级SclassVarchar20否班级DepnOchar20否学生系别ProIDchar20否学生专业教师表Teacher字段数据类型长度允许空值备注Tnochar20否教师号 主键Tnamevarchar50否教师姓名TsexChar20否教师性别Depno char20否教师所在系课程表Course 字段数据类型长度允许空值备注Cnochar20否课程号Cnamevarchar50否课程名Creditfloat否学分Ctimeint否学时Stateint否开课状态Cstunochar20否已选人数Ccstuchar20否限选人数选课结果表stu_course字段数据类型长度允许空值备注Snochar20否学号Cnochar20否课程号Scorechar20否分数授课表class字段数据类型长度允许空值备注Cnochar20否课程号Tnochar20否教师号管理员表:admin字段数据类型长度允许空值备注IDInt否主键 编号NameChar20否用户名Passwordchar20否密码32物理设计 数据库服务器和web服务器部署在同一台电脑上,以减少它们之间的通信成本,并提高速度。4、外部接口设计41用户界面:页面分三部分,上面部分是系统名称,下面部分又分为左右两部分,左面是导航树,右面是内容部分。 42软件接口:暂无43硬件接口:暂无5、出错处理设计 51 出错输出信息 52出错处理对策:1.数据库处理事务失败自动回滚技术,保证数据库表的数据一致性和完整性。2.重要数据的校验检查,例如已经选过的课程,不允许再选。3.提供友好的用户界面和帮助信息及配合严格的检查 。6、维护设计 说明为方便维护工作的设施,如维护模块等。可包括数据库的导如和导出,参数的设定等四、详细设计1、代码设计:学号采用12位数字,前四位代表年级,五六位代表学院,七八位代表专业,九十位代表班级,最后两位代表在班级内排名。2、程序设计:21、登录模块:在登录页面对应的地方输入用户名、密码、学号/身份证号,确认后登录。在提交后的asp文件中,首先通过学号/身份证号对数据库中的student/teacher表进行检索,若检索到的记录集为空,则说明学号/身份证号错误,从而转到相应的出错处理程序,若记录集不为空,再进行姓名判断,若姓名与表中的姓名不相等,进行出错处理,若相等,进而检查密码是否相等,不相等,作出错处理,相等则转入学生/老师登录成功的操作页面,并将姓名,密码,学号/身份证号以session对象保存起来。 选课模块:从数据库中将课程表中的课程信息查询出来后显示在页面中,学生通过checkbox选择自己喜欢的课程,点击确认后,从session里取出学生登录信息,将学生的学号和所选则的课程的课程号,作为一条记录保存到数据库score表中。这之前要遍历学生已选的课程的上课时间和地点是否和他即将选择的课程相冲突,如果冲突则不会保存,并给出提示,否则顺利保存。五、系统实现package xsxk.controller;import java.io.IOException;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import java.util.*;import xsxk.exception.SysException;import xsxk.model.Course;import xsxk.model.PageModel;import xsxk.model.Student;import xsxk.service.Service;import xsxk.service.impl.ServiceImpl;SuppressWarnings(serial)public class Controller extends HttpServlet private Service service=null;Overridepublic void init() throws ServletException super.init();ServletContext context=this.getServletContext();service=(Service)context.getAttribute(service);public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException doPost(request,response);public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException String action = request.getParameter(action); if(listCourse.equals(action)doListCourse(request,response); else if(userLogin.equals(action) doUserLogin(request,response); else if(logout.equals(action) doLogout(request,response); else if(chooseCourse.equals(action)doChooseCourse(request,response); else if(listSelectedCourse.equals(action) doListselectedCourse(request,response); else if(querySelectedCourse.equals(action) doQuerySelectedCourse(request,response); else if(deleteSelectedCourse.equals(action) doDeleteSelectedCourse(request,response); private void doDeleteSelectedCourse(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException String cid=request.getParameterValues(cid);Student s=(Student)request.getSession().getAttribute(username);String sid=s.getSid();tryservice.deleteSelectedCourse(sid, cid);catch(SysException e)request.setAttribute(exception, e.getMessage();e.printStackTrace();finallyrequest.getRequestDispatcher(Controller?action=querySelectedCourse).forward(request, response);private void doQuerySelectedCourse(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException List list=null;HttpSession session=request.getSession();Student s=(Student)session.getAttribute(username);String uid=s.getSid();trylist=service.listSelectedCourse(uid, 100, 0);catch(SysException e)e.printStackTrace();request.setAttribute(exception, e.getMessage();finallyrequest.setAttribute(courses, list);request.getRequestDispatcher(/fore/selectedClass.jsp).forward(request, response);private void doListselectedCourse(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException List list=null;HttpSession session=request.getSession();Student s=(Student)session.getAttribute(username);String uid=s.getSid();trylist=service.listSelectedCourse(uid, 100, 0);catch(SysException e)e.printStackTrace();request.setAttribute(exception, e.getMessage();finallyrequest.setAttribute(courses, list);request.getRequestDispatcher(/fore/classTable.jsp).forward(request, response);private void doChooseCourse(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOExceptionString cid=request.getParameterValues(cid);Student s=(Student)request.getSession().getAttribute(username);String sid=s.getSid();try service.chooseCourse(sid, cid);request.setAttribute(exception,选课成功!); catch (SysException e) request.setAttribute(exception,e.getMessage();finallyrequest.getRequestDispatcher(Controller?action=listCourse).forward(request, response);private void doLogout(HttpServletRequest request,HttpServletResponse response) throws IOException HttpSession session=request.getSession();session.invalidate();response.sendRedirect(/xsxk/login.jsp);private void doUserLogin(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException String userName=request.getParameter(username);String password=request.getParameter(password);Student result =null;try result = service.checkUser(userName, password); catch (SysException e) e.printStackTrace();request.setAttribute(exception, e.getMessage();finallyif(result!=null)HttpSession session=request.getSession();session.setAttribute(username,result);response.sendRedirect(/xsxk/fore/index.html);else request.setAttribute(message, 用户名或密码错误!请您重新登录!); request.getRequestDispatcher(login.jsp).forward(request, response);private void doListCourse(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException int tiaojian=0;int current=1;int pageSize=5;String tj=request.getParameter(tiaojian);if(tj!=null)tiaojian=Integer.parseInt(tj);String where=request.getParameter(where);String strCurrent=request.getParameter(current);if(strCurrent!=null&!.equals(strCurrent)current=Integer.parseInt(strCurrent);String strPageSize=request.getParameter(pageSize);if(strPageSize!=null&!.equals(strCurrent)pageSize=Integer.parseInt(strPageSize);PageModel model = null;try model = service.queryAllCourse(tiaojian, where, current, pageSize); catch (SysException e) request.setAttribute(exception, e.getMessage();System.out.println(controller); finally request.setAttribute(pageModel,model);request.setAttribute(tiaojian, tiaojian);request.setAttribute(where, where);request.setAttribute(current, current);request.setAttribute(totalPage, model.getTotalPage();request.getRequestDispatcher(/fore/content.jsp).forward(request, response); package xsxk.dao;import java.sql.Connection;import java.util.List;import xsxk.exception.*;import xsxk.model.Course;public interface ChooseCourseDao void chooseCourse(String sid,String cid)throws DaoException;List queryCourseByStudent(String sid,int pageSize,int current)throws DaoException;int getTotalRecordByStudent(String sid)throws DaoException;void setConn(Connection conn)throws DaoException;void deleteChoosedCourse(String sid,String cid)throws DaoException;package xsxk.dao;import xsxk.model.*;import java.sql.Connection;import java.util.*;import xsxk.exception.*;public interface CourseDao void saveCourse(Course course)throws DaoException;void updateCourse(Course course)throws DaoException;void deleteCourse(int id)throws DaoException;List QueryAllCourses(int tiaojian,String where,int pageSize,int current)throws DaoException;int getTotalRecord(int tiaojian,String where)throws DaoException;void setConn(Connection conn)throws DaoException;Course getCourseByCid(String Cid)throws DaoException;package xsxk.dao;import java.sql.Connection;import java.util.List;import xsxk.exception.DaoException;import xsxk.model.Course;import xsxk.model.Student;public interface StudentDao List queryAllStudents(int pageSize,int current)throws DaoException;List queryCourseByStudent(int id,int pageSize,int current)throws DaoException;void updateStudent(Student student)throws DaoException;void deleteStudent(int id)throws DaoException;int getTotalRecord()throws DaoException;Student isExists(String username,String password)throws DaoException;void setConn(Connection conn)throws DaoException;package xsxk.dao.impl;import java.util.ArrayList;import java.util.List;import xsxk.dao.ChooseCourseDao;import xsxk.exception.DaoException;import xsxk.model.ClassType;import xsxk.model.Course;import xsxk.model.Teacher;import xsxk.util.DB;import java.sql.*;import java.sql.*;public class ChooseCourseDaoImpl implements ChooseCourseDao private Connection conn;private PreparedStatement statement;private ResultSet rs;public void chooseCourse(String sid, String cid) throws DaoException String sql = insert into stu_course(sid,cid) values(?,?);try for (int i = 0; i cid.length; i+) statement = conn.prepareStatement(sql);statement.setString(1, sid);statement.setString(2, cidi);statement.executeUpdate(); catch (Exception e) throw new DaoException(选课失败,可能您已经选过了。); finally DB.releaseResource(statement, rs);public int getTotalRecordByStudent(String sid) throws DaoException int total = 0;String sql = select count(*) a from stu_course where sid=?;try statement = conn.prepareStatement(sql);statement.setString(1, sid);rs = statement.executeQuery();if (rs.next() total = rs.getInt(a); catch (Exception e) e.printStackTrace();throw new DaoException(获得总选课记录时发生错误。); finally DB.releaseResource(statement, rs);return total;public List queryCourseByStudent(String stuid, int pageSize,int current) throws DaoException List courses = new ArrayList();String sql = select c.*,s.*,s_c.*,t.*,type.* + from course c,student s,stu_course s_c,teacher t,dic_type type + where c.c_id=s_c.cid and + s.sid=s_c.sid and+ t.id=c.teacher_id and + type.id=c.type and+ s.sid=? limit ?,?;try statement = conn.prepareStatement(sql);statement.setString(1, stuid);statement.setInt(2, current);statement.setInt(3, pageSize);rs = statement.executeQuery();while (rs.next() int id = rs.getInt(c.id);String cid = rs.getString(c.c_id);String name = rs.getString();int tid = rs.getInt(c.teacher_id);String tname = rs.getString();int xuefen = rs.getInt(c.xuefen);int typeId = rs.getInt(c.type);String typeName = rs.getString();int day = rs.getInt(c.day);int jie = rs.getInt(jie);String classRoom = rs.getString(classroom);Teacher teacher = new Teacher(tid, tname);ClassType classType = new ClassType(typeId, typeName);Course course = new Course(id, cid, name, teacher, xuefen,classType, day, jie, classRoom);courses.add(course); catch (Exception e) e.printStackTrace();throw new DaoException(查询学生选课结果时发生错误。); finally DB.releaseResource(statement, rs);return courses;public void setConn(Connection conn) throws DaoException this.conn = conn;public void deleteChoosedCourse(String sid, String cid)throws DaoException String sql = delete from stu_course where sid=? and cid in (;for (int i = 0; i cid.length; i+) sql = sql + cidi + ,;sql = sql.substring(0, sql.length() - 1) + );try statement = conn.prepareStatement(sql);statement.setString(1, sid);statement.executeUpdate(); catch (Exception e) e.printStackTrace();throw new DaoException(删除所选课程时时发生错误。); finally DB.releaseResource(statement, rs);package xsxk.dao.impl;import java.util.ArrayList;import java.util.List;import xsxk.dao.CourseDao;import xsxk.exception.*;import xsxk.model.ClassType;import xsxk.model.Course;import xsxk.model.Teacher;import xsxk.util.DB;import java.sql.*;public class CourseDaoImpl implements CourseDao private Connection conn;public Connection getConn() throws SysException re

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论