当前位置:文档之家› 实验6 游标的应用(完整版)

实验6 游标的应用(完整版)

实验6 游标的应用(完整版)
实验6 游标的应用(完整版)

数据库实验六游标

实验要求:

(1)参照例7-3建立一个嵌套游标应用,其功能是按学号升序列出全体学生信息(学号、姓名、院系名称)及其所修课程名称和考试成绩信息(基于实验2建立的表和实验3插入的数据)

(2)按要求按要求逐一读出游标中的记录并显示。

实验代码:

declare@xh nchar(8),@xm nchar(10),@yx nchar(10)

declare@kcmc nchar(8),@cj nchar(10)

declare嵌套游标1cursor for

select学生.学号,学生.姓名,学生.院系from学生order by学号

open嵌套游标1

print'----学生信息----'

print'学号姓名院系'

fetch from嵌套游标1into@xh,@xm,@yx

while@@FETCH_STATUS=0

begin

print@xh++@xm++@yx

declare嵌套游标2cursor for

select课程.课程名称,选课.成绩from选课join课程

on课程.课程编号=选课.课程编号

where选课.学号=@xh

open嵌套游标2

print'课程名称成绩'

fetch from嵌套游标2into@kcmc,@cj

while@@FETCH_STATUS=0

begin

print@kcmc+@cj

fetch from嵌套游标2into@kcmc,@cj

end

close嵌套游标2

deallocate嵌套游标2

fetch from嵌套游标1into@xh,@xm,@yx

end

close嵌套游标1

deallocate嵌套游标1

实验总结:

游标允许应用程序对查询语句select返回的行结果集中每一行进行相同或不同的操作,而不是一次对整个结果集进行同一种操作;它还提供对基于游标位置而对表中数据进行删除或更新的能力;而且,正是游标把作为面向集合的数据库管理系统和面向行的程序设计两者联系起来,使两个数据处理方式能够进行沟通。

游标速度较慢。数据量比较大时,占内存

实验六 图的创建及应用(I)

姓名学号 算本次实验主函数采用循环选择结构,主函数调用自己编写的头文件DataStructure_Graph.h中的相关功能函数,完成实验要求。 主程序结构: 1、邻接矩阵表示法: 1、创建有向图;//调用CreateGraph(MG)创建有向图 2、显示图信息;//调用DisplayGraph(MG) 显示图信息 3、返回上一界面; 2、邻接表表示法: 1、创建有向图; //调用CreateGraph(ALG)创建有向图 2、显示图信息;//调用DisplayGraph(ALG) 显示图信息 3、返回上一界面; 3、基于深度优先搜索判断是否存在指定位置的路径: 1、使用已创建的邻接表表示的图进行搜索判断;//调用exist_path_DFS(ALG, i, j)搜索 2、创建新的图进行搜索判断;//创建新的有向图,并调用exist_path_DFS(R_ALG, i, j)搜索 3、返回上一界面; 4、退出程序 创建图的算法分析 邻接矩阵结构创建图: 首先由键盘输入待创建的图的顶点数,弧数以及是否含有弧信息,然后由顶点数控制循环构造顶点向量,接着由顶点数控制循环初始化邻接矩阵(adj=0,info=NUll),再次输入弧信息,此时将输入的弧的弧头和弧尾与顶点信息进行匹配,从而确定弧在邻接矩阵中的位置(有弧时为1),如果输入的弧有信息的话,在进行有无弧的判断写邻接矩阵时进行绑定,有键盘输入即可。

邻接表结构创建图: 首先由键盘输入待创建的图的顶点数,弧数,然后由顶点数控制循环初始化顶点信息(顶点数据信息及顶点第一条弧指针(firstarc = NULL)),接着由弧数控制循环输入弧头和弧尾顶点,与之前建立的顶点信息进行匹配,从而确定弧头和弧尾的位置信息,此时生成一个弧结点类型的存储空间,采用单链表中在表头插入新结点的方法,将弧的信息插入到顶点的第一条弧之后,如同此法,对每个顶点都进行以上操作,这就建立了图的邻接表结构。 深度优先搜索判断是否存在指定位置的路径算法分析 首先判断指定的两个位置向量是否相等,如果相等,则肯定有路径相连,否则从指定的弧头结点开始搜索,将该顶点访问过的弧的访问标志置1,任何到该弧的弧头顶点进行如上操作,当搜索该顶点的所有弧都没有找到则返回0,然后返回上一顶点,对该顶点的其他弧进行访问。当指定顶点的所有弧都被搜索访问过都没有找到,此时程序返回0。

实验六视图的定义及使用实验实验报告

实验六视图的定义及使用实验实验报告实验任务 (一)建立视图(运行并观察结果) 1.建立信息系学生的视图IS_student。 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept='IS' 2.建立信息系选修了1号课程的学生的视图IS_S1。CREATE VIEW IS_S1(Sno,Sname,Grade) AS SELECT Student.Sno,Sname,Grade FROM Student,SC WHERE Sdept='IS'AND Student.Sno=SC.Sno AND https://www.doczj.com/doc/4e5595811.html,o='1';

3.建立信息系选修了1号课程且成绩在90分以上的学生的视图IS_S2。CREATE VIEW IS_S2 AS SELECT Sno,Sname,Grade FROM IS_S1 WHERE Grade>=90 4.建立一个反映学生出生年份的视图BT_S。 CREATE VIEW BT_S(Sno,Sname,Sbirth) AS SELECT Sno,Sname,2004-Sage FROM Student

5.将学生的学号及他的平均成绩定义为一个视图S_G。CREATE VIEW S_G(Sno,Gavg) AS SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno 6.将课程的课号及选修人数定义为一个视图C_XIU。CREATE VIEW C_XIU(Cno,Scount)

AS SELECT Cno,COUNT(*) FROM SC GROUP BY Cno (二)查询视图(运行并观察结果) 1.在信息系学生的视图中找出年龄小于20岁的学生。SELECT Sno,Sage FROM IS_Student WHERE Sage<20 2.查询信息系选修了1号课程的学生。 SELECT IS_Student.Sno,Sname FROM IS_Student,SC WHERE IS_Student.Sno=SC.Sno AND https://www.doczj.com/doc/4e5595811.html,o='1'

数据结构实验

数据结构实验指导书

实验一线性表的顺序存储结构 一、实验学时 4学时 二、背景知识:顺序表的插入、删除及应用。 三、目的要求: 1.掌握顺序存储结构的特点。 2.掌握顺序存储结构的常见算法。 四、实验内容 1.从键盘随机输入一组整型元素序列,建立顺序表。(注意:不可将元素个数和元素值写死在程序中) 2.实现该顺序表的遍历(也即依次打印出每个数据元素的值)。 3.在该顺序表中顺序查找某一元素,如果查找成功返回1,否则返回0。 4.实现把该表中某个数据元素删除。 5.实现在该表中插入某个数据元素。 6.实现两个线性表的归并(仿照课本上P26 算法2.7)。 7. 编写一个主函数,调试上述6个算法。 五、实现提示 1.存储定义 #include #include #define MAXSIZE 100 //表中元素的最大个数

typedef int ElemType;//元素类型 typedef struct list{ ElemType *elem;//静态线性表 int length; //表的实际长度 int listsize; //表的存储容量 }SqList;//顺序表的类型名 2.建立顺序表时可利用随机函数自动产生数据。 3.为每个算法功能建立相应的函数分别调试,最后在主函数中调用它们。 六、注意问题 插入、删除元素时对于元素合法位置的判断。 七、测试过程 1.先从键盘输入元素个数,假设为6。 2.从键盘依次输入6个元素的值(注意:最好给出输入每个元素的提示,否则除了你自己知道之外,别人只见光标在闪却不知道要干什么),假设是:10,3,8,39,48,2。 3.遍历该顺序表。 4.输入待查元素的值例如39(而不是待查元素的位置)进行查找,因为它在表中所以返回1。假如要查找15,因为它不存在,所以返回0。 5.输入待删元素的位置将其从表中删掉。此处需要注意判断删位置是否合法,若表中有n个元素,则合法的删除位

实验六 图

实验六图的操作 一、实验目的 1.掌握图的基本存储方法; 2.掌握有关图的操作算法并加以实现; 3.熟练掌握图的两种搜索路径的遍历方法。 二、实验原理 图是一种比树更为复杂的数据结构。图的逻辑结构是数据元素之间多对多的联系,在图中的每一个结点都可能和其它的结点相关联。图的应用范围十分广泛,诸如电子线路分析、系统工程、寻找最短路径、人工智能、计算机科学、控制论等领域。 通常有两种遍历图的方法:深度优先搜索(DFS)遍历和广度优先搜索(BFS)遍历。深度优先搜索类似于树的先序遍历,是树的先序遍历的推广,是一个递归过程。广度优先遍历类似于树的按层次遍历过程。 最小生成树是用于构造连通图的最小代价生成树,在交通、通信等领域有着广泛的应用,最小生成树有着很多种算法,典型的有Prim 算法和Kruskal 算法。 从单个源点到其余各顶点的最短路径算法的应用比较广泛,尤其是在交通联系方面。典型的实现算法有Dijkstra 算法。 三、实验内容

对图1-图3,实现以下操作,记录并分析相应的实验结果(4、5为选作): 1.输出相应图的邻接矩阵; 2.输出相应图的DFS结果; 3.输出相应图的BFS结果。 4.对图3,用Dijkstra算法求出其单源最短路径; 5.对图3,用Prim算法求出其最小生成树。 四、实验步骤 1.定义图的邻接矩阵存储形式; 2.按照流程图1所示,输出图1-图3的邻接矩阵表示法结果; 3.按照流程图2所示,实现图的DFS算法。 4.其他自行设计 五、实验提交资料 1.算法思想描述(或源代码)

2.测试结果与分析 3.收获与体会 要求:将以上资料收集齐后,撰写实验报告。 提交方式:以小组名为文件夹名,将实验源代码(项目名作为文件名)及实验报告(学号+姓名作为文件名),按照要求提交至ftp://10.10.240.14/作业1/数据结构(苑)/ 中对应的文件夹中。

实验1基本测量仪器的使用

实验1 基本测量仪器的使用 【实验目的】 1.熟悉米尺、游标卡尺、螺旋测微计、测量显微镜的构造、测量原理及使用方法,练习使用分析天平进行精密称衡; 2.学习有效数字和不确定度的计算,掌握误差理论与数据处理方法,熟悉精密称衡中的系统误差补正. 【实验仪器】 米尺、游标卡尺,螺旋测微计,测厚仪,分析天平,球体,圆柱等,金属块、玻璃块、有机被璃块等. 【实验原理】 一、米尺 “米”是国际公认的标准长度单位,历史上由保存在巴黎国际标准度量衡局的米原器二刻线间的长度决定。1983年第十七届国际计量大会通过的“米”的新定义为:1m是光在真空中于1/299792458s的时间内所传播的距离。 常用米尺(包括各种常用直尺)的分度值是1mm毫米,因此用米尺测量长度时可以读准到毫米级,估计到0.1毫米级(1/10毫米位)。 用米尺测量物体长度的要领是紧贴、对准、正视。米尺自身有一定的厚度,若不贴紧待测物,观测者从不同角度看去,将产生读数的差异,测量时应尽量减少视差。为避免端边磨损带来的误差,也可以不用零刻度线,而以某一刻度线(如1.00cm)作为测量起点,考虑到刻度的不均匀,可以不同刻度线为起点作多次测量而取其中平均值。 二、游标卡尺 (1)游标卡尺构造 游标卡尺的构造如图1-4所示,卡钳E和E'同刻有毫米的主尺A相连,游标框W上附有游标B以及卡钳F和F',推动游标框W可使游标B连同卡钳F、F'沿主尺滑动.当两对钳口E与F,E'与F'紧靠时,游标的零点(即零刻度线)与主尺的零点相重合.用游标卡尺测定物体长度时,用卡钳E F或E'F'卡着被测物体,显然此时游标零点与主尺零点间距离恰好等于卡钳E、F间或卡钳E'、F'的距离,所以从游标零点在主尺上的位置,根据游标原理就可测出物体的长度(卡钳E'F'部分是用来测量物体的内部尺寸,如管的内径等).图中螺钉C是用来固定油标框的,防止游标框在主尺上滑动以便于读数.

数据结构_实验六_报告

实验报告 实验六图的应用及其实现 一、实验目的 1.进一步功固图常用的存储结构。 2.熟练掌握在图的邻接表实现图的基本操作。 3.理解掌握AOV网、AOE网在邻接表上的实现以及解决简单的应用问题。 二、实验内容 一>.基础题目:(本类题目属于验证性的,要求学生独立完成) [题目一]:从键盘上输入AOV网的顶点和有向边的信息,建立其邻接表存储结构,然后对该图拓扑排序,并输出拓扑序列. 试设计程序实现上述AOV网 的类型定义和基本操作,完成上述功能。 [题目二]:从键盘上输入AOE网的顶点和有向边的信息,建立其邻接表存储结构,输出其关键路径和关键路径长度。试设计程序实现上述AOE网类型定义和基本操作,完成上述功能。 测试数据:教材图7.29 【题目五】连通OR 不连通 描述:给定一个无向图,一共n个点,请编写一个程序实现两种操作: D x y 从原图中删除连接x,y节点的边。 Q x y 询问x,y节点是否连通 输入 第一行两个数n,m(5<=n<=40000,1<=m<=100000) 接下来m行,每行一对整数 x y (x,y<=n),表示x,y之间有边相连。保证没有重复的边。 接下来一行一个整数 q(q<=100000) 以下q行每行一种操作,保证不会有非法删除。 输出 按询问次序输出所有Q操作的回答,连通的回答C,不连通的回答D 样例输入

3 3 1 2 1 3 2 3 5 Q 1 2 D 1 2 Q 1 2 D 3 2 Q 1 2 样例输出 C C D 【题目六】 Sort Problem An ascending sorted sequence of distinct values is one in which some form of a less-than operator is used to order the elements from smallest to largest. For example, the sorted sequence A, B, C, D implies that A < B, B < C and C < D. in this problem, we will give you a set of relations of the form A < B and ask you to determine whether a sorted order has been specified or not. 【Input】 Input consists of multiple problem instances. Each instance starts with a line containing two positive integers n and m. the first value indicated the number of objects to sort, where 2 <= n<= 26. The objects to be sorted will be the first n characters of the uppercase alphabet. The second value m indicates the number of relations of the form A < B which will be given in this problem instance. 1 <= m <= 100. Next will be m lines, each containing one such relation consisting of three characters: an uppercase letter, the character "<" and a second uppercase letter. No letter will be outside the range of the first n letters of the alphabet. Values of n = m = 0 indicate end of input. 【Output】 For each problem instance, output consists of one line. This line should be one of the following three: Sorted sequence determined: y y y… y. Sorted sequence cannot be determined. Inconsistency found.

实验九 游标与存储过程

实验九游标与存储过程 1 实验目的与要求 (1) 掌握游标的定义和使用方法。 (2) 掌握存储过程的定义、执行和调用方法。 (3) 掌握游标和存储过程的综合应用方法。 2 实验内容 请完成以下实验内容: (1)创建游标,逐行显示Customer表的记录,并用WHILE结构来测试 @@Fetch_Status的返回值。输出格式如下: declare @C_no char(9),@C_name char(18),@C_phone char(10), @C_addchar(8),@C_zip char(6) declare @text char(100) declarecus_cur scroll cursor for select* from Customer select @text='=========================Customer 表的记录 =========================' print @text select @text='客户编号'+'-----'+'客户名称'+'----'+'客户住址'+'-----'+'客户电话'+'------'+'邮政编码' print @text select @text='============================================================ ============================' print @text opencus_cur fetchcus_cur into @C_no,@C_name,@C_phone,@C_add,@C_zip while(@@fetch_status=0) begin select @text=@cust_No+' '+@cust_name+' '+@addr+' '+@tel_no+' '+@zip print @text fetchcus_cur into @C_no,@C_name,@C_phone,@C_add,@C_zip end closecus_cur deallocatecus_cur '客户编号'+'-----'+'客户名称'+'----'+'客户住址'+'-----'+'客户电话'+'------'+'邮政编码'

数据结构第六章实验

#include #include #include typedef struct{ unsigned int weight; unsigned int parent,lchild,rchild; }HTNode,*HuffmanTree; typedef char * *HuffmanCode; /*void Select(HuffmanTree &HT,int n,int &s1,int &s2) { s1=1;int j; for(j=1;j<=n;j++) { while(HT[j].parent==0) { if(HT[s1].weight>HT[j].weight) s1=j; } } HT[s1].parent=1; if(s1!=1)s2=1;else s2=2; for( j=1;j<=n;j++) { while(HT[j].parent==0) { if(HT[s2].weight>HT[j].weight) s2=j; } } }错误,未查出原因*/ int min(HuffmanTree t,int i) { int j,flag; unsigned int k; for(j=1;j<=i;j++) if(t[j].weight

实验六+图形界面

实验六图形界面 实验日期: 2016 年 6 月 12 日班级:软件1401 学号(后四位):__0127_______ 姓名:_程瑞强_______ 成绩: 成绩: 一.实验目的 1.掌握图形用户界面的设计方法 2.掌握常用的构建用户界面的组件的用法 3.掌握事件操作的原理 4.能够对所设计的用户界面进行事件处理 5.能够应用运算符解决实际小问题 6.进一步熟悉Java的面向对象的编程思想 二.实验题目(前2题任选1题,第3,4题任选1题) 1.采用图形界面实现两个内容的交换,图形界面如下图1所示所示: 图1 内容交换 代码如下: package TestChange; import class TestChange extends JFrame implements ActionListener{ private static final long serialVersionUID = -006L; JPanel panel;

JTextField tt1; JTextField tt2; JButton button; public TestChange(){ ("TestChange"); (355, 85); ; panel = new JPanel(); tt1 = new JTextField(10); tt2 = new JTextField(10); button = new JButton("Change"); (this); (tt1); (tt2); (button); (panel, ; (false); (true); } public static void main(String[] str){ new TestChange();

MATLAB实验六图形绘制

实验6 图形绘制(3) 报告人: 王业成 年级: 机电131 学号: 2013012496 实验日期: 2015.4.27 报告完成日期: 2015.4.27 一、实验名称 图形绘制 二、实验目的: 熟悉MATLAB 的三维图形绘制函数。 三、实验内容: subplot(2,2,1),sphere(3); title('n=3'),axis equal subplot(2,2,2), sphere(6); title('n=6'),axis equal subplot(2,2,3), sphere(10) title('n=10'),axis equal subplot(2,2,4), sphere(15); title('n=15'),axis equal n=3 n=6 n=10 n=15

t=linspace(pi/2,3.5*pi,50);R=cos(t)+2; subplot(2,2,1); cylinder(R,3), title('n=3'); subplot(2,2,2) cylinder(R,6),title('n=6'); subplot(2,2,3) cylinder(R),title('n=20') subplot(2,2,4) cylinder(R,50),title('n=50') [x,y]=meshgrid(-8:0.5:8,-10:0.5:10); R=sqrt(x.^2+y.^2)+eps; z=sin(R)./R; mesh(x,y,z); n=3 n=6 n=20 n=50

x=-pi:0.15:pi; y=sin(x); subplot(2,1,1), H=bar(x,y); xx=get(H,'xdata'); yy=get(H,'ydata'); subplot(2,1,2),plot(xx,yy); 四、回答问题: (回答实验指导书中提出的问题) 五、思考题: 1.试绘制出 2 2 2 2 )1(1)11)y ,x (f z y x y x +++ +-==的三维曲面图 和三视图 [x,y]=meshgrid(-1:0.1:1,-1:0.1:1); R=sqrt((1-x.^2)+y.^2)+eps; P=sqrt((1+x.^2)+y.^2)+eps; z=1./R+1./P; subplot(4,1,1) surf(x,y,z);

数据结构实验六 图的应用及其实现

实验六图的应用及其实现 一、实验目的 1.进一步功固图常用的存储结构。 2.熟练掌握在图的邻接表实现图的基本操作。 3.理解掌握AOE网在邻接表上的实现及解决简单的应用问题。 二、实验内容 [题目]:从键盘上输入AOE网的顶点和有向边的信息,建立其邻接表存储结构,输出其关键路径和关键路径长度。试设计程序实现上述AOE网类型定义和基本操作,完成上述功能。 三、实验步骤 (一)、数据结构与核心算法的设计描述 本实验题目是基于图的基本操作以及邻接表的存储结构之上,着重拓扑排序算法的应用,做好本实验的关键在于理解拓扑排序算法的实质及其代码的实现。 (二)、函数调用及主函数设计 以下是头文件中数据结构的设计和相关函数的声明: typedef struct ArcNode // 弧结点 { int adjvex; struct ArcNode *nextarc; InfoType info; }ArcNode; typedef struct VNode //表头结点 { VertexType vexdata; ArcNode *firstarc; }VNode,AdjList[MAX_VERTEX_NUM]; typedef struct //图的定义 { AdjList vertices; int vexnum,arcnum; int kind; }MGraph; typedef struct SqStack //栈的定义 { SElemType *base; SElemType *top; int stacksize;

}SqStack; int CreateGraph(MGraph &G);//AOE网的创建 int CriticalPath(MGraph &G);//输出关键路径 (三)、程序调试及运行结果分析 (四)、实验总结 在做本实验的过程中,拓扑排具体代码的实现起着很重要的作用,反复的调试和测试占据着实验大量的时间,每次对错误的修改都加深了对实验和具体算法的理解,自己的查错能力以及其他各方面的能力也都得到了很好的提高。最终实验结果也符合实验的预期效果。 四、主要算法流程图及程序清单 1、主要算法流程图: 2、程序清单: 创建AOE网模块: int CreateGraph(MGraph &G) //创建有向网 { int i,j,k,Vi,Vj; ArcNode *p; cout<<"\n请输入顶点的数目、边的数目"<

数据结构实验报告图实验

邻接矩阵的实现 1. 实验目的 (1)掌握图的逻辑结构 (2)掌握图的邻接矩阵的存储结构 (3)验证图的邻接矩阵存储及其遍历操作的实现2. 实验内容 (1)建立无向图的邻接矩阵存储 (2)进行深度优先遍历 (3)进行广度优先遍历3.设计与编码MGraph.h #ifndef MGraph_H #define MGraph_H const int MaxSize = 10; template class MGraph { public: MGraph(DataType a[], int n, int e); ~MGraph(){ void DFSTraverse(int v); void BFSTraverse(int v); private: DataType vertex[MaxSize]; int arc[MaxSize][MaxSize]; }

int vertexNum, arcNum; }; #endif MGraph.cpp #include using namespace std; #include "MGraph.h" extern int visited[MaxSize]; template MGraph::MGraph(DataType a[], int n, int e) { int i, j, k; vertexNum = n, arcNum = e; for(i = 0; i < vertexNum; i++) vertex[i] = a[i]; for(i = 0;i < vertexNum; i++) for(j = 0; j < vertexNum; j++) arc[i][j] = 0; for(k = 0; k < arcNum; k++) { cout << "Please enter two vertexs number of edge: " cin >> i >> j; arc[i][j] = 1; arc[j][i] = 1; } }

数据结构实验四五六

数据结构实验 实验四、图遍历的演示。 【实验学时】5学时 【实验目的】 (1)掌握图的基本存储方法。 (2)熟练掌握图的两种搜索路径的遍历方法。 【问题描述】 很多涉及图上操作的算法都是以图的遍历操作为基础的。试写一个程序,演示连通的无向图上,遍历全部结点的操作。 【基本要求】 以邻接多重表为存储结构,实现连通无向图的深度优先和广度优先遍历。以用户指定的结点为起点,分别输出每种遍历下的结点访问序列和相应生成树的边集。 【测试数据】 教科书图7.33。暂时忽略里程,起点为北京。 【实现提示】 设图的结点不超过30个,每个结点用一个编号表示(如果一个图有n个结点,则它们的编号分别为1,2,…,n)。通过输入图的全部边输入一个图,每个边为一个数对,可以对边的输入顺序作出某种限制。注意,生成树的边是有向边,端点顺序不能颠倒。

【选作内容】 (1)借助于栈类型(自己定义和实现),用非递归算法实现深度优先遍历。(2)以邻接表为存储结构,建立深度优先生成树和广度优先生成树,再按凹入表或树形打印生成树。 (3)正如习题7。8提示中分析的那样,图的路径遍历要比结点遍历具有更为广泛的应用。再写一个路径遍历算法,求出从北京到广州中途不过郑州的所有简单路径及其里程。 【源程序】 #include #include #include #define MAX_VERTEX_NUM 20 #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 #define TRUE 1 #define OK 1 #define FALSE 0 #define ERROR 0 #define OVERFLOW -2 typedef enum{DG,DN,UDG,UDN}GraphKind;//{有向图,有向网,无向图,无向网} bool visited[MAX_VERTEX_NUM];

实验六 图的创建及应用(I)

姓名学号

cout << endl << ">请选择功能:"; cin >> ch1; switch (ch1) { case'1': //创建有向图 { system("cls"); CreateGraph(MG); cout << "操作完毕!" << endl; system("pause"); system("cls"); continue; } case'2': //显示图信息 { system("cls"); DisplayGraph(MG); cout << "操作完毕!" << endl; system("pause"); system("cls"); continue; } case'3': //返回上一界面 { break; } default: { system("cls"); cout << "输入错误,请重新输入!" << endl; continue; } } system("cls"); break; } break; } case'2': { system("cls"); while (1) { minor_menu2(); char ch1;//二层菜单输入选择 cout << endl << ">请选择功能:"; cin >> ch1; switch (ch1) { case'1'://创建图信息 { system("cls"); CreateGraph(ALG); cout << "操作完毕!" << endl; system("pause"); system("cls"); continue; }

case'2'://显示图信息 { system("cls"); DisplayGraph(ALG); cout << "操作完毕!" << endl; system("pause"); system("cls"); continue; } case'3': //返回上一界面 { break; } default: { system("cls"); cout << "输入错误,请重新输入!" << endl; continue; } } system("cls"); break; } break; } case'3': { system("cls"); while (1) { minor_menu3(); ALGraph R_ALG; int i, j; //待搜索的顶点的位置 char ch1; //二层菜单输入选择 cout << endl << ">请选择功能:"; cin >> ch1; switch (ch1) { case'1'://使用已创建的邻接表表示的图进行搜索 { system("cls"); cout << "请输入待搜索的顶点v(i) 顶点v(j)(以空格分隔):"; cin >> i>> j; int flag = exist_path_DFS(G, i, j); if (flag) cout << "搜索成功!存在顶点v(i):" << G.vertices[i].data << "顶点v(j):" << G.vertices[j].data << "的路径" << endl; else cout << "搜索失败!不存在顶点v(i):" << G.vertices[i].data << "到顶点v(j):" << G.vertices[j].data << "的路径" << endl; cout << "操作完毕!" << endl; system("pause"); system("cls"); continue; } case'2': //创建新图进行搜索 { system("cls");

实验六视图

实验七视图及应用 一、实验目的 1.掌握使用管理控制台创建并管理视图的步骤与方法 2.掌握Transact-SQL语句创建与管理视图 3.熟悉通过视图更新数据表中记录数据的方法。 二、实验内容与步骤 使用SQL Server Management Studio 创建视图的方法: 操作1:启动SQL Server Management Studio 步骤2:在对象资源管理器中,依次展开“数据库”----“***”(需要建立视图的数据库名称)-----“视图”。 步骤3:右键单击“视图”,然后单击“新建视图”,弹出添加表对话框: 步骤4:在上图“添加表”对话框中选择建立视图所需的表(按住CTRL 键以同时选中两表),单击“添加”,然后单击“关闭”。 步骤5:选择相应的字段。 步骤7:为新视图输入视图名称,然后单击“确定”。

使用Transact-SQL语句创建视图 在新建查询窗口中,输入执行相应SQL代码,可创建与前面同样要求的视图。 三、课堂练习: 用T-SQL语句实现以下操作: 1)建立关于销售情况的视图XS,包括产品名称,客户名称,订购数量 2)建立订购数量大于200的销售情况视图XS1(利用XS) 3)建立所在地为长沙的客户的视图KH1,包括:客户编号,客户名称,联系人 所在地,要求在进行修改插入等操作时进行相应的检查。 4)建立各产品的订购数量的总数的视图SL,包括产品编号,订购总量 5)利用视图XS1查找订购数量=300的客户名称。 6)向XS视图中插入记录(旺旺雪饼,家乐福公司,200)是否能插入,为什么? 7)通过视图KH1插入记录(‘K00203’,’王府井’,’李建’,’长沙’)并查询结果 8)通过视图KH1插入记录(‘K00204’,’大润发’,’王平’,’上海’)并查询结果 9)思考如果在建立KH1时没有with check option短语会有什么结果? 10)通过视图KH1将客户编号为‘K00203’的客户名称改为‘平和堂’并查询结 果 11)通过视图KH1将客户编号为‘K00204’的客户名称改为‘步步高’并查询结 果 12)通过视图KH1删除K00204的信息,并查询结果. 13)将SL视图中C20012产品的总量更新为30。思考是否可以更新?如果不行, 为什么? 14)使用SQL语句删除视图XS,检查XS1是否存在并且有意义。 CREATE VIEW XS_销售情况(产品名称,客户名称,订购数量) AS SELECT产品表.产品名称,客户信息表.客户名称,销售表.订购数量 FROM销售表,产品表,客户信息表 CREATE VIEW XS1_销售情况(产品名称,客户名称,订购数量) AS SELECT产品名称,客户名称,订购数量 FROM XS_销售情况 WHERE订购数量>200 CREATE VIEW KH1_客户视图(客户编号,客户名称,联系人所在地) AS SELECT客户编号,客户名称,所在地 FROM客户信息表 CREATE VIEW SL_各产品订购数量总数(产品编号,订购数量) AS SELECT产品编号,订购数量 FROM销售表 SELECT客户名称,AVG(订购数量)

实验六 视图的操作

实验六视图的操作 一、实验目的 1、理解视图的概念。 2、掌握在查询分析器中创建、查询、删除视图。 二、实验要求 使学生能够理解SQL语句创建视图,掌握在查询分析器“的”改为“中”的使用SQL 语句创建、查询、删除视图。 三、实验环境 1、操作系统:WinXp Professional 2、数据库:SQL Server 2000个人版 四、实验内容和步骤 1、语句格式 CREATE VIEW <视图名> [(<列名> [,<列名>]…)] AS <子查询> [WITH CHECK OPTION]; 例6-1建立计算机系学生的视图。 CREATE VIEW CS_Student AS SELECT Sno,Sname,Sage 几个单词之间的逗号都要在字母输入状态下 FROM Student WHERE Sdept= 'cs';这个分号应该去掉 在查询分析器中的结果如图6-1所示。

图6-1 创建计算机系学生视图窗口 例6-2建立计算机系选修了2号课程的学生视图。 CREATE VIEW CS_S1(Sno,Sname,Grade) 此行几个单词的逗号都是字母状态下的逗号 AS SELECT Student.Sno,Sname,Grade 此行几个单词间的逗号都是字母状态下的逗号 FROM Student,SC WHERE Sdept= 'CS' AND Student.Sno=SC.Sno AND https://www.doczj.com/doc/4e5595811.html,o= '2';去掉此处的分号 在查询分析器中的结果如图6-2所示。

图6-2 计算机系选修了2号课程的学生视图窗口例6-3建立计算机系选修了2号课程且成绩在90分以上的学生的视图。 CREATE VIEW CS_S2 AS SELECT Sno,Sname,Grade 这几个单词之间的逗号为字母输入状态下的逗号 FROM CS_S1 WHERE Grade>=90;去掉这个分号 在查询分析器中的结果如图6-3所示。

实验6 游标的应用(完整版)

数据库实验六游标 实验要求: (1)参照例7-3建立一个嵌套游标应用,其功能是按学号升序列出全体学生信息(学号、姓名、院系名称)及其所修课程名称和考试成绩信息(基于实验2建立的表和实验3插入的数据) (2)按要求按要求逐一读出游标中的记录并显示。 实验代码: declare@xh nchar(8),@xm nchar(10),@yx nchar(10) declare@kcmc nchar(8),@cj nchar(10) declare嵌套游标1cursor for select学生.学号,学生.姓名,学生.院系from学生order by学号 open嵌套游标1 print'----学生信息----' print'学号姓名院系' fetch from嵌套游标1into@xh,@xm,@yx while@@FETCH_STATUS=0 begin print@xh++@xm++@yx declare嵌套游标2cursor for select课程.课程名称,选课.成绩from选课join课程 on课程.课程编号=选课.课程编号 where选课.学号=@xh open嵌套游标2 print'课程名称成绩' fetch from嵌套游标2into@kcmc,@cj while@@FETCH_STATUS=0 begin print@kcmc+@cj fetch from嵌套游标2into@kcmc,@cj end close嵌套游标2 deallocate嵌套游标2 fetch from嵌套游标1into@xh,@xm,@yx end close嵌套游标1 deallocate嵌套游标1

实验六 视图的创建和使用

实验六视图的创建和使用 开课实验室:指导老师: 学院:专业(班级): 姓名:学号: 一、实验目的与要求 1)理解视图的概念 2)掌握利用企业管理器和CREATE VIEW命令创建视图方法。 3)熟悉修改视图、查看视图和删除视图的方法。 4)掌握通过视图修改数据表的方法 二、实验过程设计及实验步骤 创建视图是数据库应用中的常见需求,可以使用企业管理器创建、管理视图,也可以用T-SQL语句创建、管理视图。 1)在企业管理器中创建如下视图:在XSGL数据库中使用表STUDENT和SCORE 创建视图VIEW_STUDENTSCROE,来查询每个学生的姓名和选课情况。 2)在查询分析器中创建视图:将上题用CREATE VIEW 来创建,视图名为VIEW2 程序代码: 3)查看视图信息:使用系统存储过程SP_HELP、SP_HELPTEXT、SP_DEPENDS 4)删除视图:将视图VIEW2删除. 三、SQL调试及结果 创建视图是数据库应用中的常见需求,可以使用企业管理器创建、管理视图,也可以用T-SQL语句创建、管理视图。 1)在企业管理器中创建如下视图:在XSGL数据库中使用表STUDENT和SCORE 创建视图VIEW_STUDENTSCROE,来查询每个学生的姓名和选课情况。

2)在查询分析器中创建视图:将上题用CREATE VIEW 来创建,视图名为VIEW2 程序代码: CREATE VIEW VIEW2 AS SELECT STUDENT.SNAME,https://www.doczj.com/doc/4e5595811.html,O FROM STUDENT,SCORE 3)查看视图信息:使用系统存储过程SP_HELP、SP_HELPTEXT、SP_DEPENDS 执行代码;SP_HELPTEXT VIEW2

实验12游标的使用

实验十二游标的使用 姓名:廖冬凤学号:140 专业:网络工程班级:07网络(1)班 同组人:无实验日期:2009-11-27 【实验目的与要求】 1.掌握使用SQL-92语法和T-SQL扩展声明游标,并理解相关参数含义。 2.掌握游标的使用过程。 【实验内容与步骤】 12.1、声明游标 (1)使用SQL-92语法声明一只进只读游标CUR1:要求结果集2004年3月18日销售情况。 (2)使用T-SQL扩展声明一滚动动态游标CUR2:要求结果集为客户信息,并能通过该游标修改客户名称列。 12.2、打开游标 打开CUR2游标。 12.3、读取游标中数据 编写程序,实现依次读取游标CUR2中各行数据。 SQL语句: DECLARE @客户编号char(6), @客户名称char(30), @地区char(10), @负责人char(8), @电话char(12) print '游标结果集中的记录总数为'+cast(@@cursor_rows as varchar (10)) fetch next from CUR2

into @客户编号,@客户名称,@地区,@负责人,@电话 while @@fetch_status=0 begin print '客户编号:'+cast(@客户编号as char(6)) +' 客户名称:'+cast(@客户名称as char(30)) +' 地区:'+cast(@地区as char(10)) +' 负责人:'+cast(@负责人as char(8)) +'电话:'+cast(@电话as char(12)) fetch next from CUR2 into @客户编号,@客户名称,@地区,@负责人,@电话 end 12.4、关闭游标 关闭CUR2游标。 12.5、释放游标 释放CUR2游标。 【实验练习】 编写程序,用游标实现从CP表中读取产品编号、产品名称和价格,并将价格在1000-3000(不包含1000和3000)之间的产品名称和价格输出。【分析与回答】 1.什么是游标?为什么要使用游标? 在数据库中,游标是一个十分重要的概念。游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标总是与一条T_SQL 选择语句相关联因为游标由结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成。当决定对结果集进行处理时,必须声明一个指向该结果集的游标。如果曾经用 C 语言写过对文件进行处理的程序,那么游标就像您打开文件所得到的文件 句柄一样,只要文件打开成功,该文件句柄就可代表该文件。对于游标而言,

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