HIT软件学院数据库实验1
- 格式:doc
- 大小:330.26 KB
- 文档页数:18
南阳理工学院数据结构上机实验指导书(2011版)软件学院·软件工程教研室2011.3目录实验1 线性表应用 (2)实验2 栈和队列的应用 (2)实验3 线性表应用 (3)实验4 图论及其应用 (4)实验5 查找 (5)实验6 排序 (5)实验1 线性表应用一、实验目的1.了解和掌握线性表顺序存储和链式存储在计算机中的表示,基本操做在计算机中的实现。
2.了解和掌握线性表顺序存储和链式存储在计算机中的表示,基本操做在计算机中的实现。
3.能够利用线性表结构对实际问题进行分析建模,利用计算机求解。
4.能够从时间和空间复杂度的角度综合比较线性表两种存储结构的不同特点及其适用场合。
二、实验内容及步骤1.利用程序设计语言分别实现顺序表和链表的抽象数据类型。
2.掌握程序分文件(头文件和实现文件)书写的方式。
3.分别用顺序表和链表实现课本算法2.2:合并两个非递减有序序列,并对其时间性能做出分析。
实验2 栈和队列的应用一、实验目的1.掌握栈和队列这两种抽象数据类型的特点,并能在相应的应用问题中正确选用它们。
2.熟练掌握栈类型的两种实现方法。
3.熟练掌握循环队列和链队列的基本操作实现算法。
二、实验内容及步骤1.用程序设计语言实现栈和队列的抽象数据类型。
2.在第一题的基础上完成以下选择:选择一:1)设计并实现括号匹配算法。
2)用队列实现在屏幕上打印杨辉三角。
选择二:分别用栈和队列实现迷宫问题求解。
选择三:分别用栈和队列实现一个列车调度系统。
实验3 线性表应用一、实验目的1.领会并理解二叉树的类型定义。
2.熟练掌握二叉树的主要特性,。
3.熟练掌握二叉树的各种遍历算法,并能灵活运用遍历算法实现二叉树的其它操作。
4.熟练掌握二叉树和树的各种存储结构及其建立的算法。
5.了递归算法的实现过程。
二、实验内容及步骤1.实现二叉树的抽象数据类型。
2.构造一棵二叉树并用递归实现其先序、中序、后序遍历算法并验证。
3.用非递归算法实现二叉树的中序遍历。
(5)重新编写一个setup.s,然后将其中的显示的信息改为:“Now we are in SETUP”。
再次编译,重新用make命令生成BootImage,结合提示信息和makefile文修改build.c,具体将setup.s改动如下:mov cx,#27mov bx,#0x0007 ! page 0, attribute 7 (normal)mov bp,#msg1mov ax,#0x1301 ! write string, move cursorint 0x10dieLoop:j dieLoopmsg1:.byte 13,10,13,10.ascii "Now we are in SETUP".byte 13,10,13,10将build.c改动如下:if(strcmp("none",argv[3]) == 0)//添加判断return 0;if ((id=open(argv[3],O_RDONLY,0))<0)die("Unable to open 'system'");// if (read(id,buf,GCC_HEADER) != GCC_HEADER)// die("Unable to read header of 'system'");// if (((long *) buf)[5] != 0)// die("Non-GCC header of 'system'");for (i=0 ; (c=read(id,buf,sizeof buf))>0 ; i+=c )if (write(1,buf,c)!=c)die("Write call failed");close(id);fprintf(stderr,"System is %d bytes.\n",i);if (i > SYS_SIZE*16)die("System is too big");return(0);(6)验证:用make是否能成功生成BootImage,运行run命令验证运行结果。
实验名称:Java面向对象编程实验实验日期:2023年3月15日实验地点:软件学院实验室一、实验目的1. 理解Java面向对象编程的基本概念,包括类、对象、继承、多态等。
2. 掌握Java面向对象编程的基本语法和操作。
3. 能够运用面向对象编程思想设计简单的Java程序。
二、实验内容1. 创建一个名为“Student”的类,包含以下属性:姓名(name)、年龄(age)、性别(gender)。
2. 在“Student”类中定义一个构造方法,用于初始化对象的属性。
3. 定义一个名为“printInfo”的方法,用于打印学生的信息。
4. 创建两个“Student”对象,并分别设置其属性。
5. 调用“printInfo”方法,打印两个学生的信息。
三、实验步骤1. 打开IDEA软件,创建一个名为“Experiment1”的新项目。
2. 在项目中创建一个名为“Student”的Java类。
3. 在“Student”类中定义属性:name、age、gender。
4. 定义构造方法,初始化属性。
5. 定义“printInfo”方法,打印学生信息。
6. 在主类中创建“Student”对象,设置属性。
7. 调用“printInfo”方法,打印学生信息。
四、实验代码public class Student {private String name;private int age;private String gender;public Student(String name, int age, String gender) { = name;this.age = age;this.gender = gender;}public void printInfo() {System.out.println("姓名:" + name + ",年龄:" + age + ",性别:" + gender);}public static void main(String[] args) {Student student1 = new Student("张三", 20, "男");Student student2 = new Student("李四", 21, "女");student1.printInfo();student2.printInfo();}}```五、实验结果与分析1. 编译并运行程序,控制台输出如下信息:```姓名:张三,年龄:20,性别:男姓名:李四,年龄:21,性别:女```2. 通过本次实验,掌握了Java面向对象编程的基本概念和操作,能够运用面向对象编程思想设计简单的Java程序。
一、实训背景随着信息技术的飞速发展,数据库技术已成为现代社会的重要基础设施。
为了提高我们的数据库应用能力,我校组织了一次数据库实训活动。
本次实训旨在让学生了解数据库的基本原理、掌握数据库设计方法、熟悉数据库开发工具,并培养学生的实际操作能力。
二、实训目的1. 掌握数据库的基本概念和原理;2. 学会使用数据库设计工具进行数据库设计;3. 熟悉数据库开发工具,能够进行数据库编程;4. 提高学生的实际操作能力,培养团队协作精神。
三、实训内容1. 数据库基本概念与原理在实训初期,我们学习了数据库的基本概念,如数据、数据库、数据库管理系统等。
同时,我们还了解了数据库的三级模式结构,包括模式、外模式和内模式。
通过学习,我们对数据库有了初步的认识。
2. 数据库设计方法在实训过程中,我们学习了数据库设计的基本方法,包括需求分析、概念设计、逻辑设计和物理设计。
通过实际操作,我们掌握了如何使用E-R图进行概念设计,如何使用关系模型进行逻辑设计,以及如何使用数据库管理系统进行物理设计。
3. 数据库开发工具我们学习了数据库开发工具的使用,包括SQL Server Management Studio、SQL Server Express等。
通过这些工具,我们可以方便地进行数据库的创建、修改、查询等操作。
4. 数据库编程在实训过程中,我们学习了SQL语言,掌握了如何使用SQL进行数据库编程。
我们学习了SELECT、INSERT、UPDATE、DELETE等基本操作,以及如何使用JOIN、WHERE、ORDER BY等语句进行复杂查询。
5. 项目实践为了提高我们的实际操作能力,我们进行了一个项目实践。
我们以“学生信息管理系统”为例,进行了数据库的设计、开发与实现。
在项目实践中,我们遇到了各种问题,通过团队合作,我们成功地解决了这些问题。
四、实训成果1. 掌握了数据库的基本概念和原理;2. 学会了使用数据库设计工具进行数据库设计;3. 熟悉了数据库开发工具,能够进行数据库编程;4. 提高了实际操作能力,培养了团队协作精神。
一、实训目的本次数据库实训的主要目的是通过实际操作,使学生深入了解数据库的基本概念、原理和操作方法,掌握SQL语言的使用,提高数据库设计和实施的能力。
同时,通过本次实训,培养学生严谨的工作态度和团队协作精神。
二、实训环境1. 操作系统:Windows 102. 数据库管理系统:MySQL 5.73. 开发工具:MySQL Workbench三、实训内容1. 数据库设计2. 数据库创建与操作3. SQL语言基础4. 数据库查询5. 数据库安全与权限管理6. 数据库备份与恢复四、实训过程1. 数据库设计(1)需求分析:以学生信息管理系统为例,分析系统需求,确定数据库表结构。
(2)概念结构设计:使用E-R图描述实体关系,确定实体、属性和关系。
(3)逻辑结构设计:根据概念结构设计,将E-R图转换为关系模型,确定表结构。
(4)物理结构设计:选择合适的存储引擎,设计表空间、索引等。
2. 数据库创建与操作(1)创建数据库```sqlCREATE DATABASE student_info;```(2)创建表```sqlCREATE TABLE student (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50) NOT NULL,age INT NOT NULL,gender ENUM('male', 'female') NOT NULL,class_id INT NOT NULL,FOREIGN KEY (class_id) REFERENCES class(id));CREATE TABLE class (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50) NOT NULL);```(3)插入数据```sqlINSERT INTO student (name, age, gender, class_id) VALUES ('张三', 20, 'male', 1);INSERT INTO class (name) VALUES ('计算机科学与技术');```3. SQL语言基础(1)查询语句```sqlSELECT FROM student WHERE age > 20;```(2)更新语句```sqlUPDATE student SET age = 21 WHERE name = '张三';```(3)删除语句```sqlDELETE FROM student WHERE name = '李四';```4. 数据库查询(1)多表查询```sqlSELECT , FROM student JOIN class ONstudent.class_id = class.id;```(2)子查询```sqlSELECT FROM student WHERE class_id IN (SELECT id FROM class WHERE name = '计算机科学与技术');```5. 数据库安全与权限管理(1)创建用户```sqlCREATE USER 'user1'@'localhost' IDENTIFIED BY 'password';```(2)授权```sqlGRANT SELECT, INSERT, UPDATE, DELETE ON student_info. TO'user1'@'localhost';```(3)撤销权限```sqlREVOKE ALL PRIVILEGES ON student_info. FROM 'user1'@'localhost'; ```6. 数据库备份与恢复(1)备份```sqlmysqldump -u root -p student_info > student_info_backup.sql```(2)恢复```sqlmysql -u root -p student_info < student_info_backup.sql```五、实训总结通过本次数据库实训,我掌握了以下知识和技能:1. 数据库的基本概念、原理和操作方法;2. SQL语言的使用;3. 数据库设计、创建与操作;4. 数据库查询、安全与权限管理;5. 数据库备份与恢复。
(5)重新编写一个setup.s,然后将其中的显示的信息改为:“Now we are in SETUP”。
再次编译,重新用make命令生成BootImage,结合提示信息和makefile文修改build.c,具体将setup.s改动如下:mov cx,#27mov bx,#0x0007 ! page 0, attribute 7 (normal)mov bp,#msg1mov ax,#0x1301 ! write string, move cursorint 0x10dieLoop:j dieLoopmsg1:.byte 13,10,13,10.ascii "Now we are in SETUP".byte 13,10,13,10将build.c改动如下:if(strcmp("none",argv[3]) == 0)//添加判断return 0;if ((id=open(argv[3],O_RDONLY,0))<0)die("Unable to open 'system'");// if (read(id,buf,GCC_HEADER) != GCC_HEADER)// die("Unable to read header of 'system'");// if (((long *) buf)[5] != 0)// die("Non-GCC header of 'system'");for (i=0 ; (c=read(id,buf,sizeof buf))>0 ; i+=c )if (write(1,buf,c)!=c)die("Write call failed");close(id);fprintf(stderr,"System is %d bytes.\n",i);if (i > SYS_SIZE*16)die("System is too big");return(0);(6)验证:用make是否能成功生成BootImage,运行run命令验证运行结果。
一、引言随着信息技术的飞速发展,数据库技术已成为现代信息技术的基础和核心。
为了提高学生的实际操作能力和综合素质,我们开展了数据库实训课程。
本次实训旨在使学生深入了解数据库的基本原理、设计方法及实际应用,培养学生的数据库设计与开发能力。
以下是对本次数据库实训的综合报告。
二、实训目的1. 理解数据库的基本概念、原理及体系结构。
2. 掌握数据库设计的基本方法,包括需求分析、概念设计、逻辑设计和物理设计。
3. 熟练运用SQL语言进行数据库的创建、查询、更新和删除等操作。
4. 学会使用数据库开发工具,如MySQL Workbench、PowerDesigner等。
5. 培养学生团队协作能力和沟通能力。
三、实训内容1. 数据库基础知识:数据库的基本概念、数据模型、关系代数、SQL语言等。
2. 数据库设计:需求分析、概念设计、逻辑设计、物理设计等。
3. 数据库开发工具:MySQL Workbench、PowerDesigner等。
4. 数据库应用:使用SQL语言进行数据库操作,如创建、查询、更新和删除等。
5. 数据库项目实战:以小组为单位,完成一个数据库项目的开发。
四、实训过程1. 理论学习:首先,通过课堂讲解和自学,掌握数据库的基本概念、原理及体系结构。
2. 实践操作:在教师的指导下,使用MySQL Workbench、PowerDesigner等工具进行数据库设计,并运用SQL语言进行数据库操作。
3. 项目实战:以小组为单位,根据项目需求进行数据库设计、开发,并完成项目答辩。
五、实训成果1. 理论知识:学生掌握了数据库的基本概念、原理及体系结构,能够熟练运用SQL语言进行数据库操作。
2. 实践能力:学生能够运用所学知识进行数据库设计、开发,具备一定的数据库应用能力。
3. 团队协作:学生在项目实战中学会了与他人沟通、协作,提高了团队协作能力。
六、实训总结1. 认识到数据库技术的重要性:数据库技术在现代社会中具有广泛的应用,掌握数据库技术对于学生未来的职业发展具有重要意义。
天津师范大学软件学院数据库原理实践课程实验卡实验序号: 1 实验室名称:计信学院实验室实验名称数据库和基本表的创建操作实验类型验证计划学时 2 人组数 1 首开日期面向专业(逐个填写)主要配置仪器设备名称设备规格型号每组台件数1.计算机 12.投影仪 1消耗材料名称每组消耗量消耗材料名称每组消耗量实验项目简介实验目的:通过上机实验利用图形界面的方法创建数据库和基本表,为今后操作打下基础。
实验内容:1、利用图形界面的方法创建名为s-t的数据库,参数全部使用默认。
2、在s-t数据库中,用图形界面创建下列关系表。
Student表列名说明数据类型约束Sno 学号普通编码定长字符串,长度为7 主键Sname 姓名普通编码定长字符串,长度为10 非空Ssex 性别普通编码定长字符串,长度为2 取值范围:{男,女} Sage 年龄整形Dept 所在系普通编码定长字符串,长度为20Course表列名说明数据类型约束Cno 课程号普通编码定长字符串,长度为10 主键Cname 课程名普通编码定长字符串,长度为20 非空Credit 学分整型大于0Semester 开课学期整型SC表列名说明数据类型约束Sno 学号普通编码定长字符串,长度为7 主键,引用Student表的外键Cno 课程号普通编码定长字符串,长度为10 主键,引用Course表的外键Grade 成绩整型取值范围:0-10013、向已创建的二维表输入数据。
Student表数据Sno Sname Sex Sage Dept0811101 李勇男21 计算机系0811102 刘晨男20 计算机系0811103 王敏女20 计算机系0811104 张小红女19 计算机系0821101 张立男20 信息管理系0821102 吴宾女19 信息管理系0821103 张海男20 信息管理系0831101 钱小平女21 通信工程系0831102 王大力男20 通信工程系0831103 张姗姗女19 通信工程系Course表数据Cno Cname Credit SemesterC001 高等数学 4 1C002 大学英语 3 1C003 大学英语 3 2C004 计算机文化学 2 2C005 Java 2 3C006 数据库基础 4 5C007 数据结构 4 4C008 计算机网络 4 4SC表数据Sno cno grade0811101 C001 960811101 C002 800811101 C003 840811101 C005 620811102 C001 920811102 C002 900811102 C003 840811102 C004 760811102 C005 850811102 C006 730811102 C007 Null0811103 C001 500811103 C004 8020831101 C001 500831101 C004 800831102 C007 Null0831103 C004 780831103 C005 650831103 C007 Null4、将数据库备份,以便今后使用。
哈尔滨工业大学
<<数据库系统>>
实验报告之一
(2014年度春季学期)
实验一交互式SQL语言
一、实验目的
●掌握SQL语句的语法
●着重熟悉掌握利用SQL编写Select查询的方法
●熟悉SQLite的用法
二、实验内容
●1) 双击打开sqlite3.exe,该程序为SQLite数据库管理系统
●2) 利用.help查看SQLite支持的控制台系统命令。
注意系统命令结尾处
没有结束符“;”
●3) 阅读.help中对.databases 命令的说明,并查看输出结果
●4) 阅读.help中对.open命令的说明,并使用该命令创建一个数据库(名
字任意)后缀名统一为“.db3”(可以没有后缀名,但不推荐)
●5) 再次运行.databases 命令,与步骤3的输出结果对比
●6) 阅读.help中对.tables命令的说明,并使用该命令查看当前数据库的所
有表
●7) 创建满足要求的关系表(使用create table)
●表一
●表名:College(存储大学的信息)
●属性:cName(字符串存储的大学名字),state(字符串格式的大学所在
州),enrollment(整数形式的大学入学学费)
●表二
●表名:Student(存储学生的信息)
●属性:sID(整数形式的学号),sName(字符串形式的学生名字),GPA
(小数形式的成绩),sizeHS(整数形式的所在高中规模)
●表三
●表名:Apply(存储学生申请学校的信息)
●属性:sID(整数形式的学号),cName(字符串形式的大学名字),major
(字符串形式的专业名字),decision(字符串形式的申请结果)
●8)利用.tables查看当前数据库中的表,对比步骤6中的运行结果
●9) 利用如下命令,将存储在txt文件中的元组导入数据库的关系中●.separator ","
●.import dbcollege.txt College
●.import dbstudent.txt Student
●.import dbapply.txt Apply
●10) 查看导入后的College、Student、Apply表中的所有内容(使用select)
●11) 找出所有分数大于3.6的学生的ID、名字和分数
●12) 找出所有分数大于3.6的学生的ID、名字
●13) 查询所有申请信息中姓名、学校的对
●14) 查询所有申请信息中姓名、学校的对,去除重复元组
●15) 查询所有所处高中规模小于1000、申请了斯坦福的计算机系的学生、
其分数、及申请结果
●16) 查询学生申请CS的学校中入学费用大于20000的学校名字(去除重
复)
●17) 查询学生申请学校的所有信息(输出结果按照学生分数降序排列)
●18) 查询学生申请学校的所有信息(输出结果按照学生分数降序排列,
对于相同分数的学生,按照入学费用升序排列)
●19) 申请了与生物相关的专业的学生ID及专业信息
●20) 输出Student和College的所有可能组合
●21) 查询学生的所有信息,并为每一个学生计算一个新的分数newGPA
(按照GPA同sizeHS的关系换算出来的新分数)newGPA=GPA×(sizeHS ÷1000)
●22) 查询GPA相同的学生的对
●23) 查询GPA相同的学生的对(去除类似“张三,张三”这样的组合)
24) 输出大学名字同学生名字的集合
●25) 输出一个关系,其中只有一个属性name,name存储了大学的名字或
者学生的名字
●26) 将上一个步骤中的结果排序(按照字母序)
●27) 输出既申请了CS专业又申请了EE专业的学生的ID
●28) 输出申请了CS专业但是没有申请EE专业的学生的ID
●29) 查询申请了CS专业的学生的名字与ID(用子查询实现)
●30) 查询申请了CS专业的学生的名字
●31) 不用集合差操作,查询申请了CS专业但是没有申请EE专业的学生的
ID
●32) 查询最贵的大学的名字
●33) 查询分数最高的学生的名字
●34) 查询分数最高的同学申请的学校的名字及其所在州
●35) 查询学生名字及其选取专业的名字的信息(用连接实现)
●36) 查询来自人数少于1000的高中的、申请了斯坦福的计算机专业的学
生的名字和GPA(用连接实现,写出至少三种不同的写法)
●37) 将三个表自然连接,并输出所有属性
●38) 对比如下查询结果
●select sName, sID, cName, major
●from Student inner join Apply using(sID);
●select sName, sID, cName, major
●from Student left outer join Apply using(sID);
●select sName, sID, cName, major
●from Student natural left outer join Apply;
●39) 输出所有学生的平均分
●40) 申请计算机系的学生的最低分
●41) 求申请计算机系学生的平均分
●42) 求入学费用大于15000的学校的个数
●43) 计算申请Cornell大学的学生数
●44) 求申请CS的学生平均分比没有申请CS的学生平均分高出多少●45) 求每个学校被申请的次数
●46) 求每个州大学收费的和
●47) 求每个学校、每个专业申请的最高分、最低分
●48) 求每个学生申请学校的数目
●49) 验证如下查询的结果,并说明其语义
●select Student.sID, count(distinct cName)
●from Student, Apply
●where Student.sID = Apply.sID
●group by Student.sID
●union
●select sID, 0
●from Student
●where sID not in (select sID from Apply);
语义:每个学生申请学校的数目。
●50) 求查找申请数少于5的大学
四、实验心得
通过本次实验,我已经能基本掌握基本SQL语句的用法,了解并能正常使用SQL语句,特别是SQL中的select相关语句。
同时,我还熟悉了SQLite 的使用方法,并且能正常使用SQLite。