数据选择器实验报告

2024-09-13

数据选择器实验报告(共10篇)

1.数据选择器实验报告 篇一

1数据选择器基本功能

数据选择器又称为多路选择器或多路开关,其基本功能是:在地址控制端作用下 , 从多路输入信号中选择其中一路作为输出。常用的数据选择器有4选1、8选1、16选1等。

任一数据选择器的逻辑函数为

其中n为数据选择器地址端个数 ,D为数据端。

2 数据选择器实现组合逻辑函数的方法

2.1 数据选择器地址输入端个数与要实现的逻辑函数变量个数相同时

取3变量逻辑函数F,F的表达式为

现采用8选1数据选择器来实现该3变量逻辑函数,8选1数据选择器地址端数为3,此时数据选择器地址输入端个数与逻辑函数F的变量个数相同。

对于8选1数据选择器,其输出的逻辑表达式为

将逻辑函数F与8选1数据选择器的输出表达式进行比较。若F的三个输入变量A、B、C分别接到数据选择器地址输入端A2、A1、A0,逻辑函数中没有出现的最小项对应的数据输入端接0,出现的最小项对应的数据输入端接1,即可利用8选1数据选择器实现此3变量逻辑函数。实现具体过程如下:

基于此,可画出具体实现电路图1。

2.2 数据选择器地址输入端个数小于要实现的逻辑函数变量个数时

现采用4选1数据选择器来实现上述3变量逻辑函数F,4选1数据选择器的地址端有2个,此时数据选择器地址端端数小于要实现的逻辑函数变量个数。

对于4选1数据选择器,其输出的逻辑表达式为

通过比较3变量逻辑函数F与上述4选1数据选择器的输出表达式发现,此时变量A、B、C的个数大于数据选择器的地址端数A1 A0,因此将逻辑函数的多余输入变量C分离出来,余下变量A、B接在地址输入端A1 A0,分离出的变量按照一定规则接在数据输入端中。输出变量接至数据选择器的输出端,即可利用4选1数据选择器实现此3变量逻辑函数。实现具体过程如下:

基于此,可画出具体实现电路图2。

2.3 数据选择器地址输入端个数大于要实现的逻辑函数变量个数时

若取一2变量逻辑函数F,

对于上述2变量逻辑函数F,现采用8选1数据选择器来实现,8选1数据选择器的地址端有3个,数据选择器地址输入端个数大于要实现的逻辑函数变量个数。

8选1数据选择器的输出表达式为

将逻辑函数F与8选1数据选择器的输出表达式进行比较。若将地址端A2接0,将输入变量AB接至数据选择器的地址端A1 A0;D0~D7为适当的状态(包括0或1),输出变量接至数据选择器的输出端,即可利用8选1数据选择器实现此2变量逻辑函数。实现具体过程如下:

此时由于A2接0,所以D4~ D7不管接0或1,均不会影响输出,所以D4~ D7接0或1均可。

基于此,可画出具体实现电路图3。

3 结论

针对数据选择器这一常用的组合逻辑电路,本文分别研究了三种不同情况下采用数据选择器实现组合逻辑函数的具体方法。通过本文的研究可以看出数据选择器是一应用广泛,使用灵活的中规模集成电路,在数字电路的设计实现中可通过灵活运用数据选择器,达到实现相应逻辑功能的目的。

摘要:随着数字集成电路生产工艺的不断成熟,具有通用性的功能电路在各类数字系统中经常出现,数据选择器是其中一种常用的组合逻辑电路,实现任意组合逻辑函数是其重要应用之一。本文分析了采用数据选择器实现组合逻辑函数的意义,探讨了各种不同的实现方法。

2.数据选择器实验报告 篇二

数据库原理

实验报告

实验名称:

实验 三

数据库中的数据查询及视图操作(1)班 班

级:

姓 姓

名:

学 学

号:

实验地点:

日 日

期:

一、实验目的:

1.继续熟练 SQL SERVER 2005/2008 系统或 KingBase ES V7.0 的使用; 2.掌握 SELECT 语句的使用。

3.掌握单表查询,多表查询以及嵌套查询。

二、实验内容、要求和环境:

【 实验要求】

注:将完成的实验报告重命名为:班级+学号+姓名+(实验三),(如:041540538张三(实验三)),提交到SPOC学堂。

1.实验课要携带教材、学习辅导、老师下发的实验报告文档等。

2.课前要对实验内容和步骤部分进行预习。

【实验环境】

1.SQL SERVER 2005/2008; 2.KingBase ES V7.0,人大金仓。

【实验内容和步骤】

针对实验一建立的数据库的表,用 select 语句完成如下查询操作,写出 select 语句,并给出操作结果。

1.针对 SPJ 数据库中的四个表,实现如下查询:

(1)求供应工程 J1 零件的供应商号码 SNO;(2)求供应工程 J1 零件 P1 的供应商号码 SNO;(3)求供应工程 J1 零件的供应商名 SNAME;(4)求供应工程 J1 零件 P1 的供应商名 SNAME;(5)求供应工程 J1 零件为红色的供应商号码 SNO;(6)求没有使用天津供应商生产的红色零件的工程号 JNO;(7)求至少用了供应商 S1 所供应的全部零件的工程号 JNO;(8)找出使用上海产的零件的工程名称; 2.针对学生-课程数据库中的三个表,用嵌套方法查询实现如下查询:

(1)查询选修了数据库的学生姓名。

(2)查询比计算机系 CS 所有学生年龄都大的学生信息。

(3)列出“李勇”选修的所有课程的课名和成绩。

(4)查询数据库的先行课的课程名。

3.针对实验一建立的 SPXS 数据库中的三个表,实现如下查询:

精选文档

(1)查询与商品“电视”颜色相同的商品名;(2)查询不销售商品 P2 的商店名;(3)查询至少销售商品 P1、P2 两种商品的商店名;(4)所有商店都销售的商品号。

(5)只销售一种商品P4的商店名。

三、实验结果与分析:

写出操作语句,粘贴查询结果(粘贴结果要求粘贴 SQL Server Managemet Studio 整个窗口):

1.(1)

(2)

精选文档

(3)

精选文档

(4)

精选文档

(5)

精选文档

(6)

精选文档

(7)

精选文档

精选文档

(8)

精选文档

2.(1)

精选文档

(2)

精选文档

(3)

精选文档

(4)

精选文档

3.(1)

精选文档

(2)

精选文档

(3)

精选文档

(4)

精选文档

(5)

精选文档

四、思考题:

1.在操作中遇到什么问题?如何解决的?

第三题第二问不知道如何将在全部的 sno 中剔除当 pno=’p2’是的 sno.语句不知道怎样写出。

五、教师评语:

实验成绩:

教师:

(签名))

****年**月**日 日

创新活动

3.数据库实验报告 篇三

实验报告

一、实验题目:

数据库基本操作实验

二、实验目的:

掌握数据库的建立、表的设计基本方法,通过实际操作熟练掌握数据库的基本操作——数据的输入与导入,表的设计。

三、实验内容:

建立课程管理数据库,要求:

1.输入老师、开设课程、选课表、学生基本数据等,并输入一些学生不同课程的考试成绩。

2.建立查询表,分别是成绩查询、学分查询、不及格学生查询。

3.建立窗体,分别显示不及格学生的姓名、课程名称、成绩和班级ID。在成绩查询中显示学生姓名及各科成绩。在教师基本信息中显示编号、职称、工资、院系、等。同时建立开设课程表和学生基本信息的窗体查询。提供用户一个简单的应用程序界面,方便用户操作使用。

4.制作报表。包括教师的授课报表,课程名称及课程类别。学生的总成绩报表,包括课程名称、成绩和学分。

注:课程及考试成绩可以任意输入。选课按照班级确定。

四、实验过程:

1、数据库表设计

在表格内填入教师基本信息、开始课程、课程基本信息、选课表、学生基本信息。

教师基本信息:

开设课程:

/ 7

10包三 李雅 100910306

课程基本信息:

选课表:

/ 7

10包三 李雅 100910306

学生基本信息:

2、查询表: 成绩查询:

/ 7

10包三 李雅 100910306

学分查询:

不及格学生查询:

/ 7

10包三 李雅 100910306

3、窗体设计: 不及格学生信息查询:

成绩查询:

教师基本信息查询:

开设课程信息查询:

/ 7

10包三 李雅 100910306

学生基本信息查询:

4、报表: 教师的授课报表:

/ 7

10包三 李雅 100910306

学生的总成绩:

4.数据结构实验报告 篇四

14学年—15学年第 2 学期 数据结构实验任务书

专业名称: 计算机科学与技术 实验学时: 4 课程名称:数据结构 任课教师: 史绍强 实验题目:图的最短路径算法的实现

实验环境: Visual C++ 实验目的:

1.掌握图的邻接矩阵的存储定义;

2.掌握图的最短路径(Dijsktra)算法的实现。

实验内容:

设计北京林业大学的校园平面图,所含景点不少于8个。以图中顶点表示学校内各景点,存放景点的名称、景点介绍信息等;以边表示路径,存放路径长度信息。要求将这些信息保存在文件graph.txt中,系统执行时所处理的数据要对此文件分别进行读写操作。

1.从文件graph.txt中读取相应数据, 创建一个图,使用邻接矩阵表示图(算法6.1); 2.景点信息查询:为来访客人提供校园任意景点相关信息的介绍;

3.问路查询:为来访客人提供校园任意两个景点之间的一条最短路径(算法6.10)。

选做内容(对文件进行操作,相应信息变化后,再次进行景点信息查询和问路查询时应该有所体现)

1.修改一个已有景点的相关信息; 2.增加一个新景点及其相关信息; 3.增加一条新的路径;

4.删除一个景点及其相关信息; 5.删除一条路径。

实现提示:

1.校园道路是双向通行的,可设校园平面图是一个带权的无向图,用邻接矩阵表示此无向网。

typedef struct{

char name[100];char info[10000];}VertexType;//顶点结构 typedef struct{

VertexType vexs[10];int arcs[100][100];//邻接矩阵

int vexnum,arcnum;//顶点个数,边的个数

}MGraph;//图结构

2.将图的顶点信息和边的信息用数据文件graph.txt存储,数据文件格式可以设置如下形式:

图中顶点数 边的数目

景点名称 景点信息

始点

终点

路径长度

如可以在文件graph.txt中存储以下数据: 8 15 女生宿舍 有南北两栋,24层,是北林最漂亮的宿舍楼 小南门 经由北林主路通往学校北门,交通便利 „„

正门 主楼 80 正门 图书馆 400 „„

程序运行的参考结果下图:

实验要求:

(1)程序要具在一定的健壮性,即当输入数据非法时,程序也能适当地做出反应。(2)程序要添加适当的注释,程序的书写要采用缩进格式。

(3)根据实验报告模板详细书写实验报告,在实验报告中给出校园平面图。

(4)校园平面图中的校园景点信息保存在文件graph.txt中,源程序保存为“Graph_search.cpp”,实验报告命名为“实验报告3.doc”。将这三个文件压缩为一个文件,每个同学自己先将压缩文件命名为::学号姓名.rar,上传到welcomeyouto@tust.edu.cn(由各班学习委员统一打包压缩发送,学委发送的文件格式为班级实验报告3,如132011班实验报告3)。

5.数据库实验报告 篇五

学号:E01114193 姓名:刘雪平年级:计科三班 成绩:

实验名称:管理数据库 实验日期:2013年4月11日 实验目的:

(1)熟练掌握在企业管理器中创建数据库的方法。(2)熟练掌握用SQL语句创建数据库的方法。

(3)熟练掌握使用创建数据库向导来创建数据库的方法。(4)熟练掌握数据库属性的设置。(5)掌握数据库的修改和删除方法。

实验内容、步骤及结果:

(1)使用企业管理器创建一个名为“SM193”的数据库,初始大小为1MB,最大为50MB,数据库自动增长,增长方式按10%增长;日志文件初始大小为2MB,最大大小不受限制,按1MB增长。

(2)通过查询分析器创建一个名为“进销存193”的数据库,指定主数据文件名进销存193_data,存储路径为d:example进销存193_data.maf,该数据文件的初始大小为10MB,最大为100MB,数据库自动增长,增长方式按10MB增长;指定主日志文件名为进销存193_log,存储路径为d:example进销存193_log.ldf,该日志文件初始大小为20MB,最大为200MB,按10MB增长。

(3)使用向导创建一个名为“工资管理193”的数据库,初始大小为1MB,最大为50MB,数据库自动增长,增长方式按10%增长;日志文件初始大小为2MB,最大不受限制,按1MB增长。

(4)使用企业管理器,修改SM193数据库的最大文件大小为200MB。(5)使用SQL语句,在SM193数据库中添加一个数据文件“SM193_Data1”。指定其初始大小为4MB,最大不受限制,增长方式按10%增长。

(6)使用SQL语句,将SM193数据库中的数据文件“SM193_Data1”的最大大小改为120MB。

(7)使用SQL语句,删除“进销存”数据库。

《数据库原理》实验报告二

学号:E01114193 姓名:刘雪平年级:计科三班 成绩:

实验名称:创建表

实验日期:2013年4月20日 实验目的:

(1)熟练各种数据类型。

(2)能够运用T-SQL(Transact-SQL)语句正确创建表。(3)了解6种常用的数据完整性约束。(4)能够运用企业管理器正确创建表。

(5)学会用企业管理器设置常用的数据完整性约束。

实验内容、步骤及结果:

(1)使用T-SQL语句,创建SM193数据库中的学生表Student。

(2)创建SM193数据库中的课程表Course。

(3)创建SM193数据库中的选课表SC。

(4)输入如下SQL语句,查看表Student的定义。

(5)输入如下SQL语句,查看表Student与其他表之间的依赖关系。

(6)输入如下SQL语句,查看表Student上的约束。

(7)利用企业管理器提供的图形界面来创建“进销存193”数据库中的客户信息表c。

(8)用同样的方法创建货物表g和订单表o。(9)在表o的goodsname列上创建外键约束。

(10)在表o的quantity列上创建检查约束。

(11)使用企业管理器,把SM193数据库中的选课表SC的主码设置为SNo和CNo。

(12)查看表间的依赖关系。(13)向表中输入数据。

《数据库原理》实验报告三

学号:E01114193 姓名:刘雪平年级:计科三班 成绩:

实验名称:数据的复制与恢复和表的维护 实验日期:2013年4月25日 实验目的:

(1)熟练掌握附加数据库的方法。(2)熟练掌握数据导入与导出的方法。(3)熟练进行数据库的备份和还原。(4)了解差异备份和完全备份。(5)熟练掌握用企业管理器修改表。

(6)能够运用T-SQL语句对表结构进行修改。(7)熟练掌握用企业管理器编辑表中的数据。

(8)能够运用T-SQL语句对表中的数据进行插入、修改和删除操作。

实验内容、步骤及结果:

(1)对“进销存193”数据库进行附加操作。

(2)使用SQL语句对SM193数据库进行附加操作。

(3)对SM193数据库进行备份、删除及恢复。

(4)将SM193数据库中的数据导入到Excel表格中。

(5)将Excel表中的数据导入到SS数据库中。

(6)使用企业管理器为表Student增加一列。

(7)用SQL语句向表Student中增加列Email,且要求输入的电子邮件地址必须包括“@”字符。

(8)用SQL语句删除表Student中的列Address。

(9)使约束无效或重新有效。

(10)用SQL语句向表Student插入数据。

(11)用SQL语句修改表中的记录。

(12)用SQL语句删除表中的记录。

《数据库原理》实验报告四

学号:E01114193 姓名:刘雪平年级:计科三班 成绩:

实验名称:常规数据查询 实验日期:2013年5月2日 实验目的:

(1)掌握SELECT子句以及WHERE子句的使用方法。(2)学会应用ORDER BY子句。(3)掌握5种基本的聚合函数。(4)学会分组统计和二次查询。

实验内容、步骤及结果:

(1)SELECT子句的应用。(查询所有教职工的信息)

(2)WHERE子句的应用。(查询所有0002部门的职工信息)

(3)ORDER BY子句的应用。(查询职工的年薪,并按年薪的升序排列)

(4)聚合函数的应用。(统计职工的工资总额)

(5)聚合操作与分组统计的应用。(求每个班的学生数)

(6)使用HAVING子句,查询学分大于30的学生,输出学生的学号和学分。

《数据库原理》实验报告五

学号:E01114193 姓名:刘雪平年级:计科三班 成绩:

实验名称:多表查询与子查询 实验日期:2013年5月9日 实验目的:

(1)熟悉基本的连接操作,掌握内连接与外连接的方法,学会应用自身连接。

(2)掌握相关子查询的使用方法。(3)掌握嵌套子查询的使用方法。(4)学会应用子查询修改数据。

实验内容、步骤及结果:

(1)基本连接操作。(查询选修了电路基础课的学生)

(2)内连接操作。(查询每个学生及其选修课程情况,输出其学号、姓名、所选课程号及分数)

(3)外连接操作。(查询每个学生及其选修课程的情况)

(4)联合查询。

(5)交叉连接。(查询每个学生选修课程情况,并且输出其学号、姓名、所选课程号及其分数)

(6)自连接。(在表Teacher中,查询职工王莹的上级领导信息)

(7)使用IN关键字。(查询电路基础成绩不及格的男生名单)

(8)使用EXISTS关键字。(查询从未被选修的课程)

(9)运用比较运算符。(查询04信息一班的学生名单)

(10)使用子查询修改数据。(对每个班,求学生的平均年龄,并把结果存入数据库)

《数据库原理》实验报告六

学号:E01114193 姓名:刘雪平年级:计科三班 成绩:

实验名称:视图和索引的创建与使用 实验日期:2013年5月11日 实验目的:

(1)掌握创建视图的方法。(2)能够对视图进行修改。(3)能够通过视图修改数据。(4)理解索引的概念及其作用。(5)掌握创建索引的方法。(6)学会使用索引。

(7)了解聚簇索引和非聚簇索引

实验内容、步骤及结果:

(1)创建视图。(创建040002班学生的视图)

通过SQL语句建立姓“王”的学生视图。然后插入一条姓“李”的记录。

(2)更新视图的定义。(使用SELECT语句查看建立的视图)

(3)删除视图s_gl。

(4)更新视图。(向040002班学生的视图C1_Student中插入一条记录)

使用SELECT语句查看视图C1_Student和基本表Student。

(5)在TName列上创建索引。

(6)使用索引向导,在SM193数据库中,为表Student创建索引。

(7)使用SQL语句在表Course上创建一个唯一性的聚簇索引,索引排列顺序为降序。

(8)使用SQL语句在表Course上创建一个非唯一性的非聚簇索引。

(9)查看表Course上的所有索引。

(10)删除表Course上的索引。

《数据库原理》实验报告七

学号:E01114193 姓名:刘雪平年级:计科三班 成绩:

实验名称:用SQL语句完成下列操作 实验日期:2013年5月18日 实验目的:

(1)掌握创建数据库的方法。(2)能够用T_SQL创建表。

(3)掌握SELECT子句以及WHERE子句的使用方法。(4)能够运用SQL语句对表的数据进行修改。

实验内容、步骤及结果:

(1)找出所有供应商的姓名和所在城市;

(2)找出所有零件的名称、颜色、重量;

(3)找出使用供应商S1所供应零件的工程号码;

(4)找出工程项目J2使用的各种零件的名称及其数量;

(5)找出上海厂商供应的所有零件号码;

(6)出使用上海产的零件的工程名称;

(7)找出没有使用天津产的零件的工程号码;

(8)把全部红色零件的颜色改成蓝色;

(9)由S5 供给J4 的零件P6 改为由S3 供应;

(10)从供应商关系中删除供应商号是S2 的记录,并从供应情况关系中删除相应的记录;

(11)请将(S2,J6,P4,200)插入供应情况关系。

《数据库原理》实验报告八

学号:E01114193 姓名:刘雪平年级:计科三班 成绩:

实验名称:存储过程和触发器 实验日期:2013年5月23日 实验目的:

(1)了解及个别常用的系统存储过程。

(2)掌握如何使用T_SQL语句创建、执行和重编译存储过程。(3)了解如何使用企业管理器管理存储过程。(4)掌握如何使用企业管理器创建触发器。(5)了解如何使用企业管理器创建触发器。

(6)掌握ALTER触发器的用法,并了解INSETEAD OF触发器的用法。

实验内容、步骤及结果:

(1)创建存储过程。

执行存储过程

(2)使用输入参数。

按位置传递参数

通过参数名传递参数

(3)使用默认参数。

执行语句,比较结果

(4)使用输出参数。

执行存储过程ssc_6

(5)使用返回值。

执行存储过程ssc_7

(6)修改存储过程。

(7)查看存储过程。

(8)删除存储过程。

(9)创建触发器。

在企业管理器中向表Course中插入数据,并在SC上建立一个INSERT触发器

运行触发器,向表Course中插入记录

向表SC中加入选课记录,查看执行情况

将00010号课程的状态改为“0”

表SC的CNo列设置了外键约束,试用触发器实现这一功能

6.《数据结构》实验报告——排序 篇六

实验题目:

输入十个数,从插入排序,快速排序,选择排序三类算法中各选一种编程实现。

实验所使用的数据结构内容及编程思路:

1.插入排序:直接插入排序的基本操作是,将一个记录到已排好序的有序表中,从而得到一个新的,记录增一得有序表。

一般情况下,第i趟直接插入排序的操作为:在含有i-1个记录的有序子序列r[1..i-1]中插入一个记录r[i]后,变成含有i个记录的有序子序列r[1..i];并且,和顺序查找类似,为了在查找插入位置的过程中避免数组下标出界,在 r[0]处设置哨兵。在自i-1起往前搜索的过程中,可以同时后移记录。整个排序过程为进行n-1趟插入,即:先将序列中的第一个记录看成是一个有序的子序列,然后从第2个记录起逐个进行插入,直至整个序列变成按关键字非递减有序序列为止。

2.快速排序:基本思想是,通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。

假设待排序的序列为{L.r[s],L.r[s+1],„L.r[t]},首先任意选取一个记录(通常可选第一个记录L.r[s])作为枢轴(或支点)(pivot),然后按下述原则重新排列其余记录:将所有关键字较它小的记录都安置在它的位置之前,将所有关键字较大的记录都安置在它的位置之后。由此可以该“枢轴”记录最后所罗的位置i作为界线,将序列{L.r[s],„,L.r[t]}分割成两个子序列{L.r[i+1],L.[i+2],„,L.r[t]}。这个过程称为一趟快速排序,或一次划分。

一趟快速排序的具体做法是:附设两个指针low和high,他们的初值分别为low和high,设枢轴记录的关键字为pivotkey,则首先从high所指位置起向前搜索找到第一个关键字小于pivotkey的记录和枢轴记录互相交换,然后从low所指位置起向后搜索,找到第一个关键字大于pivotkey的记录和枢轴记录互相 1 交换,重复这两不直至low=high为止。

具体实现上述算法是,每交换一对记录需进行3次记录移动(赋值)的操作。而实际上,在排列过程中对枢轴记录的赋值是多余的,因为只有在一趟排序结束时,即low=high的位置才是枢轴记录的最后位置。由此可以先将枢轴记录暂存在r[0]的位置上,排序过程中只作r[low]或r[high]的单向移动,直至一趟排序结束后再将枢轴记录移至正确位置上。

整个快速排序的过程可递归进行。若待排序列中只有一个记录,显然已有序,否则进行一趟快速排序后再分别对分割所得的两个子序列进行快速排序。

3.简单选择排序:其操作为,通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1≤i≤n)个记录交换之。

显然,对L.r[1„n]中的记录进行简单选择排序的算法为:令i从1至n-1,进行n-1趟选择操作。可以看出,简单选择排序过程中,所需进行记录移动的操作次数较少,其最小值为“0”,最大值为3(n-1)。然后,无论记录的初始排列如何,所需进行的关键字之间的比较次数相同,均为n(n-1)/2。

程序清单: 1.插入排序: #include structsqlist {int key[11];int length;} insertsort(structsqlist *l){ inti,j;for(i=2;i<=l->length;i++)if(l->key[i]key[i-1]){l->key[0]=l->key[i];l->key[i]=l->key[i-1];for(j=i-2;l->key[0]key[j];j--)l->key[j+1]=l->key[j];l->key[j+1]=l->key[0];} } main(){ inti,j,k;structsqlistnum;num.length=10;for(i=1;i<=num.length;i++)scanf(“%d”,&(num.key[i]));insertsort(&num);printf(“charu:”);

for(i=1;i<=num.length;i++)printf(“%d ”,num.key[i]);} 测试用例:

输入:23 34 12 98 56 45 67 8 9 37 输出:charu:8 9 12 23 34 37 45 56 67 98 2快速排序: #include structsqlist { int key[11];int length;};int partition(structsqlist *l,intlow,int high){ intpivotkey;l->key[0]=l->key[low];pivotkey=l->key[low];while(lowkey[high]>=pivotkey)high--;l->key[low]=l->key[high];while(lowkey[low]<=pivotkey)low++;l->key[high]=l->key[low];} l->key[low]=l->key[0];return low;} voidqsort(structsqlist *l,intlow,int high){intpivotloc;if(lowlength);} main(){ inti,j;structsqlistnum;num.length=10;for(i=1;i<=num.length;i++)scanf(“%d”,&(num.key[i]));quicksort(&num);printf(“kuaisu:”);

for(i=1;i<=num.length;i++)printf(“%d ”,num.key[i]);} 测试用例:

输入:23 34 12 98 56 45 67 8 9 37 输出:charu:8 9 12 23 34 37 45 56 67 98 3选择排序: #include structsqlist {int key[11];int length;};

intselectminkey(structsqlist *l,int a){ inti,j=a;for(i=a;i<=l->length;i++)if(l->key[i]key[j])j=i;return j;} voidselectsort(structsqlist *l){inti,j,k;for(i=1;ilength;i++){j=selectminkey(l,i);if(i!=j){k=l->key[i];l->key[i]=l->key[j];l->key[j]=k;} } } main(){ inti,j;structsqlistnum;num.length=10;for(i=1;i<=num.length;i++)scanf(“%d”,&(num.key[i]));selectsort(&num);printf(“xuanze:”);

for(i=1;i<=num.length;i++)printf(“%d ”,num.key[i]);} 测试用例:

输入:23 34 12 98 56 45 67 8 9 37 输出:charu:8 9 12 23 34 37 45 56 67 98

编程感想: 本次编程总共使用了三种排序方法,而这三种编程方法放在一起进行编写时,很容易就让我们对齐难易程度有了更深刻的了解。

首先,三种排序中,我们都像查表那样,设置了哨兵,而哨兵的使用可以减少对整个表的验空操作,使程序更加节省空间。

其次,对于插入排序,每次都要对一段序列进行检索,每排一次所要检索的序列长度减一,其时间发杂度为O(n^2)。

接着,对于快速排序,这个程序是比较复杂的,总共是3个函数,并且使用了递归的方法,这是但是,这种算法却是最优越的,平均性能也是最好的,我在编这个程序时,对其排序的思想有了进一步的了解,并努力拿他与冒泡排序进行比较,看出了些许其优越性。

还有,就是选择排序,简单选择排序思路简单,易于进行,但其时间发杂度与简单插入排序方法一样,都是O(n^2),性能不如快速排序。

7.数据库实验报告(三) 篇七

实验目的熟悉使用alter语句对表进行修改;熟悉常用的函数。

实验内容

创建学生信息表,其中表名为student,包含字段:number(学号)、name(姓名)

1. 将student表名修改为stu。

2. 向stu表添加id字段,设置为主键且自动递增

3. 向stu表中添加一下3条学生记录。1、012001、张杰2、012002、李连杰3、012003、王五

4. 查询姓名并且将姓和名分别用两列显示(假设学生姓名的第一个字符是姓)。实验程序或截图

8.数据结构实验报告7 篇八

班级: 信管 专业 班 姓名: 学号: 实验时间: 2016 年 5 月 6 日 指导教师: 宋泽源

实验七:线性查找操作与应用

一、实验目的:

1、掌握顺序查找、折半查找的基本方法和操作过程

2、掌握二叉排序树的基本方法和操作过程

3、掌握查找效率的分析方法

二、实验内容:

1、编写程序,实现顺序查找操作,可参考书本P260/P25示例程序。

实验步骤:

①、在Java语言编辑环境中新建程序,建立一个顺序表(表长10),依次输入10个数据元素(对元素存放的先后顺序没有要求),并按照存储顺序输出所有元素;

②、输入待查找关键字,在顺序表中进行顺序查找;

③、输出查找结果。

2、编写程序,实现有序表折半查找操作,可参考书本P263/P218示例程序。

实验步骤:

①、在Java语言编辑环境中新建程序,建立一个顺序表(表长10),依次输入10个数据元素(要求所有元素按照递增顺序排列),并按照存储顺序输出所有元素;

②、输入待查找关键字,在有序表中进行折半查找;

③、输出查找结果。

3、编写程序,实现二叉排序树查找操作,可参考书本P277/P235示例程序。

实验步骤:

① 在Java语言编辑环境中新建程序,依次输入10个数据元素,建立一个二叉排序树,并按照中序遍历输出所有元素; ②、输入待查找关键字,在二叉排序树中进行查找;

③、输出查找结果。

三、操作步骤: 实验1:package search;

import java.util.Scanner;

public class Sequence {

public static void main(String[] args)throws java.io.IOException{

SeqList list = new SeqList(10);int value[]=Sequence.readInt();for(int i=0;i

System.out.println(list.toString());System.out.println(“输入要查找的数:”);Scanner scan = new Scanner(System.in);while(true){ int key = scan.nextInt();System.out.println(list.search(key)+“在数组中下标为

list.append(value[i]);”+list.indexOf(key)+“的位置”);

}

} System.out.println(“输入10个数:”);byte buffer[]=new byte[512];int count =System.in.read(buffer);if(count<2){ return null;

public static int[] readInt()throws java.io.IOException{

} String s=new String(buffer,0,count-2);String str[]=s.split(“ ”);int value[]=new int[str.length];int i=0,j=0;while(i

try{

}

catch(NumberFormatException e){ System.out.println(str[i]+“不能转换为数组”);}

finally{i++;}

if(i==j){ value[j]=Integer.parseInt(str[i]);j++;

return value;}

int keys[]=new int[j];System.arraycopy(value, 0, keys, 0, j);return keys;} }

实验二

package search;

import java.util.Scanner;

public class BinarySearch {

public static void main(String[] args)throws java.io.IOException{

SeqList list = new SeqList(10);int value[]=BinarySearch.readInt();for(int i=0;i

System.out.println(list.toString());

System.out.println(“使用折半查找方法,输入要查找的数:”);Scanner scan = new Scanner(System.in);while(true){ int key = scan.nextInt();list.append(value[i]);

System.out.println(key+“在数组中的下标为”+list.binarySearch(value, key));

} public static int[] readInt()throws java.io.IOException{

System.out.println(“输入10个升序数:”);byte buffer[]=new byte[512];int count =System.in.read(buffer);if(count<2){ } String s=new String(buffer,0,count-2);String str[]=s.split(“ ”);int value[]=new int[str.length];int i=0,j=0;while(i

try{

}

catch(NumberFormatException e){ System.out.println(str[i]+“不能转换为数组”);} value[j]=Integer.parseInt(str[i]);j++;return null;}

finally{i++;}

if(i==j){

return value;}

int keys[]=new int[j];System.arraycopy(value, 0, keys, 0, j);return keys;} }

折半查找方法的实现:

} } } public static int binarySearch(int [] value, int key){

return binarySearch(value,key,0,value.length-1);} public static int binarySearch(int [] value,int key,int min, int

if(min>max){ } else{

int mid=(max+min)/2;if(value[mid]==key){

return mid;return binarySearch(value,key,mid+1,max);return binarySearch(value,key,min,mid-1);}else if(value[mid]

验三

package search;

import java.util.Scanner;

public class BinarySortTree_ex {

public static void main(String args[])throws java.io.IOException{

BinarySortTree bstree=new BinarySortTree();int values[]=BinarySortTree_ex.readInt();for(int i=0;i

bstree.inOrder();//中根次序遍历二叉树

//System.out.println(“中序遍历输出二叉排序树”+bstree.toString());

System.out.println(“输入查找的数字:”);Scanner scan = new Scanner(System.in);while(true){ int key = scan.nextInt();System.out.println(“查找”+key+“,”+(bstree.search(key)!=null?“":”不“)+”成功“);

}

} System.out.println(”输入10个数:“);byte buffer[]=new byte[512];int count =System.in.read(buffer);if(count<2){

public static int[] readInt()throws java.io.IOException{

} return null;String s=new String(buffer,0,count-2);String str[]=s.split(” “);int value[]=new int[str.length];int i=0,j=0;while(i

try{

}

catch(NumberFormatException e){ // System.out.println(str[i]+”不能转换为数组");}

finally{i++;}

if(i==j){ value[j]=Integer.parseInt(str[i]);j++;

return value;}

int keys[]=new int[j];System.arraycopy(value, 0, keys, 0, j);return keys;}

}

四、实验收获和建议:

9.数据选择器实验报告 篇九

通过在主函数中调用对栈操作的这些函数,完成对数据进制的转换。测试数据:将 9分别转换成 2-9等不同进制输出。详细设计

linkstack* set(//建立空堆栈 { linkstack *l;//定义堆栈类指针 l=NULL;//将指针付为空值 返回栈 l;}

linkstack* push(linkstack *k,int a//向堆 栈中插入数据 { linkstack *l;//建立栈指针

l=(linkstack*malloc(sizeof(linkstack;/申请地址 l->data=a;向栈的数据域赋值 l 的指针域指向下一个结构体 k=l;返回堆栈 k;} int empty(linkstack *k//判断堆栈是否为空 { if(k==NULL//如果堆栈为空 return 1;//返回 1 else//否则 return 0;//返回 0 } int gettop(linkstack *k//取栈顶元素 { return k->data;//返回栈顶元素

} 详细设计 … … … …

… … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … void main(//主函数

{ linkstack *m;//定义堆栈指针 int a,b,c;//定义整型变量 m=set(;调用建栈函数建栈 printf(“t请 输 入 要 转 换 的 数 字 :nt”;scanf(“%d”,&a;输入要转换的数 printf(“t请输入要转换成多少进制(范 围 2-9:nt”;scanf(“%d”,&c;while(a如果 a 不为 0 { b=a%c;//求余

m=push(m,b;a=a/c;

} printf(“t该数的 %d进制表示为:”,c;while(!empty(m//如果不为空 { printf(“%d ”,gettop(m;//输出栈 顶元素

m=pop(m;//栈顶元素出栈 }

printf(“nt”;} 指导教师:日期:年 月 日 合 肥 学 院 学 生 实 验 报 告

函数的返回的类型与接收函数值的变量类型不对,不能正常编译。程序结果如下图所示:

该软件按为在 dos 下运行的软件,第一步提示用户输入要转换的数据;输入数据后,会提示输入要转换成多少进制的数;然后就会输出结果。

教师签字: 日期: 年 月 日

测试结果 调试分析 操作说明

10.数据库实验报告 篇十

目录

一 实验目的.......................................................................................3 二 实验内容.......................................................................................3 1 数据库系统概述...........................................................................3 1.1PowerBuilde的基础..................................................................4 1.2 PowerBuilde的工作环境.........................................................5 1.3 PowerBuilder工具栏................................................................6 1.4 画板........................................................................................7 1.5 Windows 客户应用程序的建立...............................................8 2 建立数据库..................................................................................9 2.1 建立ASA数据库...................................................................10 2.2建立ODBC数据源.................................................................11 2.3 创建表..................................................................................14 三 实验心得.....................................................................................16 一 实验目的

了解数据库系统,熟悉PowerBuilder集成开发环境,学会使PowerBuilder以及数据库的建立、连接和数据库表的操作。二 实验内容 1 数据库系统概述

1.数据库(DataBase,简称DB)

数据库是指相互关联的数据集合。它是一组长期存储在计算机内,有组织的、共享的、具有明确意义的数据集合。数据库可以人工建立、维护和使用,也可以通过计算机建立、维护和使用。数据库并非“存放数据仓库”的简称,在数据库系统中,数据仓库实际是存放历史数据的仓库。2.数据库管理系统(DataBase Management System,简称DBMS)能够对数据库进行有效管理的一组计算机程序称为数据库管理系统。它是位于用户与操作系统之间的一层数据管理软件,是一个通用的软件系统。数据库管理系统通常由语言处理、系统运行控制和系统维护三大部分组成,给用户提供了一个软件环境,允许用户快速方便地建立、维护、检索、存取和处理数据库中的信息。我们熟悉的数据库管理系统有SQLServer、Oracle、Visual ForPro等 3. 数据库系统(Data Base System,简称DBS)

数据库系统是指具有管理和控制数据库功能的计算机系统。它 通常由5部分组成: 硬件系统、数据库、软件支持系统、数据库管理员和用户。它们之间的关系如图1.1所示。数据库应用系统: 为特定应用开发的数据库应用软件。例如,基于数据库的数据库管理系统、决策支持系统等。

数据库系统是一个复杂的系统,它是采用了数据库技术的计算机系统,又是一个实际可运行的,按照数据库方法存储、维护和向应用系统提供数据支持的系统。它由硬件系统、数据库、软件支持系统、数据库管理员和用户组成。

1.1PowerBuilde的基础

PowerBuilder是一种可视化的、面向对象的快速应用开发工具,它提供了对面向对象编程的全面支持,集成了第四代(4GL)编程语言,内置了多种对象类,可以方便地对数据库进行访问。PowerBuilder应用系统可以运行在Windows9x/2000/XP/2003、Macintosh、Sun solaris等多种平台上,并支持跨平台的开发和分布。例如:在Windows上开发的PowerBuilder应用程序可以分布到UNIX平台上运行。

PowerBuilder与数据库的连接是通过接口进行的(ODBC通用接口和专用接口)。通过ODBC接口,PowerBuilder可以实现与大部分数据库管理系统(Oracle、Sybase、Informix、MS SQL SERVER、FOXPRO、Access、Excel等)相连接。为了提高访问效率,PowerBuilder还提供了与某些数据库管理系统(Oracle,MS SQL SERVER,SYBASE等 数据库管理系统)的专用接口。

面向对象的程序设计方法的精髓是将要处理的信息抽象成对象,每个对象都能响应外界的刺激并进行相应的动作。PowerBuilder应用程序由多种对象组成,并对每个对象提供了方便好用的开发工具。其中,画板、事件、脚本、函数和库是PowerBuilder中开发应用程序的基本工具。另外,PowerBuilder还附带有多种实用工具软件。如Adaptive Server Anywhere 9.0、PowerBuilder Runtime Packager等实用工具软件,对数据库应用的开发与部署提供了强有力的支持。.2 PowerBuilde的工作环境

图1 PowerBuilde集成开发环境

它是一个典型的带帮助的多文档窗口(MDI Help),包括顶部的菜 单栏和工具栏、左边的系统树(System Tree)和Clip窗口、底部的输出窗口。可以将经常使用的文本拷贝或拖拉到Clip窗口中并起一个名字,以后需要时可以随时再拷贝到合适的地方。如果不是特别需要,Clip窗口和输出栏一般可以关闭,这样使得系统树窗口可以显示更多内容,用户工作区更大一些。对于所示的工作环境,涉及两个必要的步骤:建立工作空间(WorkSpace)和目标(Target)WorkSpace使得应用系统开发人员可以在多个应用或组件上进行开发,为构建复杂应用提供了方便;Target用于描述WorkSpace中的应用或组件,包括Window客户、EAServer组件和WEB站点三类。在8.0以上的版本中,只有打开或建立了WorkSpace并在其中加入一个已存在的Target或定义一个新的Target之后才能进行有效工作。可以说,在PowerBuilder 8.0以上版本中,WorkSpace和Target是应用系统开发的中心。

1.3 PowerBuilder工具栏

图2 PowerBuilde 10.0的工具栏

由三个部分组成:PowerBar、PaiterBar和StyleBar,PowerBar用于打开PowerBuilder的各种画板;PaiterBar包含操作当前画板的图标按钮,它只有在打开某个画板后才会出现;StyleBar用于改变文本的字体、字号和属性,它只在对文本进行操作时才出现。在PowerBuilder 10.x中,PowerBar通常位于菜单之下和其它Painter工具栏之上

1.4 画板 新建画板 该画板用于创建各种对象,单击后弹出如图3 所示的对话框

图3 New 画板

在图中单击workspace 图标,建立工作空间,命名为examp

图4 建立workspace 1.5 Windows 客户应用程序的建立

单击图5 中的第一项“Application”出现如图6的对话框

图5 target 画板

图6 建立应用对话框 建立数据库

PowerBuilder作为数据库应用的前端开发工具,在使用数据库中的数据之前,数据库必须是建立好的,而且还要通过专用或通用数据库连接工具与数据库建立连接。这一节我们利用PowerBuilder自带的Adaptive Server Anywhere数据库创建工具建立一个实验用数据库,这是PowerBuilder环境下能够建立的唯一一个数据库。而且,在PowerBuilder环境下对数据库的管理功能较弱,对于ASA数据库的全面管理,可以使用Sybase Central实用工具。

ASA数据库与PowerBuilder运行在同一台机器上,构成了Client/Server体系结构。ASA数据库在功能上基本具备了大型数据库 的特点,是一个完整的DBMS,使得应用软件研制人员在单机环境下就能完成网络环境下C/S模式数据库应用系统的大部分开发任务。PowerBuilder同时也提供了很好的数据库应用系统发布与安装工具。2.1 建立ASA数据库

在PowerBar上单击DB Profile图标或者从菜单栏点击“Tools”菜单项,再从Tools的下拉菜单中选择执行“Database Profile…”子菜单选项,此时出现图7所示的对话框

图7 Database profiles 对话框

打开数据库画板 双击 creat ASA database 出现如图 8 的对话框

图8 创建ASA数据库 对话框

2.2建立ODBC数据源

ODBC数据源是指要连接的数据库、相关网络软件、操作系统软件等支持环境的总称。如果与网络数据库服务器连接,应该先调通网络、安装必要的客户端软件等,在PB中建立ODBC数据源的操作步骤如下

图9 创建数据源

单击下一步 进行ODBC的配置

图 10 配置ODBc

图 11 输入用户名和口令

选择所要连接的数据库

图12 当ODBC、login、dasebase三个选项都配置好之后,回到ODBC选项。测试一下能付与数据库连接上,如果可以连接说明数据源已经配置好了,如果连接失败,表明配置错误,需要重新配置。2.3 创建表 选择table 选项,单击鼠标右键,执行NEW table 子菜单项 如图 13

图13

单击 如图14 所示操作区的 Isql session 选项卡

图 14 依次输入SQL语句 建立三张表 库存表(storage):

CREATE TABLE “dba”.“storage”(“barcode” numeric(10,0)NOT NULL, “mc” varchar(24)NOT NULL , “rkdj” numeric(8,2)NOT NULL, “ckdj” numeric(8,2)NOT NULL, “numb” numeric(6,0)NOT NULL, “gg” varchar(20)DEFAULT NULL, “cjbh” varchar(10)NOT NULL, “scrq” date NOT NULL, “inrq” timestamp NOT NULL, “czy” varchar(8)NOT NULL , PRIMARY KEY(“barcode”));供应商表(producer):

CREATE TABLE “dba”.“producer”(“cjbh” varchar(10)NOT NULL, “cjmc” varchar(24)NOT NULL , “cjaddr” varchar(24)NOT NULL, “yb” char(6)NOT NULL, “tel” varchar(16)NOT NULL, “bz” varchar(24)DEFAULT NULL, PRIMARY KEY(“cjbh”));销售表(sale_all):

CREATE TABLE “dba”.“sale_all”(“xh” numeric(10,0)NOT NULL, “barcode” numeric(10,0)NOT NULL, “sl” integer NOT NULL, “ckdj” numeric(8,2)NOT NULL, “mc” varchar(24)NOT NULL, “fplsh” numeric(12,0)DEFAULT NULL, “xsrq” timestamp NOT NULL, “czy” varchar(8)DEFAULT NULL , PRIMARY KEY(“xh”));以上三张表的关联关系即实体完整性(主键)、参照完整性(外键)如图15所示

图 15 三张表

三 实验心得

上一篇:后勤部个人工作述职报告下一篇:民生政策宣传调研报告