visual foxpro课程设计作业.docx
《visual foxpro课程设计作业.docx》由会员分享,可在线阅读,更多相关《visual foxpro课程设计作业.docx(22页珍藏版)》请在冰豆网上搜索。
visualfoxpro课程设计作业
VFP课程设计作业
一、表gz20101001621
1、建立表结构:
createtablegz20101001621(姓名c(4),分厂c
(2),基本工资n(6,2),奖金n(6,2),扣款n(6,2),应发工资n(6,2),备注m)
liststruc
编辑输入各字段值
2、添加:
go5
insert&出现记录编辑窗口,输入记录(记录详见表中)
list
插入:
altertablegz20101001621.dbfadd工号n(8)
list
删除:
altertablegz20101001621.dbfdrop工号
List
修改:
altertablegz20101001621.dbfalter应发工资n(8,2)
List
3、记录指针移动、检索操作练习:
go2
locateforrest分厂="2"
locatefor分厂="2"rest
disp
contin
disp
4、排序:
sorttoabon分厂/d,基本工资/dfields姓名,分厂,基本工资,奖金,扣款
useab
list
索引:
indexon分厂+str(基本工资,6,2)tagcd
List
统计:
usegz20101001621
replaceall应发工资with基本工资+奖金-扣款
list
go7
calculsum(基本工资),sum(奖金),sum(扣款),sum(应发工资)tojb,jj,kk,yf
go7
scatttoamemo
a(3)=jb
gatherfroma
list
go7
a(4)=jj
gatherfroma
list
go7
a(5)=kk
gatherfroma
list
go7
a(6)=yf
gatherfroma
list
二、编程练习
1、modicommande2-1.prg
主程序:
*e2-1.prg
ymj=0
input"请输入半径:
"tobj
dojswithbj,ymj
?
"圆面积=",ymj
Return
modicommandjs.prg
子程序:
*js.prg
parametersr,s
s=pi()*r*r
return
doe2-1.prg&输入R=10,回车“圆面积=314.16”
2、modicommande2-2.prg
程序:
*e2-2.prg
input"请输入存款数额:
"tox
input"请输入存款年限:
"ton
docase
casen=1
y=x*1.05
casen=2
y=x*1.055*1.055
casen=3
y=x*1.062*1.062*1.062
endcase
?
"本息和=",y
3、modicommande2-3.prg
程序:
*e2-3.prg
input"二次项系数:
"toa
input"一次项系数:
"tob
input"常数项:
"toc
docase
caseb^2-4*a*c<0
?
"x=","无解"
caseb^2-4*a*c>=0
?
"x=",(-b+sqrt(b^2-4*a*c))/(2*a)
?
?
(-b-sqrt(b^2-4*a*c))/(2*a)
endcase
4、modicommande2-4.prg
程序:
*e2-4.prg
s=0
fori=1to50
s=s+i
next
?
"s=",s
doe2-4.prg&计算得“s=1275”
三、根据表1,用命令方式和程序方式完成以下任务
1、usegz20101001621
replaceall应发工资with基本工资+奖金-扣款
list
go7
calculsum(基本工资),sum(奖金),sum(扣款),sum(应发工资)tojb,jj,kk,yf
?
jb,jj,kk,yf&详见一、4、统计
2、indexon分厂tagfc
totalon分厂togzhz20101001621field基本工资,奖金,扣款,应发工资
usegzhz20101001621
list
browsfield分厂,基本工资,奖金,扣款,应发工资title"全厂工资汇总表"
3、modicommande3-3.prg
程序:
*e3-3.prg
clear
input'打印职工工资表请输入1,打印全厂工资汇总表请输入2:
'ton
docase
casen=1
usegz20101001621
listtoprinter
otherwise
usegzhz20101001621
listtoprinter
endcase
use
4、modifyformgzwh&建立表单,并在数据环境中打开表gz20101001621
commandgroup1的click事件代码输入如下:
selegz20101001621
docase
casethis.value=1
ifrecn()skip
endif
casethis.value=2
ifrecn()>1
skip-1
endif
casethis.value=3
gotop
casethis.value=4
gobottom
casethis.value=5
zy=messagebox('是要增页吗?
',1+48+256,'确认增加工资单')
ifzy=1
gobott
insertblank
endif
casethis.value=6
sy=messagebox('是要删页吗?
',1+4+256,'确认增加工资单')
ifsy=1
delete
pack
endif
casethis.value=7
thisform.release
endcase
thisform.refre
验证:
doformgzwh&详见gzwh.scx
四、小型系统设计
修车登记表
编号:
5001日期:
97/01/02
修理项目
点火线圈
汽车牌号
A2020203
型号
S130
生产厂
南方汽车厂
车主姓名
李华
地址
前进路110号
电话
87878766
汽车修理单
登记单编号:
5005汽车牌号:
A2312318车主:
王平
修理项目
大修
送修日期
97/06/02
完工日期
97/03/30
零件号
100001
100002
100005
修理小时
200
零件数量
2
5
5
修理费
零件费
总金额
零件库存表
盘存:
方龙日期:
97/04/30
零件号
零件名
成本
数量
价格
最低库存
定货量
领料单
编号:
日期:
修理工:
零件号
数量
修理工登记表
工号
姓名
地址
电话
小时工资
零件定货计划单
日期:
97/04/23
零件号
零件名
库存量
最低库存
定货量
修理工工资月报表
日期:
97/04/30
工号
姓名
修理小时
小时工资
月工资
修理汽车发表
日期:
车主姓名
汽车牌号
备注
送修日期
修理项目
地址
修理费
零件费
总金额
1.编写主控程序
clear
usegz20101001621
text
***********************************************************
*1.应发工资合计4.打印工资数据*
*2.各项工资合计5.录入修改功能*
*3.按分厂汇总工资6.退出*
***********************************************************
endtext
dowhile.t.
@6,10clear
@6,10say"请输入1--6:
"gethydefaultspace
(1)
read
docase
casehy="1"
doyfgz1
casehy="2"
dogzhz2
casehy="3"
dofchz3
casehy="4"
dozggz4
casehy="5"
dolrxg5
casehy="6"
wait"系统将关闭!
"windowtimeout3
exit
endcase
enddo
use
2.利用项目管理器编译app.exe文件
3.根据题目数据设计了如下图表:
(1).创建系统主文件(qcxl.prg)
功能:
调用菜单(qcxlcd.mnx)
settalkoff
setdefatoh:
\qcxl
closeall
setviewtosjhj.vue
publicxldh,zljf
xldh=space(4)
doformfm
keyb'{ctrl+f4}'
modiwindscreentitle'汽车修理管理系统'
clea
doqcxlcd.mpr
readevent
quit
(2)建立sjhj.vue数据工作期如图所示(299)
(3)创建菜单程序(qcxlcd.mpr)
(4)修车登记表单(xcdj.scx)
其中,
(1)txt牌号的valid事件代码如下:
*若在该文本框中输入新牌号,qc表中就会自动增加该牌号
seleqc
locatefor牌号=xld.牌号
ifnotfound()
insertintoqc(牌号)values(xld.牌号)
endif
(2)txt牌号的valid事件代码如下:
*若在该文本框中输入新车主名,CZ表中就会自动增加该车主名
selecz
locatefor车主名=xld.车主名
ifnotfound()
insertintocz(车主名)values(qc.车主名)
endif
(3)commandgroup1的click事件代码如下:
selectxld
docase
casethis.value=1
ifrecn()skip
endif
casethis.value=2
ifrecn()>1
skip-1
endif
casethis.value=3
gotop
casethis.value=4
gobott
casethis.value=5
doformsrxldh
casethis.value=6
zy=messagebox('是要增页吗?
',1+48+256,'确认增加修理单')
ifzy=1
gobott
insertintoxld(编号)values(str(val(编号)+1,4))
endif
casethis.value=7
sy=messagebox('是要删页吗?
',1+48+256,'确认删除修理单')
ifsy=1
delete
pack
endif
casethis.value=8
selectqc
browsetitle'汽车修改'+space(20)+'单击行首可打删除标记,退出就删去'
pack
casethis.value=9
selectcz
browsetitle'车主修改'+space(20)+'单击行首可打删除标记,退出就删去'
pack
casethis.value=10
thisform.release
endcase
thisform.refresh
(4)寻页按钮的gotfocus事件代码如下:
selexld
jlh=recn()
locafor编号=trim(xldh)
ifnotfound()
waitwindow"无此编号!
"
gojlh
endif
thisform.refresh
将该表单运行后显示如下:
(4)输入修理单号表单(srxldh.scx)
其中,
(1)text1的lostfocus事件代码编写如下:
xldh=thisform.text1.value
(2)command1命令按钮的click的事件代码编写如下:
thisform.release
(5)汽车修理表单(qcxl.scx)
其中,
(一)form1的refresh事件代码编写如下:
thisform.text1.value=""
thisform.text2.value=""
thisform.text3.value=""
thisform.text4.value=""
thisform.text5.value=0
thisform.text6.value=0
thisform.text7.value=0
thisform.text8.value=0
*以上8个命令将文本框初始化,以免翻页后各文本框保持显示旧值
seleljyl
locafor编号=xld.编号
iffoun()
thisform.text1.value=零件号
thisform.text5.value=数量
endif
cont
ifnoteof()
thisform.text2.value=零件号
thisform.text6.value=数量
endif
cont
ifnoteof()
thisform.text3.value=零件号
thisform.text7.value=数量
endif
cont
ifnoteof()
thisform.text4.value=零件号
thisform.text8.value=数量
endif
(二)commandgroup1命令按钮的click的事件代码编写如下:
selexld
docase
casethis.value=1
ifrecn()skip
endi
casethis.value=2
ifrecn()>1
skip-1
endif
casethis.value=3
gotop
casethis.value=4
gobott
casethis.value=5
doformsrxldh
casethis.value=6
zy=messagebox('是要增页吗?
',1+48+256,'确认增加修理单')
ifzy=1
gobott
insertintoxld(编号)values(str(val(编号)+1.4))
endif
thisform.release
endcase
thisform.refresh
(6)零件订货计划表单(ljdh.scx)
在表单中,list1的init事件代码如下:
*在列表框中增入季度号选项
this.additem("1")
this.additem("2")
this.additem("3")
this.additem("4")
(2)list1的dblclick事件代码如下:
selectljkc
countfor库存量<最低库存tojls
ifjls=0
messagebox('库存量均不小于最低库存,第'+jd+'季度不需订货')
else
setfiltto库存量<最低库存
browsefiel零件号:
R,零件名:
R,库存量:
R,最低库存:
R,订货量;
title'第'+jd+'季度零件订货计划'
setfiltto
endif
(7)打印发票表单(dyfp.scx)
在表单中,
(1)text1的lostfocus事件代码如下:
xldh=thisform.text1.value
(2)command1的click事件代码如下:
selexld
locafor编号=trim(xldh)
ifnotfound()
waitwindow"无此编号!
"
else
seleljyl
sum数量*ljkc.价格for编号=trim(xldh)and零件号=ljkc.零件号tozljf
repoformfpprev
thisform.release
endif
(8)发票报表(fp.frx)