学生成绩管理系统数据库课程设计报告.docx
- 文档编号:10059345
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:23
- 大小:456.37KB
学生成绩管理系统数据库课程设计报告.docx
《学生成绩管理系统数据库课程设计报告.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统数据库课程设计报告.docx(23页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统数据库课程设计报告
1、开发背景
90年代中期,由于Internet的迅速普及,使Intranet成为Internet技术在企业管理信息系统中的应用和延伸,形成了集计算机,计算机网络、数据库、分布式计算等于一体的信息技术综合体,它打破了时间和地域的界限,使信息交流变得快捷、准确,为建立现代企业管理信息系统提供了充足的条件。
企业信息管理系统在此基础上延伸、扩展,使之上下、内外全面贯通。
随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。
在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构。
B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript…)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。
随着Windows98/Windows2000将浏览器技术植入操作系统内部,这种结构更成为当今应用软件的首选体系结构。
显然B/S结构应用程序相对于传统的C/S结构应用程序将是巨大的进步。
2、系统描述
经过调研及分析讨论,学生成绩管理系统主要完成以下功能:
(1)学生个人信息维护:
主要是完成学生个人信息的检索、修改,学生用户只能对自己的信息操作。
(2)学生成绩检索:
主要是完成学生个人成绩的查询,学生用户只能对自己的成绩进行检索。
(3)老师个人信息维护:
主要是完成老师个人信息的检索、修改,老师用户只能对自己的信息操作。
(4)学生成绩维护:
主要是完成老师对任课课程的学生成绩进行检索、添加、修改,老师用户只能对自己任课课程的成绩进行操作。
(5)学生信息维护:
主要是完成管理员对所有学生信息的维护,包括条件检索、添加、修改、删除,该功能只能由管理员完成。
(6)老师信息维护:
主要是完成管理员对所有老师信息的维护,包括条件检索、添加、修改、删除,该功能只能由管理员完成。
(7)课程信息维护:
主要是完成管理员对课程的管理,包括检索课程,添加课程以及该课程任课老师和学习的学生。
3、数据分析
3.1、数据流图
通过需求分析,得出学生成绩管理系统的教师业务处理数据流如图1所示。
图1教师业务数据流图
3.2、数据字典
(1)数据流的描述
数据流编号:
D01
数据流名称:
用户名和密码
简述:
教师输入用户名和密码验证
数据流来源:
教师
数据流去向:
P01教师信息判断
数据流组成:
用户名和密码
数据流量:
50/天
高峰流量:
50/天
(2)处理逻辑的描述
处理逻辑编号:
P01
处理逻辑名称:
教师登录权限判断
简述:
判断教师登录权限的合法性
输入的数据流:
教师的用户名和密码
处理描述:
根据教师提供的同户名和密码,验证教师信息,验证通过则进入主页面,验证不通过则返回给教师信息指明为非法用户。
处理频率:
50次/天
处理逻辑编号:
P02
处理逻辑名称:
教师个人信息查询
简述:
查询并显示教师个人基本信息
处理描述:
根据session传出的教师ID在数据库中查找出该教师的个人基本信息,打印到该页面。
处理频率:
50次/天
处理逻辑编号:
P03
处理逻辑名称:
教师任课课程学生成绩查询
简述:
查询并显示教师任课课程的学生成绩
处理描述:
根据session传出的教师ID,然后再在数据库中跨表查询出该教师的任课科目的所有学生成绩,打印到该页面。
处理频率:
50次/天
处理逻辑编号:
P04
处理逻辑名称:
验证用户当前密码,提供修改密码权限
简述:
教师可以通过该页面修改自己的账号的登录密码。
处理描述:
从数据库中查询出该教师的当前密码并比较输入的当前密码,比较两次输入的新密码。
处理频率:
10次/天
处理逻辑编号:
P05
处理逻辑名称:
教师修改个人信息
简述:
教师修改个人的基本信息
处理描述:
根据session传出的教师ID在数据库中查找出该教师的个人基本信息,打印到该页面,同时提供了几项可以修改的选项,教师可以并保持,正确提交后,将修改的信息提交到数据库中。
处理频率:
10次/天
处理逻辑编号:
P06
处理逻辑名称:
录入学生成绩
简述:
录入该教师任课课程的学生成绩
处理描述:
从数据库中查出该教师任课课程的所有学生,并录入学生的平时成绩和考试成绩,根据一定的算法得出学生的最后成绩,并保存到数据库中。
处理频率:
10次/天
处理逻辑编号:
P07
处理逻辑名称:
修改该教师任课课程的学生成绩
简述:
查询并显示学生的成绩,提供修改权限
处理描述:
查询出已经录入成绩的学生的成绩,允许教师修改学生的成绩,提交后保存到数据库。
处理频率:
10次/天
处理逻辑编号:
P08
处理逻辑名称:
修改教师用户登录密码
简述:
验证教师用户当前密码,提供修改密码的权限
处理描述:
验证当前密码和新密码的合法性,合法则提交到数据库,非法则跳到p04。
处理频率:
10次/天
处理逻辑编号:
P09
处理逻辑名称:
推出系统
简述:
教师用户退出系统
处理描述:
教师用户安全退出系统,跳转到登录页面。
处理频率:
50次/天
(3)数据存储的描述
数据存储编号:
F01
数据存储名称:
教师用户验证信息
简述:
教师用户的用户名和密码
数据存储组成:
用户名+用户类型+密码+用户ID
关键字:
用户ID
相关联的处理:
P01、P04
数据存储编号:
F02
数据存储名称:
教师个人基本信息
简述:
查询出教师用户的基本个人信息
数据存储组成:
教师姓名+年龄+教师ID+教师密码+教师籍贯+教师电话号码+教师地址+教师性别+教师照片
关键字:
教师ID
相关联的处理:
P02、P05
数据存储编号:
F03
数据存储名称:
读取学生成绩
简述:
查询该教师任课课程的学生成绩
数据存储组成:
学生姓名+课程名称+学生成绩
关键字:
教师ID+学生ID
相关联的处理:
P03
数据存储编号:
F04
数据存储名称:
存储修改的信息
简述:
存储修改的信息
数据存储组成:
包括学生成绩块+用户密码块+用户个人信息块
关键字:
教师ID+学生ID
相关联的处理:
P04、P05、P06、P07、P08
(4)外部实体的描述
外部实体编号:
S01
外部实体名称:
教师用户
简述:
登录系统的教师用户
输入的数据流:
D002
输出的数据流:
D001
4、概念模型设计
4.1E-R图
图2系统E-R图
5.逻辑模型设计及优化
5.1数据库表:
表1学生个人信息表(student_info表)
字段名
数据类型
长度
备注
stud_id
varchar2
30
primarykey
stud_name
varchar2
20
person_id
varchar2
30
stud_password
varchar2
20
stud_age
number
4
stud_sex
varchar2
4
stud_tel
varchar2
30
major
varchar2
20
grade
varchar2
20
classes
varchar2
20
stud_photo
varchar2
30
stud_origin
varchar2
50
表2学生成绩表(student_score表)
字段名
数据类型
长度
备注
stud_id
varchar2
30
primarykey
course_id
number
4
primarykey
score
number
4
表3课程表(course表)
字段名
数据类型
长度
备注
course_id
number
4
primarykey
course_name
varchar2
30
teacher_id
varchar2
20
primarykey
course_level
number
4
表4教师个人信息表(teacher_info表)
字段名
数据类型
长度
备注
teacher_id
varchar2
20
primarykey
teacher_name
varchar2
20
teacher_password
varchar2
20
course_id
number
4
teacher_add
varchar2
50
teacher_origin
varchar2
20
teacher_tel
varchar2
30
professional
varchar2
10
teacher_age
number
4
teacher_sex
varchar2
4
teacher_photo
varchar2
20
6、应用程序设计
图3系统登录界面
图4教师用户主页面
图5教师个人信息页面
图6修改学生成绩页面
7、课程设计心得体会
本次数据库课程设计收获很大,当然也花了好多的心思和时间,首先,我们为团队合作,共同开发这个项目,团队意识真的很重要,我们就在团队合作上出了些小问题,经过交流得到了解决,问题导致了我们的项目完成时间的推迟,这让我们意识到团队的合作是很不容易的,首先是对项目的认识必须统一,当我们对项目的需求没有统一理解时,这将为失败埋下伏笔,这样注定失败,至少是在代码组合时无法兼容,更严重可能会要全部返工。
团队合作的第二个重点是:
合理分工,合理的分工能让项目完成的更快更好,合作更加的愉快,不合理的分工会导致大家的心态不一,出现分歧,出现问题,出了问题就无法继续项目的开发了。
我们本次分工上也出现了一些问题,主要原因是团队每个人技术特长不一,最后还是进行了合理的安排。
完成了项目的基本功能。
在实际开发的过程中给了我很多的实践经验,课程设计跟平时的理论课程有很大的区别,就是动手能力要求高,同时也提高我们的动手能力,课堂上的理论,我们通过项目得到了实际的应用。
当然也发现了很多自己以前未能发现的知识上的不知,实践是检验真理的唯一标准,也是检验自己知识掌握程度的机会,在动手编码的过程中,我发现了很多数据库知识上的缺陷,也发现了自己编码的不良之处,通过和同学老师的交流得到了改正,并收获了很多的实践经验。
参考文献
[1]钱雪忠.数据库原理及应用(第二版).北京邮电大学出版社.2004
[2]钱雪忠.数据库原理及应用实验指导(第二版).北京邮电大学出版社.2004
[3]李刚.疯狂Java讲义.电子工业出版社.2008
附录:
JDBC数据库连接源代码
packagecom.hnwl.util;
importjava.sql.*;
publicclassDBconn{
//定义驱动名
publicstaticStringdrivername="oracle.jdbc.OracleDriver";
//定义url
publicstaticStringurl="jdbc:
oracle:
thin:
@localhost:
1521/oracle10";
//定义连接数据库的用户名
publicstaticStringuser="student";
//定义连接数据库的用户密码
publicstaticStringpassword="student";
publicstaticConnectionGetDBConnection()
{
Connectionconn=null;
try{
Class.forName(drivername);
try{
conn=DriverManager.getConnection(url,user,password);
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
System.out.println("数据库连接异常!
");
}
}catch(ClassNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
System.out.println("驱动加载异常!
");
}
returnconn;
}
publicstaticvoidCloseAll(ResultSetrs,Statementstat,Connectionconn)
{
if(rs!
=null)
try{
rs.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
if(stat!
=null)
try{
stat.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
if(conn!
=null)
try{
conn.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
封装成绩类源代码
packagecom.hnwl.beans;
publicclassClassScore{
Stringstud_id;
Stringstud_name;
Stringcourse_name;
Stringscore;
publicClassScore(StringstudId,StringstudName,StringcourseName,
Stringscore){
super();
stud_id=studId;
stud_name=studName;
course_name=courseName;
this.score=score;
}
publicStringgetStud_id(){
returnstud_id;
}
publicvoidsetStud_id(StringstudId){
stud_id=studId;
}
publicStringgetStud_name(){
returnstud_name;
}
publicvoidsetStud_name(StringstudName){
stud_name=studName;
}
publicStringgetCourse_name(){
returncourse_name;
}
publicvoidsetCourse_name(StringcourseName){
course_name=courseName;
}
publicStringgetScore(){
returnscore;
}
publicvoidsetScore(Stringscore){
this.score=score;
}
}
Servlet逻辑层判断密码
packagecom.hnwl.servlet;
importjava.io.IOException;
importjava.io.PrintWriter;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.http.HttpSession;
importcom.hnwl.biz.login;
publicclassUserLoginextendsHttpServlet{
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
request.getParameter("gbk");
Stringid=request.getParameter("id");
Stringpassword=request.getParameter("password");
Stringuser_type=request.getParameter("user_type");
Stringusername="";
response.setContentType("text/html;charset=gbk");
PrintWriterout=response.getWriter();
out
.println("
DOCTYPEHTMLPUBLIC\"-//W3C//DTDHTML4.01Transitional//EN\">");
out.println("");
out.println("
out.println("
if(user_type.equals("student"))
{
loginstudent=newlogin();
username=student.stud_login(id,password);
if(username!
=null)
{
HttpSessionsession=request.getSession();
session.setAttribute("stud_name",username);
session.setAttribute("stud_id",id);
response.sendRedirect("StudentMenu.jsp");
}
else
{
out.println("账号或密码有误!
");
response.setHeader("refresh","2;URL=login.html");
out.println("
两秒后自动跳转到登陆窗口!
!
!
");
out.println("如果没有跳转,请按
!
!
");
}
}
elseif(user_type.equals("teacher"))
{
loginteacher=newlogin();
username=teacher.teacher_login(id,password);
if(username!
=null)
{
HttpSessionsession=request.getSession();
session.setAttribute("teacher_name",username);
session.setAttribute("teacher_id",id);
response.sendRedirect("TeacherMenu.jsp");
}
else
{
out.println("账号或密码有误!
");
response.setHeader("refresh","2;URL=login.html");
out.println("
两秒后自动跳转到登陆窗口!
!
!
");
out.println("如果没有跳转,请按
!
!
");
}
}
else
{
if(id.equals("admin")||password.equals("admin")||user_type.equals("admin"))
{
HttpSessionsession=request.getSession();
session.setAttribute("admin_name",id);
response.sendRedirect("AdminMenu.jsp");
}
else
{
out.println("账号或密码有误!
");
response.setHeader("refresh","2;URL=login.html");
out.println("
两秒后自动跳转到登陆窗口!
!
!
");
out.println("如果没有跳转,请按
!
!
");
}
}
}
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doPost(request,response);
}
}
Jsp前台页面源代码
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
<%@pageimport="com.hnwl.biz.Research"%>
<%@pageimport="com.hnwl.beans.Student"%>
<%@pageimport="com.hnwl.biz.TeacherDBControl"%>
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 数据库 课程设计 报告