oracle课程设计实验高校学生课程成绩据库设计

时间:2020-07-11 20:07:12 浏览量:

学号 ORACLE应用期末考查报告 题 目:高校学生课程成绩据库设计 专 业 软件工程 班 级 姓 名 成 绩 教 师 《oracle应用》课程考试要求 考核拟采用大作业报告形式,将学生的学习成果心得体会以文档的形式提交。请批准。

本次考核要求每个学生完成的内容如下:
⑴选定某一主题,创建一个oracle数据库,对其进行日常管理及应用(全部用SQL语句实现):
创建数据库实例,数据库表空间,创建管理员,普通用户,并分别授予相应权限;

至少建立5个表,以及表间关系,使用到序列,索引,视图,同义词,约束,每个表至少插入相关信息10条记录;

要求使用sqlplus,pl/sql建立存储过程,触发器和程序包等代码,其中要求用到游标,异常,各种语句等对表中数据进行处理,建立报表;

有实力的同学加入界面,连接数据库;

要有操作截图展示,字数要求4000字左右;

⑵对 oracle数据库的认识及心得体会,要求字数1000字以上。

【3】 以班级体刻盘,每人以自己的名字命名文件夹;

成绩评定方法:
1、平时成绩占30%,大作业及报告占70%。

ORACLE应用期末考查报告 1 1 功能需求分析 4 2概要设计 4 3逻辑设计 5 3.1 6 3.2 6 3.3 6 3.4 7 3.5 7 3.6 7 4实现 8 5测试数据 10 5.1 10 5.2 11 5.3 12 5.4 13 6数据库备份 14 7心得体会 14 8参考资料 15 1 功能需求分析 高校学生课程成绩管理系统主要实现课程开设,教师授课,学生选课管理。每学期学校可以开设若干门课程,每门课程可以有多个教学班组成,每个老师可以选择若干个教学班进行授课,每个学生只能参加相同课程的一个教学班选课,但可以选择多个不同课程教学班。高校学生课程成绩管理系统主要功能如下:
(1) 教师管理。主要实现教师信息的管理,包括课程信息添加,修改,删除和查询等任务。

(2) 课程管理。主要实现按教学计划开设课程的管理。包括课程信息添加,修改,删除和查询等任务。

(3) 学生管理。主要实现在校学生信息管理。包括学生信息添加,修改,删除和查询等任务。

(4) 课程开设管理。主要实现每学期的教学任务。每门课程将分成若干个教学班进行教学。

(5) 教师选择教学任务管理。主要实现教师选择教学班,实现教学任务的分配。

(6) 学生选课管理。主要实现学生选择教学班。达到学生选课目的。

(7) 学生成绩管理。主要实现学生选修课程成绩录入,修改,删除和查询等功能。

(8) 统计管理。按教师,课程,时间统计教师在一个时间所授课程的平均成绩;
按课程时间统计学校在一个时间该课程所有学生的平均成绩。

2概要设计 根据高校学生课程成绩管理系统的功能需求分析,设计4个实体对象分别是:教师,学生,课程和开设课程。教师对象描述教师的基本信息,包括教师号,姓名,性别和联系电话;
课程对象描述课程的基本信息,包括课程号,课程名,学分,系别;
学生对象描述学生的基本信息,包括学号,姓名,性别,出生年月,系别和联系电话。实体之间存在3个关系,分别是讲授,开设和选课。讲授描述教师和开设课程之间的关系,开设描述课程和开设课程的关系,选课描述学生和开设课程之间的关系。高校学生课程成绩管理系统E-R图如图(1) 。

教师 讲授 开设可程 选课 学生 姓名 性别 教师号 联系电话 时间 成绩 姓名 性别 学号 系别 出生年月 联系电话 开设 课程 系别 课程名 课程号 学分 1 M 1 M n 图1 3逻辑设计 根据高校学生课程成绩管理系统概要设计。设计关系模型数据库。该系统设计4个实体对象表,1个关系表和2个视图,分别是teacher教师表,student学生表,course课程表,KC开设课程表,SC学科表,avg_v视图和cou_v视图。

3.1 teacher教师表包含4个字段。教师号为主键,性别字段只能为“男”或“女”。如下表teacher教师表所示. teacher教师表 字段名 属性 类型 约束 sname 姓名 Char(20) Not null sex 性别 Char(2) Check(sex in(n男女)) tno 教师号 Char(12) Primary key tphone 联系电话 Char(20) Not null 3.2 student学生表包含6个字段。学生对象学号作为主键,性别字段只能为“男”或“女”。如下表student学生表所示. student学生表 字段名 属性 类型 约束 sname 姓名 Char(20) Not null sex 性别 Char(2) Check(sexin(n男女)) sno 学号 Char(12) Primary key sdept 系别 Char(12) sphone 联系电话 Char(11) brithday 出生年月 Date 3.3 course课程表包含4个字段。课程对象用课程号作为主键,且课程名唯一。如下表course课程表所示。

course课程表 字段名 属性 类型 约束 cno 课程号 Number(6) Primary key cname 课程名 Char(20) unique credit 学分 Number(2,1) sdept 系别 Char(12) 3.4 KC开设课程表包含3个字段。KC开设课程表用shijian,tno和cno作为主键。如下表KC开设课程表所示。

KC开设课程表 字段名 属性 类型 约束 shijian 时间 char(20) tno 教师号 foreign key,reference teacher(tno) cno 课程号 foreign key,reference course(cno) 3.5 SC选课表包含5个字段。SC开设课程表用sno,tno,cno和shijian作为表的主键。如下表SC选课表所示。

SC选课表 字段名 属性 类型 约束 grade 成绩 number(2) not null sno 学号 foreign key,reference student(cno) tno 教师号 foreign key,reference KC(tno,cnoshijian) cno 课程号 shijian 时间 3.6 为了实现高校学生课程成绩管理系统的统计管理功能,设计avg_v视图和cou_v视图。Avg_v视图包含教师名,课程名,时间和平均成绩4个字段,通过查询teacher教师表,course课程表和SC选课,在教师号和课程号字段上等值链接,并且按照教师名,课程名和时间分组,实现教师所授课程的平均成绩。Cou_v视图包含时间,课程和平均成绩3个字段,通过查询course课程表和SC选课表,在课程号字段上等值链接,并且按照时间和课程名分组,实现统计学习在某个时间课程的平均成绩。

在SC选课表上创建索引,索引建立在SC选课表的学号,课程号,教师号和时间字段上。课程号和教师号按升序排列,学号和时间按降序排列。

4实现 --创建表空间test CREATE TABLESPACE test DATAFILE ‘c:\app\john\oradata\orcl\test01.dbf’ SIZE 10M; --创建用户manager CREATE USER manager IDENTIFIED BY abc123 DEFAULT TABLESPACE test QUOTA 5M ON test; --授权系统权限 GRANT CREATE SESSION,CREATE TABLE TO manager; --用manager账号登陆 CONNECT manager/abc123 --创建teacher教师表 CREATE TABLE teacher( tname CHAR(20) NOT NULL, sex CHAR(2) CHECK(sex in (‘男’,’女’)), tno CHAR(12) PRIMARY KEY, tphone CHAR(20) NOT NULL); --创建course课程表 CREATE TABLE course ( cname CHAR(20) UNIQUE, cno NUMBER(6) PRIMARY KEY, credit NUMBER(2,1) sdept CHAR(12)); --创建student学生表 CREATE TABLE student ( sname CHAR(20) NOT NULL, sex CHAR(2) CHECK(sex in (‘男’,’女’)), sno CHAR(12) PRIMARY KEY, sdept CHAR(12), sphone CHAR(11), birthday DATA)); --创建KC开设课程表 CREATE TABLE KC ( tno CHAR(12) REFERENCES teacher(tno) ON DELETE CASCADE, cno NUMBER(2) REFERENCES course(cno) ON DELETE CASCADE, shijian CHAR(20) PRIMARY KEY(shijian, tno, cno)); --创建SC表 CREATE TABLE SC ( sno NUMBER(12) REFERENCES student(sno) ON DELETE CASCADE, cno NUMBER(6), tno CHAR(12), shijian CHAR(20), grade NUMBER(2) NOT NULL, FOREIGN KEY(shijian, tno, cno) REFERENCES KC(shijian, tno, cno) ON DELETE CASCADE, PRIMARY KEY(shijian, tno, cno,sno)); --创建视图avg_v CREATE VIEW avg_v(tname,cname,shijian,Gavg) AS SELECT tname,cname,shijian,avg(grade) FROM teacher a,course b,SC c WHERE a.tno=c.tno AND b.cno=c.cno GROUP BY (tname,cname,shijian); --创建视图cou_v CREATE VIEW cou_v (shijian,cname,Gavg) AS SELECT shijian, cname,avg(grade) FROM course a,SC b WHERE a.cno= b.cno GROUP BY (shijian, cname); --创建索引 CREATE UNIQUE INDEX SCno on SC(sno DESC,tno ASC,cno ASC,shijian DESC); --用户登录的存储过程 create or replace procedure denglu(flag out number,username varchar2,upwd number)---登录 as i varchar2(20); p number; begin flag:=0; select t.ename into i from scott.yonghu t where t.ename=username; if i is not null then flag:=1; select t.eno into p from scott.yonghu t where t.ename=username and t.eno=upwd; if upwd is not null then flag := 2;----登录成功 else flag := 1;-----密码不正确 end if; else flag := 0;------用户不存在 end if; commit; exception when no_data_found then rollback; end; 5测试数据 5.1 teacher教师表测试数据如下:
tname sex tno tphone 教师一 男 2012112601 1310000001 教师二 男 2012112602 1310000002 教师三 女 2012112603 1310000003 教师四 男 2012112604 1310000004 教师五 男 2012112605 1310000005 代码如下:INSERT INTO teacher(tname,sex,tno,tphone) VALUES(‘教师一’,’ 男’,’ 2012112601’,’1310000001’); INSERT INTO teacher(tname,sex,tno,tphone) VALUES(‘教师二’,’ 男’,’ 2012112602’,’1310000002’); INSERT INTO teacher(tname,sex,tno,tphone) VALUES(‘教师三’,’ 女’,’ 2012112603’,’1310000003’); INSERT INTO teacher(tname,sex,tno,tphone) VALUES(‘教师四’,’ 男’,’ 2012112604’,’1310000004’); INSERT INTO teacher(tname,sex,tno,tphone) VALUES(‘教师五’,’ 男’,’ 2012112605’,’1310000005’); 5.2 student表测试数据如下:
sname sex sno sdept sphone birthday 学生一 男 200901010121 计算机 151000001 1989-07-15 学生二 男 200901010148 网络工程 151000002 1990-04-09 学生三 男 200901010114 电子信息 151000003 1988-10-12 学生四 男 200901010141 自动化 151000004 1990-07-27 学生五 男 200901010125 数学 151000005 1990-08-24 学生六 男 200901010144 计算机 151000006 1988-08-25 代码如下:
INSERT INTO student(sname,sex,sno,sdept,sphone,birthday) VALUES(‘学生一’,’ 男’,’ 200901010121’,’ 计算机’,’151000001’, to_data(’ 1989-07-15’,’yyyy-mm-dd’)); INSERT INTO student(sname,sex,sno,sdept,sphone,birthday) VALUES(‘学生二’,’ 男’,’ 200901010148’,’ 网络工程’,’151000001’,to_data(’ 1990-04-09’,’yyyy-mm-dd’)); INSERT INTO student(sname,sex,sno,sdept,sphone,birthday) VALUES(‘学生三’,’ 男’,’ 200901010114’,’ 电子信息’,’151000003’, to_data(’ 1988-10-12’,’yyyy-mm-dd’)); INSERT INTO student(sname,sex,sno,sdept,sphone,birthday) VALUES(‘学生四’,’ 男’,’ 200901010141’,’ 自动化’,’151000004’, to_data(’ 1990-07-27’,’yyyy-mm-dd’)); INSERT INTO student(sname,sex,sno,sdept,sphone,birthday) VALUES(‘学生五’,’ 男’,’ 200901010144’,’ 计算机’,’151000006’, to_data(’ 1988-08-25’, ’yyyy-mm-dd’)); INSERT INTO student(sname,sex,sno,sdept,sphone,birthday) VALUES(‘学生一’,’ 男’,’ 200901010144’,’ 计算机’,’151000001’, to_data(’ 1989-07-15’, ’yyyy-mm-dd’)); 5.3 KC开设课程表数据如下:
tno cno time 2012112601 112601 2011-2012第二学期 2012112601 112601 2011-2013第一学期 2012112602 112602 2011-2012第二学期 2012112602 112602 2011-2013第一学期 2012112603 112603 2011-2012第二学期 2012112603 112603 2011-2013第一学期 2012112604 112604 2012-2013第一学期 2012112604 112604 2010-2011第一学期 2012112605 112605 2010-2011第一学期 2012112605 112605 2011-2012第二学期 代码如下:
INSERT INTO KC(tno,cno,shijian) VALUES(‘2012112601’,’ 112601’,’ 2011-2012第二学期’); INSERT INTO KC(tno,cno,shijian) VALUES(‘2012112601’,’ 112601’,’ 2011-2013第一学期’); INSERT INTO KC(tno,cno,shijian) VALUES(‘2012112602’,’ 112602’,’ 2011-2012第二学期’); INSERT INTO KC(tno,cno,shijian) VALUES(‘2012112602’,’ 112602’,’ 2011-2012第一学期’); INSERT INTO KC(tno,cno,shijian) VALUES(‘2012112603’,’ 112603’,’ 2011-2012第二学期’); INSERT INTO KC(tno,cno,shijian) VALUES(‘2012112603’,’ 112603’,’ 2011-2012第一学期’); INSERT INTO KC(tno,cno,shijian) VALUES(‘2012112604’,’ 112604’,’ 2012-2013第一学期’); INSERT INTO KC(tno,cno,shijian) VALUES(‘2012112604’,’ 112604’,’ 2010-2011第一学期’); INSERT INTO KC(tno,cno,shijian) VALUES(‘2012112605’,’ 112605’,’ 2010-2011第一学期’); INSERT INTO KC(tno,cno,shijian) VALUES(‘2012112605’,’ 112605’,’ 2011-2012第二学期’); 5.4 SC选课表中的数据如下:
sno cno tno time grade 200901010121 112601 2012112601 2012-2013第一学期 96 200901010121 112602 2012112602 2011-2012第二学期 98 200901010121 112605 2012112605 2010-2011第一学期 99 200901010148 112601 2012112601 2012-2013第一学期 85 200901010148 112605 2012112605 2011-2012第二学期 92 200901010114 112602 2012112602 2011-2012第二学期 75 200901010114 112603 2012112603 2012-2013第一学期 88 200901010141 112603 2012112603 2012-2013第一学期 82 200901010141 112604 2012112604 2012-2013第一学期 80 200901010125 112604 2012112604 2012-2013第一学期 94 200901010125 112601 2012112601 2011-2012第二学期 68 200901010144 112601 2012112601 2012-2013第一学期 77 200901010144 112602 2012112602 2011-2012第二学期 87 200901010144 112605 2012112605 2010-2011第一学期 89 代码如下:
INSERT INTO SC(sno,cno,tno,shijian,grade) VALUES(‘200901010121’,’ 112601’,’ 2012112601’,’ 2012-2013第一学期’,’ 96’); INSERT INTO SC(sno,cno,tno,shijian,grade) VALUES(‘200901010121’,’ 112602’,’ 2012112602’,’ 2011-2012第二学期’,’ 98’); INSERT INTO SC(sno,cno,tno,shijian,grade) VALUES(‘200901010121’,’ 112605’,’ 2012112605’,’ 2010-2011第一学期’,’95’); INSERT INTO SC(sno,cno,tno,shijian,grade) VALUES(‘200901010148’,’ 112601’,’ 2012112601’,’ 2012-2013第一学期’,’85’); INSERT INTO SC(sno,cno,tno,shijian,grade) VALUES(‘200901010148’,’ 112605’,’ 2012112605’,’ 2011-2012第二学期’,’ 92’); INSERT INTO SC(sno,cno,tno,shijian,grade) VALUES(‘200901010114’,’ 112602’,’ 2012112602’,’ 2011-2012第二学期’,’75’); INSERT INTO SC(sno,cno,tno,shijian,grade) VALUES(‘200901010114’,’ 112603’,’ 2012112603’,’ 2012-2013第一学期’,’ 88’); INSERT INTO SC(sno,cno,tno,shijian,grade) VALUES(‘200901010141’,’ 112603’,’ 2012112603’,’ 2012-2013第一学期’,’ 82’); INSERT INTO SC(sno,cno,tno,shijian,grade) VALUES(‘200901010141’,’ 112604’,’ 2012112604’,’ 2012-2013第一学期’,’80’); INSERT INTO SC(sno,cno,tno,shijian,grade) VALUES(‘200901010125’,’ 112604’,’ 2012112604’,’ 2012-2013第一学期’,’ 94’); INSERT INTO SC(sno,cno,tno,shijian,grade) VALUES(‘200901010125’,’ 112601’,’ 2012112601’,’ 2011-2012第二学期’,’ 68’); INSERT INTO SC(sno,cno,tno,shijian,grade) VALUES(‘200901010144’,’ 112601’,’ 2012112601’,’ 2012-2013第一学期’,’ 77’); INSERT INTO SC(sno,cno,tno,shijian,grade) VALUES(‘200901010144’,’ 112602’,’ 2012112602’,’ 2011-2012第二学期’,’ 87’); INSERT INTO SC(sno,cno,tno,shijian,grade) VALUES(‘200901010144’,’ 112605’,’ 2012112605’,’ 2010-2011第一学期’,’ 89’); 6数据库备份 alter tablespace test begin backup; host copyc:\app\john\oraddta\orcl\test01.dbf c:\users\john\documents\test01.dbf alter tablespace test end backup; 7心得体会 经过一个星期的设计和开发,对高校学生课程成绩管理系统基本开发完毕。通过不断地对程序及各模块进行修改、编译、调试、运行。以及应用了Oracle 11g语言,对数据库的创建、修改、删除,我深刻意识到设计的系统必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程。才能做好符合市场需求的系统。

很多时候感觉后面的设计根本无法继续,感觉像是被前面做的各种图限制了。但是不管做什么,我们都要相信自己,不能畏惧,不能怕遇到困难,什么都需要去尝试,有些你开始认为很难的事在你尝试之后你可能会发现原来它并没有你以前觉得的那样。

通过这次大作业真切地体会到作业的目的并仅仅是自己单纯任务的完成,而在于重新巩固已学过的知识,从而获得新的知识。设计进行的非常艰难,编码非常不容易,才发现做一个项目最重要的不在于如何实现,而是实现之前的需求分析和模块设计。创新很难,有些流行的系统其实现并不难,难的在于对市场的分析和准确定位。设计,是一个任重道远的过程,需要我么不断的学习和创新。

整个过程中,从需求分析到设计、编码、测试,我都力求规范化和文档化,努力让自己以前学的知识运用到本系统的开发中,尽量保证整个系统的开发进度和质量,顺利完成这次的课程设计。

  不过,在系统开发过程中,好多知识都是随学随用,就增加了很多不必要的麻烦。虽说这些都会消耗系统开发的时间,但在同学以及自己的不断努力下,不怕麻烦,不怕重复,当克服了这些问题之后,我会感觉到自己的知识在一点一滴地积累,不知不觉中增加。   我相信,只要肯钻研,只要挤时间,一切自己想要的知识都可以掌握。

通过本次课程设计,我对高校学生课程成绩管理系统经典问题有了进一步的了解,尤其是在设计数据库方面有了新的认识。在这次课程设计中,由于没有掌握好进程同步中的一些关键知识,导致在实际操作中遇到了很多问题,比如说对对数据表的第三范式规划。此次课程设计使我明白,在程序设计中,我们需要有一个清晰的整体结构,然后针对每个模块逐步实现其功能,在设计中也需要有严谨和认真的态度,才会更好的完成一项任务。

8参考资料 [1] 尹志宇、郭晴,数据库原理与应用教程—sql server,北京:清华大学出版社,2011.07 [2]黄维通、王晓英,SQL Server 数据库技术与应用 ,北京:清华大学出版社,2011.01 [3] 庞娅娟、房大伟SQL Server 应用与开发范例宝典(第二版),北京:人民邮电出版社,2009.10 [4]王小科、王军、赵会东,C#项目开发案例全程实录(第二版),北京:清华大学出版社,2011.01 [5]孙士保、张瑾,ASP.NET数据库网站设计教程(C#版)北京:电子工业出版社,2011.02

推荐访问:高校学生 课程设计 成绩 课程 实验

《oracle课程设计实验高校学生课程成绩据库设计.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:

文档为doc格式

一键复制全文 下载 投诉