课堂考勤系统需求分析说明书.docx
《课堂考勤系统需求分析说明书.docx》由会员分享,可在线阅读,更多相关《课堂考勤系统需求分析说明书.docx(23页珍藏版)》请在冰点文库上搜索。
![课堂考勤系统需求分析说明书.docx](https://file1.bingdoc.com/fileroot1/2023-6/10/cc2d4b34-fee9-4d40-883b-e5bd914b74cb/cc2d4b34-fee9-4d40-883b-e5bd914b74cb1.gif)
课堂考勤系统需求分析说明书
课堂考勤系统
注:
教师登陆用姓名,学生登录用学号,学生密码在学生表中
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
int
no
yes
用户名
username
varchar
no
密码
password
varchar
no
权限
limit
int
no
表2学生信息表:
名称
字段
类型
是否空值
是否主键
表ID
id
int
no
yes
学号
stuNo
varchar
no
yes
姓名
stuName
varchar
no
班级
stuClass
varchar
no
性别
sex
varchar
no
联系电话
phone
varchar
no
迟到次数
lataTimes
int
yes
请假次数
qjTimes
int
yes
缺课次数
kkTimes
int
yes
密码
password
varchar
no
表3教师信息表:
名称
字段
类型
是否空值
是否主键
表id
id
int
no
yes
姓名
teaName
varchar
no
课程名
course
varchar
no
性别
sex
varchar
no
联系电话
phone
varchar
no
表4课程信息表:
名称
字段
类型
是否空值
是否主键
表id
id
int
no
yes
课程名
coursename
varchar
no
授课教师
teacher
varchar
no
上课教室
room
varchar
no
上课时间
time
varchar
no
上课班级
stuCalss
varchar
no
表5考勤信息表:
名称
字段
类型
是否空值
是否主键
表id
id
int
no
yes
学生学号
stuNo
varchar
no
yes
学生姓名
stuName
varchar
no
班级
stuClass
varchar
no
状态
state
varchar
no
考勤时间
kqtime
varchar
no
课程
course
varchar
no
授课教师
teacher
varchar
no
4.功能模块设计
课堂考勤系统涉及到学生用户、教师用户和管理员,主要的功能模块为查询模块以及考勤功能模块。
4.1系统的功能模块如图:
图4-1
考勤系统
任课教师
学生
修改密码
查看考勤统计信息
查看课程课信息
查看课程信息
修改密码
查看考勤统计信息
考勤
修改考勤信息
查看考勤信息
查看考勤信息
图4-1
4.2系统流程图
4.2.1.登录流程
如图4-2-1:
图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
图4-2-6
4.2.7学生查看考勤详情:
根据该学生所登陆的学号来进行查询该学生的考勤详情。
如图4-2-7:
图4-2-7
4.2.8学生查看考勤统计信息:
根据该学生所登陆的学号来进行查询该学生的考勤统计信息。
如图4-2-8:
图4-2-8
5主要功能的具体实现
5.1考勤功能的实现
教师进入课堂考勤系统,要实现考勤功能时点击考勤则会根据该教师的姓名查询出该教师所有所授课的课程和所授课的班级,再根据当堂所上的课程和班级进入考勤,然后选择考勤的人数,点击开始点名后显示出所抽取考勤的学生信息列表,然后选择学生状态,最后确认保存。
如图:
其部分代码如下:
/**
*根据教师名获取该教师的全部课程
*/
publicListgetCourse(Stringusername){
Connectionconn=DBUtils.getConnection();
PreparedStatementps=null;
ResultSetrs=null;
Stringsql="selectcoursename,teacher,stuCalssfromcoursewhereteacher='"+username+"'";
ArrayListls=newArrayList();
try{
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
Coursecou=newCourse();
cou.setCoursename(rs.getString
(1));
cou.setTeacher(rs.getString
(2));
cou.setStuCalss(rs.getString(3));
ls.add(cou);
}
}catch(SQLExceptione){
e.printStackTrace();
}finally{
DBUtils.close(rs,ps,conn);
}
returnls;
}
/**
*根据条件查询学生信息
*@authorxiaoshen
*
*/
publicListQueryByCondition(StringstuClass,intnum){
Connectionconn=DBUtils.getConnection();
PreparedStatementps=null;
ResultSetrs=null;
Stringsql;
intno=num;
Stringclas=stuClass;
if(no!
=-1){//判断,如果no=-1,查询全部,否则按传来的值查询
sql="select*fromstudentwherestuClass='"+clas+"'orderbyrand()limit"+no;
}else{
sql="select*fromstudentwherestuClass='"+stuClass+"'";
}
ArrayListls=newArrayList();
try{
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
Students=newStudent();
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(SQLExceptione){
e.printStackTrace();
}finally{
DBUtils.close(rs,ps,conn);
}
returnls;
}
/**
*保存个人考勤记录
*/
publicvoidsaveCheckInfo(chaeckInfoinfo){
Connectionconn=DBUtils.getConnection();
PreparedStatementps=null;
Stringsql="insertintokqinfo(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(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
DBUtils.close(null,ps,conn);
}
}
5.2修改考勤信息的具体实现
修改考勤信息则根据输入的课程名和学生的学号来查询出该学生在该课程中的所有考勤记录,选择所需要修改的考勤记录点击修改则获取学生学号和考勤时间进行修改,然后选择修改的状态,最后确认保存。
如图:
其部分代码如下:
/**
*根据课程名、学号查询学生考勤信息
*@return
*/
publicListquerryKqInfo(Stringcoursename,StringstuNo){
Connectionconn=DBUtils.getConnection();
PreparedStatementps=null;
ResultSetrs=null;
Stringsql="select*fromkqinfowherestuNo='"+stuNo+"'andcourse='"+coursename+"'";
Listlist=newArrayList();
try{
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
chaeckInfoche=newchaeckInfo();
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(SQLExceptione){
e.printStackTrace();
}finally{
DBUtils.close(rs,ps,conn);
}
returnlist;
}
/**
*根据学号,考勤时间修改学生详细考勤记录
*/
publicvoidupdateCheckInfoByStuNoAndTime(StringstuNo,Stringtime,StringnewState){
Connectionconn=DBUtils.getConnection();
PreparedStatementps=null;
Stringsql="updatekqinfosetstate='"+newState+"'wherestuNo='"+stuNo+"'andkqtime='"+time+"'";
try{
ps=conn.prepareStatement(sql);
ps.executeUpdate();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
DBUtils.close(null,ps,conn);
}
}
/**
*根据学号更新考勤次数
*@paramstu
*/
publicvoidsaveCheckTimes(Studentstu){
Connectionconn=DBUtils.getConnection();
PreparedStatementps=null;
Stringsql="updatestudentsetlataTimes=?
qjTimes=?
kkTimes=?
wherestuNo=?
";
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(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
DBUtils.close(null,ps,conn);
}
}
5.3修改密码
进行修改密码功能,根据原密码的输入进行修改,修改成功如下图:
5.4查看考勤信息
进入查看考勤信息模块,则显示班级和课程信息,然后可查看对应课程和班级的考勤信息,然后进入考勤学生的信息列表,最后可查看学生的考勤信息详情。
如下图:
5.5查看统计考勤信息
查看统计的考勤信息则是根据班级查询,输入所要查询的班级名称,则显示出该班级全部学生的考勤信息的统计信息。
如下图:
6.运行环境需求
硬件环境:
服务端处理器需2.4GHz或者更高的计算机
软件环境:
数据库为MySQLServer5.0,操作系统:
windowsXP以及Windows7及其以上版本,浏览器为IE9.0以上版本。
服务器:
Tomcat6.0
7.测试结果与分析
7.1考勤功能测试:
本系统中考勤中的学生状态用0代表正常、1代表请假、2代表缺课、3代表迟到。
测试编号
输入状态
输出状态
测试结果
001
0
0
正确
002
1
1
正确
003
2
2
正确
004
3
3
正确
7.2修改考勤信息功能测试:
本系统中考勤中的学生状态用0代表正常、1代表请假、2代表缺课、3代表迟到。
测试编号
原状态
输入新状态
输出状态
测试结果
010
0
1
1
正确
011
0
2
2
正确
012
0
3
3
正确
测试编号
原状态
输入新状态
输出状态
测试结果
020
1
0
0
正确
021
1
2
2
正确
022
1
3
3
正确
测试编号
原状态
输入新状态
输出状态
测试结果
030
2
0
0
正确
031
2
1
1
正确
032
2
3
3
正确
测试编号
原状态
输入新状态
输出状态
测试结果
040
3
0
0
正确
041
3
1
1
正确
042
3
2
2
正确
7.3修改密码测试
测试编号
原密码
输入新密码
输出
测试结果
100
123
321
321
正确
101
456
654
654
正确
8课程设计总结
整个课堂考勤系统主要包括以上所写的模块和功能,基本上能够覆盖了课堂考勤中的日常操作。
由于时间、技术和精力的关系,该系统还处于原型设计的阶段,许多预想的模块还没有能够及时的添加进去。
系统的设计有一些部分也有些模块还可更好的进行完善。
8.1系统中需要改进的问题
本课堂考勤系统的系统设计和分析到目前为止还只是一个初级阶段,在这段时间多设计的过程中,有很多的不足:
(1)系统只提供了键盘和鼠标的的输入。
(2)系统没有提供打印输出的功能,如果需要打印还需借助其他的软件。
(3)系统没有提供用户的工作日志和操作记录。
(4)系统中的一些模块的功能的基本信息中并不全面,还有很多涉及到信息管理的要素没有增加进去。
(5)本课堂考勤系统只是提供了一个简单的功能,与现代的课堂考勤系统还有一定的差距。
(6)系统中的一些模块功能是理论话的,在实际中还有许多更复杂的情况并没有考虑进去。
在以后的实际应用过程中还有很多的地方需要改进。
(7)