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

上传人:l*** 文档编号:82067211 上传时间:2023-03-24 格式:PDF 页数:34 大小:2.38MB
返回 下载 相关 举报
Oracle数据库课程设计报告学生成绩管理系统.pdf_第1页
第1页 / 共34页
Oracle数据库课程设计报告学生成绩管理系统.pdf_第2页
第2页 / 共34页
点击查看更多>>
资源描述

《Oracle数据库课程设计报告学生成绩管理系统.pdf》由会员分享,可在线阅读,更多相关《Oracle数据库课程设计报告学生成绩管理系统.pdf(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Oracle数据库课程设计 题目 学生考试管理系统 班级 11网工2班 姓名 马路瑶 学号 指导老师 杨超峰 欢迎下载 2 目录 一、前言2 二、需求分析3 三、系统设计5 四、数据库设计7 五、编程步骤19 六、测试25 七、课程设计总结33 八、参考资料34 九、附录34 欢迎下载 3 一、前言 学生考试管理是一个学校必不可少的部分,随着计算机和计算机知识的普及,学生考试管理系统得到了更大的发展空间,通过对学生考试管理系统的开发,可以提高校务人员的工作效率。学生成绩管理是一个学校不可缺少的部分,一个良好的学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。学生考试管理系统对学校加

2、强学生考试管理有着极其重要的作用.由于各个大学都在持续扩招,学生的数量日益庞大,对于如何管理如此庞大的学生考试数据显得更为复杂,传统的手工成绩管理不仅工作量大,而且容易出现问题,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。已不能适应时代的发展。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,具有手工管理所无法比拟的优点。例:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够

3、极大地提高管理者管理的效率,也是学校走向科学化、正规化管理,与世界接轨的重要条件。因此,开发设计这样一套学生成考试理软件成为很有必要的事情.二、需求分析 欢迎下载 4 1.功能需求 1.学生基本信息及所选科目成绩的录入或导入。2.基本信息的查询(分系、班级;分科目)与修改。3.对每系或每班各科成绩进行分析(即求单科平均成绩、及格率和优秀率);4.对所开课程的成绩分析(求其平均成绩,最高分和最低分);5.对学生考试成绩进行排名(单科按系别或班级进行排名,对每一个班级,同一学期学生总体成绩进行排名,并显示各科成绩信息)6.不及格情况的统计、导出、打印 2.系统需求 该学生成绩管理系统采用 java

4、 语言开发研制,JavaBean 作为行为模型,servlet 作为响应服务器,DIV+CSS+javascript 设计网页,oracle 作为数据存储。在完成用户需求同时,完成条件查询等功能。针对学生成绩及其数据特点,可以全面实现对学生成绩的插入、查询、修改、删除和输出等功能的计算机管理。它能使学生成绩数据的工作人员从繁重的工作中解脱出来,大大减轻了工作量,减少人为的工作失误,全面提高学生成绩管理的效率,从而使学校对于学生成绩的管理水平和技术水平跃上一个新的台阶。3.系统开发环境 1.开发语言:java+jsp 2.开发工具:IE 8.0,Tomcat,jdk 1.7,dreamweave

5、r 3.数据库:Oracle 10g 4.文档编写工具:word 5.服务器端运行环境:oracle 10g,Tomcat,jdk 1.7 6.客户端运行环境:浏览器 三、系统设计 欢迎下载 5 1.功能模块 2.系统流程图 学生考试管理系统 信息录入 信息查询 信息修改 信息删除 成绩统计分析 班级信息录入 科目信息录入 学生信息录入 班级内部排名 按学号查询 按姓名查询 学生信息修改 成绩信息修改 学生信息删除 成绩信息删除 单科成绩排名 单科成绩分析 成绩信息录入 不及格情况统计 学生总成绩排名 欢迎下载 6 3.数据字典(1)数据存储 数据表:用户表 表组成:用户名,密码 数 据 项:

6、用户名 数据类型:varchar 数据长度:50 开始 登陆 密码正确?是 否 进入系统 修改密码 控制面板 退出系统?结束 是 否 欢迎下载 7 数 据 项:密码 数据类型:varchar 数据长度:50(2)数据流定义:登陆 名 称:登陆 简 述:用户登陆系统 数据来源:用户 数据去向:用户表 数据组成:用户名+密码 四、数据库设计 1.数据库结构设计 院系表(cs)字段名 数据类型 是否为空 说明 Cs_class Varchar2(50)Not null 班级名(主键)Cs_dept Varchar2(50)Not null 系别 Cs_grade Varchar2(50)Not nu

7、ll 年级 成绩表(gd)字段名 数据类型 是否为空 说明 Gd_stu_no Varchar2(15)Not null 学号(联合主键、外键)Gd_sub_subject Varchar2(50)Not null 科目(联合主键、外键)Gd_grade Number(3)Not null 成绩 科目表(sub)字段名 数据类型 是否为空 说明 Sub_subject Varchar2(50)Not null 科目名(主键)Sub_teacher_name Varchar2(10)任课老师名 学生表(student)字段名 数据类型 是否为空 说明 Stu_no Varchar2(15)Not

8、 null 学号(主键)Stu_name Varchar2(10)Not null 学生名 Stu_cs_class Varchar2(50)班级名(外键)Stu_sex Varchar(4)Not null 性别(约束)Stu_birthday Varchar2(50)出生日期 Stu_phone Varchar2(200)联系电话 用户表(user_)字段名 数据类型 是否为空 说明 name Varchar2(50)Not null 用户名(主键)欢迎下载 8 Passwd Varchar2(50)notnull 密码 2.实体联系图 3.数据库源代码 select userenv(la

9、nguage)from dual;shutdown immediate startup mount ALTER SYSTEM ENABLE RESTRICTED SESSION;ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;ALTER SYSTEM SET AQ_TM_PROCESSES=0;ALTER DATABASE OPEN;alter database character set INTERNAL_USE UTF8;shutdown immediate 学生信息 姓名 出生日期 性别 学号 联系电话 所在班级 成绩信息 科目名 学号 成绩 教师用户 管理

10、 用户名 密码 班级信息 班级名 年级 科目信息 科目名 任课老师 系别 管理 管理 管理 欢迎下载 9 startup create user xz105151640043 identified by xz/grant dba to xz/conn xz105151640043/xz/set serveroutput on/create table user_(name varchar(50)primary key,passwd varchar(50)not null)/insert into user_ values(xz,xz);/Commit/create table cs(cs_cl

11、ass varchar(50)primary key,cs_dept varchar(50)not null,cs_grade varchar(50)not null)/create table student(stu_no varchar(15)primary key,stu_name varchar(10)not null,stu_sex varchar(4)not null check(stu_sex=男or stu_sex=女),stu_birthday varchar(50),stu_phone varchar(50),stu_cs_class varchar(50),constra

12、int class_fk foreign key(stu_cs_class)references cs(cs_class)on delete cascade)/create table sub(sub_subject varchar(50)primary key,sub_teacher_name varchar(10)/create table gd(gd_stu_no varchar(15),gd_sub_subject varchar(50),欢迎下载 10 gd_grade number(3)not null,primary key(gd_stu_no,gd_sub_subject),c

13、onstraint fk_gd_stu_no foreign key(gd_stu_no)references student(stu_no),constraint fk_gd_sub_subject foreign key(gd_sub_subject)references sub(sub_subject)/create or replace procedure p_insert_stu(p_stu_no in student.stu_no%type,p_stu_name in student.stu_name%type,p_stu_sex in student.stu_sex%type,p

14、_stu_birthday in student.stu_birthday%type,p_stu_phone in student.stu_phone%type,p_stu_cs_class in student.stu_cs_class%type,s_state_values out number)as begin insert into student(stu_no,stu_name,stu_sex,stu_birthday,stu_phone,stu_cs_class)values(p_stu_no,p_stu_name,p_stu_sex,p_stu_birthday,p_stu_ph

15、one,p_stu_cs_class);if sql%rowcount=1 then s_state_values:=0;end if;exception when others then s_state_values:=1;commit;end;/create or replace procedure c_insert_stu(c_stu_no in student.stu_no%type,c_state_values out number)as begin select count(*)into c_state_values from student where stu_no=c_stu_

16、no;end;/create or replace procedure c_insert_stu_fk(c_cs_class in cs.cs_class%type,c_state_values_fk out number)as begin select count(*)into c_state_values_fk from cs where cs_class=c_cs_class;欢迎下载 11 end;/create or replace procedure p_insert_cs(p_cs_dept in cs.cs_dept%type,p_cs_grade in cs.cs_grade

17、%type,p_cs_class in cs.cs_class%type,s_state_values out number)as begin insert into cs(cs_dept,cs_grade,cs_class)values(p_cs_dept,p_cs_grade,p_cs_class);if sql%rowcount=1 then s_state_values:=0;end if;exception when others then s_state_values:=1;commit;end;/create or replace procedure c_insert_cs(c_

18、cs_class in cs.cs_class%type,c_state_values out number)as begin select count(*)into c_state_values from cs where cs_class=c_cs_class;end;/create or replace procedure p_insert_sub(p_sub_subject in sub.sub_subject%type,p_sub_teacher_name in sub.sub_teacher_name%type,s_state_values out number)as begin

19、insert into sub(sub_subject,sub_teacher_name)values(p_sub_subject,p_sub_teacher_name);if sql%rowcount=1 then s_state_values:=0;end if;exception when others then s_state_values:=1;commit;欢迎下载 12 end;/create or replace procedure c_insert_sub(c_sub_subject in sub.sub_subject%type,c_state_values out num

20、ber)as begin select count(*)into c_state_values from sub where sub_subject=c_sub_subject;end;/create or replace procedure p_insert_gd(p_gd_stu_no in gd.gd_stu_no%type,p_gd_sub_subject in gd.gd_sub_subject%type,p_gd_grade in gd.gd_grade%type,s_state_values out number)as begin insert into gd(gd_stu_no

21、,gd_sub_subject,gd_grade)values(p_gd_stu_no,p_gd_sub_subject,p_gd_grade);if sql%rowcount=1 then s_state_values:=0;end if;exception when others then s_state_values:=1;if p_gd_grade=null then s_state_values:=2;end if;commit;end;/create or replace procedure c_insert_gd(p_gd_stu_no in gd.gd_stu_no%type,

22、p_gd_sub_subject in gd.gd_sub_subject%type,c_state_values out number)as begin select count(*)into c_state_values from(select gd_stu_no from gd where gd_sub_subject=p_gd_sub_subject)欢迎下载 13 where gd_stu_no=p_gd_stu_no;end;/create or replace procedure c_insert_gd_fk1(c_stu_no in student.stu_no%type,c_

23、state_values_fk1 out number)as begin select count(*)into c_state_values_fk1 from student where stu_no=c_stu_no;end;/create or replace procedure c_insert_gd_fk2(c_sub_subject in sub.sub_subject%type,c_state_values_fk2 out number)as begin select count(*)into c_state_values_fk2 from sub where sub_subje

24、ct=c_sub_subject;end;/create or replace procedure p_select_stu_no_info(p_stu_no in out student.stu_no%type,p_stu_name out student.stu_name%type,p_stu_sex out student.stu_sex%type,p_stu_birthday out student.stu_birthday%type,p_stu_phone out student.stu_phone%type,p_stu_cs_class out student.stu_cs_cla

25、ss%type,p_cs_dept out cs.cs_dept%type,p_cs_grade out cs.cs_grade%type,c_state_values out number)as begin c_state_values:=0;select stu_no,stu_name,stu_sex,stu_birthday,stu_phone,stu_cs_class,cs_dept,cs_grade into p_stu_no,p_stu_name,p_stu_sex,p_stu_birthday,p_stu_phone,p_stu_cs_class,p_cs_dept,p_cs_g

26、rade from student,cs where stu_cs_class=cs_class and stu_no=p_stu_no;exception when NO_DATA_FOUND then c_state_values:=1;when others then c_state_values:=2;end;/欢迎下载 14 create or replace procedure p_select_stu_no_gd(p_stu_no in student.stu_no%type,cursor_gd out sys_refcursor)as begin open cursor_gd

27、for select gd_sub_subject,gd_grade from gd where gd_stu_no=p_stu_no;end;/create or replace procedure p_select_stu_name(p_stu_name in student.stu_name%type,cursor_stu out sys_refcursor,c_state_values out number)as begin c_state_values:=0;open cursor_stu for select stu_no,stu_name,stu_sex,stu_birthday

28、,stu_phone,stu_cs_class,cs_dept,cs_grade from student,cs where stu_name=p_stu_name and stu_cs_class=cs_class;exception when others then c_state_values:=2;end;/create or replace procedure p_pm_sum(cursor_gd_sum out sys_refcursor)as begin open cursor_gd_sum for select distinct sno,stu_name,sum from st

29、udent,(select gd_stu_no as sno,sum(gd_grade)as sum from gd group by gd_stu_no)where stu_no=sno order by sum desc;end;/create or replace procedure p_pm_sub(p_gd_sub_subject in gd.gd_sub_subject%type,cursor_gd_sub out sys_refcursor)欢迎下载 15 as begin open cursor_gd_sub for select gd_stu_no,stu_name,gd_g

30、rade from gd,student where gd_sub_subject=p_gd_sub_subject and stu_no=gd_stu_no order by gd_grade desc;end;/create or replace procedure p_pm_class(p_stu_cs_class in student.stu_cs_class%type,cursor_gd_class out sys_refcursor)as begin open cursor_gd_class for select distinct sno,stu_name,sum from stu

31、dent,(select gd_stu_no as sno,sum(gd_grade)as sum from gd group by gd_stu_no)where stu_no=sno and stu_cs_class=p_stu_cs_class order by sum desc;end;/create or replace procedure p_fx(cursor_fx out sys_refcursor)as begin open cursor_fx for select gd_sub_subject,max(gd_grade)as zuigao,min(gd_grade)as z

32、uidi,avg(gd_grade)as pingjun,SUM(CASE WHEN gd_grade=60 THEN 1 ELSE 0 END)/COUNT(*)*100 AS jigelv,SUM(CASE WHEN gd_grade=80 THEN 1 ELSE 0 END)/COUNT(*)*100 AS youxiulv from gd group by gd_sub_subject;end;/create or replace procedure p_bujige(cursor_bujige out sys_refcursor)as begin 欢迎下载 16 open curso

33、r_bujige for select gd_stu_no,gd_sub_subject,gd_grade from gd where gd_grade60;end;/create or replace procedure p_update_stu(p_stu_no in student.stu_no%type,p_stu_name in student.stu_name%type,p_stu_sex in student.stu_sex%type,p_stu_birthday in student.stu_birthday%type,p_stu_phone in student.stu_ph

34、one%type,p_stu_cs_class in student.stu_cs_class%type,s_state_values out number)as begin update student set stu_name=p_stu_name,stu_sex=p_stu_sex,stu_birthday=p_stu_birthday,stu_phone=p_stu_phone,stu_cs_class=p_stu_cs_class where stu_no=p_stu_no;if sql%rowcount=1 then s_state_values:=0;end if;excepti

35、on when others then s_state_values:=1;commit;end;/create or replace procedure p_delete_stu(p_stu_no in student.stu_no%type,s_state_values out number)as begin delete from gd where gd_stu_no=p_stu_no;delete from student where stu_no=p_stu_no;s_state_values:=0;exception when others then s_state_values:

36、=1;rollback;commit;end;/create or replace procedure p_update_gd(p_gd_stu_no in gd.gd_stu_no%type,欢迎下载 17 p_gd_sub_subject in gd.gd_sub_subject%type,p_gd_grade in gd.gd_grade%type,s_state_values out number)as begin update gd set gd_stu_no=p_gd_stu_no,gd_sub_subject=p_gd_sub_subject,gd_grade=p_gd_grad

37、e where gd_stu_no=p_gd_stu_no and gd_sub_subject=p_gd_sub_subject;if sql%rowcount=1 then s_state_values:=0;end if;exception when others then s_state_values:=1;rollback;commit;end;/create or replace procedure p_delete_gd(p_gd_stu_no in gd.gd_stu_no%type,p_gd_sub_subject in gd.gd_sub_subject%type,s_st

38、ate_values out number)as begin delete from gd where gd_stu_no=p_gd_stu_no and gd_sub_subject=p_gd_sub_subject;if sql%rowcount=1 then s_state_values:=0;end if;exception when others then s_state_values:=1;rollback;commit;end;/create or replace procedure p_denglu(p_name in user_.name%type,p_passwd in u

39、ser_.passwd%type,s_state_values out number)as begin select count(*)into s_state_values from user_ where name=p_name and passwd=p_passwd;end;/欢迎下载 18 create or replace procedure p_update_passwd(p_name in user_.name%type,p_passwd in user_.passwd%type,s_state_values out number)as begin update user_ set

40、 passwd=p_passwd where name=p_name;if sql%rowcount=1 then s_state_values:=0;end if;exception when others then s_state_values:=1;rollback;commit;end;/create or replace procedure p_select_no(cursor_stu_no out sys_refcursor)as begin open cursor_stu_no for select stu_no from student order by stu_no;end;

41、/create or replace procedure p_select_all(cursor_all out sys_refcursor)as begin open cursor_all for select stu_no,stu_name,stu_sex,stu_birthday,stu_phone,stu_cs_class,cs_dept,cs_grade from student,cs where stu_cs_class=cs_class order by stu_no;end;/create or replace procedure p_select_count(myrowcou

42、nt out number )欢迎下载 19 as begin select count(*)into myrowcount from student;end;/五、编程步骤 1.连接数据库的 javabean 由于在本系统的多个 JSP 页面中都需要访问数据库,因此使用一个 JavaBean来专门完成数据库的连接。把数据库连接封装在一个类中,每次需要访问数据库是只需实例化这个类并利用类里面提供的共有方法来完成连接即可。这样,既可以节省编码时间,也提高了代码的利用率。1.1 模块描述 负责完成与数据库的连接 1.2.类的设计与实现(1)名称:jdbc.java(2)功能:负责完成与数据库的连接

43、。1.3 构造方法设计 1.3.1 方法定义:public jdbc()IPO 图 输入:无。处理:加载驱动程序,若加载中出现异常,则显示异常描述信息。输出:无。程序清单:public class jdbc private static final String DB_NAME=xz105151640043;private static final String DB_PASSWORD=xz;private static final String DB_URL=jdbc:oracle:thin:localhost:1521:orcl;static 欢迎下载 20 try Class.forNa

44、me(oracle.jdbc.driver.OracleDriver);catch(ClassNotFoundException e)e.printStackTrace();System.out.println(class not found!);1.3.2 方法定义:public getConnection()IPO 图 输入:无。处理:创建驱动程序和指定数据库间的连接对象,建立语句对象 输出:无。程序清单:public static Connection getConnection()try return DriverManager.getConnection(DB_URL,DB_NAME

45、,DB_PASSWORD);catch(SQLException e)e.printStackTrace();return null;2.登陆模块 2.1.模块描述 提供用户登录、退出、修改密码功能。欢迎下载 21 2.2.原文件定义 (1)denglu.jsp 名称:登陆页面。功能:系统登录页面,获取用户登录系统时的用户名和密码。(2)cl-denglu.jsp 名称:登录处理页面。功能:主要负责读取用户在登录页面输入的用户名、密码,判断是否为合法用户。若是合法用户,则将该用户的用户名写入到 session 中,并重定向到系统内部的功能页面;否则,重定向到 denglu.jsp,阻止该用户进

46、入系统。输入:用户在登录页面输入的信息(用户名和密码)。处理:连接数据库,调用存储过程 p_denglu,传入参数 name、password,接收存储过程返回值s_state_values,如果返回值为1则为合法用户,将该用户的用户名写入到session中,并重定向到系统主页面 index.jsp;否则,弹出错误警告用户名密码错误,重定向到denglu.jsp,阻止该用户进入系统。输出:根据验证结果重定向到不同页面。程序清单:%Connection conn=jdbc.getConnection();String j_name=request.getParameter(j_name);Str

47、ing j_passwd=request.getParameter(j_passwd);CallableStatement cstmt1=conn.prepareCall(call p_denglu(?,?,?);cstmt1.setString(1,j_name);cstmt1.setString(2,j_passwd);cstmt1.registerOutParameter(3,java.sql.Types.INTEGER);cstmt1.execute();int s_state_values=(cstmt1.getInt(3);if(s_state_values=1)session.s

48、etAttribute(user_name,j_name);response.sendRedirect(index.jsp);else if(s_state_values=0)out.println(alert(用户名密码错误!);location.href=denglu.jsp);cstmt1.close();conn.close();%(3)tuichu.jsp 名称:用户退出页面 功能:主要负责登录用户的退出功能,将退出系统的用户信息从 session 中清除掉。输入:无。处理:清楚 session 中存储的一切信息 输出:重定向到登录也页面。欢迎下载 22 程序清单:(4)xg-mm.

49、jsp 名称:修改密码页面 功能:主要负责登录用户的修改密码,将用户密码传给 cl-xgmm.jsp。(5)cl-xg-mm.jsp 名称:处理修改密码页面 功能:主要负责登录用户的修改密码功能,首先验证两次输入的新密码是否一致,然后调用存储过程 p_denglu 验证原密码是否正确,最后调用存储过程 p_update_passwd 修改密码。程序清单:3.控制面板模块 3.1.模块描述 提供信息录入、查询、修改、删除、成绩统计分析功能。3.2.原文件定义 源代码详见附件(1)lr-cs.jsp 名称:录入班级信息页面。功能:录入班级信息。(2)cl-lr-cs.jsp 名称:处理录入班级信息

50、页面。功能:录入班级信息。(3)lr-sub.jsp 名称:录入科目信息页面。功能:录入科目信息。(4)cl-lr-sub.jsp 名称:处理录入科目信息页面。功能:录入科目信息。(5)lr-stu.jsp 名称:录入学生信息页面。功能:录入学生信息。(6)cl-lr-stu.jsp 名称:处理录入学生信息页面。功能:录入学生信息。(7)lr-gd-sub.jsp 名称:录入成绩信息选择科目页面。功能:录入成绩信息。(8)lr-gd.jsp 欢迎下载 24 名称:录入成绩信息页面。功能:录入成绩信息。(9)cl-lr-stu.jsp 名称:处理录入成绩信息页面。功能:录入成绩信息。(10)cx

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁