1.总体目标.................................................................................................................. 2
1.1背景................................................................................................................... 2
1.1.1引言......................................................................................................... 2 1.2要求............................................................................................................ 2 1.3目标............................................................................................................ 2
2.需求分析.................................................................................................................. 2
2.1功能需求描述................................................................................................... 3 2.2用户需求描述................................................................................................... 3
2.2.1学生用户需求描述................................................................................. 3 2.2.2任课教师用户需求描述......................................................................... 3
3.数据库设计................................................................................................................. 3
3.1表结构如下....................................................................................................... 3 4.功能模块设计............................................................................................................. 5
4.1系统的功能模块............................................................................................... 5 4.2系统流程图....................................................................................................... 6 5主要功能的具体实现............................................................................................... 10
5.1考勤功能的实现............................................................................................. 11 5.2修改考勤信息的具体实现............................................................................. 15 5.3修改密码......................................................................................................... 18 5.4查看考勤信息................................................................................................. 18 5.5查看统计考勤信息......................................................................................... 19 6. 运行环境需求......................................................................................................... 19 7.测试结果与分析.................................................................................................... 19
7.1考勤功能测试................................................................................................. 19 7.2修改考勤信息功能测试................................................................................. 20 7.3修改密码测试................................................................................................. 20 8课程设计总结........................................................................................................... 21
8.1系统中需要改进的问题................................................................................. 21
课堂考勤系统
注:教师登陆用姓名,学生登录用学号,学生密码在学生表中
1.总体目标
1.1背景
1.1.1引言
目前高校大部分都还是采用任课老师纸笔上课点名的方式进行课堂的考勤工作,记录学生的上课情况,这种方式不仅麻烦而且比较费时。在信息化的今天,能有效地借助网络才能提高办事效率。因此,课堂考勤系统能够解决纸笔化的考勤方式所带来的很多麻烦。
1.2要求
考勤系统主要有以下功能:
增删改查:学生信息、教师信息、课程信息。
业务功能:在线点名、查看考勤信息、修改考勤信息、统计考勤信息。
1.3目标
课堂考勤系统的基本目标是方便任课老师课堂上的考勤工作。系统实现后,应做该到:
(1)方便任课老师进行在线考勤,主要功能有查看课程信息,修改密码,考勤,
查看考勤信息,查看考勤统计信息,修改考勤信息。
(2)方便学生查询自己的考勤信息的详情与查询考勤信息的统计情况,也进行
登录密码的修改。
2.需求分析
2.1功能需求描述
考勤系统主要有以下功能:
增删改查:学生信息、教师信息、课程信息。
业务功能:在线点名、查看考勤信息、修改考勤信息、统计考勤信息。修改用户登录密码。
2.2用户需求描述 2.2.1学生用户需求描述
学生对本系统的主要需求是:查看在校期间的所上课程的出勤信息。
2.2.2任课教师用户需求描述
任课教师对本系统的主要需求是:任课教师通过主要考勤管理系统进行课堂的考勤工作,其包括在线点名、查看考勤信息、查看课程信息和修改考勤信息。
3.数据库设计
课堂考勤系统涉及到学生用户、教师用户和管理员。根据实际应用的需要,最大限度的提高系统的性能,本系统涉及到5张表,分别是管理员表、学生信息表、教师信息表、考勤信息表、课程信息表。
3.1表结构如下:
表1 管理员表:
名称 字段 Id id 用户名 username 类型 int varchar 是否空值 no no 是否主键 yes 密码 权限 password limit varchar int no no
表2 学生信息表:
名称 字段 表ID id 学号 stuNo 姓名 stuName 班级 stuClass 性别 sex 联系电话 phone 迟到次数 lataTimes 请假次数 qjTimes 缺课次数 kkTimes 密码 password
表3 教师信息表:
名称 字段 表id id 姓名 teaName 课程名 course 性别 sex 联系电话 phone
表4 课程信息表:
名称 字段 表id id 课程名 coursename 授课教师 teacher 上课教室 room 上课时间 time 上课班级 stuCalss
表5 考勤信息表:
名称 字段 表id id 类型 int varchar varchar varchar varchar varchar int int int varchar 是否空值 no no no no no no yes yes yes no 是否主键 yes yes 类型 int varchar varchar varchar varchar 是否空值 no no no no no 是否主键 yes 类型 int varchar varchar varchar varchar varchar 是否空值 no no no no no no 是否主键 yes 类型 int 是否空值 no 是否主键 yes 学生学号 学生姓名 班级 状态 考勤时间 课程 授课教师
stuNo stuName stuClass state kqtime course teacher varchar varchar varchar varchar varchar varchar varchar no no no no no no no yes 4.功能模块设计
课堂考勤系统涉及到学生用户、教师用户和管理员,主要的功能模块为查询模块以及考勤功能模块。
4.1系统的功能模块如图:图4-1
修改 密 码 查看考勤统计信息查看考勤信息查看课程信息考勤查看考勤统计信息查看考勤信息修改考勤信息查看课程课信息修改密码 学生 任课教师 考勤系统 图4-1
4.2系统流程图
4.2.1.登录流程 如图4-2-1:
登录输入帐号密码N判别身份并验证帐号密码Y登录成功、进入系统 图4-2-1
4.2.2教师考勤流程图:
授课教师进入考勤模块,显示出待考勤的班级和课程,选择后再选择要考勤的人数,然后进入考勤学生的信息列表,再选择学生状态,最后进行保存考勤信息。
如图4-2-2:
考勤考勤班级及课程选择要考勤人数考勤学生信息列表学生状态保存考勤信息
图4-2-2
4.2.3.教师查看考勤信息:
进入查看考勤信息模块,则显示班级和课程信息,然后可查看对应课程和班级的考勤信息,然后进入考勤学生的信息列表,最后可查看学生的考勤信息详情。
流程如图4-2-3:
查看考勤信息班级及课程名学生信息列表学生考勤详情
图4-2-3
4.2.4教师查看统计考勤信息:
查看统计的考勤信息则是根据班级查询,输入所要查询的班级名称,则显示出该班级全部学生的考勤信息的统计信息。流程如图4-2-4:
查看统计考勤信息输入要查询的班级显示该班级全部学生考勤的统计信息 图4-2-4
4.2.5修改考勤信息:
修改考勤信息则根据输入的课程名和学生学号查询出要修改的学生的考勤信息,
然后修改学生状态,确认保存。如图4-2-5
修改学生考勤信息输入课程名和学生学号修改学生状态确认并保存 图4-2-5
4.2.6修改用户密码:
修改用户的登录密码则需根据原密码来进行修改。如图4-2-6
修改密码输入原密码和新密码N判断原密码是否正确Y修改成功 图4-2-6
4.2.7学生查看考勤详情:
根据该学生所登陆的学号来进行查询该学生的考勤详情。如图4-2-7:
开始学生登录查看考勤记录查看考勤详情结束 图4-2-7
4.2.8学生查看考勤统计信息:
根据该学生所登陆的学号来进行查询该学生的考勤统计信息。如图4-2-8:
开始学生登录查看考勤记录查看考勤次数结束 图4-2-8
5主要功能的具体实现
5.1考勤功能的实现
教师进入课堂考勤系统,要实现考勤功能时点击考勤则会根据该教师的姓名查询出该教师所有所授课的课程和所授课的班级,再根据当堂所上的课程和班级进入考勤,然后选择考勤的人数,点击开始点名后显示出所抽取考勤的学生信息列表,然后选择学生状态,最后确认保存。如图:
其部分代码如下:
/**
* 根据教师名获取该教师的全部课程 */
public List getCourse(String username){
Connection conn = DBUtils.getConnection(); PreparedStatement ps = null; ResultSet rs = null;
String sql=\"select coursename,teacher,stuCalss from course
where teacher='\"+username+\"'\";
ArrayList ls = new ArrayList();
}
try {
ps=conn.prepareStatement(sql); rs=ps.executeQuery(); while (rs.next()){ }
Course cou =new Course();
cou.setCoursename(rs.getString(1)); cou.setTeacher(rs.getString(2)); cou.setStuCalss(rs.getString(3)); ls.add(cou); } catch (SQLException e) {
e.printStackTrace();
}finally{ }
return ls;
DBUtils.close(rs, ps, conn);
/**
* 根据条件查询学生信息 * @author xiaoshen * */
public List QueryByCondition(String stuClass,int num){
Connection conn = DBUtils.getConnection(); PreparedStatement ps = null; ResultSet rs = null; String sql; int no = num;
String clas = stuClass;
if(no!=-1){//判断,如果no=-1,查询全部,否则按传来的值查询
sql = \"select * from student where
stuClass='\"+clas+\"' order by rand() limit \"+no;
}else{
sql=\"select * from student where
stuClass='\"+stuClass+\"'\";
}
ArrayList ls = new ArrayList(); try {
ps=conn.prepareStatement(sql); rs=ps.executeQuery(); while (rs.next()){ }
Student s =new Student(); s.setId(rs.getInt(1)); s.setStuNo(rs.getString(2)); s.setStuName(rs.getString(3)); s.setStuClass(rs.getString(4)); s.setSex(rs.getString(5)); s.setPhone(rs.getString(6)); s.setLataTimes(rs.getInt(7)); s.setQjTimes(rs.getInt(8)); s.setKkTimes(rs.getInt(9)); ls.add(s); } catch (SQLException e) {
e.printStackTrace();
}finally{ }
return ls;
DBUtils.close(rs, ps, conn);
} /**
* 保存个人考勤记录 */
public void saveCheckInfo(chaeckInfo info){
Connection conn = DBUtils.getConnection(); PreparedStatement ps = null; String sql=\"insert into
kqinfo(stuNo,stuName,stuClass,state,kqtime,course,teacher) values(?,?,?,?,?,?,?)\";
}
try {
ps = conn.prepareStatement(sql); ps.setString(1, info.getStuNo()); ps.setString(2, info.getStuName()); ps.setString(3, info.getStuClass()); ps.setString(4, info.getState()); ps.setString(5, info.getKqtime()); ps.setString(6, info.getCourse()); ps.setString(7, info.getTeacher()); ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block e.printStackTrace();
}finally{ }
DBUtils.close(null, ps, conn);
5.2修改考勤信息的具体实现
修改考勤信息则根据输入的课程名和学生的学号来查询出该学生在该课程中的所有考勤记录,选择所需要修改的考勤记录点击修改则获取学生学号和考勤时间进行修改,然后选择修改的状态,最后确认保存。如图:
其部分代码如下:
/**
*根据课程名、学号查询学生考勤信息 * @return */
public List querryKqInfo(String coursename,String stuNo){
Connection conn = DBUtils.getConnection(); PreparedStatement ps = null; ResultSet rs = null;
String sql=\"select * from kqinfo where stuNo='\"+stuNo+\"' and
course='\"+coursename+\"'\";
List list = new ArrayList(); try {
ps = conn.prepareStatement(sql); rs = ps.executeQuery();
}
while(rs.next()){ }
chaeckInfo che = new chaeckInfo(); che.setStuNo(rs.getString(2)); che.setStuName(rs.getString(3)); che.setStuClass(rs.getNString(4)); che.setState(rs.getString(5)); che.setKqtime(rs.getString(6)); che.setCourse(rs.getString(7)); che.setTeacher(rs.getString(8)); list.add(che); } catch (SQLException e) {
e.printStackTrace();
}finally{ }
return list;
DBUtils.close(rs, ps, conn);
/**
* 根据学号,考勤时间修改学生详细考勤记录 */
public void updateCheckInfoByStuNoAndTime(String stuNo,String
time,String newState){
Connection conn = DBUtils.getConnection(); PreparedStatement ps = null;
String sql =\"update kqinfo set state='\"+newState+\"' where
stuNo='\"+stuNo+\"' and kqtime='\"+time+\"' \";
try {
ps = conn.prepareStatement(sql);
}
ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block e.printStackTrace();
}finally{ }
DBUtils.close(null, ps, conn);
/**
* 根据学号更新考勤次数 * @param stu */
public void saveCheckTimes(Student stu){
Connection conn = DBUtils.getConnection(); PreparedStatement ps = null; String sql = \"update student set
lataTimes=?,qjTimes=?,kkTimes=? where stuNo=?\";
try {
ps = conn.prepareStatement(sql); ps.setInt(1, stu.getLataTimes()); ps.setInt(2, stu.getQjTimes()); ps.setInt(3, stu.getKkTimes()); ps.setString(4, stu.getStuNo()); ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block e.printStackTrace();
}finally{ }
DBUtils.close(null, ps, conn);
}
5.3修改密码
进行修改密码功能,根据原密码的输入进行修改,修改成功如下图:
5.4查看考勤信息
进入查看考勤信息模块,则显示班级和课程信息,然后可查看对应课程和班级的考勤信息,然后进入考勤学生的信息列表,最后可查看学生的考勤信息详情。如下图:
5.5查看统计考勤信息
查看统计的考勤信息则是根据班级查询,输入所要查询的班级名称,则显示出该班级全部学生的考勤信息的统计信息。如下图:
6.运行环境需求
硬件环境:服务端处理器需 2.4GHz 或者更高的计算机
软件环境:数据库为MySQL Server 5.0,操作系统:windows XP以及Windows 7及其以上版本,浏览器为IE9.0以上版本。
服务器:Tomcat 6.0
7.测试结果与分析
7.1考勤功能测试:
本系统中考勤中的学生状态用 0代表正常、1代表请假、2代表缺课、3代表迟到。
测试编号 001 002 003 004 输入状态 0 1 2 3 输出状态 0 1 2 3 测试结果 正确 正确 正确 正确 7.2修改考勤信息功能测试:
本系统中考勤中的学生状态用 0代表正常、1代表请假、2代表缺课、3代表迟到。 测试编号 010 011 012 测试编号 020 021 022 测试编号 030 031 032 测试编号 040 041 042 原状态 0 0 0 原状态 1 1 1 原状态 2 2 2 原状态 3 3 3 输入新状态 1 2 3 输入新状态 0 2 3 输入新状态 0 1 3 输入新状态 0 1 2 输出状态 1 2 3 输出状态 0 2 3 输出状态 0 1 3 输出状态 0 1 2 测试结果 正确 正确 正确 测试结果 正确 正确 正确 测试结果 正确 正确 正确 测试结果 正确 正确 正确 7.3修改密码测试
测试编号 100 101 原密码 123 456 输入新密码 321 654 输出 321 654 测试结果 正确 正确 8课程设计总结
整个课堂考勤系统主要包括以上所写的模块和功能,基本上能够覆盖了课堂考勤中的日常操作。由于时间、技术和精力的关系,该系统还处于原型设计的阶段,许多预想的模块还没有能够及时的添加进去。系统的设计有一些部分也有些模块还可更好的进行完善。
8.1系统中需要改进的问题
本课堂考勤系统的系统设计和分析到目前为止还只是一个初级阶段,在这段时间多设计的过程中,有很多的不足: (1)系统只提供了键盘和鼠标的的输入。
(2)系统没有提供打印输出的功能,如果需要打印还需借助其他的软件。 (3)系统没有提供用户的工作日志和操作记录。
(4)系统中的一些模块的功能的基本信息中并不全面,还有很多涉及到信息 管理的要素没有增加进去。
(5)本课堂考勤系统只是提供了一个简单的功能,与现代的课堂考勤系统还有一定的差距。
(6)系统中的一些模块功能是理论话的,在实际中还有许多更复杂的情况并没有考虑进去。在以后的实际应用过程中还有很多的地方需要改进。
因篇幅问题不能全部显示,请点此查看更多更全内容