收藏 分销(赏)

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

上传人:精*** 文档编号:2226514 上传时间:2024-05-23 格式:DOC 页数:36 大小:7.45MB 下载积分:12 金币
下载 相关 举报
Oracle数据库课程设计报告学生成绩管理系统.doc_第1页
第1页 / 共36页
Oracle数据库课程设计报告学生成绩管理系统.doc_第2页
第2页 / 共36页


点击查看更多>>
资源描述
Oracle数据库课程设计报告学生成绩管理系统 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 36 个人收集整理 勿做商业用途 Oracle数据库课程设计 题目 学生考试管理系统 班级 11网工2班 姓名 马路瑶 学号 指导老师 杨超峰 目录 一、 前言…………………………………………………2 二、 需求分析……………………………………………3 三、 系统设计……………………………………………5 四、 数据库设计…………………………………………7 五、 编程步骤……………………………………………19 六、 测试…………………………………………………25 七、 课程设计总结………………………………………33 八、 参考资料……………………………………………34 九、 附录…………………………………………………34 一、前言 学生考试管理是一个学校必不可少的部分,随着计算机和计算机知识的普及,学生考试管理系统得到了更大的发展空间,通过对学生考试管理系统的开发,可以提高校务人员的工作效率。 学生成绩管理是一个学校不可缺少的部分,一个良好的学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。学生考试管理系统对学校加强学生考试管理有着极其重要的作用。由于各个大学都在持续扩招,学生的数量日益庞大,对于如何管理如此庞大的学生考试数据显得更为复杂,传统的手工成绩管理不仅工作量大,而且容易出现问题,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。已不能适应时代的发展。 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,具有手工管理所无法比拟的优点。例:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高管理者管理的效率,也是学校走向科学化、正规化管理,与世界接轨的重要条件. 因此,开发设计这样一套学生成考试理软件成为很有必要的事情. 二、需求分析 1。功能需求 1. 学生基本信息及所选科目成绩的录入或导入。 2. 基本信息的查询(分系、班级;分科目)与修改。 3. 对每系或每班各科成绩进行分析(即求单科平均成绩、及格率和优秀率); 4. 对所开课程的成绩分析(求其平均成绩,最高分和最低分); 5. 对学生考试成绩进行排名(单科按系别或班级进行排名,对每一个班级,同一学期学生总体成绩进行排名,并显示各科成绩信息) 6. 不及格情况的统计、导出、打印 2。系统需求 该学生成绩管理系统采用java语言开发研制, JavaBean作为行为模型,servlet作为响应服务器,DIV+CSS+javascript设计网页,oracle作为数据存储。在完成用户需求同时,完成条件查询等功能。 针对学生成绩及其数据特点,可以全面实现对学生成绩的插入、查询、修改、删除和输出等功能的计算机管理。它能使学生成绩数据的工作人员从繁重的工作中解脱出来,大大减轻了工作量,减少人为的工作失误,全面提高学生成绩管理的效率,从而使学校对于学生成绩的管理水平和技术水平跃上一个新的台阶。 3。系统开发环境 1.开发语言:java+jsp 2。开发工具: IE 8.0,Tomcat ,jdk 1.7,dreamweaver 3。数据库:Oracle 10g 4.文档编写工具:word 5. 服务器端运行环境:oracle 10g,Tomcat ,jdk 1.7 6. 客户端运行环境:浏览器 三、系统设计 1。功能模块 学生考试管理系统 信息录入 信息查询 信息修改 信息删除 成绩统计分析 班级信息录入 科目信息录入 学生信息录入 班级内部排名 按学号查询 按姓名查询 学生信息修改 成绩信息修改 学生信息删除 成绩信息删除 单科成绩排名 单科成绩分析 成绩信息录入 不及格情况统计 学生总成绩排名 2.系统流程图 开始 登陆 密码正确? 是 否 进入系统 修改密码 控制面板 退出系统? 结束 是 否 3。数据字典 (1)数据存储 数据表:用户表 表组成:用户名,密码 数 据 项:用户名 数据类型:varchar 数据长度:50 数 据 项:密码 数据类型:varchar 数据长度:50 (2) 数据流定义: 登陆 名 称: 登陆 简 述: 用户登陆系统 数据来源: 用户 数据去向:用户表 数据组成:用户名+密码 四、数据库设计 1.数据库结构设计 院系表(cs) 字段名 数据类型 是否为空 说明 Cs_class Varchar2(50) Not null 班级名(主键) Cs_dept Varchar2(50) Not null 系别 Cs_grade Varchar2(50) Not null 年级 成绩表(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 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 用户名(主键) Passwd Varchar2(50) notnull 密码 2.实体联系图 学生信息 姓名 出生日期 性别 学号 联系电话 所在班级 成绩信息 科目名 学号 成绩 教师用户 管理 用户名 密码 班级信息 班级名 年级 科目信息 科目名 任课老师 系别 管理 管理 管理 3.数据库源代码 select userenv(’language') 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 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_class 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), constraint 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), gd_grade number(3) not null, primary key(gd_stu_no,gd_sub_subject), constraint 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_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_phone,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_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; end ; / create or replace procedure p_insert_cs( p_cs_dept in cs。cs_dept%type, p_cs_grade in cs。cs_grade%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_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 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; end; / create or replace procedure c_insert_sub( c_sub_subject in sub.sub_subject%type, c_state_values out number) 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,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, 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 ) 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_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_subject=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_class%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_grade 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 ; / 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 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 ,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 student,(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 ) as begin open cursor_gd_sub for select gd_stu_no,stu_name,gd_grade 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 student,(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 zuidi,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 open cursor_bujige for select gd_stu_no,gd_sub_subject,gd_grade from gd where gd_grade〈60; 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_phone%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; exception 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:=1;rollback; commit; end; / create or replace procedure p_update_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 update gd set gd_stu_no=p_gd_stu_no,gd_sub_subject=p_gd_sub_subject,gd_grade=p_gd_grade 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_state_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 user_.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; / 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 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; / 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( myrowcount out number ) as begin select count(*) into myrowcount from student; end; / 五、编程步骤 1。连接数据库的javabean 由于在本系统的多个JSP页面中都需要访问数据库,因此使用一个JavaBean来专门完成数据库的连接。把数据库连接封装在一个类中,每次需要访问数据库是只需实例化这个类并利用类里面提供的共有方法来完成连接即可。这样,既可以节省编码时间,也提高了代码的利用率. 1。1模块描述 负责完成与数据库的连接 1。2.类的设计与实现 (1)名称:jdbc.java (2)功能:负责完成与数据库的连接。 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 { try { Class。forName("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,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 数据库/数据算法

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服