天津理工大学数据库(李玉坤)实验四
天津理工大学数据结构实验报告4
附录(可包括源程序清单或其它说明)#include <stdio.h>#include <string>#define MAX_NAME 10#define MAX_INFO 80typedef char InfoType;typedef char V ertexType[MAX_NAME]; // 字符串类型#define MAX_VERTEX_NUM 20typedef enum{unvisited,visited}VisitIf;typedef struct EBox{VisitIf mark; // 访问标记int ivex,jvex; // 该边依附的两个顶点的位置struct EBox *ilink,*jlink; // 分别指向依附这两个顶点的下一条边InfoType *info; // 该边信息指针}EBox;typedef struct{V ertexType data;EBox *firstedge; // 指向第一条依附该顶点的边}V exBox;typedef struct{V exBox adjmulist[MAX_VERTEX_NUM];int vexnum,edgenum; // 无向图的当前顶点数和边数}AMLGraph;typedef int QElemType;typedef struct QNode{// 单链表的链式存储结构QElemType data; //数据域struct QNode *next; //指针域}QNode,*QueuePtr;typedef struct{QueuePtr front,//队头指针,指针域指向队头元素rear; //队尾指针,指向队尾元素}LinkQueue;// 若G中存在顶点u,则返回该顶点在无向图中位置;否则返回-1int LocateV ex(AMLGraph G,V ertexType u){int i;for(i=0;i<G.vexnum;++i)if(strcmp(u,G.adjmulist[i].data)==0)return i;return -1;}int CreateGraph(AMLGraph *G){ // 采用邻接表存储结构,构造无向图G int i,j,k,l,IncInfo;char s[MAX_INFO];V ertexType va,vb;EBox *p;printf("请输入无向图G的顶点数,边数: ");scanf("%d,%d",&(*G).vexnum,&(*G).edgenum);printf("请输入%d个顶点的值(<%d个字符):\n",(*G).vexnum,MAX_NAME);for(i=0;i<(*G).vexnum;++i){ // 构造顶点向量scanf("%s",(*G).adjmulist[i].data);(*G).adjmulist[i].firstedge=NULL;}printf("请顺序输入每条边的两个端点(以空格作为间隔):\n");for(k=0;k<(*G).edgenum;++k){// 构造表结点链表scanf("%s%s%*c",va,vb); // %*c吃掉回车符i=LocateV ex(*G,va); // 一端j=LocateV ex(*G,vb); // 另一端p=(EBox*)malloc(sizeof(EBox));p->mark=unvisited; // 设初值p->ivex=i;p->jvex=j;p->info=NULL;p->ilink=(*G).adjmulist[i].firstedge; // 插在表头(*G).adjmulist[i].firstedge=p;p->jlink=(*G).adjmulist[j].firstedge; // 插在表头(*G).adjmulist[j].firstedge=p;}return 1;}V ertexType* GetVex(AMLGraph G,int v){ // 返回v的值if(v>=G.vexnum||v<0)exit(0);return &G.adjmulist[v].data;}// 返回v的第一个邻接顶点的序号。
天津理工大学计算机专业数据库实验二
实验报告学院(系)名称:计算机与通信工程学院姓名范学号2009 专业计算机科学与技术班级中加4班实验项目数据库控制与编程课程名称数据库系统概论课程代码实验时间2011年11月29日实验地点主校区7—219批改意见成绩教师签字:一.实验目的以一种开发环境为例,使学生初步掌握通过编程的方式对数据库进行操作,为进行数据库课程设计做准备。
二.实验工具软硬件环境编写访问数据库的应用程序来对数据库进行各种数据操作,编程工具由导师指定,学生可以使用指导老师指定的工具,也可自己选择编程工具。
软件环境:Windows 2000MS SQL Server硬件环境:P4 2.4GHz 256内存三.实验内容和要求所有的SQL操作均在自己建立的TEMP数据库里进行,根据以下要求认真填写实验报告,并且提交源程序,保证可正确编译运行。
使用SQL对数据进行完整性控制,用实验验证:当操作违反了完整性约束条件的时候,系统是如何处理的。
熟悉存储过程的建立及使用,熟悉带输入参数和输出参数的存储过程。
I.使用SQL对数据进行完整性控制,用实验验证:当操作违反了完整性约束条件的时候,系统是如何处理的。
II.熟悉存储过程的建立及使用,熟悉带输入参数和输出参数的存储过程。
a)查询学生表中的所有学生,并实现调用。
b)修改学号为@sno学生的姓名,性别,年龄,系别,并实现调用。
c)向学生表中插入学生,并实现调用。
d)查询姓名为@sname选修的数据库课程的成绩,并实现调用。
e)查询选修了课程名为@cname并且成绩高于该门课程平均分的学生学号和成绩,并实现调用。
III.利用指定的编程语言完成一个简单程序,要求具有对数据的增加、修改和删除操作;基于一个给定的java应用程序,熟悉掌握建立ODBC和利用ODBC来凝结数据库的编程方法,建立一个应用程序,具有向学生、课程、选课表增加修改删除记录的功能,选取其中一个功能用存储过程实现。
需要接取程序运行界面。
《数据库原理》实验4
实验四:数据库综合查询一、实验目的1.掌握SELECT语句的基本语法和查询条件表示方法;2.掌握查询条件种类和表示方法;3.掌握连接查询的表示及使用;4.掌握嵌套查询的表示及使用;5.了解集合查询的表示及使用。
二、实验环境已安装SQL Server 2008 企业版的计算机;具有局域网环境,有固定IP;三、实验学时2学时四、实验要求1.了解SELECT语句的基本语法格式和执行方法;2.了解连接查询的表示及使用;3.了解嵌套查询的表示及使用;4.了解集合查询的表示及使用;5.完成实验报告;五、实验内容及步骤以数据库原理实验2数据为基础,请使用T-SQL 语句实现进行以下操作:1.查询以‘DB_’开头,且倒数第3个字符为‘s’的课程的详细情况;2.查询名字中第2个字为‘阳’的学生姓名和学号及选修的课程号、课程名;3.列出选修了‘数学’或者‘大学英语’的学生学号、姓名、所在院系、选修课程号及成绩;4.查询缺少成绩的所有学生的详细情况;5.查询与‘张力’(假设姓名唯一)年龄不同的所有学生的信息;6.查询所选课程的平均成绩大于张力的平均成绩的学生学号、姓名及平均成绩;7.按照“学号,姓名,所在院系,已修学分”的顺序列出学生学分的获得情况。
其中已修学分为考试已经及格的课程学分之和;8.列出只选修一门课程的学生的学号、姓名、院系及成绩;9.查找选修了至少一门和张力选修课程一样的学生的学号、姓名及课程号;10.只选修“数据库”和“数据结构”两门课程的学生的基本信息;11.至少选修“数据库”或“数据结构”课程的学生的基本信息;12.列出所有课程被选修的详细情况,包括课程号、课程名、学号、姓名及成绩;13.查询只被一名学生选修的课程的课程号、课程名;14.检索所学课程包含学生‘张向东’所学课程的学生学号、姓名;15.使用嵌套查询列出选修了“数据结构”课程的学生学号和姓名;16.使用嵌套查询查询其它系中年龄小于CS系的某个学生的学生姓名、年龄和院系;17.使用ANY、ALL 查询,列出其他院系中比CS系所有学生年龄小的学生;18.分别使用连接查询和嵌套查询,列出与‘张力’在一个院系的学生的信息;19.使用集合查询列出CS系的学生以及性别为女的学生名单;20.使用集合查询列出CS系的学生与年龄不大于19岁的学生的交集、差集;21.使用集合查询列出选修课程1的学生集合与选修课程2的学生集合的交集;22.思考题:按照课程名顺序显示各个学生选修的课程(如200515001 数据库数据结构数学);六、出现问题及解决办法如:某些查询操作无法执行,如何解决?1、查询以‘DB_’开头,且倒数第三个字符为‘s’的课程的详细情况select * from coursewhere cname like 'DB\_%s__'2、查询名字中第二个字为“阳”的学生姓名和学号及选修的课程号、课程名select student.sno ,student.sname ,o,cname from student,course,scwhere sname like '_阳%'and student.sno=sc.sno and o=o 3、列出选修了‘数学’或‘大学英语’的学生学号、姓名、select student.sno,sname,sdept,o,cname,grade from student,sc,coursewhere student.sno=sc.sno and o=o andsc.sno in(select sc.sno from sc,course where (cname='大学英语'or cname='数学')and o=o group by sc.sno)select student.sno,sname,sdept,cno,grade from student,scwhere Cno in (select Cno from coursewhere cname='数学'or cname='大学英语')and sc.sno=student.sno4、查询缺少成绩的所有学生的详细情况; select *from student,scwhere Grade is null and student.sno=sc.sno5、查询与‘张力’(假设姓名唯一)年龄不同的所有学生的信息; select * from student where sage <>(select sage from student where sname='张力')6、查询所选课程的平均成绩大于张力的平均成绩的学生学号、姓名及平均成绩select student.sno,sname,平均成绩=AVG(grade) from student ,scwhere student.sno=sc.sno group by student.sno,snamehaving AVG(Grade)>(select AVG(Grade)from sc,student where sname='张力'and student.sno=sc.sno)7、按照‚学号,姓名,所在院系,已修学分‛的顺序列出学生学分的获得情况。
天津理工大学数据结构实验报告3
实验(三)实验名称二叉树的遍历软件环境 Windows98/2000, VC++6.0或turbo C硬件环境PⅡ以上微型计算机实验目的 理解二叉树的逻辑特点,掌握二叉链表存储结构,掌握二茬树遍历算法的递归与非递归实现实验内容(应包括实验题目、实验要求、实验任务等)二叉树的遍历利用二叉链表作为存储结构建立一棵二叉树,每个结点中存放一种水果名(例如apple、orange、banana等,并要求从键盘输入),结点数不少于5个。
要求分别以先序、中序和后序进行遍历,输出遍历结果。
并编写一递归算法,交换该二叉树中所有结点的左、右孩子。
实验过程与实验结果(可包括实验实施的步骤、算法描述、流程、结论等)实验步骤及算法描述和流程:1. 创建二叉链表的结点存储结构及数据的输入输出函数因为每个结点所存储的数据类型为字符串,却无法使用字符串和String等数据类型,所以使用单链表作为结点所存储的数据类型。
1.1 数据的输入函数indata( )当输入的字符不为'0'时,以尾插法将数据插入单链表。
1.2 数据的输出函数直接输出单链表。
2. 生成二叉链表利用先序遍历生成二叉链表:2.1 用单链表s记录输入的数据2.2 若单链表s为空,则二叉链表结点为空,否则根节点=s,利用递归调用分别生成根节点的左子树和右子树2.3 返回二叉链表3. 先序遍历、中序遍历、后序遍历二叉链表3.1 先序遍历:访问根节点,左子树,右子树的顺序3.2 中序遍历:访问左子树,根节点,右子树的顺序3.3 后序遍历:访问左子树,右子树,根节点的顺序利用递归调用分别用以上三种顺序遍历二叉链表。
4. 交换二叉链表的左右孩子当二叉链表的结点左孩子或者右孩子都不为空时,利用递归调用,分别交换左子树很右孩子的左右孩子,最后将根节点的左右孩子指针交换。
5. 主函数5.1 调用生成二叉链表的函数,从键盘输入二叉链表的各个结点5.2 分别调用先序遍历、中序遍历、后序遍历二叉链表函数,输出所有结点5.3 交换二叉链表的左右孩子5.4 重复5.2结论: 输入各个结点:apple、pear、orange、banana、peach、grape、watermelon 先序遍历输入与输入一致 中序遍历输出:orange、pear、banana、apple、grape、peach、watermelon 后序遍历输出:orange、banana、pear、grape、watermelon、peach、apple 交换二叉树的左右孩子后 先序遍历输出:apple、peach、watermelon、grape、pear、banana、orange编程中出现的问题:输入的二叉链表左右子树必须对称,如果不对称,交换二叉树的左右子树后,程序出错,不知道出错在哪,没有调试成功。
面向论文检索的同名作者区分方法
Lee et al.[1]认为主要挑战来自于数据输入的错误,
包括检索词格式输入的错误以及输入标准的缺失, 作 者 的 同 名 问 题 以 及 出 版 地 点 缩 写 的 问 题 等 。在 这些问题中作者同名问题因其固有的难度,已经引
起数字图书馆研究者的极大关注。 在现实世界中会有这样的情形。当用户希望
中的同一个人,然而却被列为两个条目;2 ) 当选择
* 收 稿 日 期 =2016年 8 月 1 1 日,修 回 日 期 =2016年 9 月 2 5 日 基 金 项 目 :国家自然科学基金项目(编 号 : 61170027); 天津市应用基础与前沿技术研究计划(编 号 :15JCYBJC46500)
本 文 所 要 解 决 的 问 题 是 :对 于 一 个 论 文 集 ,当
N 用户输 入 作 者 名 称 时 ,将会返回所有作者中包 N 含 此 名 字 的文 章 ,本文所要解决的问题就是对
个 问 题 上 花 费 了 大 量 的 时 间 ,尝 试 了 多 种 方 法 。
Lizhu Zhou et al•提出了一种称为GHOST的解决 问题的框架[2]。 Tang Jie et al.使用了一种统一的
i 引言
随着互联网的发展,很多数字学术图书馆随之
产生,如 DBLP,CitSeer,PubMed, ACM DL, IEEE D L ,知 网 、万 方 等 。这 些 数 字 学 术 图 书 馆 为 文 献 检
数据库原理实验报告
数据库原理实验报告一、实验目的本次数据库原理实验旨在通过实际操作和实践,深入理解数据库的基本概念、原理和技术,掌握数据库设计、创建、管理和操作的方法,提高解决实际问题的能力和数据处理的技能。
二、实验环境本次实验使用的软件环境为 Microsoft SQL Server 2019,操作系统为 Windows 10。
硬件环境为一台具备 8GB 内存、Intel Core i5 处理器的计算机。
三、实验内容与步骤(一)数据库设计1、需求分析根据给定的业务场景,明确数据库需要存储的信息和数据之间的关系。
例如,对于一个学生管理系统,需要存储学生的基本信息、课程信息、成绩信息等,并且要确定这些信息之间的关联,如学生与课程的选课关系、课程与成绩的对应关系等。
2、概念设计使用 ER 图(EntityRelationship Diagram,实体关系图)对需求进行建模,清晰地表示出实体(如学生、课程)、属性(如学生的学号、姓名)和实体之间的关系(如选课关系)。
3、逻辑设计将 ER 图转换为关系模式,确定表的结构,包括表名、列名、数据类型、主键和外键等。
例如,学生表(学号,姓名,年龄,性别),课程表(课程号,课程名,学分),选课表(学号,课程号,成绩)。
(二)数据库创建1、启动 SQL Server 2019 数据库管理系统。
2、使用 CREATE DATABASE 语句创建数据库,指定数据库的名称、文件存储位置和初始大小等参数。
3、在创建的数据库中,使用 CREATE TABLE 语句创建各个表,按照逻辑设计的结果定义表的结构。
(三)数据插入1、使用 INSERT INTO 语句向表中插入数据,确保数据的完整性和准确性。
例如,向学生表中插入学生的信息:INSERT INTO Students (StudentID, Name, Age, Gender) VALUES (1, '张三', 20, '男')。
数据库实验四报告
《数据库原理与应用》实验报告实验名称:班级:学号:姓名:一、实验目的(1)了解Oracle数据库中的用户管理,模式,权限管理和角色管理。
(2)掌握为用户分配权限的方法。
(3)了解为不同用户分配不同权限的目的及原因。
二、实验过程1.用系统帐户sys登录数据库,分别创建数据库内部用户user_one和user_two,创建时自己为用户分配帐户口令。
语句:create user user_oneidentified by 123456default tablespace userstemporary tablespace tempquota unlimited on users;create user user_twoidentified by 123456default tablespace userstemporary tablespace tempquota unlimited on users;执行结果:2.为了使两位用户登录数据库请为其授予相应的权限。
语句:grant create session to user_one;grant create session to user_two;执行结果:3.授予用户user_one在自己模式下创建表的权限,在任何模式下删除表的权限,授予用户user_two可以在任何模式下创建表的权限,查询任何模式下表中数据的权限和在任何模式下创建视图的权限。
语句:grant create table,drop any table to user_one;grant create any table,create any view,select any table to user_two;执行结果:4.分别用user_one和user_two登录,写出相应的SQL语句验证为其授予的权限。
(如果建立的表中有主键约束,需要预先授予user_one和user_two用户create any index的权限。
天津理工大学数据库实验四:查询优化
实验报告学院(系)名称:计算机与通信工程学院姓名卢洪利学号20146049专业计算机科学与技术班级计算机4班实验项目实验四:查询优化课程名称数据库系统课程代码0668026实验时间2016年11月1日实验地点计算机软件实验室7-215 批改意见成绩教师签字:1.实验目的1)了解数据库查询优化方法和查询计划的概念2)学会分析查询的代价,并通过建立索引或者修改SQL语句来降低查询代价2.实验工具Fedora 25 64 bitMariaDB 10.1.19Python 3.4.53.实验内容基于教材中的student、course、SC表,通过存储过程(要求在报告中写出存储过程),插入多条元组(1万条以上),考虑不同的SQL操作,分析比较执行代价。
0.数据准备Student表中建立了10万数据,用时891.72秒。
学号从201200000开始递增到201299999,名字为STU_加长度为6的随机字符串,年龄随机生成,16~25岁,专业随机生成36种Course表中建立899条数据,用时65.88秒,先行课都为前120号的课程SC表中建立199775条数据,用时1845.29秒生成数据所用代码(Python 3):import pymysqlimport randomimport timedef random_string(length = 2):chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"str = ''if length == 2:chars = "BCEGHI"for i in range(1, length+1):str += chars[random.randint(0, len(chars)-1)]return strdef generate_name():return "STU_" + random_string(6)def generate_dept():return random_string(2)def generate_age():return random.randint(16, 25)def generate_sno(num):return 201200000 + numdef generate_sex():r = random.randint(0, 1)if r == 0:return "M"elif r == 1:return "F"def insert_student(db, cursor):for i in range(0, 100000):sno = generate_sno(i)sname = generate_name()sage = generate_age()ssex = generate_sex()sdept = generate_dept()print(sno, sname, sage, ssex, sdept)try:cursor.execute('insert into Student VALUES ("%d", "%s", "%s", "%d", "%s")' % \ (sno, sname, ssex, sage, sdept))mit()except:db.rollback()def insert_sc(db, cursor):for i in range(0, 50000):sno = generate_sno(random.randint(1, 100000))cno = random.randint(101, 999)grade = random.randint(0, 100)try:print(sno, cno, grade)cursor.execute('insert into SC VALUES ("%d", "%d", "%d")' % \(sno, cno, grade))mit()except Exception as e:print(e)db.rollback()def insert_course(db, cursor):for i in range(1, 201):no = 100 + iname = random_string(random.randint(5, 29))credit = random.randint(1, 20)try:print("No." + str(i))cursor.execute('insert into Course VALUES ("%d", "%s", "%d", NULL )' % \ (no, name, credit))mit()except:print("No. " + str(i) + "failed!")db.rollback()for i in range(300, 900):no = 100 + ipno = random.randint(1, 20) + 100name = random_string(random.randint(5, 29))credit = random.randint(1, 20)try:print("No." + str(i))cursor.execute('insert into Course VALUES ("%d", "%s", "%d", "%d" )' % \ (no, name, credit, pno))mit()except:print("No. " + str(i) + "failed!")db.rollback()if __name__ == "__main__":db = pymysql.connect("localhost", "root", "root", "STU")cursor = db.cursor()t1 = time.time()# insert_student(db, cursor)# insert_course(db, cursor)insert_sc(db, cursor)t2 = time.time()db.close()print(t1)print(t2)print(t2-t1)1.单表查询(1)直接查询:查询student表中年龄在20岁以上的学生记录select * from Student where Sage > 20;50248 rows in set (0.13 sec)10万条数据中,匹配数据50248条,耗时0.13秒(2)建立索引后,再查询:查询student表中年龄在20岁以上的学生记录MariaDB [STU]> create index STU_INDEX_OF_AGE on Student(Sage);Query OK, 0 rows affected (0.50 sec)建立索引耗时0.50秒MariaDB [STU]> select * from Student where Sage>20;50248 rows in set (0.13 sec)耗时没有发生变化,猜测MariaDB提前为Sage建立了索引,证明猜测:MariaDB [STU]> show index from Student;| Table | Non_unique | Key_name | Seq_in_index | Column_name || Student | 0 | PRIMARY | 1 | Sno || Student | 1 | STU_INDEX_OF_AGE | 1 | Sage |当前拥有主键的索引和刚刚建立的索引,说明上面的猜测是错的(3)表中元组数量少,查询结果所占比例大:查询student表中年龄在20岁以上的学生记录为了满足查询结果所占比例大,根据生成的数据,查询17岁以上的学生:MariaDB [STU]> select * from Student where Sage>17;79851 rows in set (0.17 sec)匹配数据79851条,耗时0.17秒(4)表元组数量多,查询结果所占比例小:查询student表中年龄在20岁以上的学生记录为了满足查询结果所占比例大,根据生成的数据,查询23岁以上的学生:MariaDB [STU]> select * from Student where Sage>23;20124 rows in set (0.10 sec)匹配数据20124条,耗时0.10秒(5)分析以上四种SQL查询的执行效率,并做总结:a.总数据一定时,查询结果所占比例小更省时b.MariaDB本身优化足够,在当前的实验环境下,手动建立索引的优化效果不明显2. 多表查询基于student、course、SC表,按照以下要求,实现多表查询,并分析比较执行效率。
天津理工大学C实验4数据库设计
实验报告学院(系)名称:计算机与通信工程学院姓名Touchkiss学号20125577专业计算机科学与技术班级 2 班实验项目实验四数据库设计课程名称.NET 程序设计课程代码0667066实验时间实验地点7#215批阅建议成绩教师签字:一、实验目的(1)掌握数据库接见技术;(2)掌握数据办理方法;(3)掌握数据库数据显示;二、实验环境PC 机, Windows XP(2000)操作系统及以上;Visual Studio 2010(或 2008)。
三、实验要求(1)创办学生 -课程 -选课数据库;(2)实现对学生表的显示和盘问;(3)实现对学生表数据的编写(插入、删除、更正);(4)实现某门课程成绩的录入。
代码:using System;using System.Collections.Generic; using ponentModel; using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;//using Cslab4.SqlHelper;using System.Data.SqlClient;namespace Cslab4{public partial class Form1 : Form{int flag = 1,flag1=1,flag2=1;public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){LvCourse.Items.Clear();DataTable CourerInfo = SqlHelper.ExecuteDataTable("select * from dbo.Course order by Cno");LvCourse.BeginUpdate();for (int i = 0; i < CourerInfo.Rows.Count; i++){DataRow Course = CourerInfo.Rows[i];ListViewItem Cou = new ListViewItem();Cou.Text = Course["Cno"].ToString();Cou.SubItems.Add(Course["Cname"].ToString());Cou.SubItems.Add(Course["Cpno"].ToString());Cou.SubItems.Add(Course["Ccredit"].ToString());LvCourse.Items.Add(Cou);}LvCourse.EndUpdate();}private void button1_Click(object sender, EventArgs e){LvStudent.Items.Clear();DataTable StuInfo = SqlHelper.ExecuteDataTable("select * from dbo.Student order by Sno");LvStudent.BeginUpdate();for (int i = 0; i < StuInfo.Rows.Count; i++){DataRow Student = StuInfo.Rows[i];ListViewItem Stu = new ListViewItem();Stu.Text = Student["Sno"].ToString();Stu.SubItems.Add(Student["Sname"].ToString());Stu.SubItems.Add(Student["Sage"].ToString());Stu.SubItems.Add(Student["Sdept"].ToString());LvStudent.Items.Add(Stu);}LvStudent.EndUpdate();}private void LvStudent_SelectedIndexChanged(object sender, EventArgs e){TBSno.Enabled = false;int i;flag = 2;if (LvStudent.SelectedItems.Count > 0){i = Convert.ToInt32(LvStudent.SelectedItems[0].Index.ToString());TBSno.Text = LvStudent.Items[i].SubItems[0].Text;TBSname.Text = LvStudent.Items[i].SubItems[1].Text;TBSsex.Text = LvStudent.Items[i].SubItems[2].Text;TBSage.Text = LvStudent.Items[i].SubItems[3].Text;TBSdept.Text = LvStudent.Items[i].SubItems[4].Text;}TBSno.Enabled = false;btnChange.Enabled = true;btnDelete.Enabled = true;}private void btnChange_Click(object sender, EventArgs e){SqlHelper.ExecuteNonQuery("update dbo.Student setSname=@Sname,Ssex=@Ssex,Sage=@Sage,Sdept=@Sdept where Sno =" + TBSno.Text, new SqlParameter("@Sname", TBSname.Text), new SqlParameter("@Ssex", TBSsex.Text), new SqlParameter("@Sage", TBSage.Text), new SqlParameter("@Sdept", TBSdept.Text));btnRefresh.PerformClick();}private void btnAdd_Click(object sender, EventArgs e){if (flag == 2){TBSno.Clear();TBSsex.Clear();TBSname.Clear();TBSdept.Clear();TBSage.Clear();TBSno.Enabled = true;btnDelete.Enabled = false;btnChange.Enabled = false;}else{if (TBSno.Text.Trim() == ""){MessageBox.Show(" 请输入学号! ");TBSno.Focus();}else if (TBSname.Text.Trim() == ""){MessageBox.Show(" 请输入姓名! ");TBSname.Focus();}else if (TBSsex.Text.Trim() == ""){MessageBox.Show(" 请输入性别! ");TBSsex.Focus();}else if (TBSage.Text.Trim() == ""){MessageBox.Show(" 请输入年龄! ");TBSage.Focus();}else if (TBSdept.Text.Trim() == ""){MessageBox.Show(" 请输入学生所在系别!");TBSdept.Focus();}else{SqlHelper.ExecuteNonQuery("insert into values (@Sno,@Sname,@Ssex,@Sage,@Sdept)", new SqlParameter("@Sno", TBSno.Text.Trim()), new SqlParameter("@Sname", TBSname.Text.Trim()), new SqlParameter("@Ssex", TBSsex.Text.Trim()), new SqlParameter("@Sage", TBSage.Text.Trim()), new SqlParameter("@Sdept", TBSdept.Text.Trim()));btnRefresh.PerformClick();}}}{DialogResult res = MessageBox.Show(" 确定要删除学号为 " + TBSno.Text.Trim() + " 的学生? ", " 提示 ", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);if (res == DialogResult.Yes){SqlHelper.ExecuteNonQuery("delete from dbo.Student where Sno = @Sno", new SqlParameter("@Sno", TBSno.Text.Trim()));btnRefresh.PerformClick();TBSno.Clear();TBSsex.Clear();TBSname.Clear();TBSdept.Clear();TBSage.Clear();flag = 1;TBSno.Enabled = true;btnDelete.Enabled = false;btnChange.Enabled = false;}else{ }}private void btnRefreshGrade_Click(object sender, EventArgs e){LvScore.Items.Clear();DataTable GradeInfo = SqlHelper.ExecuteDataTable("select * from dbo.SC order by Sno");LvScore.BeginUpdate();for (int i = 0; i < GradeInfo.Rows.Count; i++){DataRow Grade = GradeInfo.Rows[i];ListViewItem Gra = new ListViewItem();Gra.Text = Grade["Sno"].ToString();Gra.SubItems.Add(Grade["Cno"].ToString());Gra.SubItems.Add(Grade["Grade"].ToString());LvScore.Items.Add(Gra);}LvScore.EndUpdate();}private void btnAddGrade_Click(object sender, EventArgs e)//写入数据库{if(TBSno2.Text.Trim()==""){TBSno2.Focus();}else if(TBCno.Text.Trim()==""){MessageBox.Show(" 请输入课程号!");TBCno.Focus();}else if(TBGrade.Text.Trim()==""){MessageBox.Show(" 请输入成绩!");TBGrade.Focus();}else{SqlHelper.ExecuteNonQuery("insert into dbo.SC values (@Sno,@Cno,@Grade)", new SqlParameter("@Sno", TBSno2.Text.Trim()), new SqlParameter("@Cno", TBCno.Text.Trim()), new SqlParameter("@Grade", TBGrade.Text.Trim()));btnRefreshGrade.PerformClick();flag2 = 1;flag1 = 1;}}}}using System.Configuration;using System.Data;using System.Data.SqlClient;using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Cslab4{public static class SqlHelper{public static readonly string connstr = "Data Source=vmb72;Initial Catalog=SCHOOL;Integrated Security=True;Connect Timeout=15";public static SqlConnection OpenConnection(){conn.Open();return conn;}public static int ExecuteNonQuery(string cmdText,params SqlParameter[] parameters){using (SqlConnection conn = new SqlConnection(connstr)){conn.Open();return ExecuteNonQuery(conn, cmdText, parameters);}}public static object ExecuteScalar(string cmdText,params SqlParameter[] parameters){using (SqlConnection conn = new SqlConnection(connstr)){conn.Open();return ExecuteScalar(conn, cmdText, parameters);}}public static DataTable ExecuteDataTable(string cmdText,params SqlParameter[] parameters){using (SqlConnection conn = new SqlConnection(connstr)){conn.Open();return ExecuteDataTable(conn, cmdText, parameters);}}public static int ExecuteNonQuery(SqlConnection conn,string cmdText, params SqlParameter[] parameters){using (SqlCommand cmd = conn.CreateCommand()){mandText = cmdText;cmd.Parameters.AddRange(parameters);return cmd.ExecuteNonQuery();}}public static object ExecuteScalar(SqlConnection conn, string cmdText,params SqlParameter[] parameters){using (SqlCommand cmd = conn.CreateCommand()){mandText = cmdText;cmd.Parameters.AddRange(parameters);return cmd.ExecuteScalar();}}public static DataTable ExecuteDataTable(SqlConnection conn, string cmdText, params SqlParameter[] parameters){using (SqlCommand cmd = conn.CreateCommand()){mandText = cmdText;cmd.Parameters.AddRange(parameters);using (SqlDataAdapter adapter = new SqlDataAdapter(cmd)){DataTable dt = new DataTable();adapter.Fill(dt);return dt;}}}public static object ToDBValue(this object value){return value == null ? DBNull.Value : value;}public static object FromDBV alue(this object dbValue){return dbValue == DBNull.Value ? null : dbValue;}}}。
数据库原理实训实验报告
一、实验背景随着信息技术的飞速发展,数据库技术在各行各业的应用越来越广泛。
为了让学生更好地理解和掌握数据库原理,提高数据库应用能力,我们开展了数据库原理实训实验。
本次实验旨在通过实际操作,让学生熟悉数据库的基本概念、结构、操作方法以及应用技巧,培养学生的实践能力和创新意识。
二、实验目的1. 熟悉数据库的基本概念、结构、操作方法以及应用技巧。
2. 掌握数据库设计、创建、操作、查询、维护和安全性管理的基本操作方法和技巧。
3. 提高学生的实践能力和创新意识。
三、实验内容本次实验主要分为以下几个部分:1. 数据库设计2. 数据库创建3. 数据表操作4. 数据查询5. 数据库维护6. 数据库安全性管理四、实验步骤1. 数据库设计首先,我们需要设计一个数据库。
根据实验要求,我们设计了一个学生信息管理系统数据库,包含学生表、课程表、成绩表和教师表。
以下是数据库设计的基本步骤:(1)确定数据库主题:学生信息管理系统(2)分析数据需求:根据需求分析,确定学生信息管理系统需要存储的数据,包括学生基本信息、课程信息、成绩信息和教师信息。
(3)设计数据结构:根据数据需求,设计学生表、课程表、成绩表和教师表的结构,包括字段名、字段类型、字段长度、约束等。
2. 数据库创建完成数据库设计后,我们需要创建数据库。
以下是创建数据库的基本步骤:(1)打开数据库管理工具,如MySQL、SQL Server等。
(2)在工具中创建一个新的数据库,命名为“学生信息管理系统”。
(3)根据数据库设计,在新建的数据库中创建相应的数据表。
3. 数据表操作创建数据表后,我们需要对数据表进行操作,包括插入、修改、删除和查询数据。
(1)插入数据:使用INSERT语句插入数据。
(2)修改数据:使用UPDATE语句修改数据。
(3)删除数据:使用DELETE语句删除数据。
(4)查询数据:使用SELECT语句查询数据。
4. 数据查询数据查询是数据库操作中非常重要的一环。
天津理工大学安全工程实验指导书
安全工程实验指导书天津理工大学环境科学与安全工程学院目录实验一易燃液体燃烧性测定实验 (1)实验二气溶胶易燃性实验 (3)实验三易燃固体燃烧速度实验 (5)实验四固体氧化剂包装等级确定实验 (8)实验五物质闪点和燃点的测定 (11)实验六消防器材的使用 (14)实验七超声波测厚实验 (16)实验八磁粉探伤实验 (17)实验九着色渗透探伤实验 (18)实验十绝缘电阻和耐电压测量实验 (19)实验十一接地电阻测量实验 (27)实验十二漏电保护装置性能实验 (29)实验一易燃液体燃烧性测定实验一、实验目的学会使用燃烧性试验仪测定易燃液体的持续燃烧性。
二、实验仪器燃烧性试验仪、XMT400系列智能PID调节器、秒表、液化气罐、注射器三、主要实验仪器使用说明如图2所示为燃烧性试验仪器示意图。
样品槽4的温度由PID调节器6控制,调节调节器能使电炉7温度恒定在规定要求的范围内。
固定在旋转轴上的一个小型煤气喷嘴装在金属块上,煤气喷嘴的手柄3和进气口2可与煤气喷嘴5成任何方便的角度。
l、温度计2、通可燃气体3、手柄4、样品槽5、试验煤气喷嘴6、PID调节器7、电炉图1 燃烧性实验仪器示意图四、实验程序将设备安装在完全不通风区,并且不能有强光照射,以利于观察闪光、火焰等现象。
调试PID调节器使温度恒定在60.5±l℃或75℃内。
如气压计显示的压力与标准大气压力(101.3千帕)不同,应按如下调整试验温度:压力每高或低4千帕即将试验温度调高或调低1.0℃,压力较高时调高,压力较低时调低。
核对在试验位置时煤气喷嘴在试样槽顶部上面2.2毫米处。
在煤气喷嘴离开试验位置(即“关”的位置,离开试样槽)时点燃液化气。
调整火焰大小使其具有8毫米至9毫米高,约5毫米宽。
使用注射器从样品容器中抽取2±0.1毫升的试样,迅速将试样注入试样槽中,同时开始计时。
在60.5℃的加热时间达60秒(试样被认为已达到其平衡温度的时间)之后,如果试验液体没有点燃,将试验火焰转到液体槽边缘上面的试验位置,使火焰保持在这个位置15秒钟,然后将它转回“关”的位置,同时观察试样的动态。
数据库原理与技术
数据库原理与技术课程名称:数据库原理与技术(Principle and Technology of DataBase Systems)课程编号:1101010230开课学期: 2010秋学期(2010.9.6-2010.12.30)上课地点:北辰12-A314(周二第三大节)、北辰12-B504(双周周五第二大节)学生班级:管理091班、管理092班、管理093班、管理094班学 时:48学时(含实验8学时)学 分:3主讲教师:李亚坤 讲师z课程内容简介与教学目的数据库技术是本校管理学和经济学门类各专业的学科基础课,具有较强的理论性和实用性。
内容包括数据库模型、数据库系统结构、关系数据库、SQL语言、关系数据理论、数据库设计、数据库恢复技术、并发控制、完整性与安全性等。
通过本课程的学习,目的是使学生全面系统的了解数据库的基础概念和基本技能,要求学生在掌握数据库系统结构和数据库管理系统基本概念的基础上,能使用SQL语言进行基本数据操作,学会采用逻辑数据库设计和物理数据库设计为核心的规范设计方法。
使学生具有设计、使用和维护一个一般数据库系统的基本能力, 具备初步开发数据库应用软件的基本能力。
z教学指导思想与教学方式教学手段与方式:使用Power point幻灯片课堂讲授为主,结合计算机操作演示,配合上机教学。
z对学生学习的要求学生要认真阅读教材和参考资料,课前做好预习,课上作好笔记,课后按时完成布置的练习题。
学习时要处理好全面和重点的关系、理解和记忆的关系、理论方法和应用的关系,在全面学习的基础上掌握重点,在理解的基础上记忆。
不要死记硬背,要以理解基本原理和掌握分析方法为主。
z成绩考核课程总评成绩以学生期末考试成绩和平时成绩综合评定。
平时成绩根据作业、提问、小测验、出勤和上机情况等来评定。
z教材王珊、萨师煊等编,数据库系统概论,高等教育出版社(第四版),2006。
z参考书目1.(美)C.J.Date,数据库系统导论(英文版,第7版),机械工业出版社,20022.王姗、陈红,数据库系统原理教程,清华大学出版社,20023.(美)Jeffrey D.Ullman&Jennifer Widom,数据库系统基础教程,清华大学出版社,20014.闪四清,SQL Server实用简明教程,清华大学出版社,20025.黄维通,SQL Server 2000简明教程,清华大学出版社,2001z教师联系方式和答疑时间:办公地址:北辰校区管理学院办公楼328室联系电话:60435183 电子信箱:liyakun2005@答疑时间:每周上午(8:30-11:30)z教学计划安排周次日期学时单元教学内容作业1 9月7日2 课程简介、数据库系统概述2 9月14日 2 数据模型、数据库系统结构及组成P41第12、13题2 9月17日 2 关系数据库P80 第5题3 9月21日 2 SQL Server 2000数据库及上机指导4 9月28日 2 SQL概述、数据定义、数据查询4 10月1日 2 数据查询P148 第5题5 10月5日 2 上机实验熟悉系统6 10月12日 2 SQL数据更新P149第11,12题6 10月15日 2 SQL视图、数据控制7 10月19日 2 上机实验SQL8 10月26日 2 数据库安全性、完整性8 10月29日 2 关系数据理论9 11月2日 2 上机实验SQL10 11月9日 2 关系数据理论及习题10 11月12日 2 数据库设计概述、需求分析11 11月16日 2 需求分析、概念结构设计12 11月23日 2 概念结构设计P196 第2题12 11月26日 2 逻辑结构设计、物理设计、实施维护P242第23,24题13 11月30日 2 数据库设计实例分析讨论、习题课14 12月7日 2 数据库恢复技术14 12月10日 2 并发控制15 12月14日 2 上机实验数据库系统16 12月21日 2 新一代数据库技术简介16 12月24日 2 课程总结、复习注:教学中将根据放假情况、学生学习等具体情况,对表中的时间安排会稍有调整,因而本表只是大致的进度安排。
天津理工大学数据库实验二(20200717041539)
实验报告学院(系)名称:计算机与通信工程学院姓名Touchkiss 学号20125577 专业计算机科学与技术班级2班实验项目实验二:复杂SQL数据操作课程名称数据库系统课程代码0668026实验时间2014/10/31 实验地点计算机软件实验室7-215 批改意见成绩教师签字:1.实验目的1) 熟悉各数据库的交互式SQL工具;2) 熟悉通过SQL语言对数据库进行操作3)熟悉通过SQL语言对数据进行控制(授权和权力回收)2.实验工具MS SQL server20083.实验内容1)表的创建:创建一数据库Temp,在数据库中创建教材中的Student 表、Course 表和SC 表,给出表中的主码、外码和约束关系。
2)基于以上创建的表,完成如下SQL语句。
(1) 将学习了数据库课程的学生成绩加5分。
(2) 将计算机系学习了2号课程的学生成绩置0。
(3) 将李勇的数据库成绩改为85。
(4) 将选修了2号课程且成绩为空的选课记录删除。
(5) 从课程表中删除在选课表中没有选课记录的课程记录。
(6) 删除计算机系学生选修了数据库课程的选课记录。
(7) 求各系的系名及男女生人数并将结果保存到另一个表中。
(8) 将平均成绩80分以上的学生的学号,选学的课程数和平均成绩保存到另一个表中。
(9) 创建一个视图,查询没有选修课程的学生学号、姓名和所在系,并利用该视图查询所有没有选修课程的学生信息。
(10) 创建一个给出学生的姓名、课程名和成绩的视图,并利用该视图查询某个学生学习的课程名和成绩。
(11)创建一个视图,求各门课程的课程号、选课人数、平均分、最高分,并利用该视图查询1号课程的选课人数、平均分、最高分。
(12) 创建一个视图,求选修了2号课程且成绩高于该门课程平均分的学生学号和成绩。
(13)创建用户user1,将学生表的select权限赋给用户user1,然后以user1登录,检查权限情况。
(14)收回用户user1的对学生表的select权限,然后以user1登录,检查权限情况。
理工大学数据库实验报告
理工大学学生实验报告一.数据定义(一)基本表的操作1.建立基本表例如,建立一个学生表:create table Student(Sno char(9) primary key,Sname char(20) unique,Ssex char(2),Sage smallint,Sdept char(20))建立一个课程表:create table Course(Cno char(4) primary key,Cname char(40),Cpno char(4),Ccredit smallint,foreign key (Cpno) references Course(Cno))create table sc(Sno char(9),Cno char(4),Grade smallint,primary key(Sno,Cno),foreign key (Sno) references student(Sno), foreign key (Cno) references course(Cno));2.修改基本表例如,像student表加一个入学时间列:alter table Student add S_entrance datetimealter table Student alter column Sage intalter table Course add unique(Cname)3.删除基本表例如,删除已经建立的学生表:drop table Studentdrop table Course(二)索引操作1.建立索引例如,为学生课程数据库中的student, course, sc 三个表建立索引。
其中student表按学号升序建唯一索引,course表按课程号升序建唯一索引,sc表按学生升序和课程号升序建唯一索引:create unique index Stusno on Student(Sno);create unique index Coucno on Course(Cno);create unique index SCno on SC(Sno ASC,Cno DESC)2.删除索引例如,删除student表的Stusno索引:drop index Stusname(三)数据操作一.更新操作1.插入数据例如,在student表中插入下列数据:200215125,张立,男,19,IS代码如下insert into student(Sno,Sname,Ssex,Sage,Sdept)values('200215125','张立','男',19,'IS')插入后,结果如下:在Course表中插入以下数据:1,数据库,5,42,数学,null,26,数据处理,null,24,操作系统,6,37,PASCAL语言,6,45,数据结构,7,41,数据库,5,43,信息系统,1,4insert into course(Cno,Cname,Cpno,Ccredit)values('1','数据库','5',4); insert into course(Cno,Cname,Ccredit)values('2','数学',2);insert into course(Cno,Cname,Ccredit)values('6','数据处理',2);insert into course(Cno,Cname,Cpno,Ccredit)values('4','操作系统','6',3);insert into course(Cno,Cname,Cpno,Ccredit)values('7','PASCAL语言','6',4);insert into course(Cno,Cname,Cpno,Ccredit)values('5','数据结构','7',4);insert into course(Cno,Cname,Cpno,Ccredit)values('1','数据库','5',4); insert into course(Cno,Cname,Cpno,Ccredit)values('3','信息系统','1',4);2.修改数据例如,将学生200215121的年龄改为22岁:update student set Sage=22 where Sno='200215121'修改前:修改后:3.删除数据例如,删除学号为200215128的学生记录:delete from student where Sno='200215128'删除所有学生的选课记录:delete from sc删除计算机科学系所有学生的选课记录:delete from sc where 'CS'=(select Sdept from student where student.Sno=SC.Sno )二.查询操作1.单表查询再例如,查询全体学生的详细记录select * from student;查询所有年龄在20岁以下的学生姓名及其年龄。
《数据库原理及应用》实验报告(1-21)
数据库原理及应用实验报告实验课程:数据库原理及应用学号:学生姓名:班级:2014年月日实验一创建和维护数据库一、实验目的(1)掌握在Windows 平台下安装与配置MySQL 5.5 的方法。
(2)掌握启动服务并登录MySQL 5.5 数据库的方法和步骤。
(3)了解手工配置MySQL 5.5 的方法。
(4)掌握MySQL 数据库的相关概念。
(5)掌握使用Navicat 工具和SQL 语句创建数据库的方法。
(6)掌握使用Navicat 工具和SQL 语句删除数据库的方法。
二、实验要求(1)学生提前准备好实验报告,预习并熟悉实验步骤;(2)遵守实验室纪律,在规定的时间内完成要求的内容;(3)1~2人为1小组,实验过程中独立操作、相互学习。
三、实验内容及步骤(1)在Windows 平台下安装与配置MySQL 5.5.36 版。
(2)在服务对话框中,手动启动或者关闭MySQL 服务。
(3)使用Net 命令启动或关闭MySQL 服务。
(4)分别用Navicat 工具和命令行方式登录MySQL。
(5)在my.ini 文件中将数据库的存储位置改为D:\MYSQL\DATA。
(6)创建数据库。
①使用Navicat 创建学生信息管理数据库gradem。
②使用SQL 语句创建数据库MyDB。
(7)查看数据库属性。
①在Navicat 中查看创建后的gradem 数据库和MyDB 数据库的状态,查看数据库所在的文件夹。
②利用SHOW DATABASES 命令显示当前的所有数据库。
(8)删除数据库。
①使用Navicat 图形工具删除gradem 数据库。
②使用SQL 语句删除MyDB 数据库。
③利用SHOW DATABASES 命令显示当前的所有数据库。
(9)使用配置向导修改当前密码,并使用新密码重新登录。
(10)配置Path 变量,确保MySQL 的相关路径包含在Path 变量中。
四、思考题My SQL的数据库文件有几种?扩展名分别是什么?五、实验总结1、收获2、存在的问题实验二管理表一、实验目的(1) 掌握表的基础知识。
数据库原理课程实验
《数据库原理》课程实验2010.9本文档介绍的是本学期课程实验内容,其中有四次实验需要提交实验报告或设计报告,前三次每份报告记平时成绩4分,第四份报告(同时要提供建立数据库、数据表的代码)记平时成绩8分并。
请各位同学注意按时提交报告,按实验报告格式打印。
实验1 创建数据库一、实验目的熟悉SQL Server Management Studio界面;掌握通过图形化向导和执行Transact-SQL语句创建数据库的方法。
二、实验环境Windows XP操作系统,SQL Server 2005软件。
三、实验课时2课时。
四、实验内容SQL Server中的一个数据库必须至少包含一个数据文件和一个事务日志文件,所以创建数据库就是建立主数据文件和日志文件。
在SQL Server 2005中创建数据库的方法主要有两种:一是在SQL Server Management Studio窗口中使用可视化界面,通过方便的图形化向导创建,二是通过执行Transact-SQL语句创建。
(一)向导方式创建1、从“开始”菜单选择“所有程序”→“Microsoft SQL Server 2005”,打开“SQL Server Management Studio”窗口,使用Windows 或SQL Server身份验证建立连接。
2、在“对象资源管理器”窗格中展开服务器,选择“数据库”节点右击,从弹出的快捷菜单中选择“新建数据库”命令,打开“新建数据库”窗口。
3、该窗口中有3个页,分别是“常规”、“选项”和“文件组”,完成这3个页的内容即可完成数据库的创建。
这里,我们仅设置“常规”的相应内容,其他2个页的内容按照默认设置即可。
(1)“数据库名称”文本框中输入数据库的名称,如“sample_st”,再输入该数据库的所有者,这里使用默认值即可。
(也可以通过单击文本框右边的“浏览”按钮选择所有者。
(2)“数据库文件”列表中包括两行,一个是数据文件,一个是日志文件。
天津理工大学数据结构实验报告1
实验报告CreateLinklist(): 从键盘输入数据,创建单链表ContLinklist():将前面建立的两个单链表首尾相连OutputLinklist():输出显示单链表3)分析算法时间复杂度三、实验过程与实验结果1.一元稀疏多项式简单的计算器➢数据结构定义typedef struct PolyNode{float coef;int exp;struct PolyNode *next;}PolyNode;typedef PolyNode *Polynomial;➢算法设计思路简介用带头节点的单链表分别表示两个多项式L和p,同时新建一个链表N把两个多项式相加后的结果存放在N表中。
所有链表均按指数从小到大顺序排列。
链表N中的节点N1另外生成,把运算后的结果赋给N1,用尾部插入法将N1插入到链表N中,每次要将新节点N1插入到链表N尾部,因此给链表N声明一个尾指针N0始终指向链表N的尾节点。
操作完成,按要求输出。
➢算法描述:初始时,指针L1指向L链表的头节点,P1指向p链表的头结点,从头开始扫描两个相加多项式链表的表头节点,循环操作,直到其中一个单链表中的节点全部搜索结束为止。
比较指针L1和P1指向的指数,共有三种情况:(1)L1->exp==P1->exp;则两个多项式的系数相加减,得到的新和多项式节点插入到链表N中。
L1、P1指针后移;(2)L1->exp<P1->exp;则将该L1所指节点赋给N1插入到链表N中。
L1、P1指针后移;(3)L1->exp>P1->exp;则将该P1所指节点赋给N1插入到链表N中。
L1、P1指针后移。
➢算法的实现和测试结果:输入:L1: 5 3 6 5 6 7 0 0; L2: 2 3 3 5 4 7 0 0;输出:L1: 5x^3+6x^5+6x^7;L2: 2x^3+3x^5+4x^7;L1+L2: 7x^3+9x^5+10x^7;L1-L2: 3x^3+3x^5+2x^7➢算法时间复杂度分析该程序中建立单链表过程采用了单链表的后插入操作,其时间复杂度T(n)=O(1);当两个多项式相加减的时候,设L, p多项式分别有m、n项,其算法时间复杂度T(n)=O(m+n)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
学院(系)名称:计算机与通信工程学院
姓名吴学号201 专业计算机科学与技术
班级二班实验项目数据库设计与查询优化
课程名称数据库系统概论课程代码0660096
实验时间2016/12/8 实验地点7-216
批改意见成绩
教师签字:
一、实验目的
⏹了解教材中介绍的ER图等数据库设计方法
⏹了解基本的数据库优化方法
二、实验的软硬件环境
软件环境:Windows 2000 MS SQL Server
硬件环境:P4 2.4GHz 256内存
三、实验内容
考虑单表查询、连接查询、嵌套查询3种SQL操作,从以下方面进行优化,并分析优化结果。
(1)单表查询。
比较建立索引以后的查询效率
⏹查询student表中所有学生信息所需要的时间
⏹对于student1表,不按照姓名创建索引,查询某个姓名,所需要的时间。
⏹对于student1表,按照姓名创建索引,查询某个姓名,所需要的时间。
⏹对于student1表,不按照系别创建索引,查询某个系所有学生,所需要的
时间。
⏹对于student1表,按照系别创建索引,查询某个系所有学生,所需要的时
间。
查询student表中所有学生信息所需要的时间
对于student1表,不按照姓名创建索引,查询某个姓名,所需要的时间
对于student1表,按照姓名创建索引,查询某个姓名,所需要的时间
对于student1表,按照系别创建索引,查询某个系所有学生,所需要的时间
对于student1表,不按照系别创建索引,查询某个系所有学生,所需要的时间
(2)连接查询
查询选修某门课程的学生姓名。
比较在student、course、SC三个表建立索引和不建立索引的情况
不建立索引的情况
建立索引的情况
(3)针对不同属性查询
⏹比较两个查询“查询某门课程选修的学生”和“某个学生选修的课程”
的查询时间效率,并分析原因(两个查询均用连接查询、嵌套查询分别实
现).
⏹查询某门课程选修的学生(连接查询)
查询某门课程选修的学生(嵌套查询)
(4)数据库概念模式设计(选作)
⏹自己选定一种场景或一个应用问题,为之设计数据库的概念模式(ER图),
要求不少于6个实体,实体之间有一对多、多对多关系。
并将其转化为关
系模式,并标示出每个关系模式的主键。
(提示:学生管理系统、图书馆
管理系统、仓库管理系统、网上商城等)
四、实验过程及结果
1.实验所基于的表
Course1
SC1
Student1
五、问题及体会
本次试验清楚的展示给了我们做每种查询所用的时间,可以直观的比较每种查询的优缺点。
还有,对于大数据,尽可能的建立索引,这样会大大节约时间和空间,有了索引后,查询效率会成倍的提升,在今后的使用过程中,一定要养成良好的习惯。