上海市高等教育自学考试
计算机信息管理专业(独立本科段)
《数据库原理》实践性环节考核大纲
(复旦大学主考,2005年修订)
一、考核目标
1. 具有熟练使用PowerBuilder 9.0建立本地数据库和基本表的能力。
2.初步掌握使用PowerBuilder 9.0建立数据库应用程序的方法。
二、运行环境
1. 平台:Windows 2000,Windows XP等
2. 软件:PowerBuilder 9.0
三、考核方式
实行闭卷考核。
四、考核时间和日期
上机考核每次为1小时;考核日期另行规定。
五、考核范围
1. 数据库的基本操作
建立数据库;连接数据库;建立表、设置主码和外码;
数据查询、插入、删除和修改;建立视图。
2. 建立数据库应用程序
建立工作空间(.pbw)、目标(.pbt)、应用(.pbl);
建立数据窗口对象;
建立主窗口(内含数据窗口、命令按鈕、静态文本框和单行编辑器等控件);
书写脚本;
运行应用程序。
六、上机样题
(一)上机题目
在PowerBuilder9.0环境中完成下面两个任务:
•建立一个有关学生、课程、成绩等有关信息的数据库;
•建立有关数据浏览、插入、查询、修改、删除、确认和返回等操作的应用程序及界面。
(二)操作步骤
1. 建立数据库newdb (数据库文件newdb.db必须保存在C:\temp目录下)。
(自动连接数据库,ODBC数据源名自动地为newdb)。
2. 在数据库newdb中建立三张表:
s(sno,sname,age,sex)
c(cno,name,level)
sc(sno#,cno#, score)
上述属性中,sname、name和sex为char型,其余均为smallint型。
在表s中,主码是sno; 在表c中,主码是cno;
在表sc中,主码是(sno,cno),外码有两个:sno和cno。
主码用下划线表示,外码用#表示。
请分别为这三个表输入下列记录:
s表: c表: sc表:
1 Li 18 m 1 pascal 3 1 1 95
2 Chen 25 f 2 basic 4 1 2 90
3 Zhang 20 f 3 c 3 1 3 85
4 Wang 22 m 4 c++ 3 1 4 80
2 4 75
3. 建工作空间 (C:\temp\student.pbw)
建目标 (C:\temp\student.pbt)
建应用 (C:\temp\student.pbl)
4. 在应用中建立三个数据窗口对象d_s、d_sc、d_c,分别关联三个表s、sc、c的内容。
5. 在应用中建立主窗口w_student,主窗口中应包含:
•三个数据窗口控件(dw_1、dw_2、dw_3):分别显示表s、表sc、表c的内容。
•七个命令按钮控件(cb_)。
•两个静态文本控件:分别为“学号”和“数据”字样。
•两个单行编辑器控件(sle_):用于输入数据,以便进行查找和修改。
程序的主界面如下:
6. 在应用各对象中书写脚本,使该应用具有下列功能:
1) 点击按钮“浏览”,将显示学员表和成绩表内容。
2) 点击按钮“插入”,将在课程表中可以添加课程。
3) 点击按钮“查询”,将显示指定学号的学员情况和其所学课程成绩。
4) 点击按钮“修改”,将当前的成绩记录增加指定的数量。
5) 点击按钮“删除”,将删除当前的成绩记录。
6) 点击按钮“确认”,将插入、修改、删除操作写入数据库。
7) 点击按钮“返回”,将终止程序的运行。
8) 点击“学员表”内容,将显示课程表内容。
9) 点击“成绩表”内容,将显示学员表和课程表的内容。
10) 点击“课程表”内容,将清除学员表内容。
7.运行应用student。
8.据考场规定的方法,把C:\temp目录下的内容发送到服务器的存储器中。
(三)参考答案 (编写脚本)
1.应用student.pbl的open事件的脚本:
SQLCA.DBMS="ODBC"
SQLCA.AutoCommit=False //定义程序是手工提交事务
SQLCA.DBParm="ConnectString=′DSN=newdb′" //DBMS所需的额外信息
/* 上述三条可从DB Profile处复制、粘贴过来。*/
connect; //连接数据源newdb
open(w_main) //打开主窗口w_main
2.在主窗口w_main的各个对象中书写脚本:
1) 主窗口w_main的open事件中写脚本:
dw_1.settransobject(sqlca) //给数据窗口控件dw_1设置通讯区域sqlca
dw_2.settransobject(sqlca)
dw_3.settransobject(sqlca)
2) 命令按钮“浏览”的Clicked事件:
string ssql
ssql = "select * from s" //查询语句
dw_1.setsqlselect(ssql) //从数据库中读取数据
dw_1.retrieve() //从对应的数据库表(有缓冲)检索全部数据
ssql = "select * from sc"
dw_2.setsqlselect(ssql)
dw_2.retrieve()
3) 命令按钮“插入”的Clicked事件:
dw_3.insertrow(0) //在c表的尾部插入一行
dw_3.scrolltorow(dw_3.rowcount()) //把指定行设置为当前行
dw_3.setfocus() //设置焦点
4) 命令按钮“查询”的Clicked事件:
string ssql, str
str = trim(sle_1.text) //获得输入的学号
ssql = "select * from s where s.sno = '" + str + "'"
dw_1.setsqlselect(ssql)
dw_1.retrieve()
ssql = "select * from sc where sc.sno = '" + str + "'"
dw_2.setsqlselect(ssql)
dw_2.retrieve()
5) 命令按钮“修改”的Clicked事件:
int sletext, row, old
//定义变量:row代表当前行,sletext代表输入的数字,old代表修改前的值
if IsNumber(sle_2.text) then
sletext = Integer(sle_2.text) //获得输入的数据
row = dw_2.Getrow()
old = dw_2.object.data[row,3]
dw_2.object.data[row,3] = old +sletext
end if
6) 命令按钮“删除”的Clicked事件:
dw_2.deleterow(0)
7) 命令按钮“确认”的Clicked事件:
if dw_2.update() = 1 or dw_3.update() = 1 then //修改成功否
commit; //成功,则提交
else
rollback;
end if
8) 命令按钮“返回”的Clicked事件:
close(parent) //关闭当前窗口
9) 数据窗口“学员表”的Clicked事件:
string ssql
ssql = "select * from c"
dw_3.setsqlselect(ssql)
dw_3.retrieve()
10) 数据窗口“成绩表”的Clicked事件:
string ssql
ssql = "select * from s"
dw_1.setsqlselect(ssql)
dw_1.retrieve()
ssql = "select * from c"
dw_3.setsqlselect(ssql)
dw_3.retrieve()
11) 数据窗口“课程表”的Clicked事件:
dw_1.reset() //清除
(四)程序运行结果
程序编制完成以后,单击PowerBar上的Run按钮就可以运行程序了,点击“浏览”按钮,程序界面如下所示。
附件下载:
《数据库原理》实践性环节考核大纲(2005)