北邮数据库小学期实验二doc资料
北邮数据结构实验第二次实验图

数据结构实验报告1.实验要求( 1)实验目的通过选择下面 5 个题目之一进行实现,掌握如下内容:掌握图基本操作的实现方法了解最小生成树的思想和相关概念了解最短路径的思想和相关概念学习使用图解决实际问题的能力(2)实验内容根据图的抽象数据类型的定义,使用邻接矩阵或邻接表实现一个图。
图的基本功能:1、图的建立2、图的销毁3、深度优先遍历图4、广度优先遍历图5、使用普里姆算法生成最小生成树6、使用克鲁斯卡尔算法生成最小生成树7、求指定顶点到其他各顶点的最短路径8、其他:比如连通性判断等自定义操作编写测试 main() 函数测试图的正确性2.程序分析2.1存储结构图:(1)带权值的无向图V096V12V2(2)带权值的有向图V063 94V12V2 2.2关键算法分析(1)深度优先遍历int visited[MAXSIZE]={false}; template<class T>void MGraph<T>::DFS(int v){cout<<vertex[v];visited[v]=true;for(int j=0;j<vNum;j++)if(arc[v][j]==1&&!visited[j])DFS(j);}时间复杂度: O(n2)(2)广度优先遍历int queue[MAXSIZE];int f=0,r=0;cout<<vertex[v];visit[v]=true;queue[++r]=v;while(f!=r){v=queue[++f];for(int j=0;j<vNum;j++){if(arc[v][j]==1&&!visit[j]){cout<<vertex[j];visit[j]=true;queue[++r]=j;}时间复杂度: O( n2)(3)普利姆算法int adjvex[MAXSIZE];int lowcost[MAXSIZE];int MAX=10000;template<class T>int mininum(MGraph<T> G,int a[]){int min=MAX;int k=0;for(int i=0;i<G.vNum;i++){if(a[i]!=0&&a[i]<min)//寻找 U-{V-U} 中边权值最小的顶点{min=a[i];k=i;}}return k;}template<class T>void MGraph<T>:: Prim(MGraph G){for(int i=0;i<G.vNum;i++){adjvex[i]=0;lowcost[i]=G.arcs[0][i];}lowcost[0]=0;//初始化 U={vo}for(int i=1;i<G.vNum;i++){int k=mininum(G,lowcost);//求下一个边权值最小的邻接点cout<<'V'<<adjvex[k]<<"->V"<<k<<endl;lowcost[k]=0;for(int j=0;j<G.vNum;j++){if(lowcost[j]!=0&&G.arcs[k][j]<lowcost[j]){lowcost[j]=G.arcs[k][j];adjvex[j]=k;}}}}时间复杂度: O(n2)(4)克鲁斯卡尔算法template<class T>void GenSortEdge(MGraph<T> G,VEdge E[])//获取EdgeList{int k=0,i,j;for(i=0;i<G.vNum;i++)//边赋值for(j=i;j<G.vNum;j++)if(G.arcs[i][j]!=MAX){E[k].fromV=i;E[k].endV=j;E[k].weight=G.arcs[i][j];k++;}for(i=0;i<G.arcNum-1;i++){for(j=i+1;j<G.arcNum;j++)if(E[i].weight>E[j].weight){VEdge t=E[i];E[i]=E[j];E[j]=t;}}}const int MAX_VERTEXT=20;template<class T>void MGraph<T>:: Kruskal(VEdge E[],int n,int e){int vset[MAX_VERTEXT];for(int i=0;i<n;i++) vset[i]=i;//初始化vset int k=0,j=0;while(k<n-1){int m=E[j].fromV,n=E[j].endV;int sn1=vset[m];//m int sn2=vset[n];//n if(sn1!=sn2){所属的集合所属的集合cout<<'V'<<m<<"->V"<<n<<endl;k++;for(int i=0;i<n;i++){if(vset[i]==sn2)//集合编号为sn2 的全部改为sn1 vset[i]=sn1;时间复杂度: O(n2 )(5)求最短路径,连通性判断int dist[MAXSIZE][MAXSIZE];int path[MAXSIZE][MAXSIZE];template<class T>void Floyd(MGraph<T> G){for(int i=0;i<G.vNum;i++)//寻找最短路径for(int j=0;j<G.vNum;j++){dist[i][j]=G.arcs[i][j];if(dist[i][j]!=MAX_VALUE)path[i][j]=i;elsepath[i][j]=-1;}for(int k=0;k<G.vNum;k++)for(int i=0;i<G.vNum;i++)for(int j=0;j<G.vNum;j++)if(dist[i][k]+dist[k][j]<dist[i][j])//更新迭代数组Disk[][]{dist[i][j]=dist[i][k]+dist[k][j];path[i][j]=k;}cout<<" 任意两点间的最短路径长度( 以矩阵表示): "<<endl;int l=1;for(int i=0;i<G.arcNum;i++)for(int j=0;j<G.arcNum;j++){cout<<dist[i][j]<<" ";l++;if(l>G.arcNum) {cout<<endl;l=1;}}}时间复杂度: O(n3)3.程序运行结果(1)流程图:初始化带权值的无向图深度优先遍历,广度优先遍历用普利姆算法求最小生成树用克鲁斯卡尔算法求最小生成树初始化带权值的有向图用 Floyd 算法求任意两点间最短路径,并判断连通性删除图(2)本程序所用的图带权值的无向图V096V12V2带权值的有向图V06394V12V2( 3)程序结果4.总结(1)遇到的问题:私有数据访问权的问题,在编程时应该注意(2)心得体会:通过这次实验,我掌握了图基本操作的实现方法,了解最小生成树的思想和相关概念,了解最短路径的思想和相关概念等等。
数据库实验二数据库的平常维护和安全性管理

北京邮电大学数据库系统概论实验二:数据库的日常维护和安全性管理专业:信息工程学生姓名:×××指导教师:×××完成时间:××××目录一、实验目的 (2)二、实验内容 (3)三、实验环境 (3)四、实验结果 (3)1、数据库备份 (3)①完整备份 (3)②差异备份 (4)2、数据库还原 (5)3、数据库导入 (7)4、数据库导出 (10)5、创建用户 (14)6、用户授权 (16)①一般授权 (16)②级联授权 (17)7、用户权利回收 (18)五、实验分析 (19)1、完整与差异 (19)2、新建查询的选择 (19)3、覆水难收? (20)4、语法的变迁 (20)六、实验总结 (21)1、实验目的1、熟悉通过SQL语句和DBMS对数据库进行日常简单维护操作。
2、熟悉数据库的安全性管理工具和命令。
二、实验内容1、完成数据库的备份、还原(1.5分+1.5分)通过SQL语句,对已建立的数据库StuManagement进行备份和还原操作2、完成数据的导入、导出操作(1分+1分): 直接在Management Studio中,手工对已建立的数据库StuManagement进行数据的导入和导出操作(可导为Access数据库、Excel表格等)3、安全性管理对已建立的数据库StuManagement进行,直接在Management Studio中,手工对已建立的数据库StuManagement进行安全性管理,建立2个不同的数据库用户。
(1+1分)4、完成“授权和权利回收”的操作例子(1.5分+1.5分)分别用grant和revoke语句,对已建立的用户,进行授权和权利回收的操作,并运行验证。
实验环境三、实验环境软件版本:SQL Server 20124、实验结果1、数据库备份①完整备份图1:完整备份消息提示图2:完整备份文件查看源代码:--将数据库StuManagement完整备份到磁盘文件上去BACKUPDATABASE StuManagementTO DISK='D:\SQLDATA\StuManagement_backup1.bak';②差异备份图3:差异备份消息提示图4:差异备份文件查看2、数据库还原图5:还原之前(无teacher表)图6:还原之后(重新出现teacher表)代码:--从备份StuManagement_backup1中还原数据库StuManagement RESTOREDATABASE StuManagementFROM DISK='D:\SQLDATA\StuManagement_backup1.bak'WITH RECOVERY,REPLACE;--只能选择master数据库数据库实验二报告3、数据库导入图7:选择数据源图8:选择目的地图9:导入成功信息提示图10:SQL Server 查看导入的表test数据库实验二报告4、数据库导出图11:选择导出数据源图12:选择导出目的地图13:选择导出内容图14:导出成功提示图15:资源管理器查看图16:Excel查看5、创建用户图17:新建用户图18:新建用户设置图19:新建用户查看6、用户授权①一般授权图20:对USER1授权之前进行UPDATE操作失败信息提示图21:授权后成功修改数据代码:--将修改表Student的权利授予用户USER1GRANT UPDATEON StudentTO USER1;②级联授权图22:USER1只有使用UPDATE的权限,不具有传播该权限的权限图23:级联授权后用户USER2具有UPDATE的权限代码:--将修改表Student的权利授予用户USER1,并且USER1能够传播该权限GRANT UPDATEON StudentTO USER1WITH GRANT OPTION;--通过USER1将修改表Student的权利授予用户USER2GRANT UPDATEON StudentTO USER2;7、用户权利回收图24:非级联收回用户USER1的UPDATE权限失败数据库实验二报告代码:--非级联回收用户USER1的UPDATE权限REVOKE UPDATEON StudentFROM USER1;图25:级联收回权限后用户USER1不能修改数据图26:级联收回权限后用户USER2也不能修改数据代码:--级联回收用户USER1的UPDATE权限REVOKE UPDATEON StudentFROM USER1CASCADE;5、实验分析1、完整与差异在实验中尝试了完整备份和差异备份两种不同的备份方式,从资源管理器中可以查看到,差异备份的文件大小要远远小于完整备份的文件大小,这与理论相符。
北邮数据结构试验报告试验二含源码

数据结构实验报告实验名称:实验二一一栈和队学生姓名:申宇飞班级:班内序03号:学号:日期2013年11月18日:1- 实验要求1.1实验目的:通过选择卞面五个题目之一进行实现,掌握如卞内容:>进一步掌握指针、模板类、异常处理的使用>掌握栈的操作的实现方法>掌握队列的操作的实现方法>学习使用栈解决实际问题的能力>学习使用队列解决实际问题的能力1.2实验内容题目1根据栈和队列的抽象数据类型的定义,按要求实现一个栈或一个队列。
要求:1、实现一个共享栈2、实现一个链栈3、实现一个循环队列4、实现一个链队列编写测试mainO函数测试线性表的正确性。
2.程序分析2.1存储结构链栈:栈的链式存储结构,其实现原理类似于单链表,结点结构与单链表相同,但链栈在实现时直接采用栈顶指针指向栈顶元素。
第]页北京邮电大学信息与通信工程学院data next栈顶栈底关键算法分析链栈:一、入栈操作算法步骤:自然语言描述:1、建立新结点2、给p结点的数据域赋值3、修改p结点的指针域,将其指向栈顶结点4、栈顶指针指向p结点伪代码描述:1)Node<T> * s = new Node<T>;2)p->data = x;3)p->next = top;4)top = p;二、出栈操作算法步骤:自然语言描述:1、判断栈是否为空2、保存栈顶结点的数据域3、定义指针p指向栈顶结点4、栈顶指针指向下一个结点5、释放p结点伪代码描述:1)if(EmptyO)throw" F溢“;2)T x = top->data;3)Node<T> * p = top;4)top = top->next;5)elete p;三、链栈的取栈顶元素算法步骤:自然语言描述:1、判断栈是否为空第3页2、定义指针p指向栈顶结点3、返回栈顶元素的值,不删除伪代码描述1)if(EmptyO)tlu'ow H卜溢";2)Node<T>*p=top;3)cout«p->data;四、遍历链栈元素算法步骤:自然语言描述:1、定义指针p指向栈顶结点2、判断栈是否为空3、返回栈元素的值4、把下一个指针的值赋给p 伪代码描述:1)Node<T>*p = top;2)while(p !=NULL)3)cout« p->data ;4)p = p->next;五、析构函数算法步骤:自然语言描述:1、判断栈顶指针是否为空2、定义指针p指向栈顶结点3、把下一个指针的值赋给栈顶指针4、释放要释放的指针伪代码描述:1)while(top)2)strnct Node <T> * p = top;3)top = top->next;4)deletep; 时间复杂的:0(1)。
院校资料-北邮数据库实验-实验一实验二

北邮数据库实验-实验一实验二学姐们倾情奉献~跪安吧少年少女们!北京邮电大学实验报告课程名称数据库系统原理实验内容实验一SQL SERVER安装、数据库创建与维护实验班级姓名指导老师成绩_________2014年03月18日实验一SQL SERVER安装、数据库创建与维护实验实验目的:1.通过对SQL SERVER2000的安装和简单使用:(1)了解安装SQL SERVER2000的软硬件环境和安装方法;(2)熟悉SQL SERVER2000相关使用;(3)熟悉SQL SERVER2000的构成和相关工具;(4)通过SQL SERVER2000的使用来理解数据库系统的基本概念。
实验内容。
2.通过创建数据库、并进行相应的维护,了解并掌握SQL SERVER数据库的创建和维护的不同方法和途径,并通过这一具体的数据库理解实际数据库所包含的各要素。
实验内容:1.SQL SERVER2000 安装(1)在windows2000/XP上安装并运行SQL SERVER2000。
(2)练习启动和停止数据库服务。
(3)通过SQL SERVER Enterprise Manager连接数据库。
(4)熟悉SQL SERVER Enterprise Manager的各项功能,了解SQL SERVER的主要对象。
(5) 了解SQL SERVER在安装时自动创建的数据库和几类系统表。
2.数据库创建与维护(1)创建“学生选课”数据库;要求主文件组包含主要文件和次要文件,建立两个次要文件组,分别包含两个次要文件,要求有相应的日志文件;(2)对数据库属性和参数进行查询、相应的修改和维护,内容包括:调整数据库的大小,完成数据库大小的增加、减小;增加文件组;修改日志文件的最大值;查看数据库的属性值;(3)练习数据库的删除等维护;(4)用Enterprise Manager管理工具和交互式的Transact_SQL语句分别完成以上操作。
北邮信通院数据结构实验二--八皇后问题实验报告(内附源代码完整版)

2.1存储结构
存储结构:栈(递归)
2.2关键算法分析
递归调用摆放皇后
1、关键算法伪代码:
(1).如果输入的row大于皇后的数量,则输出皇后的位置
(2)否则col从0开始递增
(3)检测(row,col)上的点是否符合条件,不符合则col自增,符合则转到下一个皇后的排列
2、代码详细分析:
void SeqStack::PlaceQueen(int row) //摆放皇后
{
for (int col=0;col< n;col++) //遍历0~7,
{
Push(col);
if (Check()) //判断摆放皇后的位置是否合适
{
if (row< n-1) //若还没有放到最后一个,则进行下一个皇后的放置
PlaceQueen(row+1);
else
{
num++; //计数器加1
{
if(top>= m-1) throw "上溢";
top++; //栈顶指针上移
data[top]=x;
}
void SeqStack::Pop() //出栈操作
{
if(Empty()) throw "下溢";
top--; //栈顶指针下移
}
void SeqStack::PlaceQue计放置八皇后,只要修改输入的N,便可显示其他情况的结果。
Print(n); //打印成功的坐标点
}
}
Pop(); //若不符合条件则出栈
}
}
bool SeqStack::Empty()
北邮大三下第2次数据库实验报告--kingbase数据库的建立

1 实验二数据库表/视图的创建与维护实验一、实验内容1、数据库表实验:(1)创建数据库表创建学生选课数据库中所包含的数据库表,数据库表结构如下:学生(学号,姓名,性别,年龄,系别,班级)课程(课程编号,课程名称,学分)选修(学号,课程编号,学生成绩)要求为各数据库表属性选择合适的数据类型。
列名、数据类型(长度列、精度、小数位数项)、是否允许空值等。
(2)查看和修改表结构。
选择一个数据库表,练习对其表结构进行相应的修改。
(3)练习用交互式的SQL语句分别完成以上操作。
(4)对学生数据库中的三张表分别插入数据;(5)对表中的数据进行修改;(6)对表中的数据进行删除操作2、视图实验:视图的建立、修改、删除(1)建立如下视图:学生选修课程信息视图,包括以下内容:学生学号、姓名、所在系、选修的课程编号、课程名称、成绩(2)修改以上视图,增加学生所在班级信息。
(3)对以上视图删除。
二、实验要求(1)用交互式语句完成以上操作;(2)能够对整个的过程进行批命令操作;(3)要求学生独立完成以上内容。
(4)根据以上内容确定实验步骤。
(5)实验完成后完成要求的实验报告内容。
三、实验平台及环境Windows7 系统Kingbase ES V7软件平台四、实验步骤及结果分析1、数据库表实验:2 (1)创建数据库表创建学生选课数据库中所包含的数据库表,数据库表结构如下:学生(学号,姓名,性别,年龄,系别,班级)课程(课程编号,课程名称,学分)选修(学号,课程编号,学生成绩)创建“学生选课”数据库sql代码Create database “学生选课” withEncoding =’GBK’;创建“学生选课系统”模式:Create shema “学生选课系统”;在“学生选课系统”模式中建立表格“学生”:create table "学生选课系统"."学生”("学号" varchar(10) notnull,“姓名”varchar(10) notnull,“年龄”numeric(1,0) notnull,“系别”varchar(20) notnull,“班级” char (10) notnull,primary key ("学号"));(2)查看和修改表结构。
数据结构_迷宫求解_实验报告 北邮
数据结构实验报告实验名称:实验二——利用栈结构实现迷宫求解问题学生姓名:班级:班内序号:学号:日期:2012年11月19日一、实验目的1、进一步掌握指针、模板类、异常处理的使用2、掌握栈的操作的实现方法3、掌握队列的操作的实现方法4、学习使用栈解决实际问题的能力5、学习使用队列解决实际问题的能力二、实验要求:利用栈结构实现迷宫求解问题。
迷宫求解问题如下:心理学家把一只老鼠从一个无顶盖的大盒子的入口赶进迷宫,迷宫中设置很多隔壁,对前进方向形成了多处障碍,心理学家在迷宫的唯一出口放置了一块奶酪,吸引老鼠在迷宫中寻找通路以到达出口,测试算法的迷宫如下图所示。
提示:1、可以使用递归或非递归两种方法实现2、老鼠能够记住已经走过的路,不会反复走重复的路径3、可以自己任意设置迷宫的大小和障碍4、使用“穷举求解”的方法三、程序分析1、存储结构栈存储结构;示意图;2、关键算法分析A、绘制迷宫;伪代码:1、输出迷宫的大小及全部设置为障碍;2、根据键盘的输入绘制迷宫的路线,起始点和终点;void draw()//绘制迷宫障碍{k=getch();switch(int(k)){case 105://上if(by>5){by--;j--;}break;case 107://下if(by<M+4){by++;j++;}break;case 106://左if(bx>2){bx=bx-2;i--;}break;case 108://右if(bx<2*N){bx=bx+2;i++;}break;case 114://'R'路map[i][j]=0;cout<<".";break;case 119://'W'墙map[i][j]=-3;cout<<"■";break;case 115://'S'起点s[0].x=i;//起点入栈s[0].y=j;top=1;map[i][j]=-1;cout<<k;break;case 101://'E'终点map[i][j]=-2;cout<<k;break;}gotoxy(bx,by);}B、路径寻找伪代码;1、向某一方向查找是否有路;2、如有遍历一下栈,看是否已经进栈,一进栈就舍弃,寻求下一个;无就让其进栈。
北邮数据库实验二用SQL Server实现数据库设计
实验二用SQL Server实现数据库设计实验目的:1.掌握使用企业管理器创建和管理SQL Server数据库及相关数据库对象。
2.掌握使用SQL语言中的SELECT命令实现查询功能。
上机准备:1.复习有关关系数据库的基本知识和概念;2.复习有关SQL语言中SELECT命令的使用;3.了解有关SQL Server系统的组成;4.复习有关SQL Server服务器的使用和管理;5.复习有关企业管理器的基本操作;6.复习有关查询分析器的基本操作;7.了解有关SQL Server服务器的登陆账号,密码;实验内容:本实验将建立一个学校教学管理数据库,在这个数据库中,存储以下信息:1.有关学生的信息,包括学生的学号,姓名,班级,性别,出生时间,政治面貌,籍贯,入学时间,联系电话,简历;Student(Sno,Sname, Ssex,Classno,Sbirth,Status,Hometown,Enrollment,Telephone,Resume)2.有关班级的信息,包括班级的班名,专业,年级,人数,班主任;SClass(ClassNo,ClassName,Major,Grade,Number,Advisor)3.有关课程的信息,包括课程编号,课程名称,课程类别(是指该课程为必修,指选还是任选),适用专业,适用年级,开课时间(是指在每个学年的第一学期,还是第二学期),学分,周学时;Course(CourseNo,CourseName,Category,Major,Grade,StartTM,Credits, WeekHours)4.有关学年课程安排的信息,包括课程编号,开设课程的学年(例如:2002学年),开设课程的班级,任课教师;Schedule(CourseNo,StartYear,ClassNo,Teacher)5.有关学生选课的信息,包括课程编号,学生的学号,成绩;SC(CourseNo,Sno,Score)一、熟悉开发环境练习:1.启动和停止SQL Server服务2.注册服务器3.使用企业管理器和查询分析器二、使用企业管理器完成数据库及数据库对象的创建和管理实验步骤:1.创建数据库(1)要求参数:数据库名称:teaching数据库逻辑文件名:teaching_data 日志逻辑文件名:teaching_log操作系统数据文件名:e:\xxx\teaching.mdf 操作系统日志文件名:e:\xxx\teaching.ldf数据文件初始大小:5MB 日志文件初始大小:1MB 数据文件最大大小:10MB 日志文件最大大小:2MB数据文件增长增量:10% 日志文件增长增量:10%(2)创建后在database节点查看是否已包含了刚创建的数据库teaching;(3)展开teaching 节点,以下的所有对象均创建在teaching 数据库中;2.创建用户定义的数据类型(1)练习按要求创建以下数据类型数据类型名称数据描述student_no 长度为10且不允许空值的字符型;member_no 整数,且存储的值不超过30000shortstring 最多15个字符的可变长字符型(2)考虑在该数据库中可能使用的自定义数据类型(例如:学号的数据类型),并创建3.创建表(1)根据上述数据库存储的信息,决定创建几个表,并给每一个表指定一个有意义的表名;(2)根据每个表中每列存储的数据的情况,为每个列指定列名,数据类型,数据的长度,是否允许为空等列的属性;(3)使用企业管理器建立所有的表;(4)创建之后,还可以根据具体情况,再对表的结构进行修改;(包括添加列,删除列,修改已存在的列)4.实现数据完整性(1)针对每一个表分析并定义主码(Primary Key)(2)定义UIQUE约束用来规定一个列中的两行不能有相同的值;例如:希望学生的姓名是唯一的;StudentSClassCourseScheduleSC(3)针对每一个表分析外部码,并利用“关系图”定义外部码(Foreign Key),建立表之间的参照关系;Create table SC(Sno char(9),CourseNo char(4),Score smallint,Primary key(Sno,CourseNo),Foreign key(Sno) refrences Student(Sno),Foreign key(CourseNo) refrences Course(CourseNo))(4)定义缺省值方法1:直接在表设计时,定义列的default属性;例如:练习在定义“性别”列时,定义它的缺省值为“男”;方法2:创建一个缺省值对象,然后绑定到任何一个需要的列;例如:练习创建并绑定一个缺省值到学生的联系电话,缺省值为“unknown”;Create defult telephone_defult as ‘unknown’(5)创建以上约束后,练习修改约束的操作(包括增加,修改和删除以上约束);5.根据自己所在班级的情况,对已经创建的表自己输入一些相关示例数据,在输入的过程中,特地输入一些违反上述约束条件的数据,观察处理的效果;(1)使用企业管理器,完成一些记录的插入、修改和删除;(2)练习使用INSERT、UPDATE、DELETE命令完成记录的插入、修改和删除;(3)练习使用TRUNCA TE TABLE命令删除表数据;t runcate table sc(4)在练习使用命令删除数据之前,可以使用SELECT INTO命令把数据保存到一个新建的表中;select * into B from SCselect * from Bdrop table Cselect Sno,CourseNo into C from SCselect * from C三、使用企业管理器创建和管理索引1.利用表的属性对话框,观察每个表已经自动创建的索引;exec sp_help Studentexec sp_help SClassexec sp_help Scheduleexec sp_help Courseexec sp_help SC2.针对学生选课信息表创建如下索引(1)按学号+课程编号建立主键索引,索引组织方式为聚簇索引;create clustered index PK_SC on SC(Sno,CourseNo)alter table SCdrop SC_primexec sp_help SC(2)按学号建立索引,考虑是否需要创建唯一索引,索引组织方式为非聚簇索引;create unique index PK_Sno on Student(Sno)exec sp_help Student(3)按课程编号建立索引,考虑是否需要创建唯一索引,索引组织方式为非聚簇索引;create index PK_CoursNo on Course(CourseNo)drop index Course.PK_CoursNoexec sp_help Course(4)再针对学生选课信息表输入一些数据,观察表中记录位置的变化;通过观察比较非聚簇索引和聚簇索引的不同之处;3.针对其它表,练习创建索引;(考虑:是否对每个列都应创建索引?应该从哪些方面考虑是否应为此列创建索引?)4.练习索引的修改和删除操作exec sp_helpindex SCexec sp_rename'SC.PK_SC','PL_SCindex'drop index Student.PK_Snoexec sp_helpindex Student四、使用查询分析器实现以下查询1.练习课堂上举例介绍的几类查询;2.实现以下查询(1) 检索选修了课程号为C1或C2课程,且成绩高于或等于70分的学生的姓名,课程名和成绩。
北邮数据库实验报告
一、实验名称数据库设计与实现二、实验目的与要求1. 理解数据库设计的基本概念和原则;2. 掌握数据库设计的方法和步骤;3. 学会使用数据库设计工具;4. 能够根据实际需求设计数据库并实现。
三、实验内容1. 数据库需求分析;2. 数据库概念结构设计;3. 数据库逻辑结构设计;4. 数据库物理结构设计;5. 数据库实现与测试。
四、实验环境1. 操作系统:Windows 102. 数据库管理系统:MySQL 5.73. 开发工具:Visual Studio Code五、实验步骤1. 数据库需求分析(1)确定系统目标:设计一个图书管理系统,实现对图书的借阅、归还、查询等功能;(2)收集用户需求:分析用户在使用图书管理系统的过程中需要实现的功能和操作;(3)整理需求文档:将收集到的需求整理成文档,为后续设计提供依据。
2. 数据库概念结构设计(1)确定实体:根据需求分析,确定图书、读者、借阅记录等实体;(2)确定实体间关系:分析实体间的关系,如借阅记录与图书、读者之间的关系;(3)绘制E-R图:根据实体和关系,绘制E-R图,表示数据库的概念结构。
3. 数据库逻辑结构设计(1)选择数据库模型:根据E-R图,选择合适的数据库模型,如关系模型;(2)创建数据库表:根据E-R图,将实体转化为数据库表,并定义表结构;(3)定义表间关系:根据实体间关系,定义表间关系,如外键等。
4. 数据库物理结构设计(1)确定存储引擎:选择合适的存储引擎,如InnoDB;(2)设计索引:根据查询需求,设计索引,提高查询效率;(3)调整表结构:根据实际需求,调整表结构,如增加、删除字段等。
5. 数据库实现与测试(1)使用MySQL数据库管理系统创建数据库;(2)根据逻辑结构设计创建表;(3)编写SQL语句实现实体间关系;(4)进行测试,确保数据库功能正常运行。
六、实验结果与分析1. 实验结果(1)成功创建图书管理系统数据库;(2)实现图书的借阅、归还、查询等功能;(3)数据库运行稳定,性能良好。
北邮数据库实验报告
void CourseMenu::OnBnClickedButton3()
//删除课程信息
{
// TODO: 在此添加控件通知处理程序代码
CString str1; //课程号
CString str2; //课程名
GetDlgItemText(IDC_EDIT3,str1);
GetDlgItemText(IDC_EDIT4,str2);
CString str; //sql语句
str.Format(_T("DELETE FROM cs WHERE idcs='%s'AND name='%s'"),str1,str2); //删除元组
CDatabase db;
CString sqlstr; //判断要删除的数据信息是否存在
sqlstr.Format(_T("select * from cs where idcs='%s' and name='%s'"),str1,str2);
单击测试连接,显示连接成功.
完成.
在服务器资源管理器中可以看到数据连接成功,
4,应用程序设计
功能. 学生基本信息管理 成绩管理 信息查询 对表的操作
其中 学生信息管理可以实现对学生信息的输入,删除,修改 成绩管理可以实现成绩录入,修改 查询功能包含岁学生信息的查询和对课程信息的查询. 对表的操作包括新建表,修改表,为表添加数据,删除表;
其中,当点击返回主菜单按钮时,返回主界面 实现代码如下:
void stuMan::OnBnClickedButton1() {
// TODO: 在此添加控件通知处理程序代码 this->OnOK(); mainMenu dlgmain; dlgmain.DoModal(); }
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、将自己的信息插入到stud_info 学生信息表中。
2、显示stud_grade 学生成绩表中成绩为85,86 或88 的记录。
3、显示stud_grade 学生成绩表中的最高分的学生学号和课程号。
4、查询“计算机工程系”、“计算机网络技术专业”、02 班全体学生的基本信息
5、查询“计算机工程系”、“计算机网络技术专业”、02 班的学生人数。
6、显示出与学号为“0401040112”的学生同年出生的所有学生的学号、姓名和出生日期。
7、在学生成绩表中,显示存在有85 分以上成绩的课程号。
8、在学生成绩表中,显示所有成绩为空的记录信息。
9、查询所有电话号码的开头为010的同学的姓名、电话、地址和邮政编码。
10、查询所有女教师的平均工资。
11、查询课程号为'0401010103'的课程的最高分、最低分和平均分。
12、查询选了课且至少有一门课没有成绩的学生人数。
13、按职称统计各个教研室的教师人数。
14、将计算机工程系职称为讲师的教师按年龄由低到高排列。
15、将所有选了课的学生的学号按平均成绩由高到低排列。
16、将stud_grade 学生成绩表中课程号为“0401010106”的成绩加5。
17、删除stud_info 学生信息表中姓名为“张源”的学生记录。
18、求选修了“数据库原理”的学生的学号及姓名。
19、查询所有没选修“0401010103”课程的学生学号及姓名。
20、查询与王刚在同一个系学习的学生的姓名和所在的系。
21、查询成绩为小于60分的学生的学号、姓名。
22、查询修了“0401010103”课程且成绩高于此课程的平均成绩的学生的学号和成绩。
23、显示选了课程号为“0401010105”的上课教师姓名。
24、统计不及格人数在3 人以上的课程的数量。
25、显示“计算机工程系”老师所教课程的成绩表。