一、页面设计1.管理员页面设计(图1-1管理员登陆)(1-2管理员首页)(1-3管理员密码修改)(1-4添加学生账号)(1-5学生列表页面)(1-6编辑学生信息)(1-7删除学生)2.学生用户页面设计(2-1学生用户登录)(2-2学生用户首页)(2-3学生用户密码修改)(2-4学生用户成绩查询)二、数据库表设计(管理员表)(课程表)(成绩表)(学生表)三、系统技术以及运行环境的需求分析系统技术整体介绍该系统框架主要使用Spring+Struts+Ibatis,其中Spring解决了DAO层(数据持久层)、service层(业务逻辑层)、model(模型层)、View(视图层)之间的耦合关系,Struts将程序分为DAO层、model层、View层,Ibatis是对象持久化框架。
通过三种技术的使用,提高了系统的灵活性和可扩展性。
Spring IOC和Spring AOP技术简介该系统中主要使用了Spring中的最核心的两个模块,IOC和AOP。
核心容器提供 Spring 框架的基本功能。
核心容器的主要组件是 BeanFactory,它是工厂模式的实现。
BeanFactory 使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
Spring AOP 模块则直接将面向方面的编程功能集成到了 Spring 框架中。
所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。
Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。
通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。
STRUTS 技术简介Struts技术的核心是MVC(Model View Controller),其目的是增加代码的重用率,减少数据表达,数据描述和应用操作的耦合度。
同时也使得软件可维护性、可修复性、可扩展性、灵活性以及封装性大大提高。
它通过把数据模式从各种可以被存取和控制的数据中分离出来可以改善分布式系统的设计。
MVC 设计模式有三部分组成。
模型是应用对象,没有用户界面。
视图表示它在屏幕上的显示,代表流向用户的数据。
控制器定义用户界面对用户输入的响应方式,负责把用户的动作转成针对Model的操作。
Model通过更新View的数据来反应数据的变化。
Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。
其流程如下图所示:图2.2.1AJAX技术简介在该系统中也是用了AJAX技术实现了学期和课程的二级联动,提高了系统的用户体验。
传统的web应用允许用户填写表单(form),当提交表单时就向web服务器发送一个请求。
服务器接收并处理传来的表单,然後返回一个新的网页。
这个做法浪费了许多带宽,因为在前後两个页面中的大部分HTML代码往往是相同的。
由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。
这导致了用户界面的响应比本地应用慢得多。
与此不同,AJAX应用可以仅向服务器发送并取回必需的数据,它使用SOAP或其它一些基于XML的web service接口,并在客户端采用JavaScript处理来自服务器的响应。
因为在服务器和浏览器之间交换的数据大量减少,结果我们就能看到响应更快的应用。
同时很多的处理工作可以在发出请求的客户端机器上完成,所以Web服务器的处理时间也减少了。
IBATIS技术简介iBatis是一个O/R Mapping解决方案,j2ee的O/R方案很多,和Hibernate相比,iBatis最大的特点就是小巧,上手很快。
如果你不需要太多复杂的功能,iBatis是能满足你的要求又足够灵活的最简单的解决方案。
四、数据库连接该系统数据库的连接使用的是data source配置的方式,使用data source提高了连接数据库的性能。
配置在WebRoot/web-inf/config/config.propertis中,具体配置如下:database.driver=oracle.jdbc.OracleDriverdatabase.url=jdbc:oracle:thin:@localhost:1521:orclername=leiweiweidatabase.password=leiweiwei可根据不同的用户修改用户名和密码五、代码简介1.用户管理代码public class AdminUserAction extends MappingDispatchAction {public static final String PASSWORD = "123456";private AdminUserService adminUserService;/*** 判断用户名密码是否正确** @param mapping* @param form* @param request* @param response* @return* @throws Exception*/public ActionForward adminUserLogin(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {//获取表单数据LoginForm loginForm = (LoginForm) form;String userName = loginForm.getUserName();String password = loginForm.getPassword();AdminUser adminUser = new AdminUser();adminUser.setUserName(userName);adminUser.setPassword(password);//判断用户名、密码是否正确boolean isRight = adminUserService.findAdminUser(adminUser);//如果不正确,返回登陆页面if (!isRight) {//将用户名放在request中,用于页面回显request.setAttribute("userName", userName);return mapping.findForward(StrutsConstants.TO_FAIL);}//登陆成功,将用户名存入session中HttpSession session = request.getSession();session.setAttribute("userName", userName);//转到管理员首页return mapping.findForward(StrutsConstants.TO_SUCCESS);}/*** 得到添加学生页面** @param mapping* @param form* @param request* @param response* @return* @throws Exception*/public ActionForward addStudentPage(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {//转到添加学生页面return mapping.findForward(StrutsConstants.TO_SUCCESS);}/*** 添加学生用户** @param mapping* @param form* @param request* @param response* @return* @throws Exception*/public ActionForward addStudent(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)throws Exception {//从表单中获取学生信息StudentForm studentForm = (StudentForm)form;String name = studentForm.getName();String studentNum = studentForm.getStudentNum();Student student = new Student();student.setName(name);student.setPassword(PASSWORD);student.setStudentNum(studentNum);//将学生信息存入学生表中boolean isSuc = adminUserService.addStudent(student);if(!isSuc){//如果失败,转到错误页面return mapping.findForward(StrutsConstants.TO_FAIL);}//成功转到列表页面return mapping.findForward(StrutsConstants.TO_SUCCESS);}/*** 获得编辑页面** @param mapping* @param form* @param request* @param response* @return* @throws Exception*/public ActionForward getEditPage(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)throws Exception {//获得学生编辑页面,将学生信息回显在页面上Long uid = Long.valueOf(request.getParameter("uid"));Student student = adminUserService.getStudentById(uid);request.setAttribute("student", student);return mapping.findForward(StrutsConstants.TO_SUCCESS);}/*** 编辑学生信息** @param mapping* @param form* @param request* @param response* @return* @throws Exception*/public ActionForward editStudentInfo(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {//从表单中获得学生信息StudentForm studentForm = (StudentForm)form;String name = studentForm.getName();long id = Long.valueOf(request.getParameter("id"));String studentNum = studentForm.getStudentNum();Student student = new Student();student.setName(name);student.setStudentNum(studentNum);student.setId(id);//更新学生信息boolean isSuc = adminUserService.updateStudentInfo(student);if(!isSuc){//如果不正确转到错误页面return mapping.findForward(StrutsConstants.TO_FAIL);}//正确,转向列表页面return mapping.findForward(StrutsConstants.TO_SUCCESS);}/*** 获得添加成绩页面** @param mapping* @param form* @param request* @param response* @return* @throws Exception*/public ActionForward addScorePage(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)throws Exception {Long uid = Long.valueOf(request.getParameter("uid"));//获得学生列表Student student = adminUserService.getStudentById(uid);List<Student> studentList = adminUserService.getStudentList();//将学生信息存在request中,用于页面显示request.setAttribute("student", student);request.setAttribute("studentList", studentList);return mapping.findForward(StrutsConstants.TO_SUCCESS);}/*** 获得学生列表** @param mapping* @param form* @param request* @param response* @return* @throws Exception*/public ActionForward getStudentList(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {//根据查询条件(姓名、学号)查询学生信息StudentForm studentForm = (StudentForm)form;String name = studentForm.getName();String studentNum = studentForm.getStudentNum();//获取当前页Integer currentPage = studentForm.getCurrentPage();StudentPage student = new StudentPage();student.setName(name);student.setStudentNum(studentNum);student.setCurrentPage(currentPage);//根据条件,得到学生列表,在页面分页显示StudentPage studentPage = adminUserService.findStudentList(student);request.setAttribute("page", studentPage);return mapping.findForward(StrutsConstants.TO_SUCCESS);}/*** 通过ajax获得学期列表** @param mapping* @param form* @param request* @param response* @return* @throws Exception*/public ActionForward getTerm(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)throws Exception {// **********************参数初始化*********************response.setCharacterEncoding("utf-8");// **********************参数初始化*********************List<Term> list = adminUserService.getTermList();// **********************返回信息分类json字符串*********************JSONArray jsonArray = JSONArray.fromObject(list);PrintWriter out = response.getWriter();out.write(jsonArray.toString());// **********************返回信息分类json字符串*********************return null;}/*** 根据ajax获得课程列表** @param mapping* @param form* @param request* @param response* @return* @throws Exception*/public ActionForward getCourse(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)throws Exception {// **********************参数初始化*********************response.setCharacterEncoding("utf-8");// **********************参数初始化*********************long termId = Long.parseLong(request.getParameter("termId"));List<Course> list = adminUserService.getCourseList(termId);// **********************返回信息分类json字符串*********************JSONArray jsonArray = JSONArray.fromObject(list);PrintWriter out = response.getWriter();out.write(jsonArray.toString());// **********************返回信息分类json字符串*********************return null;}/*** 添加学生成绩** @param mapping* @param form* @param request* @param response* @return* @throws Exception*/public ActionForward addScore(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)throws Exception {//获得表单数据ScoreForm scoreForm = (ScoreForm)form;long courseId = scoreForm.getCourseId();String studentNum = scoreForm.getStudentNum();long termId = scoreForm.getTermId();Double score = Double.valueOf(scoreForm.getScore());Score scr = new Score();scr.setCourseId(courseId);scr.setStudentNum(studentNum);scr.setTermId(termId);scr.setScore(score);//将表单中的成绩更新至数据库boolean isSuc = adminUserService.addScore(scr);if(!isSuc){return mapping.findForward(StrutsConstants.TO_FAIL);}return mapping.findForward(StrutsConstants.TO_SUCCESS);}/*** 删除学生信息* @param mapping* @param form* @param request* @param response* @return* @throws Exception*/public ActionForward deleteStudent(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {long uid = Long.valueOf(request.getParameter("uid"));//根据学生id删除该学生信息boolean isSuc = adminUserService.deleteStudent(uid);if (!isSuc)return mapping.findForward(StrutsConstants.TO_FAIL);return mapping.findForward(StrutsConstants.TO_SUCCESS);}//获得密码编辑页面public ActionForward getEditPwPage(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {return mapping.findForward(StrutsConstants.TO_SUCCESS);}}2.学生成绩查询代码public class StudentUserAction extends MappingDispatchAction {private AdminUserService adminUserService;/*** 学生用户登录* @param mapping* @param form* @param request* @param response* @return* @throws Exception*/public ActionForward studentLogin(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {StudentForm studentForm = (StudentForm) form;String studentNum = studentForm.getStudentNum();String password = studentForm.getPassword();Student student = new Student();student.setStudentNum(studentNum);student.setPassword(password);boolean isRight = adminUserService.findStudent(student);//Student astudent = adminUserService.findAdminUserByStudentNum(studentNum);HttpSession session = request.getSession();session.setAttribute("studentNum", studentNum);if (!isRight) {request.setAttribute("studentNum", studentNum);request.setAttribute("error", "用户名或密码错误");return mapping.findForward(StrutsConstants.TO_FAIL);}return mapping.findForward(StrutsConstants.TO_SUCCESS);}/*** 获得成绩搜索页面** @param mapping* @param form* @param request* @param response* @return* @throws Exception*/public ActionForward searchScorePage(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {HttpSession session = request.getSession();String studentNum = (String)session.getAttribute("studentNum");request.setAttribute("studentNum", studentNum);return mapping.findForward(StrutsConstants.TO_SUCCESS);}/*** 搜索成绩** @param mapping* @param form* @param request* @param response* @return* @throws Exception*/public ActionForward searchScore(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)throws Exception {ScoreForm scoreForm = (ScoreForm)form;Long termId = scoreForm.getTermId();Long courseId = scoreForm.getCourseId();HttpSession session = request.getSession();String studentNum = (String)session.getAttribute("studentNum");//String studentNum = scoreForm.getStudentNum();Score score = new Score();score.setTermId(termId);score.setCourseId(courseId);score.setStudentNum(studentNum);//获得学生成绩列表,并绑定至页面List<Score> scoreList = adminUserService.findScoreList(score);for(Score scr : scoreList){Term term = adminUserService.findTermByTermId(scr.getTermId());scr.setTermName(term.getTermName());if(scr.getCourseId()!=null&&scr.getCourseId()!=0){Course course = adminUserService.findCourseByCourseId(scr.getCourseId());scr.setCourseName(course.getCourseName());}}request.setAttribute("scoreList", scoreList);return mapping.findForward(StrutsConstants.TO_SUCCESS);}/*** 获得学生编辑页面** @param mapping* @param form* @param request* @param response* @return* @throws Exception*/public ActionForward editPasswordPage(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)throws Exception {return mapping.findForward(StrutsConstants.TO_SUCCESS);}}。