学生成绩查询管理系统的设计与开发报告Word格式.docx
《学生成绩查询管理系统的设计与开发报告Word格式.docx》由会员分享,可在线阅读,更多相关《学生成绩查询管理系统的设计与开发报告Word格式.docx(29页珍藏版)》请在冰点文库上搜索。
系统采用技术:
Servlet+Jsp+Jdbc+H-ui+EasyUI+jQuery+Ajax+面向接口编程
3、需求分析
该学生成绩管理系统涉及到学生、教师、系统管理员、班级、学生成绩、课程。
设置一个系统管理员对系统进行管理。
所有用户需输入账号、密码登录进入系统;
管理员(admin)进入系统后可对学生、老师、班级、课程进行增删改查操作,对成绩进行统计分析,查看学生的请假和缺勤信息;
学生(student)进入系统,查看成绩、查看考勤、请假和修改自己的信息;
老师(teacher)进入系统后,对自己这门课程的学生设置课程成绩、查看和修改自己的信息,查看学生的信息和成绩、批改学生的请假申请、查看学生的考勤记录以及统计分析学生的成绩;
管理员为班级设置年级,为年级设置课程,为班级的每门课程设置老师,为学生设置班级。
一个年级有多门课程(数据结构、计算机网络、数据库等等),班级的每门课程只能有一名老师,一个老师可以有多门课程;
老师选择自己这门课程为该课程的学生登记成绩。
老师可以查看其他老师的信息(可以当成是老师的通讯录),查看本课程学生的信息和成绩;
学生可以查看班级其他同学的信息(可以看成是班级的同学录)。
考试分为两种,一种是年级统考,一种是平时考试。
年级统考需要管理员事先添加一次年级统考,考试成绩出来后,老师进入系统选择该次考试为学生登记成绩。
平时考试则是班级平时的考试,老师添加考试信息,登记成绩。
成绩统计分析则是针对年级统考进行分析,主要涉及各学科分数名次,总分名次。
4、系统功能菜单
管理员功能菜单
学生信息管理
学生列表
教师信息管理
教师列表
班级信息管理
班级列表
年级列表
课程信息管理
课程列表
考勤信息管理
请假信息管理
成绩统计分析
考试列表
系统管理
修改密码
系统设置
退出系统
学生功能菜单
选课信息管理
教学管理
学生成绩查询
个人信息
教师功能菜单
班级信息管理考勤信息管理
教师信息管理请假信息管理
课程信息管理成绩信息管理
选课信息管理
5、系统设计
系统用户(user)
字段
类型
注释
id
int
ID
account
String
账号(学生和老师的学号即为账号)
password
密码
type
账号类型(1为管理员,2为学生,3为老师)
对象设计
学生(Student)
number
学号
name
姓名
sex
性别
phone
电话
qq
QQ
photo
照片路径
clazz
Clazz
学生所在班级
老师(Teacher)
工号
courseList
List<
Course>
所选课程集合
课程(Course)
ID值
课程名称
年级(Grade)
年级名称
clazzList
Clazz>
该年级下的班级
该年级的课程集合
studentList
Student>
该年级下的学生集合
班级(Clazz)
班级名称
grade
Grade
年级
班级的学生集合
考试(Exam)
考试名称
time
Date
考试时间
remark
备注
班级(平时考试涉及到某个班级,统考则为所有班级)
考试类型,默认1(1为年级统考,2为平时考试)
考试成绩(EScore)
记录的id值
exam
Exam
考试
班级
course
Course
课程
student
Student
学生
score
该门课程的成绩
•数据表设计
系统用户表(user)
字段名
是否主键
是否为空
说明
是
否
主键值
varchar(30)
否,不能重复,管理员账号,教师工号,或学生学号
账号
varchar(20)
用户姓名
tinyint
用户类型,默认2(1为管理员,2为学生,3为老师)
学生表(student)
varchar(4)
varchar(200)
clazzid
外键(班级ID)
班级ID
教师表(teacher)
课程表(course)
varchar(50)
年级(grade)
班级(clazz)
gradeid
外键(年级ID)
年级ID
年级-课程(grade_course)
courseid
外键(课程ID)
课程ID
班级-课程-老师(clazz_course_teacher)
外键(clazz.id)
外键(grade_course.cid)
teacherid
外键(teacher.id)
教师ID
考试表(exam)
tinyint
(1)
外键(grade.id)
考试成绩表(escore)
examid
外键(exam.id)
考试ID
studentid
外键(student.id)
学生ID
外键(grade_course.id)
默认0
成绩
考勤表
考勤表(sleave)
Student_id
Info
Varchar
学生请假信息
status
状态ID
varchar
许可ID
6、界面设计
登录界面:
6.1管理员角色
管理员主界面:
管理员——学生列表管理:
管理员——选课信息管理:
管理员——考勤信息管理:
管理员-------成绩信息界面:
管理员-------添加成绩信息界面:
、
管理员——导入成绩信息界面:
管理员——成绩导出Excel界面:
管理员——修改成绩信息界面:
管理员——删除成绩界面:
管理员——统计成绩页面:
6.2教师界面
教师——教师信息界面:
教师——管理班级信息界面
教师——修改教师信息界面:
管理员——课程信息管理界面:
教师——考勤信息管理
教师——请假信息管理
教师——成绩信息管理
6.3学生界面
学生登录主界面:
学生——选择课程界面:
学生——考勤信息界面:
学生——显示课表界面:
学生——我的成绩单:
学生——密码修改界面:
7、关键技术的介绍
7.1使用Servlet和Ajax实现点击不同的选项,在左侧面板中显示不同的界面。
URL具体代码如下:
var_menus={"
menus"
:
[
{"
menuid"
"
2"
"
icon"
menuname"
学生信息管理"
{"
21"
学生列表"
icon-user-student"
url"
StudentServlet?
method=toStudentListView"
},
]
},
<
c:
iftest="
${userType==1||userType==3}"
>
"
4"
班级信息管理"
"
{"
42"
班级列表"
icon-house"
ClazzServlet?
method=toClazzListView"
}
<
/c:
if>
{"
3"
教师信息管理"
31"
教师列表"
icon-user-teacher"
TeacherServlet?
method=toTeacherListView"
6"
课程信息管理"
61"
课程列表"
icon-book-open"
CourseServlet?
method=toCourseListView"
7"
选课信息管理"
71"
选课列表"
SelectedCourseServlet?
method=toSelectedCourseListView"
8"
考勤信息管理"
81"
考勤列表"
AttendanceServlet?
method=toAttendanceServletListView"
9"
请假信息管理"
91"
请假列表"
LeaveServlet?
method=toLeaveServletListView"
10"
成绩信息管理"
101"
成绩列表"
ScoreServlet?
method=toScoreListView"
<
成绩统计"
method=toScoreStatsView"
5"
系统管理"
{"
51"
修改密码"
icon-set"
SystemServlet?
method=toPersonalView"
}
]};
7.2成绩录入与查询设计功能实现
privatevoidgetScoreList(HttpServletRequestrequest,
HttpServletResponseresponse){
//TODOAuto-generatedmethodstub
intstudentId=request.getParameter("
studentid"
)==null?
0:
Integer.parseInt(request.getParameter("
).toString());
intcourseId=request.getParameter("
courseid"
IntegercurrentPage=request.getParameter("
page"
1:
));
IntegerpageSize=request.getParameter("
rows"
999:
Scorescore=newScore();
//获取当前的用户类型
intuserType=Integer.parseInt(request.getSession().getAttribute("
userType"
if(userType==2){
//如果是学生,那只能查看自己的信息
StudentcurrentUser=(Student)request.getSession().getAttribute("
user"
);
studentId=currentUser.getId();
}
score.setCourseId(courseId);
score.setStudentId(studentId);
ScoreDaoscoreDao=newScoreDao();
List<
Score>
courseList=scoreDao.getScoreList(score,newPage(currentPage,pageSize));
inttotal=scoreDao.getScoreListTotal(score);
scoreDao.closeCon();
response.setCharacterEncoding("
UTF-8"
Map<
String,Object>
ret=newHashMap<
();
ret.put("
total"
total);
courseList);
try{
Stringfrom=request.getParameter("
from"
if("
combox"
.equals(from)){
response.getWriter().write(JSONArray.fromObject(courseList).toString());
}else{
response.getWriter().write(JSONObject.fromObject(ret).toString());
}
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
privatevoidaddScore(HttpServletRequestrequest,
Integer.p