1、软 件 学 院综合训练项目报告书课程名称 Oracle 数据库 项目名称 信息管理系统学生成绩管理系统 专业班级 软件工程 12-2 班 组 别 第七组 成 员 高寒、刘兵、王语嫣、邹辉 任课教师 刘腊梅 2015 年 6 月目 录1 设计时间 12 设计任务 13 设计内容 13.1 系统设计 13.1.1 系统功能概述 13.1.2 系统功能模块设计 33.2 数据库设计 33.2.2 数据库逻辑结构设计 43.3 数据库实现 53.3.1 创建用户 53.3.2 创建表和约束 63.3.3 创建视图及索引 73.3.4 创建存储过程、函数及触发器 73.4 测试与分析 93.4.1 测试
2、 93.4.2 分析 .103.5 代码 .104 总结与展望 .15参考文献 .1601 设计时间2015.05.252015.06.052 设计任务利用所学的有关数据库设计知识,设计一个基于 Oracle 数据库的信息管理系统。通过该部分的操作与实践,使学生能够进一步巩固 Oracle 数据库应用的方法和技术,提高基于 Oracle 数据库的应用程序综合设计能力。3 设计内容 掌握 ORACLE 数据库的特点,熟悉 SQL 命令和 PL/SQL 的编程特点,运用所学知识解决现实问题,完成学生成绩管理系统的后台数据库设计,提高系统性能。在该项目中,不考虑需求分析过程,要求建立以下关系:院系信
3、息:院系编号、院系名称、院系主管、地址、院系人数;学生基本信息:院系编号、学号、姓名、性别、学生类型、入学日期、籍贯、身份证号、详细地址、出生日期、所学专业、民族、电话(家) 、缴费总计、已修学分、备注;课程信息:课程号、课程名称、开设年级、学时数、学分;成绩单:学号、课程号、学期、成绩、备注。使用存储过程统计每个学生的已修学分。使用触发器实现当登记学生成绩(60 分以上)时自动统计学生的已修学分。使用函数实现统计各课程的未及格人数,要求输入参数课程号后,返回各课程的人数 NUM。并实现调用,查数据库系统设计的未及格人数。将上实验中的存储过程与本实验中函数创建包。3.1 系统设计 3.1.1
4、系统功能概述通过数据库后台实现对学生成绩的管理,主要功能如下:对每个学生的“已修学分”进行统计。当登记学生成绩(60 分以上)时自动统计学生的已修学分。统计各课程的未及格人数,要求输入参数课程号后,返回各课程的人数 NUM。1查“数据库系统设计”的未及格人数。顶层数据流图如图 1 所示:F1 课程表信息 F2 统计信息F3 选课信息 F4 课程信息F5 成绩查询结果 F6 成绩信息 F7 学生信息 F8 学院信息 图 1 顶层数据流图一层数据流图如图 2 所示:F1F7 F8 F3 F4学生信息表 学院信息表 课程信息表成绩信息表F6 F2F5图 2 一层数据流图学生成绩信息管理系统学生管理员
5、学生信息管理 课程信息管理成绩信息管理23.1.2 系统功能模块设计系统工程模块设计如图 3 所示:图 3 系统功能模块图3.2 数据库设计3.2.1 数据库需求分析学生成绩管理系统需要学生信息表、课程信息表、学院信息表、成绩信息表对相关数据进行存储。通过对四个表进行相关操作,从而实现该系统的相关功能。E-R 图如图4 所示:n mm n *图 4 学生成绩管理系统实体联系图实体联系图中各实体及部分联系的属性如表 1 所示:学生成绩管理系统学生信息管理添加学院信息添加学生信息修改学生信息查询学生信息添加课程信息修改课程信息学生信息管理查询课程信息学生信息管理添加成绩信息查询成绩信息统计成绩信息
6、修改成绩信息学院课程学生 属于选修成绩3表 1 实体属性表实体名 属性学生 院系编号、学号、姓名、性别、学生类型、入学日期、籍贯、身份证号、详细地址、出生日期、所学专业、民族、电话(家) 、缴费总计、已修学分、备注学院 院系编号、院系名称、院系主管、地址、院系人数课程 课程号、课程名称、开设年级、学时数、学分成绩 学号、课程号、学期、成绩、备注3.2.2 数据库逻辑结构设计由实体练习图图 4 中可以转化为以下关系模式:(1)学生(学号,院系编号#,姓名,性别,学生类型,入学日期,籍贯,身份证号,详细地址,出生日期,所学专业,民族,电话,缴费总计,已修学分,备注)(2)院系(院系编号,院系名称,
7、院系主管,地址,院系人数)(3)课程(课程号,课程名称,开设年级,学时数,学分)(4)成绩(学号#,课程号#,学期,成绩,备注)注:下划线代表主键, “#”代表外键。3.2.2 数据库逻辑结构设计由数据库逻辑结构设计可得出数据库的物理结构如表 2、表 3、表 4 表 5 所示:4表 2 学生信息表属性名 标识 类型 长度院系编号 deno number 10学号 sno number 10姓名 sname char 5性别 sex char 5学生类型 type char 5入学日期 enrollment date籍贯 native varchar2 30身份证号 identity cahr
8、20详细地址 sadd varchar2 20出生日期 birthday data所学专业 profession char 10民族 nation char 5电话(家) telephone number 15缴费总计 money number 10已修学分 haveredit number 5备注 remark varchar2 20表 3 学院信息表属性名 标识 类型 长度院系编号 deno number 10院系名称 dename varchar2 10院系主管 dehost char 5地址 desite varchar2 20院系人数 denum number 10表 4 课程信息表
9、属性名 标识 类型 长度课程号 cno number 10课程名称 cname char 5开设年级 grade varchar2 5学时数 time number 5学分 gredit number 5表 5 成绩信息表属性名 标识 类型 长度学号 sno number 10课程号 cno number 10学期 period vachar2 10成绩 score number 5备注 remark varchar2 2053.3 数据库实现3.3.1 创建用户创建用户:create user GH identified by GZLW;授予用户权限:grant create session
10、,resource,unlimited tablespace to GH;连接用户:conn GH/GZLW;查询用户当前权限:select * from session_privs;3.3.2 创建表和约束创建学院信息表:create table department(deno number(10) not null primary key,dename varchar2(10) not null,dehost char(5) not null,dsite varchar2(20) not null,denum number(10) not null);穿件学生信息表:create tabl
11、e student(deno number(10) not null,sno number(10) not null primary key,sname char(5) not null,sex char(5) not null check(sex=男or sex=女),type char(5) not null,enrollment date not null,native varchar2(20) not null,identity char(20) not null,saddress varchar2(20) not null,birthday date not null,profess
12、ion char(10) not null,nation char(5) not null,telephone number(11) not null,money number(10) not null,havecredit number(5) not null,remark varchar2(20),foreign key (deno) references department(deno);创建课程信息表:create table course(cno number(10) not null primary key,cname varchar2(10) not null,grade cha
13、r(5) not null check(grade=大一 or grade=大二 or grade=大三 orgrade=大四),time number(5) not null,credit number(5) not null);创建成绩信息表:create table report_card(sno number(10) not null,cno number(10) not null,6period varchar2(10) not null,score number(5) not null,remark varchar2(20) not null,primary key (sno,cn
14、o),foreign key (cno) references course(cno),foreign key (sno) references student(sno);3.3.3 创建视图及索引创建学生视图:create view stu_viewasselect student.sname,course.creditfrom student,course,report_cardwhere student.sno=report_card.sno and o=report_o3.3.4 创建存储过程、函数及触发器创建游标:declarecur_name char(5);cur_credit
15、number(5);cursor my_cursor is select sname,sum(credit) from stu_view group by sname;beginopen my_cursor;loopfetch my_cursor into cur_name,cur_credit;exit when my_cursor%notfound;dbms_output.put_line(cur_name| |cur_credit);end loop;close my_cursor;end;创建过程,统计某一学生的已修学分:create or replace procedure p17i
16、sbegindeclarecur_name char(5);cur_credit number(5);cursor my_cursor is select sname,sum(credit) from stu_view group by sname;beginopen my_cursor;loopfetch my_cursor into cur_name,cur_credit;exit when my_cursor%notfound;dbms_output.put_line(cur_name| |cur_credit);end loop;close my_cursor;end;end;创建触发
17、器,登记学生成绩(60 分以上)时自动统计学生的已修学分:create or replace trigger t3after insert on report_cardfor each rowdeclarepragma autonomous_transaction;beginif :new.score=60 thenp1;end if;end;/创建函数81)创建函数:create or replace function f1(fcno report_o%type)return numbernum number;beginselect count(*) into num from report
18、_cardwhere cno=fcno and score=60 thenp1;end if;end;13/插入:insert into report_card values(202,1004,2,90,null)函数:create or replace function f1(fcno report_o%type)return numbernum number;beginselect count(*) into num from report_cardwhere cno=fcno and score60;dbms_output.put_line(不及格人数为 |num);return num
19、;end;调用函数:declarev number(8);beginv:=F1(1001);end;144 总结与展望本次项目设计任务是运用所学知识设计一个基于 Oracle 数据可的信息管理系统。设计过程中遇到了很多难题,对于 Oracle 本学期所学知识不能融会贯通,很多 Sql 命令不能熟练运用,因此设计过程可谓一波三折。本组根据四人所擅长的不同领域进行了明确分工,同时,遇到问题的时候还会聚在一起集中解决,虽然不是很顺利,但总算完成了本次的综合训练。通过本次综合项目训练,我们四人感觉受益良多,在设计过程中,通过解决遇到的问题,使我们对本学期所学 Oracle 知识的掌握更加深刻,对之前所
20、学编程知识又进行了一次复习巩固。通过协调系统各模块之间的运行,从实践上熟悉巩固了 Oracle 数据库应用的方法和在技术,提高了基于 Oracle 数据库的应用程序综合设计能力。通过运用 Oracle 作为管理系统的数据库,深切的体会到了 Oracle 数据库的强大,仅仅这一学期的学习,也只是初窥皮毛,在以后的学习生活中,依然要不断学习,充实自己。15参考文献1 屈辉立,陈可明,石武信.JSP 网站编程教程M. 第 1 版, 北京:北京希望电子出版社,2005 2 白勇.用 B/S 模式构建在线考试系统 J,重庆电力高等专科学校学报,2003,10(4): 100130. 3 Jiang Guo,Yuehong Liao,Behzad Parviz.A Survey of J2EE Application Performance Management SystemsJ,Proceedings of the IEEE International Conference on Web Services (ICWS04),2004.6(5):1732.4 VB 数据库管理范例: http:/