ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:78KB ,
资源ID:4093980      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4093980.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(级数据库课程设计安排.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

级数据库课程设计安排.docx

1、级数据库课程设计安排中南大学课程设计I设计报告题 目学生姓名学 号专业班级指导老师数学科学与计算技术学院2011年1月题目一、实验目的、内容描述进行的程序设计,采用进行, 要达到内容.应包含有类和指针二、实验程序设计及结构1、需求分析2、设计结构(包括总体结构和数据结构)三、设计过程写出设计过程,实验源代码可不写出,但实验中出错信息及处理方法及解决错误的方法要写。四、设计的特点和结果包括实验处理结果和设计心得。指出实验结果运行的操作系统和平台。参考文献1、人名,文章名,出版机构,出版时间2、附录自己做的主要实验源代码数据库课程设计教案大纲课程编号:13020000课程名称:数据库课程设计学分:

2、 2 总学时:2周先修课程要求:数据库原理与技术适应专业:信息与计算科学、数学与应用数学参考教材:1. 数据库原理与技术2. Oracle入门与提高、课程在培养方案中的地位、目的和任务本课程设计是为信科、应数专业安排的重要的实践环节,数据库课程设计目的是使学生通过做一个具体的设计题目,将课本上的理论知识和实际有机的结合起来,培养学生运用所学的理论知识和技能,分析解决实际问题的能力,培养学生调查研究、查阅技术文献、资料、编程开发以及编写技术文献的能力。提供独立编程的实践机会。二、课程设计的基本要求要求掌握Oracle数据库编程的特点,掌握面向对象程序设计的方法,根据所给题目,通过调查研究和上机实

3、习,收集和调查有关技术资料。结合软件开发技术的思想,正确划分系统功能模块,进行系统的详细设计,并说明各功能模块的具体功能。掌握设计课题的基本步骤和方法,写出系统实现的具体方法,包括系统界面、功能等,附课程设计原程序。并提出系统测试方法,对所开发的系统进行测试,得出测试结果。并分析结果,评价系统的性能。三、课程的基本内容以及重点难点1. 课程的基本内容:对数据库原理与技术的教案内容、Oracle数据库编程,前后台数据库的连接。2. 难点:数据库的关联、对具体问题的编程和开发技术。四、课程设计的安排和选题原则上要求每个学生基础题和综合题各选一题,具体任务由指导老师布置,提出设计内容、设计要求及实施

4、计划。学生熟习题目,给出解题方案和算法设计.进行系统设计,给出系统框图和流程图.编码与测试,要求有说明文档及测试报告.完成设计报告,不少于2000字五、课程设计报告要求写出不少于2000字的课程设计报告,程序设计文档要求:对系统进行功能模块分析、控制模块分析正确,系统设计要实用,编程简练、可用、功能较全面,说明书、流程图要清楚。基本结构:设计分析、算法或程序流程图源程序(附解释说明)调试报告用户使用说明。报告中除了在封面应有题目、班级、姓名、学号和课程设计日期以外,其正文一般有如下几个方面的内容:一、课程设计目的;二、系统功能和使用说明,硬件环境:本系统适用于那种类型的计算机,内存容量为多大,

5、应配备的外部设备有哪些;软件环境:本系统的设计采用的是何种语言,应在什么软件环境下使用;三、需求分析;四、系统概念结构设计;五、数据库逻辑结构设计(数据库结构说明);六、系统的实现过程。七、结束语。通过搞课程设计,你有何感想,学到了什么?六、考核方式与评分方法根据课程设计要求,利用所选题目,完成设计和开发任务,写出规范的设计报告,并根据实习到课情况、软件上机运行情况、界面是否友好、报告是否规范等综合评定。如多人合作完成,应根据各人所承担的工作情况,进行排序。指导教师负责组织检查、考勤教师分组负责(每位教师与担任的班级同时上下课)帮助学生熟悉程序编写,及时查究错误。考核规范包括:程序设计的可用性

6、,实用性,通用性,可扩充性(40%)学生的动手能力,创新精神(20%)总结报告(20%)学习态度(20%)。七、参考题目与具体要求举例参考题目:第一部分:基础题第一题进入自己创建的用户下进行以下操作。1、创建表STUDENT、COURSE、GRADE,各个表的结构如下: (1) STUDENT学号 NUMBER(6),姓名 VARCHAR2(12)入学时间 DATE,专业 VARCHAR2(20),性别 CHAR(2),年龄 INTEGER (2) COURSE课程号 NUMBER(6),课程名称 VARCHAR2(20),学时 INTEGER,学分 INTEGER(3) GRADE学号 NU

7、MBER(6),课程号 NUMBER(6),成绩 NUMBER(2) 2、向上面的三个表中分别插入5条纪录。示例:(1)(1) INSERT INTO STUDENT (学号,姓名,入学时间,专业,性别,年龄)VALUES (100001,HUANGWEI,TO_DATE(1999-09-10,YYYY-MM-DD),COMPUTER,男,23)。(2)(2) INSERT INTO COURSE (课程号,课程名称,学时,学分) VALUES (000001,多媒体,32,4)。(3)(3) INSERT INTO GRADE (学号,课程号,成绩)VALUES (100001,000001

8、,90)第二题练习:建立TEAMSTATS表如下:NAME POS AB HITS WALKS SINGLES DOUBLES TRIPLES HR SOJONES 1B 145 45 34 31 8 1 5 10DONKNOW 3B 175 65 23 50 10 1 4 15WORLEY LF 157 49 15 5 8 3 3 16 DAVID OF 187 70 24 48 4 0 17 42HAMHOCKER 3B 50 12 10 10 2 0 0 13CASEY DH 1 0 0 0 0 0 0 1在TEAMSTATS表上做如下操作:(1)查看WALKS小于20的球员的个数。SQ

9、L SELECT COUNT(*) FROM TEAMSTATS WHERE WALKSSELECT SUM(HITS) TOTAL_HITS FROM TEAMSTATS。(4)查看3B位置上的队员总的DOUBLES及总的SO。(5)查看漏球(SO)的平均数。SQLSELECT AVG(SO) AVE_STRIKE_OUTS FROM TEAMSTATS。(6)查看TRIPLES为0的队员的HITS的平均数。(7)查看所有队员的最高SIGGLES是多少。SQLSELECT MAX(SIGGLES) FROM TEAMSTATS。 第三题已知公司的员工表EMP(EID, ENAME, BDAT

10、E, SEX, CITY),部门表DEPT(DID, DNAME, DCITY),工作表WORK(EID,DID,STARTDATE,SALARY)。各个字段说明如下:EID员工编号,最多6个字符。例如A00001(主键)ENAME员工姓名,最多10个字符。例如SMITHBDATE出生日期,日期型SEX员工性别,单个字符。F或者MCITY员工居住的城市,最多20个字符。例如:上海DID部门编号,最多3个字符。例如 A01 (主键)DNAME部门名称,最多20个字符。例如:研发部门DCITY部门所在的城市,最多20个字符。例如:上海STARTDATE员工到部门上班的日期,日期型SALARY员工的

11、工资。整型。请使用ORACLE的sql*plus 完成下列的操作1、 创建表EMP,DEPT,WORK,并定义表的主键和外键。2、 向每个表中插入适当的数据。例如:插入三条部门的数据,分别为每个部门插入两条员工数据3、 查询“研发”部门的所有员工的基本信息4、 查询拥有最多的员工的部门的基本信息(要求只取出一个部门的信息),如果有多个部门人数一样,那么取出部门编号最小的那个部门的基本信息。5、 显示部门人数大于5的每个部门的编号,名称,人数6、 显示部门人数大于5的每个部门的最高工资,最低工资7、 列出员工编号以字母P至S开头的所有员工的基本信息8、 删除年龄超过60岁的员工9、 为工龄超过1

12、0年的职工增加10%的工资第四题 PL/SQL快速学习:1、PL/SQL 是一项ORACLE 的技术,是ORACLE 的过程型语言,它由规范的SQL 语句和一系列可以让你在不同的情况下对SQL 语句的执行进行控制的命令组成。2、PL/SQL 块的结构: PL/SQL 是一种块结构语言,也就是说PL/SQL 的程序可以分成逻辑块来写。块是PL/SQL 代码的逻辑单元,包括至少一个BEGIN 部分和可以选择的DECLARE 以及EXCEPTION 部分。 PL/SQL 块的基本结构:SYNTAX:BEGIN - optional, denotes beginning of block DECLAR

13、E - optional, variable definitions BEGIN - mandatory, denotes beginning of procedure section EXCEPTION - optional, denotes beginning of exception section END - mandatory, denotes ending of procedure sectionEND - optional, denotes ending of block (1)在PL/SQL 的DECLARE 部分包括了变量、常量、指针和特殊数据类型的定义。 (2) BEGIN

14、部分是PL/SQL 语句块中的必须部分,在这一部分将会使用变量和用户指针来操作数据库中的数据。 (3)EXCEPTION 部分在PL/SQL 语句块中是可以选择的,如果在这一部分被省略而遇到异常的时候该块就会终止了。3、由基本的PL/SQL块所组成的PL/SQL程序,可组成不同的程序形式,它们的用途和适用性各不相同。程序形式大致有以下几种: (1)无名块:也就是没有命名的PL/SQL块,它可以是嵌入某一个应用之中的一个PL/SQL块。无名块在所有PL/SQL环境中都适用。 (2)存储过程/函数(Procedure/Function):命名的PL/SQL块,它可以接受参数,并且可以重复的被调用。

15、 (3)包(Package):命名的PL/SQL块,由一组相关的过程、函数和标识符组成。 (4)数据库触发器(Triggers):是与一个具体数据库表相关联的PL/SQL存储程序。每当一个SQL操作影响到该数据库表时,系统就自动执行相应的数据库触发器。4、PL/SQL中的控制语句: (1)条件语句:IF.THEN语法: IF condition1 THEN statement1; ELSIF condition2 THEN(可选) statement2; ELSE(可选) statement3; END IF (2)循环语句: i.简单循环:LOOP statement1; END LOOP

16、ii.FOR循环: iii.WHILE循环:5、题目:建立如下表,并用语句插入如下数据,完成所要求的操作。(1).使用的表为:PAY_TABLE,结构: Name Null? Type NAME NOT NULL VARCHAR2(20) PAY_TYPE NOT NULL VARCHAR2(8) PAY_RATE NOT NULL NUMBER(8,2) EFF_DATE NOT NULL DATE PREV_PAY NUMBER(8,2)数据: NAME PAY_TYPE PAY_RATE EFF_DATE PREV_PAY SANDRA SAMUELS HOURLY 12.50 01-J

17、AN-04 ROBERT BOBAY HOURLY 11.50 15-MAY-03 KEITH JONES HOURLY 10.00 31-OCT-04 SUSAN WILLIAMS HOURLY 9.75 01-MAY-04 CHRISSY ZOES SALARY 50000.00 01-JAN-04 CLODE EVANS SALARY 42150.00 01-MAR-04 JOHN SMITH SALARY 35000.00 15-JUN-03 KEVIN TROLLBERG SALARY 27500.00 15-JUN-03(2).操作要求:要给为你工作的时间超过了六个月的个人增加薪金

18、。符合条件的钟点工的薪金增加4% 而符合条件的雇员的薪金需要增加5% 。PL/SQL 的脚本: set serveroutput on BEGIN DECLARE UnknownPayType exception。 cursor pay_cursor is select name, pay_type, pay_rate, eff_date, sysdate, rowid from pay_table。 IndRec pay_cursor%ROWTYPE。 cOldDate date。 fNewPay number(8,2)。 BEGIN open pay_cursor。 loop fetch

19、pay_cursor into IndRec。 exit when pay_cursor%NOTFOUND。 cOldDate := sysdate - 180。 if (IndRec.pay_type = SALARY) then fNewPay := IndRec.pay_rate * 1.05。 elsif (IndRec.pay_type = HOURLY) then fNewPay := IndRec.pay_rate * 1.04。 else raise UnknownPayType。 end if。 if (IndRec.eff_date cOldDate) then updat

20、e pay_table set pay_rate = fNewPay, prev_pay = IndRec.pay_rate, eff_date = IndRec.sysdate where rowid = IndRec.rowid。 commit。 end if。 end loop。 close pay_cursor。 EXCEPTION when UnknownPayType then dbms_output.put_line(=)。 dbms_output.put_line(ERROR: Aborting program.)。 dbms_output.put_line(Unknown P

21、ay Type for Name)。 when others then dbms_output.put_line(ERROR During Processing. See the DBA.)。 END。 END。/6.练习:(1).对PAY_TABLE表写一个查询所有记录的过程。(2).对PAY_TABLE表写一个插入一条记录的过程,要求输入参数为一条记录。(3).写一个过程实现如下要求:对工作时间超过8个月的职员,如果PAY_TYPE是HOURLY,则改为SALARY,并将PAY_RATE改为按每天7小时工作的年薪. 第五题:完成如下操作要求某数据库有两张表:emp表和dept表,两张表的结

22、构如下:emp (emp_id number(5), emp_name varchar2(20), emp_salary number(4);dept (dept_id number(3), dept_name varchar2(20), emp_id number(5)。要求如下:1、按照上表结构建立相应的表,为每张表写入5组合法数据。2、操纵相关表,使得“技术部”的员工的薪水上涨20%。3、建立日志,追踪薪水变动情况。4、建立测试包。第六题要求1考察点为基本SQL语句;要求2主要考察复合查询;要求3是考察触发器的应用;要求4不仅考察了包的创建,而且也考察了在PL/SQL中的测试方法。要求1

23、:首先根据前面表的结构可以创建两张表:创建员工表create table emp (emp_id number(5), emp_name varchar2(20), emp_salary number(4)。部门表create table dept (dept_id number(3), dept_name varchar2(20), emp_id number(5)。建立了表之后就可以往表里面写数据了,这里把添加表记录的代码写入到相应的存储过程。/*给emp表添加记录的存储过程*/create or replace procedure ins_table_emp(p_emp_id numbe

24、r,p_emp_name varchar2,p_emp_salary number) asv_emp_id number:=p_emp_id。v_emp_name varchar2(20):=p_emp_name。v_emp_salary number:=p_emp_salary。begininsert into emp values (v_emp_id,v_emp_name,v_emp_salary)。end ins_table_emp。/*给dept表添加记录的存储过程*/create or replace procedure ins_table_dept(p_dept_id number

25、,p_dept_name varchar2,p_emp_id number) asv_dept_id number:=p_dept_id。v_dept_name varchar2(20):=p_dept_name。v_emp_id number:=p_emp_id。begininsert into dept values (v_dept_id,v_dept_name,v_emp_id)。end ins_table_emp。/*调用相应的存储过程实现记录添加*/beginins_table_emp(10000,4000)。ins_table_emp(10001,?y,2300)。ins_tabl

26、e_emp(10002,3?t,3500)。ins_table_emp(10003,3500)。ins_table_emp(10004,?,3500)。ins_table_dept(111,DD?t2?,10000)。ins_table_dept(111,DD?t2?,10001)。ins_table_dept(111,DD?t2?,10002)。ins_table_dept(112,?2?,10003)。ins_table_dept(113,D3?2?,10004)。end。要求2:给指定部门的员工加薪,这实际上是一个复合查询,首先需要把所有该部门的员工选出来,然后对这些员工的薪水进行相应的

27、改动。代码如下:(需要注意的是:将要加薪的部门作为参数,这样的存储过程更有灵活性。)create or replace procedure add_salary(p_dept_name varchar2) asv_dept_name varchar2(20):=p_dept_name。beginupdate emp set emp.EMP_SALARY=emp.EMP_SALARY*1.2 where emp.EMP_ID in (select emp.EMP_ID from emp,dept where emp.EMP_ID=dept.EMP_ID and dept.DEPT_ID=?2?)

28、。end add_salary。要求3:建立日志对薪水的变动情况形成一个追踪,也就是说,如果对某个职员的薪水进行变更就应该将其相应的变更记录全部记下来。如果对emp表的salary字段创建一个触发器,来监视对salary的更改,把每次更改进行记录,这样就达到了要求3的目的了。create or replace trigger print_salary_changebefore delete or insert or update on emp-触发事件for each row- 每修改一行都需要调用此过程declare -只有触发器的声明需要declare,过程和函数都不需要salary_ba

29、lance number。begin-:new 与:old分别代表该行在修改前和修改后的记录salary_balance=:new.salary=:old.salary。dbms_output.PUT_LINE(old salary is: | :old.salary)。dbms_output.PUT_LINE(old salary is: | :new.salary)。dbms_output.PUT_LINE(old salary is: | to_char(salary_balance)。end print_salary_change。要求4:与其他语言(c/c+等)相比,PL/SQL的测

30、试有其不同之处,归纳下来有三种方法:1、使用DBMS_OUTPUT包的PUT_LINE方法来显示中间变量,以此来观察程序是否存在逻辑错误。2、插入测试表的方法。即创建一个临时的中间表,然后把所有涉及到的中间变量的结果都作为记录插入到中间表中,这样可以查询表中的结果来观察程序的执行情况。3、使用异常处理手段,对可疑的程序段使用begin end ,然后可以在exception里进行异常捕获处理。这里使用第二种方法插入测试表的方法来建立一个测试包,PL/SQL里包的概念类似于面向对象里的类的概念,包将一组操作和属性封装在一起,不仅增强了程序的模块化,而且由于封装了更多的操作和属性而提高了执行效能。建立一个PL/SQL需要两个步骤:首先要建立包头,类似于建立一个类的头文件,里面主要对包中的过程,函数和变量的声明;第二部分主要是包体部分,实现前面声明的过程和函数,另外还需要对包进行初始化等工作。根据这一思路

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1