当前位置:文档之家› 《数据库原理与技术》课程实验报告

《数据库原理与技术》课程实验报告

《数据库原理与技术》课程实验报告
《数据库原理与技术》课程实验报告

(软件实验)

[《数据库原理与技术》课程实验报告]

实验名称:[《数据库原理与技术》实验]

专业班级:[ ]

学生姓名:[ ]

学号:[ ]

指导教师:[ ]

完成时间:[ ]

目录

模块一:数据库原理与技术实验 (1)

实验一、熟悉ORALCE环境并练习SQL的定义 (1)

一、目的与要求 (1)

二、操作环境 (1)

三、实验内容 (1)

四、思考题 (5)

实验二、记录查询 (5)

一、目的与要求 (5)

二、操作环境 (5)

三、实验内容 (5)

四、思考题 (6)

实验三、SQL的数据操纵 (7)

一、目的与要求 (7)

二、操作环境 (7)

三、实验内容 (7)

四、思考题 (7)

实验四、视图及权限控制 (8)

一、目的与要求 (8)

二、操作环境 (8)

三、实验内容 (8)

四、思考题 (9)

实验五、数据库触发器与过程 (10)

一、目的与要求 (10)

二、操作环境 (10)

三、实验内容 (10)

模块二:出现的问题和解决方法 (12)

模块三:心得体会 (12)

模块四:参考文献 (13)

模块五:代码汇总 (13)

附录:ORACLE有关命令及内部字典 (18)

ORACLE 的SQL*PLUS基本命令 (18)

Oracle的哑表与数据字典 (19)

模块一:数据库原理与技术实验

实验一、熟悉ORALCE环境并练习SQL的定义

一、目的与要求

本实验主要是熟悉ORACLE的运行环境,在CLIENT端进行联接设置与服

务器联通,进入ORACLE的SQL*PLUS的操作环境,进一步建立表格,并考虑

主键,外部键,值约束。

二、操作环境

硬件:主频2GHz以上服务器(内存2GB以上、硬件空闲2.2GB以上),

主频1GHz以上微机,内存1GB以上。

软件:WINDOWS XP/2000/2003 SERVER 可安装ORACLE/9i/10g/11g/13i

FOR NT/WINDOWS(注意在32位与64位的区别,可选企业版) 如果windows 非server如XP等,安装时请选择个人版(PERSONAL)

三、实验内容

1.上机步骤

单机版:

(1)先启动PERSONAL ORACLE(START DATABASE)

(2)用sql*plus登录(开始--程序-ORACLE FOR WIN-SQLP*PLUS(与网络版相同)进入SQL*PLUS

用户名:SYSTEM/manager (其中manager为缺省口令,安装需要设定,根据设定的密码进行相应变化;不要数据库联接串,其中SYSTEM为DBA用户)

还有一般用户scott/tiger

(3)进入SQL>状态,可以执行SQL中的任何命令(建表,插入、删除、修改、查询等),还可建立用户、数据库等操作。

(4)退出,在SQL>状态,EXIT回车

网络版:

在实验室上机时,一般安装时管理员已设置好.先找到windows中的oracle服务(一般为oracleserviceORCL),启动此服务,再找到sql*plus所在的位置(一般桌面上有),运行即可进行登录界面.

实验室现有环境操作步骤:

(1)打开控制面板,――>管理工具――>服务――>启动Oracle ServiceORCL

或者如图通过界面或资源管理器右键找到管理:

再找服务:启动的服务如下或有OracleService****的服务:

(2)从桌面执行SQL*PLUS或在程序中

(3)输入:system/manager

(4)在SQL>状态输入建立用户命令:

create user username identified by password;

其中username与password不要数字开头,用户名username中按规则加班级学号后缀

如:U_42402表示4班学号尾数为2402号的用户。

(5)给用户授权:

grant resource,connect to username;

(6) 连接用户:

connect username/password

在SQL>就可以建表等操作了

2.根据要求建立如下表

DROP TABLE T_DEPT_42402; /* 系,42402为班级学号如t_dept_42405,4

班2405号,不能别人的同名,否则视为抄袭,以下各类对象类同要求 */

create user U_42402 identified by zxh;

grant resource,connect to U_42402;

connect U_42402/zxh;

DROP TABLE DEPT_42402;

CREATE TABLE T_DEPT_42402(DNO CHAR(3) PRIMARY KEY,DN VARCHAR2(32),

DEAN CHAR(8),TEL CHAR(8) CHECK(SUBSTR(1,4)='8887')

);

DROP TABLE T_STUD_42402; /* 学生 */

CREATE TABLE T_STUD_42402(SNO CHAR(10) PRIMARY KEY,SNAME varCHAR2(8) ,BIRTHDAY DATE, ADDRES varCHAR2(10),

DNO CHAR(3) REFERENCES T_DEPT_42402(DNO)

);

/* ALTER TABLE T_STUD_42402 ADD AGE NUMBER(2) 在修改时候用,去掉

注释即可 */

/* DROP TABLE T_ST_42402;

CREATE TABLE T_ST_42402(SNO CHAR(10),SNAME CHAR(8),AGE NUMBER(2));

在建触发器时用,去掉注释即可 */

3.插入样本数据

/*要求有一个本人的数据记录 */

DELETE FROM T_STUD_42402;

DELETE FROM T_DEPT_42402;

INSERT INTO T_DEPT_42402 VALUES('D01','计算机系','王大明

','88879626');

INSERT INTO T_DEPT_42402 VALUES('D02','物理系','张大奔','88879726');

INSERT INTO T_DEPT_42402 VALUES('D03','化学系','李水明

','88879826');

INSERT INTO T_DEPT_42402 VALUES('D04','管理系','欧阳卫红','88879926');

INSERT INTO T_DEPT_42402 VALUES('D05','外语系','宽左右','88879526');

INSERT INTO T_STUD_42402 VALUES('0909100524','胡明天',SYSDATE-365*21,'湖南长沙','D01');

INSERT INTO T_STUD_42402 VALUES('0909100134','唐明海',SYSDATE-365*21,'湖南长沙','D01');

INSERT INTO T_STUD_42402 VALUES('0909100224','张丽梅',SYSDATE-365*20,'湖南长沙','D01');

INSERT INTO T_STUD_42402 VALUES('0909100324','李有能',SYSDATE-365*22,'湖南长沙','D02');

INSERT INTO T_STUD_42402 VALUES('0909100424','王汉中',SYSDATE-365*22,'湖南长沙','D02');

INSERT INTO T_STUD_42402 VALUES('0909100464','高强',SYSDATE-365*21,' ','D02');

INSERT INTO T_STUD_42402 VALUES('0909100474','JONE',SYSDATE-365*23,' ','D03');

INSERT INTO T_STUD_42402 VALUES('0909100484','SMITH',SYSDATE-365*21,' ','D03');

INSERT INTO T_STUD_42402 VALUES('0909100594','TOM HONE',SYSDATE-365*22,' ','D03');

INSERT INTO T_STUD_42402 VALUES('0909100264','张三', SYSDATE-365*22,' ','D04');

INSERT INTO T_STUD_42402 VALUES('0909100274','李四', SYSDATE-365*21,' ','D04');

INSERT INTO T_STUD_42402 VALUES('0909100284','王老五', SYSDATE-365*20,' ','D04');

INSERT INTO T_STUD_42402 VALUES('0909102402','密密麻麻', SYSDATE-365*23,' ','D05');

四、思考题

1.改变表的名称及数据类型再进行相应的操作。

答:改变表名的操作为:ALTER TABLE 当前表名RENAME TO 新表名;

可以通过以下属性改变属性的数据类型:ALTER TABLE 表名MODIFY(列名数据类型)。

ALTER TABLE T_STUD_42402 RENAME TO T_STUD_42422;

2.先删除主表T_DEPT_42402,结果怎么样?

答:因为T_DEPT_???中属DNO作为T_STUD_???中的外键被参照,为了约束完整性不应该被首先删除。但是可以用cascade 关键字实现级联删除。

3.修改表中的字段类型与长度,考虑表中有数据或者没数据情况。

答:修改表中字段类型与长度:

ALTER TABLE T_DEPT_??? MODIFY(DNO CHAR(2))。

表中主键值不允许为null;属性定义中声明为not null也不允许空值。

4.插入相同的学号与相同的系号会出现什么结果

答:不允许。主键值不可相同。

5.插入空的学号或空的系号会出现的结果

答:不允许。主键值不允许为空值。

6.改变数据库的别名再进行联接(如有网络版ORACLE)。

实验二、记录查询

一、目的与要求

本实验主要是熟悉在SQL*PLUS环境下进行数据记录查询,其中查询考虑简

单查询,复杂查询,嵌套查询。

二、操作环境

同实验一。

三、实验内容

1.查询所有学生记录

select * from T_STUD_42402;

2.查询所有系的记录,并按系号升序排列

select * from T_DEPT_42402

order by dno;

3.查询有自己姓名的记录

select * from T_STUD_42402

where sname='密密麻麻';

4.查询’李四’的SNO,SNAME,BIRTHDAY

select sno,sname,birthday from T_STUD_42402

where sname='李四';

5.查询计算系所有的学生记录

select dno from T_DEPT_42402

where DN='计算机系';

select * from T_STUD_42402

where dno='D01';

6.查询各计算系学生在各年龄值的人数,如19的为200,20的有500等

ALTER TABLE T_STUD_42402 ADD AGE NUMBER(2);

select floor((SYSDATE-birthday)/365) as age from T_STUD_42402 group by ((SYSDATE-birthday)/365);

7.查询’李四’的SNO,BIRTHDAY,DNO,DN,DEAN

select SNO,BIRTHDAY,STUD_42402.DNO,DN,DEAN

from STUD_42402, DEPT_42402

where SNAME=’张三’ AND STUD_42402.DNO= DEPT_42402.DNO;

四、思考题

1.查询学生的记录数。

答:select COUNT(*) from T_STUD_42402;

2.在T_DEPT_42402中输入不是’8887’开头的电话记录。

答:运用子查询可实现。

3.查询平均年龄小于22岁的系号及学生SNO,SNAME,AGE

4.找出平均年龄大于20的系名及平均年龄数

答:运用having()聚合函数。

实验三、SQL的数据操纵

一、目的与要求

本实验主要是熟悉在SQL*PLUS环境下进行数据记录的修改、删除及表结构

的修改

二、操作环境

同实验一。

三、实验内容

1.在T_STUD中增加AGE NUMBER(2)/*年龄*/字段,并求出每个学生入校时的年龄。

ALTER TABLE T_STUD_42402 ADD AGE NUMBER(2);

UPDATE T_STUD_42402

SET AGE =(SYSDATE-BIRTHDAY)/365;

UPDATE T_STUD_42402 SET AGE=2010-to_number(to_char(birthday, 'yyyy'));

select SNAME,AGE FROM T_STUD_42402;

2.将T_STUD_42402表中的08级学生的年龄都加3

UPDATE T_STUD_42402

SET AGE =AGE+3

WHERE SNO like '090908____';

3.将T_DEPT_42402表中的’计算机系’改为’信息科学与工程学院’

UPDATE T_DEPT_42402

SET DN='信息科学与工程学院'

WHERE DN='计算机系';

4.删除07级以前的所有的学生记录

DELETE FROM T_STUD_42402

WHERE SNO<0909070000;

四、思考题

1.误删了T_STUD_42402中的记录,怎么办?

答:可以运用事务回滚rollback to savepointlabel.此外,为了防止不必要的回滚操作。设置savepoint 前应该在适当位置用commit提交事务。

2.怎么样才能做到在一个语句中将学生的年龄加上相应的学习年数(如08级加3,09级加2,10级加1,07级加4等)。

答:UPDATE T_STUD_42402

SET AGE=AGE+11-TO_NUMBER(SUBSTR(SNO,5,2));

3.建立与T_STUD_42402对应的表T_ST_42402(SNO,SNAME,AGE/*年龄*/),在T_ST_42402输入若干学号(在T_STUD_???中有的有

几个),然后将T_STUD_42402中的SNAME,BIRTHDAY转入到

T_ST_42402相应的SNO,AGE(多表间的更新)。

答:CREATE TABLE ST_42402(SNO CHAR(10) PRIMARY KEY,SNAME CHAR(8), AGE NUMBER(2));

INSERT INTO ST_42402(SNO) VALUES('0909080424');

INSERT INTO ST_42402(SNO) VALUES('0909080464');

INSERT INTO ST_42402(SNO) VALUES('0909080474');

INSERT INTO ST_42402(SNO) VALUES('0909080484');

UPDATE ST_42402

SET ST_42402.AGE = ST_42402.AGE, ST_42402.BIRTHDAY= ST_42402.BIRTHDAY

WHERE ST_42402. SNO = ST_42402. SNO;

实验四、视图及权限控制

一、目的与要求

本实验主要是熟悉在SQL*PLUS环境下进行数据视图及权限控制的操作。二、操作环境

同实验一。

三、实验内容

1.视图的建立

connect system/manager;

grant create view to U_42402;

connect U_42402/zxh;

CREATE VIEW V_S_D_42402 AS SELECT SNO,SNAME,T_STUD_42402.DNO,DN,TEL FROM T_STUD_42402,T_DEPT_42402

WHERE T_STUD_42402.DNO=T_DEPT_42402.DNO AND TO_CHAR(BIRTHDAY,'YYYY')>='1991';

2.对视图进行查询

select * from V_S_D_42402;

3.分别将对象的各种权限授予相应的用户假若已有用户SCOTT(视系统实际情况),在SCOTT中看操作权限的变化。

GRANT SELECT ON T_STUD_42402 TO SCOTT;

/* GRANT INSERT ON T_STUD_42402 TO SCOTT; */

/* GRANT UPDATE(BIRTHDAY) ON T_STUD_42402 TO SCOTT; */

/* GRANT DELETE ON T_STUD_42402 TO SCOTT; */

/* GRANT SELECT ON V_S_D_42402 TO SCOTT; */

grant select on T_STUD_42402 to SCOTT;

GRANT SELECT ON V_S_D_42402 TO SCOTT;

grant update on T_STUD_42402 to SCOTT;

grant all on T_STUD_42402 to SCOTT; /*用户可以去修改/删除,查询,添加表 */

revoke select on T_STUD_42402 from SCOTT; /*收回user表的查询权限 */

select * from T_STUD_42402;

select * from V_S_D_42402;

/*select * from system.T_STUD_42402;*/

/*select * from system.V_S_D_42402;*/

select to_number(substr(sno,5,2)) from T_STUD_42402;

四、思考题

1.在视图V_S_D_42402中只考虑信息09级,视图将怎样建立?

答:CREATE VIEW S_D_2114 AS SELECT SNO,SNAME,T_STUD_42402.DNO,DN,TEL FROMT_STUD_42402,T_DEPT_42402WHERET_STUD_42402.DNO=DEPT_42402.DNO

AND SNO like ’090909____’;

2.如果用户为DBA,还需要给授权吗?

答:不需要。

3.考虑基于一个表、简单条件的视图的更新操作。

4.考虑基于多表视图的更新操作。

答:一般不允许。

5.设计与实现

针对用户的不同,建立视图,只出现用户本身的记录

提示:

有用户创建、表创建、视图建立、权限控制、用户联接、查询等操作

实验五、数据库触发器与过程

一、目的与要求

本实验主要是熟悉在SQL*PLUS环境下数据库触发器的建立及作用,了解大型数据库编程。

二、操作环境

同实验一。

三、实验内容

1.先建立表T_ST_42402(SNO,SNAME,AGE)

DROP TABLE T_ST_42402;

CREATE TABLE T_ST_42402(SNO CHAR(10),SNAME CHAR(8),AGE NUMBER(2));

2.建立触发器

CREATE OR REPLACE TRIGGER T_STUD_TRG_42402 BEFORE INSERT OR UPDATE OR DELETE ON T_STUD_42402 FOR EACH ROW

BEGIN

IF INSERTING THEN INSERT INTO T_ST_42402 VALUES(:NEW.SNO,:NEW.SNAME,(SYSDATE-:NEW.BIRTHDAY)/365);

END IF;

IF UPDATING THEN DELETE FROM T_ST_42402 WHERE SNO=:OLD.SNO;

INSERT INTO T_ST_42402

VALUES(:NEW.SNO,:NEW.SNAME,(SYSDATE-:NEW.BIRTHDAY)/365);

END IF;

IF DELETING

THEN DELETE FROM T_ST_42402 WHERE SNO=:OLD.SNO;

END IF;

END;

3.验证触发器的作用

在T_STUD_42402中输入、修改、删除数据时,查看T_ST_42402表中的变化。

ALTER TABLE ST_42402 DROP COLUMN AGE cascade constraints;

INSERT INTO ST_42402 VALUES('0909081111','章颢严',date'1991-01-01','中国辽宁','D01');

INSERT INTO ST_42402 VALUES('0909082222','何志超',date'1991-02-02','中国广东','D01');

INSERT INTO ST_42402 VALUES('0909083333','刘成龙',date'1990-03-03','中国山东','D02');

INSERT INTO ST_42402 VALUES('0909084444','王方柄',date'1990-04-04','中国四川','D03');

SELECT *

FROM ST_42402;

UPDATE ST_42402

SET BIRTHDAY=DATE'1990-05-05'

WHERE SNAME='刘成龙';

SELECT *

FROM ST_42402;

DELETE FROM ST_42402

WHERE SNAME='章颢严';

SELECT *

FROM ST_42402;

模块二:出现的问题和解决方法

1.建立视图时显示权限不足。

解决方法:进行授权。

connect system/manager;

grant create view to U_42402;

connect U_42402/lyx330;

2.插入数据时,出现错误。

解决方法:根据提示查找错误。

检查语法错误。

检查拼写错误。

检查标点符号,引号是否缺少,标点是否为英文标点。

模块三:心得体会

本周《数据库原理与技术》的上机实验结束了,在张祖平老师细心指导下,我通过这几次上机实验对oracle系列软件的使用进一步了解,对数据库原理与技术的学习有了深入认识,对课程实践环节有了自主动手能力。自己突然发现原来数据库的功能是如此的强大,我对其越来越感兴趣。我想,在21世纪,这个信息化社会,在整理、查询、分析数据方面是它是强有力的利器。

人们常说:“理论联系实际”,学习的目就在于我们能够将所学的东西变相转化为人们现实生活中易于理解、通俗的知识。将所学的

能合理顺利的运用,将书本知识化为己用,将理论知识用在显示当中的问题,是一个从不知道到知道,了解完善应用的过程,特别是在计算机方面的知识更是如此。本次数据库上机主要用到的是SQL结构化查询语言,它是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。通过这几次上机实验,我们学会了数据查询、修改、视图建立和查询、权限的修改、触发器的建立等。上机过程中也遇到不少问题,通过老师的帮助和同学互相探讨,解决了很多问题。通过本次实验,我对数据库的神秘性更加向往,自己虽然是WIN8系统,但是为了课程实践,重新装回WIN7运行程序,希望自己能够熟练运用所学。

模块四:参考文献

[1] 张祖平,孙星明等.数据库原理及应用,中南大学出版社,2010.11

[2] Ramez Elmasri,Shamkant B.Navathe著,孙瑜注释.Fundamentals of Database Systems (Fourth Edition)(数据库系统基础初级篇英文注释版第四版)人民邮电出版社(影印,英文版). 2008-10

模块五:代码汇总

实验一:

system/manager

/*创建用户*/

create user U_42402 identified by zxh;

grant resource,connect to U_42402;

connect U_42402/zxh;

/*创建表*/

DROP TABLE T_DEPT_42402;

CREATE TABLE T_DEPT_42402

(DNO CHAR(3) PRIMARY KEY,

DN VARCHAR2(32),

DEAN CHAR(8),

TEL CHAR(8) CHECK(SUBSTR(tel,1,4)='8887') );

DROP TABLE T_STUD_42402 ;

CREATE TABLE T_STUD_42402(SNO CHAR(10) PRIMARY KEY,SNAME varCHAR2(8),BIRTHDAY DATE,

DNO CHAR(3) REFERENCES T_DEPT_42402(DNO)

);

/*插入记录 */

DELETE FROM T_STUD_42402;

DELETE FROM T_DEPT_42402;

INSERT INTO T_DEPT_42402 VALUES('D01','计算机系','王大明','88879626');

INSERT INTO T_DEPT_42402 VALUES('D02','物理系','张大奔','88879726');

INSERT INTO T_DEPT_42402 VALUES('D03','化学系','李水明','88879826');

INSERT INTO T_DEPT_42402 VALUES('D04','管理系','欧阳卫红','88879926');

INSERT INTO T_DEPT_42402 VALUES('D05','外语系','宽左右','88879526');

INSERT INTO T_STUD_42402 VALUES('0909100524','胡明天',SYSDATE-365*21,'D01');

INSERT INTO T_STUD_42402 VALUES('0909100134','唐明海',SYSDATE-365*21,'D01');

INSERT INTO T_STUD_42402 VALUES('0909100224','张丽梅',SYSDATE-365*20,'D01');

INSERT INTO T_STUD_42402 VALUES('0909100324','李有能',SYSDATE-365*22,'D02');

INSERT INTO T_STUD_42402 VALUES('0909100424','王汉中',SYSDATE-365*22,'D02');

INSERT INTO T_STUD_42402 VALUES('0909100464','高强',SYSDATE-365*21,'D02');

INSERT INTO T_STUD_42402 VALUES('0909100474','JONE',SYSDATE-365*23, 'D03');

INSERT INTO T_STUD_42402 VALUES('0909100484','SMITH',SYSDATE-365*21,'D03');

INSERT INTO T_STUD_42402 VALUES('0909100594','TOM HONE',SYSDATE-365*22,'D03');

INSERT INTO T_STUD_42402 VALUES('0909100264','张三', SYSDATE-365*22,'D04');

INSERT INTO T_STUD_42402 VALUES('0909100274','李四', SYSDATE-365*21,'D04'); INSERT INTO T_STUD_42402 VALUES('0909100284','王老五', SYSDATE-365*20,'D04'); INSERT INTO T_STUD_42402 VALUES('0909102402','密密麻麻', SYSDATE-365*23,'D05'); 实验二:

/*查询学生的记录数*/

select * from T_STUD_42402;

/*查询所有系的记录,并按系号升序排列*/

select * from T_DEPT_42402

order by dno;

/*查询有自己姓名的记录*/

select * from T_STUD_42402

where sname='密密麻麻';

/*查询’李四’的SNO,SNAME,BIRTHDAY*/

select sno,sname,birthday from T_STUD_42402

where sname='李四';

/*查询计算系所有的学生记录*/

select dno from T_DEPT_42402

where DN='计算机系';

select * from T_STUD_42402

where dno='D01';

/*查询各计算系学生在各年龄值的人数,如19的为200,20的有500等*/

ALTER TABLE T_STUD_42402 ADD AGE NUMBER(2);

select floor((SYSDATE-birthday)/365) as age from T_STUD_42402

group by ((SYSDATE-birthday)/365);

实验三:

/*在T_STUD中增加AGE NUMBER(2)/*年龄*/字段,并求出每个学生入校时的年龄。*/ ALTER TABLE T_STUD_42402 ADD AGE NUMBER(2);

UPDATE T_STUD_42402

SET AGE =(SYSDATE-BIRTHDAY)/365;

UPDATE T_STUD_42402 SET AGE=2010-to_number(to_char(birthday, 'yyyy'));

select SNAME,AGE FROM T_STUD_42402;

/*将T_STUD_42402表中的08级学生的年龄都加3*/

UPDATE T_STUD_42402

SET AGE =AGE+3

WHERE SNO like '090908____';

/*将T_DEPT_42402表中的’计算机系’改为’信息科学与工程学院’*/

UPDATE T_DEPT_42402

SET DN='信息科学与工程学院'

WHERE DN='计算机系';

/*删除07级以前的所有的学生记录*/

DELETE FROM T_STUD_42402

WHERE SNO<0909070000;

实验四:

connect system/manager;

grant create view to U_42402;

connect U_42402/zxh;

/* 视图建立 */

CREATE VIEW V_S_D_42402 AS SELECT SNO,SNAME,T_STUD_42402.DNO,DN,TEL FROM T_STUD_42402,T_DEPT_42402 WHERE T_STUD_42402.DNO=T_DEPT_42402.DNO AND TO_CHAR(BIRTHDAY,'YYYY')>='1991';

/* 对视图进行查询*/

select * from V_S_D_42402;

/* 分别将对象的各种权限授予相应的用户假若已有用户SCOTT(视系统实际情况),在SCOTT 中看操作权限的变化。*/

GRANT SELECT ON T_STUD_42402 TO SCOTT;

/* GRANT INSERT ON T_STUD_42402 TO SCOTT; */

/* GRANT UPDATE(BIRTHDAY) ON T_STUD_42402 TO SCOTT; */

/* GRANT DELETE ON T_STUD_42402 TO SCOTT; */

/* GRANT SELECT ON V_S_D_42402 TO SCOTT; */

grant select on T_STUD_42402 to SCOTT;

GRANT SELECT ON V_S_D_42402 TO SCOTT;

grant update on T_STUD_42402 to SCOTT;

grant all on T_STUD_42402 to SCOTT; /*用户可以去修改/删除,查询,添加表*/

revoke select on T_STUD_42402 from SCOTT; /*收回user表的查询权限 */

select * from T_STUD_42402;

select * from V_S_D_42402;

/*select * from system.T_STUD_42402;*/

/*select * from system.V_S_D_42402;*/

select to_number(substr(sno,5,2)) from T_STUD_42402;

实验五:

/*先建立表T_ST_42402(SNO,SNAME,AGE)*/

DROP TABLE T_ST_42402;

CREATE TABLE T_ST_42402(SNO CHAR(10),SNAME CHAR(8),AGE NUMBER(2));

/*建立触发器*/

CREATE OR REPLACE TRIGGER T_STUD_TRG_42402 BEFORE INSERT OR UPDATE OR DELETE ON T_STUD_42402 FOR EACH ROW

BEGIN

IF INSERTING THEN INSERT INTO T_ST_42402 VALUES(:NEW.SNO,:NEW.SNAME,(SYSDATE-:NEW.BIRTHDAY)/365);

END IF;

IF UPDATING THEN DELETE FROM T_ST_42402 WHERE SNO=:OLD.SNO;

INSERT INTO T_ST_42402

VALUES(:NEW.SNO,:NEW.SNAME,(SYSDATE-:NEW.BIRTHDAY)/365);

END IF;

IF DELETING

THEN DELETE FROM T_ST_42402 WHERE SNO=:OLD.SNO;

END IF;

END;

/*验证触发器的作用*/

ALTER TABLE ST_42402 DROP COLUMN AGE cascade constraints;

操作系统-Linux课程实验报告

实验、 Linux Ubuntu的安装、创建新的虚拟机VMWare 实验 Shell编程 1.实验目的与内容 通过本实验,了解Linux系统的shell机制,掌握简单的shell编程技巧。 编制简单的Shell程序,该程序在用户登录时自动执行,显示某些提示信息,如“Welcome to Linux”, 并在命令提示符中包含当前时间、当前目录和当前用户名等基本信息。 2.程序源代码清单 #include<> #include int main(){ printf("Hello Linux\n"); int pid; int state; int pfd[2]; pipe(pfd); if (fork()==0){ printf("In the grep progress\n"); dup2(pfd[0],0); close(pfd[0]); close(pfd[1]); execlp("grep","grep","sh",0); perror("exelp grep error"); } esle if(fork()==0){ printf("In the ps progress\n"); dup2(pfd[1],1); close(pfd[0]); close(pfd[1]); execlp("ps","ps","-ef",0); perror("execlp ps -ef"); }

close(pfd[1]); close(pfd[0]); wait(&state); wait(&state); } 实验内核模块 实验步骤: (1).编写内核模块 文件中主要包含init_clock(),exit_clock(),read_clock()三个函数。其中init_clock(),exit_clock()负责将模块从系统中加载或卸载,以及增加或删除模块在/proc中的入口。read_clock()负责产生/proc/clock被读时的动作。 (2).编译内核模块Makefile文件 # Makefile under ifneq ($(KERNELRELEASE),) #kbuild syntax. dependency relationshsip of files and target modules are listed here. obj-m := else PWD := $(shell pwd) KVER ?= $(shell uname -r) KDIR := /lib/modules/$(KVER)/build all: $(MAKE) -C $(KDIR) M=$(PWD) modules clean: rm -rf .*.cmd *.o *. *.ko .tmp_versions *.symvers *.order endif 编译完成之后生成模块文件。 (3).内核模块源代码 #include #include #include #include #include #include #define MODULE #define MODULE_VERSION "" #define MODULE_NAME "clock" struct proc_dir_entry* my_clock; int read_clock(char* page, char** start, off_t off, int count, int* eof, void* data) { int len; struct timeval xtime;

模拟电子技术基础实验思考题

低频电子线路实验思考题 实验一常用电子仪器的使用(P6) 1.什么是电压有效值?什么是电压峰值?常用交流电压表的电压测量值和示波器的电压直接测量值有什么不同? 答:电压峰值是该波形中点到最高或最低之间的电压值;电压有效值等于它的瞬时值的平方在一个周期内职分的平均值再取平方根。 常用交流电压表的电压测量值一般都为有效值,而示波器的电压直接测量都为峰值。 2.用示波器测量交流信号的峰值和频率,如何尽可能提高测量精度?答:幅值的测量:Y轴灵敏度微调旋钮置于校准位置,Y轴灵敏度开关置于合适的位置即整个波形在显示屏的Y轴上尽可能大地显示,但不能超出显示屏指示线外。频率测量:扫描微调旋钮置于校准位置,扫描开关处于合适位置即使整个波形在X轴上所占的格数尽可能接近10格(但不能大于10格)。 实验二晶体管主要参数及特性曲线的测试(P11) 1.为什么不能用MF500HA型万用表的R×1Ω和R×10Ω档量程测量工作极限电流小的二极管的正向电阻值? 答:根据MF500HA型万用表的内部工作原理,可知R×1Ω和R×10Ω档量程测量工作极限电流小的二极管的正向电阻值的等效电路分别为图1和图2所示,此时流过二极管的最大电流,,当I D1和I D2大于该二极管的工作极限电流时就会使二极管损坏。

图1 图2 2. 用MF500HA型万用表的不同量程测量同一只二极管的正向电阻值,其结果不同,为什么? 提示:根据二极管的输入特性曲线和指针式万用表Ω档的等效电路,结合测试原理分析回答。 答:R×1Ω:r o=9.4Ω; R×10Ω: r o=100Ω; R×100Ω: r o=1073Ω; R×1kΩ: r o=32kΩ。因为二极管工作特性为正向导通、反向截至,尤其是正向导通的输入特性曲线为一条非线性曲线。用MF500HA型万用表

操作系统实验报告--实验一--进程管理

实验一进程管理 一、目的 进程调度是处理机管理的核心内容。本实验要求编写和调试一个简单的进程调度程序。通过本实验加深理解有关进程控制块、进程队列的概念,并体会和了解进程调度算法的具体实施办法。 二、实验内容及要求 1、设计进程控制块PCB的结构(PCB结构通常包括以下信息:进程名(进程ID)、进程优先数、轮转时间片、进程所占用的CPU时间、进程的状态、当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删)。为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的轮转时间数以及进程需运行的时间片数的初始值均由用户给定。 2、系统资源(r1…r w),共有w类,每类数目为r1…r w。随机产生n进程P i(id,s(j,k),t),0<=i<=n,0<=j<=m,0<=k<=dt为总运行时间,在运行过程中,会随机申请新的资源。 3、每个进程可有三个状态(即就绪状态W、运行状态R、等待或阻塞状态B),并假设初始状态为就绪状态。建立进程就绪队列。 4、编制进程调度算法:时间片轮转调度算法 本程序用该算法对n个进程进行调度,进程每执行一次,CPU时间片数加1,进程还需要的时间片数减1。在调度算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了1个单位),这时,CPU时间片数加1,进程还需要的时间片数减1,并排列到就绪队列的尾上。 三、实验环境 操作系统环境:Windows系统。 编程语言:C#。 四、实验思路和设计 1、程序流程图

2、主要程序代码 //PCB结构体 struct pcb { public int id; //进程ID public int ra; //所需资源A的数量 public int rb; //所需资源B的数量 public int rc; //所需资源C的数量 public int ntime; //所需的时间片个数 public int rtime; //已经运行的时间片个数 public char state; //进程状态,W(等待)、R(运行)、B(阻塞) //public int next; } ArrayList hready = new ArrayList(); ArrayList hblock = new ArrayList(); Random random = new Random(); //ArrayList p = new ArrayList(); int m, n, r, a,a1, b,b1, c,c1, h = 0, i = 1, time1Inteval;//m为要模拟的进程个数,n为初始化进程个数 //r为可随机产生的进程数(r=m-n) //a,b,c分别为A,B,C三类资源的总量 //i为进城计数,i=1…n //h为运行的时间片次数,time1Inteval为时间片大小(毫秒) //对进程进行初始化,建立就绪数组、阻塞数组。 public void input()//对进程进行初始化,建立就绪队列、阻塞队列 { m = int.Parse(textBox4.Text); n = int.Parse(textBox5.Text); a = int.Parse(textBox6.Text); b = int.Parse(textBox7.Text); c = int.Parse(textBox8.Text); a1 = a; b1 = b; c1 = c; r = m - n; time1Inteval = int.Parse(textBox9.Text); timer1.Interval = time1Inteval; for (i = 1; i <= n; i++) { pcb jincheng = new pcb(); jincheng.id = i; jincheng.ra = (random.Next(a) + 1); jincheng.rb = (random.Next(b) + 1); jincheng.rc = (random.Next(c) + 1); jincheng.ntime = (random.Next(1, 5)); jincheng.rtime = 0;

计算机操作系统实验课实验报告

实验报告 实验课程: 计算机操作系统学生姓名:XXX 学号:XXXX 专业班级:软件 2014年12月25日

目录 实验一熟悉Windows XP中的进程和线程.. 3实验二进程调度 (7) 实验三死锁避免—银行家算法的实现 (18) 实验四存储管理 (24)

实验一熟悉Windows XP中的进程和线程 一、实验名称 熟悉Windows XP中的进程和线程 二、实验目的 1、熟悉Windows中任务管理器的使用。 2、通过任务管理器识别操作系统中的进程和线程的相关信息。 3、掌握利用spy++.exe来察看Windows中各个任务的更详细信息。 三、实验结果分析 1、启动操作系统自带的任务管理器: 方法:直接按组合键Ctrl+Alt+Del,或者是在点击任务条上的“开始”“运行”,并输入“taskmgr.exe”。

2、调整任务管理器的“查看”中的相关设置,显示关于进程的以下各项信息,并 完成下表: 表一:统计进程的各项主要信息 3、启动办公软件“Word”,在任务管理器中找到该软件的登记,并将其结束掉。再

从任务管理器中分别找到下列程序:winlogon.exe、lsass.exe、csrss.exe、smss.exe,试着结束它们,观察到的反应是任务管理器无法结束进程, 原因是该系统是系统进程。 4、在任务管理器中找到进程“explorer.exe”,将之结束掉,并将桌面上你打开的所 有窗口最小化,看看你的计算机系统起来什么样的变化桌面上图标菜单都消失了、得到的结论explorer.exe是管理桌面图标的文件(说出explorer.exe进程的作用)。 5、运行“spy++.exe”应用软件,点击按钮“”,切换到进程显示栏上,查看进 程“explorer.exe”的各项信息,并填写下表: 进程:explorer.exe 中的各个线程

嵌入式操作系统实验报告

中南大学信息科学与工程学院实验报告 姓名:安磊 班级:计科0901 学号: 0909090310

指导老师:宋虹

目录 课程设计内容 ----------------------------------- 3 uC/OS操作系统简介 ------------------------------------ 3 uC/OS操作系统的组成 ------------------------------ 3 uC/OS操作系统功能作用 ---------------------------- 4 uC/OS文件系统的建立 ---------------------------- 6 文件系统设计的原则 ------------------------------6 文件系统的层次结构和功能模块 ---------------------6 文件系统的详细设计 -------------------------------- 8 文件系统核心代码 --------------------------------- 9 课程设计感想 ------------------------------------- 11 附录-------------------------------------------------- 12

课程设计内容 在uC/OS操作系统中增加一个简单的文件系统。 要求如下: (1)熟悉并分析uc/os操作系统 (2)设计并实现一个简单的文件系统 (3)可以是存放在内存的虚拟文件系统,也可以是存放在磁盘的实际文件系统 (4)编写测试代码,测试对文件的相关操作:建立,读写等 课程设计目的 操作系统课程主要讲述的内容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。 本课程设计的目的综合应用学生所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握操作系统开发的基本技能。 I.uC/OS操作系统简介 μC/OS-II是一种可移植的,可植入ROM的,可裁剪的,抢占式的,实时多任务操作系统内核。它被广泛应用于微处理器、微控制器和数字信号处理器。 μC/OS 和μC/OS-II 是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。用户只要有标准的ANSI 的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II嵌入到开发的产品中。μC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2KB 。μC/OS-II 已经移植到了几乎所有知名的CPU 上。 严格地说uC/OS-II只是一个实时操作系统内核,它仅仅包含了任务调度,任务管理,时间管理,内存管理和任务间的通信和同步等基本功能。没有提供输入输出管理,文件系统,网络等额外的服务。但由于uC/OS-II良好的可扩展性和源码开放,这些非必须的功能完全 可以由用户自己根据需要分别实现。 uC/OS-II目标是实现一个基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务,如信号量,邮箱,消息队列,内存管理,中断管理等。 uC/OS操作系统的组成 μC/OS-II可以大致分成核心、任务处理、时间处理、任务同步与通信,CPU的移植等5个部分。如下图:

#电力电子技术实验报告答案

实验一锯齿波同步移相触发电路实验 一、实验目的 (1)加深理解锯齿波同步移相触发电路的工作原理及各元件的作用。 (2)掌握锯齿波同步移相触发电路的调试方法。 三、实验线路及原理 锯齿波同步移相触发电路的原理图如图1-11所示。锯齿波同步移相触发电路由同步检测、锯齿波形成、移相控制、脉冲形成、脉冲放大等环节组成,其工作原理可参见1-3节和电力电子技术教材中的相关内容。 四、实验内容 (1)锯齿波同步移相触发电路的调试。 (2)锯齿波同步移相触发电路各点波形的观察和分析。 五、预习要求 (1)阅读本教材1-3节及电力电子技术教材中有关锯齿波同步移相 触发电路的内容,弄清锯齿波同步移相触发电路的工作原理。 (2)掌握锯齿波同步移相触发电路脉冲初始相位的调整方法。 六、思考题 (1)锯齿波同步移相触发电路有哪些特点? (2)锯齿波同步移相触发电路的移相范围与哪些参数有关? (3)为什么锯齿波同步移相触发电路的脉冲移相范围比正弦波同步移相触发电路的移相范围要大? 七、实验方法 (1)将DJK01电源控制屏的电源选择开关打到“直流调速”侧,使输出线电压为200V(不能打到“交流调速”侧工作,因为DJK03-1的正常工作电源电压为220V 10%,而“交流调速”侧输出的线电压为240V。如果输入电压超出其标准工作范围,挂件的使用寿命将减少,甚至会导致挂件的损坏。在“DZSZ-1型电机及自动控制实验装置”上使用时,通过操作控制屏左侧的自藕调压器,将输出的线电压调到220V左右,然后才能将电源接入挂件),用两根导线将200V交流电压接到DJK03-1的“外接220V”端,按下“启动”按钮,打开DJK03-1电源开关,这时挂件中所有的触发电路都开始工作,用双踪示波器观察锯齿波同步触发电路各观察孔的电压波形。 ①同时观察同步电压和“1”点的电压波形,了解“1”点波形形成的原因。 ②观察“1”、“2”点的电压波形,了解锯齿波宽度和“1”点电压波形的关系。 ③调节电位器RP1,观测“2”点锯齿波斜率的变化。 ④观察“3”~“6”点电压波形和输出电压的波形,记下各波形的幅值与宽度,并比较“3”点电压U3和“6”点电压U6的对应关系。 (2)调节触发脉冲的移相范围

实时操作系统报告

实时操作系统课程实验报告 专业:通信1001 学号:3100601025 姓名:陈治州 完成时间:2013年6月11日

实验简易电饭煲的模拟 一.实验目的: 掌握在基于嵌入式实时操作系统μC/OS-II的应用中,基于多任务的模式的编程方法。锻炼综合应用多任务机制,任务间的通信机制,内存管理等的能力。 二.实验要求: 1.按“S”开机,系统进入待机状态,时间区域显示当前北京时间,默认模式“煮饭”; 2.按“C”选择模式,即在“煮饭”、“煮粥”和“煮面”模式中循环选择; 3.按“B”开始执行模式命令,“开始”状态选中,时间区域开始倒计时,倒计时完成后进入“保温”状态,同时该状态显示选中,时间区域显示保温时间; 4.按“Q”取消当前工作状态,系统进入待机状态,时间区域显示北京时间,模式为当前模式; 5.按“X”退出系统,时间区域不显示。 6.煮饭时长为30,煮粥时长为50,煮面时长为40. 三.实验设计: 1.设计思路: 以老师所给的五个程序为基础,看懂每个实验之后,对borlandc的操作有了大概的认识,重点以第五个实验Task_EX为框架,利用其中界面显示与按键扫描以及做出相应的响应,对应实现此次实验所需要的功能。 本次实验分为界面显示、按键查询与响应、切换功能、时钟显示与倒计时模块,综合在一起实验所需功能。 2.模块划分图: (1)界面显示: Main() Taskstart() Taskstartdispinit() 在TaskStartDispInit()函数中,使用PC_DispStr()函数画出界面。

(2)按键查询与响应: Main() Taskstart() 在TaskStart()函数中,用if (PC_GetKey(&key) == TRUE)判断是否有按键输入。然后根据key 的值,判断输入的按键是哪一个;在响应中用switch语句来执行对应按键的响应。 (3)切换功能: l计数“C”按 键的次数 M=l%3 Switch(m) M=0,1,2对应于煮饭,煮粥,煮面,然后使用PC_DispStr()函数在选择的选项前画上“@”指示,同时,在其余两项钱画上“”以“擦出”之前画下的“@”,注意l自增。 四.主要代码: #include "stdio.h" #include "includes.h" #include "time.h" #include "dos.h" #include "sys/types.h" #include "stdlib.h" #define TASK_STK_SIZE 512 #define N_TASKS 2 OS_STK TaskStk[N_TASKS][TASK_STK_SIZE]; OS_STK TaskStartStk[TASK_STK_SIZE]; INT8U TaskData[N_TASKS];

电子秒表电路实验报告1

电子技术课程设计 报告 设计题目:电子秒表 院(部):物理与电子信息学院 专业班级:电子信息工程 学生姓名: 学号: 指导教师: 摘要

秒表应用于我们生活、工作、运动等需要精确计时的方面。它由刚开始的机械式秒表发展到今天所常用的数字式秒表。秒表的计时精度越来越高,功能越来越多,构造也日益复杂。 本次数字电路课程设计的数字式秒表的要求为:显示分辨率为1s/100,外接系统时钟频率为100KHz;计时最长时间为60min,五位显示器,显示时间最长为59m59.99s;系统设置启/停键和复位键。复位键用来消零,做好计时准备、启/停键是控制秒表起停的功能键。 针对上述设计要求,先前往校图书馆借阅了大量的数字电路设计方面的书籍,以及一本电子元件方面的工具书,以待查阅各种设计中所需要的元件。其次安装并学习了数字电路设计中所常用的Multisim仿真软件,在课程设计过程的电路图设计与电路的仿真方面帮助我们发现了设计电路方面的不足与错误之处。 关键字:555定时器十进制计数器六进制计数器多谐振荡器

目录 1.选题与需求分析 (1) 1.1设计任务 (1) 1.2 设计任务 (1) 1.3设计构思 (1) 1.4设计软件 (2) 2.电子秒表电路分析 (3) 2.1总体分析 (3) 2.2电路工作总体框图 (3) 3.各部分电路设计 (4) 3.1启动与停止电路 (4) 3.2时钟脉冲发生和控制信号 (4) 3.3 设计十进制加法计数器 (6) 3.4 设计六进制加法计数器 (7) 3.5 清零电路设计 (8) 3.7 总体电路图: (10) 4 结束语与心得体会 (12)

电子技术基础实验答案

实验一、常用电子仪器的使用 一、实验目的 1、学习电子技术实验中常用电子仪器的主要技术指标、性能和正确使用方法。 2、初步掌握用示波器观察正弦信号波形和读取波形参数的方法。 电路实验箱的结构、基本功能和使用方法。 二、实验原理 在模拟电子电路实验中,要对各种电子仪器进行综合使用,可按照信号流向,以接线简捷,调节顺手,观察与读数方便等原则进行合理布局。接线时应注意,为防止外界干扰,各仪器的公共接地端应连接在一起,称共地。 1.信号发生器 信号发生器可以根据需要输出正弦波、方波、三角波三种信号波形。输出信号电压频率可以通过频率分挡开关、频率粗调和细调旋钮进行调节。输出信号电压幅度可由输出幅度调节旋钮进行连续调节。 操作要领: 1)按下电源开关。 2)根据需要选定一个波形输出开关按下。 3)根据所需频率,选择频率范围(选定一个频率分挡开关按下)、分别调节频率粗调和细调旋钮,在频率显示屏上显示所需频率即可。 4)调节幅度调节旋钮,用交流毫伏表测出所需信号电压值。 注意:信号发生器的输出端不允许短路。 2.交流毫伏表 交流毫伏表只能在其工作频率范围内,用来测量300伏以下正弦交流电压的有效值。 操作要领: 1)为了防止过载损坏仪表,在开机前和测量前(即在输入端开路情况下)应先将量程开关置于较大量程处,待输入端接入电路开始测量时,再逐档减小量程到适当位置。 2)读数:当量程开关旋到左边首位数为“1”的任一挡位时,应读取0~10标度尺上的示数。当量程开关旋到左边首位数为“3”的任一挡位时,应读取0~3标度尺上的示数。 3)仪表使用完后,先将量程开关置于较大量程位置后,才能拆线或关机。 3.双踪示波器 示波器是用来观察和测量信号的波形及参数的设备。双踪示波器可以同时对两个输入信号进行观测和比较。 操作要领: 1)时基线位置的调节开机数秒钟后,适当调节垂直(↑↓)和水平(←→)位移旋钮,将时基线移至适当的位置。 2)清晰度的调节适当调节亮度和聚焦旋钮,使时基线越细越好(亮度不能太亮,一般能看清楚即可)。 3)示波器的显示方式示波器主要有单踪和双踪两种显示方式,属单踪显示的有“Y1”、“Y2”、“Y1+Y2”,作单踪显示时,可选择“Y1”或“Y2”其中一个按钮按下。属双踪显示的有“交 替”和“断续”,作双踪显示时,为了在一次扫描过程中同时显示两个波形,采用“交替”显示 方式,当被观察信号频率很低时(几十赫兹以下),可采用“断续”显示方式。 4)波形的稳定为了显示稳定的波形,应注意示波器面板上控制按钮的位置:a)“扫描

电子技术应用实验教程实验报告综合篇含答案UESTC大三上(供参考)

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持. 第一部分常用电子测量仪器的使用 本部分主要涉及实验要用到的三种仪器:数字示波器、信号发生器和稳压电源。学生在自学了《电子技术应用实验教程综合篇》(后称教材)第一章内容后,填空完成这部分的内容。 一、学习示波器的应用,填空完成下面的内容 示波器能够将电信号转换为可以观察的视觉图形,便于人们观测。示波器可分为模拟示波器和数字示波器两大类。其中,模拟示波器以连续方式将被测信号显示出来;而数字示波器首先将被测信号抽样和量化,变为二进制信号存储起来,再从存储器中取出信号的离散值,通过算法将离散的被测信号以连续的形式在屏幕上显示出来。我们使用的是数字示波器。 使用双踪示波器,能够同时观测两个时间相关的信号。信号通过探头从面板上的通道1 和通道2 端送入,分别称为CH1和CH2。 在使用示波器时,需要注意以下几点: (1)正确选择触发源和触发方式 触发源的选择:如果观测的是单通道信号,就应选择该信号作为触发源;如果同时观测两个时间相关的信号,则应选择信号周期大(大/小)的通道作为触发源。 (2)正确选择输入耦合方式 应根据被观测信号的性质来选择正确的输入耦合方式。如图1.1所示,输入耦合方式若设为交流(AC),将阻挡输入信号的直流成分,示波器只显示输入的交流成分;耦合方式设为直流(DC),输入信号的交流和直流成分都通过,示波器显示输入的实际波形;耦合方式设为接地(GND),将断开输入信号。 已知被测信号波形如图1.2所示,则在图1.3中, C 为输入耦合方式为交流(AC)时的波形, A 为输入耦合方式为直流(DC)时的波形, B 为输入耦合方式为接地(GND)时的波形。 (3)合理调整扫描速度 调节扫描速度旋钮,可以改变荧光屏上显示波形的个数。提高扫描速度,显示的波形少;降低扫描速度,显示的波形多。在实际测试时,显示的波形不应过多,以保证时间测量的精度。 (4)波形位置和几何尺寸的调整 观测信号时,波形应尽可能处于荧光屏的中心位置,以获得较好的测量线性。正确调整垂直衰减旋钮,尽可能使波形幅度占一半以上,以提高电压测量的精度。为便于读数,一般我们调节Y轴位移使0V位置位于示波器显示窗口中的暗格上。 数字示波器中被测信号0V标志位于示波器屏幕显示区的左侧。 在使用示波器前,需要检查示波器探头的好坏。简述检查的方法。 1文档来源为:从网络收集整理.word版本可编辑.

操作系统课程设计实验报告

河北大学工商学院 课程设计 题目:操作系统课程设计 学部信息学部 学科门类电气信息 专业计算机 学号2011482370 姓名耿雪涛 指导教师朱亮 2013 年6月19日

主要内容 一、设计目的 通过模拟操作系统的实现,加深对操作系统工作原理理解,进一步了解操作系统的实现方法,并可练习合作完成系统的团队精神和提高程序设计能力。 二、设计思想 实现一个模拟操作系统,使用VB、VC、CB等windows环境下的程序设计语言,以借助这些语言环境来模拟硬件的一些并行工作。模拟采用多道程序设计方法的单用户操作系统,该操作系统包括进程管理、存储管理、设备管理、文件管理和用户接口四部分。 设计模板如下图: 注:本人主要涉及设备管理模块

三、设计要求 设备管理主要包括设备的分配和回收。 ⑴模拟系统中有A、B、C三种独占型设备,A设备1个,B设备2个,C设备2个。 ⑵采用死锁的预防方法来处理申请独占设备可能造成的死锁。 ⑶屏幕显示 注:屏幕显示要求包括:每个设备是否被使用,哪个进程在使用该设备,哪些进程在等待使用该设备。 设备管理模块详细设计 一、设备管理的任务 I/O设备是按照用户的请求,控制设备的各种操作,用于完成I/O 设备与内存之间的数据交换(包括设备的分配与回收,设备的驱动管理等),最终完成用户的I/O请求,并且I/O设备为用户提供了使用外部设备的接口,可以满足用户的需求。 二、设备管理函数的详细描述 1、检查设备是否可用(主要代码) public bool JudgeDevice(DeviceType type) { bool str = false; switch (type) { case DeviceType.a: {

嵌入式实时操作系统实验报告

嵌入式实时操作系统实验报告 任务间通信机制的建立 系别计算机与电子系 专业班级***** 学生姓名****** 指导教师 ****** 提交日期 2012 年 4 月 1 日

一、实验目的 掌握在基于嵌入式实时操作系统μC/OS-II的应用中,任务使用信号量的一般原理。掌握在基于优先级的可抢占嵌入式实时操作系统的应用中,出现优先级反转现象的原理及解决优先级反转的策略——优先级继承的原理。 二、实验内容 1.建立并熟悉Borland C 编译及调试环境。 2.使用课本配套光盘中第五章的例程运行(例5-4,例5-5,例5-6),观察运行结果,掌握信号量的基本原理及使用方法,理解出现优先级反转现象的根本原因并提出解决方案。 3.试编写一个应用程序,采用计数器型信号量(初值为2),有3个用户任务需要此信号量,它们轮流使用此信号量,在同一时刻只有两个任务能使用信号量,当其中一个任务获得信号量时向屏幕打印“TASK N get the signal”。观察程序运行结果并记录。 4. 试编写一个应用程序实现例5-7的内容,即用优先级继承的方法解决优先级反转的问题,观察程序运行结果并记录。 5.在例5-8基础上修改程序增加一个任务HerTask,它和YouTask一样从邮箱Str_Box里取消息并打印出来,打印信息中增加任务标识,即由哪个任务打印的;MyTask发送消息改为当Times为5的倍数时才发送,HerTask接收消息采用无等待方式,如果邮箱为空,则输出“The mailbox is empty”, 观察程序运行结果并记录。 三、实验原理 1. 信号量 μC/OS-II中的信号量由两部分组成:一个是信号量的计数值,它是一个16位的无符号整数(0 到65,535之间);另一个是由等待该信号量的任务组成的等待任务表。用户要在OS_CFG.H中将OS_SEM_EN开关量常数置成1,这样μC/OS-II 才能支持信号量。

【VIP专享】电子技术课程设计实验报告

电子技术课程设计实验报告 学院:物联网工程学院 班级:自动化1204 姓名:XXX 学号:1070412428 同组成员:XXX 二〇一四年六月

目录 一、实验名称 (3) 二、实验任务和要求 (3) 三、实验电路 (a)系统框图 (3) (b)总电路原理图 (4) (c)总电路管脚图 (5) 四、单元电路及原理分析 (1)+5V电源电路 (5) (2)正弦波发生及波形变换电路 (6) (3)单稳态定时电路 (7) (4)频率计数显示电路 (7) (5)超量程指示电路 (8) (6)控制电路 (9) 五、元器件列表 (10) 六、安装与调试 1、使用仪器仪表 (10) 2、安装 (10) 3、调试 (11) 4、调试中出现的故障、原因及排除方法 (14) 七、收获和体会 (15)

一、实验名称 正弦波发生、频率测量显示电路 二、实验任务和要求 正弦波振荡频率100~1000Hz,输出信号幅度5±5%V; (1)用3位数码管显示振荡频率; (2)能自动连续测量、显示频率,测量周期为4S; (3)用中规模集成电路实现。 三、实验电路 (a)系统框图 图1-1 正弦波发生电路组成框图 (b)总电路原理图

原理图分析:正弦波振荡器自激振荡产生正弦波输出信号,波形变换电路将正弦波变换成方波,方波输入到计数器中,由计数器对输入方波信号进行计数,计数器的计数结果在译码显示中显示;控制电路部分输出定时触发信号、超量程复位信号和清零信号,定时触发信号输入到单稳态定时电路中,单稳态定时电路将定时触发信号给计数器,计数器在定时周期内对方波信号进行计数;超量程复位信号和计数器输出的超量程指示同时控制超量程指示电路部分,发光二极管发光进行超量程指示;清零信号输入到计数器中,在计数超过量程时计数器清零。

操作系统实验报告

操作系统教程 实 验 指 导 书 姓名: 学号: 班级:软124班 指导老师:郭玉华 2014年12月10日

实验一WINDOWS进程初识 1、实验目的 (1)学会使用VC编写基本的Win32 Consol Application(控制台应用程序)。 (2)掌握WINDOWS API的使用方法。 (3)编写测试程序,理解用户态运行和核心态运行。 2、实验内容和步骤 (1)编写基本的Win32 Consol Application 步骤1:登录进入Windows,启动VC++ 6.0。 步骤2:在“FILE”菜单中单击“NEW”子菜单,在“projects”选项卡中选择“Win32 Consol Application”,然后在“Project name”处输入工程名,在“Location”处输入工程目录。创建一个新的控制台应用程序工程。 步骤3:在“FILE”菜单中单击“NEW”子菜单,在“Files”选项卡中选择“C++ Source File”, 然后在“File”处输入C/C++源程序的文件名。 步骤4:将清单1-1所示的程序清单复制到新创建的C/C++源程序中。编译成可执行文件。 步骤5:在“开始”菜单中单击“程序”-“附件”-“命令提示符”命令,进入Windows“命令提示符”窗口,然后进入工程目录中的debug子目录,执行编译好的可执行程序: E:\课程\os课\os实验\程序\os11\debug>hello.exe 运行结果 (如果运行不成功,则可能的原因是什么?) : 有可能是因为DOS下路径的问题 (2)计算进程在核心态运行和用户态运行的时间 步骤1:按照(1)中的步骤创建一个新的“Win32 Consol Application”工程,然后将清单1-2中的程序拷贝过来,编译成可执行文件。 步骤2:在创建一个新的“Win32 Consol Application”工程,程序的参考程序如清单1-3所示,编译成可执行文件并执行。 步骤3:在“命令提示符”窗口中运行步骤1中生成的可执行文件,测试步骤2中可执行文件在核心态运行和用户态运行的时间。 E:\课程\os课\os实验\程序\os12\debug>time TEST.exe 步骤4:运行结果 (如果运行不成功,则可能的原因是什么?) : 因为程序是个死循环程序 步骤5:分别屏蔽While循环中的两个for循环,或调整两个for循环的次数,写出运行结果。 屏蔽i循环: 屏蔽j循环: _______________________________________________________________________________调整循环变量i的循环次数:

电子技术基础实验答案

电子技术基础实验答案 导语:在模拟电子电路实验中,要对各种电子仪器进行综合使用,可按照信号流向,以接线简捷,调节顺手,观察与读数方便等原则进行合理布局。以下为大家介绍电子技术基础实验答案文章,欢迎大家阅读参考! 实验一、常用电子仪器的使用 1、学习电子技术实验中常用电子仪器的主要技术指标、性能和正确使用方法。 2、初步掌握用示波器观察正弦信号波形和读取波形参数的方法。 电路实验箱的结构、基本功能和使用方法。 在模拟电子电路实验中,要对各种电子仪器进行综合使用,可按照信号流向,以接线简捷,调节顺手,观察与读数方便等原则进行合理布局。接线时应注意,为防止外界干扰,各仪器的公共接地端应连接在一起,称共地。 1.信号发生器 信号发生器可以根据需要输出正弦波、方波、三角波三种信号波形。输出信号电压频率可以通过频率分挡开关、频率粗调和细调旋钮进行调节。输出信号电压幅度可由输出幅度调节旋钮进行连续调节。 操作要领:

1)按下电源开关。 2)根据需要选定一个波形输出开关按下。 3)根据所需频率,选择频率范围、分别调节频率粗调和细调旋钮,在频率显示屏上显示所需频率即可。 4)调节幅度调节旋钮,用交流毫伏表测出所需信号电压值。 注意:信号发生器的输出端不允许短路。 2.交流毫伏表 交流毫伏表只能在其工作频率范围内,用来测量300伏以下正弦交流电压的有效值。 1)为了防止过载损坏仪表,在开机前和测量前应先将量程开关置于较大量程处,待输入端接入电路开始测量时,再逐档减小量程到适当位置。 2)读数:当量程开关旋到左边首位数为“1”的任一挡位时,应读取0~10标度尺上的示数。当量程开关旋到左边首位数为“3”的任一挡位时,应读取0~3标度尺上的示数。 3)仪表使用完后,先将量程开关置于较大量程位置后,才能拆线或关机。 3.双踪示波器 示波器是用来观察和测量信号的波形及参数的设备。双踪示波器可以同时对两个输入信号进行观测和比较。

操作系统实验报告

实验报告 实验课程名称:操作系统 实验地点:南主楼七楼机房 2018—2019学年(一)学期 2018年 9月至 2019 年 1 月 专业: 班级: 学号: 姓名: 指导老师:刘一男

实验一 实验项目:分时系统模拟 实验学时:2实验日期: 2018-10-25 成绩: 实验目的利用程序设计语言模拟分时系统中多个进程按时间片轮转调度算法进行进程调度的过程; 假设有五个进程A,B,C,D,E,它们的到达时间及要求服务的时间分别为:进程名 A B C D E 到达时间0 1 2 3 4 服务时间 4 3 4 2 4 时间片大小为1,利用程序模拟A,B,C,D,E五个进程按时间片轮转的调度及执行过程并计算各进程的周转时间及带权周转时间。 执行过程并计算各进程的周转时间及带权周转时间。 轮转调度:BDACE

(1)修改时间片大小为2,利用程序模拟A,B,C,D,E五个进程按时间片轮转的调度及执行过程并计算各进程的周转时间及带权周转时间。 轮转调度:ADBCE (2)修改时间片大小为4,利用程序模拟A,B,C,D,E五个进程按时间片轮转的调度及执行过程并计算各进程的周转时间及带权周转时间.

顺序:ABCDE 1、思考 时间片的大小对调度算法产生什么影响?对计算机的性能产生什么影响?答:通过对时间片轮转调度算法中进程最后一次执行时间片分配的优化,提出了一种改进的时间片轮转调度算法,该算法具有更好的实时性,同时减少了任务调度次数和进程切换次数,降低了系统开销,提升了CPU的运行效率,使操作系统的性能得到了一定的提高。 A B C D E 时间片为1 周转时间12 9 14 8 13 3 3 3.5 4 3.25 带权周转 时间 时间片为2 周转时间8 12 13 7 13 2 4 3.25 3.5 3.25 带权周转 时间 时间片为4 周转时间 4 6 9 10 13 1 2 2.25 5 3.25 带权周转 时间

操作系统实验报告心得体会

操作系统实验报告心得体会 每一次课程设计度让我学到了在平时课堂不可能学到的东西。所以我对每一次课程设计的机会都非常珍惜。不一定我的课程设计能够完成得有多么完美,但是我总是很投入的去研究去学习。所以在这两周的课设中,熬了2个通宵,生物钟也严重错乱了。但是每完成一个任务我都兴奋不已。一开始任务是任务,到后面任务就成了自己的作品了。总体而言我的课设算是达到了老师的基本要求。总结一下有以下体会。 1、网络真的很强大,用在学习上将是一个非常高效的助手。几乎所有的资料都能够在网上找到。从linux虚拟机的安装,到linux的各种基本命令操作,再到gtk的图形函数,最后到文件系统的详细解析。这些都能在网上找到。也因为这样,整个课程设计下来,我浏览的相关网页已经超过了100个(不完全统计)。当然网上的东西很乱很杂,自己要能够学会筛选。 不能决定对或错的,有个很简单的方法就是去尝试。就拿第二个实验来说,编译内核有很多项小操作,这些小操作错了一项就可能会导致编译的失败,而这又是非常要花时间的,我用的虚拟机,编译一次接近3小时。所以要非常的谨慎,尽量少出差错,节省时间。多找个几个参照资料,相互比较,

慢慢研究,最后才能事半功倍。 2、同学间的讨论,这是很重要的。老师毕竟比较忙。对于课程设计最大的讨论伴侣应该是同学了。能和学长学姐讨论当然再好不过了,没有这个机会的话,和自己班上同学讨论也是能够受益匪浅的。大家都在研究同样的问题,讨论起来,更能够把思路理清楚,相互帮助,可以大大提高效率。 3、敢于攻坚,越是难的问题,越是要有挑战的心理。这样就能够达到废寝忘食的境界。当然这也是不提倡熬夜的,毕竟有了精力才能够打持久战。但是做课设一定要有状态,能够在吃饭,睡觉,上厕所都想着要解决的问题,这样你不成功都难。 4、最好在做课设的过程中能够有记录的习惯,这样在写实验报告时能够比较完整的回忆起中间遇到的各种问题。比如当时我遇到我以前从未遇到的段错误的问题,让我都不知道从何下手。在经过大量的资料查阅之后,我对段错误有了一定的了解,并且能够用相应的办法来解决。 在编程中以下几类做法容易导致段错误,基本是是错误地使用指针引起的 1)访问系统数据区,尤其是往系统保护的内存地址写数据,最常见就是给一个指针以0地址 2)内存越界(数组越界,变量类型不一致等) 访问到不属于你的内存区域

实时操作系统实验报告2

实时操作系统实验报告 专业:11通信工程 学号:20110306136 姓名: 王帅 指导老师:申屠浩

实验二 任务管理实验 实验目的: 1、理解任务管理的基本原理,了解任务的各个基本状态及其变迁过程; 2、掌握μC/OS -II 中任务管理的基本方法(挂起、解挂); 3、熟练使用μC/OS -II 任务管理的基本系统调用。 实验要求与思路: 为了体现任务的各个基本状态及其变迁过程,本实验设计了T0、T1和T3三个任务,它们交替运行,如图2-2所示。 T0 T1 T2 T3 T4 T5 T6 T7 T8 图2-2 注意: 图中的栅格并不代表严格的时间刻度,而仅仅表现各任务启动和执行的相对先后关系。 说明: 在系统完成初始化后,可以先创建并启动优先级最低的TaskStart ,由它创建其他3个应用任务T0、T1和T2,之后整个系 T0 T2 T1 T0 T1 T2 T1 T0

统的运行流程如下: 1)优先级最高的T0开始执行,之后T0挂起自己; 2)然后系统调度选中T1开始执行,之后T1挂起自己; 3)接着系统调度选中T2,之后唤醒T0; 4)如此循环 实现提示: 在启动任务中创建三个任务后,应挂起任务1和任务2。 在每个任务恢复其它任务并挂起自己之前,显示当前三个任务的状态,并延时1秒。 函数说明: void PC_GetDateTime (char *s); 获取"YYYY-MM-DD HH:MM:SS"格式的时间字串存放在字符串s中,s的长度最少为21字节。 void PC_DispStr (INT8U x, INT8U y, INT8U *s, INT8U color); 在y行x列以color颜色值显示字串s,注意color由背景色和前景色两种颜色构成。 INT8U OSTimeDlyHMSM (INT8U hours, INT8U minutes, INT8U seconds, INT16U milli); 按时、分、秒、毫秒设置进行延时。 void OSTimeDly (INT16U ticks) 按ticks值进行延时,1 ticks一般为10ms。 INT32U OSTimeGet (void)

相关主题
文本预览
相关文档 最新文档