北邮数据库实验-实验三

合集下载

北邮数据库实验报告(3)

北邮数据库实验报告(3)

数据库实验报告(三)姓名:学号:班级:1.用Transact-SQL语句、数据导入、SQL Server Management Studio(企业管理器)输入的方法对所给定的8张表的数据输入到数据库中。

自行决定每张表的数据导入办法,但每种方法各针对二或三张表。

●Transact-SQL语句:导入department, student, student_course表。

insert into departmentselect*fromopenrowset('microsoft.jep.oledb.4.0','excel 5.0;hdr=yes;database=D:\课件\数据库\database2.xls',department$);insert into studentselect*fromopenrowset('microsoft.jep.oledb.4.0','excel 5.0;hdr=yes;database=D:\课件\数据库\database2.xls',student$);insert into student_courseselect*fromopenrowset('microsoft.jep.oledb.4.0','excel 5.0;hdr=yes;database=D:\课件\数据库\database2.xls',student_course$);●数据导入:操作:选中数据库studentsdb,右键-任务-导入数据。

导入book, class, course表。

SQL Server Management Studio:操作:右键需要编辑的表,选择编辑前200行。

Teacher:Teacher_course_class:导入结果:Book:Course:Department:Student_course:Teacher:Teacher_course_class:2.用Transact-SQL向Course表中插入一条记录,course_name为空,看运行的结果。

北邮数据结构实验报告

北邮数据结构实验报告

北邮数据结构实验报告摘要:本报告基于北邮数据结构实验,通过实际操作和实验结果的分析,总结和讨论了各实验的目的、实验过程、实验结果以及相关的问题和解决方法。

本报告旨在帮助读者了解数据结构实验的基本原理和应用,并为今后的学习和研究提供参考。

1. 实验一:线性表的操作1.1 实验目的本实验旨在掌握线性表的基本操作以及对应的算法实现,包括插入、删除、查找、修改等。

1.2 实验过程我们使用C++语言编写了线性表的相关算法,并在实际编程环境下进行了测试。

通过插入元素、删除元素、查找元素和修改元素的操作,验证了算法的正确性和效率。

1.3 实验结果经过测试,我们发现线性表的插入和删除操作的时间复杂度为O(n),查找操作的时间复杂度为O(n),修改操作的时间复杂度为O(1)。

这些结果与预期相符,并反映了线性表的基本特性。

1.4 问题与解决方法在实验过程中,我们遇到了一些问题,例如插入操作的边界条件判断、删除操作时的内存释放等。

通过仔细分析问题,我们优化了算法的实现,并解决了这些问题。

2. 实验二:栈和队列的应用2.1 实验目的本实验旨在掌握栈和队列的基本原理、操作和应用,并进行实际编程实现。

2.2 实验过程我们使用C++语言编写了栈和队列的相关算法,并在实际编程环境下进行了测试。

通过栈的应用实现表达式求值和逆波兰表达式的计算,以及队列的应用实现图的广度优先遍历,验证了算法的正确性和效率。

2.3 实验结果经过测试,我们发现栈的应用可以实现表达式的求值和逆波兰表达式的计算,队列的应用可以实现图的广度优先遍历。

这些结果证明了栈和队列在实际应用中的重要性和有效性。

2.4 问题与解决方法在实验过程中,我们遇到了一些问题,例如中缀表达式转后缀表达式的算法设计、表达式求值的优化等。

通过查阅资料和与同学的讨论,我们解决了这些问题,并完善了算法的实现。

3. 实验三:串的模式匹配3.1 实验目的本实验旨在掌握串的基本操作和模式匹配算法,并进行实际编程实现。

北邮数据结构实验 第三次实验 排序剖析

北邮数据结构实验 第三次实验 排序剖析

数据结构实验报告1.实验要求(1)实验目的通过选择下面两个题目之一,学习、实现、对比各种排序算法,掌握各种排序算法的优劣,以及各种算法使用的情况。

(2)实验内容使用简单数组实现下面各种排序算法,并进行比较。

排序算法:1、插入排序2、希尔排序3、冒泡排序4、快速排序5、简单选择排序6、堆排序(选作)7、归并排序(选作)8、基数排序(选作)9、其他要求:1、测试数据分成三类:正序、逆序、随机数据2、对于这三类数据,比较上述排序算法中关键字的比较次数和移动次数(其中关键字交换计为3次移动)。

3、对于这三类数据,比较上述排序算法中不同算法的执行时间,精确到微秒(选作)4、对2和3的结果进行分析,验证上述各种算法的时间复杂度编写测试main()函数测试排序算法的正确性。

2. 程序分析2.1 存储结构顺序表:示意图:2.2 关键算法分析(1)测试数据的产生:正序、逆序、随机数据用两个数组实现乱序、顺序以及逆序数据的排序。

基本思想为:随机序列产生一个指定长度的乱序序列,然后通过memcpy()函数拷贝到第二个数组里,第二个数组作为乱序序列的保存数组,每次对第一个数组进行排序,之后拷贝第二个数组中的乱序序列到第一个数组,实现各次乱序排列。

只要算法正确(第一步可以检验),之后顺序排列只需反复对第一个数组进行操作即可,再后用第二个数组保存逆序数组,然后同样在每次排序之后复制第二数组存储的乱序序列到第一组,对第一组反复排序即可。

<1> pRandom1=new long int[Max+1];pRandom2=new long int[Max+1];<2> srand((unsigned)time(NULL)); for(int i = 1; i <= Max;i++ ) pRandom2[i]=rand();<3> memcpy(obj.pRandom1,obj.pRandom2,(Max+1)*sizeof(long int));(2)排序算法:<1>插入排序:依次将待排序的序列中的每一个记录插入到先前排序好的序列中,直到全部记录排序完毕。

北邮数据结构第三次实验-实验报告

北邮数据结构第三次实验-实验报告

数据结构实验报告实验名称:实验三——栈和队列学生姓名:班级:班内序号:学号:日期:1.实验要求1.1 实验目的通过选择下面两个题目之一进行实现,掌握如下内容:➢掌握二叉树基本操作的实现方法➢了解赫夫曼树的思想和相关概念➢学习使用二叉树解决实际问题的能力1.2 实验内容根据二叉树的抽象数据类型的定义,使用二叉链表实现一个二叉树。

二叉树的基本功能:1、二叉树的建立2、前序遍历二叉树3、中序遍历二叉树4、后序遍历二叉树5、按层序遍历二叉树6、求二叉树的深度7、求指定结点到根的路径8、二叉树的销毁9、其他:自定义操作编写测试main()函数测试线性表的正确性2. 程序分析2.1 二叉链表2.2 二叉树的二叉链表存储示意图2.3 关键算法分析2.3.1算法1:void create(Binode<T> *&R, T data[], int i);[1] 算法功能:创建一个二叉树[2] 算法基本思想:通过构造函数创建一个二叉树,构造函数通过调用函数create()创建二叉树,关于函数create()的伪代码:1.定义根指针,输入节点储存的data,若输入“#”,则该节点为空;2.申请一个新节点,判断它的父结点是否不为空,如果不为空在判断其为左或者右孩子,并把地址付给父结点,把data写入。

[3] 算法空间、时间复杂度:O(n)[4] 代码逻辑(可用伪代码描述):if(data[i-1]!=0){R = new Binode<T>;R->data= data[i-1];R->lch = R->rch = NULL;create(R->lch, data,2*i);create(R->rch, data, 2*i+1);}2.3.2算法2:void Destroy(Binode<T> *R);[1] 算法功能:二叉树的销毁[2] 算法基本思想:采用后序遍历的方法,释放节点。

北邮数据库实验三

北邮数据库实验三

实验三完整性及视图、索引视图是基于某个查询结果的一个虚拟表,只是用来查看数据的窗口而已。

索引能够提供一种以一列或多列的值为基础迅速查找数据表(或视图)中行的能力,用来快速访问数据表(或视图)中的数据。

触发器是一种特殊的存储过程,它在特定语言事件发生时自动执行,通常用于实现强制业务规则和数据完整性。

【实验目的】掌握MySQL视图、索引的使用,理解什么是数据库的完整性。

【实验要求】1、每完成一个任务,截取全屏幕快照1~3张作为中间步骤和结果的贴图,粘贴在最后的实验报告中。

2、除了使用我们提供的数据外还要自己向表中添加些新数据,以保证每个查询结果不为空集,或计数结果不为0。

3、思考题可以选做,作为优秀加分的依据。

【实验任务】1、创建一个视图,该视图为每门课程的平均成绩,视图包括的列有课程号及平均成绩,并用利用该视图查询所有课程的平均成绩,要求给出课程号、课程名及平均成绩。

2、创建一个视图,该视图为每门课程的平均成绩,视图包括的列有课程号、课程名及平均成绩,并用利用该视图查询所有课程的平均成绩,要求给出课程号、课程名及平均成绩。

3、为院系代码表(dept_code)创建基于“院系代码”列的索引。

条room_id列与表中已有的值重复的数据,观察系统的反馈。

5、重新修改表stud_info 、lesson_info 及stud_grade ,修改的内容为:①为三张表增加主码约束,stud_info 的主码为stud_id ,lesson_info 的主码为course_id ,stud_grade 的主码为stud_id 、course_id 。

②为表stud_grade增加外码,其中stud_id参照stud_info的stud_id,course_id参照lesson_info的course_id。

5、使用SQL语句向上题的3张表中插入新的数据,要求分别违反刚刚增加的主码约束、外码约束及原有的非空约束并观察系统的反馈。

北邮数据结构实验三题目2哈夫曼树(代码)

北邮数据结构实验三题目2哈夫曼树(代码)
int Getm(){return m;}
~Huffman(){delete []HTree;delete []HcodeTable;}//析构函数
};
//初始化哈夫曼树
void Huffman::Init(char *s)
{
int n=0;
while (*(s+n)!='\0')
k=0;//控制哈夫曼数组下标
ctemp=temp[0];//做标记
for (int i=0;i<n;i++)
{
if(temp[i]==ctemp)
{
l++;//统计不同字符出现的频度
if (i==n-1)
HTree[k].weight=l;
}
{
for (int j=0;HcodeTable[i].code[j]!='\0';j++)
{
*d+=HcodeTable[i].code[j];
sum+=1;
}
s++;
n++;
break;
}
}
}
}
void main()
{
cout<<"请选择输入字符串:"<<endl;
char str[1000]={'\0'};
char *s=&str[0];
char c;
int i=0;
bool flag=0;//判断不同字符个数是否>=2
while (cin.get(c))//接收输入字符串,自动除去空格

北京邮电大学实验报告课程名称《数据库系统原理》课程基本实验实验

北京邮电大学实验报告课程名称《数据库系统原理》课程基本实验实验

北京邮电大学实验报告课程名称《数据库系统原理》课程基本实验实验名称 E-R建模与关系表转换计科院05402班姓名宋莹学号 051014 教师______ 成绩_________教师评语:2008年4月16日实验目的:1.理解和掌握E-R图的基本概念。

2.培养根据实际应用领域数据对象描述,抽取数据对象特征、关联关系等信息,设计数据库概念结构的能力。

实验内容:根据数据需求描述抽象出E-R图阅读《GSM移动通信网络配置数据库》课程实验背景资料-08-v3.doc,根据GSM 的基本概念,分析其中的数据需求,将其描述抽象成实体和联系,并确定实体和联系的属性,特别要注意标明其主键和外键等约束关系,最终形成E-R图。

实验环境:硬件配置:一台笔记本电脑,windows XP系统。

软件配置:采用IBM DB2 Express-C数据库管理系统作为实验平台。

参与人员:宋莹。

实验步骤及结果分析:1.根据数据需求描述抽象出E-R图阅读《GSM移动通信网络配置数据库》课程实验背景资料-08-v3.doc,根据GSM 的基本概念,分析其中的数据需求,将其描述抽象成实体和联系,并确定实体和联系的属性,特别要注意标明其主键和外键等约束关系,最终形成E-R图。

2.将E-R图转化为逻辑模式(有阴影的表示外键)cell(CellID,BtsName,AreaName,LAC,Longitude,Latitude,Direction,Radious,Bcch)BTS(BtsName,BscId,Longitude,Latitude,Altitude,BtsCompany,BtsPower)antenna(CellID,AntennaHigh,HalfPAngle,MaxAttenuation,Gain,AntTilt,Pt,MsPwr)BSC(BscId,BscName,BscCompany,Longitude,Latitude,MscID)Neighbor(相邻)(CellId,AdjcellId,CellLac,Adjcelllac)MS(IMEI,MSISDN,UserName,MSCompany,gsmMspSense,gsmMsHeight,gsmMspFout,MZONE,Cell Id)test(KeyNum,CellID,Latitude,Longitude,RxLev)MSC(MscID,MscName,MscCompany,MscLongitude,MscLatitude,MscAltitude)data(DATE,TIME,CELLID,nTCH,traff,rate,thtraff,callnum,congsnum,callcongs)3.将E-R图转换为数据库物理结构。

北邮数据结构实验报告实验三哈夫曼

北邮数据结构实验报告实验三哈夫曼

北邮数据结构实验报告实验三哈夫曼数据结构实验报告实验名称:实验三——哈夫曼编/解码器的实现学⽣姓名:侯在鹏班级: 2012211120班内序号: 13学号:2012210583⽇期:2013年12⽉10⽇1.实验要求利⽤⼆叉树结构实现赫夫曼编/解码器。

基本要求:1、初始化(Init):能够对输⼊的任意长度的字符串s进⾏统计,统计每个字符的频度,并建⽴赫夫曼树2、建⽴编码表(CreateTable):利⽤已经建好的赫夫曼树进⾏编码,并将每个字符的编码输出。

3、编码(Encoding):根据编码表对输⼊的字符串进⾏编码,并将编码后的字符串输出。

4、译码(Decoding):利⽤已经建好的赫夫曼树对编码后的字符串进⾏译码,并输出译码结果。

5、打印(Print):以直观的⽅式打印赫夫曼树(选作)6、计算输⼊的字符串编码前和编码后的长度,并进⾏分析,讨论赫夫曼编码的压缩效果。

测试数据:I love data Structure, I love Computer。

I will try my best to study data Structure.提⽰:1、⽤户界⾯可以设计为“菜单”⽅式:能够进⾏交互。

2、根据输⼊的字符串中每个字符出现的次数统计频度,对没有出现的字符⼀律不⽤编码。

2. 程序分析2.1 存储结构程序实现了基本的编解码功能输⼊字符串选择⼯作⽬标编码解码相关树,表显⽰编码上根节点向下,左0右1根据不同字符在尾端相应排位,获得⾃⼰的编码,存储。

解码上依次读取数据0或1,循序寻找,最后在存储中找到对应编码的字符,输出再重新读取下⼀数字开始的数码在哈夫曼树编码这个程序中,所有数据⽤的存储结构都是顺序存储结构,其中包括顺序表和树(三叉树)树的存储结构如下:(输⼊的字符串为assddddffffffffgggggggggggggggg)上结构图中,填充为黄⾊的部分为写⼊内存中的部分。

每⼀⾏的部分为数组的下标,左边部分为所定义的结构的成员。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学姐们倾情奉献~跪安吧少年少女们!北京邮电大学实验报告课程名称数据库系统原理实验内容实验(三)数据查询实验班级姓名指导老师成绩_________XXXX年XX月XX日实验三数据查询实验实验目的通过对实验二中建立的数据库关系表和视图的各种查询的操作,加深对SQL语言和Transact SQL查询语言的了解,掌握相关查询语句的语法和使用方法。

实验内容数据库关系表查询:(1)简单的查询操作,包括单表的查询、选择条件、结果排序等的练习;(2)多表的连接查询,包括等值连接、自然连接等;(3)复杂的查询操作,包括使用分组函数等库函数的查询操作;(4)练习带有IN、比较符的嵌套查询。

具体内容包括:1.简单查询:(1) 查询班号为g00401班的学生的学号和姓名;(2) 查询“数据库开发技术”课程的学分;(3) 查询选修了课程编号为“dep04_s003”的学生的学号和成绩,并将成绩按降序输出;(4) 查询学号为“g9940205”的学生选修的课程编号和成绩;(5) 查询选修了课程编号为“dep04_s001”且成绩高于85分的学生的学号和成绩。

2.在多表连接的查询实验中,在SQL SERVER提供的交互式语言环境下用Transact SQL 语句完成以下查询操作:(1)查询选修了课程编号为“dep04_s002”且成绩高于85分的学生的学号、姓名和成绩;(2)查询所有学生的学号、姓名、选修的课程名称和成绩;(3)查询计算机科学系林红同学选修的课程名称、学分和成绩。

(考试成绩>=60有学分,否则无学分。

)3.在复杂查询实验中,在SQL SERVER提供的交互式语言环境下用Transact SQL语句完成以下查询操作:(1)查询至少选修了三门课程的学生的学号和姓名;(2)查询选修课程号为“dep04_b001”的学生的平均成绩;(3)查询所有学生的学号和他选修课程的最高成绩,要求他的选修课程中没有成绩为空的。

(4)查询严为老师2001/2002学年教的软件开发技术课程的最高成绩及此学生的学号、姓名、班级。

(5)查询数据库开发技术课程用过的教材名称,作者和出版社。

(6)查询计算机科学系讲授过数据库开发技术的老师姓名和职称。

4.在嵌套查询实验中,在SQL SERVER提供的交互式语言环境下用Transact SQL语句完成以下查询操作,要求写嵌套查询语句:(1)查询选修了电磁波工程的学生的学号和姓名;(2)查询没有选修电磁波工程的学生的学号和姓名;(3)查询至少选修了学号为“g9940201”的学生所选修的所有课程的学生的学号和姓名。

5.建立如下视图:学生选修课程信息视图,包括以下内容:1)学生学号、姓名、所在系、授课老师姓名、课程名称、课程教材名称、出版社、学分、选课成绩2)修改以上视图,增加学生所在班级信息。

3)对以上视图进行相关的查询操作:(1) 查询选修了计算机基础的学生的学号和成绩;(2) 查询所有学生的学号、姓名、选修的课程名称和成绩;(3) 查询选修了乔红老师课程的学生的学号和姓名、课程名称。

实验要求(1)分别用Enterprise Manager和Transact_SQL语句完成以上操作(2)要求学生独立完成以上内容。

(3)实验完成后完成要求的实验报告内容。

实验步骤1.简单查询:(1) 查询班号为g00401班的学生的学号和姓名;实验结果及代码如下;(2) 查询“数据库开发技术”课程的学分;实验结果及代码如下;(3) 查询选修了课程编号为“dep04_s003”的学生的学号和成绩,并将成绩按降序输出;实验结果及代码如下;(4) 查询学号为“g9940205”的学生选修的课程编号和成绩;实验结果及代码如下;(5) 查询选修了课程编号为“dep04_s001”且成绩高于85分的学生的学号和成绩。

实验结果及代码如下;2.在多表连接的查询实验中,在SQL SERVER提供的交互式语言环境下用Transact SQL语句完成以下查询操作:(1)查询选修了课程编号为“dep04_s002”且成绩高于85分的学生的学号、姓名和成绩;实验结果及代码如下;(2)查询所有学生的学号、姓名、选修的课程名称和成绩;实验结果及代码如下;(3)查询计算机科学系林红同学选修的课程名称、学分和成绩。

(考试成绩>=60有学分,否则无学分。

)实验结果及代码如下;3.在复杂查询实验中,在SQL SERVER提供的交互式语言环境下用Transact SQL语句完成以下查询操作:(1)查询至少选修了三门课程的学生的学号和姓名;实验结果及代码如下;(2)查询选修课程号为“dep04_b001”的学生的平均成绩;实验结果及代码如下;(3)查询所有学生的学号和他选修课程的最高成绩,要求他的选修课程中没有成绩为空的。

实验结果及代码如下;(4)查询严为老师2001/2002学年教的软件开发技术课程的最高成绩及此学生的学号、姓名、班级。

实验结果及代码如下;(5)查询数据库开发技术课程用过的教材名称,作者和出版社。

实验结果及代码如下;(6)查询计算机科学系讲授过数据库开发技术的老师姓名和职称。

实验结果及代码如下;4.在嵌套查询实验中,在SQL SERVER提供的交互式语言环境下用Transact SQL语句完成以下查询操作,要求写嵌套查询语句:(1)查询选修了电磁波工程的学生的学号和姓名;实验结果及代码如下;(2)查询没有选修电磁波工程的学生的学号和姓名;实验结果及代码如下;(3)查询至少选修了学号为“g9940201”的学生所选修的所有课程的学生的学号和姓名。

实验结果及代码如下;5.建立如下视图:学生选修课程信息视图,包括以下内容:1)学生学号、姓名、所在系、授课老师姓名、课程名称、课程教材名称、出版社、学分、选课成绩在对象资源管理器完成以下内容:使用T-SQL语言操作,代码如下:Createview view2(student_id,student_name,department_name,teacher_n ame,course_name,book_name,publish_company,credit,grade)asselectdistinct student.student_id,student.student_name,departmen t_name,teacher_name,course_name,book_name,publish_company,student_course.credit,stude nt_course.gradefrom student,course,department,student_course,teacher,teacher_cour se_class,book,classwherestudent.student_id=student_course.student_idand student.class_id=class.class_idand class.department_id=department.department_id and student_course.course_id=course.course_idand course.book_id=book.book_idand teacher.teacher_id=teacher_course_class.teacher_idand teacher_course_class.course_id=course.course_id视图如下:2)修改以上视图,增加学生所在班级信息。

代码如下:alterview view2(student_id,student_name,department_name,teacher_na me,course_name,book_name,publish_company,credit,grade,class_id) ASSELECTDISTINCT student.student_id,student_name,department_name,teache r_name,course_name,book_name,publish_company,student_course.credi t,student_course.grade,student.class_idFROMstudent,student_course,course,teacher,teacher_course_class,book,d epartment,classWHERE student.student_id=student_course.student_idand student.class_id=class.class_idand class.department_id=department.department_idand student_course.course_id=course.course_idand course.book_id=book.book_idand teacher.teacher_id=teacher_course_class.teacher_idand teacher_course_class.course_id=course.course_id3)对以上视图进行相关的查询操作:(1) 查询选修了计算机基础的学生的学号和成绩;(2) 查询所有学生的学号、姓名、选修的课程名称和成绩;使用TSQL语言代码如下:select student_id,student_name,course_name,gradefrom view2结果如下:(3) 查询选修了乔红老师课程的学生的学号和姓名、课程名称。

代码如下:selectstudent_id,student_name,course_namefrom st_course1where teacher_name = '乔红';查询结果为空使用对象资源管理器结果如下:实验总结()在本次实验中,主要是使用SQL查询语言对数据库关系表进行了一系列查询操作,其中包括简单的查询操作,多表的连接查询,复杂的查询操作以及有IN和比较符的嵌套查询。

在实验中发现的问题有:1.复杂查询实验中,一开始由于没有熟悉group by的用法导致查询结果不正确。

2.嵌套查询由于所属的表的关系没有梳理正确,而导致查询结果不正确。

从实验中我学到了相关查询语句的正确使用方法。

除此之外,还练习了视图的建立,查询,删除以及修改,对数据库的掌握又多了一分。

实验总结()本次实验中,实践了数据库的各种查询,主要是使用了TSQL语言,也用对象资源管理器进行了查询。

相关文档
最新文档