1、附录2新华书店进销存管理系统部分程序源代码1、 主程序MAIN.PRG程序代码SET DEFAULT TO C:毕业设计PUBLIC nkfgl,nxsgl,ncggl,nkcgl,nxtglSTORE .f. TO nkfgl,nxsgl,ncggl,nkcgl,nxtglPUBLIC nname,ndepartmentSTORE TO nname,ndepartmentDo Form loginfRead EventsDo Form mainRead EventsQuit2、 主表单MAIN.SCX代码2.1 表单Init过程程序代码do mmenu.mpr with this,.T.th
2、is.label2.caption = nnamethis.label4.caption = ndepartment3、 系统登入表单LOGINF.SCX代码3.1 表单登入按钮Click事件程序代码SELECT userGO TOP*检验用户名和密码是否输入If empty(thisform.text1.value) then thisform.label3.caption = 请输入用户名 returnelse if empty(thisform.text2.value) then thisform.label3.caption = 请输入密码 return endifendif*操作US
3、ER表,查询满足条件统计locate for name = alltrim(thisform.text1.value) if !found() thisform.label3.caption=用户不存在 returnelse if user.password != alltrim(thisform.text2.value) then thisform.label3.caption=密码错误 return endifendifnname = user.namendepartment = user.departmentnkfgl = user.kfglnxsgl = user.xsglncggl
4、= user.cgglnkcgl = user.kcglnxtgl = user.xtglthisform.releaseclear events4、 系统管理表单XTGLF.SCX代码4.1 表单Init过程程序代码thisform.text1.enabled = .f.thisform.text2.enabled = .f.thisform.text3.enabled = .f.bo1.enabled = .f.thisform.check1.enabled = .f.thisform.check2.enabled = .f.thisform.check3.enabled = .f.thi
5、sform.check4.enabled = .f.thisform.check5.enabled = .f.thisform.label5.visible = .f.thisform.text3.visible = .f.mand10.enabled = .f.mand11.enabled = .f.thisform.dis_recordthisform.dis_reccommand4.2 表单自定义过程DIS_RECORD程序代码PUBLIC newcommandSTORE .f. TO newcommandif reccount(user) = 0 thisform.text1.valu
6、e = thisform.text2.value = bo1.value = thisform.check1.value = 0 thisform.check2.value = 0 thisform.check3.value = 0 thisform.check4.value = 0 thisform.check5.value = 0else thisform.text1.value = user.namethisform.text2.value = user.passwordbo1.value = user.departmentif user.kfgl then thisform.check
7、1.value = 1else thisform.check1.value = 0endifif user.xsgl then thisform.check2.value = 1else thisform.check2.value = 0endifif user.cggl then thisform.check3.value = 1else thisform.check3.value = 0endifif user.kcgl then thisform.check4.value = 1else thisform.check4.value = 0endifif user.xtgl then th
8、isform.check5.value = 1else thisform.check5.value = 0endifendifthisform.refresh4.3 表单自定义过程DIS_RECCOMMAND程序代码private nstore 0 to nn = reccount(user) if n=1 .or. n=0 then mand1.enabled = .f. mand2.enabled = .f. mand3.enabled = .f. mand4.enabled = .f.else if recno(user)=1 then mand1.enabled = .f. mand2
9、.enabled = .f. mand3.enabled = .t. mand4.enabled = .t. else if recno(user)=n then mand1.enabled = .t. mand2.enabled = .t. mand3.enabled = .f. mand4.enabled = .f. else mand1.enabled = .t. mand2.enabled = .t. mand3.enabled = .t. mand4.enabled = .t. endif endifendifthisform.refresh4.4 表单保留按钮Click事件程序代码
10、if empty(thisform.text1.value) then =messagebox(请输入用户名,0+48+0,犯错) thisform.text1.setfocus thisform.refresh returnendifif empty(thisform.text2.value) then =messagebox(请输入密码,0+48+0,犯错) thisform.text2.setfocus thisform.refresh returnendifif .not.(alltrim(thisform.text2.value) = alltrim(thisform.text3.v
11、alue) then =messagebox(密码反复错误,请重新输入,0+48+0,犯错) thisform.text2.value = thisform.text3.value = thisform.text2.setfocus thisform.refresh returnendifif empty(bo1.value) then =messagebox(请选择所属部门,0+48+0,犯错) bo1.setfocus thisform.refresh returnendifif thisform.check1.value=0.and.thisform.check2.value=0.and
12、.thisform.check3.value=0.and.thisform.check4.value=0.and.thisform.check5.value=0 then =messagebox(最少选择一个用户权限,0+48+0,犯错) thisform.check1.setfocus thisform.refresh returnendifif thisform.check1.value=1.and.thisform.check2.value=1.and.thisform.check3.value=1.and.thisform.check4.value=1.and.thisform.che
13、ck5.value=1 then mesbox=messagebox(此用户将含有全部权限,请确定,4+48+0,警告) if mesbox=7 then thisform.check1.setfocus thisform.refresh return endifendif*用户权限处理PRIVATE nname,npassword,ndepartment,nkf,nxs,ncg,nkc,nxtnname = alltrim(thisform.text1.value)npassword = alltrim(thisform.text2.value)ndepartment = alltrim(b
14、o1.value)if thisform.check1.value = 1 then nkf = .t.else nkf = .f.endifif thisform.check2.value = 1 then nxs = .t.else nxs = .f.endifif thisform.check3.value = 1 then ncg = .t.else ncg = .f.endifif thisform.check4.value = 1 then nkc = .t.else nkc = .f.endifif thisform.check5.value = 1 then nxt = .t.
15、else nxt = .f.endif*判定是新统计保留还是修改统计If newcommand then & newcommand = .t. 是新统计保留 locate for user.name=alltrim(thisform.text1.value) if found() then =messagebox(用户已经存在,0+48+0,犯错) thisform.text1.setfocus thisform.refresh return endif *数据表user保留统计 insert into user(name,password,department,kfgl,xsgl,cggl,
16、kcgl,xtgl) values (nname,npassword,ndepartment,nkf,nxs,ncg,nkc,nxt) =messagebox(保留完成,0+48+0,提醒)else update user set password= npassword,department=ndepartment,kfgl=nkf,xsgl=nxs,cggl=ncg,kcgl=nkc,xtgl=nxt where name= nname =messagebox(修改完成,0+48+0,提醒)endif *表单初始化 thisform.text1.enabled = .f. thisform.
17、text2.enabled = .f. thisform.text3.enabled = .f. bo1.enabled = .f. thisform.check1.enabled = .f. thisform.check2.enabled = .f. thisform.check3.enabled = .f. thisform.check4.enabled = .f. thisform.check5.enabled = .f. mand1.enabled = .t. mand2.enabled = .t. mand3.enabled = .t. mand4.enabled = .t. man
18、d5.enabled = .t. mand6.enabled = .t. mand7.enabled = .t. mand8.enabled = .t. mand9.enabled = .t. mand10.enabled =.f. mand11.enabled =.f. mand12.enabled = .t. thisform.label5.visible = .f. thisform.text3.visible = .f. thisform.dis_reccommand thisform.dis_record newcommand = .f. thisform.refresh4.5 表单
19、浏览按钮Click事件程序代码DEFINE WINDOW browsewin FROM 1,1 TO 30,80 noFLOAT CLOSE nominimize nogrow nozoom systembrow fields name,department,kfgl,xsgl,cggl,kcgl window browsewin noappend nomodify nodeleterelease window browsewin5、 图书管理表单TSGL.SCX代码5.1 自定义过程AUTO_BOOKID程序代码select bookset order to bookidgo bottomp
20、rivate autoid1,autoid2,autoid3,autoid4autoid1 = alltrim(str(val(substr(alltrim(book.bookid),2,6)+1,6,0)autoid2 = len(autoid1)if autoid2 != 6 then for n = autoid2 to 5 autoid1 = 0 + autoid1 endforendifautoid4 = B + alltrim(autoid1)thisform.text1.value = autoid45.2 新建按钮Click事件程序代码thisform.text2.enable
21、d = .t.thisform.text3.enabled = .t.thisform.text4.enabled = .t.thisform.text5.enabled = .t.thisform.text6.enabled = .t.bo1.enabled = .t.thisform.text7.enabled = .t.thisform.text8.enabled = .t.mand1.enabled = .f.mand2.enabled = .f.mand3.enabled = .f.mand4.enabled = .f.mand5.enabled = .f.mand6.enabled
22、 = .f.mand7.enabled = .f.mand8.enabled = .f.mand9.enabled = .f.mand10.enabled =.t.mand11.enabled =.t.mand12.enabled = .t.thisform.text2.value = thisform.text3.value = thisform.text4.value = thisform.text5.value = thisform.text6.value = bo1.value = thisform.text7.value = 0thisform.text8.value = 0this
23、form.auto_bookidthisform.text2.setfocusthisform.newcommand = .t.thisform.refresh5.3 删除按钮Click事件程序代码if reccount(book)=1 then =messagebox(只有一条统计,不能删除,0+16+0,犯错) returnelse nbookid = alltrim(thisform.text1.value) nbookname = alltrim(thisform.text2.value) mesbox=messagebox(是否删除+nbookid+号图书,4+48+0,警告) if
24、 mesbox=7 then return else use book EXCLUSIVE delete from book where bookid=nbookid pack =messagebox(nbookid+图书已经删除,0+48+0,提醒) endifendifthisform.dis_recordthisform.dis_reccommandthisform.grid1.recordsource = bookthisform.refresh5.4 保留按钮Click事件程序代码if empty(thisform.text2.value) =messagebox(请输入书名,0+4
25、8+0,犯错) thisform.text2.setfocus thisform.refresh returnendifif empty(thisform.text3.value) =messagebox(请输入书号,0+48+0,犯错) thisform.text3.setfocus thisform.refresh returnendifif empty(thisform.text4.value) =messagebox(请输入出版社,0+48+0,犯错) thisform.text4.setfocus thisform.refresh returnendifif empty(thisfo
26、rm.text5.value) =messagebox(请输入作者信息,0+48+0,犯错) thisform.text5.setfocus thisform.refresh returnendifif empty(bo1.value) =messagebox(请选择图书类型,0+48+0,犯错) bo1.setfocus thisform.refresh return endifif thisform.text7.value = 0 =messagebox(请输入价格,0+48+0,犯错) bo1.setfocus thisform.refresh return endif PRIVATE
27、nbookid,nbookname,nbookno,nbookphouse,nbookwriter,nbookcd,nbookclass,nbookprice,nbookdiscountnbookid = alltrim(thisform.text1.value)nbookname = alltrim(thisform.text2.value)nbookno = alltrim(thisform.text3.value)nbookphouse = alltrim(thisform.text4.value)nbookwriter = alltrim(thisform.text5.value)nb
28、ookcd = alltrim(thisform.text6.value)nbookclass = alltrim(bo1.value)nbookprice = thisform.text7.valuenbookdiscount = thisform.text8.value*判定是新统计保留还是修改统计If thisform.newcommand then & newcommand = .t. 是新统计保留 *数据表book保留统计 insert into book (bookid,bookname,bookno,bookphouse,bookwriter,bookcd,bookclass,b
29、ookprice,bookdiscount) values (nbookid,nbookname,nbookno,nbookphouse,nbookwriter,nbookcd,nbookclass,nbookprice,nbookdiscount) =messagebox(保留完成,0+48+0,提醒)else update book set bookname=nbookname,bookno=nbookno,bookphouse=nbookphouse,bookwriter=nbookwriter,bookcd=nbookcd,bookclass=nbookclass,bookprice=
30、nbookprice,bookdiscount=nbookdiscount where bookid=nbookid =messagebox(修改完成,0+48+0,提醒)endif *表单初始化thisform.text2.enabled = .f.thisform.text3.enabled = .f.thisform.text4.enabled = .f.thisform.text5.enabled = .f.thisform.text6.enabled = .f.bo1.enabled = .f.thisform.text7.enabled = .f.thisform.text8.en
31、abled = .f.mand5.enabled = .t.mand6.enabled = .t.mand7.enabled = .t.mand8.enabled = .t.mand9.enabled = .t.mand10.enabled =.f.mand11.enabled =.f.mand12.enabled = .t.thisform.dis_recordthisform.dis_reccommandthisform.newcommand = .f. thisform.refresh5.5 浏览按钮Click事件程序代码DEFINE WINDOW browsewin FROM 1,1
32、TO 30,160 noFLOAT CLOSE nominimize nogrow nozoom systembrow fields bookid,bookname,bookno,bookphouse,bookwriter,bookcd,bookclass,bookprice,bookdiscount window browsewin noappend nomodify nodeleterelease window browsewin6、 会员输入表单KFGL_HYSR.SCX程序代码6.1 自定义过程AUTO_VIPID程序代码select vipset order to vipidgo b
33、ottomprivate autoid1,autoid2,autoid3,autoid4autoid1 = alltrim(str(val(substr(alltrim(vip.vipid),2,6)+1,6,0)autoid2 = len(autoid1)if autoid2 != 6 then for n = autoid2 to 5 autoid1 = 0 + autoid1 endforendifautoid4 = V + alltrim(autoid1)thisform.text1.value = autoid46.2 保留按钮Click事件程序代码*输入数据校验if empty(t
34、hisform.text2.value) =messagebox(请输入会员姓名,0+16+0,犯错) thisform.text2.setfocus returnendifif thisform.optiongroup1.value = 0 =messagebox(请选择会员性别,0+16+0,犯错) thisform.optiongroup1.option1.setfocus returnelse private nvipsex store to nvipsex if thisform.optiongroup1.value = 1 store 男 to nvipsex else stor
35、女 to nvipsex endifendifif empty(thisform.text4.value) =messagebox(请输入会员联络地址,0+16+0,犯错) thisform.text4.setfocus returnendifif empty(thisform.text5.value) =messagebox(请输入会员联络电话,0+16+0,犯错) thisform.text5.setfocus returnendifif empty(thisform.text6.value) =messagebox(请输入邮政编码,0+16+0,犯错) thisform.text6.se
36、tfocus returnendif*保留数据private nvipid,nvipname,nvipadd,nvipphone,nvipcodenvipid = alltrim(thisform.text1.value)nvipname = alltrim(thisform.text2.value)nvipadd = alltrim(thisform.text4.value)nvipphone = alltrim(thisform.text5.value)nvipcode = alltrim(thisform.text6.value)insert into vip (vipid,vipnam
37、e,vipsex,vipadd,vipphone,vipcode,vipsum,vipdiscount) values (nvipid,nvipname,nvipsex,nvipadd,nvipphone,nvipcode,0,0)=messagebox(保留成功,0+48+0,提醒)nmesbox=messagebox(是否打印会员卡?,4+32+0,会员卡打印)if nmesbox = 6 select vip.vipid,vip.vipname,vip.vipsex,vip.vipadd,vip.vipphone,vip.vipcode from vip where vip.vipid
38、= nvipid into cursor vipcard select vipcard report form vipcard.frx to print use in vipcardendifthisform.auto_vipidmand2.click6.3 清除按钮Click事件程序代码thisform.text2.value = thisform.optiongroup1.value = 0thisform.text4.value = thisform.text5.value = thisform.text6.value = thisform.text1.setfocusthisform.
39、refresh7、 会员查询表单KFGL_HYCX.SCX程序代码7.1 表单自定义过程DIS_GRID程序代码thisform.grid1.readonly = .t.thisform.grid1.columncount = 8thisform.grid1.column1.header1.caption = 会员编号thisform.grid1.column1.width = 80thisform.grid1.column1.movable = .f.thisform.grid1.column1.resizable = .f.thisform.grid1.column2.header1.ca
40、ption = 会员姓名thisform.grid1.column2.width = 80thisform.grid1.column2.movable = .f.thisform.grid1.column2.resizable = .f.thisform.grid1.column3.header1.caption = 会员性别thisform.grid1.column3.width = 80thisform.grid1.column3.movable = .f.thisform.grid1.column3.resizable = .f.thisform.grid1.column4.header1.caption = 联络地址thisform.grid1.column4.width = 250thisform.grid1.column4.movable = .f.thisform.grid1.column4.resizable = .f.thisform.grid1.column5.header1.caption = 联络电话thisform.grid1.column5.width = 80thisform.grid1.column5.movable = .