1、附录2 新华书店进销存管理系统部分程序源代码 1、 主程序MAIN.PRG程序代码 SET DEFAULT TO C:\毕业设计 PUBLIC nkfgl,nxsgl,ncggl,nkcgl,nxtgl STORE .f. TO nkfgl,nxsgl,ncggl,nkcgl,nxtgl PUBLIC nname,ndepartment STORE "" TO nname,ndepartment Do Form loginf Read Events Do Form main Read Events Quit 2、 主表单MAIN.SCX代码 2.1 表单
2、Init过程程序代码 do mmenu.mpr with this,.T. this.label2.caption = nname this.label4.caption = ndepartment 3、 系统登入表单LOGINF.SCX代码 3.1 表单登入按钮Click事件程序代码 SELECT user GO TOP *检验用户名和密码是否输入 If empty(thisform.text1.value) then thisform.label3.caption = "请输入用户名" return else if empty(thisform.
3、text2.value) then thisform.label3.caption = "请输入密码" return endif endif *操作USER表,查询满足条件统计 locate for name = alltrim(thisform.text1.value) if !found() thisform.label3.caption="用户不存在" return else if user.password != alltrim(thisform.text2.value) then thisform.
4、label3.caption="密码错误" return endif endif nname = user.name ndepartment = user.department nkfgl = user.kfgl nxsgl = user.xsgl ncggl = user.cggl nkcgl = user.kcgl nxtgl = user.xtgl thisform.release clear events 4、 系统管理表单XTGLF.SCX代码 4.1 表单Init过程程序代码 thisform.text1.enabled = .f.
5、 thisform.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. thisform.label5.visible = .f. thisform.text3.visible = .f. mand
6、10.enabled = .f. mand11.enabled = .f. thisform.dis_record thisform.dis_reccommand 4.2 表单自定义过程DIS_RECORD程序代码 PUBLIC newcommand STORE .f. TO newcommand if reccount("user") = 0 thisform.text1.value = "" thisform.text2.value = "" bo1.value = "" thisform.check1.value = 0 thisf
7、orm.check2.value = 0 thisform.check3.value = 0 thisform.check4.value = 0 thisform.check5.value = 0 else thisform.text1.value = user.name thisform.text2.value = user.password bo1.value = user.department if user.kfgl then thisform.check1.value = 1 else thisform.check1.valu
8、e = 0 endif if user.xsgl then thisform.check2.value = 1 else thisform.check2.value = 0 endif if user.cggl then thisform.check3.value = 1 else thisform.check3.value = 0 endif if user.kcgl then thisform.check4.value = 1 else thisform.check4.value = 0 endif if user.xt
9、gl then thisform.check5.value = 1 else thisform.check5.value = 0 endif endif thisform.refresh 4.3 表单自定义过程DIS_RECCOMMAND程序代码 private n store 0 to n n = reccount("user") if n=1 .or. n=0 then mand1.enabled = .f. mand2.enabled = .f. mand3.enabled = .f. mand4.enabled =
10、f. else if recno("user")=1 then mand1.enabled = .f. mand2.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
11、 .f. else mand1.enabled = .t. mand2.enabled = .t. mand3.enabled = .t. mand4.enabled = .t. endif endif endif thisform.refresh 4.4 表单保留按钮Click事件程序代码 if empty(thisform.text1.value) then =messagebox("请输入用户名",0+48+0,"犯错") thisform.tex
12、t1.setfocus thisform.refresh return endif if empty(thisform.text2.value) then =messagebox("请输入密码",0+48+0,"犯错") thisform.text2.setfocus thisform.refresh return endif if .not.(alltrim(thisform.text2.value) == alltrim(thisform.text3.value)) then =messagebox("密码反复错误,请重新输入
13、",0+48+0,"犯错") thisform.text2.value = "" thisform.text3.value = "" thisform.text2.setfocus thisform.refresh return endif if empty(bo1.value) then =messagebox("请选择所属部门",0+48+0,"犯错") bo1.setfocus thisform.refresh return endif if thisform.check1.value=0.and.thisf
14、orm.check2.value=0.and.thisform.check3.value=0.and.thisform.check4.value=0.and.thisform.check5.value=0 then =messagebox("最少选择一个用户权限",0+48+0,"犯错") thisform.check1.setfocus thisform.refresh return endif if thisform.check1.value=1.and.thisform.check2.value=1.and.thisform.check3.value=
15、1.and.thisform.check4.value=1.and.thisform.check5.value=1 then mesbox=messagebox("此用户将含有全部权限,请确定",4+48+0,"警告") if mesbox=7 then thisform.check1.setfocus thisform.refresh return endif endif *用户权限处理 PRIVATE nname,npassword,ndepartment,nkf,nxs,ncg,nkc,nxt nname =
16、 alltrim(thisform.text1.value) npassword = alltrim(thisform.text2.value) ndepartment = alltrim(bo1.value) if thisform.check1.value = 1 then nkf = .t. else nkf = .f. endif if thisform.check2.value = 1 then nxs = .t. else nxs = .f. endif if thisform.check3.value = 1 then n
17、cg = .t. else ncg = .f. endif if thisform.check4.value = 1 then nkc = .t. else nkc = .f. endif if thisform.check5.value = 1 then nxt = .t. else nxt = .f. endif *判定是新统计保留还是修改统计 If newcommand then && newcommand = .t. 是新统计保留 locate
18、 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,kcgl,xtgl) values (nname,npassword,
19、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.
20、 thisform.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. ma
21、nd2.enabled = .t. mand3.enabled = .t. mand4.enabled = .t. 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.label5.visible
22、 .f. thisform.text3.visible = .f. thisform.dis_reccommand thisform.dis_record newcommand = .f. thisform.refresh 4.5 表单浏览按钮Click事件程序代码 DEFINE WINDOW browsewin FROM 1,1 TO 30,80 noFLOAT CLOSE nominimize nogrow nozoom system brow fields name,department,kfgl,xsgl,cggl,
23、kcgl window browsewin noappend nomodify nodelete release window browsewin 5、 图书管理表单TSGL.SCX代码 5.1 自定义过程AUTO_BOOKID程序代码 select book set order to bookid go bottom private autoid1,autoid2,autoid3,autoid4 autoid1 = alltrim(str(val(substr(alltrim(book.bookid),2,6))+1,6,0)) autoid2 = len(autoid
24、1) if autoid2 != 6 then for n = autoid2 to 5 autoid1 = "0" + autoid1 endfor endif autoid4 = "B" + alltrim(autoid1) thisform.text1.value = autoid4 5.2 新建按钮Click事件程序代码 thisform.text2.enabled = .t. thisform.text3.enabled = .t. thisform.text4.enabled = .t. thisform.text5.enable
25、d = .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 = .f. mand7.enabled = .f. mand8.enabled = .f. mand9.enable
26、d = .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 = 0 thisform.text8.value = 0 thisform.auto_book
27、id thisform.text2.setfocus thisform.newcommand = .t. thisform.refresh 5.3 删除按钮Click事件程序代码 if reccount("book")=1 then =messagebox("只有一条统计,不能删除",0+16+0,"犯错") return else nbookid = alltrim(thisform.text1.value) nbookname = alltrim(thisform.text2.value) mesbox=messagebox("是
28、否删除"+nbookid+"号图书",4+48+0,"警告") if mesbox=7 then return else use book EXCLUSIVE delete from book where bookid=nbookid pack =messagebox(nbookid+"图书已经删除",0+48+0,"提醒") endif endif thisform.dis_record thisform.dis_reccommand thisform.grid1.recordso
29、urce = "book" thisform.refresh 5.4 保留按钮Click事件程序代码 if empty(thisform.text2.value) =messagebox("请输入书名",0+48+0,"犯错") thisform.text2.setfocus thisform.refresh return endif if empty(thisform.text3.value) =messagebox("请输入书号",0+48+0,"犯错") thisform.text3.setfocus this
30、form.refresh return endif if empty(thisform.text4.value) =messagebox("请输入出版社",0+48+0,"犯错") thisform.text4.setfocus thisform.refresh return endif if empty(thisform.text5.value) =messagebox("请输入作者信息",0+48+0,"犯错") thisform.text5.setfocus thisform.refresh return
31、 endif if empty(bo1.value) =messagebox("请选择图书类型",0+48+0,"犯错") bo1.setfocus thisform.refresh return endif if thisform.text7.value = 0 =messagebox("请输入价格",0+48+0,"犯错") bo1.setfocus thisform.refresh return endif PRIVATE nbookid,nbookname,nbookno,nbookphou
32、se,nbookwriter,nbookcd,nbookclass,nbookprice,nbookdiscount nbookid = alltrim(thisform.text1.value) nbookname = alltrim(thisform.text2.value) nbookno = alltrim(thisform.text3.value) nbookphouse = alltrim(thisform.text4.value) nbookwriter = alltrim(thisform.text5.value) nbookcd = alltrim(thisf
33、orm.text6.value) nbookclass = alltrim(bo1.value) nbookprice = thisform.text7.value nbookdiscount = thisform.text8.value *判定是新统计保留还是修改统计 If thisform.newcommand then && newcommand = .t. 是新统计保留 *数据表book保留统计 insert into book (bookid,bookname,bookno,bo
34、okphouse,bookwriter,bookcd,bookclass,bookprice,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=nbook
35、writer,bookcd=nbookcd,bookclass=nbookclass,bookprice=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. thisfor
36、m.text6.enabled = .f. bo1.enabled = .f. thisform.text7.enabled = .f. thisform.text8.enabled = .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_record this
37、form.dis_reccommand thisform.newcommand = .f. thisform.refresh 5.5 浏览按钮Click事件程序代码 DEFINE WINDOW browsewin FROM 1,1 TO 30,160 noFLOAT CLOSE nominimize nogrow nozoom system brow fields bookid,bookname,bookno,bookphouse,bookwriter,bookcd,bookclass,bookprice,bookdiscount window browsewin n
38、oappend nomodify nodelete release window browsewin 6、 会员输入表单KFGL_HYSR.SCX程序代码 6.1 自定义过程AUTO_VIPID程序代码 select vip set order to vipid go bottom private autoid1,autoid2,autoid3,autoid4 autoid1 = alltrim(str(val(substr(alltrim(vip.vipid),2,6))+1,6,0)) autoid2 = len(autoid1) if autoid2 != 6 t
39、hen for n = autoid2 to 5 autoid1 = "0" + autoid1 endfor endif autoid4 = "V" + alltrim(autoid1) thisform.text1.value = autoid4 6.2 保留按钮Click事件程序代码 *输入数据校验 if empty(thisform.text2.value) =messagebox("请输入会员姓名",0+16+0,"犯错") thisform.text2.setfocus return endif if thi
40、sform.optiongroup1.value = 0 =messagebox("请选择会员性别",0+16+0,"犯错") thisform.optiongroup1.option1.setfocus return else private nvipsex store "" to nvipsex if thisform.optiongroup1.value = 1 store "男" to nvipsex else stor "女" to nvipsex endif endif if empt
41、y(thisform.text4.value) =messagebox("请输入会员联络地址",0+16+0,"犯错") thisform.text4.setfocus return endif if empty(thisform.text5.value) =messagebox("请输入会员联络电话",0+16+0,"犯错") thisform.text5.setfocus return endif if empty(thisform.text6.value) =messagebox("请输入邮政编码",0+16+0,"犯错")
42、 thisform.text6.setfocus return endif *保留数据 private nvipid,nvipname,nvipadd,nvipphone,nvipcode nvipid = alltrim(thisform.text1.value) nvipname = alltrim(thisform.text2.value) nvipadd = alltrim(thisform.text4.value) nvipphone = alltrim(thisform.text5.value) nvipcode = alltrim(thisfo
43、rm.text6.value) insert into vip (vipid,vipname,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.
44、vipsex,vip.vipadd,vip.vipphone,vip.vipcode from vip where vip.vipid = nvipid into cursor vipcard select vipcard report form vipcard.frx to print use in vipcard endif thisform.auto_vipid mand2.click 6.3 清除按钮Click事件程序代码 thisform.text2.value = "" thisform.optiongroup1.value = 0 thi
45、sform.text4.value = "" thisform.text5.value = "" thisform.text6.value = "" thisform.text1.setfocus thisform.refresh 7、 会员查询表单KFGL_HYCX.SCX程序代码 7.1 表单自定义过程DIS_GRID程序代码 thisform.grid1.readonly = .t. thisform.grid1.columncount = 8 thisform.grid1.column1.header1.caption = "会员编号" thisfo
46、rm.grid1.column1.width = 80 thisform.grid1.column1.movable = .f. thisform.grid1.column1.resizable = .f. thisform.grid1.column2.header1.caption = "会员姓名" thisform.grid1.column2.width = 80 thisform.grid1.column2.movable = .f. thisform.grid1.column2.resizable = .f. thisform.grid1.column3.head
47、er1.caption = "会员性别" thisform.grid1.column3.width = 80 thisform.grid1.column3.movable = .f. thisform.grid1.column3.resizable = .f. thisform.grid1.column4.header1.caption = "联络地址" thisform.grid1.column4.width = 250 thisform.grid1.column4.movable = .f. thisform.grid1.column4.resizable = .f. thisform.grid1.column5.header1.caption = "联络电话" thisform.grid1.column5.width = 80 thisform.grid1.column5.movable = .






