资源描述
目录
1 摘要 - 1 -
2 系统开发目标 - 2 -
3 需求分析 - 3 -
3.1总体功效需求 - 3 -
3.2.各版块功效任务 - 5 -
4 数据库设计 - 8 -
4.1.学生基础信息表 - 8 -
4.2.成绩表 - 8 -
4.3.老师基础信息表 - 9 -
4.4.课程信息表 - 9 -
5 系统分析 - 10 -
5.1 系统总体用例图 - 10 -
5.2学生信息用例图 - 10 -
5.3老师信息用例图 - 11 -
6 系统概要设计 - 12 -
6.1 系统HIPO图 - 12 -
6.2系统E-R图 - 14 -
7 系统具体设计 - 14 -
7.1 系统程序步骤图 - 14 -
7.2 用户登录步骤图 - 15 -
7.3用户注册步骤图 - 17 -
7.4学生信息处理步骤图 - 18 -
7.5老师信息处理步骤图 - 18 -
8系统测试 - 19 -
8.1准备阶段 - 19 -
8.2系统测试 - 20 -
使用说明 - 24 -
总结和体会 - 24 -
源代码清单 - 25 -
1 摘要
学生成绩管理系统是一个教育单位不可缺乏部分,它内容对于学校老师、学生和管理者来说全部至关关键。本论文叙述到学生成绩管理系统是用JSP网页编程+SQL查询语言实现。关键介绍了学生成绩管理系统实现过程:包含系统分析、数据库设计、系统功效设计、系统实现、系统测试等。本系统关键功效有老师信息管理、学生信息管理、成绩管理,包含功效需求设计、数据库设计等内容。
现在社会日新月异,发展很快。学校发展也在加紧,老师和学生做为学校最关键管理对象,老师和学生信息管理系统就成了学校信息化管理系统中不可缺乏部分,它内容对于学校组织管理至关关键。但一直以来大家使用传统人工方法进行学生档案管理,这种管理方法存在着很多缺点,如:效率低,轻易犯错,格式不规范。另外时间一长,不轻易进行统计和分析。
伴随科学技术不停提升,计算机科学日渐成熟,其强大功效已为大家深刻认识,它已进入人类社会各个领域并发挥着越来越关键作用。作为计算机应用一部分,使用计算机对学生档案进行管理,含有手工管理所无法比拟优点。比如:检索快速、查找方便、可靠性高、存放量大、寿命长、成本低等。这些优点能够极大地提升学校学生档案管理效率。所以,开发这么一套管理软件成为很有必需事情。而且只要软件设计合理,能够为学校提供合理管理模式。
2 系统开发目标
该系统具体任务就是设计一个学生成绩数据库管理系统,由计算机来替换人工实施一系列诸如对老师、学生信息和学生成绩增加、删除、查询和修改处理操作,以方便对以上信息管理组织工作。
建立学生成绩管理系统,采取计算机对学生成绩进行管理,深入提升办学效益和现代化水平。帮助广大老师提升工作效率,实现学生成绩信息管理工作步骤系统化、规范化和自动化。
3 需求分析
3.1总体功效需求
用户注册
老师注册
1:用户录入学生信息;
2:存放到数据表中。
注意:老师信息不许可反复,判定关键字为老师编号。
学生注册
1:用户录入学生信息;
2:存放到数据表中。
注意:学生信息不许可反复,判定关键字为学号。
系统登录
老师登录
已注册老师能够使用该功效
1:要求用户从键盘输入老师编号和密码;
2:若编号和密码正确显示该老师信息,若不成功则显示登录失败。
学生登录
已注册学生能够使用该功效
1:要求用户从键盘输入学号和密码;
2:若编号和密码正确显示该学生信息,若不成功则显示登录失败。
学生信息操作
增加学生信息
往已经有学生统计添加新学生统计,具体功效为:
1:要求用户从键盘输入一个或多个学生信息;
2:输入完成保留后存放到数据表;
注意:学生纪录不许可反复,判定关键字为学号。
删除学生信息
在已经有学生统计中删除一个或多个学生统计,具体功效为:
1:要求用户输入欲删除学生学号;
2:删除学生统计;
3:更新到数据表中。
查看学生信息
能够查看已经有数据表中学生统计,具体功效为:
1:输入学生学号;
2:若该学生存在,则显示该学生学生信息。
修改学生信息
在已经有学生统计中修改某学生相关信息,具体功效为:
1:要求用户输入欲修改学生学号;
2:显示该学生信息;
3:修改学生信息。
老师信息操作
增加老师信息
往已经有老师统计添加新老师统计,具体功效为:
1:要求用户从键盘输入一个或多个老师信息;
2:输入完成保留后存放到数据。
注意:老师统计不许可反复,判定关键字为老师编号。
删除老师信息
在已经有老师统计中删除一个或多个老师统计,具体功效为:
1:要求用户输入欲删除老师编号;
2:删除老师统计;
3:更新到数据表。
查看老师信息
查看老师统计,具体功效为:
1:输入老师编号;
2:若该老师存在,显示该老师相关信息。
修改老师信息
在已经有老师统计中修改老师统计,具体功效为:
1:要求用户输入欲删除老师编号;
2:删除老师统计;
3:更新到数据表。
成绩操作
老师
1:老师能够对成绩进行录入、修改、查询、删除;
2:老师对成绩进行录入和修改后更新到数据库。
学生
学生能够对成绩进行查询。
3.2.各版块功效任务
3.2.1学生信息处理
3.2.1.1.增加学生统计
业务步骤描述:
1:要求用户从键盘输入一个或多个学生信息;
2:学生统计不许可反复,判定关键字为学号。
业务规则说明:
1:从菜单选择添加学生信息;
2:性别限制男女;
3:学号作为唯一标示符:(1)不能出现反复学号;(2)学号必需是数字组成。
3.1.2.2删除学生统计
业务步骤描述:
1:要求用户输入欲删除学生学号;
2:删除学生统计;
3:更新到数据表。
业务规则说明:
1:给定一个学生学号删除一个学生信息;
2:查看数据表中是否有输入学号学生信息,假如存在则删除该学号学生信息,假如没有重新输入;
3:假如删除成功更新数据表。
3.2.1.3.查看学生统计
业务步骤描述:
1:输入学生学号;
2:若该学生存在,显示该学生相关信息。
业务规则说明:
1:输入学生学号;
2:判定学生是否存在;
3:假如存在显示单个学生,假如不存在提醒不存在,重新输入。
3.2.1.4.修改学生统计
业务步骤描述:
1:要求用户输入欲修改学生学号;
2:判定该学生是否存在于统计中;
3:若学生统计存在,修改学生信息。
业务规则说明:
1:给定一个欲修改学生学号;
2:查看数据表是否有输入学号学生信息,假如存在学生对象,继续下一步,假如没有重新输入。
3:显示该学号学生信息;
4:修改学生信息;
5:修改后将信息更新到数据表中。
3.2.2老师信息处理
3.2.2.1.增加老师统计
业务步骤描述:
1:要求用户从键盘输入一个或多个老师信息;
2:老师统计不许可反复,判定关键字为老师编号。
业务规则说明:
1:从菜单选择添加老师信息;
2:性别限制男女;
3:老师编号作为唯一标示符:(1)不能出现反复老师编号;(2)老师编号必需是数字组成。
3.2.2.2删除老师统计
业务步骤描述:
1:要求用户输入欲删除老师编号;
2:删除老师统计;
3:更新到数据表。
业务规则说明:
1:给定一个老师编号删除一个老师信息;
2:查看数据表中是否有输入老师编号老师信息,假如存在则删除该老师编号老师信息,假如没有重新输入;
3:假如删除成功更新数据表。
3.2.2.3.查看学生统计
业务步骤描述:
1:输入老师编号;
2:若该老师存在,显示该老师相关信息。
业务规则说明:
1:输入老师编号;
2:判定老师是否存在;
3:假如存在显示老师信息,假如不存在提醒不存在,重新输入。
3.2.2.4.修改学生统计
业务步骤描述:
1:要求用户输入欲修改老师编号;
2:判定该老师是否存在于统计中;
3:若老师统计存在,修改老师信息。
业务规则说明:
1:给定一个欲修改老师编号
2:查看数据表是否有输入编号老师信息,假如存在老师对象,继续下一步,假如没有重新输入;
3:显示该老师编号老师信息;
4:修改老师信息;
5:修改后将信息更新到数据库。
4 数据库设计
4.1.学生基础信息表
学生姓名、学生性别、考试分数、表现分、出勤数、教室号、用户名、密码等信息,设计时注意学生编号设为主键,如表4.1所表示:
编号
字段名称
字段类型
说明
1
studentId
varchar(50)
学生编号
2
studentName
varchar(50)
姓名
3
sex
int
性别
4
testscore
int
考试分数
5
prefence
varchar(50)
表现分
6
Attendance
int
出勤数
7
classnumber
varchar(50)
教室号
8
Susername
varchar(50)
用户名
9
Spassword
varchar(50)
密码
表4.1 学生基础信息表
4.2.成绩表
成绩表包含分数、表现分、出勤数、缺勤数、学号,设计时注意学号设为主键,如表4.2所表示:
编号
字段名称
字段类型
说明
1
testscore
int
分数
2
preference
vchar(50)
表现分
3
Attendance
int
出勤数
4
Absenteeism
int
缺勤数
5
classnumber
vchar(50)
学号
表4.2 成绩表
4.3.老师基础信息表
老师基础信息表包含老师编号、老师姓名、用户名、密码等信息,设计时注意老师编号设为主键,设为Int类型,如表4.3所表示:
编号
字段名
数据类型
说明
1
teacherId
Int
老师编号
2
teachername
Varchar(10)
老师姓名
3
Tusername
varchar(50)
用户名
4
Tpassword
varchar(50)
密码
表4.3 老师基础信息表
4.4.课程信息表
课程信息表包含课程编号、课程名、课程分数、学生编号,课程编号设为主键,如表4.3所表示:
编号
字段名称
字段类型
说明
1
CourseId
int
课程编号
2
CourseName
varchar(50)
课程名
3
CourseScore
int
课程分数
4
StudentId
vchar(50)
学生编号
表4.3 课程基础信息表
5 系统分析
5.1 系统总体用例图
本系统包含两类角色:老师和学生。老师能够进行分数表,统计分数和更新分数操作,学生能够查看个人成绩其系统总体用例图图5.1所表示:
图5.1学生成绩管理系统
5.2学生信息用例图
学生信息管理模块包含对学生信息增加、删除、查看、修改,学生信息用例图,图 5.2所表示:
图5.2 学生信息用例图
5.3老师信息用例图
老师信息管理模块包含对老师信息增加、删除、查看、修改,老师信息用例图图5.3所表示:
图5.3 老师信息用例图
6 系统概要设计
6.1 系统HIPO图
HIPO图是美国IBM企业发明“层次图加输入/处理/输出图”英文缩写。依据系统模块层次结构可得到系统HIPO图,本软件HIPO图图6.1所表示。
图6.1 学生成绩管理系统HIPO图
6.2系统E-R图
图6.2系统E-R图
7 系统具体设计
7.1 系统程序步骤图
本系统系统步骤图图7.1所表示:
图7.1学生管理系统系统步骤
7.2 用户登录步骤图
用户登录步骤是:假如管理员存在,则直接输入账号密码,系统判定账号密码是否正确,假如输入不正确,提醒登陆错误。假如输入正确,进入系统。其步骤图图7.2所表示:
图7.2 用户登录步骤图
7.3用户注册步骤图
图7.3用户注册步骤图
7.4学生信息处理步骤图
图7.4 学生信息处理步骤图
7.5老师信息处理步骤图
图7.5 老师信息处理步骤图
8系统测试
8.1准备阶段
1.打开MyEclipse和MySQL,将“学生成绩管理系统.sql”加载到数据库中。
2.连接MyEclipse和MySQL。
8.2系统测试
1.运行index.jsp文件。
2.进入系统主页面,图8.1所表示:
图8.1 系统主页面
3. 单击注册进入注册页面。
3.1老师注册
单击老师注册进入老师注册页面,图8.2所表示:
图8.2 老师注册页面
单击“注册”按钮查看用户注册信息,这就表示用户注册已成功。
3.2学生注册
单击学生注册进入学生注册页面,图8.3所表示:
图8.2 学生注册页面
单击“注册”按钮查看用户注册信息,这就表示用户注册已成功。
4登录
4.1老师登录
返回主页面,单击老师登录进入老师登录界面,填写用户名和密码。
若用户名和密码全部填写正确,单击登录按钮进入老师工作界面,依据提醒内容填写相关信息。
1.在学生基础信息查询下查询学生基础信息,
2.学生成绩管理和信息查询下学生学号栏中输入数据库中学生学号点击“提交”按钮能够查询对应学号学生成绩。
3.在期末最终班级成绩查询下全班课程成绩栏中输入班级编号,点击“成绩查询”按钮,能够对对应4.班级全部学生成绩进行查询。
5.点击班级学生多种信息查询下“全部信息查询”按钮,能够对班级学生全部信息及成绩进行查询。
6.在插入学生成绩信息模块中输入要插入学生成绩信息。
7.在修改学生成绩信息模块中输入要修改学生成绩信。.
8.在删除学生成绩信息模块中输入要删除学生成绩信息。
9.在不及格学生信息查询模块查询不及格学生信息。
10.在课程管理模块对课程进行管理,图所表示:
若登录名和密码填写不正确提醒登录错误。
4.2学生登录
返回主页面,单击学生登录进入学生登录界面,填写用户名和密码;
若用户名和密码填写正确,单击登录按钮,进入学生信息查询界面;
若用户名和密码填写不正确则提醒登陆错误。
使用说明
1.运行程序,首先出现主界面。主界面包含三个选项:选项一:注册,选择该项可进行老师注册和学生注册。选择老师注册选项能够进行新老师注册,选择学生注册选项可进行学生注册;选项二:学生登录,选择该项可进行学生登录;选项三:老师登录,选择该选项能够进行老师登录。
2.老师登录界面。在老师登录界面输入正确老师编号及密码登录后进入老师工作界面,老师工作界面包含七个模块。模块一:学生基础信息查询,在此模块能够对学生姓名、成绩、所在班级、平时表现等进行查询。模块二:学生成绩管理和信息查询,在此模块能够查询学生成绩信息。模块三:期末最终班级成绩查询,在此模块能够对班级全部学生成绩进行查询。模块四,班级学生多种信息查询,在此模块能够对班级全部学生个人信息和成绩进行查询。模块五,插入学生成绩信息模块,在此模块能够插入学生成绩信息。模块六,修改学生成绩信息模块,在此模块能够插修改学生成绩信息。模块七,删除学生成绩信息模块,在此模块能够删除学生成绩信息。若输入老师编号及密码不正确提醒登录错误。
3. 学生登录界面。在教学生登录界面输入正确学生学号及密码登录后进入学生成绩信息管理界面。若输入学生学号及密码不正确提醒登录错误。
总结和体会
此次课程设计综合考察了我们对Java程序设计知识掌握熟练程度和实际利用能力。其间,包含到了Java 中绝大多数知识点,如Java图形用户界面设计、Java异常处理机制、Java中多线程程序设计、Java输入输出流等。程序实现关键在于功效合理划分和各个包或类之间通讯问题,只要分析清楚这两点,剩下就是按部就班写代码了。所以设计是关键。所以一定要最初设计是做到有条不紊,为以后代码编写打下基础。
不过因为个人水平有限,造成该系统还有很多不尽人意地方,比方说界面不够美观,布局不够条理等,实现功效还不够强大、完全和实用,仍然存在着很多漏洞。我们将不停改善系统不足之处,完善系统功效,使之能愈加好地实现Web应用。我也将从这次毕业设计中总结经验,学习规范化软件开发步骤,形成良好开发习惯,为以后软件开发打下更坚实基础.
源代码清单
1.注册
注册
public class registerAction extends ActionSupport{
private static final long serialVersionUID = 1L;
public String execute() throws Exception{
return SUCCESS;
}
public String teacher()
{
return "teacher";
}
public String student()
{
return "student";
}
}
学生注册
public class StudentRegisterAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private StudentBean student;
private StudentDao dao=new StudentDao();
public StudentBean getStudent() {
return student;
}
public void setStudent(StudentBean student) {
this.student = student;
}
public String execute() throws Exception
{
System.out.println(student.getAbsenteeism()+" "+student.getAttendance()+" "+student.getClassnumber()+" "+student.getPreference()+" "+student.getSex()+" "+student.getSpassword()+" "+student.getStudentId()+" "+student.getStudentName()+" "+student.getSusername()+" "+student.getClass()+" "+student.getTestscore());
dao.insert(student.getStudentId(), student.getStudentName(), student.getSex(), student.getTestscore(),student.getPreference(),student.getAttendance(), student.getAbsenteeism(), student.getClassnumber(),student.getSusername(), student.getSpassword());
return SUCCESS;
}
}
老师注册
public class TeacherRegisterAction extends ActionSupport {
private static final long serialVersionUID = 1L;
public TeacherRegisterAction(){
dao=new TeacherDao();
}
private teacherBean teacher;
private TeacherDao dao;
public teacherBean getTeacher() {
return teacher;
}
public void setTeacher(teacherBean teacher) {
this.teacher = teacher;
}
//List <studentBean>list;用于数组遍历时候出现list进行处理。
public static long getSerialversionuid() {
return serialVersionUID;
}
public String execute() throws Exception
{
System.out.println(teacher.getSex()+" "+teacher.getTeacherId()+" "+teacher.getTeachername()+" "+teacher.getTpassword()+" "+teacher.getTusername());
dao.insert(teacher.getTeacherId(), teacher.getTeachername(), teacher.getSex(), teacher.getTusername(), teacher.getTpassword());
return SUCCESS;
}
}
2.登录
学生登录
public class StudentLoginAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private String username;
public String execute() throws Exception{
return SUCCESS;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
public class StudentLoginAction2 extends ActionSupport{
private static final long serialVersionUID = 1L;
private StudentBean student;
private StudentDao dao=new StudentDao();
public StudentBean getStudent() {
return student;
}
public void setStudent(StudentBean student) {
this.student = student;
}
public String execute() throws Exception{
if(dao.query2(student.getSusername(), student.getSpassword()))
return SUCCESS;
else
return "null";
}
}
老师登录
public class TeacherLoginAction extends ActionSupport{
private String Tusername;
private String Tpassword;
private static final long serialVersionUID = 1L;
public String getTusername() {
return Tusername;
}
public void setTusername(String tusername) {
Tusername = tusername;
}
public String getTpassword() {
return Tpassword;
}
public void setTpassword(String tpassword) {
Tpassword = tpassword;
}
public String execute() throws Exception
{
return SUCCESS;
}
public String LoginSuccess()
{
return "LoginSuccess";
}
}
public class StudentLoginAction2 extends ActionSupport{
private static final long serialVersionUID = 1L;
private StudentBean student;
private StudentDao dao=new StudentDao();
public StudentBean getStudent() {
return student;
}
public void setStudent(StudentBean student) {
this.student = student;
}
public String execute() throws Exception{
if(dao.query2(student.getSusername(), student.getSpassword()))
return SUCCESS;
else
return "null";
}
}
public class StudentRegisterAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private StudentBean student;
private StudentDao dao=new StudentDao();
public StudentBean getStudent() {
return student;
}
public void setStudent(StudentBean student) {
this.student = student;
}
public String execute() throws Exception
{
System.out.println(student.getAbsenteeism()+" "+student.getAttendance()+" "+student.getClassnumber()+" "+student.getPreference()+" "+student.getSex()+" "+student.getSpassword()+" "+student.getStudentId()+" "+student.getStudentName()+" "+student.getSusername()+" "+student.getClass()+" "+student.getTestscore());
dao.insert(student.getStudentId(), student.getStudentName(), student.getSex(), student.getTestscore(),student.getPreference(),student.getAttendance(), student.getAbsenteeism(), student.getClassnumber(),student.getSusername(), student.getSpassword());
return SUCCESS;
}
}
3. 成绩管理
增加学生成绩
public class insertstudentscoreAction extends ActionSupport{
private ScoretablesBean stu;
private StudentDao dao=new StudentDao();
public ScoretablesBean getStu() {
return stu;
}
public void setStu(ScoretablesBean stu) {
this.stu = stu;
}
public String execute() throws Exception, SQLException
{
System.out.println("insert socre 1");
dao.insertScore(stu.getId(),stu.getCourseId(), stu.getCourseName(), stu.getCourseScore(), stu.getStudentId());
System.out.println("insert score success");
return SUCCESS;
}
}
删除学生成绩
public class deletestudentscore extends ActionSupport {
private ScoretablesBean stu;
private StudentDao dao=new StudentDao();
public ScoretablesBean getStu() {
return stu;
}
public void setStu(ScoretablesBean stu) {
this.stu = stu;
}
public String execute() throws Exception, SQLException
{
dao.deletestudentscore(stu.getId(),stu.getCourseId(),stu.getCourseName(),stu.getCourseScore(),stu.getStudentId());
return SUCCESS;
}
}
更新学生成绩
public class updatestudentscore extends ActionSupport{
private ScoretablesBean stu;
private StudentDao dao=new StudentDao();
public ScoretablesBean getStu() {
return stu;
}
public void setStu(ScoretablesBean stu) {
this.stu = stu;
}
public String execute() throws ClassNotFoundException, IOException, SQLException
{
dao.updatestudentscore(stu.getId(),stu.getCourseId(),stu.getCourseName(),stu.getCourseScore(),stu.getStudentId());
return SUCCESS;
}
}
学生成绩设置
public class StudentScoreManage extends ActionSupport{
private static final long serialVersionUID = 1L;
private StudentBean stu;
private List<ScoretablesBean> list;
private StudentDao dao=new StudentDao();
public StudentBean getStu() {
return stu;
}
public void setStu(StudentBean stu) {
this.stu = stu;
}
public List<ScoretablesBean> getList() {
return list;
}
public void setList(List<ScoretablesBean> list) {
this.list = list;
}
public String execute() throws Exception, SQLException
{
System.out.print("liujia");
list=dao.query3(stu.getStudentId());
System.out.println("123");
return SUCCESS;
}
}
4.信息查询
查询学生信息
public class StudentInformationSearch extends ActionSupport{
private static final long serialVersionUID = 1L;
private StudentBean stu2;
private StudentBean stu;
private StudentDao stuDao=new StudentDao();
private List<StudentBean> list;
public StudentBean getStu() {
return stu;
}//注意在Action中关键是将Bean、DAO中功效进行组合,实现相关功效扩展。
public void setStu(StudentBean stu) {
this.stu = stu;
}
public StudentBean getStu2() {
return stu2;
}
public void setStu2(StudentBean stu2) {
this.stu2 = stu2;
}
public String execute() throws Exception
{
stu2=stuDao.query(stu.getStudentId());
return SUCCESS;
}
public sta
展开阅读全文