上海电力学院Java EE课程大作业题目计算机学院在线考勤系统学号 ******** 课号 ********* 姓名陈小格班级 2011053 院系计算机科学与技术学院专业计算机科学与技术(电企)2013-06-10目录第一章系统需求与分析 (3)第二章系统设计 (4)1. 系统组成: (4)2. UML活动关系图: (4)3. 功能设计 (6)4. 数据库设计 (7)5. 项目界面和完成功能 (10)第三章系统关键模块技术实现 (13)第四章系统测试与部署 (17)第五章系统开发总结与心得体会 (20)参考文献 (21)第一章系统需求与分析计算机学院在线考勤系统适用于对在校学生的各门课的出勤情况予以记录,计算和查询,一个有效的查询系统分别包括后台管理权限设计,录入设计和查询设计。
该系统的使用对象为三类人,分别为教师,学生,管理员。
具体任务分配如下所示:根据如上所示,本系统需要完成的功能如下1.学生系统学生通过学号和起始密码(111111)完成首次登陆,学生首先进行选课。
学生只能查询自己的考勤情况及最后得分,可根据课程号的课程名查询,同时可修改自己的登录密码,修改的密码则通过数据库返回给管理员,学生可至管理员处索取密码。
2.教师系统教师通过教师号和初始密码(111111)完成首次登陆,教师可查询自己教授的课程,并能够在自己所教授的课程里进行考勤录入,统计查询,录入得分等操作,可修改密码,密码同样将返回给管理员。
3.管理员系统管理员负责基本信息维护:学生信息导入、教师信息导入,被导入并输入资料的人才有资格登录此系统。
课程信息包括基本信息和指定授课老师,指定教师在指定时间对该门课的考勤录入资格;查看考勤信息则用于在期末计算学生平时成绩得分,管理员有权限修改。
第二章系统设计1. 系统组成:本项目采用jsp +hibernate+javaBean+Servlet技术完成由以下三部分组件组成:i.用户表示层(视图,即各jsp文件);ii.控制处理层(控制器,即各dao和serv);iii.业务逻辑层(模型,即各JavaBean);2. UML活动关系图:下图是具体的UML活动关系图,包含进入系统时可以进行的操作学生教师管理员3. 功能设计1.学生选课:学生可在管理员录入并开发权限的课程中选课。
考勤查询:学生可在线查询自己在各门课的出勤情况,期末过后也可在同页面查询该门课成绩(平时+考试)修改密码:修改登录密码2.老师课程查询:教师可查询自己教授的课程考勤录入:教师可录入自己所教授课的考勤情况填写分数:期末过后,教师可在系统中填写学生的卷面分数(占总成绩的70%),考勤所占分数(然后按学生出勤百分比算分)及剩余分数(两项占30分),系统由此得出学生期末分数。
修改密码:修改登录密码3.管理员教师信息录入:教师信息指教师的基本信息,包括教师号,姓名,性别,身份证号,联系电话,唯有被录入的教师才有权限以教师身份登录本系统。
学生信息录入:学生信息包括学号,姓名,班级,性别,身份证号,同样,唯有被录入的学生才有权限以学生身份登录本系统课程信息录入:课程信息包括课程号,课程名,授课教师号,授课开始周,授课结束周,授课时间,总课时,当学生登录系统选课时,对应的课程信息将显示在学生选课栏里供选择。
课程信息管理:用于修改删除课程信息课程控制:用于开启或关闭教师录入该门课成绩功能和学生选择该门课功能成绩管理:用于查看和修改学生的各项成绩4. 数据库设计数据表的设计及功能如下:●信息表,用于存放各种用户的基本信息●课程表,用于存放课程信息●考勤表,用于存放各门课的考勤信息信息表CREATE DATABASE IF NOT EXISTS school;USE school;DROP TABLE IF EXISTS `userinfo`;CREATE TABLE `userinfo` (`id` int(10) unsigned NOT NULL auto_increment,`no` varchar(45) default NULL,`Sname` varchar(45) default NULL,`Ssex` varchar(4) default NULL,`Ssf` varchar(45) default NULL,`se` varchar(45) default NULL,`Tphone` varchar(45) default NULL,`userType` int(10) unsigned default NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;课程表DROP TABLE IF EXISTS `course`;CREATE TABLE `course` (`id` int(10) unsigned NOT NULL auto_increment, `Cno` varchar(45) default NULL,`Tno` varchar(45) default NULL,`Cname` varchar(45) default NULL,`Cgra` int(10) unsigned default NULL,`Cov` int(10) unsigned default NULL,`Ctime` varchar(45) default NULL,`checksum` int(10) unsigned default NULL, `stuflag` int(10) unsigned default NULL, `teaflag` int(10) unsigned default NULL, `Chour` int(10) unsigned default NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;考勤表DROP TABLE IF EXISTS `checkpass`;CREATE TABLE `checkpass` (`id` int(10) unsigned NOT NULL auto_increment, `Cno` varchar(45) default NULL,`Sno` varchar(45) default NULL,`cweek` varchar(45) default NULL,`cnum` varchar(45) default NULL,`chall` varchar(45) default NULL,`Ath` varchar(45) default NULL,`Allgra` varchar(45) default NULL,`cname` varchar(45) default NULL,`qm` varchar(45) default NULL,`sname` varchar(45) default NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;5. 项目界面和完成功能1 登录2 修改密码学生1 选课2 成绩查询教师1 课程查询2 录入成绩管理员1.学生管理2.教师管理3.课程管理4.课程管理5.成绩管理第三章系统关键模块技术实现1.登录模块以下为serv中代码:public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {UserDao userDao = new UserDao();String name = request.getParameter("name");String pss = request.getParameter("pss");Integer userType =Integer.valueOf(request.getParameter("select"));index.jsp页面上传登录信息由LoginServlet接受Userinfo userinfo = userDao.login(name, pss, userType);,Checkpass.dao通过Userinfo.java链接打开session对话,从数据库调用Userinfo表中数据,LoginServlet页面调用dao中Checkpass方法,用于验证jsp 页面上传信息是否合法if(userinfo!=null){HttpSession session = request.getSession();session.setAttribute("userInfo", userinfo);if(userType==1){request.getRequestDispatcher("studentMain.jsp").forward(request, response);}else if(userType==2){request.getRequestDispatcher("teacherMain.jsp").forward(request, response);}else if(userType==3){request.getRequestDispatcher("adminMain.jsp").forward(request, response);}}else {request.setAttribute("errorFlag", "error");request.getRequestDispatcher("index.jsp").forward(request, response);}}根据不同的判断结果执行不同的语句2.考勤录入模块模块执行顺序如下<form action="LoadScoreAction?actionFlag=saveInsert" method="post"> jsp页面利用ation方法传入flagservlet页面通过后台导入flag调用saveinsert方法else if("saveInsert".equals(actionFlag)){Integer id = Integer.valueOf(request.getParameter("id"));Checkpass checkpass = checkpassDao.loadcheckpassByid(id);Course course =courseDao.loadCourseByCno(checkpass.getCno());double cnum =request.getParameter("cnum")==""?0:Double.valueOf(request.getParamete r("cnum"));double qm =request.getParameter("qm")==""?0:Double.valueOf(request.getParameter( "qm"));double ath =request.getParameter("ath")==""?0:Double.valueOf(request.getParameter ("ath"));接收页面的传来的数据,因为考勤录入只有一个数,程序太单调,于是此处我不仅设置了考勤录入(未到次数),还设置了其他成绩录入(除考勤外的平时分得分,自定两项相加占总成绩的三十分),期末成绩录入。