学生成绩管理系统数据库课程设计报告.docx

上传人:b****8 文档编号:10059345 上传时间:2023-02-08 格式:DOCX 页数:23 大小:456.37KB
下载 相关 举报
学生成绩管理系统数据库课程设计报告.docx_第1页
第1页 / 共23页
学生成绩管理系统数据库课程设计报告.docx_第2页
第2页 / 共23页
学生成绩管理系统数据库课程设计报告.docx_第3页
第3页 / 共23页
学生成绩管理系统数据库课程设计报告.docx_第4页
第4页 / 共23页
学生成绩管理系统数据库课程设计报告.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

学生成绩管理系统数据库课程设计报告.docx

《学生成绩管理系统数据库课程设计报告.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统数据库课程设计报告.docx(23页珍藏版)》请在冰豆网上搜索。

学生成绩管理系统数据库课程设计报告.docx

学生成绩管理系统数据库课程设计报告

 

 

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"%>

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1