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. thisformxbo1.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 =
6、f. thisformxmand10.enabled = .f. thisformxmand11.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 = "" thisformxbo1.value = ""
7、 thisform.check1.value = 0 thisform.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 thisformxbo1.value = user.department if user.kfgl then thisform.ch
8、eck1.value = 1 else thisform.check1.value = 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
9、 thisform.check4.value = 0 endif if user.xtgl 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 thisformxmand1.enabled = .f. thisformxm
10、and2.enabled = .f. thisformxmand3.enabled = .f. thisformxmand4.enabled = .f. else if recno("user")=1 then thisformxmand1.enabled = .f. thisformxmand2.enabled = .f. thisformxmand3.enabled = .t. thisformxmand4.enabled = .t. else if recno("user")=n th
11、en thisformxmand1.enabled = .t. thisformxmand2.enabled = .t. thisformxmand3.enabled = .f. thisformxmand4.enabled = .f. else thisformxmand1.enabled = .t. thisformxmand2.enabled = .t. thisformxmand3.enabled = .t. th
12、isformxmand4.enabled = .t. endif endif endif thisform.refresh 4.4 表单保存按钮Click事件程序代码 if empty(thisform.text1.value) then =messagebox("请输入用户名",0+48+0,"出错") thisform.text1.setfocus thisform.refresh return endif if empty(thisform.text2.value) then =messagebox("请输入密码"
13、0+48+0,"出错") thisform.text2.setfocus thisform.refresh return endif if .not.(alltrim(thisform.text2.value) == alltrim(thisform.text3.value)) then =messagebox("密码重复错误,请重新输入",0+48+0,"出错") thisform.text2.value = "" thisform.text3.value = "" thisform.text2.setfocus this
14、form.refresh return endif if empty(thisformxbo1.value) then =messagebox("请选择所属部门",0+48+0,"出错") thisformxbo1.setfocus thisform.refresh return endif if thisform.check1.value=0.and.thisform.check2.value=0.and.thisform.check3.value=0.and.thisform.check4.value=0.and.thisform.check
15、5.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=1.and.thisform.check4.value=1.and.thisform.check5.value=1 then mesbox=messagebox("此用户将具有全
16、部权限,请确认",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 = alltrim(thisform.text1.value) npassword = alltrim(thisform.text2.value) ndepartment = allt
17、rim(thisformxbo1.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 ncg = .t. else ncg = .f. endif if thisform.check4.value = 1 then nkc = .t.
18、 else nkc = .f. endif if thisform.check5.value = 1 then nxt = .t. else nxt = .f. endif *判断是新记录保存还是修改记录 If newcommand then && newcommand = .t. 是新记录保存 locate for user.name=alltrim(thisform.text1.value) if found() then =messagebox(
19、"用户已经存在",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,ndepartment,nkf,nxs,ncg,nkc,nxt) =messagebox("保存完毕",0+48+0,"提示") else upda
20、te 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.text2.enabled = .f. thisform.text3.enabled = .f. thisformxbo
21、1.enabled = .f. thisform.check1.enabled = .f. thisform.check2.enabled = .f. thisform.check3.enabled = .f. thisform.check4.enabled = .f. thisform.check5.enabled = .f. thisformxmand1.enabled = .t. thisformxmand2.enabled = .t. thisformxmand3.enabled = .t.
22、thisformxmand4.enabled = .t. thisformxmand5.enabled = .t. thisformxmand6.enabled = .t. thisformxmand7.enabled = .t. thisformxmand8.enabled = .t. thisformxmand9.enabled = .t. thisformxmand10.enabled =.f. thisformxmand11.enabled =.f. thisformxmand12.enabled = .t
23、 thisform.label5.visible = .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 field
24、s name,department,kfgl,xsgl,cggl,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,
25、6))+1,6,0)) autoid2 = len(autoid1) 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.ena
26、bled = .t. thisform.text5.enabled = .t. thisform.text6.enabled = .t. thisformxbo1.enabled = .t. thisform.text7.enabled = .t. thisform.text8.enabled = .t. thisformxmand1.enabled = .f. thisformxmand2.enabled = .f. thisformxmand3.enabled = .f. thisformxmand4.enabled = .f. thisformxmand5.ena
27、bled = .f. thisformxmand6.enabled = .f. thisformxmand7.enabled = .f. thisformxmand8.enabled = .f. thisformxmand9.enabled = .f. thisformxmand10.enabled =.t. thisformxmand11.enabled =.t. thisformxmand12.enabled = .t. thisform.text2.value = "" thisform.text3.value = "" thisform.text4.valu
28、e = "" thisform.text5.value = "" thisform.text6.value = "" thisformxbo1.value = "" thisform.text7.value = 0 thisform.text8.value = 0 thisform.auto_bookid thisform.text2.setfocus thisform.newcommand = .t. thisform.refresh 5.3 删除按钮Click事件程序代码 if reccount("book")=1 then =messagebox
29、"只有一条记录,不能删除",0+16+0,"出错") return else nbookid = alltrim(thisform.text1.value) nbookname = alltrim(thisform.text2.value) mesbox=messagebox("是否删除"+nbookid+"号图书",4+48+0,"警告") if mesbox=7 then return else use book EXCLUSIVE delete from book where bookid=n
30、bookid pack =messagebox(nbookid+"图书已经删除",0+48+0,"提示") endif endif thisform.dis_record thisform.dis_reccommand thisform.grid1.recordsource = "book" thisform.refresh 5.4 保存按钮Click事件程序代码 if empty(thisform.text2.value) =messagebox("请输入书名",0+48+0,"出错") thisform.t
31、ext2.setfocus thisform.refresh return endif if empty(thisform.text3.value) =messagebox("请输入书号",0+48+0,"出错") thisform.text3.setfocus thisform.refresh return endif if empty(thisform.text4.value) =messagebox("请输入出版社",0+48+0,"出错") thisform.text4.setfocus thisfor
32、m.refresh return endif if empty(thisform.text5.value) =messagebox("请输入作者信息",0+48+0,"出错") thisform.text5.setfocus thisform.refresh return endif if empty(thisformxbo1.value) =messagebox("请选择图书类型",0+48+0,"出错") thisformxbo1.setfocus thisform.refresh return end
33、if if thisform.text7.value = 0 =messagebox("请输入价格",0+48+0,"出错") thisformxbo1.setfocus thisform.refresh return endif PRIVATE nbookid,nbookname,nbookno,nbookphouse,nbookwriter,nbookcd,nbookclass,nbookprice,nbookdiscount nbookid = alltrim(thisform.text1.value) nbookname =
34、 alltrim(thisform.text2.value) nbookno = alltrim(thisform.text3.value) nbookphouse = alltrim(thisform.text4.value) nbookwriter = alltrim(thisform.text5.value) nbookcd = alltrim(thisform.text6.value) nbookclass = alltrim(thisformxbo1.value) nbookprice = thisform.text7.value nbookdiscount = thi
35、sform.text8.value *判断是新记录保存还是修改记录 If thisform.newcommand then && newcommand = .t. 是新记录保存 *数据表book保存记录 insert into book (bookid,bookname,bookno,bookphouse,bookwriter,bookcd,bookclass,bookprice,bookdiscount) values (nbookid,nbookname,nbookno,nbookphous
36、e,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=nbookprice,bookdiscount=nbookdiscount where bookid=n
37、bookid =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. thisformxbo1.enabled = .f. thisform.text7.enabled = .f. thisform.text8.enabled =
38、 .f. thisformxmand5.enabled = .t. thisformxmand6.enabled = .t. thisformxmand7.enabled = .t. thisformxmand8.enabled = .t. thisformxmand9.enabled = .t. thisformxmand10.enabled =.f. thisformxmand11.enabled =.f. thisformxmand12.enabled = .t. thisform.dis_record thisform.dis_reccommand t
39、hisform.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 noappend nomodify nodelet
40、e 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 then for n = autoid2
41、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 thisform.optiongroup1.value
42、 = 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 empty(thisform.text4.value)
43、 =messagebox("请输入会员联系地址",0+16+0,"出错") thisform.text4.setfocus return endif if empty(thisform.text5.value) =messagebox("请输入会员x",0+16+0,"出错") thisform.text5.setfocus return endif if empty(thisform.text6.value) =messagebox("请输入邮政编码",0+16+0,"出错") thisform.text6.setfocu
44、s 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(thisform.text6.value) insert i
45、nto 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.vipsex,vip.vipadd,vip.vipph
46、one,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 thisformxmand2.click 6.3 清除按钮Click事件程序代码 thisform.text2.value = "" thisform.optiongroup1.value = 0 thisform.text4.value
47、 "" 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 = "会员编号" thisform.grid1.column1.w
48、idth = 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.header1.caption = "会员性
49、别" 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.c
50、olumn5.header1.caption = "x" thisform.grid1.column5.width = 80 thisform.grid1.column5.movable = .f. thisform.grid1.column5.resizable = .f. thisform.grid1.column6.header1.caption = "邮政编码" thisform.grid1.column6.width = 80 thisform.grid1.column6.movable = .f. thisform.grid1.column6.resizable






