Oracle数据库课程设计报告学生成绩管理系统
- 格式:doc
- 大小:7.37 MB
- 文档页数:34
数据库原理与应用课程设计报告课程名称数据库原理与应用实验名称学生成绩管理系统学生学院自动化学院 _____ 专业班级______ xxxx________学号_xxxx学生姓名_xxxx____ _ 指导教师______ 黄永慧 __ _____2012 年 5 月 20日一、课程设计的内容:当前,应用数据库技术编写信息管理软件,已是很成熟的技术,关键是如何实现设计要求,如何设计出友好的人机界面,使程序运行稳定、使用方便、操作简便,建立学生成绩管理系统,采用计算机对学生成绩进行管理,进一步提高办学效益和现代化水平。
学生成绩管理系统的设计与实现主要包括如下内容:1)原始数据录入(包括学生信息、课程信息和学生成绩的录入);2)课程查询、学生信息和成绩查询查询;3)报表输出(包括学生成绩汇总报表、需重修的学生统计表、班级单科成绩表等);4)数据维护(包括数据备份、数据恢复等),该部分内容选做。
5)随着网络技术的发展,可考虑提供网络在线查询功能。
二、课程设计的要求与数据对于课程设计要求按照如下步骤进行:1)选题与搜集资料:根据分组,选择设计题目,在小组内进行分工,进行应用系统调查,搜集相关资料。
2)分析与设计:根据搜集的资料,进行功能与数据分析,并进行数据库、系统功能等设计。
撰写数据字典、使用E-R图为该数据库设计概念模型、将E-R数据模型转换成关系模型、对于设计好关系模式集,利用SQL语句定义各个关系模式,定义各关系模式之间的联系,以及参照完整性的约束。
3)程序设计:运用掌握的高级语言(如VB、VC、ASP、JSP等),结合选择的数据库管理系统(要求选择SQL SERVER 2000,或SQL SERVER 2005),编写程序,实现所设计的模块功能。
4)调试与测试:装入初始数据,自行调试程序,成员交叉测试程序,并记录测试情况。
装入一定量的测试数据,调试系统,并完成各项操作要求。
三、课程设计应完成的工作:学生成绩管理系统至少需要完成以下功能:1、基本信息的管理系统,基本功能如下:(1)能够完成新、老生信息的输入、修改、删除等工作,学生的基本信息,包括学号、姓名、性别、籍贯等,具体可根据需求自行设计;(2)能够完成课程信息的输入、修改、删除等工作,课程的基本信息,包括课程编号、课程名称、学时、学分、先修课等,具体可根据需求自行设计;(3)可以按照特定的信息进行查找,并按照特定的要求进行排序;2、学生成绩的管理,基本功能如下:(1)学生成绩的输入、修改、删除等基本操作;(2)成绩的查询功能,可以按学号、姓名等进行成绩查询;(3)成绩的综合统计功能,包括学生成绩按照不同条件进行排名,管理人员可以选择不同的排序条件。
实验十九Oracle数据库系统开发实例-学生成绩管理系统【一】实验目的1.掌握采用开发Oracle数据库系统的方法;2.掌握开发C/S模式的数据库系统的方法。
【二】实验内容利用SQL Developer,在scott用户下创建6张表:student、teacher、course、allocate、score和users表,如表19-1至19-7所示。
表19-1 users表结构表19-2 users表的数据表19-3 student表的结构表19-4 teacher表的结构表19-5 course表的结构表19-6 allocate表的结构表19-7 score表的结构一、系统功能1.实现学生基本数据的编辑和相关查询。
2.实现教师基本数据的编辑和相关查询。
3.实现课程基本数据的编辑和相关查询。
4.实现各课程任课教师安排和相关查询。
5.实现学生成绩数据的编辑和相关查询。
6.实现用户管理和控制功能。
二、系统结构本系统对应的项目为“学生成绩管理系统.sln”,共有20个窗体和1个公共模块。
本项目的启动窗体为pass,该窗体提示用户输入相应的用户名/密码,并判断是否为合法用户。
如果是非法用户(用户名/密码输入错误),则提示用户再次输入用户名/密码,若用户非法输入3次,便自动退出系统运行。
如果是合法用户,则调用main多文档窗体启动相应的菜单,用户通过该系统菜单执行相应的操作。
系统结构图,如图19-1所示。
main窗体学生数据管理menu13_Click过程系统维护setuser窗体setuser1窗体pass窗体editstudent窗体editstudent1窗体querystudent窗体教师数据管理editteacher窗体editteacher1窗体queryteacher窗体课程数据管理editcourse窗体editcourse1窗体querycourse窗体成绩数据管理editscore窗体queryscore窗体课程安排管理allocatecourse窗体allocatecourse1窗体queryallocate窗体menu62_Click过程2.pass窗体pass窗体用于接受用户的用户名/密码输入,判断是否为合法用户。
数据库课程设计报告1.功能需求本报告主要介绍学生成绩管理系统的数据库设计,从需求分析到数据库的运行与维护都进行详细的叙述。
该系统是利用SQL开发出来的。
通过SQL建立学生成绩管理系统,大大方便和简化了数据的查询和处理,管理员可以通过SQL语言对表内数据进行添加,删除,修改,查询等操作,还可以建立多用户,对其使用权限进行分配和回收。
报告分为4部分,第一部分是课题简介及设计的内容与目的,需求分析,此阶段是数据库设计的起点。
第二部分是概念设计,逻辑结构设计,它是将需求分析的用户需求抽象为信息结构,并将概念模型转换为某个DBMS所支持的数据模型。
第三部分是数据库的实施与运行,它包括数据的载入及数据困的运行和数据库和数据表的创建(代码)。
第四部分是课程设计的总结。
1.1开发环境及开发语言本次课程设计是以学生信息管理系统为模拟模型,运用C++编程语言结合SQL 数据库所开发系统。
开发平台为VC6.0和SQL2008。
1.2 设计目的随着学生数量的日益增多,学校对学生的管理要求也越来越高,为了使学生成绩的管理更加系统化,数字化,因此我们设计了该学生信息管理系统。
1.3 设计内容运用基于E-R模型的数据库设计方法和关系规范化理论做指导完成从系统的分析到设计直至系统的最终实现,开发学生成绩管理系统,完成学生成绩管理系统的全部功能。
首先做好需求分析,并完成数据流图,其次做概念分析,利用实体联系的方法将需求分析的用户需求抽象为信息结构,得到E-R图,然后就是逻辑结构设计,将E-R图转换为计算机系统所支持的逻辑模型。
最后利用SQL完成具体的实例。
1.4.需求分析1、问题的提出:为了高效率的完成学生成绩的管理,决定开发学生成绩管理系统。
2、需完成的功能:(1)能提供管理员及普通用户(除删除和修改)录入、注销、显示当前用户、修改、删除、查询、输出,学生的档案信息,这些信息包括学生的成绩、课程、个人信息等。
(2)触发器,索引,存储过程的建立及使用。
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作为数据存储。
软件学院综合训练项目报告书课程名称Oracle数据库项目名称学生成绩管理系统专业班级组别成员任课教师刘腊梅2015 年 6 月目录1.设计时间 (3)2.设计任务 (3)3.设计内容 (3)3.1系统设计 (3)3.1.1系统功能概述 (3)3.1.2系统功能模块设计 (4)3.2数据库设计 (5)3.2.1数据库需求分析 (5)3.2.2数据库逻辑结构设计 (9)3.3数据库实现 (11)3.3.1创建用户 (11)3.3.2创建表和约束 (11)3.3.3创建存储过程、函数及触发器 (13)3.4测试与分析 (16)3.4.1测试 (16)3.4.2分析 (19)3.5代码 (19)4.总结与展望 (30)5.参考文献 (31)1 设计时间2015/6/1~2015/6/72 设计任务信息管理系统—学生成绩管理系统掌握ORACLE数据库的特点,熟悉SQL命令和PL/SQL的编程特点,运用所学知识解决现实问题,完成学生成绩管理系统的后台数据库设计,提高系统性能。
在该项目中,不考虑需求分析过程,要求建立以下关系:院系信息:院系编号、院系名称、院系主管、地址、院系人数;学生基本信息:院系编号、学号、姓名、性别、学生类型、入学日期、籍贯、身份证号、详细地址、出生日期、所学专业、民族、电话(家) 、缴费总计、已修学分、备注;课程信息:课程号、课程名称、开设年级、学时数、学分;成绩单:学号、课程号、学期、成绩、备注。
使用存储过程统计每个学生的‘已修学分’。
使用触发器实现当登记学生成绩(60分以上)时自动统计学生的‘已修学分’。
使用函数实现统计各课程的未及格人数,要求输入参数课程号后,返回各课程的人数NUM。
并实现调用,查‘数据库系统设计’的未及格人数。
将上实验中的存储过程与本实验中函数创建包。
3 设计内容3.1系统设计图3-1-2 业务流程图3.2数据库设计图3-2-6 0层数据流图图3-2-7 1层数据流图3.3.2创建表和约束1.创建院系信息表。
华东交通大学理工学院课程设计报告书所属课程名称ORACLE数据库题目学生成绩管理系统分院电信分院专业班级计算机科学与技术ﻩ学号学生姓名指导教师2013年1月4 日华东交通大学理工学院课程设计( 论文)任务书专业计算机科学与技术班级姓名一、课程设计(论文)题目学生成绩管理系统二、课程设计(论文)工作:自2012 年12 月31 日起至2013 年 1 月 4 日止。
三、课程设计(论文)的内容要求:1、学生成绩管理系统的设计1.在对数据库理论及知识理解的基础上,针对具体的实际问题,设计合适的数据库表。
2.给出系统的概要设计、详细设计,完成相关的算法描述。
3.设计必要的视图、触发器、存储过程4.完成规范化的课程设计说明书的编写本设计是我和戈振军2个合作完成,我主要负责各个模块的界面设计与源代码的编译,最后测试系统的运行。
戈振军(20090210440123)主要负责各种数据的收集整理,数据库的设计,E-R图的设计与系统框架的搭建。
学生签名:2013 年1 月4日课程设计(论文)评阅意见评阅人职称20 年月日ﻬ目录第一章系统概述ﻩ错误!未定义书签。
1.1系统背景ﻩ错误!未定义书签。
1.2 可行性研究............................................................. 错误!未定义书签。
第二章需求分析................................................................ 错误!未定义书签。
2.1 运行环境:ﻩ错误!未定义书签。
2.2数据需求ﻩ错误!未定义书签。
第三章软件设计................................................................ 错误!未定义书签。
3.1总体设计............................................................. 错误!未定义书签。
学生管理系统Oracle课程设计一、课程目标知识目标:1. 理解Oracle数据库的基本概念,掌握其体系结构。
2. 学会使用SQL语言进行数据查询、插入、更新和删除操作。
3. 掌握学生管理系统数据库的设计原则和方法。
技能目标:1. 能够独立安装和配置Oracle数据库环境。
2. 能够使用SQL Developer等工具进行数据库操作。
3. 能够设计并实现一个简单的学生管理系统数据库。
情感态度价值观目标:1. 培养学生对待数据库技术的积极态度,提高学习兴趣。
2. 培养学生的团队协作精神,学会共同解决问题。
3. 引导学生认识到数据库在现实生活中的重要性,激发其应用创新意识。
课程性质分析:本课程为信息技术课程,以实践操作为主,理论讲解为辅。
课程内容紧密结合学生管理系统项目,以提高学生的实际操作能力为目标。
学生特点分析:高二年级学生对数据库知识有一定了解,具备基本的计算机操作技能,但Oracle数据库知识尚属初学阶段。
学生具有较强的学习兴趣和动手能力,但需注重培养团队协作能力。
教学要求:1. 结合实际项目,注重理论与实践相结合,提高学生的实践能力。
2. 采用任务驱动法,引导学生自主探究,培养学生的自主学习能力。
3. 注重个体差异,因材施教,使每位学生都能在课程中学有所得。
二、教学内容1. Oracle数据库基础知识:- 数据库基本概念- Oracle数据库体系结构- SQL语言基础2. Oracle数据库操作:- 数据查询- 数据插入、更新和删除- 索引和视图的创建与应用3. 学生管理系统数据库设计:- 数据库设计原则- 实体关系模型- 数据库表结构设计4. Oracle数据库环境配置与使用:- Oracle数据库安装- SQL Developer工具的使用- 数据库连接与操作5. 实践项目:学生管理系统数据库实现- 数据库表创建与数据导入- 查询与统计功能实现- 简单的数据维护功能实现教学内容安排与进度:第一周:Oracle数据库基础知识学习第二周:Oracle数据库操作学习第三周:学生管理系统数据库设计第四周:Oracle数据库环境配置与使用第五周:实践项目:学生管理系统数据库实现教材章节关联:《Oracle数据库管理与维护》第一章:数据库基本概念与体系结构《Oracle数据库管理与维护》第二章:SQL语言基础《Oracle数据库管理与维护》第三章:数据库设计《Oracle数据库管理与维护》第四章:数据库操作与维护《Oracle数据库管理与维护》附录:实践项目指导三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用以下多样化的教学方法:1. 讲授法:通过系统的讲解,使学生掌握Oracle数据库的基本概念、体系结构和SQL语言基础。
学生成绩管理系统数据库课程设计报告1需求分析1.1用户需求概述本系统为学生成绩管理系统,该系统开发的主要目的是使得学生的成绩管理工作更加清晰、条理化、自动化,实现对学生成绩的集中统一的管理.具体完成通过用户名和密码登录系统,查询课程基本资料,学生所选课程成绩,修改用户密码等功能。
本系统主要实现对学生成绩的管理,需要完成的主要功能有:(1)通过用户名和密码登录系统,查询课程基本资料,学生所选课程成绩,修改用户密码等功能,容易地完成学生信息的查询操作.(2)设计人机友好界面,功能安排合理,操作使用方便,并且进一步考虑系统在安全性,完整性,并发控制,备份和恢复等方面的功能要求。
1.2 数据需求Student表:score表结构:Course表:Teacher表2概念设计内容2。
1 概念设计综述由需求分析的结果可知,本系统设计的实体包括:(1)学生基本信息:学号,姓名,性别,地址,年龄,专业。
(2)课程基本信息:课程名,课程号,分数,学时,学分。
这些实体间的联系包括:(1)学生(学号,姓名,性别,年龄,地址,系别),其主关键字为学号;(2)课程(课程名,课程号,学时,学分),其中主关键字为课程号;(3)成绩(课程号,学号,分数)其中主关键字为学号和课程号。
可以与学生关系模式合并为:学生(学号,姓名,性别,年龄,地址,系别,成绩,课程号)。
2.2E—R模型如下:3规范化设计1.范式的判断条件:第一范式:如果一个关系模式R的所有属性域都是原子的,我们称关系模式R属于第一范式;第二范式:若关系模式R满足第一范式,且每一个非主属性完全函数依赖于码,则关系模式R满足第二范式;BC范式:对于R中所有的函数依赖,下面至少有一个成立(α—〉β是平凡的,α是模式R的一个超码);第三范式:在BC范式的判断条件上加多一个条件:β—α中每个属性A都包含在R 的一个候选码中.2.本关系模型的判断:A、对于我设计的关系模式中所有实体集和关系集,每一个属性的属性域都是不可再分的,都具有原子性,因此由该关系模式转换而来的关系模型符合第一范式的要求。
Oracle数据库课程设计题目学生考试管理系统班级11网工2班姓名马路瑶学号指导老师杨超峰目录一、前言 (2)二、需求分析 (3)三、系统设计 (5)四、数据库设计 (7)五、编程步骤 (19)六、测试 (25)七、课程设计总结 (33)八、参考资料 (34)九、附录 (34)一、前言学生考试管理是一个学校必不可少的部分,随着计算机和计算机知识的普及,学生考试管理系统得到了更大的发展空间,通过对学生考试管理系统的开发,可以提高校务人员的工作效率。
学生成绩管理是一个学校不可缺少的部分,一个良好的学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。
学生考试管理系统对学校加强学生考试管理有着极其重要的作用.由于各个大学都在持续扩招,学生的数量日益庞大,对于如何管理如此庞大的学生考试数据显得更为复杂,传统的手工成绩管理不仅工作量大,而且容易出现问题,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
已不能适应时代的发展。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,具有手工管理所无法比拟的优点。
例:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高管理者管理的效率,也是学校走向科学化、正规化管理,与世界接轨的重要条件。
因此,开发设计这样一套学生成考试理软件成为很有必要的事情. 二、需求分析1.学生基本信息及所选科目成绩的录入或导入。
2.基本信息的查询(分系、班级;分科目)与修改。
3.对每系或每班各科成绩进行分析(即求单科平均成绩、及格率和优秀率);4.对所开课程的成绩分析(求其平均成绩,最高分和最低分);5.对学生考试成绩进行排名(单科按系别或班级进行排名,对每一个班级,同一学期学生总体成绩进行排名,并显示各科成绩信息)6.不及格情况的统计、导出、打印2.系统需求该学生成绩管理系统采用java语言开发研制,JavaBean作为行为模型,servlet作为响应服务器,DIV+CSS+javascript设计网页,oracle作为数据存储。
在完成用户需求同时,完成条件查询等功能。
针对学生成绩及其数据特点,可以全面实现对学生成绩的插入、查询、修改、删除和输出等功能的计算机管理。
它能使学生成绩数据的工作人员从繁重的工作中解脱出来,大大减轻了工作量,减少人为的工作失误,全面提高学生成绩管理的效率,从而使学校对于学生成绩的管理水平和技术水平跃上一个新的台阶。
3.系统开发环境1.开发语言:java+jsp2.开发工具:IE 8.0,Tomcat ,jdk 1.7,dreamweaver3.数据库:Oracle 10g4.文档编写工具:word5. 服务器端运行环境:oracle 10g,Tomcat ,jdk 1.76. 客户端运行环境:浏览器三、系统设计2.系统流程图3.数据字典(1)数据存储数据表:用户表表组成:用户名,密码数据项:用户名数据类型:varchar数据长度:50数据项:密码数据类型:varchar数据长度:50(2) 数据流定义:登陆名称:登陆简述:用户登陆系统数据来源:用户数据去向:用户表数据组成:用户名+密码四、数据库设计1.数据库结构设计院系表(cs)2.实体联系图3.数据库源代码select userenv('language') from dual;shutdown immediatestartup mountALTER 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 immediatestartupcreate 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) asbegininsert 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=1then s_state_values:=0;end if;exceptionwhen 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)asbeginselect count(*) into c_state_values from studentwhere 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)asbeginselect count(*) into c_state_values_fk from cswhere cs_class=c_cs_class;/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)asbegininsert into cs(cs_dept,cs_grade,cs_class)values(p_cs_dept, p_cs_grade, p_cs_class);if sql%rowcount=1then s_state_values:=0;end if;exceptionwhen 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)asbeginselect count(*) into c_state_values from cswhere 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)asbegininsert into sub(sub_subject,sub_teacher_name) values(p_sub_subject, p_sub_teacher_name);if sql%rowcount=1then s_state_values:=0;end if;exceptionwhen others then s_state_values:=1;commit;/create or replace procedure c_insert_sub(c_sub_subject in sub.sub_subject%type,c_state_values out number)asbeginselect count(*) into c_state_values from subwhere 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)asbegininsert 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=1then s_state_values:=0;end if;exceptionwhen others then s_state_values:=1;if p_gd_grade=nullthen 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)asbeginselect count(*) into c_state_values from (select gd_stu_no from gdwhere 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)asbeginselect count(*) into c_state_values_fk1 from studentwhere 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)asbeginselect count(*) into c_state_values_fk2 from subwhere 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)asbeginc_state_values:=0;select stu_no, stu_name,stu_sex ,stu_birthday ,stu_phone ,stu_cs_class ,cs_dept ,cs_gradeinto p_stu_no, p_stu_name, p_stu_sex, p_stu_birthday, p_stu_phone, p_stu_cs_class, p_cs_dept, p_cs_gradefrom student, cswhere stu_cs_class=cs_class and stu_no=p_stu_no;exceptionwhen 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)asbeginopen cursor_gd forselect gd_sub_subject,gd_gradefrom gdwhere 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)asbeginc_state_values:=0;open cursor_stu forselect stu_no, stu_name,stu_sex ,stu_birthday ,stu_phone ,stu_cs_class ,cs_dept ,cs_gradefrom student, cswhere stu_name=p_stu_name and stu_cs_class=cs_class;exceptionwhen others then c_state_values:=2;end;/create or replace procedure p_pm_sum(cursor_gd_sum out sys_refcursor)asbeginopen cursor_gd_sum forselect distinct sno,stu_name,sumfrom student,(select gd_stu_no as sno,sum(gd_grade) as sumfrom gdgroup by gd_stu_no)where stu_no=snoorder 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)asbeginopen cursor_gd_sub forselect gd_stu_no,stu_name,gd_gradefrom gd,studentwhere gd_sub_subject=p_gd_sub_subject and stu_no=gd_stu_noorder 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)asbeginopen cursor_gd_class forselect distinct sno,stu_name,sumfrom student,(select gd_stu_no as sno,sum(gd_grade) as sumfrom gdgroup by gd_stu_no)where stu_no=sno and stu_cs_class=p_stu_cs_classorder by sum desc;end;/create or replace procedure p_fx(cursor_fx out sys_refcursor)asbeginopen cursor_fx forselect 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 youxiulvfrom gdgroup by gd_sub_subject;end;/create or replace procedure p_bujige(cursor_bujige out sys_refcursor)asbeginopen cursor_bujige forselect gd_stu_no,gd_sub_subject,gd_gradefrom gdwhere 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) asbeginupdate studentsetstu_name=p_stu_name,stu_sex=p_stu_sex,stu_birthday=p_stu_birthday,stu_phone=p_stu_phone,s tu_cs_class=p_stu_cs_classwhere stu_no=p_stu_no;if sql%rowcount=1then s_state_values:=0;end if;exceptionwhen 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)asbegindelete from gd where gd_stu_no=p_stu_no;delete from student where stu_no=p_stu_no;s_state_values:=0;exceptionwhen 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)asbeginupdate gdset 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=1then s_state_values:=0;end if;exceptionwhen 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)asbegindelete from gdwhere gd_stu_no=p_gd_stu_no and gd_sub_subject=p_gd_sub_subject;if sql%rowcount=1then s_state_values:=0;end if;exceptionwhen 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)asbeginselect count(*) into s_state_valuesfrom 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)asbeginupdate user_set passwd= p_passwdwhere name=p_name;if sql%rowcount=1then s_state_values:=0;end if;exceptionwhen others then s_state_values:=1;rollback;commit;end;/create or replace procedure p_select_no(cursor_stu_no out sys_refcursor)asbeginopen cursor_stu_no forselect stu_nofrom studentorder by stu_no;end;/create or replace procedure p_select_all(cursor_all out sys_refcursor)asbeginopen cursor_all forselect stu_no, stu_name,stu_sex ,stu_birthday ,stu_phone ,stu_cs_class ,cs_dept ,cs_grade from student, cswhere stu_cs_class=cs_classorder by stu_no;end;/create or replace procedure p_select_count(myrowcount out number)asbeginselect count(*) into myrowcountfrom student;end;/五、编程步骤1.连接数据库的javabean由于在本系统的多个JSP页面中都需要访问数据库,因此使用一个JavaBean 来专门完成数据库的连接。