目录
系统功能需求 11
2、概念结构设计 14
全局 E-R 图 16
3、逻辑结构设计 18
数据类型定义 19
4、物理结构设计 21
索引设计 21
5、数据库实施 21
视图的建立 29
触发器建立 34
6、应用系统开发与试运行 37
前台界面与后台数据库连接说明,代码实现。 37
7、实验总结 77
系统设计的不足 78
1.2系统功能需求
图 1.5 成绩管理系统 UML 图
成绩管理主要是教务处对教师、对课程、对学生成绩管理,以便于教师,学生能够随时对学生成绩进行各种查询。
他服务的对象不同,提供的功能也不同。
(1)高权限教师(系统管理员)
图 1.6 系统管理员功能模块图
1.学生信息管理:按学好可以查找到学生的详细信息,并可以添加、删除、修改学生信息
2.教师信息管理:教师以学院为单位划分,可按学院,按教师名,教师号等方式查看教师信息,并由添加,删除、修改教师信息的功能。
3.课程管理:可以按课程编号查看课程的详细信息,可以添加,删除修改开课记录。
4.班级开课管理,以班级为单位,根据班级进行开课管理
5.成绩管理:按学号可以查找学生的全部成绩信息。可以查看该学生的成绩但没有修改成绩功能。成绩录入应由相应老师完成。
6.学院信息管理,查看,添加,修改,删除学院信息。
7.专业信息管理,查看,添加,修改,删除专业信息。
8.班级信息管理,查看,添加,修改,删除班级信息。
(2)普通教师
教师登录后可以修改自己的教师信息,可以修改登录密码,以班级为单位查询学生的课程信息,以班级为单位录入成绩。可以查看任课情况。
图 1.7 教师功能模块图
1.成绩录入模块:根据教师编号,上课学期,查询所有开课记录,以及开课记录对应班级的所有学生,对每个学生的该科成绩进行录入修改。
2.成绩查询模块:教师只能查询自己教授的课程的所有同学的成绩。可获得不及格学生名单。课程的平均成绩。
3.教师任课情况查询:自动获得教师的所有任课情况, 包括课程名称, 班级名称,平均成绩。
(3)学生
学生登陆后可以修改自己的信息,可以修改登陆密码;查看全部已考科目的成绩,查看本学期成绩以及不及格科目成绩,查看本学期或学年的班级以及年级名次,以及班级课表、已修学分、总平均绩点、专业教学计划查询等查询。
图 1.8 学生功能模块图
1.成绩查询:
a)学生成绩查询:按学期(学年)查询,获得该学期(学年)成绩单, 平均绩点,不及格科目,班级排名,年级排名。
b)课程平均成绩查询:按班级、学期(学年)查询,获得该学期(学年) 各个课程的平均成绩。
2. 课程查询:
a)班级课程开课查询:根据学期查询,上课科目,任课教师
b)学生教学计划查询:专业教学计划,已修学分,平均绩点。(毕业最低学分,毕业最低绩点)已修科目各科成绩。
1.3其他性能需求
该系统应支持多用户同时对数据库进行访问,即支持并发。
实现方法主要是通过 java 数据源进行数据库连接,并且 Servlet 编程自带多线程可以支持并发,以此来提升响应速度。
当然响应时间越短越好,但考虑到服务器成本问题,实际响应时间不需要很段,因为也没有必要,在数据访问高峰期,如期末考后,则应该增强服务器的性能。本文转载自http://www.biyezuopin.vip/onews.asp?id=15597
因此,数据库服务器性能最好能动态变化。因此需要在统计高峰期后做好高并发准备。
package com.example.final_database.controller;
import com.example.final_database.dao.loginDao;
import com.example.final_database.model.Student;
import com.example.final_database.model.Teacher;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet(name = "loginServlet", value = "/loginServlet")
public class loginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8"); //1
response.setContentType("text/html;charset=utf-8"); //2
response.setCharacterEncoding("utf-8"); //3
String kind =request.getParameter("kind");
String username = request.getParameter("username");
String password = request.getParameter("password");
HttpSession session=request.getSession();
String message=null;
RequestDispatcher dispatcher=null;
loginDao userdao=new loginDao();
if(kind.equals("student")){
Student user=userdao.StudentLogin(username,password);
if(user==null){
message="用户名或密码错误";
dispatcher=request.getRequestDispatcher("./VIEW/index.jsp");
}
else{
message="登录成功!欢迎!";
session.setAttribute("user",user);
dispatcher=request.getRequestDispatcher("./VIEW/student.jsp");
}
session.setAttribute("message",message);
session.setAttribute("kind","学生");
dispatcher.forward(request,response);
}
else if(kind.equals("teacher")){
Teacher user=userdao.TeacherLogin(username,password);
if(user==null){
message="用户名或密码错误";
dispatcher=request.getRequestDispatcher("./VIEW/index.jsp");
}
else{
message="登录成功!欢迎!";
session.setAttribute("user",user);
if(user.getTauthority()<2) {
dispatcher = request.getRequestDispatcher("./VIEW/teacher.jsp");
}
else{
dispatcher = request.getRequestDispatcher("./VIEW/admin.jsp");
}
}
session.setAttribute("message",message);
session.setAttribute("kind","老师");
dispatcher.forward(request,response);
}
}
}