您的当前位置:首页正文

VisualFoxPro数据库实验报告

2022-06-04 来源:易榕旅网


本科生课程报告

课程名称 数据库程序设计

学院名称 核技术与自动化工程学院

专业名称

学生姓名

学生学号

教 师

成 绩

二〇一八年九月 —— 二〇一八年十二月

实验1 Visual FoxPro 使用初步

1.1实验目的

1.熟悉Visual FoxPro的窗口组成

2.掌握Visual FoxPro的启动和退出 3.掌握默认工作目录的设置方法 4.掌握项目管理器的使用方法

1.2实验内容

1.用两种方法启动和退出Visual FoxPro。 2.浏览Visual FoxPro的主菜单项及其子菜单。 3.掌握Visual FoxPro的窗口、工具栏、对话框的操作 4.练习打开和隐藏命令窗口。

5.在E盘上建立“学生管理”文件夹,并将其设置为默认的工作目录。 6.在“学生管理”文件夹下建立一个项目文件,命为“学生管理.pjx”。熟悉项目管理器的使用。

1

实验2 数据及运算

2.1实验目的

1.掌握变量、常量数组的使用。 2.掌握运算符和表达式的使用。 3.掌握常用函数的使用。

2.2实验内容

1.常量的使用

2

2.变量和数组的使用

3.运算符和表达式的使用

4.字符函数的使用

3

5.数值函数的使用

6.日期函数的使用

4

7.数据类型转换函数的使用

8.测试函数的使用

5

实验3 自由表的建立与操作

3.1实验目的及内容

1.掌握自由表结构的建立和表记录的输入

表结构的建立

表1.8

表1.9

6

2.掌握表的打开关闭和修改表的浏览操作 3.掌握记录的定位与显示,增加与修改,删除与恢复

删除sh030008后在sh030001前插入sh030008的记录

4.掌握文件管理命令 5.掌握索引的建立和索引查询

建立四个索引

按升序索引后的学生登记表

7

Locate命令的顺序查询

Seek命令的索引查询

以上两条查询命令实现了逐条查询出性别为女的学生名单。两图片分别为locate(顺序查询)和seek(索引查询)命令的查询结果及输入命令。

8

实验3第6题的内容(分析命令及执行结果)

6.掌握表的统计操作命令

使用repll all ……with……命令分别计算成绩的总分与平均分.

9

7.掌握表的连接和表的临时关联

按学号将xs.dbf与cj.dbf连接起来但只包含学号,姓名,数学,政治,英语成绩。下图为连接后的结果。

以xs.dbf 为父表、cj.dbf为子表,按学号建立两个表的临时关联,然后同时浏览两个表的有关记录。结果如下图所示。

10

实验4 数据库、数据库表的操作

4.1实验目的

1.掌握数据库的创建

2.掌握数据库表结构的建立和记录的输入 3.掌握表索引的建立和使用

4.掌握数据库表的有效性规则的设置和表之间永久关系的建立

4.2实验内容

1.创建”学生.dbc”数据库

2.将自由表xs.dbf加入数据库并改名为”学生登记表.dbf”,再创建两个新表:课程登记表.dbf,学生成绩表.dbf

上图为建立好之后的数据库内的表

11

3.为数据库表设置属性

上两图分别为学生登记表与学生成绩表设置属性:

学生登记表中性别字段的有效规则:性别只能为男或女,默认为男 学生成绩表中成绩字段的有效规则:成绩在0~100之间,默认为0

12

4.建立索引

上图为学生成绩表的学号和课程编号普通索引的建立

上图为学生成绩表的学号主索引的建立

上图为课程登记表的学号主索引的建立 5.建立表之间的永久关系

为学生登记表与学生成绩表建立一对多的关系以及课程登记表与学生成绩表之间的关系

上图为建立好之后的三个表之间的关系

13

6.设置参照完整性规则

点击连线右键选择编辑参照完整性

上图定义删除规则为级联

上图定义更新和插入规则为限制

14

实验5 查询和目的

5.1实验目的

1.掌握查询设计器的使用 2.掌握视图设计器的使用

5.2实验内容

1.建立一个包含学号、姓名、性别、年龄、平均分、总分6个字段的查询

查询结果只包含平均分>=75的结果

15

2.利用“学”生数据库中的3个表,建立一个包含学号、姓名、性别、课程名称、成绩5个字段的视图。

3.建立一个命为“修改成绩”的参数试图,包含学号、姓名、成绩等字段,以便于修改成绩。

16

该视图在浏览时会要求用户输入课程编号。下图以3为例

上图为浏览结果,显示课程编号为3的每个人的成绩。

实验6 SQL命令的使用

6.1实验目的

1.掌握SQL数据定义的功能。

2.能使用SQL创建数据表的结构,并添加、修改、删除数据。 3.熟练掌握SQL的各种查询功能。

17

6.2实验内容

1.建立教师、授课、课程三个表。

上图分别为建立好的教师、授课、课程表的内容 2.查询工资前三名教师的姓名、职称、工资

3.查询享受了政府津贴的教师姓名

18

4.查询副教授以上职称的教师姓名和职称

5.查询任课的课程号为c110和c140的教师号

上图分别为查询的结果和所用的命令 6.统计职称为教授的人数

查询的结果为2

7.统计所有教师的平均工资

命令为:select avg(工资) as 平均工资 from 教师 结果为

19

8.统计男女教师的人数

命令为:select 性别,count(*) as 人数 from 教师 group by 性别

结果为:

9.查询各种职称教师的平均工资

命令为:select avg(工资) as 平均工资 from 教师 group by 职称

结果为:

10.查询每个教师的任课数量,并降序排列。

命令为: select 教师号, count(*) as 课程数 from 授课 group by 教师号; order by 课程数 desc

结果为:

11.查询“刘英”老师所讲授的课程名称

命令为: select 姓名,课程名 from 教师,课程,授课 where 教师.教师号=授课.教师号;

and 授课.课程号=课程.课程号 and 姓名=\"刘英\" 结果为如右图所示

20

12.用子查询的方式查询与“刘英”教师职称相同的教师姓名、性别、职称

命令为: select 姓名,性别,职称 from 教师 where 职称= ; (select 职称 from 教师 where 姓名=\"刘英\")

结果为:

13.查询比所有女教师工资都高的男教师的姓名和工资 命令为: select 姓名,工资 from 教师 where 工资 > ; (select max(工资)from 教师 where 性别=\"女\") 结果为:张伟 3500

14.统计教师号为t1101和t1102的教师的授课门数,将查询结果合并成一个结果集

命令为: select 教师号, count(*) as 授课门数 from 授课; where 教师号=\"t1101\" group by 教师号; union;

select 教师号, count(*) as 授课门数 from 授课; where 教师号=\"t1102\" group by 教师号

结果为:

21

15.将每个教师所授的课程输出到“教师任课”数据表中。

命令为: select 姓名,课程名 from 教师,授课,课程 where 教师.教师号=授课.教师号;

and 授课.课程号=课程.课程号 into table 教师任课 结果如下图

16.创建如下图“教材”数据表

命令为: create table 教材; (书号 c(6) not null primary key,; 书名 c(20) not null ,; 作者 c(8),; 出版社 c(20),;

价格 n(6,2) check (价格>=0 and 价格<=100))

22

17. 创建如下图“班级”数据表

命令为: create table 班级;

(班级编号 c(2) not null primary key,; 班名 c(10) not null unique) 18. 创建如下图“教材订购”数据表

命令为: create table 教材订购; (书号 c(6) not null,; 班级编号 c(2) not null,;

数量 n(10)check(数量>=0 and 数量<=100),; foreign key 书号 tag 书号 references 教材,; foreign key 班级编号 tag 班级编号 references 班级) 19.在“教材”数据表,增加一个“出版社地址”

命令为: alter table 教材;add; 出版社地址 char(20)

23

20.查询每个班订购的书名及数量

命令为: select 班名,书名,数量,from 教材,班级,教材订购; where 教材.书号=教材订购.书号 and 班级.班级编号=教材订购.班级编号

21.在“教材订购”数据库中查询班级编号为“G1”的书名

如图所示

22.在“教材订购”数据库中查询每个班级的平均订购数量

命令为:select 班名,avg(数量) as平均订书from 班级,教材订购; where 班级.班级编号=教材订购.班级编号; group by 教材订购.班级编号; order by 平均订书量 desc

24

23.在“教材订购”数据库中查询每个班级所有订书数量,并由高到低排序。

命令为:select 班名,SUM(数量) as 总订书量 from 班级,教材订购; where 班级.班级编号=教材订购.班级编号; group by 教材订购.班级编号; order by 总订书量 desc

24.在 “教材订购”数据库中查询比“清华”出版社出版的图书价格都高的书名和价格

1select 书名,价格 from 教材 where 价格> ; 命令为:○

(select MAX(价格) from 教材 where 出版社=”清华”)

2select 书名,价格 from 教材 where 价格> all; ○

(select (价格) from 教材 where 出版社=”清华”)

25

25.在“教材订购”数据库中查询订购了3种以上的班级编号和订购的教材种类数量

命令为:select 班级编号, count(*) from 教材订购; Group by 班级编号 having count(*)>=3

26.创建“基本情况”数据表,其中“编号”为主键,值不能为空;姓名不能为空; 工资的范围在2000-20000 命令为: create table 基本情况; (编号 c(6) not null primary key,; 姓名 c(8) not null,; 性别 c(2),;出生年月 d,;

工资 n(5) check (工资>=2000 and 工资<=20000))

26

27. 创建“专业”数据表,其中“编号”值不能为空,并建立“专业”表与“基本情况表”之间的联系 命令为:create table 专业; (编号 c(6) not null,;

专业名称 c(10) not null,;职称 c(10),; foreign key 编号 tag 编号 reference 基本情况)

28.创建“成果”数据表,其中“编号”值不能为空,并建立“成果”表与“基本情况表”之间的联系 命令为:create table 成果; (编号 c(6) not null,;

成果类别 c(8),;成果名称 c(20),;

foreign key 编号 tag 编号 reference 基本情况)

27

29.在“基本情况”中怎加一个“联系电话”c(8) 命令为:alter table 基本情况; Add;

联系电话 c(8)

30.将“基本情况”中性别的缺省值设为男

命令为:alter table 基本情况;Alter 性别;set default “男” 31.将工资小于或等于3000元的提高20%

命令为:update 基本情况;set 工资=1.2*工资;where 工资<=3000 32.查询每个人的成果类别及成果名称

命令为:select 姓名,成果类别,成果名称 from 基本情况,成果; where 基本情况.编号=成果.编号

28

34.统计教授的人数

命令为:select count(*) from 专业; where 职称=\"教授\"

35.查询成果在3项以上的姓名和成果数并按降序排列。

命令为:select 姓名,count(*) as 成果数 from 基本情况,成果 where 基本情况.编号=成果.编号; group by 成果.编号 having count(*)>=3; order by 成果数 desc 36.查询每个人的姓名及成果数,并将结果存放到一个新的数据表“成果统计”中

命令为:select 姓名,count(*) as 成果数 into table 成果统计 from 基本情况,成果;where 基本情况.编号=成果.编号; Group by 成果.编号

29

实验7结构化程序设计

7.1实验目的

1.熟悉 Visual FoxPro命令文件的建立和执行。 2.掌握结构化程序设计的一般方法。 3.熟练掌握条件语句和循环语句的使用。

7.2实验内容

1.编写程序.判断输人的年份是否是闰年(建议用IF语句实现,输入用交互式语句,输出用命令)。 clear set talk off

input \"请输入年份:\" to y

if y/4=int(y/4).and.y/100<>int(y/100).or.y/400=int(y/400) ? y, \"是闰年\" else

? y, \"不是闰年\" endif set talk on return

30

2.编写程序,判断输入的字符是字母、数字或是特殊符号(建议用DO CASE语句实现,输入和输出用格式化语句)。 clear set talk off ch=\" \"

@5,10 say \"请输入一个字符:\"get ch read do case

case upper(ch)<=\"Z\".and. upper(ch)>=\"A\" @7,10 SAY ch+\"是字母\" case ch<=\"9\".and. ch>=\"0\" @7,10 SAY ch+\"是数字\" otherwise

@7,10 SAY ch+\"是一个特殊符号\" endcase set talk on

3. 编写程序,显示“学生登记”表中入校总分在550分以上的学生记录(建议用DO WHILE|语句实现)。 clear set talk off

31

use 学生登记表

locate all for 入校总分>=550 do while .not.eof() display continue

wait \"按任意键继续!\" enddo

? \"记录显示结束!\" set talk on return

4. 编写程序,实现验证密码正确后浏览“学生登记”表的内容,密码设为“OK\",最多只能输入三次,密码错误或输入超过三次给出提示(建议用FOR循环语句)。

32

5.编写程序,统计学生登记表中男、女生的人数(建议用SCAN循环语句)。

6.编写程序,根据输入的姓名,计算学生的平均成绩,并显示成绩等级。

33

7.编写程序,能根据输入的姓名,查找并显示学生各门课程的成绩. 要求能反复查找

8.编写程序,对任意输人的10个数,按从小到大的顺序进行排列(要求输出排序前后数据)。

34

实验8 过程及数组应用

8.1实验目的

1.熟悉Visual FoxPro的过程及过程文件的使用。 2.了解变量的作用域和参数调用。 3.熟练使用数组编程。

8.2实验内容

1. 编写程序,用过程调用的方法计算1! +2! +3! …100!之和。

2.编写程序,采用主程序调用过程文件的方式,计算圆面积和圆球体积。

35

3.编写程序,输人10个评委给歌手打的演唱分,去掉一个最高分,一个最低分,求歌手的平均分。

36

4.创建“考生登记表”和“考生成绩表”,其中“考生登记表”的结构和数据如表1.15所示“考生成绩表”;的结构如表1.16所示,编写程序,要求使用数组接收考生的成绩输人,并存放到“考生成绩表”中;采用过程文件的方式,计算学生成绩等级并填写结论,按下列格式输出结果:

37

实验9 表单设计初步

9.1 实验目的

1.熟练掌握用表单设计器创建和使用表单 2.熟练掌握表单常用控件的创建和使用

9.2 实验内容

1.设计如图通话计费表单。

2.设计学生单科成绩查询表单

38

3.设计数据表选项浏览表单

4.设计成绩条件查询表单

5.建立计时器表单

39

6.建立系统表单

7.建立系统登陆表单

40

实验10 表单设计综合

10.1实验目的

1.进一步掌握表单常用控件的应用。

2.综合应用表单的各类控件,了解基于表单的小型应用系统的开发。

10.2实验内容

1.参照主教材第6章中表单控件的综合应用,设计一个教师管理系统。 2.设计一个“图书管理系统”。在系统重要创建一个“图书管理”数据库,其中包含三个表:读者dbf、图书. dbf、借书.dbf。各表的结构如表1.18~表1.20所示,其中的数据由用户自行输入。

表1.18读者.dbf的结构类型

41

表1.19图书.dbf 的结构类型

表1.20借书.dbf的结构

系统要求实现如图1. 59所示的功能。 图1.59图书管理系统功能 其中主要功能说明如下: 1)图书管理

(1)借书:进行读者的借书处理。主要是通过相应的表单内容填写借书表的内容。同时还要设置“图书”表的“是否被借阅”字段值为. T.。 (2)还书:进行读者的还书处理。与上类似。

(3)新书人库:按类别将新书的相关信息登记入库。主要是通过表单添加图书表的记录。

(4)旧书注销:将淘汰的书籍从“图书”表中清除,并对注销信息进行备案。主要是通过表单的查询显示,删除“图书”表的相关记录。

2)读者管理

(1)图书证注册:给新读者办图书证,将读者的个人信息录人到“读者”表中。 (2)图书证注销:将读者的个人信息从“读者”表中删除。

(3)图书证期限检查:图书证期限检查,如过期一年,需要进行图书证登记处理。 (4)图书证登记:以年为单位进行图书证登记,即将图书证再次激活,以使下一年继续使用

3)查询统计

(1)图书信息:以各种方式查询图书信息(按图书类别、按出版社、按作者按出版日期等进行查询)。

(2)读者信息:查询读者个人信息。

(3)借还统计:以各种方式进行借还统计。例如,按读者进行个人借还情况查询统计;按具体的书籍进行何时借还历史查询和借还次数统计;按期限进行逾期没还的书籍统计等。

42

(4)热门书籍:根据书籍流动的频繁性和待借期统计出受读者欢迎的热门书籍。

43

44

实验11 报表设计

11.1实验目的

1.掌握报表的建立和使用。

2.熟悉报表设计器、报表控件和报表的带区。

11.2实验内容

1.建立如下图所示成绩报表。

以“学生数据库中的“学生成绩”视图为数据源,输出学生的学号、姓名、性别,课程名称和成绩5个字段内容,给生成的报表文件命名为学生成绩.frx, 报表顶览结果如下表所示。

45

学生成绩表

46

47

设计界面如下图所示。

实验12 菜单设计

12.1实验目的

1.掌握通过菜单设计器建立菜单的方法和技巧。 2.掌握菜单程序的生成和使用。

12.2实验内容

1.建立菜单如图所示

48

2.建立顶层菜单如图所示

实验13 应用系统集成

13. 1 实验目的

1.掌握主程序的编写与设置方法。 2.掌握应用程序的编译方法。

13.2 实验内容

1.编译“学生管理”项目,编译类型为.app,将编译结果保存在默认目录下,程序文件名为“学生管理.app”。要求如下: (1)设置“计时器的使用.scx\"为项目的主文件。

49

(2)用户单击表单“计时器的使用.scx”上任一地方,调用“系统登录”菜单,输入正确的密码后,调用学生管理系统的“系统菜单”程序。

2. 编译“学生管理”项目,编译类型为.eve,将编译结果保存在默认目录下,程序文件名为“学生管理.exe\"。要求如下:

(1)编写并设置主程序,保存在默认目录下,设置为应用程序的初始界面,并建立事件循环。

50

(2)在主程序中调用顶层表单“关于系统.scx\设置为应用的初始界面,并建立时间循环。

完成后学生信息管理系统如下图所示

51

因篇幅问题不能全部显示,请点此查看更多更全内容