《数据库系统概论》实验指导书

《数据库系统概论》实验指导书
《数据库系统概论》实验指导书

《数据库原理及应用》

实验指导书

杜献峰

中原工学院

计算机科学系软件教研室

2007 06 15

前言

当前计算机专业的数据库实验教材种类繁多、内容可供选择的余地很大,然而,作为专业教学重要组成部分的实践环节却缺少必要的教材,致使实践教学内容的选择存在较大的随意性,教学过程难以控制和管理,教学质量得不到保证,最终将影响到整个专业的教学质量。鉴于此,整理这本《数据库系统概论实验指导书》作为计算机科学与技术专业的数据库实践教学的依据,从而使实践教学管理有据可依,进而保证教学质量。

在安排实验的内容和学时的过程中,充分考虑到我校数据库教学的《实验教学大纲》以及学生可接受的程度。

在2006年修订的培养计划中,计算机相关专业的《数据库原理及应用》课程的实验学时更改为18个学时,加大了实践环节,更加注重学生的实际动手能力的培养。为此对《数据库原理及应用》实验指导书每一学期都在进行修改,使其更加贴近教材,更加贴近实际。由于萨师煊王珊编写的《数据库概论第四版》于2006年9月出版,与其第三版有了较大的改进,增加了不少内容,教材更加贴近实际,更加贴近应用,这次对实验指导书的修正也是基于此。

在执行的过程中,可能因本实验内容考虑不周,会出现一些需要改进的问题,届时,根据教学进度进行及时地修改。

第一章概述 (4)

第二章实验要求及注意事项 (5)

第三章实验项目 (6)

实验一基本表的定义、删除与修改 (6)

实验二 SQL语言应用 (10)

实验三视图、索引及数据更新 (19)

实验四数据库安全性控制 (23)

实验五存储过程建立与调用 (25)

实验六触发器的建立与使用 (26)

实验七数据库连接与登陆 (27)

实验八 Delphi数据库组件的使用 (29)

实验九数据库数据查询 (30)

实验十数据库并发控制 (32)

实验十一数据库报表设计 (33)

实验十二数据库数据备份与恢复 (34)

实验十三数据库决策方设计 (35)

实验十四综合应用编程(一) (36)

实验十五综合应用编程(二) (37)

第四章实验项目涉及的主要仪器设备简介 (38)

第五章参考文献 (39)

第一章概述

数据库实践教学是数据库教学的重要组成部分,该课程强调学生的实践动手能力,是学生毕业设计以及参加工作后都要用到得课程知识,是学生必须掌握的内容。

安排的六个实验,要求前三个实验对SQL语言进行练习,达到熟练掌握,后三个实验要求掌握Delphi 环境下的数据库的编程,以及SQL Server 的使用。

第二章实验要求及注意事项

一、实验要求

实验开始前,预习课本第三章SQL语言内容以及相关知识,学习delphi 编程方法。

根据教学计划安排,数据库课程总学时数为64学时,其中实验12学时。在实验中,有验证性实验、设计性的实验,综合设计性实验。

DBMS和SQL认识性实验中,通过安装一个具体的DBMS软件,并通过软件的帮助文件了解DBMS的基本概念、术语、功能,并和教程中的相关内容相对照进一步掌握DBMS的有关知识。在软件向导的作用下,利用DBMS建立任意一个数据库,并在此基础上学习SQL的一些简单语句。

后三个实验为小型数据库系统的综合设计性实验,要求学生设计一个数据库系统,包括数据库模式设计、数据库定义、建立,并要求该系统通过宿主语言实现数据库的修改、查询功能。该实验中,为学生认识、了解数据库系统开发中的宿主语言的作用、数据库控件在数据库应用程序的作用和地位。通过该实验可使学生了解WINDOWS编程特点和语言要素,经过学生的一段时间的自学,可为以后的实验提供语言基础。

在该实验中要应用本课程的大部分知识内容和计算机语言知识,并需要学生课外自修Delphi之类的编程内容和数据库控件知识,对学生具有极大的挑战性。

在大纲中只规定了最基本的实验内容,但为学生的能力发挥和创新能力的培养留下了较大的空间。

二、注意事项

掌握编程的方法与技巧,如何实现与SQL Server 的连接和访问。达到每一个同学都能够熟练掌握,并能够给出相应的理论说明,注意Delphi 的BDE(Borland Database Engine),ODBC(Open DataBase Connection), SQL Sever 之间的关系。

第三章实验项目

实验一基本表的定义、删除与修改

一、实验目的:

熟练掌握基本表的定义、删除与修改,为后继学习作准备。

二、实验属性(验证性)

(1)了解并掌握SQL查询分析器及企业管理器的使用;

(2)掌握基本表的定义、删除与修改。

三、实验仪器设备及器材

1.预习教材第三章,熟悉SQL语句。

2.熟悉delphi 开发环境。

3.能够熟练掌握delphi环境下的数据库的编程。

四、实验要求(预习、实验前、实验中、实验后等要求)

1.预习教材第三章,熟悉SQL语句。

2.熟悉delphi 开发环境。

3.能够熟练掌握delphi环境下的数据库的编程。

五、实验原理

SQL语言应用。

六、实验步骤:

(1)启动SQL查询分析器;

(2)选择SQL SERVER后,按确认;

(3) 选择数据库;

(4) 验证如下例子:

1 定义基本表

例1.1 建立表3.3所示的学生表Students ,每个属性名的意义为Sno-学号、Sname-姓名、Ssex-性别、Sage-年龄、Sdept-所在系。这里要求Sno 和Sname 不能为空值,且取值唯一。Sno 为主码。

CREATE TABLE Student

(Sno CHAR(5) NOT NULL UNIQUE /*列级完整性约束条件*/ Sname CHAR(20) NOT NULL, NOT NULL UNIQUE

/*Sname 不能为空值*/

Ssex CHAR(2), Sage INT,

Sdept CHAR(15), PRIMARY KEY (Sno),

CONSTRAINT un_Sname UNIQUE(Sname)); /* Sname 取值唯一

的约束*/

说明:在Microsoft SQL Server 2000的查询分析器(Query Analyzer)中使用单条SQL 语句,其末尾不需要分号“;”作为命令结尾标记。通常,SQL Server 2000对大多数末尾带有分号的SQL 命令都能顺利执行,但对少数的SQL 命令,末尾若带分号,则SQL Server 2000会给出错误信息提示。 比

表3.5 关系Reports

表3.4 关系Courses

表3.3 关系Students

如,出现“Incorrect syntax near ';'”的提示,虽然SQL Server 2000实际上已经执行了该命令。

例1.1-1 建立表3.4所示的课程表Courses,其属性名意义分别为Cno-课程号, Cname-课程名, Pre_Cno-先修课程号, Credits-学分。Cno为主码。

CREATE TABLE Course

(Cno CHAR(5)

Cname CHAR(20) NOT NULL, /*Cname不能为空值*/

Pre_Cno CHAR(5),

Credits INT,

PRIMARY KEY(Cno));

例1.1-2 建立表3.5所示的成绩表Reports。其中的属性名意义分别为Sno-学号,Cno-课程号和Grade-考试成绩。Sno和Cno为主码。

CREATE TABLE Report

( Sno CHAR(5)

Cno CHAR(5)

Grade INT,

PRIMARY KEY (Sno,Cno)

FOREIGN KEY (Sno)REFERENCE Students(Sno),

FOREIGN KEY (Cno)REFERENCE Students(Courses));

2 修改基本表

例 1.2向基本表Student中增加“入学时间”属性列,其属性名为RegisterDate,数据类型为DA TETIME型。

ALTER TABLE Student ADD RegisterDate DATETIME;

例1.3将Sage(年龄)的数据类型改为SMALLINT型。

ALTER TABLE Student ALTER COLUMN Sage SMALLINT;

例1.4删除Sname(姓名)必须取唯一值的约束。

ALTER TABLE Student DROP CONSTRAINT un_Sname;

注意:SQL Server 2000 增加了删除属性的命令。比如,删除属性列RegisterDate的命令为:

ALTER TABLE Student DROP COLUMN RegisterDate;

说明:为了保证后面例子能够顺利运行,请大家一定将属性列RegisterDate从Students表中删除。

3 删除基本表

例3.5 删除Student 表。

DROP TABLE Student ;

说明:此表删除后,请立即用例3.1将其建立起来,以便后面的例子使用。

4 向表中添加元组

例3.6将一个学生元组(S01,王建平,男,21,计算机)添加到基本表Students中。

INSERT

INTO Student

V ALUES ('S01','王建平','男',21,'自动化');

说明:⑴请读者用这个命令将其余5个学生的元组也添加到基本表Students中。

⑵向Course表插入元组(‘C01’,’英语’,’’,4)的命令为:

INSERT

INTO Courses

V ALUES ('C01','英语','',4);

将其余6门课程的信息插入Courses表中。

例3.7将学习成绩的元组(‘S01’, ’C01’)添加到基本表Reports中。

INSERT

INTO Reports(Sno, Cno)

V ALUES (‘S01’,’C01’);

说明:用这个命令将其余7个选课元组也添加到基本表Reports中.

实验二 SQL语言应用

一、实验目的:

熟练掌握基本表的定义、删除与修改,为后继学习作准备。

二、实验属性(验证性)

了解并掌握SQL查询分析器及企业管理器的使用;

掌握基本表的定义、删除与修改。

三、实验仪器设备及器材

1.预习教材第三章,熟悉SQL语句。

2.熟悉delphi 开发环境。

3.能够熟练掌握delphi环境下的数据库的编程。

四、实验要求(预习、实验前、实验中、实验后等要求)

1.预习教材第三章,熟悉SQL语句。

2.熟悉delphi 开发环境。

3.能够熟练掌握delphi环境下的数据库的编程。

4.掌握单表查询语句的一般格式。;

5.掌握单表无条件、有条件查询及查询结果排序与分组。

6.掌握多表连接、嵌套和集合查询语句的一般格式及各种使用方法。

五、实验原理

SQL语言应用。

六、实验步骤:

(1) 启动SQL查询分析器;

(2) 选择SQL SERVER后,按确认;

(3) 选择数据库;

(4) 验证如下例子:

一、单表查询

1 无条件查询

例2.1查询全体学生的详细记录。这是一个无条件的选择查询,其命令为:

SELECT * /*这里的“*”等价于ALL*/

FROM Student;

其结果为表3.3中的全部数据。

例2.2查询全体学生的姓名(Sname)、学号(Sno)、所在系(Sdept)。这是一个无条件的投影查询,其命令为:

SELECT Sname, Sno, Sdept

FROM Student;

例2.3查询全体学生的姓名(Sname)、出生年份及学号(Sno)。由于SELECT子句的<目标列表达式>不仅可以是表中的属性列,也可以是表达式,故可以查询经过计算的值。其命令为:

SELECT Sno, Sname, 2001-Sage

FROM Student;

例2.4查询全体学生的姓名、出生年份和学号,要求用小写字母表示学号中的字母。其命令为:

SELECT Sname, ’Birth:’ Title, 1996-Sage BirthYear, LOWER(Sno) Lsno

FROM Student;

例2.5查询选修了课程的学生学号。其命令为:

SELECT DISTINCT Sno

FROM Reports;

2 条件查询

例2.6 查询数学系全体学生的学号(Sno)和姓名(Sname)。其命令为:

SELECT Sno, Sname

FROM Student

WHERE Sdept='数学';

例2.7 查询所有年龄在18~22岁(包括18岁和22岁)之间的学生姓名(Sname)及年龄(Sage)。其命令为:

SELECT Sname, Sage

FROM Student

WHERE Sage =18 AND Sage<=22;

例 2.8 查询年龄在18~22岁(包括18岁和22岁)之间的学生姓名(Sname)及年龄(Sage)。其命令为:

SELECT Sname, Sage

FROM Student

WHERE Sage BETWEEN 18 AND 22;

例2.9 查询年龄不在18-22岁之间的学生姓名(Sname)及年龄(Sage)。其命令为:SELECT Sname, Sage

FROM Student

WHERE Sage NOT BETWEEN 18 AND 22;

例 2.10 查询自动化系、数学和计算机系学生的学号(Sno)、姓名(Sname)和性别

(Ssex)。其命令为:

SELECT Sno, Sname, Ssex

FROM Students

WHERE Sdept IN ('自动化', '数学', '计算机');

等价于:SELECT Sname, Ssex

FROM Students

WHERE Sdept='自动化' OR Sdept='数学' OR Sdept='计算机';

例2.11查询既不是信息系、数学系、也不是计算机系的学生的姓名(Sname)和性别(Ssex)。其命令为:

SELECT Sname, Ssex

FROM Student

WHERE Sdept NOT IN ('自动化', '数学', '计算机');

例2.12 查询所有姓刘的学生的姓名(Sname)、学号(Sno)和性别(Ssex)。其命令为:SELECT Sname, Sno, Ssex

FROM Student

WHERE Sname LIKE '刘%';

例2.13查询姓“刘”且全名为4个汉字的学生的姓名(Sname)和所在系(Sdept)。其命令为:

SELECT Sname, Sdept

FROM Student

WHERE Sname LIKE '刘';

例2.14查询所有不姓刘的学生姓名(Sname)和年龄(Sage)。

SELECT Sname, Sage

FROM Student

WHERE Sname NOT LIKE '刘%';

例2.15 查询课程名为“DB_设计”的课程号(Cno)和学分(Credits)。其命令为:SELECT Cno, Credits

FROM Course

WHERE Cname LIKE 'DB\_设计' ESCAPE '\';

例2.16查询以"DB_"开头,且倒数第2个汉字字符为“设”的课程的详细情况。

其命令为:

SELECT *

FROM Course

WHERE Cname LIKE 'DB\_%设'ESCAPE'\';

例2.17假设某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。试查询缺少成绩的学生的学号(Sno)和相应的课程号(Cno)。其命令为:SELECT Sno, Cno

FROM Reports

WHERE Grade IS NULL;

例2.18 查询所有有成绩的学生学号(Sno)和课程号(Cno)。其命令为:

SELECT Sno, Cno

FROM Reports

WHERE Grade IS NOT NULL;

3 查询结果排序

例2.19查询选修了C03号课程的学生的学号(Sno)和成绩(Grade),并按成绩降序排列。其命令为:

SELECT Sno, Grade

FROM Reports

WHERE Cno='C03'

ORDER BY Grade DESC;

例2.20查询全体学生情况,查询结果按所在系的系名(Sdpet)升序排列,同一系中的学生按年龄(Sage)降序排列。其命令为:

SELECT *

FROM Students

ORDER BY Sdept, Sage DESC;

4 集函数的使用

例2.21查询学生总人数。其命令为:

SELECT COUNT(*)

FROM Students;

例2.22查询选修了课程的学生人数。其命令为:

SELECT COUNT(DISTINCT Sno)

FROM Reports;

例2.23计算选修C01号课程的学生平均成绩。其命令为:

SELECT AVG(Grade)

FROM Reports

WHERE Cno='C01';

例2.24查询选修C01号课程的学生最高分数。其命令为:

SELECT MAX(Grade)

FROM Reports

WHERE Cno='C01';

5 查询结果分组

例2.25求各个课程号(Cno)及相应的选课人数。其命令为:

SELECT Cno , COUNT(Sno) CntSno

FROM Reports

GROUP BY Cno;

例2.26查询选修了3门或3门以上课程的学生学号(Sno)。其命令为:

SELECT Sno

FROM Reports

GROUP BY Sno

HA VING COUNT(Cno)>

二、连接查询

1 不同表之间的连接查询

例2.27查询每个学生及其选修课程的情况。

本查询实际上是涉及Students与Reports两个表的连接操作。这两个表之间的联系是通过公共属性Sno实现的,因此,其操作命令为:

说明:若在以上等值连接中把目标列中重复的属性列去掉则为自然连接,其命令为SELECT Students.Sno, Sname, Ssex, Sage, Sdept, Cno, Grade

FROM Students, Reports

WHERE Students.Sno= Reports.Sno;

SELECT Student.*,SC.*

FROM Student, SC

WHERE Student.Sno = SC.Sno;

例 2.28 查询每个学生的学号(Sno)、姓名(Sname)、选修的课程名(Cname)及成绩(Grade)。

本查询涉及到三个表的连接操作,完成该查询的SQL语句如下:

SELECT Students.Sno, Sname, Cname, Grade

FROM Students, Reports, Courses

WHERE Students.Sno= Reports.Sno AND https://www.360docs.net/doc/149611297.html,o=https://www.360docs.net/doc/149611297.html,o;

2 自身连接

例2.29查`询每一门课的间接先修课(即先修课的先修课)。

在Courses表关系中,只有每门课的直接先修课信息,而没有先修课的先修课。要得到这个信息,必须先对一门课找到其先修课,再按此先修课的课程号,查找它的先修课程。这就需要要将Courses表与其自身连接。为方便连接运算,这里为Courses表取两个别名分别为A,B。则完成该查询的SQL语句为:

SELECT https://www.360docs.net/doc/149611297.html,o, https://www.360docs.net/doc/149611297.html,ame, B.Pre_Cno

FROM Courses A, Courses B

WHERE A.Pre_Cno =https://www.360docs.net/doc/149611297.html,o;

3 外连接

例2.30把例3.37中的等值连接改为左连接。该左连接操作在SQL Server 2000中的命令格式为:

SELECT Students.Sno, Sname, Ssex, Sdept, Cno, Grade

FROM Students

LEFT JOIN Reports ON

Students.Sno= Reports.Sno;

说明:以上左连接操作也可以用如下的右连接操作代替,其结果完全一样。

SELECT Students.Sno, Sname, Ssex, Sdept, Cno, Grade

FROM Reports

RIGHT JOIN Students ON

Reports.Sno=Students.Sno;

三、嵌套查询

1 带谓词IN的嵌套查询

例2.31 查询选修了编号为“C02”的课程的学生姓名(Sname)和所在系(Sdept)。

SELECT Sname, Sdept

FROM Students

WHERE Sno IN

(SELECT Sno

FROM Reports

WHERE Cno='C02');

例 2.32查询与“李伟”在同一个系学习的学生学号(Sno)、姓名(Sname)和系名(Sdept)。

该查询可构造嵌套查询实现,其SQL语句如下:

SELECT Sno, Sname, Sdept

FROM Students

WHERE Sdept IN

(SELECT Sdept

FROM Students

WHERE Sname=’李伟’);

说明:本例中的查询也可以用自身连接来完成,其SQL语句如下:

SELECT A.Sno , A.Sname , A.Sdept

FROM Students A , Students B

WHERE A.Sdept=B.Sdept AND B.Sname=’李伟’;

例2.33查询选修了课程名为“数据结构”的学生学号(Sno)和姓名(Sname)。

本查询涉及学号、姓名和课程名(Cname)三个属性。学号和姓名存放在Students表中,课程名的存放在Courses表中,但Students与Courses两个表之间没有公共属性,必须通过Reports表建立它们之间的联系。所以本查询实际上涉及三个关系的连接操作。

SELECT Sno, Sname /* ③最后在Studenst关系中*/ FROM Students /* 取出Sno和Sname */ WHERE Sno IN

(SELECT Sno /*②然后在SC关系中找出*/

FROM Reports /*选修了3号课程的学生学号*/

WHERE Cno IN

(SELECT Cno /*①首先在Courses关系中*/

FROM Courses /*找出“数据结构”的课程号,*/

WHERE Cname = ‘数据结构’));/*结果为C02号*/ 说明:本查询同样可以用连接查询实现:

SELECT S.Sno, Sname

FROM Students S, Reports R, Courses C

WHERE S.Sno=R.Sno AND https://www.360docs.net/doc/149611297.html,o=https://www.360docs.net/doc/149611297.html,o AND https://www.360docs.net/doc/149611297.html,ame='数据结构';

2 带有比较运算符的嵌套查询

例2.34将例3.42改为带有比较运算符的嵌套查询。由于一个学生只可能在一个系学习,因此子查询的结果是一个值,因此可以用=代替IN,其SQL语句如下:SELECT Sno , Sname, Sdept

FROM Students

WHERE Sdept =

(SELECT Sdept

FROM Students

WHERE Sname=’李伟’);

3 带谓词ANY或ALL的嵌套查询

例 2.35查询非自动化系的不超过自动化系所有学生的年龄的学生姓名(Sname)和年龄(Sage)。其查询命令为

SELECT Sname, Sage

FROM Students

WHERE Sdept<>'自动化'

AND Sage<=ALL (SELECT Sage

FROM Students

WHERE Sdept= '自动化');

说明:本查询也可以用集函数来实现。其SQL语句如下:

SELECT Sname, Sage

FROM Students

WHERE Sdept<>'自动化'

AND Sage<= (SELECT MIN(Sage)

FROM Students

WHERE Sdept='自动化');

4 带谓词EXISTS的嵌套查询

例2.36查询所有选修了编号为“C01”课程的学生姓名(Sname)和所在系(Sdept)。

本查询的SQL语句是:

SELECT Sname, Sdept

FROM Students

WHERE EXISTS

(SELECT *

FROM Reports

WHERE Sno=Students.Sno AND Cno='C01');

例2.37将例3.42改为带谓词EXISTS的查询,其SQL语句如下

SELECT Sno, Sname, Sdept

FROM Students A

WHERE EXISTS

(SELECT *

FROM Students B

WHERE B.Sdept=A.Sdept AND B.Sname=’李伟’);

例2.38 查询选修了所有课程的学生姓名(Sname)和所在系。

由于没有全称量词,可将题目的意思转换成等价的用存在量词的形式:查询这样的学生,没有一门课程是他不选修的。其SQL语句为:

SELECT Sname, Sdept

FROM Students

WHERE NOT EXISTS

(SELECT *

FROM Courses

WHERE NOT EXISTS

(SELECT * FROM Reports WHERE Sno=Students.Sno

AND Cno=https://www.360docs.net/doc/149611297.html,o));

四、集合查询

例2.39查询计算机科学系的学生或年龄不大于20岁的学生信息。

SELECT *

FROM Students

WHERE Sdept='计算机'

UNION

SELECT *

FROM Students

WHERE Sage<=20;

例2.40 查询数学系的学生且年龄不大于20岁的学生的交集,这实际上就是查询数学系中年龄不大于20岁的学生。

SELECT *

FROM Students

WHERE Sdept='数学' AND Sage<=20;

例2.41查询数学系的学生与年龄不大于20岁的学生的差集。

本查询的等价说法是,查询数学系中年龄大于20岁的学生。

SELECT *

FROM Students

WHERE Sdept='计算机' AND Sage>20;

实验三视图、索引及数据更新

一、实验目的:

熟练掌握索引的建立与删除的方法,熟练掌握SQL的应用,

熟练掌握数据插入、修改和删除的使用,为后继学习作准备。

二、实验属性(验证性)

1.了解并掌握SQL查询分析器及企业管理器的使用;

2.掌握基本表的定义、删除与修改。

三、实验仪器设备及器材

1.预习教材第三章,熟悉SQL语句。

2.熟悉delphi 开发环境。

3.能够熟练掌握delphi环境下的数据库的编程。

四、实验要求(预习、实验前、实验中、实验后等要求)

1.预习教材第三章,熟悉SQL语句。

2.熟悉delphi 开发环境。

3.能够熟练掌握delphi环境下的数据库的编程。

4.掌握建立索引的二种方法,即在基本表中建立和用命令方式建立。

5.掌握删除索引的方法。

6.掌握sql视图建立、修改和删除;

7.掌握sql视图查询。

8.掌握sql数据插入、修改和删除语句的一般格式及使用方法。

五、实验原理

SQL语言应用。

六、实验步骤:

(1) 启动SQL查询分析器;

(2) 选择SQL SERVER后,按确认;

(3) 选择数据库;

(4) 验证如下例子:

1 建立索引

例3.1为学生选课数据库中的Students,Courses,Reports三个表建立索引。其中Students表按Sno(学号)升序建唯一索引,Courses表按Cno(课程号)升序建唯一索引,Reports表按Sno(学号)升序和Cno(课程号)号降序建唯一索引。

例3.2 在基本表Students的Sname(姓名)和Sno(学号)列上建立一个聚簇索引,而且Students中的物理记录将按照Sname值和Sno值的升序存放。

例3.3删除基本表Reports上的Rep_SCno索引。

3 建立视图

例3.4建立计算机学院学生的视图,并要求进行修改和插入操作时仍需保证该视图只有数学系的学生,视图的属性名为Sno,Sname,Sage,Sdept。

create view IS_Student

as

select Sno,Sname,Sage,Sdept from Student where Sdept='计算机学院'

例3.5 建立学生的学号(Sno)、姓名(Sname)、选修课程名(Cname)及成绩(Grade)的视图。

本视图由三个基本表的连接操作导出,其SQL语句如下:

create view IS_S1(Sno,Sname,Cname,Grade)

as

select Student.Sno,Sname,https://www.360docs.net/doc/149611297.html,ame,SC.Grade

from Student,SC,Course

例3.6定义一个反映学生出生年份的视图。

create view BT_S(Sno,Sname,Sbirth)

as

select Sno,Sname,2014-Sage

from Student

4 删除视图

例3.7删除视图Student_CR。

drop view Student_CR

5 查询视图

例3.8在计算机学院的学生视图IS_Student中找出年龄(Sage)小于20岁的学生姓名(Sname)和年龄(Sage)。

select Sname,Sage from IS_Student

where Sage<20

链表实验报告

C语言程序设计实验报告 实验一:链表的基本操作一·实验目的 1.掌握链表的建立方法 2.掌握链表中节点的查找与删除 3.掌握输出链表节点的方法 4.掌握链表节点排序的一种方法 5.掌握C语言创建菜单的方法 6.掌握结构化程序设计的方法 二·实验环境 1.硬件环境:当前所有电脑硬件环境均支持 2.软件环境:Visual C++6.0 三.函数功能 1. CreateList // 声明创建链表函数 2.TraverseList // 声明遍历链表函数 3. InsertList // 声明链表插入函数 4.DeleteTheList // 声明删除整个链表函数 5. FindList // 声明链表查询函数 四.程序流程图 五.程序代码 #include #include typedef int Elemtype; typedef int Status; typedef struct node//定义存储节点 { int data;//数据域 struct node *next;//结构体指针 } *linklist,node;//结构体变量,结构体名称 linklist creat (int n)//创建单链表 { linklist head,r,p;//定义头指针r,p,指针 int x,i; head=(node *)malloc(sizeof(node));//生成头结点

r=head;//r指向头结点 printf("输入数字:\n"); for(i=n;i>0;i--)//for 循环用于生成第一个节点并读入数据{ scanf("%d",&x); p=(node *)malloc(sizeof(node)); p->data=x;//读入第一个节点的数据 r->next=p;//把第一个节点连在头结点的后面 r=p;//循环以便于生成第二个节点 } r->next=0;//生成链表后的断开符 return head;//返回头指针 } void output (linklist head)//输出链表 { linklist p; p=head->next; do { printf("%3d",p->data); p=p->next; } while(p); printf("\n") } Status insert ( linklist &l,int i, Elemtype e)//插入操作 { int j=0; linklist p=l,s; while(jnext; ++j; } if(!p || j>i-1) return -1; else { s=(node *)malloc(sizeof(node)); s->data=e; s->next=p->next; p->next=s; return 1; } } Status delect ( linklist &l,int i, Elemtype &e)//删除操作 { int j=0; linklist p=l,q; while(jnext) { p=p->next; ++j; } if(!p->next || j>i-1) return -1;

《数据结构》实验报告 设计循环单链表

《数据结构》实验报告 1、实验名称:设计循环单链表 2、实验日期: 2013-3-26 3、基本要求: 1)循环单链表的操作,包括初始化、求数据元素个数、插入、删除、取数据元素; 2)设计一个测试主函数实际运行验证所设计循环单链表的正确性。 4、测试数据: 依次输入1,2,3,4,5,6,7,8,9,10,删除5,再依次输出数据元素。 5、算法思想或算法步骤: 主函数主要是在带头结点的循环单链表中删除第i个结点,其主要思想是在循环单链表中寻找到第i-1个结点并由指针p指示,然后让指针s指向a[i]结点,并把数据元素a[i]的值赋给x,最后把a[i]结点脱链,并动态释放a[i]结点的存储空间。 6、模块划分: 1)头文件LinList.h。头文件LinList.h中包括:结点结构体定义、初始化操作、求当前数据个数、插入一个结点操作、删除一个结点操作以及取一个数据元素操作; 2)实现文件dlb.cpp。包含主函数void main(void),其功能是测试所设计的循环单链表的正确性。

7、数据结构: 链表中的结点的结构体定义如下: typedef struct Node { DataType data; struct Node *next; }SLNode; 8、源程序: 源程序存放在两个文件中,即头文件LinList.h和实现文件dlb.cpp。//头文件LinList.h typedef struct Node { DataType data; struct Node *next; }SLNode; void ListInitiate(SLNode **head) //初始化 { *head=(SLNode *)malloc(sizeof(SLNode)); //申请头结点,由head指示其地址 (*head)->next=*head; }

测试技术实验指导书及实验报告2006级用汇总

矿压测试技术实验指导书 学号: 班级: 姓名: 安徽理工大学 能源与安全学院采矿工程实验室

实验一常用矿山压力仪器原理及使用方法 第一部分观测岩层移动的部分仪器 ☆深基点钻孔多点位移计 一、结构简介 深基点钻孔多点位移计是监测巷道在掘进和受采动影响的整个服务期间,围岩内部变形随时间变化情况的一种仪器。 深基点钻孔多点位移包括孔内固定装置、孔中连接钢丝绳、孔口测读装置组成。每套位移计内有5~6个测点。其结构及其安装如图1所示。 二、安装方法 1.在巷道两帮及顶板各钻出φ32的钻孔。 2.将带有连接钢丝绳的孔内固定装置,由远及近分别用安装圆管将其推至所要求的深度。(每个钻孔布置5~6个测点,分别为;6m、5m、4m、3m、2m、lm或12m、10m、8m、6m、4m、2m)。 3.将孔口测读装置,用水泥药圈或木条固定在孔口。 4。拉紧每个测点的钢丝绳,将孔口测读装置上的测尺推至l00mm左右的位置后,由螺丝将钢丝绳与测尺固定在一起。 三、测试方法 安装后先读出每个测点的初读数,以后每次读得的数值与初读数之差,即为测点的位移值。当读数将到零刻度时,松开螺丝,使测尺再回到l00mm左右的位置,重新读出初读数。 ☆顶板离层指示仪 一、结构简介: 顶板离层指示仪是监测顶板锚杆范围内及锚固范围外离层值大小的一种监测仪器,在顶板钻孔中布置两个测点,一个在围岩深部稳定处,一个在锚杆端部围岩中。离层值就是围岩中两测点之间以及锚杆端部围岩与巷道顶板表面间的相对位移值。顶板离层指示仪由孔内固定装置、测量钢丝绳及孔口显示装置组成如图1所示。

二、安装方法: 1.在巷道顶板钻出φ32的钻孔,孔深由要求而定。 2.将带有长钢丝绳的孔内固定装置用安装杆推到所要求的位置;抽出安装杆后再将带有短钢丝绳的孔内固定装置推到所要求的位置。 3.将孔口显示装置用木条固定在孔口(在显示装置与钻孔间要留有钢丝绳运动的间隙)。 4.将钢丝绳拉紧后,用螺丝将其分别与孔口显示装置中的圆管相连接,且使其显示读数超过零刻度线。 三、测读方法: 孔口测读装置上所显示的颜色,反映出顶板离层的范围及所处状态,显示数值表示顶板的离层量。☆DY—82型顶板动态仪 一、用途 DY-82型顶板动态仪是一种机械式高灵敏位移计。用于监测顶底板移近量、移近速度,进行采场“初次来压”和“周期来压”的预报,探测超前支撑压力高 峰位置,监测顶板活动及其它相对位移的测量。 二、技术特征 (1)灵敏度(mm) 0.01 (2)精度(%) 粗读±1,微读±2.5 (3)量程(mm) 0~200 (4)使用高度(mm) 1000~3000 三、原理、结构 其结构和安装见图。仪器的核心部件是齿条6、指针8 以及与指针相连的齿轮、微读数刻线盘9、齿条下端带有读 数横刻线的游标和粗读数刻度管11。 当动态仪安装在顶底板之间时,依靠压力弹簧7产生的 弹力而站立。安好后记下读数(初读数)并由手表读出时间。 粗读数由游标10的横刻线在刻度管11上的位置读出,每小 格2毫米,每大格(标有“1”、“22'’等)为10毫米,微读数 由指针8在刻线盘9的位置读出,每小格为0.01毫米(共200 小格,对应2毫米)。粗读数加微读数即为此时刻的读数。当 顶底板移近时,通过压杆3压缩压力弹簧7,推动齿条6下 移,带动齿轮,齿轮带动指针8顺时针方向旋转,顶底板每 移近0.01毫米,指针转过1小格;同时齿条下端游标随齿条 下移,读数增大。后次读数减去前次读数,即为这段时间内的顶底板移近量。除以经过的时间,即得

细胞生物学实验

1. 什么是细胞培养? 细胞生物学实验 指从动物活体体内取出组织,并将其分散为单个细胞(机械或酶消化),在体外模拟体内的生理环境,使其在人工培养条件下保持生长、分裂繁殖、细胞的接触性抑制以及细胞衰老过程等生命现象。 最常见的细胞一般有两种,一种是原代细胞,另一种是传代细胞。 原代细胞是指动物组织经过胰酶或胶原酶等酶类的消化,使其分散,从而获得单个细胞,再使这些单个细胞生长于培养容器中的过程。大多数组织可以制备原代细胞,但制备的方法略有不同,制备的细胞生长快慢及难易程度也不相同。 不同的原代细胞,其形态也不尽相同。一般将10代以内的细胞称之为原代细胞。 传代细胞一般指无限繁殖的细胞系,理论上这类细胞可以无限次的传代。做实验的时候也会经常使用这类细胞,如Hela、293、Vero 等细胞。 2. 细胞的生长周期 游离期:细胞刚接种到新的培养容器中到贴壁前的一段时期,这个时期的长短由细胞类型决定,从几分钟到几个小时不等。 贴壁期:细胞从游离状态变为贴附到培养器皿表面并展现出一定细胞形态的时期。 潜伏期:细胞在完成贴壁后,并不会马上进行增殖,会进行增殖所必须的物质和能量的储备,这个时候称之为潜伏期。

对数生长期:细胞在完成物质和能量储备后,开始大量的增殖的时期。这个时期的细胞活力旺盛,且状态稳定,我们所做的绝大多数实验都是在这个时期开展的。 停止期:随着细胞的生长,细胞密度越来越大,由于营养物质的消耗、细胞间的接触抑制等因素,细胞生长缓慢,甚至停止生长。这个时候,我们就要给细胞进行传代了,使细胞可以继续进行增殖,保持旺盛的活力。 3. 细胞生长所需要营养条件 细胞的培养所需要的营养成份一般来自于基础培养基(比如DMEM培养基)和血清。 基础培养基:主要是提供细胞生长所需要的氨基酸(组成蛋白质的基本单位)、维生素(细胞代谢中辅酶的组成成分)、无机离子(K+,Na+等)、碳水化合物(碳源和能量来源)和一些激素等营养物质。 血清:主要是提供一些基础培养基不能提供的生长因子和低分子的营养物质,此外它还有促进细胞的贴壁、中和有害重金属离子等作用。如果只提供基础培养基而不提供血清,绝大多数细胞是无法生长的。血清对于我们实验的重要性就不言而喻了,那么什么样的血清才算是合格的血清呢? 合格的血清需要通过各种检测,包括无细菌,无真菌,无支原体检测,无病毒污染。血清一般呈现为淡黄色,透明状液体,由于含有大量的蛋白质等成分,会略有黏稠。以全式金公司的TransSerum EQ Fetal Bovine Serum (FS201-02)为例,它通过了牛腹泻病毒、牛副

单链表实验报告

计算机与信息技术学院综合性、设计性实验报告 一、实验目的 (1)熟悉顺序表的创建、取值、查找、插入、删除等算法,模块化程序设计方法。 二、实验仪器或设备 (1)硬件设备:CPU为Pentium 4 以上的计算机,内存2G以上 (2)配置软件:Microsoft Windows 7 与VC++6.0 三、总体设计(设计原理、设计方案及流程等) 设计原理: 单链表属于线性表,线性表的存储结构的特点是:用一组任意存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。因此,对于某个元素来说,不仅需要存储其本身的信息,还需要存储一个指示其直接后继的信息。 设计方案: 采用模块化设计的方法,设计各个程序段,最终通过主函数实现各个程序段的功能。设计时,需要考虑用户输入非法数值,所以要在程序中写入说可以处理非法数值的代码。 设计流程: 1. 引入所需的头文件; 2. 定义状态值; 3. 写入顺序表的各种操作的代码; 写入主函数,分别调用各个函数。在调用函数时,采用if结构进行判断输 入值是否非法,从而执行相应的程序 四、实验步骤(包括主要步骤、代码分析等) #include // EOF(=A Z 或F6),NULL #in clude // srand( ) ,rand( ),exit (n) #in clude // malloc( ),alloc( ),realloc() 等 #in clude // INT_MAX 等 #in clude #in clude #in clude // floor(),ceil( ),abs() #in clude // cout,ci n #in clude // clock( ),CLK_TCK,clock_t #defi ne TRUE 1 #defi ne FALSE 0 #defi ne OK 1 #defi ne ERROR 0 #defi ne INFEASIBLE -1

混凝土结构实验指导书及实验报告(学生用)

土木工程学院 《混凝土结构设计基本原理》实验指导书 及实验报告 适用专业:土木工程周淼 编 班级::学 号: 理工大学 2018 年9 月

实验一钢筋混凝土梁受弯性能试验 一、实验目的 1.了解适筋梁的受力过程和破坏特征; 2.验证钢筋混凝土受弯构件正截面强度理论和计算公式; 3.掌握钢筋混凝土受弯构件的实验方法及荷载、应变、挠度、裂缝宽度等数据的测试技术 和有关仪器的使用方法; 4.培养学生对钢筋混凝土基本构件的初步实验分析能力。 二、基本原理当梁中纵向受力钢筋的配筋率适中时,梁正截面受弯破坏过程表现为典型的三个阶段:第一阶段——弹性阶段(I阶段):当荷载较小时,混凝土梁如同两种弹性材料组成的组合梁,梁截面的应力呈线性分布,卸载后几乎无残余变形。当梁受拉区混凝土的最大拉应力达到混凝土的抗拉强度,且最大的混凝土拉应变超过混凝土的极限受拉应变时,在纯弯段某一薄弱截面出现首条垂直裂缝。梁开裂标志着第一阶段的结束。此时,梁纯弯段截面承担的弯矩M cr称为开裂弯矩。第二阶段——带裂缝工作阶段(II阶段):梁开裂后,裂缝处混凝土退出工作,钢筋应力急增,且通过粘结力向未开裂的混凝土传递拉应力,使得梁中继续出现拉裂缝。压区混凝土中压应力也由线性分布转化为非线性分布。当受拉钢筋屈服时标志着第二阶段的结束。此时梁纯弯段截面承担的弯矩M y称为屈服弯矩。第三阶段——破坏阶段(III阶段):钢筋屈服后,在很小的荷载增量下,梁会产生很大的变形。裂缝的高度和宽度进一步发展,中和轴不断上移,压区混凝土应力分布曲线渐趋丰满。当受压区混凝土的最大压应变达到混凝土的极限压应变时,压区混凝土压碎,梁正截面受弯破坏。此时,梁承担的弯矩M u 称为极限弯矩。适筋梁的破坏始于纵筋屈服,终于混凝土压碎。整个过程要经历相当大的变形,破坏前有明显的预兆。这种破坏称为适筋破坏,属于延性破坏。 三、试验装置

单链表的插入和删除实验报告

. 实验一、单链表的插入和删除 一、目的 了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。 二、要求: 建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串;根据输入的字符串,先找到相应的结点,后删除之。 三、程序源代码 #include"stdio.h" #include"string.h" #include"stdlib.h" #include"ctype.h" typedef struct node //定义结点 { char data[10]; //结点的数据域为字符串 struct node *next; //结点的指针域 }ListNode; typedef ListNode * LinkList; // 自定义LinkList单链表类型 LinkList CreatListR1(); //函数,用尾插入法建立带头结点的单链表

ListNode *LocateNode(); //函数,按值查找结点 void DeleteList(); //函数,删除指定值的结点void printlist(); //函数,打印链表中的所有值 void DeleteAll(); //函数,删除所有结点,释放内存 //==========主函数============== void main() { char ch[10],num[10]; LinkList head; head=CreatListR1(); //用尾插入法建立单链表,返回头指针printlist(head); //遍历链表输出其值 printf(" Delete node (y/n):");//输入“y”或“n”去选择是否删除结点scanf("%s",num); if(strcmp(num,"y")==0 || strcmp(num,"Y")==0){ printf("Please input Delete_data:"); scanf("%s",ch); //输入要删除的字符串 DeleteList(head,ch); printlist(head); } DeleteAll(head); //删除所有结点,释放内存 } //==========用尾插入法建立带头结点的单链表

土工实验指导书及实验报告

土工实验指导书及实验报告编写毕守一 安徽水利水电职业技术学院 二OO九年五月

目录 实验一试样制备 实验二含水率试验 实验三密度试验 实验四液限和塑限试验 实验五颗粒分析试验 实验六固结试验 实验七直接剪切试验 实验八击实试验 土工试验复习题

实验一试样制备 一、概述 试样的制备是获得正确的试验成果的前提,为保证试验成果的可靠性以及试验数据的可比性,应具备一个统一的试样制备方法和程序。 试样的制备可分为原状土的试样制备和扰动土的试样制备。对于原状土的试样制备主要包括土样的开启、描述、切取等程序;而扰动土的制备程序则主要包括风干、碾散、过筛、分样和贮存等预备程序以及击实等制备程序,这些程序步骤的正确与否,都会直接影响到试验成果的可靠性,因此,试样的制备是土工试验工作的首要质量要素。 二、仪器设备 试样制备所需的主要仪器设备,包括: (1)孔径0.5mm、2mm和5mm的细筛; (2)孔径0.075mm的洗筛; (3)称量10kg、最小分度值5g的台秤; (4)称量5000g、最小分度值1g和称量200g、最小分度值0.01g的天平;

(5)不锈钢环刀(内径61.8mm、高20mm;内径79.8mm、高20mm或内径61.8mm、高40mm); (6)击样器:包括活塞、导筒和环刀; (7)其他:切土刀、钢丝锯、碎土工具、烘箱、保湿器、喷水设备、凡士林等。 三、试样制备 (一)原状土试样的制备步骤 1、将土样筒按标明的上下方向放置,剥去蜡封和胶带,开启土样筒取土样。 2、检查土样结构,若土样已扰动,则不应作为制备力学性质试验的试样。 3、根据试验要求确定环刀尺寸,并在环刀内壁涂一薄层凡士林,然后刃口向下放在土样上,将环刀垂直下压,同时用切土刀沿环刀外侧切削土样,边压边削直至土样高出环刀,制样时不得扰动土样。 4、采用钢丝锯或切土刀平整环刀两端土样,然后擦净环刀外壁,称环刀和土的总质量。 5、切削试样时,应对土样的层次、气味、颜色、夹杂物、裂缝和均匀性进行描述。 6、从切削的余土中取代表性试样,供测定含水率以及颗粒分析、界限含水率等试验之用。

细胞生物学实验

实验室规则和要求 一般规定 1.上课第一天请先熟悉环境,牢记“安全”是进行任何实验最重要的事项。 2.在实验室内请穿著实验衣(最好长及膝盖下),避免穿著凉鞋、拖鞋(脚 趾不要裸露)。留有长发者,需以橡皮圈束于后,以防止引火危险或污染实验。 3.在实验室内禁止吸烟、吃东西、饮食、化妆、嚼口香糖、嬉戏奔跑,食 物饮料勿存放于实验室的冰箱中,实验桌上勿堆放书包、书籍、衣服外 套及杂物等。 4.所有实验仪器、耗材、药品等均属实验室所有,不得携出实验室外。每 组分配之仪器、耗材请在课程开始前确定清点与保管,课程结束后如数 清点缴回。公用仪器请善加爱惜使用。实验前后,请把工作区域清理擦 拭,并随时保持环境清洁。 5.实验前详阅实验内容,了解实验细节的原理及操作,注意上课所告知的 注意事项。实验进行中有任何状况或疑问,随时发问,切勿私自变更实 验程序。打翻任何药品试剂及器皿时,请随即清理。实验后,适切记下 自己的结果,严禁抄袭,确实关闭不用之电源、水、酒精灯及瓦斯等。 6.身体不适、睡眠不足、精神不济或注意力无法集中,请立即停止实验。 实验时间若延长,请注意时间的管制及自身的安全,不可自行逗留实验 室。 7.实验完毕,请清理实验室、倒垃圾、灭菌、关闭灯光及冷气,离开实验 室前记得洗手。 8.任何意外事件应立即报告教师或实验室管理人员,并应熟知相关之应变 措施。

药品 1.使用任何药品,请先看清楚标示说明、注意事项,翻阅物质安全资料, 查明是否对人体造成伤害,使用完毕请放回原位。 2.新配制的试剂请清楚注明内容物、浓度、注意事项及配制日期,为避免 污染,勿将未用完的药剂倒回容器内。 3.挥发性、腐蚀性、有毒溶剂(如甲醇、丙酮、醋酸、氯仿、盐酸、硫酸、 -巯基乙醇、甲醛、酚等)要在排烟柜中戴手套量取配制,取用完应随即盖好盖子,若不小心打翻试剂,马上处理。 4.有毒、致癌药剂例如丙稀酰胺(神经毒)、溴化乙啶(突变剂)、SDS(粉 尘)请戴手套及口罩取用,并勿到处污染,脱下手套后,养成洗手的好 习惯。 5.使用后的实验试剂和材料,应放在专用的收集桶内。固体培养基、琼脂 糖或有毒物品不得倒入水槽或下水道中。 6.使用刻度吸管取物时,切勿用嘴吸取,请用自动吸管或吸耳球。 仪器 1.使用仪器前先了解其性能、配备及正确操作方法,零件及附件严禁拆卸, 勿私自调整,并注意插座电压(110V或220V)之类别。 2.使用离心机时,离心管要两两对称、重量平衡,离心机未停下不得打开 盖子。冷冻离心机于开机状态时,务必盖紧盖子,以保持离心槽之低温并避免结霜。 3.电源供应器有高电压,切勿触摸电极或电泳槽内溶液,手湿切勿开启电 源。

链表实验报告

链表实验报告

————————————————————————————————作者: ————————————————————————————————日期:

《数据结构》实验报告二 系别:嵌入式系统工程系班级:嵌入式11003班 学号:11160400314姓名:孙立阔 日期:2012年4月9日指导教师:申华 一、上机实验的问题和要求: 单链表的查找、插入与删除。设计算法,实现线性结构上的单链表的产生以及元素的查找、插入与删除。具体实现要求: 1.从键盘输入10个字符,产生不带表头的单链表,并输入结点值。 2.从键盘输入1个字符,在单链表中查找该结点的位置。若找到,则显示“找到了”;否则, 则显示“找不到”。 3.从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插 入在对应位置上,输出单链表所有结点值,观察输出结果。 4.从键盘输入1个整数,表示欲删除结点的位置,输出单链表所有结点值,观察输出结果。 5.将单链表中值重复的结点删除,使所得的结果表中个结点值均不相同,输出单链表所有结 点值,观察输出结果。 6.删除其中所有数据值为偶数的结点,输出单链表所有结点值,观察输出结果。 7.(★)将单链表分解成两个单链表A和B,使A链表中含有原链表中序号为奇数的元素, 而B链表中含有原链表中序号为偶数的元素,且保持原来的相对顺序,分别输出单链表A和单链表B的所有结点值,观察输出结果。 二、程序设计的基本思想,原理和算法描述: (包括程序的结构,数据结构,输入/输出设计,符号名说明等) 创建一个空的单链表,实现对单链表的查找,插入,删除的功能。 三、源程序及注释: #defineOK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 #define TRUE 1

CAD上机实验指导书及实验报告

北京邮电大学世纪学院 实验、实习、课程设计报告撰写格式与要求 (试行) 一、实验报告格式要求 1、有实验教学手册,按手册要求填写,若无则采用统一实验报告封面。 2、报告一律用钢笔书写或打印,打印要求用A4纸;页边距要求如下:页边距上下各为2.5厘米,左右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值(缩放100%,间距:标准)。 3、统一采用国家标准所规定的单位与符号,要求文字书写工整,不得潦草;作图规范,不得随手勾画。 4、实验报告中的实验原始记录,须经实验指导教师签字或登记。 二、实习报告、课程设计报告格式要求 1、采用统一的封面。 2、根据教学大纲的要求手写或打印,手写一律用钢笔书写,统一采用国家标准所规定的单位与符号,要求文字书写工整,不得潦草;作图规范,不得随手勾画。打印要求用A4纸;页边距要求如下:页边距上下各为2.5厘米,左右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值(缩放100%,间距:标准)。 三、报告内容要求 1、实验报告内容包括:实验目的、实验原理、实验仪器设备、实验操作过程、原始数据、实验结果分析、实验心得等方面内容。 2、实习报告内容包括:实习题目、实习任务与要求、实习具体实施情况(附上图表、原始数据等)、实习个人总结等内容。 3、课程设计报告或说明书内容包括:课程设计任务与要求、总体方案、方案设计与分析、所需仪器设备与元器件、设计实现与调试、收获体会、参考资料等方面内容。 北京邮电大学世纪学院 教务处 2009-8

实验报告 课程名称计算机绘图(CAD) 实验项目AutoCAD二维绘图实验 专业班级 姓名学号 指导教师实验成绩 2016年11月日

单链表实验报告

数据结构 课程设计 设计题目:单链表 专业班级:11软会四班 指导教师:吉宝玉 日期:2012 目录 一、实验目的 (2) 1、 (2) 2、 (2) 二、实验内容 (3)

三、实验基本要求(软、硬件) (3) 四、算法设计思想 (3) 1、 (3) 2、 (3) 3、 (3) 4、 (3) 5、 (3) 6、 (3) 7、 (3) 8、 (3) 五、算法流程图 (4) 六、算法源代码 (4) 七、运行结果 (9) 1、 (9) 2、 (10) 3、 (11) 4、 (11) 5、 (11) 6、 (12) 7、 (12) 8、 (13) 9、 (13) 八、收获及体会 (14) 一、实验目的 1、理解并掌握单链表的结构特点和相关概念; 2、学会单链表的基本操作:建立、插入、删除、查找、 输入、撤销、逆置、求前驱和后继等并实现其算法。

二、实验内容 利用头插建立一个带头结点的单链表,并用算法实现该单链表的插入、删除查找、输出、求前驱和后继、再把此单链表逆置,然后在屏幕上显示每次操作的结果当所有操作完成后能撤销该单链表。 三、实验基本要求(软、硬件) 用VC++6.0软件平台,操作系统:Windows XP 硬件:内存要求:内存大小在256MB,其他配置一般就行。 四、算法设计思想 1、定义一个创建链表的函数,通过该函数可以创建一个链表,并为下面的函数应用做 好准备。 2、定义输出链表的算法,通过对第一步已经定义好的创建链表函数的调用,在这一步 通过调用输出链表的函数算法来实现对链表的输出操作。 3、定义一个遍历查找的算法,通过此算法可以查找到链表中的每一个节点是否存在。 4、定义查找链表的每一个前驱和后继,通过定义这个算法,可以很容易的实现对链表 的前驱和后继的查找工作。 5、定义插入节点的算法,通过定义这个算法,并结合这查找前驱和后继的算法便可以 在连链表的任意位置进行插入一个新节点。 6、定义删除节点的操作,这个算法用于对链表中某个多余节点的删除工作。 7、定义一个逆置单链表的操作,通过定义这个算法,可以逆置输出单链表。 8、定义一个撤销链表的算法,这个算法用于删除单链表中的所有节点,使链表为空。

链表实现多项式相加实验报告

实验报告 课程名称:数据结构 题目:链表实现多项式相加 班级: 学号: 姓名: 完成时间:2012年10月17日

1、实验目的和要求 1)掌握链表的运用方法; 2)学习链表的初始化并建立一个新的链表; 3)知道如何实现链表的插入结点与删除结点操作; 4)了解链表的基本操作并灵活运用 2、实验内容 1)建立两个链表存储一元多项式; 2)实现两个一元多项式的相加; 3)输出两个多项式相加后得到的一元多项式。 3、算法基本思想 数降序存入两个链表中,将大小较大的链表作为相加后的链表寄存处。定义两个临时链表节点指针p,q,分别指向两个链表头结点。然后将另一个链表中从头结点开始依次与第一个链表比较,如果其指数比第一个小,则p向后移动一个单位,如相等,则将两节点的系数相加作为第一个链表当前节点的系数,如果为0,则将此节点栓掉。若果较大,则在p前插入q,q向后移动一个,直到两个链表做完为止。 4、算法描述 用链表实现多项式相加的程序如下: #include #include #include struct node{ int exp; float coef; struct node*next; };

void add_node(struct node*h1,struct node*h2); void print_node(struct node*h); struct node*init_node() { struct node*h=(struct node*)malloc(sizeof(struct node)),*p,*q; int exp; float coef=1.0; h->next=NULL; printf("请依次输入多项式的系数和指数(如:\"2 3\";输入\"0 0\"时结束):\n"); p=(struct node*)malloc(sizeof(struct node)); q=(struct node*)malloc(sizeof(struct node)); for(;fabs(coef-0.0)>1.0e-6;) { scanf("%f %d",&coef,&exp); if(fabs(coef-0.0)>1.0e-6) { q->next=p; p->coef=coef; p->exp=exp; p->next=NULL; add_node(h,q); } } free(p); free(q); return(h); } void add_node(struct node*h1,struct node*h2) { struct node*y1=h1,*y2=h2; struct node*p,*q; y1=y1->next; y2=y2->next; for(;y1||y2;) if(y1) { if(y2) { if(y1->expexp) y1=y1->next; else if(y1->exp==y2->exp) { y1->coef+=y2->coef; if(y1->coef==0)

《流体力学》课程实验(上机)指导书及实验报告格式

《流体力学》课程实验指导书袁守利编 汽车工程学院 2005年9月

前言 1.实验总体目标、任务与要求 1)学生在学习了《流体力学》基本理论的基础上,通过伯努利方程实验、动量方程实 验,实现对基本理论的验证。 2)通过实验,使学生对水柱(水银柱)、U型压差计、毕托管、孔板流量计、文丘里流量计等流体力学常用的测压、测流量装置的结构、原理和使用有基本认识。 2.适用专业 热能与动力工程 3.先修课程 《流体力学》相关章节。 4.实验项目与学时分配 5. 实验改革与特色 根据实验内容和现有实验条件,在实验过程中,采取学生自己动手和教师演示相结合的方法,力求达到较好的实验效果。

实验一伯努利方程实验 1.观察流体流经实验管段时的能量转化关系,了解特定截面上的总水头、测压管水头、压强水头、速度水头和位置水头间的关系,从而加深对伯努利方程的理解和认识。 2.掌握各种水头的测试方法和压强的测试方法。 3.掌握流量、流速的测量方法,了解毕托管测速的原理。 二、实验条件 伯努利方程实验仪 三、实验原理 1.实验装置: 图一伯努利方程实验台 1.水箱及潜水泵 2.上水管 3.电源 4.溢流管 5.整流栅 6.溢流板 7.定压水箱 8.实验 细管9. 实验粗管10.测压管11.调节阀12.接水箱13.量杯14回水管15.实验桌 2.工作原理 定压水箱7靠溢流来维持其恒定的水位,在水箱下部装接水平放置的实验细管8,水经实验细管以恒定流流出,并通过调节阀11调节其出水流量。通过布置在实验管四个截面上的四组测压孔及测压管,可以测量到相应截面上的各种水头的大小,从而可以分析管路中恒定流动的各种能量形式、大小及相互转化关系。各个测量截面上的一组测压管都相当于一组毕托管,所以也可以用来测管中某点的流速。 电测流量装置由回水箱、计量水箱和电测流量装置(由浮子、光栅计量尺和光电子

数据结构实验报告 - 答案汇总

数据结构(C语言版) 实验报告

专业班级学号姓名 实验1 实验题目:单链表的插入和删除 实验目的: 了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。 实验要求: 建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串;根据输入的字符串,先找到相应的结点,后删除之。 实验主要步骤: 1、分析、理解给出的示例程序。 2、调试程序,并设计输入数据(如:bat,cat,eat,fat,hat,jat,lat,mat,#),测试程序 的如下功能:不允许重复字符串的插入;根据输入的字符串,找到相应的结点并删除。 3、修改程序: (1)增加插入结点的功能。 (2)将建立链表的方法改为头插入法。 程序代码: #include"stdio.h" #include"string.h" #include"stdlib.h" #include"ctype.h" typedef struct node //定义结点 { char data[10]; //结点的数据域为字符串 struct node *next; //结点的指针域 }ListNode; typedef ListNode * LinkList; // 自定义LinkList单链表类型 LinkList CreatListR1(); //函数,用尾插入法建立带头结点的单链表 LinkList CreatList(void); //函数,用头插入法建立带头结点的单链表 ListNode *LocateNode(); //函数,按值查找结点 void DeleteList(); //函数,删除指定值的结点 void printlist(); //函数,打印链表中的所有值 void DeleteAll(); //函数,删除所有结点,释放内存

电磁场实验指导书及实验报告

CENTRAL SOUTH UNIVERSITY 题目利用Matlab模拟点电荷电场的分布姓名xxxx 学号xxxxxxxxxx 班级电气xxxx班 任课老师xxxx 实验日期2010-10

电磁场理论 实验一 ——利用Matlab 模拟点电荷电场的分布 一.实验目的: 1.熟悉单个点电荷及一对点电荷的电场分布情况; 2.学会使用Matlab 进行数值计算,并绘出相应的图形; 二.实验原理: 根据库伦定律:在真空中,两个静止点电荷之间的作用力与这两个电荷的电量乘积成正比,与它们之间距离的平方成反比,作用力的方向在两个电荷的连线上,两电荷同号为斥力,异号为吸力,它们之间的力F 满足: R R Q Q k F ? 212 = (式1) 由电场强度E 的定义可知: R R kQ E ? 2 = (式2) 对于点电荷,根据场论基础中的定义,有势场E 的势函数为 R kQ U = (式3) 而 U E -?= (式4) 在Matlab 中,由以上公式算出各点的电势U ,电场强度E 后,可以用Matlab 自带的库函数绘出相应电荷的电场分布情况。 三.实验内容: 1. 单个点电荷 点电荷的平面电力线和等势线 真空中点电荷的场强大小是E=kq /r^2 ,其中k 为静电力恒量, q 为电量, r 为点电荷到场点P(x,y)的距离。电场呈球对称分布, 取电量q> 0, 电力线是以电荷为起点的射线簇。以无穷远处为零势点, 点电荷的电势为U=kq /r,当U 取

常数时, 此式就是等势面方程.等势面是以电荷为中心以r 为半径的球面。 平面电力线的画法 在平面上, 电力线是等角分布的射线簇, 用MATLAB 画射线簇很简单。取射线的半径为( 都取国际制单位) r0=, 不同的角度用向量表示( 单位为弧度) th=linspace(0,2*pi,13)。射线簇的终点的直角坐标为: [x,y]=pol2cart(th,r0)。插入x 的起始坐标x=[x; *x].同样插入y 的起始坐标, y=[y; *y], x 和y 都是二维数组, 每一列是一条射线的起始和终止坐标。用二维画线命令plot(x,y)就画出所有电力线。 平面等势线的画法 在过电荷的截面上, 等势线就是以电荷为中心的圆簇, 用MATLAB 画等势 线更加简单。静电力常量为k=9e9, 电量可取为q=1e- 9; 最大的等势线的半径应该比射线的半径小一点 r0=。其电势为u0=k8q /r0。如果从外到里取7 条等势线, 最里面的等势线的电势是最外面的3 倍, 那么各条线的电势用向量表示为: u=linspace(1,3,7)*u0。从- r0 到r0 取偶数个点, 例如100 个点, 使最中心点的坐标绕过0, 各点的坐标可用向量表示: x=linspace(- r0,r0,100), 在直角坐标系中可形成网格坐标: [X,Y]=meshgrid(x)。各点到原点的距离为: r=sqrt(X.^2+Y.^2), 在乘方时, 乘方号前面要加点, 表示对变量中的元素进行乘方计算。各点的电势为U=k8q. /r, 在进行除法运算时, 除号前面也要加点, 同样表示对变量中的元素进行除法运算。用等高线命令即可画出等势线 contour(X,Y,U,u), 在画等势线后一般会把电力线擦除, 在画等势线之前插入如下命令hold on 就行了。平面电力线和等势线如图1, 其中插入了标题等等。越靠近点电荷的中心, 电势越高, 电场强度越大, 电力线和等势线也越密。

C语言链表实验报告

链表实验报告 一、实验名称 链表操作的实现--学生信息库的构建 二、实验目的 (1)理解单链表的存储结构及基本操作的定义 (2)掌握单链表存储基本操作 (3)学会设计实验数据验证程序 【实验仪器及环境】计算机 Window XP操作系统 三、实验内容 1、建立一个学生成绩信息(学号,姓名,成绩)的单链表,按学号排序 2、对链表进行插入、删除、遍历、修改操作。 3、对链表进行读取(读文件)、存储(写文件) 四、实验要求 (1)给出终结报告(包括设计过程,程序)-打印版 (2)对程序进行答辩

五、实验过程、详细内容 1、概念及过程中需要调用的函数 (1)链表的概念结点定义 结构的递归定义 struct stud_node{ int num; char name[20]; int score; struct stud_node *next; }; (2)链表的建立 1、手动输入 struct stud_node*Create_Stu_Doc() { struct stud_node *head,*p; int num,score; char name[20]; int size=sizeof(struct stud_node); 【链表建立流程图】

2、从文件中直接获取 先建立一个 (3)链表的遍历 (4 )插入结点 (5)删除结点 (6)动态储存分配函数malloc () void *malloc(unsigned size) ①在内存的动态存储区中分配一连续空间,其长度为size ②若申请成功,则返回一个指向所分配内存空间的起始地址的指针 ③若申请不成功,则返回NULL (值为0) ④返回值类型:(void *) ·通用指针的一个重要用途 ·将malloc 的返回值转换到特定指针类型,赋给一个指针 【链表建立流程图】 ptr ptr ptr->num ptr->score ptr=ptr->next head pt r s s->next = ptr->next ptr->next = s 先连后断 ptr2=ptr1->next ptr1->next=ptr2->next free (ptr2)

细胞生物学实验

细胞培养基本理论 一细胞培养概述 细胞培养(cell culture)模拟机体内生理条件,将细胞从机体中取出,在人工条件下使其生存、生长、繁殖和传代,进行细胞生命过程、细胞癌变、细胞工程等问题的研究。 群体培养(mass culture)将大量细胞置于培养瓶中,让其贴壁或悬浮生长,形成均匀的单层细胞或单细胞悬液。 克隆培养(clone culture)即将少数的细胞加入培养瓶中,贴壁后彼此间隔距离较远,经过繁殖每一个细胞形成一个集落,称为克隆。 组织培养(tissue culture)指把活体的组织取出,分成小块,直接置于培养瓶底或通过胶原纤维血浆支持物的培养瓶底来进行培养。 特点:1.,组织不失散,细胞保持原有的组织关系。2,形成生长(cut growth)或形成由扁薄细胞构成的单层细胞培养物。3,在体外生长时,细胞间呈相互依存、互相影响的关系。 器官培养(organ culture)将活体中器官或器官一部分取出,在体外生长、生存,并使其保持器官原有的结构和功能特征的培养。 特点:1,培养的器官在合适的条件下能生长和分化,存活数周或1 年。2,观察受限,只能用组织切片的方法观察或用透射电镜、扫描电镜观察。 细胞培养优点:.1.活细胞:同时、大量、均一性、重复性;2.可控制:各种物理、化学、生物等因素可调控;3.研究方法多样:倒置、荧光、电子、激光共焦显微镜、流式细胞术、免疫组织化学、原位杂交、同位素标记;4.应用广:不同物种、年龄、组织,正常或异常缺点:人工所模拟的条件与体内实际情况仍不完全相同;当细胞被置于体外培养后, 生活在缺乏动态平衡的环境中,时间久了,必然发生变化。 三细胞的形态和类型由不同生长方式造成的差异 呈悬浮生长时,因生长在液体环境中,胞内渗透压高于周围液体环境,因此胞体基本呈圆形。呈贴附于支持物上生长的细胞,开始为圆形,很快过渡成扁平形,并逐渐恢复至原先的细胞形态. 细胞来源:成纤维型细胞;上皮型细胞;其它,不定型 细胞按生长方式:贴壁型细胞(Monolayer cells);悬浮型细胞(Suspension cells)绝大多数有机体细胞属贴壁型细胞,只有少数细胞类型如某些肿瘤细胞和白细胞可在悬浮状态下生长。 按细胞形态(贴壁细胞):成纤维型细胞;上皮型细胞;其它,不定型 贴壁型生长细胞或锚着依存性细胞 处于体外培养状态下的贴附生长型细胞在形态上表现单一而失去了在体内原有的某些特征。形态各异反映其胚层起源。如来源于内外胚层的细胞多呈上皮型;来自中胚层的则易呈成纤维细胞型。分为成纤维型细胞;皮型细胞;游走型细胞;多形型细胞 贴壁型细胞形态比较 成纤维型细胞:梭形或不规则三角形;中央有卵圆形核;胞质向外伸出长短不同的突起;中胚层间质起源 上皮型细胞:扁平不规则多角形;细胞中央有圆形核;紧密相连单层膜样生长;内、外胚层细胞如皮肤、表皮衍生物、消化管上皮等 游走型细胞:散在生长,一般不连成片;细胞质经常伸出伪足或突起;活跃的游走或变形运动;羊水细胞培养的早期 多形细胞型:难以确定规律和稳定的形态;如神经组织的细胞等

相关文档
最新文档