软件技术基础实验指导书1009Word文档格式.docx

上传人:b****7 文档编号:22180836 上传时间:2023-02-02 格式:DOCX 页数:15 大小:37.36KB
下载 相关 举报
软件技术基础实验指导书1009Word文档格式.docx_第1页
第1页 / 共15页
软件技术基础实验指导书1009Word文档格式.docx_第2页
第2页 / 共15页
软件技术基础实验指导书1009Word文档格式.docx_第3页
第3页 / 共15页
软件技术基础实验指导书1009Word文档格式.docx_第4页
第4页 / 共15页
软件技术基础实验指导书1009Word文档格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

软件技术基础实验指导书1009Word文档格式.docx

《软件技术基础实验指导书1009Word文档格式.docx》由会员分享,可在线阅读,更多相关《软件技术基础实验指导书1009Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。

软件技术基础实验指导书1009Word文档格式.docx

}ListNode;

typedefListNode*LinkList;

voidmain()

{inti;

DataTypekey,x;

LinkListhead;

ListNode*p;

LinkListCreateList(void);

voidPrintList(LinkListhead);

LinkListLocateNode(LinkListhead,DataTypekey);

LinkListGetNode(LinkListhead,inti);

voidInsertList(LinkListhead,DataTypex,inti);

voidDeleteList(LinkListhead,inti);

head=CreateList();

/*建立单链表*/

PrintList(head);

/*打印单链表*/

printf("

输入要查找的值:

"

);

scanf("

%d"

&

key);

p=LocateNode(head,key);

/*单链表查找*/

请输入欲插入元素的位置:

i);

请输入欲插入的元素:

x);

InsertList(head,x,i);

/*单链表插入*/

请输入欲删除结点的位置:

DeleteList(head,i);

/*单链表删除*/

}

/*单链表的建立,从后向前生成*/

LinkListCreateList(void)

{

//在此插入必要语句

}

/*单链表的打印*/

voidPrintList(LinkListhead)

/*单链表的查找,输入一个整数,显示该结点的位置*/

LinkListLocateNode(LinkListhead,DataTypekey)

{/*在不带头结点的单链表head中查找其值为key的结点*/

//在此插入必要语句

/*单链表的查找2,在不带头结点的单链表head中查找第i个结点*/

LinkListGetNode(LinkListhead,inti)

/*单链表的插入*/

voidInsertList(LinkListhead,DataTypex,inti)

{/*将值为x的新结点插入到不带头结点的单链表head的第i个结点的位置上*/

/*单链表的删除,删除不带头结点的单链表中的第i个结点*/

voidDeleteList(LinkListhead,inti)

六、思考题

如果生成带头结点的单链表,程序应如何修改?

七、实验报告要求

具体内容包含以下几项:

实验题目、实验目的、实验环境、实验内容与完成情况(要求附上自主设计的源程序)、实验中出现的问题、对问题的解决方案、完成思考题、实验总结等。

实验二二叉树的建立和遍历

1.掌握二叉树的建立算法

2.掌握二叉树的前序、中序和后序遍历算法。

复习二叉树的生成及遍历算法,编写完整的程序。

要求采用二叉链表作为存储结构,完成二叉树的建立,前序、中序和后序遍历的操作,求所有叶子及结点总数的操作等。

分别利用前序遍历、中序遍历、后序遍历所建二叉树。

二叉树的建立算法思路:

主要利用二叉树的性质:

在编号的完全二叉树中,编号为i的结点如果存在左孩子,则其编号为2i;

若其存在右孩子,则其编号为2i+1;

若存在父结点,则其编号为i/2取整。

对任意二叉树,先按满二叉树对其进行编号,算法中使用一个辅助向量s来存放指向树结点的指针。

如s[i]中存放编号为i的结点的指针,即为该结点的地址。

当结点编号i=1时,所产生的结点为根结点,同时将指向该结点的指针存入s[1]。

当结点编号i>

1时,产生一个新的结点后,也要将指向该结点的指针存入s[i],由上述性质可知:

j=i/2为它的双亲结点编号。

如果i为偶数,则它是双亲结点的左孩子,即让s[j]->

lch=s[i];

若i为奇数,则它是双亲结点的右孩子,即让s[j]->

rch=s[i]。

这样就将新输入的结点逐一与其双亲结点相连,生成二叉树。

二叉树的遍历算法可以使用递归算法实现,也可采用非递归算法实现,可参考教材上算法实现。

请思考其它的二叉树建立算法。

实验三二叉排序树的建立和查找

1.掌握二叉排序树的建立算法

2.掌握二叉排序树查找算法。

复习二叉排序树的生成及查找算法,编写完整的程序。

实现二叉排序树上的查找算法。

用二叉链表做存储结构,输入键值序列,建立一棵二叉排序树并在二叉排序树上实现查找算法。

typedefintInfoType;

typedefintKeyType;

/*假定关键字类型为整数*/

typedefstructnode/*结点类型*/

{

KeyTypekey;

/*关键字项*/

InfoTypeotherinfo;

/*其它数据域,InfoType视应用情况而定下面不处理它*/

structnode*lchild,*rchild;

/*左右孩子指针*/

}BSTNode;

typedefBSTNode*BSTree;

/*BSTree是二叉排序树的类型*/

BSTNode*SearchBST(BSTreeT,KeyTypekey);

voidInsertBST(BSTree*Tptr,KeyTypekey);

BSTreeCreateBST(void);

voidListBinTree(BSTreeT);

/*用广义表表示二叉树*/

BSTreeT;

BSTNode*p;

intkey;

请输入关键字(输入0为结束标志):

\n"

T=CreateBST();

ListBinTree(T);

请输入欲查找关键字:

p=SearchBST(T,key);

if(p==NULL)

printf("

没有找到%d!

key);

else

找到%d!

ListBinTree(p);

BSTNode*SearchBST(BSTreeT,KeyTypekey)

{/*在二叉排序树T上查找关键字为key的结点,成功时返回该结点位置,否则返回NULL*/

if(T==NULL||key==T->

key)/*递归的终结条件*/

returnT;

/*若T为空,查找失败;

否则成功,返回找到的结点位置*/

if(key<

T->

key)

returnSearchBST(T->

lchild,key);

rchild,key);

/*继续在右子树中查找*/

voidInsertBST(BSTree*Tptr,KeyTypekey)

{/*若二叉排序树*Tptr中没有关键字为key,则插入,否则直接返回*/

BSTNode*f,*p=*Tptr;

/*p的初值指向根结点*/

while(p){/*查找插入位置*/

if(p->

key==key)return;

/*树中已有key,无须插入*/

f=p;

/*f保存当前查找的结点*/

p=(key<

p->

key)?

p->

lchild:

rchild;

/*若key<

key,则在左子树中查找,否则在右子树中查找*/

p=(BSTNode*)malloc(sizeof(BSTNode));

key=key;

lchild=p->

rchild=NULL;

/*生成新结点*/

if(*Tptr==NULL)/*原树为空*/

*Tptr=p;

/*新插入的结点为新的根*/

else/*原树非空时将新结点*p作为*f的左孩子或右孩子插入*/

if(key<

f->

f->

lchild=p;

elsef->

rchild=p;

BSTreeCreateBST(void)

{/*输入一个结点序列,建立一棵二叉排序树,将根结点指针返回*/

BSTreeT=NULL;

/*初始时T为空树*/

/*读入一个关键字*/

while(key){/*假设key=0是输入结束标志*/

InsertBST(&

T,key);

/*将key插入二叉排序树T*/

scanf("

/*读入下一关键字*/

returnT;

/*返回建立的二叉排序树的根指针*/

请思考采用其他存储结构实现的二叉排序树建立算法。

实验四windows操作系统及应用

1.用Windows2000自带的工具观察内存空间的使用情况;

2.了解Windows2000注册表的作用,熟悉注册表编辑器;

  3.熟悉Windows2000注册表中5个主要根键的内容与作用;

  4.了解备份注册表的重要性,掌握备份注册表的基本方法;

5.学会通过修改注册表,屏蔽桌面“回收站”图标的方法。

6.通过VC++中的跟踪调试技术,了解内存的分配(选做)

windows操作系统操作系统和visualc++6.0环境

搜集注册表相关内容,了解内存分配策略

1.观察内存使用情况用Windows2000自带的工具观察内存空间的使用情况,观察并写出屏幕显示的内容。

2.使用Windows2000的注册表屏蔽桌面上的“回收站”。

具体内容:

(1)备份注册表(或者打开后导出注册表)。

(2)运行regedit命令打开注册表。

(3)选择注册表中“HKEY_LOCAL_MACHINE”子窗口(即找到此根键),定位到“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace”分支,在该分支下有多个子键对应桌面上的某些系统图标。

(4)删除键值为RecycleBin的子键,如子键645FF040-5081-1-1B-9F08-00AA002F954E。

(5)重新启动计算机。

(6)根据备份的注册表内容,恢复注册表中被删除的子键,重新启动计算机。

(7)观察两次重启后的情况,总结备份、修改和恢复注册表的一般过程。

3.(选做)通过VC++中的跟踪调试技术,了解内存的分配在VC++环境下,编写一个简单计算程序,要求声明的变量中有单个变量、数组、指针变量,等。

在变量赋值后设置断点,跟踪程序,在调度窗口中观察变量的值和存储地址。

观察数组元素的顺序关系与存储地址之间的关系;

观察链式存储的元素的地址关系。

五、思考题

练习注册表的其他用法。

六、实验报告要求

实验五数据库建立

1.熟练掌握用SQL语句实现基本表的创建。

2.熟练掌握用SQL语句实现数据插入、数据更新和数据查询。

3.熟练掌握用SQL语句实现数据的简单查询和连接查询。

SQLServer2000

SQLServer2000的查询分析器和企业管理器的使用,SQL数据定义和数据操纵语言。

(一)用SQL语句建立如下mySPJ数据库,包括S,P,J,和SPJ四个基本表(四张表的数据另给),要求实现关系的三类完整性。

S(SNO,SNAME,STATUS,CITY);

P(PNO,PNAME,COLOR,WEIGHT);

J(JNO,JNAME,CITY);

SPJ(SNO,PNO,JNO,QTY)

供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成。

零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成。

工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。

供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,表示某供应商供应某种零件给某工程项目的数量为QTY。

(二)分别使用插入、删除、修改的方式更新基本表中的数据。

五、实验方法和步骤

(一)使用MicrosoftSQLServer企业管理器和查询分析器建立数据库mySPJ:

1.打开“开始->

程序->

MicrosoftSQLServer->

企业管理器”;

2.在企业管理器左边的树标签中依次打开“MicrosoftSQLServer->

SQLServer组->

(local)(WindowsNT)->

数据库”,(local)(WindowsNT)前的红色标记转化为绿色标记表明NT服务已启动;

3.从企业管理器的“工具”菜单中选择“SQL查询分析器”,打开查询分析器后,在其窗口书写创建数据库mySPJ的SQL语句,点击执行按钮(或F5键)执行该SQL语句;

4.在企业管理器左边的树标签中查看数据库是否建立成功。

(二)在数据库mySPJ中建立S,P,J,和SPJ四个基本表:

按照实验内容给出的基本表结构在查询分析器窗口中书写SQL语句分别建立各表,并设置主键和外键约束;

(三)更新表数据:

1.利用Insert语句将习题中给出的示例记录插入各表。

2.利用Update更新表中的记录:

①将p表中的所有红色零件的重量增加5。

②将spj表中所有天津供应商的QTY属性值减少10。

用子查询。

3.利用Delete语句删除p表中的所有红色零件的记录。

4.SQL语句执行后返回基本表查看更新后的结果,如果与期望不符,分析原因并记录在实验报告中。

如何用SQL语句实现关系的三类完整性?

实验六数据库查询

1.熟练掌握用SQL语句实现视图操作。

2.理解触发器的含义,并初步掌握用SQL语句实现触发器的编写。

3.理解存储过程的含义,并初步掌握用SQL语句实现存储过程的编写。

SQLServer2000的查询分析器和企业管理器的使用,存储过程和触发器的含义。

(一)完成下面的简单查询:

①查询所有“天津”的供应商明细;

②查询所有“红色”的14公斤以上的零件。

③查询工程名称中含有“厂”字的工程明细。

(二)完成下面的连接查询:

①等值连接:

求s表和j表的相同城市的等值连接。

②自然连接:

查询所有的供应明细,要求显示供应商、零件和工程的名称,并按照供应、工程、零件排序。

③笛卡尔积:

求s和p表的笛卡尔积

④左连接:

求j表和spj表的左连接。

⑤右连接:

求spj表和j表的右连接。

(三)分组查询:

1.求各种颜色零件的平均重量。

2.求北京供应商和天津供应商的总个数。

3.求各供应商供应的零件总数。

4.求各供应商供应给各工程的零件总数。

5.求使用了100个以上P1零件的工程名称。

6.求各工程使用的各城市供应的零件总数。

(四)嵌套查询:

1.in连接谓词查询:

①查询没有使用天津供应商供应的红色零件的工程名称。

②查询供应了1000个以上零件的供应商名称。

(having)

2.比较运算符:

求重量大于所有零件平均重量的零件名称。

参照实验五中给出的使用MicrosoftSQLServer企业管理器和SQL查询分析器的方法,将实验内容中所要求的查询项目依次用SQL语句实现,并记录下执行结果。

如何通过系统的设置实现类似的功能,而不需触发器?

附录

用SQL语句建立如下mySPJ数据库,包括S,P,J,和SPJ四个基本表,四张表的数据如下:

S表:

P表:

J表:

SPJ表:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 远程网络教育

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

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