数据库应用实验.docx
《数据库应用实验.docx》由会员分享,可在线阅读,更多相关《数据库应用实验.docx(28页珍藏版)》请在冰豆网上搜索。
数据库应用实验
实验1、熟悉实验环境,并建立数据库
一、实验目的:
1熟悉SQLSERVER环境;
2使用SQLSERVER建立数据库;
3理解关系数据库的基本概念
二、考察知识点:
关系数据库的基础知识
1关系--表
2主码(主键),外码(外键)
3关系的完整性
(1)实体完整性(主码)
(2)参照完整性(外码)
(3)用户定义的完整性(规则,默认)
三、实验内容:
1进入企业管理器建立一个教学管理数据库.包含以下表:
学生(学号,姓名,性别,年龄,所在系)
课程(课程号,课程名,先行课,学分)
选课(学号,课程号,成绩)
教师(教师号,姓名,职称)
任课(教师号,课程号,时间)
并为各表选择主键和外键
2建立规则rule_sex,和rule_age
使学生的性别只能为’男’或’女’
使学生的年龄在10到40之间.
3建立默认值default_department
使所在系的默认值为‘计算机’。
4输入一些数据
5检验实体完整性,参照完整性,规则,及默认
(1)在学生表中输入(95004,何键,男,20,计算机)。
如果数据无法保存,解释数据无法保存的原因
(2)在选课表中输入(01002,1,70)。
如果数据无法保存,解释数据无法保存的原因。
(3)在学生表中输入(95005,何键,male,20,计算机)。
如果数据无法保存,解释数据无法保存的原因
(4)在学生表中输入(95005,何键,男,20)。
保存数据,并查看数据库中该记录。
与输入比较该记录有何不同。
三、实验步骤:
◆建立数据库和表
1在程序中选择MICROSOFTSQLSERVER
2进入服务管理器,点击———开始/继续
3再进入企业管理器,
点击MICROSOFTSQLSERVERS
点击SQLSERVER组,
点击服务器,
点击数据库
4在数据库文件夹下列出了服务器上的所有数据库
右键点击数据库,选择新建数据库,输入教学管理,并确定
5点击数据库文件夹下的教学管理,用右键点击表,选择新建表.
为表建立字段选择数据类型,选定关键字,最后保存表并命名。
6重复5建立多张表。
7右键点击关系图,选择新建,从教学管理数据库中选择出课程,学生选课,教师,任课五张表。
8在关系图中用右键点击选课表,并选择关系,点击新建,从主键表和外键表中选择相应字段构造外键关系。
同理建立任课与教师,任课与课程的外键关系。
保存关系图,并保存它对数据库的修改。
9点击数据库文件夹下表,并用右键点击你新建的表,选择打开表,再选择返回所有行,输入一些数据。
◆建立规则
1从教学管理数据库下选择右键规则,并新键规则,在规则名中输入rule_sex,在文本中输入@col=’男’or@col=’女’.确定
(@col表变量名,在SQLSERVER中变量名必须以@开头)
2右键点击规则rule_sex,选择属性,绑定列,从表中选择学生,再将未绑定的列中的性别添加到绑定列。
3同样可建立其它规则
◆建立默认
1从教学管理数据库下选择右键默认,并新键默认,在默认名中输入default_department,在文本中输入’cs’,确定
2点击默认default_department,选择属性,绑定列,从表中选择学生,再将未绑定的列中的所在系添加到绑定列。
3同样可以建立其它默认。
实验2、SQL
一、实验目的:
熟悉SQL
二、考察知识点
SQL语法
三、实验内容:
1进入SQLSERVER中的查询分析器。
2利用CRETAEDATABASE建立教学管理数据库。
3使用CREATETABLE建立表
学生(学号,姓名,性别,年龄,所在系)
课程(课程号,课程名,先行课,学分)
选课(学号,课程号,成绩)
教师(教师号,姓名,职称)
任课(教师号,课程号,时间)
(1)通过语句PRIMARYKEY,FOREIGNKEY建立主键和外键
(2)通过语句CHECK使学生表中的性别为‘男’或‘女’,年龄为
10到40。
(3)通过语句DEFAULT使所在系的默认值为‘计算机’
4练习使用INSERTINTO输入各表数据;用SELECT语句进行查询,利用DELETE语句删除记录,利用UPDATE语句对数据进行修改。
四实验步骤:
1进入查询分析器
2输入服务器名(你的计算机名),用户名:
sa,口令:
(无)
3在界面上输入
附:
可将创建数据库表和插入数据在一段sql语句里完成,代码参考如下:
--创建和删除数据库时,当前数据库应是master数据库
usemaster
go
--如该数据库存在,则删除
dropdatabase教学管理
--创建数据库
CREATEDATABASE教学管理
ON
(NAME=MANAGER_DAT,
FILENAME='D:
\MANAGERDAT.MDF',
SIZE=10MB,
MAXSIZE=50MB,
FILEGROWTH=5)
LOGON
(NAME=MANAGER_LOG,
FILENAME='D:
\MANAGERLOG.LDF',
SIZE=5MB,
MAXSIZE=50MB,
FILEGROWTH=5MB);
GO
USE教学管理;
GO
--创建数据表
CREATETABLE学生
(学号CHAR(6)notnull,
姓名CHAR(10),
性别char
(2),
年龄int,
所在系char(16),
primarykey(学号)
)
GO
CREATETABLE课程
(课程号CHAR(6)notnull,
课程名char(16),
先行课char(6),
学分int,
primarykey(课程号)
)
GO
CREATETABLE选课
(学号CHAR(6)notnull,
课程号CHAR(6)notnull,
成绩int,
primarykey(学号,课程号)
)
GO
CREATETABLE教师
(教师号CHAR(6)notnull,
姓名char(10),
职称char(10),
primarykey(教师号)
)
GO
CREATETABLE任课
(教师号CHAR(6)notnull,
课程号char(6)notnull,
时间char(16),
primarykey(教师号,课程号)
)
go
createtable用户
(用户编号char(10)notnull,
口令char(10),
脚色char(16),
primarykey(用户编号)
)
use教学管理;
go
--INSERTINTO为各表输入数据。
insertinto学生values('02001','张红','女',20,'计算机');
insertinto学生values('02002','王小红','女',20,'计算机');
insertinto学生values('02003','张平','男',19,'计算机');
insertinto学生values('02004','李健康','男',20,'计算机');
insertinto学生values('02005','廖兵','男',18,'计算机');
insertinto学生values('02006','贺红生','男',20,'计算机');
insertinto学生values('02007','丁辉','女',19,'计算机');
insertinto学生values('02008','肖明','男',21,'计算机');
insertinto学生values('02009','黄朋','女',20,'计算机');
insertinto学生values('02010','谭大兵','男',22,'计算机');
insertinto课程values('001','计算机基础','',2);
insertinto课程values('002','数据结构','006',4);
insertinto课程values('003','数据库设计','005',4);
insertinto课程values('004','网络程序设计','007',4);
insertinto课程values('005','数据库原理','001',4);
insertinto课程values('006','PASCAL','001',3);
insertinto课程values('007','网络原理','001',4);
insertinto选课values('02001','001',78);
insertinto选课values('02001','002',86);
insertinto选课values('02002','003',87);
insertinto选课values('02002','004',75);
insertinto选课values('02003','001',80);
insertinto选课values('02003','003',67);
insertinto选课values('02004','002',58);
insertinto选课values('02004','005',49);
insertinto选课values('02005','004',80);
insertinto选课values('02005','006',79);
insertinto选课values('02006','002',89);
insertinto选课values('02006','003',67);
insertinto选课values('02007','001',88);
insertinto选课values('02007','003',68);
insertinto选课values('02008','001',63);
insertinto选课values('02008','004',60);
insertinto选课values('02009','003',73);
insertinto选课values('02009','004',72);
insertinto选课values('02010','001',57);
insertinto选课values('02010','002',76);
insertinto教师values('0001','肖新','助教');
insertinto教师values('0002','杨宾','讲师');
insertinto教师values('0003','王平','工程师');
insertinto教师values('0004','李进','副教授');
insertinto教师values('0005','张建','教授');
insertinto任课values('0001','001','星期三第一讲');
insertinto任课values('0002','002','星期四第二讲');
insertinto任课values('0003','003','星期一第四讲');
insertinto任课values('0004','004','星期五第三讲');
insertinto任课values('0005','005','星期三第三讲');
insertinto任课values('0002','006','星期六第一讲');
insertinto任课values('0003','007','星期二第一讲');
insertinto用户values('02001','02001','student');
insertinto用户values('02002','02002','student');
insertinto用户values('admin','admin','admin');
insertinto用户values('0001','0001','teacher');
--GO起分隔作用
--USE使其下命令在其后数据库下运行
4点击工具栏上的执行SQL语句
5如果执行成功,保存代码。
(例如可命名为CREATE.SQL,以后要再建立此数据库使用可直接打开该文件执行)。
6重开一个新窗口。
完成三.4。
实验3、用PB建立登录界面及注册界面
一、实验目的:
1掌握使用SQLSERVER专用接口连接数据库
2熟悉PB程序开发过程
3熟悉在PB中嵌入SQL。
二、考察知识点:
1POWERBUILDER连接数据库
2PB程序开发过程
3窗口的建立和编程(《POWERBUILDER8.0实用教程》第四章)
4应用对象的建立和编程(《POWERBUILDER8.0实用教程》第二章)
5嵌入SQL的使用(《POWERBUILDER8.0实用教程》第八章第八节)
三、实验内容与步骤:
1在SQLSERVER中打开教学管理数据库,并在其中增加一个表:
用户(用户编号,口令,角色),用以记录用户信息。
输入几条记录。
例如
(111,123456,ADMIN),(1120,123,TEACHER),(95001,123,STUDENT)
**如果用户是学生则用户编号为该学生学号.
如果用户是教师则用户编号为该教师的教师号
2进入POWERBUILDER,点击工具栏上的database进入数据库画
板。
3选择专用接口MSSMICROSOFTSQLSERVER,在其上击右键选择NEWPROFILE。
输入以下信息:
PROFILENAME:
教学管理
SERVER:
W3_xxx(你的计算机名)
LOGID:
SA
PASSWORD:
DATABASE:
教学管理
确定
4双击MSSMICROSOFTSQLSERVER下的教学管理。
(连接该数据库)
点击TABLES可以看见教学管理数据库中的所有表。
右键点击表用户,选择EDITDATA---GRID,则出现该表中的数据
5新建WORKSPACE。
命名为STUDY.PBW
参考《POWERBUILDER8.0实用教程》PAGE44
6新建APPLICATION对象.命名为STUDY.PBL
参考《POWERBUILDER8.0实用教程》PAGE45
登录界面
1新建一个窗口W_LOGIN(《POWERBUILDER8.0实用教程》PAGE55)
在窗口W_LOGIN放置控件,界面如图。
参考《POWERBUILDER8.0实用教程》PAGE63
2对登录按钮编程:
参考(《POWERBUILDER8.0实用教程》PAGE317)
3对APPLICATION对象编程(《POWERBUILDER8.0实用教程》PAGE52)
在程序的最后加上OPEN(W_LOGIN)
4点击工具栏中的RUN图标,应用程序开始运行。
思考:
新建三个窗口W_ADMIN,W_TEACHER,W_STUDENT。
三个窗口上分别显示WELCOMEADMIN!
,WELCOMETEACHER!
,
WELCOMESTUDENT!
。
登录后如何根据角色不同而进入不同的窗口
注册新用户界面
1建立一个新窗口W_ADDUSER,并在窗口上放置控件,界面如图.
2对确定按钮编程
参考(《POWERBUILDER8.0实用教程》PAGE207,INSERTINTO)
3将应用对象的OPEN事件程序的最后改为OPEN(W_ADDUSER,)
4点击工具栏中的RUN图标,运行应用程序。
5点击工具栏上的database进入数据库画板,检查新数据是否进入用户表。
实验4、菜单
一、实验目的:
1熟悉菜单的建立
2熟悉窗口的类型
3熟悉OPENSHEET函数
二、考察知识点
MDI应用的建立
(《POWERBUILDER8.0实用教程》第五章)
三、实验内容与步骤:
1进入POWERBUILDER打开工作空间STUDY.PBW。
2建立一个菜单对象,每个菜单项包含工具条和快捷键。
命名为M_MAIN
菜单如图。
参考(《POWERBUILDER8.0实用教程》PAGE91)
3建立新窗口W_MAIN,在其属性WidowType下选择MDI。
参考(《POWERBUILDER8.0实用教程》PAGE57)
4将菜单M_MAIN挂在窗口W_MAIN.
参考(《POWERBUILDER8.0实用教程》PAGE98)
5打开菜单M_MAIN,在菜单项‘注册新用户’的CLICKED事件下输入:
OPENSHEET(W_ADDUSER,W_MAIN,6,ORIGINAL!
)
通过POWERBUILDER中的帮助查找OPENSHEET函数的使用说明。
6在菜单M_MAIN的菜单项’层叠’的CLICKED事件下输入W_MAIN.ARRANGESHEETS(CASCADE!
).
通过POWERBUILDER中的帮助查找ARRANGESHEETS函数的使用说明。
并为菜单项’平铺’,‘陈列’的CLICKED事件编程。
7在菜单M_MAIN的‘退出’的CLICKED事件下输入
close(parentwindow)
8通过popmenu()建立弹出式菜单。
参考(《POWERBUILDER8.0实用教程》PAGE99)
9将W_MAIN与W_LOGIN结合,使通过检测的合法用户可以进入W_MAIN。
(1)如果登录用户为ADIMN则只能使用菜单‘管理员’
(2)如果登录用户为student则只能使用菜单‘学生‘。
(3)如果登录用户为TEACHER则只能使用菜单‘教师‘。
(提示:
根据不同登录用户,决定菜单的ENABLED属性为TRUE或FALSE)
10运行应用程序。
菜单第一层
退出管理员学生教师窗口报表帮助
平均成绩
人员统计
图形统计
层叠
平铺
陈列
信息查询
提交成绩
修改密码
学生选课
成绩查询
数据维护
用户管理
信息查询
菜单第二层:
管理员:
数据维护学生信息
课程信息
用户管理注册新用户
修改密码
信息查询学生查询
课程查询
实验5、TreeView控件和游标
一、实验目的:
1熟悉treeview控件的属性,事件和函数。
2熟练使用游标
二、考察知识点
1treeview控件的使用。
《POWERBUILDER8.0实用教程》第四章)
2游标的使用。
《POWERBUILDER8.0实用教程》第八章)
三、实验内容:
1新建一个窗口W_ENROLL,放置一个treeview控件,并选中该控件的CHECKBOXS属性,再放置其他控件。
通过此窗口实现学生选课。
该窗口如图:
treeview控件为tr_1,
确定按钮为cb_1
St_3
St_4
2对窗口W_ENROLL的OPEN事件编程使数据所有课程罗列在树形视图中
参考代码:
stringoutname
declarenamecurcursorfor
select课程名
from课程;
opennamecur;
fetchnamecurinto:
outname;
dowhilesqlca.sqlcode=0
i=tv_1.insertitemlast(0,outname,1)
fetchnamecurinto:
outname;
loop
closenamecur;
注:
(1)关于游标参考《POWERBUILDER8.0实用教程》PAGE208
(2)函数insertitemlast的使用说明请通过POWERBUILDER中的帮助查找。
(3)i定义为实例变量,
变量定义参考《POWERBUILDER8.0实用教程》PAGE195
3将窗口W_ENROLL与菜单M_AMIN连接。
打开菜单M_MAIN,在菜单项‘学生选课’的CLICKED事件下输入:
OPENSHEET(W_ENROLL,W_MAIN,6,ORIGINAL!
)
4如果某学生通过W_LOGIN进入系统则将该学生的学号和姓名显示在静态文本编辑框st_3,和st_4中。
为完成这一功能请在窗口W_ENROLL的OPEN事件增加程序。
提示:
SELECT学号,姓名
INTO:
st_3.TEXT,st_4.TEXT
FROM学生
WHERE……
5对确定按钮编程。
参考代码:
intj
stringcourse_id
treeviewitemtr_i
forj=1toi
tv_1.getitem(j,tr_i)
iftr_i.statepictureindex=2then
select课程号
into:
course_id
from课程
where课程名=:
tr_i.label;
insertinto选课(学号,课程号)
values(:
st_3.text,:
course_id);
endif
next
//当TreeView的CheckBoxes属性为True时,每个节点包含一个复选框。
选中复
//选框时,StatePictureIndex属性为2,未选中则为1。
6运行程序
问题:
如何避免同一学生多次选择同一课程。
实验6、数据窗口对象与数据窗口控件
一、实验目的:
1熟悉数据窗口对象的建立
2熟练使用数据窗口控件
5熟悉数据窗口控件常用函数
二、考察知识点:
1数据窗口对象
2数据窗口控件
《POWERBUILDER8.0实用教程》第七章
三、实验内容:
1建立一个数据窗口对象D_S_DATA,使其包含学生表的所有数据。
《POWERBUILDER8.0实用教程》PAGE123
显示风格:
FREEFORM
(显示风格《POWERBUILDER8.0实用教程》PAGE140)
数据源:
QUICKSELECT
(数据源《POWERBUILDER8.0实用教程》PAGE127)
3新建一个窗口W_S_DATA,并放置数据窗口控件(DW_1)和命令按扭。