天津理工大学计算机专业数据库实验二
天津理工大学计算机专业数据库实验二

实验报告学院(系)名称:计算机与通信工程学院姓名范学号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来凝结数据库的编程方法,建立一个应用程序,具有向学生、课程、选课表增加修改删除记录的功能,选取其中一个功能用存储过程实现。
需要接取程序运行界面。
天津理工大学C#实验二学习资料

天津理工大学C#实验二实验报告学院(系)名称:计算机科学与工程学院textBox3.Text = (x * y).ToString();}}private void Form1_Load(object sender, EventArgs e) {}}}运行结果:2、Timer 组件的使用,要求利用 Timer 组件实现一时钟。
代码实现:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace _2._2{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){timer1.Tick += new EventHandler(timer1_Tick);timer1.Interval = 1000;timer1.Start();}private void timer1_Tick(object sender, EventArgs e){textBox1.Text = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");}}}运行结果:3、ComboBox 控件的使用已知数组 data 中存放政治面貌的值,试将 data 中的值初始化到 ComboBox控件中,并实现当选中某个值时将其显示在一个 TextBox 控件中。
代码实现:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace _2._3{public partial class Form1 : Form{string[] data = {"中共党员","共青团员","群众","民主党派","无党人士","其他"};public Form1(){InitializeComponent();}private void label2_Click(object sender, EventArgs e){}private void Form1_Load(object sender, EventArgs e){for (int i = 0; i < data.Length; i++){comboBox1.Items.Add(data[i]);}}private void comboBox1_SelectedIndexChanged(object sender, EventArgs e){textBox1.Text = comboBox1.Text;}}}运行结果:4、ListView 控件的使用将二维数组中的信息在 ListView 控件中。
天津理工大学软件工程实验报告II

管理员类和工作人员类是控制类。
顾客类是边界类。
系统对象图:
附录(可包括源程序清单或其它说明)
心得体会:
通过本次实验,我基本掌握了Ration Rose画类图和对象图的基本操作,也让我感受到想和做有很大的差距,以前总觉得画类图很简单,但当真正画的时候,就感到有些困难,因为需要考虑每个类的属性,以及各个类之间的关系,以后实验课我会继续努力的。
天津理工大学
计算机科学与工程学院
实验报告
2017至2018学年第一学期
课程名称
软件工程
学号
年级
2015
专业
计算
教学班号
3
实验地点
7-215
实验时间
2017年11月14日第三节至11月14日第四节
考核标准
实验过程
25分
建模质量
20分
回答问题
15分
实验报告
30分
特色
功能
5分
考勤违纪情况
Welcome To
Download !!!
欢迎您的下载,资料仅供参考!
5分
实验成绩
成绩栏
考核内容
评价在实验课堂中的表现,包括实验态度、建模过程等内容。
○功能完善
○功能不全
○有小错
○质量很差
○正确
○基本正确
○有提示
○无法回答
○完整
○较完整
○一般
○内容少
○无报告
○有
○无
○有
○无
其它批改意见:
教师签字:
实验(二)
实验名称
系统分析与对象类建模
软件环境
Windows操作系统、Rational Rose等软件
天津理工大学数据结构实验报告2

Байду номын сангаас
int judge_huiwen(char a[],int n){ //判断一个字符串是否是回文 SeqStack *s; s=InitStack(); int i=1,j=1; while(i<=n/2){ Push(s,a[i]); i++; } if(n%2!=0)i++; while(i<=n&&j==1){ if(a[i]==Pop(s)) i++; else{j=0; break; } } return j;
使用栈,将字符串的前一半入栈,再依次出栈,与后一半进行比较,若不相等,则不 是回文,否则是回文 2.1 初始化栈s; 2.2 利用i记录循环次数,i的初始值为1,循环直到i=字符串的一半时结束 字符串下标为i的字符依次入栈。 2.3 若字符串长度为偶数,i值不变,否则i+1; 2.4 利用while循环,依次比较下标为i的字符串中的字符与出栈元素是否相等,以j=1, 作为标志,若不等j=0并打断循环 2.5 返回j的值,j=1,则字符串是回文,否则不是回文 3. 主函数 3.1 首先输入字符串的长度,然后依次输入字符; 3.2 输出字符串; 3.3 调用函数判断字符串是否是回文。
理工大学数据库实验报告

理工大学学生实验报告一.数据定义(一)基本表的操作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岁以下的学生姓名及其年龄。
《数据库实验》实验二 数据操作实验

院系:计算机学院实验课程:数据库实验实验项目:数据操作实验指导老师:XXX开课时间:XXXX ~ XXXX年度第 2学期专业:XXXX班级:XXXX级本X班学生:XXX学号:XXXXXXXX实验二数据操作实验一、实验任务及目的1. 实验任务:上机完成实验内容,主要是编写、运行和分析SQL,请预先自行判断SQL 的运行结果(例如:查询结果包含哪些数据;更新后关系数据如何变化),然后与实际的运行结果比较,以此发现和修正SQL编写中的错误。
2. 实验目的:能够熟练使用MS SQL Server的Query Analyzer工具,联机运行SQL并观察分析SQL的执行结果。
掌握SQL的数据定义、数据查询和数据修改功能,能独立用SQL表述问题,解决较复杂的应用需求。
二、实验的主要硬件软件环境MS SQL Server、计算机磁盘三、实验主要数据结构线性表四、实验的主要算法1.至少向北京或天津的工程提供了零件的供应商名,供应的零件名、工程名和供应数量。
SELECT PNAME,JNAME,SNAME,QTYFROM S,P,J,SPJWHERE SPJ.SNO=S.SNOAND SPJ.JNO=J.JNOAND SPJ.PNO=P.PNOAND (J.CITY=’上海’ OR J.CITY=’天津’)2.供应红色零件给工程J1的供应商名SELECT SNAMEFROM S,P,SPJWHERE SPJ.JNO=’J1’AND SPJ.SNO=S.SNOAND SPJ.PNO=P.PNOAND COLOR=’红’3. 没有使用天津产的零件的工程号SELECT JNOFROM JWHERE JNO NOT IN(SELECT JNOFROM SPJ,SWHERE SPJ.SNO=S.SNOAND CITY=’天津’)4.没有向位于相同城市的工程供应零件的供应商名SELECT SNAMEFROM SWHERE SNAME NOT IN( SELECT SNAMEFROM S,J,SPJWHERE SPJ.JNO=J.JNOAND SPJ.SNO=S.SNOAND S.CITY=J.CITY)5. 和工程J3位于同一城市且使用过至少一种相同零件的其它工程名SELECT DISTINCT(JNAME)FROM J,SPJWHERE SPJ.JNO=J.JNOAND CITY IN(SELECT CITYFROM JWHERE J.JNO=’J3’)AND JNAME NOT IN(SELECT JNAMEFROM JWHERE J.JNO=’J3’)6. 每种颜色零件的总重量SELECT COLOR,SUM(WEIGHT)FROM PGROUP BY (COLOR)7.红色零件的平均重量SELECT AVG(WEIGHT)FROM PWHERE COLOR=’红’8.供应商最集中的城市(意即,哪个城市的供应商最多?)SELECT S.CITYFROM SGROUP BY (CITY)HAVING COUNT(CITY)>=ALL(SELECT COUNT(CITY)FROM SGROUP BY (CITY))9.对上海和天津,统计该城市的供应商一共供应了多少数量的零件。
OSG多边形的填充实验二

天津理工大学计算机科学与技术学院实验报告2015 至2016 学年第二学期源代码:#include<osg/Geode>#include<osgDB/ReadFile>#include<osgUtil/SmoothingVisitor>#include<osgViewer/Viewer>#include<osg/Matrixd>#include<osg/MatrixTransform>#include<osg/ShapeDrawable>#include<osg/Texture2D>#include<osgGA/GUIEventHandler>#include<vector>#include<osgText/Text>#include <osg/PositionAttitudeTransform>#include<stdlib.h>#include<time.h>#define MIN 0 //随机数产生的范围#define MAX 1osg::Group* createLight2(osg::Node*);class UseEventHandler:public osgGA::GUIEventHandler{private:float angle;float move;float scale;public :UseEventHandler(){angle=0;move=0;scale=1;}virtual bool handle (const osgGA::GUIEventAdapter&ea,osgGA::GUIActionAdapter& aa){osgViewer::Viewer *viewer =dynamic_cast<osgViewer::Viewer*>(&aa);if(!viewer)return false;osg::ref_ptr<osg::MatrixTransform> root =dynamic_cast<osg::MatrixTransform*>(viewer ->getSceneData());if(!root)return false;switch(ea.getEventType()){case osgGA::GUIEventAdapter::KEYDOWN:{if(ea.getKey()=='w'){angle +=osg::PI_2/90;root->setMatrix(osg::Matrix::translate(-5,-5,0)*osg::Matrix::rota te(angle,osg::Vec3(0,0,1)*osg::Matrix::translate(5,5,0)));}else if(ea.getKey()=='s'){angle -=osg::PI_2/90;root->setMatrix(osg::Matrix::translate(-5,-5,0)*osg::Matrix::rota te(angle,osg::Vec3(0,0,1)*osg::Matrix::translate(5,5,0)));}else if(ea.getKey()=='q'){scale+=0.1;root->setMatrix(osg::Matrix::scale(scale,scale,scale));}else if(ea.getKey()=='a'){scale-=0.1;root->setMatrix(osg::Matrix::scale(scale,scale,scale));}else if(ea.getKey()=='e'){move+=1;root->setMatrix(osg::Matrix::translate(0,0,move));}else if(ea.getKey()=='d'){move-=1;root->setMatrix(osg::Matrix::translate(0,0,move));}return true ;}break;default:break;}return false;}};osg::Group* PaintMountainImprove(){osg::ref_ptr<osg::Node> node = new osg::Node;osg::ref_ptr<osg::Group> group = new osg::Group;osg::ref_ptr<osg::Geode> geode =new osg::Geode;osg::ref_ptr<osg::Geometry> geometry = new osg::Geometry;osg::ref_ptr<osg::MatrixTransform> transform =newosg::MatrixTransform;osg::ref_ptr<osg::MatrixTransform> childTransform[10];osg::ref_ptr<osg::Geometry> geometry1[10];osg::ref_ptr<osg::Geode> geode1[10];osg::ref_ptr<osg::Vec3Array> point[10];osg::ref_ptr<osg::Vec3Array> colors[10];osg::ref_ptr<osg::Vec3Array>normals=new osg::Vec3Array;srand((unsigned)time(0));double hight=0;int trans=0;for(int i=0;i<10;i++){childTransform[i]=new osg::MatrixTransform;geometry1[i] = new osg::Geometry;geode1[i] = new osg::Geode;point[i]=new osg::Vec3Array;colors[i]=new osg::Vec3Array;geometry1[i]->setVertexArray(point[i].get());geode1[i]->addDrawable(geometry1[i].get());childTransform[i]->addChild(geode1[i].get());transform->addChild(childTransform[i]);for(int j=0;j<10;j++){if(i==0||j==0||j==9||i==9){hight=0;}else{hight=MIN + 5*(int)MAX * rand() / (RAND_MAX);}trans=int(hight*4096/5);point[i]->push_back (osg::Vec3(j,i,hight));colors[i]->push_back(osg::Vec3(0,((trans/16)%16)/16.0,0));}}normals->push_back(osg::Vec3(0,0,1));osg::ref_ptr<osg::Vec3Array> point1=new osg::Vec3Array;osg::ref_ptr<osg::Vec3Array>colors1=new osg::Vec3Array;osg::ref_ptr<osg::Vec2Array> texCoord =new osg::Vec2Array;for(int i=0;i<9;i++){for(int j=0;j<9;j++){point1->push_back(point[i]->at(j));point1->push_back(point[i]->at(j+1));point1->push_back(point[i+1]->at(j));point1->push_back(point[i+1]->at(j+1));colors1->push_back(colors[i]->at(j));colors1->push_back(colors[i]->at(j+1));colors1->push_back(colors[i+1]->at(j));colors1->push_back(colors[i+1]->at(j+1));texCoord->push_back(osg::Vec2(0.1*j,0.1*i));texCoord->push_back(osg::Vec2(0.1*(j+1),0.1*i));texCoord->push_back(osg::Vec2(0.1*j,0.1*(i+1)));texCoord->push_back(osg::Vec2(0.1*(j+1),0.1*(i+1)));geometry->addPrimitiveSet(newosg::DrawArrays(osg::DrawArrays::TRIANGLE_STRIP,i*36+j*4,4));}}point1->push_back(osg::Vec3(0,0,0));point1->push_back(osg::Vec3(9,0,0));point1->push_back(osg::Vec3(9,9,0));point1->push_back(osg::Vec3(0,9,0));colors1->push_back(osg::Vec3(0,0,0));colors1->push_back(osg::Vec3(0,0,0));colors1->push_back(osg::Vec3(0,0,0));colors1->push_back(osg::Vec3(0,0,0));texCoord->push_back(osg::Vec2(0,0));texCoord->push_back(osg::Vec2(0,1));texCoord->push_back(osg::Vec2(1,0));texCoord->push_back(osg::Vec2(1,1));geometry->setVertexArray(point1.get());//geometry->setTexCoordArray(0,texCoord.get());geometry->setColorArray(colors1.get());geometry->setColorBinding(osg::Geometry::BIND_PER_VERTEX);geometry->setNormalArray(normals.get());geometry->setNormalBinding(osg::Geometry::BIND_OVERALL);geometry->addPrimitiveSet(newosg::DrawArrays(osg::DrawArrays::QUADS,9*36,4));//geometry->getOrCreateStateSet()->setTextureAttributeAndModes(0, new osg::Texture2D(osgDB::readImageFile("map.png")));geode->addDrawable(geometry);group->addChild(geode.get());group->addChild(createLight2(group.get()));return group.release();}osg::Group* createLight2(osg::Node* pNode){osg::Group* lightGroup = new osg::Group;osg::BoundingSphere bs = pNode->getBound();osg::ref_ptr<osg::Light> light = new osg::Light();light->setLightNum(0);light->setDirection(osg::Vec3(0.0f, 0.0f, -1.0f));light->setPosition(osg::Vec4(bs.center().x(), bs.center().y(), bs.center().z() + bs.radius(), 0.0f));light->setAmbient(osg::Vec4(1.0f, 1.0f, 1.0f, 1.0f));light->setDiffuse(osg::Vec4(1.0f, 1.0f, 1.0f, 1.0f));light->setConstantAttenuation(1.0f);light->setLinearAttenuation(0.0f);osg::ref_ptr<osg::LightSource> lightSource = newosg::LightSource();lightSource->setLight(light.get());return lightSource.release();}int main(int argc,char **argv){osg::ref_ptr<osg::MatrixTransform> root = new osg::MatrixTransform;root->addChild(PaintMountainImprove());osgViewer::Viewer viewer;viewer .setSceneData(root.get());viewer.addEventHandler(new UseEventHandler());//viewer.setSceneData(createHouseWall());//while(1){return viewer.run();//}}。
031202534_张逸君_实验二

学号:031202534 姓名:张逸君EMAIL:455852025 学院:数计专业:计算机类《数据库应用实践》实验二:数据库管理系统的维护与管理实验目的:掌握DBMS 提供的数据完整性功能;理解数据库安全性,掌握DBMS 的用户和权限管理;理解存储过程概念,掌握存储过程的使用方法;掌握触发器的使用;掌握备份、还原的基本技术。
实验环境:操作系统:Windows 7 SP1 X64数据库管理系统:Micrsoft SQL Server 2012实验内容:(一)数据库安全性:1、添加登陆账号与数据库用户。
1)创建登录名并设定账号密码CREATE LOGIN SQLTESTWITH PASSWORD='sqltest123'新创建的用户可以登录数据库,但是无访问该数据库的权限。
2)添加用户USE仓库库存CREATE USER SQLUSERFOR LOGIN SQLTEST2、对用户授予权限、收回权限1)授予权限授予对“仓库库存”数据库中“管理员表”的SELECT权限USE仓库库存GRANT SELECTON管理员表TO SQLUSER2)收回权限收回对“仓库库存”数据库中“管理员表”的SELECT权限USE仓库库存REVOKE SELECTON管理员表TO SQLUSER(二)触发器、存储过程的使用1、创建存储过程1)创建存储过程完成对仓库库存数据库中商品表所有商品的编号、单价、生产商的查询USE仓库库存GOCREATE PROCEDURE select_allASSELECT*FROM商品表执行存储过程select_all2)创建带参数的存储过程,完成对仓库表中指定编号仓库信息的查询USE仓库库存GOCREATE PROCEDURE select_cangku@number char(3)ASSELECT*FROM仓库表WHERE仓库编号=@number执行该存储过程:USE仓库库存GOEXECUTE select_cangku'002'3)创建具有返回值的存储过程完成对“管理员表”中籍贯为给定地区的管理员的人数USE仓库库存GOCREATE PROCEDURE select_jiguan@area varchar(10),@number int OUTPUTASSELECT COUNT(籍贯)FROM管理员表WHERE籍贯=@area执行所创建的存储过程USE仓库库存GODECLARE@number intEXECUTE select_jiguan'福建',@number2、修改存储过程修改上例中的存储过程,改为查找“管理员表”中职位为给定职务的管理员的总人数USE仓库库存GOALTER PROCEDURE select_jiguan@job char(10),@number int OUTPUTASSELECT COUNT(职务)AS总人数FROM管理员表WHERE职务=@job执行存储过程:USE仓库库存GODECLARE@number intEXECUTE select_jiguan'干事',@number3、删除存储过程USE仓库库存GODROP PROC select_jiguan4、创建触发器1)创建DML型触发器a)创建INSERT和DELETE触发器,在对“商品表”进行INSERT和DELETE操作时将触发提示操作USE仓库库存GOCREATE TRIGGER insert_deleteON商品表FOR INSERT,DELETEASPRINT'你正在对商品表进行插入或删除操作'执行对商品表插入一条商品记录的操作时:b)使用INSTEAD OF关键字USE仓库库存GOCREATE TRIGGER instead_ofON仓库表INSTEAD OF DELETE,UPDATEASPRINT'你对仓库表的修改或删除操作无效!'对“仓库表”进行删除操作时,系统显示:c)创建UPDATE触发器,不允许修改管理员籍贯一栏,一旦触发将提示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
学院(系)名称:计算机与通信工程学院
姓名范学号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来凝结数据库的编程方法,建立一个应用程序,具有向学生、课程、选课表增加修改删除记录的功能,选取其中一个功能用存储过程实现。
需要接取程序运行界面。
四. 实验步骤
1.使用SQL对数据进行完整性控制和检验
完整性约束
如图所示,建立表是约束学生姓名不能为空,性别只能在男女之间二选一
下面进行完整性检验插入操作
违背约束条件导致错误
正常执行
姓名不能为空
以上说明当操作违反了完整性约束条件的时候,系统报将截断字符串或二进制数据。
错处理
2.存储过程的建立及使用带输入参数和输出参数的存储过程
创建存储过程并且带有参数入出
查询学生表中的所有学生,并实现调用。
新建存储过程getStudentList查询所有学生信息
执行存储过程getStudentList .修改学号为@sno的全部信息源代码:
CREATE PROCEDURE getStudentList as
begin
SELECT*FROM Student
end
go
存储过程建立完毕EXEC getStudentList;
源代码:
CREATE PROCEDURE upd(@sno CHAR(9))
AS
begin
UPDATE Student
SET sno='200956273',sname='徐梦佳',sex='女',age='21',dept='CS' WHERE sno=@sno
end
go
接下来执行该存储过程,修改学号为@sno=200215122
向学生表中插入学生,并实现调用
/*源代码:
inser (@sno CHAR (9),@sname CHAR (20),@sex CHAR (2),@age SMALLINT ,@dept CHAR (20)) AS
INSERT INTO
Student (sno ,sname ,sex ,age ,dept )
V ALUES (@sno ,@sname ,@sex ,@age ,@dept );*/ 调用存储过程
inser
调用成功!
信息成功插入!
.查询姓名为@sname 选修的数据库课程的成绩,并实现调用
调用checkgrade EXEC checkgrade '徐梦佳';
.查询选修了课程名为@cname 并且成绩高于该门课程平均分的学生学号和成绩,并实现调用。
源代码:
CREATE PROCEDURE
checkgrade (@sname name CHAR (20)) AS
SELECT @sname ,grade FROM Student ,SC
WHERE Student .sno =SC .sno AND cno = (SELECT cno FROM Course
WHERE cname ='数据库' );
源代码:
CREATE PROCEDURE larger_A VG(@cname CHAR(40))
AS
SELECT cname,sno,grade
FROM Course,SC
WHERE o=o AND cname=@cname AND grade> (SELECT A VG(grade)
FROM SC
WHERE cno=
(SELECT cno
FROM Course
WHERE cname=@cname
)
);
调用larger_A VG查询数据库课程数据库中建立的存储过程
成绩高于该门课程平均分的学生学号和成绩
III.基于一个给定的java应用程序
选取插入操作,调用存储过程inser来插入信息
查看插入结果
调用存储过程插入操作成功!
大学啊不错啊,好好学习,不要耽误了青春,但是是这个专业坑爹啊,,找好自己的方向,不要被这个专业误导了啊,,
理工的学妹,学弟们,你说呢,,哈哈哈哈,嘿嘿联系。