2022年Java__oracle数据库课程设计学生成绩管理系统 .pdf
数据库程序设计课程设计报告课题: 学生成绩管理系统姓名: * * * 学号: * * * 同组姓名 : * 、* 专业班级 : 软工 09012 指导教师 : 设计时间 : 2012 年 6 月评阅意见:评定成绩:指导老师签名:年月日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 21 页 - - - - - - - - - 目录1、开发背景 . 32、系统描述 . 33、数据分析 . 43.1、数据流图 . 43.2、数据字典 . 44、概念模型设计 . 94.1E-R 图 . 95. 逻辑模型设计及优化 . 105.1数据库表: . 106、应用程序设计 . 127、课程设计心得体会. 14名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 21 页 - - - - - - - - - 1、开发背景90 年代中期,由于 Internet 的迅速普及,使 Intranet 成为 Internet 技术在企业管理信息系统中的应用和延伸,形成了集计算机,计算机网络、数据库、分布式计算等于一体的信息技术综合体,它打破了时间和地域的界限,使信息交流变得快捷、准确,为建立现代企业管理信息系统提供了充足的条件。企业信息管理系统在此基础上延伸、扩展,使之上下、内外全面贯通。随着 Internet技术的兴起,对C/S 结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW 浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier 结构。 B/S 结构,主要是利用了不断成熟的WWW 浏览器技术,结合浏览器的多种Script语言 (VBScript、JavaScript)和 ActiveX 技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。随着 Windows 98/Windows 2000 将浏览器技术植入操作系统内部,这种结构更成为当今应用软件的首选体系结构。显然B/S 结构应用程序相对于传统的C/S 结构应用程序将是巨大的进步。2、系统描述经过调研及分析讨论,学生成绩管理系统主要完成以下功能:(1)学生个人信息维护:主要是完成学生个人信息的检索、修改,学生用户只能对自己的信息操作。(2)学生成绩检索:主要是完成学生个人成绩的查询,学生用户只能对自己的成绩进行检索。(3)老师个人信息维护:主要是完成老师个人信息的检索、修改,老师用户只能对自己的信息操作。(4)学生成绩维护:主要是完成老师对任课课程的学生成绩进行检索、添加、修改,老师用户只能对自己任课课程的成绩进行操作。(5)学生信息维护: 主要是完成管理员对所有学生信息的维护,包括条件检索、 添加、修改、删除,该功能只能由管理员完成。(6)老师信息维护: 主要是完成管理员对所有老师信息的维护,包括条件检索、 添加、修改、删除,该功能只能由管理员完成。(7)课程信息维护:主要是完成管理员对课程的管理,包括检索课程,添加课程以及该课程任课老师和学习的学生。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 21 页 - - - - - - - - - 3、数据分析3.1、数据流图通过需求分析,得出学生成绩管理系统的教师业务处理数据流如图1 所示。图 1 教师业务数据流图3.2、数据字典(1)数据流的描述数据流编号:D01 数据流名称:用户名和密码名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 21 页 - - - - - - - - - 简述:教师输入用户名和密码验证数据流来源:教师数据流去向: P01 教师信息判断数据流组成:用户名和密码数据流量: 50/天高峰流量: 50/天(2)处理逻辑的描述处理逻辑编号:P01 处理逻辑名称:教师登录权限判断简述:判断教师登录权限的合法性输入的数据流:教师的用户名和密码处理描述:根据教师提供的同户名和密码,验证教师信息,验证通过则进入主页面,验证不通过则返回给教师信息指明为非法用户。处理频率:50 次/天处理逻辑编号:P02 处理逻辑名称:教师个人信息查询简述:查询并显示教师个人基本信息处理描述:根据session传出的教师ID 在数据库中查找出该教师的个人基本信息,打印到该页面。处理频率:50 次/天处理逻辑编号:P03 处理逻辑名称:教师任课课程学生成绩查询简述:查询并显示教师任课课程的学生成绩处理描述: 根据 session 传出的教师ID ,然后再在数据库中跨表查询出该教师的任课科目的所有学生成绩,打印到该页面。处理频率:50 次/天名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 21 页 - - - - - - - - - 处理逻辑编号:P04 处理逻辑名称:验证用户当前密码,提供修改密码权限简述:教师可以通过该页面修改自己的账号的登录密码。处理描述:从数据库中查询出该教师的当前密码并比较输入的当前密码,比较两次输入的新密码。处理频率:10 次/天处理逻辑编号:P05 处理逻辑名称:教师修改个人信息简述:教师修改个人的基本信息处理描述:根据session传出的教师ID 在数据库中查找出该教师的个人基本信息,打印到该页面,同时提供了几项可以修改的选项,教师可以并保持,正确提交后,将修改的信息提交到数据库中。处理频率:10 次/天处理逻辑编号:P06 处理逻辑名称:录入学生成绩简述:录入该教师任课课程的学生成绩处理描述:从数据库中查出该教师任课课程的所有学生,并录入学生的平时成绩和考试成绩,根据一定的算法得出学生的最后成绩,并保存到数据库中。处理频率:10 次/天处理逻辑编号:P07 处理逻辑名称:修改该教师任课课程的学生成绩简述:查询并显示学生的成绩,提供修改权限处理描述:查询出已经录入成绩的学生的成绩,允许教师修改学生的成绩,提交后保存到数据库。处理频率:10 次/天处理逻辑编号:P08 处理逻辑名称:修改教师用户登录密码名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 21 页 - - - - - - - - - 简述:验证教师用户当前密码,提供修改密码的权限处理描述:验证当前密码和新密码的合法性,合法则提交到数据库,非法则跳到p04。处理频率:10 次/天处理逻辑编号:P09 处理逻辑名称:推出系统简述:教师用户退出系统处理描述:教师用户安全退出系统,跳转到登录页面。处理频率:50 次/天(3)数据存储的描述数据存储编号:F01 数据存储名称:教师用户验证信息简述:教师用户的用户名和密码数据存储组成:用户名+用户类型 +密码 +用户 ID 关键字:用户ID 相关联的处理:P01、 P04 数据存储编号:F02 数据存储名称:教师个人基本信息简述:查询出教师用户的基本个人信息数据存储组成: 教师姓名 +年龄 +教师 ID+ 教师密码 +教师籍贯 +教师电话号码 +教师地址 +教师性别+教师照片关键字:教师ID 相关联的处理:P02、 P05 数据存储编号:F03 数据存储名称:读取学生成绩简述:查询该教师任课课程的学生成绩数据存储组成:学生姓名 +课程名称 +学生成绩名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 21 页 - - - - - - - - - 关键字:教师ID+ 学生 ID 相关联的处理:P03 数据存储编号:F04 数据存储名称:存储修改的信息简述:存储修改的信息数据存储组成:包括学生成绩块+用户密码块 +用户个人信息块关键字:教师ID+ 学生 ID 相关联的处理:P04、 P05、 P06、 P07、P08 (4)外部实体的描述外部实体编号:S01 外部实体名称:教师用户简述:登录系统的教师用户输入的数据流:D002 输出的数据流:D001 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 21 页 - - - - - - - - - 4、概念模型设计4.1E-R 图图 2 系统 E-R 图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 21 页 - - - - - - - - - 5. 逻辑模型设计及优化5.1 数据库表:表 1 学生个人信息表(student_info 表)字段名数据类型长度备注stud_idvarchar2 30 primary key stud_namevarchar2 20 person_idvarchar2 30 stud_passwordvarchar2 20 stud_agenumber 4 stud_sexvarchar2 4 stud_tel varchar2 30 majorvarchar2 20 gradevarchar2 20 classes varchar2 20 stud_photo varchar2 30 stud_origin varchar2 50 表 2 学生成绩表(student_score 表)字段名数据类型长度备注stud_idvarchar2 30 primary key course_idnumber 4 primary key scorenumber 4 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 21 页 - - - - - - - - - 表 3 课程表( course 表)字段名数据类型长度备注course_idnumber 4 primary key course_namevarchar2 30 teacher_idvarchar2 20 primary key course_levelnumber 4 表 4 教师个人信息表(teacher_info 表)字段名数据类型长度备注teacher_idvarchar2 20 primary key teacher_namevarchar2 20 teacher_passwordvarchar2 20 course_idnumber 4 teacher_addvarchar2 50 teacher_originvarchar2 20 teacher_tel varchar2 30 professionalvarchar2 10 teacher_agenumber 4 teacher_sex varchar2 4 teacher_photo varchar2 20 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 21 页 - - - - - - - - - 6、应用程序设计图 3 系统登录界面图 4 教师用户主页面名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 21 页 - - - - - - - - - 图 5 教师个人信息页面图 6 修改学生成绩页面名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 21 页 - - - - - - - - - 7、课程设计心得体会本次数据库课程设计收获很大,当然也花了好多的心思和时间,首先,我们为团队合作,共同开发这个项目,团队意识真的很重要,我们就在团队合作上出了些小问题,经过交流得到了解决,问题导致了我们的项目完成时间的推迟,这让我们意识到团队的合作是很不容易的,首先是对项目的认识必须统一,当我们对项目的需求没有统一理解时,这将为失败埋下伏笔,这样注定失败,至少是在代码组合时无法兼容,更严重可能会要全部返工。团队合作的第二个重点是:合理分工,合理的分工能让项目完成的更快更好,合作更加的愉快,不合理的分工会导致大家的心态不一,出现分歧, 出现问题, 出了问题就无法继续项目的开发了。我们本次分工上也出现了一些问题,主要原因是团队每个人技术特长不一,最后还是进行了合理的安排。完成了项目的基本功能。在实际开发的过程中给了我很多的实践经验,课程设计跟平时的理论课程有很大的区别,就是动手能力要求高,同时也提高我们的动手能力,课堂上的理论,我们通过项目得到了实际的应用。当然也发现了很多自己以前未能发现的知识上的不知,实践是检验真理的唯一标准,也是检验自己知识掌握程度的机会,在动手编码的过程中,我发现了很多数据库知识上的缺陷,也发现了自己编码的不良之处,通过和同学老师的交流得到了改正,并收获了很多的实践经验。参考文献1 钱雪忠 .数据库原理及应用(第二版). 北京邮电大学出版社.2004 2 钱雪忠 .数据库原理及应用实验指导(第二版). 北京邮电大学出版社.2004 3 李刚 . 疯狂 Java 讲义 . 电子工业出版社.2008 附录:JDBC 数据库连接源代码package com.hnwl.util; import java.sql.*; publicclass DBconn / 定义驱动名public static String drivername=oracle.jdbc.OracleDriver; / 定义 url public static String url=jdbc:oracle:thin:localhost:1521/oracle10; / 定义连接数据库的用户名public static String user=student; / 定义连接数据库的用户密码public static String password=student; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 21 页 - - - - - - - - - public static Connection GetDBConnection() Connection conn=null; try Class.forName(drivername); try conn = DriverManager.getConnection(url, user, password); catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace(); System.out.println(数据库连接异常! ); catch (ClassNotFoundException e) / TODO Auto-generated catch block e.printStackTrace(); System.out.println(驱动加载异常! ); return conn; public static void CloseAll(ResultSet rs,Statement stat,Connection conn) if(rs!=null) try rs.close(); catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace(); if(stat!=null) try stat.close(); catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace(); if(conn!=null) try conn.close(); catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace(); 封装成绩类源代码package com.hnwl.beans; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 21 页 - - - - - - - - - publicclass ClassScore String stud_id; String stud_name; String course_name; String score ; public ClassScore(String studId, String studName, String courseName, String score) super (); stud_id = studId; stud_name = studName; course_name = courseName; this. score = score; public String getStud_id() returnstud_id; publicvoid setStud_id(String studId) stud_id = studId; public String getStud_name() returnstud_name; publicvoid setStud_name(String studName) stud_name = studName; public String getCourse_name() returncourse_name; publicvoid setCourse_name(String courseName) course_name = courseName; public String getScore() returnscore ; publicvoid setScore(String score) this. score = score; Servlet逻辑层判断密码package com.hnwl.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 21 页 - - - - - - - - - import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import com.hnwl.biz.login; public class UserLogin extends HttpServlet public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException request.getParameter(gbk); String id=request.getParameter(id); String password=request.getParameter(password); String user_type=request.getParameter(user_type); String username=; response.setContentType(text/html;charset=gbk); PrintWriter out = response.getWriter(); out .println(); out.println(); out.println( 用户密码错误 ); out.println( ); if(user_type.equals(student) login student=new login(); username=student.stud_login(id, password); if(username!=null) HttpSession session=request.getSession(); session.setAttribute(stud_name, username); session.setAttribute(stud_id, id); response.sendRedirect(StudentMenu.jsp); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 21 页 - - - - - - - - - else out.println(账号或密码有误!); response.setHeader(refresh,2;URL=login.html); out.println(两秒后自动跳转到登陆窗口! ! !); out.println(如果没有跳转,请按 点击这里 ! ! !); else if(user_type.equals(teacher) login teacher=new login(); username=teacher.teacher_login(id, password); if(username!=null) HttpSession session=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 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 21 页 - - - - - - - - - if(id.equals(admin)|password.equals(admin)|user_type.equals(admin) HttpSession session=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(如果没有跳转,请按 点击这里 ! ! !); public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException doPost(request,response); Jsp前台页面源代码My JSP ViewStud.jsp starting page名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 21 页 - - - - - - - - - %teacher_ID=(String)session.getAttribute(teacher_id); TeacherDBControl select = new TeacherDBControl(); List list=select.selectByID(teacher_ID); %imgsrc = 姓名:性别:年龄:籍贯: 联系电话 任课名称 : 职称:现居住地:工号: Sql 数据库相关源代码drop user student cascade ; create user student identified by student; grant dba to student; conn student/student; drop table student_info; drop table student_score; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 21 页 - - - - - - - - - drop table course; drop table teacher_info; create table student_info( stud_id varchar2(30) primary key, stud_name varchar2(20), person_id varchar2(30), stud_password varchar2(20), stud_age number, 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); create table student_score( stud_id varchar2(30), course_id number, score number(4,1), primary key(stud_id,course_id); create table course ( course_id number primary key, course_name varchar2(30), teacher_id varchar2(20), course_level number); create table teacher_info( teacher_id varchar2(20) primary key, teacher_name varchar2(20), teacher_password varchar2(20), course_id number, teacher_add varchar2(50), teacher_origin varchar2(20), teacher_tel varchar2(30), professional varchar2(10), teacher_age number, teacher_sex varchar2(4), teacher_photo varchar2(20); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 21 页 - - - - - - - - -