C语言程序设计实验报告(6) 本文关键词:实验,语言程序设计,报告
C语言程序设计实验报告(6) 本文简介:贵阳学院机电系实验报告课程名称:指导教师:年级:专业:学生姓名:学号:20——20学年第学期填写要求一、对于演示性实验,要写出心得体会(字数不少于800字)。二、对于验证性实验(操作型,不属于程序设计型),要收集数据,对数据进行处理,并绘制曲线和写出实验总结(不少于50字)。三、对于设计性实验,(操
C语言程序设计实验报告(6) 本文内容:
贵阳学院
机电系实验报告
课程名称:
指导教师:
年
级:
专
业:
学生姓名:
学
号:
20
——20
学年第
学期
填
写
要
求
一、对于演示性实验,要写出心得体会(字数不少于800字)。
二、对于验证性实验(操作型,不属于程序设计型),要收集数据,对数据进行处理,并绘制曲线和写出实验总结(不少于50字)。
三、对于设计性实验,(操作型,不属于程序设计型),要给设计思路,完成“二”中的任务,分析设计的规范性和合理性。
四、对于程序设计型实验,要写出源程序,运行结果和实验总结(不少于50字)。
实验一(预备实验)
一、
实验项目名称:
C语言的运行环境和运行C程序的方法
二、
实验时间:
三、
实验地点:
四、
实验目的:
1.
了解所用的计算机系统的基本操作方法,学会独立使用该系统。
2.
了解在该系统上如何编辑、编译、连接和运行一个C程序。
3.
通过运行简单的C程序,初步了解C源程序的特点。
五、
主要的实验所需仪器、设备:PC机。
六、
实验内容与步骤:
1.
检查所用的计算机系统是否已安装了C编译系统并确定它所在的子目录。
2.
进入所用的集成环境。
3.
熟悉集成环境的界面和有关菜单的使用方法。
4.
输入并运行一个简单的、正确的程序。
i.
输入下面的程序
#include
void
main(
)
{
printf(“This
is
a
program./n”);
}
ii.
编译源程序,观察编译信息,如出现错误,找出原因,继续编译,如无错,进行连接。
iii.
如连接无误,运行程序,分析运行结果。
5.
输入并编辑一个有错误的C程序。
i.
输入以下程序
#include
void
main(
)
{
int
a,b,sum;
a=123;
b=456;
sum=a+b
print(“sum
si
%d/n”,sum);
}
ii.
编译程序,错误信息有:
iii.
编译成功,连接程序,错误信息有:
iv.
连接成功,使程序运行,运行结果:
v.
分析结果正误:
vi.
将调试好的程序保存在自己的用户目录中,文件名自定。
vii.
关闭文件,再将文件读入,检查窗口中的内容是否是刚才存盘的程序。
viii.
关闭所有的集成环境,用Windows中的“我的电脑”找到刚才使用的用户子目录,浏览其中文件,看有无刚才保存的后缀为.c和.exe的文件。
6.
上机运行本章例题1.3。
七、
本次上机实验的心得。
八、
理论支撑:《C语言程序设计》第一章
本次实验成绩
篇2:打字游戏程序设计报告
打字游戏程序设计报告 本文关键词:程序设计,打字,报告,游戏
打字游戏程序设计报告 本文简介:第二章打字游戏程序设计内容要求和设计思想2.1设计内容要求要求设计的程序需包括:在游戏开始后,按回车键进入打字游戏;按ESC键返回主界面;按空格暂停;按大写字母E程序结束。26个字母中的任意一字母从屏幕落下,在下落的过程中键入落下的字母,如果正确,字母消失,分数增加;如果不正确,字母继续下落。接着继
打字游戏程序设计报告 本文内容:
第二章
打字游戏程序设计内容要求和设计思想
2.1
设计内容要求
要求设计的程序需包括:在游戏开始后,按回车键进入打字游戏;按ESC键返回主界面;按空格暂停;按大写字母E程序结束。26个字母中的任意一字母从屏幕落下,在下落的过程中键入落下的字母,如果正确,字母消失,分数增加;如果不正确,字母继续下落。接着继续下落其他字母,如果不正确的字母数大于10个,则游戏结束并返回到成绩界面。进入成绩界面后显示所得游戏分数,
暂停大概2秒后返回到主菜单。
2.2
整体设计思想
程序首先通过宏的定义以及调用宏来画出游戏边框,再通过定义一个函数并调用MOV
AH,09
INT
21H
来显示字符串,DS:DX定义字符串位置。游戏主程序调用BIOS
INT
10
的9号功能实现对目标文本的颜色和定位。游戏主程序可以用MOV
AH,00
INT
16H从键盘读取输入的字符再调用MOV
AH,01
INT
21H
让键盘输入显示在屏幕中
AL=输入的字符,用CMP指令对输入的文本和目标文本进行比较,再利用选择语句在打错字符后对wrong的基数加1,在打对字符后对right的基数加1,并调用清屏函数clear将该字符消除。对于要求柱形图实时显示正确和错误的数目,可以通过利用“*”在竖向上叠加来实现,字符串结束后直接退到dos环境。
2.3
整体设计方案流程图
开始
欢迎界面
结束
速度选择
1,2,3
游戏运行
游戏结束
ESC
E
ENTER
输入字母并进行相关操作后返回
显示成绩
图2.1
第三章
软件设计
3.1
程序流程详细说明
首先运行程序,进入主界面,通过键盘输入字符,先判断是否是“E”,是则直接退出,如果不是“E”,则进入下一步判断是否为数字1,是就按速度1
下落字母,否就进入下一步判断,是否为数字2,是就按速度2下落字母,否就进入下一步判断,是否为数字3,是就按速度3下落字母,否就返回重新输入。
字母随机下落的过程中,检查键盘是否输入ESC,是就返回到主界面,否就继续下落,接着判断玩家输入的字母跟下落的字母是否一样,是就清除该字母,并使RIGHT的基数加1,否就使WRONG的基数加1,接着判断WRONG是否大于10,否就又重新随机下落一字母,是游戏就结束并显示最终成绩,接着就返回到主界面等待新的指令。
3.2程序流程图
开始
主界面
键盘输入
是否E
是否1
速度1
是否2
速度2
是否3
字母随机落下
检查键盘
是否ESC
速度3
输入字符正确
结束
下落字母消失
WRONG+1
WRONG>10
显示最终成绩
RIGHT+1
图3.1
3.3
重点子程序分析
3.3.1
随机产生字母
先初始定义一个由61个无序字母组成的字母列STRD,此字母列包含从A-Z
26个字母,将STRD的偏移地址存在DI中,又将字母列的备份存在SI中,定义一个计数寄存器CX,首先置CX为0,程序每产生一个随机字母后CX自动加1,并且比较每次循环时CX是否已经大于61,如果大于61则对屏幕初始化置0,如果大于则继续随机下落字母。
3.3.2
字母的下落
字母的下落是整个程序的核心部分,实现该功能的原理是让字母在规定的时间间隔内多次显示,字母每次下移1位,同时上一位自动以空格代替,这样在视觉上就起到了字母自动下落的效果,下落的速度由我们自己决定,本程序中设置了三种速度。
3.4
程序中使用的部分重要指令
3.4.1通用数据转送指令MOV
它表示把操作数(SRC),转送给目的操作数(DIST),源操作数不变,目的操作数被源操作数所替代。转送指令每次可以转送一个字节或一个字,可以实现CPU的内部寄存器之间的数据转送、寄存器和内存之间的数据转送,还可以将立即数送给CPU内部的寄存器。本设计中大量的用到了MOV指令,如MOV
AH,0AH
MOV
AL,OP3
MOV
CX,01H
MOV
BH,00H
等等,以实现起数据的传送。
3.4.2
无条件转移指令JMP、CALL、RET
(1)当程序中出现JMP指令时,无条件的跳至JMP后所跟的变量处。其主要有段内短转移、段内直接转移、段间直接转移、段内间接转移、段间间接转移、段内间接转移等操作。
(2)CALL指令为调用子程序,其功能为保护程序断点后,转到子程序处执行。主要包括段内调用和段间调用。
(3)RET返回指令,通常与CALL指令连用,从子程序返回主程序,通常放在子程序之后。也包括段内返回和段间返回。
3.4.3
条件转移指令
条件转移指令是根据执行该指令时CPU标志的状态而决定是否发生控制转移的指令。如果满足条件则程序转移到指定的目标地址;如果不满足则继续执行该条件下的下一条指令。一般与比较指令CMP连用。在本程序设计中主要用到“JE(相等转移)”、“JA(大于转移)”、“JNE(不相等转移)”等。
3.4.4
堆栈操作指令PUSH、POP
PUSH进栈指令的功能是将操作数推入堆栈。它的源操作数可以是16为通用寄存器、段寄存器或存储器中的数据字,打不能是立即数。堆栈是以“先进后出”的方式工作的一个存储区,栈区的段址由SS寄存器的内容确定。堆栈的最大容量可为64K,即一个段的最大容量。堆栈指针SP始终指向栈顶,其值可以从FFFEH(偶地址)开始,向低地址方向发展,最小为0。每次执行PUSH操作时,先修改SP的值,使SP?SP
-
2后,然后把操作数压入堆栈种SP指示的位置上,低位字节放在较低地址单元,高位字节放在交高地址单元中。
POP出栈指令的功能是把当前的SP所指向的堆栈顶部的一个字送到指定的目的操作数中。它的目的操作数可以是16位通用寄存器,段寄存器或存储单元,但CS不能做目的操作数。每执行一次出栈操作,SP?SP+2,即SP向高地址方向移动,指向新的栈顶。
3.4.5
算数运算指令ADD、SUB、DIV、INC
ADD加法指令,它的功能是将源操作数相加,结果送到目的操作数中,即
目的?源+目的。
SUB减法指令,它的功能是将目的操作数减去源操作数,结果送回目的操作数,即目的?目的
–
源。
DIV无符号数除法指令,它的功能是对两个无符号二进制数进行除法操作。
INC增量指令,它的功能是对目的操作数加1,结果送回目的操作数,即目的?目的+1。
ADD,SUB这两条指令的原操作数可以是寄存器、存储器或立即数,目的操作数只能是用寄存器和存储单元。使用时需注意源和目的操作数不能同时为存储器,而且他们的类型必须一致,即都是字节或字。
DIV指令的原操作数可以是字节或字,如果源操作数为字节,16位被除数必须放在AX中,8位除数为原操作数,他可以是寄存器或存储单元,相除之后,8位商在AL中,余数在AH中。要是操作数为字,32位被除数在DX,AX中,其中DX为高位字,16位除数作源操作数,他可以是寄存器或存储单元。相除之后,AX中存16位商,DX存16位余数。要是被除数只有16位,除数也是16位,则必须将16位被除数送到AX中,再将DX寄存器清0,然后相除。
INC指令的目的操作数可以在通用寄存器或内存种,这条指令主要用在循环程序中,对地址指针和循环计数器等进行修改。指令执行后影响AF、OF、PF、SF和ZF,但进位标志CF不受影响。
3.5
源程序及其说明
DIS
MACRO
STRING,X
MOV
AL,3
MOV
AH,0
INT
10H
MOV
BP,SEG
STRING
MOV
ES,BP
MOV
BP,OFFSET
STRING
MOV
CX,15
MOV
DH,X
MOV
DL,29
MOV
BL,74H
MOV
AL,1
MOV
AH,13H
INT
10H
ENDM
DIS4
MACRO
STRING,X,Y
;在指定位置以红底蓝字显示字符串
dis2
MOV
AL,3
MOV
AH,0
INT
10H
MOV
BP,SEG
STRING
MOV
ES,BP
MOV
BP,OFFSET
STRING
MOV
CX,Y
;显示字符串的长度
MOV
DH,X
;行位置
MOV
DL,29
;列位置
MOV
BL,74H
;显示字符串的属性74h
MOV
AL,1
MOV
AH,13H
INT
10H
DIS3
DIS5
ENDM
DIS1
MACRO
STRING1,Y,M
;在指定位置处显示字符串
MOV
AH,2
;置光标位置
MOV
BH,0
MOV
DH,Y
;行标
MOV
DL,M
;列标
INT
10H
MOV
AH,09H
;显示str1
MOV
DX,SEG
STRING1
MOV
DS,DX
MOV
DX,OFFSET
STRING1
INT
21H
ENDM
DIS2
MACRO
;宏进栈
PUSH
AX
PUSH
BX
PUSH
CX
PUSH
DX
ENDM
DIS3
MACRO
;宏出栈
POP
DX
POP
CX
POP
BX
POP
AX
ENDM
DIS5
MACRO
S1,S2
DIS2
MOV
AH,6D
MOV
AL,0
MOV
AL,25D
MOV
BH,10100100B
;01111111b
MOV
CH,0
MOV
CL,0
MOV
DH,0
MOV
DL,80
INT
10H
DIS3
ENDM
DIS6
MACRO
Z1,Z2,Z3,Z4
;画横向边框的宏
LOCAL
C5
DIS2
MOV
CX,Z1
;循环次数
MOV
DL,Z2
;列
C5:
MOV
AH,2
;置光标位置
MOV
BH,Z3
;页号
MOV
DH,Z4
;行
INT
10H
PUSH
DX
MOV
DL,2AH
INT
21H
POP
DX
INC
DL
LOOP
C5
DIS3
ENDM
DIS7
MACRO
Q1,Q2,Q3,Q4
;画竖边框的宏
LOCAL
F1
DIS2
MOV
CX,Q4
MOV
DH,Q1
F1:
MOV
AH,2
;置光标位置
MOV
BH,Q2
MOV
DL,Q3
INT
10H
MOV
DL,2AH
INT
21H
INC
DH
LOOP
F1
DIS3
ENDM
DATAS
SEGMENT
STR1
DB
Welcome
to
play
chars,0AH,0DH,$
STR2
DB
Made
by
Zhou
Liangfeng,0AH,0DH,$
STR3
DB
2010/1/8,0AH,0DH,$
STR4
DB
Please
choose
speeding,0AH,0DH,$
STR5
DB
Please
press
Enter
to
cintinue.,0AH,0DH,$
STR7
DB
speed
1,0AH,0DH,$
STR8
DB
speed
2,0AH,0DH,$
STR9
DB
speed
3,0AH,0DH,$
STR0
DB
Select
the
number
among
1-3,0AH,0DH,$
STRA
DB,0AH,0DH,$
STRB
DB
score:,i,0AH,0DH,$
STRC
DB
You
choose:,0AH,0DH,$
STRD
DB
hqfuvodepfdjygnhtrwgaerjrklubgsnyrsbntrsbngtrdjykuahtrgregfytjgfjytjktru,$
STRE
DB
RIGHT:,$
ST1
DB
RIGHT:
Pause,0AH,0DH,$
ST2
DB
E
:
Quit,0AH,0DH,$
ST8
DB
Esc:
Back,0AH,0DH,$
ST3
DB
Function
Meun,0AH,0DH,$
ST4
DB
please
input.,0AH,0DH,$
ST5
DB
SPACE:
Continue,0AH,0DH,$
ST6
DB
Quitting.,0AH,0DH,$
ST7
DB
Press
any
key
to
continue,0AH,0DH,0AH,0DH,0AH,0DH,0AH,0DH,0AH,0DH,0AH,0DH,0AH,0DH,$
LENTH
EQU
$-STRD
;STRD的长度
R
DB
1
M
DB
0
N
DB
?
A
DB
0
;速度1选择标志
B
DB
0
;速度2选择标志
V
DB
0
;速度3选择标志
DATAS
ENDS
STACK1
SEGMENT
DB
100
DUP
(?)
STACK1
ENDS
CODES
SEGMENT
MAIN
PROC
FAR
ASSUME
CS:CODES,DS:DATAS,SS:STACK1
START:
MOV
AX,DATAS
MOV
DS,AX
CALL
CLEAR
;调用清屏函数,清除dos界面
CALL
DISPLAY1
;显示主欢迎界面
AG:
MOV
A,0
;只相应的速度标志为0
MOV
B,0
MOV
V,0
TH2:
MOV
AH,7
;无回显输入字符
INT
21H
CMP
AL,0DH
;如果是回车,则继续
JNE
TH2
;否则继续输入
TH1:
CALL
CLEAR
;调用清屏函数
DIS6
80,0,0,0
;宏调用画上边框
DIS7
0,0,79,24
;宏调用画右3边框
DIS7
0,0,0,25
;宏调用画左1边框
DIS6
79,0,0,24
;宏调用画下边框
DIS1
STR4,10,25
;宏调用显示欢迎界面及速度选择项
DIS1
STR7,12,30
DIS1
STR8,14,30
DIS1
STR9,16,30
DIS1
STR0,20,16
THD:
MOV
AH,7
;键盘等待输入相应的速度选项
INT
21H
CMP
AL,31H
;判断是否为1
JNE
MODIFYA
JMP
THB
;是则转,JMP实现间接跳转
MODIFYA:
CMP
AL,32H
;判断是否为2
JNE
MODIFYB
JMP
THC
;是则转
MODIFYB:
CMP
AL,33H
;判断是否为3
JNE
THD
;不是则转
DIS4
STR9,12,10
;速度3高亮度显示
DIS1
STRC,12,14
MOV
V,1
;速度3被选中的标志
JMP
THA
THB:
DIS4
STR7,12,10
;速度1高亮度显示
DIS1
STRC,12,14
MOV
A,1
;速度1被选中的标志
JMP
THA
THC:
DIS4
STR8,12,10
;速度2高亮度显示
DIS1
STRC,12,14
MOV
B,1
;速度2被选中的标志
THA:
DIS6
80,0,0,0
;宏调用画上边框
DIS7
0,0,79,24
;宏调用画右3边框
DIS7
0,0,0,25
;宏调用画左1边框
DIS6
79,0,0,24
;宏调用画下边框
MOV
AH,7
;键盘等待确定输入
INT
21H
CMP
AL,0DH
;判断是否是回车确定
JNE
THA
;不是则继续等待
CALL
SLEEP2
;屏幕暂停缓冲
CALL
CLEAR
;调用清屏函数
CALL
PAINT
;调用函数画游戏边框
CALL
GOAL
;调用函数显示得分
CALL
FALL
;调用下落函数
CMP
N,1
;是否确定退出
JE
TH9
;是则转
JMP
AG
;不是继续
TH9:
MOV
AH,4CH
;返回dos界面
INT
21H
MAIN
ENDP
;显示功能菜单函数
DISPLAY1
PROC
NEAR
DIS1
STR1,10,25
DIS1
STR2,13,29
DIS1
STR3,16,31
DIS1
STR5,21,19
DIS6
80,0,0,0
DIS6
79,0,0,24
DIS7
0,0,0,25
DIS7
0,0,79,24
RET
DISPLAY1
ENDP
;清屏函数,清除整个屏幕
CLEAR
PROC
NEAR
PUSH
AX
PUSH
BX
PUSH
CX
PUSH
DX
MOV
AH,6
MOV
AL,0
MOV
BH,7
MOV
CH,0
MOV
CL,0
MOV
DH,24
MOV
DL,79
INT
10H
MOV
DX,0
MOV
AH,2
INT
10H
DIS5
25D,10100100B
DIS3
RET
CLEAR
ENDP
;下落函数,核心子函数
FALL
PROC
NEAR
LEA
SI,STRD
;传递将要下落的字母子串
T1:
INC
SI
;加1以便寻找下一个字母
DIS2
MOV
AH,6D
;置主游戏屏界面颜色
MOV
AL,0
MOV
AL,23D
MOV
BH,01101110B
MOV
CH,1
;从左上第1行
MOV
CL,26
;从左上第26列
MOV
DH,1
;从右上第1行
MOV
DL,54
;从右上第54列
INT
10H
DIS3
CALL
RANDOM
MOV
DL,AH
;获得随机数,保存至dl中
dl
为字母下落的y坐标
ADD
DL,26
;基数为26,使其在范围之内
MOV
DH,R
MOV
CX,23
AGA:
MOV
AH,2
;置光标位置
MOV
BH,0
INT
10H
MOV
AL,[SI]
;取下落字符
PUSH
DX
MOV
DL,AL
MOV
AH,02H
INT
21H
POP
DX
PUSH
AX
;AX,CX进栈,以防干扰
PUSH
CX
MOV
CX,0
;隐藏字母后面的光标
MOV
AH,1
OR
CH,00010000B
INT
10H
POP
CX
POP
AX
CALL
SP_ADJ
MOV
AH,2
;置光标位置
MOV
BH,0
INT
10H
PUSH
DX
MOV
DL,;显示空格
MOV
AH,02H
INT
21H
INT
10H
POP
DX
SUB
AL,AL
PUSH
CX
MOV
CX,50000
DL2:
LOOP
DL2
POP
CX
PUSH
DX
MOV
AH,6
MOV
DL,0FFH
INT
21H
POP
DX
CMP
AL,0
;判断是否输入
JZ
T0
;没有
CMP
AL,[SI]
;判断是否等于下落的字母
JE
T7
;等于下落的字母,则下落下一个字母
JNE
X1
T7:
INC
M
CALL
POINT
CALL
BELL
JMP
T1
X1:
CMP
AL,20H
JE
TA
JNE
T3
TA:
CALL
PAUSE
T3:
CMP
AL,45H
JNE
T0
CALL
EXIT
CMP
N,1
JE
T4
T0:
CMP
AL,1BH
JNE
T12
CALL
CLEAR
CALL
DISPLAY1
JMP
T4
T12:
INC
DH
SUB
CX,1
JZ
MODIFYC
JMP
AGA
MODIFYC:
JMP
T1
T4:
RET
FALL
ENDP
;时间延迟函数及速度1函数
SLEEP1
PROC
PUSH
CX
MOV
CX,550D
LOOP1:
PUSH
CX
MOV
CX,550D
LOOP2:
PUSH
CX
MOV
CX,550D
LOOP3:
NOP
NOP
LOOP
LOOP3
POP
CX
LOOP
LOOP2
POP
CX
LOOP
LOOP1
POP
CX
RET
SLEEP1
ENDP
;时间延迟函数及速度2函数
SLEEP2
PROC
PUSH
CX
MOV
CX,400D
LOOP4:
PUSH
CX
MOV
CX,400D
LOOP5:
PUSH
CX
MOV
CX,400D
LOOP6:
NOP
NOP
LOOP
LOOP6
POP
CX
LOOP
LOOP5
POP
CX
LOOP
LOOP4
POP
CX
RET
SLEEP2
ENDP
;时间延迟函数及速度3函数
SLEEP3
PROC
PUSH
CX
MOV
CX,280D
LOOP7:
PUSH
CX
MOV
CX,280D
LOOP8:
PUSH
CX
MOV
CX,280D
LOOP9:
NOP
NOP
LOOP
LOOP9
POP
CX
LOOP
LOOP8
POP
CX
LOOP
LOOP7
POP
CX
RET
SLEEP3
ENDP
;时间延迟函数及速度3函数
SP_ADJ
PROC
CMP
A,1
JE
S1
CMP
B,1
JE
S2
CMP
V,1
CALL
SLEEP3
JMP
S3
S1:
CALL
SLEEP1
JMP
S3
S2:
CALL
SLEEP2
S3:
RET
SP_ADJ
ENDP
;画游戏边框
PAINT
PROC
NEAR
DIS2
DIS6
80,0,0,0
;宏调用画上边框
DIS7
0,0,55,25
;宏调用画右1边框
DIS7
0,0,56,25
;宏调用画右2边框
DIS7
0,0,79,24
;宏调用画右3边框
DIS7
0,0,0,25
;宏调用画左1边框
DIS7
0,0,24,25
;宏调用画左2边框
DIS7
0,0,25,25
;宏调用画左3边框
DIS6
79,0,0,24
;宏调用画下边框
DIS1
ST3,6,3
DIS1
ST1,9,5
DIS1
ST5,11,5
DIS1
ST2,13,5
DIS1
ST4,17,3
DIS1
ST8,15,5
DIS3
RET
PAINT
ENDP
;分数字符串显示函数
GOAL
PROC
NEAR
DIS2
MOV
AH,2
;置光标位置
MOV
BH,0
MOV
DH,11
MOV
DL,60
INT
10H
MOV
AH,09H
;显示str1
MOV
DX,SEG
STRE
MOV
DS,DX
MOV
DX,OFFSET
STRE
INT
21H
DIS3
RET
GOAL
ENDP
;打印实际得分
POINT
PROC
NEAR
DIS2
MOV
AH,2
;置光标位置
MOV
BH,0
MOV
DH,11
MOV
DL,67
INT
10H
MOV
AL,M
CMP
AL,10
JAE
X9
ADD
AL,30H
MOV
DL,AL
MOV
AH,02H
;显示得分
INT
21H
JMP
X10
X9:
MOV
AL,M
MOV
AH,0
MOV
DL,10
DIV
DL
PUSH
AX
MOV
AH,2
MOV
BH,0
MOV
DH,11
MOV
DL,67
INT
10H
;打印十位
ADD
AL,0
MOV
DL,AL
INT
21H
POP
AX
MOV
AL,AH
MOV
AH,2
MOV
DH,11
MOV
DL,68
INT
10H
ADD
AL,0
MOV
DL,AL
INT
21H
X10:
DIS3
RET
POINT
ENDP
;暂停函数
PAUSE
PROC
NEAR
DIS2
P1:
MOV
AH,07H
;无显示输入
INT
21H
CMP
AL,20H
;判断是否是继续的空格
JNE
P1
;不是则跳转
DIS3
RET
PAUSE
ENDP
;退出函数
EXIT
PROC
NEAR
DIS2
CALL
CLEAR
;调用清屏函数
DIS1
ST6,12,28
DIS1
ST7,14,20
MOV
AH,4CH
INT
21H
DIS3
RET
EXIT
ENDP
;表示击中的函数
BELL
PROC
NEAR
PUSH
DX
PUSH
AX
PUSH
CX
MOV
DX,60000D
;turn
on/of
60000d
times
IN
AL,61H
AND
AL,11111100B
SOUND:
XOR
篇3:教学方案(程序设计基础Access教学方案)
教学方案(程序设计基础Access教学方案) 本文关键词:方案,教学,程序设计,基础,Access
教学方案(程序设计基础Access教学方案) 本文简介:程序设计基础Access教学实施方案一、总体描述(一)基本描述课程名称:程序设计基础Access课程编号:tb07002课程类型:通识教育必修课程课程适用专业(或专业方向):文、体、艺术本专科预备知识:学生应修过大学计算机基础课程的主要内容,了解计算机系统的基本构成和工作原理,理解信息的存储与表达方
教学方案(程序设计基础Access教学方案) 本文内容:
程序设计基础Access教学实施方案
一、总体描述
(一)基本描述
课程名称:程序设计基础Access
课程编号:tb07002
课程类型:通识教育必修课程
课程适用专业(或专业方向):文、体、艺术本专科
预备知识:学生应修过大学计算机基础课程的主要内容,了解计算机系统的基本构成和工作原理,理解信息的存储与表达方式,能够熟练地操作计算机。
总学时:课程总学时54学时,其中课内讲授24学时,实验30学时。建议要求学生至少在课外增加36学时自主实验时间。
(二)课程简介
程序设计基础Access一门系统地介绍计算机数据库知识的通识教育必修课程。课程以Access为程序设计平台,介绍数据库的基本知识、方法和技术,培养学生数据库应用系统设计的初步能力。为今后进一步学习程序设计技术和方法,学习计算机的其他知识和技术,最终形成软件开发的能力打下基础。
(三)教学目标及要求
1教学目标
(1)掌握数据库系统和关系模型的基本概念
(2)掌握常用的SQL语句
(3)掌握数据库设计的步骤和方法
(4)掌握计算机程序设计的基本知识,提高逻辑思维能力和计算机应用能力
(5)掌握程序设计、分析和调试的基本技能
(6)掌握开发数据库应用系统的过程和基本技术
(7)能够开发一个小型数据库应用系统
2.
教学要求:
⑴
基本知识要求
熟练掌握数据库系统和关系数据模型的基本知识,了解关系规范化。掌握数据库设计的一部步骤,了解概念模型和E-R图,熟练掌握数据库及表的新建和修改操作。熟练掌握对话式使用SQL语句,了解程序式使用SQL语句。掌握程序、程序设计语言、面向过程程序设计及可视化程序设计的基本概念。了解程序设计的基本步骤、程序设计环境。熟练掌握常量、变量、运算符、运算符的优先级、表达式、数据类型等基本概念;掌握程序的三种基本控制结构;初步掌握程序调试的一般技术;了解常用的算法。
⑵
能力培养要求
应具有基本的实现问题求解过程的能力,即基本的问题分析,抽象成模型的能力,数据表达能力,以及基本算法的设计、描述与实现的能力;具有模块化程序设计与程序调试的基本能力;具有验证和评价算法的初步能力。
能够熟练掌握图形用户界面的基本元素的使用方法;掌握界面设计原则、常用界面设计;掌握登录界面、数据查询界面和数据操作界面的设计与实例;熟悉数据库应用系统的开发过程;能够合作开发一个小型数据库应用系统。
⑶
实验、实践要求
本课程完整的实践环节包括课程实验和课程大作业两个部分。其中课程实验由基础实验(验证型)和综合实验(设计型)组成。基础实验与课程教学同步,用于加深对知识点和方法的理解,练习和巩固相关的技术使用。综合实验主要针对多个知识点进行综合练习,加深对课程内容的整体认识,提升针对实际问题的应用设计能力。
课程大作业主要用于拓展技术方法学习,培养学生研究性学习的能力和解决问题的综合应用能力。安排在课程的后期,或课程结束后进行。课程大作业在软件工程生命周期开发方法的指导下,使学生加深对结构化程序设计的思想和方法的理解,提高数据结构和算法的基本设计能力,提高阅读理解程序和程序设计能力,并进行初步的团队合作训练。
由于程序设计是以设计并在机器上实现为主的活动,加深对知识的理解,掌握技术方法都需要在机器上不断地去实验实践。课程的实验时间只能保证初步地掌握课堂讲授的内容,达到领进门的作用。要做到熟练地使用Access数据库系统,掌握程序设计语言的表达、使用和程序设计基本方法,形成一定的程序设计能力,需要学生在课外自主增加上机实验练习时间。建议每周课外增加不少于4学时的实验时间,全学期总实验时间不少于98小时。
为了使实验前对需要求解的问题有一个清晰的思考和设计,提高到实验室实验的效率,必须事先作好实验预习的工作,即写出求解问题的模型、数据结构(使用的变量)、算法流程图、源程序代码等。
⑷
作业要求
作业包括书面作业和上机作业(实验),以上机作业为主。书面作业主要用于巩固教学所讲授的内容,增强阅读理解能力,主要形式有思考题、程序阅读、程序填空、总结报告等。上机作业主要用于培养实际编程能力,主要有程序改错、跟踪调试、程序设计等。
作业以课外自主练习为主,总量要求:阅读不少于3000行的各种程序,编写总量不少于1000行的各种程序。
⑸
教学要求
教学采用多媒体显示加黑板辅助分析的基本教学方式,讲解从问题出发,引导出需讲解的知识概念、技术方法。教学中应充分调动学生的兴起和主观能动性,引导学生进行讨论交流、自主学习。
(四)课程内容结构
一级知识单元
二级知识点
总学时
数据库基本概念
数据库的概念
关系数据库
数据库设计的步骤
E-R模型
Access2010简介
2+0+0
数据库和表的创建
创建数据库
建立表
维护表
操作表
2+4+4
查询
查询条件的组成
创建选择查询
在查询中进行计算
创建交叉表查询
创建参数查询
创建操作查询
操作已创建的查询
4+8+6
SQL查询
数据定义
数据操纵
数据查询
2+2+4
窗体
窗体概述
创建窗体
窗体控件
美化窗体
2+4+4
报表
报表的定义与组成
创建报表
编辑报表
报表中的排序与分组
使用计算控件
2+2+4
宏
宏的概述
常用宏操作和参数设置
创建宏
宏的运行和调试
2+2+4
模块和VBA
模块的概念
VBA程序设计基础
常用标准函数
VBA的程序结构
过程调用和参数传递
VBA程序运行错误处理
VBA程序的调试
6+6+8
VBA数据库编程
Docmd对象常用操作方法
数据访问对象DAO和ActiveX数据对象ADO
数据库数据访问和处理的特殊函数
2+2+2
注:总学时=课内讲授学时+课内实验学时+建设自主实验学时
二、教学大纲
(按教学章(节)顺序编写,编写内容包括:基本学时、教学要求、教学内容、难点、重点、教学策略或建议;教学要求采用:了解、理解、掌握、应用是个等级描述)
1.数据库基础知识
基本学时:课内讲授2学时,课内实验0学时
教学要求
使学生了解数据和数据管理的基本知识,了解数据管理技术的发展,掌握数据库系统的构成及各部分的作用,掌握实体及其联系,了解数据模型;掌握关系模型及关系数据库,;了解Access的发展及特点,掌握Access数据库的系统结构。
教学内容
1.数据、数据管理、数据库、数据库系统、数据库管理系统;
2.实体及联系、数据模型、关系术语、关系运算、关系完整性约束;
3.概念模型和E-R图;实体、联系、属性;图形表示;
4.数据库设计步骤、Access2010软件介绍
难点
理解数据与信息的区别,实体及其联系,数据模型,关系模型与关系运算。
重点
了解数据域数据管理的基本概念,对实体及其联系、数据模型,关系模型与关系运算的理解,对数据库设计基本过程、数据库系统的基本结构的理解。
教学策略或建议
从现实中的一些事例,让学生了解数据、实体及实体间的联系等概念,对于数据库基础知识的讲解要深入浅出,引发学生学习数据库应用的兴趣。
2.数据库和表
基本学时:课内讲授2学时,课内实验4学时
教学要求
⑴
正确掌握数据库的建立;掌握数据表的建立,掌握Access的数据类型;掌握数据表的打开、编辑、修改表结构;掌握数据的查找、替换、排序与筛选。
⑵
建立一个数据库,建立三个表,并输入数据。
教学内容
(1)数据库创建、数据库打开和关闭、数据库密码和安全性设置;
(2)表的创建、字段类型、字段属性、关系的建立;添加字段、删除字段、修改字段;
(3)表中数据的输入、编辑;数据的导入导出、查阅向导、插入对象;
(4)改变字段显示次序、调整字段宽度和高度、隐藏与显示字段、字段的冻结与取消冻结、设置数据表背景、设置字体、字形、字号和颜色;查找和替换、筛选和排序;
难点
Access数据类型和字段属性的概念,表结构的建立,表之间关系的建立。
重点
Access数据类型、字段属性、表结构的建立,向表中输入数据,建立表之间的关系以及对表的维护。
教学策略或建议
建立多个表,并向表中输入数据,建立表之间的关系,让学生了解一对一、一对多的关系,了解参照完整性、用户自定义完整性,实体完整性。
3.查询
基本学时:课内讲授4学时,课内实验8学时
教学要求
掌握查询的功能、类型;掌握选择查询、交叉表查询、参数查询、操作查询的建立;掌握对已有的查询进行各种操作。对已有的数据表建立不同类型的查询,并对查询进行各种操作。
教学内容
1.查询基本概念、类型、功能、查询视图;
2.查询条件的组成;日期常量、字符常量、数字常量、布尔型常量;算术函数、字符函数、日期函数;算术运算符、关系运算符、逻辑运算符、连接运算符、查询专有运算符;查询条件举例;
3.选择查询、查询中的计算、计算字段、交叉表查询、参数查询、生成表查询、删除查询、更新查询、追加查询;
难点
查询的功能,在查询中进行计算,创建交叉表查询,创建操作查询
重点
创建简单查询,交叉表查询,参数查询,操作查询,在查询中进行计算。
教学策略或建议
对于查询的功能要重点突出,多种查询的创建要灵活,不能死扣书上例题。
4.SQL查询
基本学时:课内讲授2学时,课内实验2学时
教学要求
熟练掌握对话式使用SQL语句,了解程序式使用SQL语句。
教学内容
1.SQL查询基本概念、功能、SQL视图;
2.SQL基本语法规则;Create语句、Alter语句、Drop语句、Insert语句、Update语句、Delete语句;
3.Select语句及Top子句、Group
By子句、Order
By子句
4.Select联合查询、嵌套查询、传递查询难点
难点
SQL语句的语法规则及使用方式。
重点
SQL语句的基本语法规则,使用SQL语句创建查询
教学策略或建议
重点讲解SQL各条语句的组成,通过示例来加深对句子语法规则的理解。
5.窗体
基本学时:课内讲授2学时,课内实验4学时
教学要求
正确认识窗体的概念、作用、结构;掌握窗体的建立,掌握窗体与数据表关联,掌握在窗体上建立控件;掌握对窗体进行设置。建立多个窗体,在窗体上建立各种控件;能够建立窗体与前面建立的数据表之间的联系;对已建立的窗体进行修饰。
教学内容
1.窗体的基本概念和功能、窗体设计视图的组成
2.纵栏式窗体、表格式窗体、数据表窗体、主/子窗体、图表窗体、数据透视表窗体
3.窗体中的控件;标签、文本框、命令按钮、选项组、选项按钮、切换按钮、复选框、组合框、列表框、图像、绑定对象框、非绑定对象框、分页符、选项卡、子窗体/子报表、直线、矩形;计算型控件
4.窗体属性;格式属性、数据属性、事件属性
难点
工具箱的使用,窗体和控件的属性设置。
重点
窗体的概念和作用,工具箱的使用,窗体和控件属性的设置,窗体和控件的事件。
教学策略或建议
结合Windows中的窗口和对话框介绍窗体的类型、作用、组成和结构。
6.报表
基本学时:课内讲授2学时,课内实验2学时
教学要求
正确理解报表的定义与组成、报表的分类;掌握报表的创建、编辑、排序与分组;掌握子报表、多列报表、复杂报表的建立;掌握报表的预览、打印。利用自动报表或设计视图对已有的数据表建立报表、子报表和多列报表;能够对建立的报表进行编辑、排序、分组、预览与打印。
教学内容
1.报表基本概念和功能、报表设计视图的组成;
2.纵栏式报表、表格式报表、图表报表、标签报表;
3.报表中控件的使用;
4.报表数据的排序、分组、统计计算;报表页码的设置;计算型控件;
5.报表的格式属性、数据属性;
难点
报表的概念,在报表中使用计算控件。
重点
报表的定义与组成,报表的排序、分组统计计算。
教学策略或建议
在打印预览视图下讲解报表的概念与组成。
7.宏
基本学时:课内讲授2学时,课内实验2学时
基本要求
正确理解宏的概念;掌握宏的创建、运行、编辑。阅读理解不少于150行程序,并上机验证所读程序的结果;设计编写宏不少于5个,并上机调试、运行所编写的宏,检验是否达到要求。
教学内容
1.宏的概念、设计视图的组成;
2.宏的分类;操作序列宏、宏组、条件宏;
3.宏中常用操作介绍;
4.宏的运行和调试;通过事件驱动宏;
难点
对宏的概念的理解。
重点
常用宏的操作和参数设置。
教学策略或建议
以实际的例子讲解宏的概念和操作。
8.模块和VBA程序设计
基本学时:课内讲授6学时,课内实验6学时
基本要求
掌握模块的概念;掌握创建模块的方法;了解面向对象程序设计基础;正确理解VBA程序设计基础;熟悉VBE变成环境,掌握VBA数据结构,掌握VBA流控制语句,掌握VBA程序的调试。阅读理解不少于200行程序,并上机验证所读程序的结果;设计编写程序不少于5个,并上机调试、运行所编写的程序,检验是否达到要求。
教学内容
1.模块和VBA基本概念;WBE编辑环境介绍;
2.VBA标准数据类型;用户自定义数据类型
3.变量和常量;直接常量、符号常量;变量标示符命名规则、变量的声明;赋值语句;
4.VBA中标准函数和运算符
5.输入框函数InputBox和消息框函数MsgBox
6.VBA程序控制结构;顺序结构;选择结构;循环结构;两层循环、三层循环;
7.过程调用和参数传递;
8.变量的作用域和生命周期;
9.VBA程序错误处理
难点
变量的概念与使用,表达式,条件语句,循环语句,过程定义和调用,参数传递。
重点
变量的概念与使用,表达式,条件语句,循环语句,过程定义和调用,参数传递。
教学策略或建议
在VBE编程环境里,对条件语句,循环语句进行讲解,要多通过示例讲解过程定义与调用。
9.VBA数据库编程
基本学时:课内讲授2学时,课内实验2学时
教学要求
理解DAO和ADO模型;能够编写程序通过ADO数据对象访问数据库,对数据库中的数据进行插入、修改、删除、查询等操作,并上机验证程序的结果;
教学内容
1.Docmd对象常用操作方法;Docmd.OpenForm、Docmd.OpenReport、Docmd.Close;
2.数据访问对象DAO和ActiveX数据对象ADO
3.数据库数据访问和处理的特殊函数;Nz、DCount、DAvg、DSum、DMax、DMin、DLookup;
难点
ActiveX数据对象ADO访问数据库的方法
重点
掌握ADO访问数据库的方法;掌握Docmd对象的常用操作方法。
教学策略或建议
通过示例演示讲解访问数据库的一般过程。
三、实验大纲
(一)实验项目及学时
序号
实验项目
学时数
实验性质
实验要求
1
数据库、表的创建与操作
4+4
验证
必做
2
查询的创建与操作
8+6
验证
必做
3
SQL查询设计
2+4
验证
必做
4
窗体的创建与操作
4+4
验证
必做
5
报表的创建与操作
2+4
验证
必做
6
宏的创建与应用
2+4
验证
必做
7
VBA代码的编写与应用
6+8
验证
必做
8
VBA数据库编程
2+2
验证
必做
(二)实验教学大纲
实验1
数据库、表的创建与操作
(4+4学时)
⒈
实验目的与要求
(1)掌握创建Access2010数据库的方法及常用操作
(2)掌握Access2010数据表的创建方法
(3)掌握表间关系的建立和修改
(4)掌握表中数据的输入、导入和导出
(5)掌握表中字段属性的设置
(6)掌握表中内容的编辑、表结构的修改和表外观的设置
(7)掌握表中记录的排序和筛选
2.实验内容
⑴创建一个图书管理数据库
⑵创建图书表、读者表、借阅表
⑶建立表间关系
⑷输入数据
⑸设置字段属性
⑹表的编辑
⑺排序和筛选
3.预习与准备
⑴预习数据库、数据表的创建方法和过程。
⑵预习字段的属性设置方法、记录的输入方法。
⑶预习调整数据表外观的方法。
⑷预习表间关系的建立方法。
实验2
查询的创建与操作(8+6学时)
1.实验目的与要求
(1)理解查询的基本概念及功能
(2)掌握查询条件的表示方法
(3)理解并掌握选择查询的特点及创建方法
(4)理解并掌握查询计算功能的特点及创建方法
(5)理解并掌握交叉表查询的特点及创建方法
(6)理解并掌握参数查询的特点及创建方法
(7)理解并掌握操作查询的特点及创建方法
2.实验内容
(1)选择查询
(2)查询中进行计算
(3)交叉表查询
(4)参数查询
(5)生成表查询
(6)删除查询
(7)更新查询
(8)追加查询
3.预习与准备
预习简单查询,交叉表查询,操作查询的建立方法,预习在查询中进行计算。
实验3
SQL查询设计(2+4学时)
1.实验目的与要求
(1)理解SQL的概念与作用
(2)掌握和使用SQL语句进行数据定义和数据操纵的方法
(3)掌握应用Select语句进行数据查询的方法及各种子句的使用
2.实验内容
(1)Create语句
(2)Alter语句
(3)Drop语句
(4)Insert语句
(5)Update语句
(6)Delete语句
(7)Select语句
3.预习与准备
预习各个SQL语句的语法规则。
实验4
窗体的创建与应用(4+4学时)
⒈
实验目的与要求
(1)理解窗体的概念、作用、视图和组成
(2)掌握创建Access窗体的方法
(3)掌握窗体样式和属性的设置方法
(4)理解控件的类型及各种控件的作用
(5)掌握窗体控件的添加和控件的编辑方法
(6)掌握窗体控件的属性设置方法及控件排列布局方法
2.实验内容
⑴窗体的创建。
⑵编辑窗体中的数据
⑶设置窗体的属性、修饰窗体
⑷窗体的设计
(5)窗体控件的使用
(6)创建主/子窗体
3.预习与准备
(1)自动创建窗体。
(2)利用设计视图创建窗体。
(3)控件的属性及设置方法。
实验5
报表的创建与操作(2+4学时)
⒈
实验目的与要求
(1)理解报表的概念、作用、视图和组成
(2)掌握创建Access报表的方法
(3)掌握报表样式和属性的设置方法
(4)掌握报表控件的添加和控件的编辑方法
(5)掌握报表控件的属性设置方法及控件排列布局方法
2.实验内容
(1)报表的创建
(2)报表的设计
(3)报表页码的设置
(4)报表分组统计计算
(5)创建主/子报表
(6)创建多列报表
3.预习与准备
(1)预习创建报表的方式。
(2)预习向报表中添加计算控件。
(3)预习修改已创建的报表。
实验6
宏的创建与应用(2+4学时)
⒈
实验目的与要求
(1)理解宏的分类、构成、作用。
(2)掌握创建宏的方法。
(3)掌握使用宏为窗体、报表、控件设置事件属性的方法。
2.实验内容
(1)创建操作序列宏
(2)宏组
(3)创建条件宏
(4)创建子宏
(5)创建嵌入的宏
(6)创建数据宏
(7)通过事件触发宏
3.预习与准备
(1)预习宏的定义。
(2)预习在宏设计器中设计简单宏、宏组、条件宏。
实验7
VBA代码的编写与应用(6+8学时)
1.实验目的与要求
(1)熟悉VBE编辑器的使用。
(2)掌握VBA的基本语法规则、各种运算符、函数的使用方法。
(3)掌握VBA的3种流程控制结构:顺序结构、选择结构和循环结构。
(4)熟悉过程和模块的概念、创建及使用方法。
(5)掌握为窗体、报表或控件编写VBA事件过程代码的方法。
2.实验内容
(1)VBE编辑器
(2)顺序结构
(3)选择结构
(4)循环结构
(5)过程调用和参数传递
(6)InputBox函数
(7)MsgBox函数
(8)VBA事件过程代码
3.预习与准备
(1)预习变量、运算符和表达式,VBA常用函数;
(2)预习VBA程序的控制结构;
(3)预习输入输出
(4)预习VBA事件定义
实验8
VBA代码的编写与应用(6+8学时)
1.实验目的与要求
(1)理解数据库引擎的概念
(2)了解DAO对象模型及访问数据库的方法
(3)熟悉和掌握ADO对象模型及访问数据库的方法
(4)熟悉和掌握ADO操作数据库的各种对象方法。
(5)熟悉和掌握操作数据库的各种函数。
2.实验内容
(1)利用DAO进行数据库访问
(2)利用ADO进行数据库访问
(3)VBA聚合韩式
3.预习与准备
预习DAO和ADO访问数据库的一般方法。
四、课程考核与学业评价方案
⒈考核构成:机试+实验考核+课外大作业考核
⒉成绩构成:机试成绩(60%)、平时成绩(10%,包括作业、课堂提问或讨论等),实验(20%),课外大作业(10%)。
⒊考核方式:
⑴机试考试:主要题型:填空题、判断题、选择题、阅读理解、程序改错题和编程题等。
考核范围:第1—9章。机试时间:90分钟(统一)
⑵实验考核:以平时实验报告和实验效果为依据。实验效果实验时当场检查评定。
⑶课外大作业考核:以完成的实际情况和效果为依据。逐人检查评定。