数据库课程设计(论文)-药品销售管理系统.doc_第1页
数据库课程设计(论文)-药品销售管理系统.doc_第2页
数据库课程设计(论文)-药品销售管理系统.doc_第3页
数据库课程设计(论文)-药品销售管理系统.doc_第4页
数据库课程设计(论文)-药品销售管理系统.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

药品销售管理系统一 系统简介:该系统具有系统用户管理、药品信息管理、库存管理、药品入库、药品销售、购买结算、取药管理、制定销售和采购报表等主要功能。图一显示了系统的主界面。图一该系统主要有以下特点:(1) 具有多文档界面(mdi)。系统以visual foxpro窗口作为主窗口,可以同时打开多个功能模块窗口。(2) 创建了一个自定义类来实现记录导航。所有功能模块都使用该类,并进一步扩展其功能。(3) 使用数据绑定功能实现记录的浏览和编辑操作。利用数据绑定可以简化数据的显示和保存。(4) 使用菜单系统来集成系统功能。系统各个功能模块独立实现,最后通过系统集成到一起。系统菜单替换了visual foxpro的系统菜单,并显示在visual foxpro窗口中。二 系统分析:本系统是针对仓储式药房创建“药品销售管理系统”的,主要有以下功能: 系统用户管理:药房的使用人员涉及前台销售员、收银员、取药员、采购员以及系统高级管理员,系统用户管理完成对各类使用人员系统帐户的添加、修改、删除和查询。药品信息管理:管理药品的基本信息,包括添加、修改、删除和查询。库存信息管理:管理药品的入库,库存量修改与查询,制定库存报表。前台销售管理:管理客户购物车记录的创建、添加、修改、删除和查询,以及根据用户要求查询特定药品信息。购买结算管理:根据客户购物车记录结算购药费用,并可对购物车记录进行修改。取药管理:客户结算之后,取药人员根据客户购物车从库房为用户取药,并完成购物车的注销操作。制定采购计划:购物人员根据药品库存量和药品销售情况制定采购计划。销售报表管理:根据每月药品的销售情况生成药品销售报表。三 系统模块设计:四数据库设计l 根据系统功能模块和药房销售管理流程,绘制药房销售系统数据流图。l 根据系统数据流图以及一般药房销售管理系统的需求,总结出如下数据字典: 系统用户数据:包含的数据项有系统用户名、登录口令和权限代码。 药品基本信息数据:包含的数据项有药品编号、名称、售价、进价、种类和厂家等。 药品销售数据:包含的数据项有销售编号、日期、药品编号和数量等。 药品库存数据:包含的数据项有药品编号、库存量和库存下限等。 客户购物车数据:包含的数据项有购物车编号、客户名、药品编号、数量、结算和日期等。l 根据以上数据字典设计出系统用户数据表、药品信息数据表、药品信息数据表、药品库存数据表、客户购物车数据表和购物车纪录表共6个数据表,各表结构如下:l 系统用户数据表用于保存系统用户的账户信息,包括用户名、口令和权限代码,数据表名为sysuserdata,结构如表一:字段名数据类型宽度是否允许为null用户名字符型5否口令字符型6否权限字符型1否表一系统用户编号形式00000、00001,用户权限使用0、1、2、3、4分别代表系统管理员、销售员、收银员、取药员和采购员。l 药品信息数据表用于保存每种药的基本信息,包括编号、名称、售价、进价、种类和厂家,表名为druginfo。结构如表二:字段名数据类型宽度是否允许为null编号字符型6否名称字符型25否售价数值型6否进价数值型6否种类字符型10否厂家字符型50否表二编号如a00001,b00002。l 药品销售数据表用于保存每种药的销售纪录数据,包括销售纪录编号、日期、数量、药编号,表名为drugsales。结构如表三:字段名数据类型宽度是否允许为null编号字符型11否药编号字符型6否数量数值型4否日期日期时间型8否表三编号用于唯一标识一种药的单笔销售纪录,形式如07101200001其中07为年、10为月、12为日。在用户结算取药之后,其购物车数据表和购物车纪录将被删除,购买数据则被保存在药品销售表中。l 药品库存数据表用于保存每种药的库存信息,包括库存编号、库存量和库存下限,表名为drugstore。结构如表四:字段名数据类型宽度是否允许为null编号字符型6否存量数值型4否下限数值型3否表四编号与药品信息表中的编号一致。l 客户购物车数据表每个客户都有自己的购物车数据表,由于保存客户选购药品的编号、数量。光临药房购药的顾客是动态的,所以数据库客户购物车数据表的数量也是动态的,对于每一个打算购买顾客的信息首先在客户购物车纪录表中添加一个纪录,并分配一个唯一的编号来标识,然后使用该编号来命名为客户创建的购物车数据表,结构如表五:字段名数据类型宽度是否允许为null编号字符型6否数量数值型6否表五l 购物车纪录表用于保存客户购物车纪录,包括购物车编号、客户、日期和结算,表名为shoppingcars。结构如表六:字段名数据类型宽度是否允许为null编号字符型11否客户字符型10否日期日期时间型8否结算逻辑型1否表六编号形式同销售数据表编号,结算字段用于标识客户是否已执行过结算操作,默认为.f.。五具体操作过程:1创建项目和数据库创建名称为drugmanage的项目。并将项目文件所在的文件夹设置为默认目录。然后创建新数据库命名为drugmanage,将其保存在默认目录下的data文件夹中。再按照下列具体信息建立表文件。结构如表七:数据表表名称文件名系统用户数据表sysuserdatasysuserdata.dbf药品信息数据表druginfodruginfo.dbf药品销售数据表drugsalesdrugsales.dbf药品库存数据表drugstoredrugstore.dbf购物车记录表shoppingcarsshoppingcars.dbf表七2创建系统用户登录表单在项目管理器的“文档”中选中“表单”,创建如图2所示表单图二 系统用户登录表单(1)按表八所示设置表单和控件属性。对象属性属性值对象属性属性值from1alwaysontop.t.command1caption确定autocenter.t.default.t.borderstyle2tabindex2caption用户登录command2cancel.t.contorlbox.f.caption取消showwindow2tabindex3window type1textbox1nametxtnamelabel1autosize.t.tabindex0caption用户名textbox2nametxtpasswordlabel3autosize.t.passwordchar*caption药品销售管理系统tabindex1fontname隶书lable2autosize.t.对象属性属性值对象属性属性值fontsize20caption口令表八(2)选择表单为表单设置两个新的属性nmaxlogtimes和nlogtimes,分别用于保存允许用户最大登录次数和当前登录次数,初始值分别为3和0。(3)编写确定的click事件过程。代码如下:*首先检查是否超过允许的最多登录次数thisform.nlogtimes=thisform.nlogtimes+1&当前登录次数加1if thisform.nlogtimesthisform.nmaxlogtimes*在超过允许的最多登录次数时显示提示信息,并关闭登录对话框cstr=你已超过允许的最多登录次数,登录对话框将关闭messagebox(cstr,16,用户登录验证)&显示提示thisform.release&关闭登录对话框else*在允许的最多登录次数范围内,首先获得用户输入的登录信息cname=alltrim(thisform.txtname.value)cpassword=alltrim(thisform.txtpassword.value)*检验用户名是否存在select sysuserdatalocate for alltrim(用户名)=cnameif not found()messagebox(用户名输入错误!,16,用户登录验证)thisform.txtname.selstart=0thisform.txtname.sellength=len(cname)thisform.txtname.setfocusreturnendif*在用户名正确时,检查口令是否正确if alltrim(口令)=cpassword*显示登录信息通过验证的信息messagebox(登录成功!,64,用户登录验证) thisform.release&关闭登录对话框*保存当前用户信息,下列变量在系统主文件中定义capp_currentuser=cnamecapp_currentpwd=cpasswordcapp_currentpop=权限lapp_logon=.t.&lapp_logon设置为.t.表示登录成功elsemessagebox(口令输入错误!,16,用户登录验证)thisform.txtpassword.value=thisform.txtpassword.setfocusendifendif上面的lapp_longon变量用于表示是否登录成功,在系统的启动主程序中将通过判断该变量来决定是结束程序,还是加载系统菜单。(4)编写取消按钮的click事件过程。代码如下:nr=messagebox(你选择了退出登录,是否退出?,68,用户登录)if nr=6thisform.release&关闭登录对话框表单endif(5)编写表单的unload事件过程。代码如下:clear events&清除事件循环(6)保存登录表单。路径:sjkformssysuserlog.scx3创建纪录导航类。单击首记录、前一记录、后一记录、尾记录按钮可分别使第一个记录、前一个记录、后一个记录和最后一个记录称为当前记录。(1) 单击新建,打开“新建类”对话框,以mynavigator作为类名,在“派生于”中选择tollbar,在“存储于”中输入mynavigator.vcx作为保存类的文件名。然后单击确定。打开“类设计器”窗口。(2) 在属性窗口中将工具栏的caption属性设置为“记录导航”,showwindow属性设置为1。(3) 按表九所示为工具栏添加四个命令按钮。控件属性属性值command1caption首记录namecmdfirstcommand2caption前一记录namecmdpreviouscommand3caption后一记录namecmdnextcommand4caption尾记录namecmdlast表九(4)在工具栏中双击首记录打开代码窗口编写click事件过程,代码如下:go topthisform.refresh依次编写前一记录click事件过程代码:go topthisform.refresh后一记录click事件过程代码:skipif eof()go bottomendifthisform.refresh尾记录click事件过程代码:go bottomthisform.refresh(5)设计完成如图三所示工具栏,保存。路径:sjkclass mynavigator.vcx4创建系统用户数据管理表单在项目管理器中创建一个新的表单,在表单的数据环境设计器中添加保存系统用户信息的sysuserdata表,将表对应的cursor1的exclusive属性设置为.t.。从数据环境设计器中将sysuserdata表的各个字段拖动到表单设计窗口中。然后为表单添加一个记录导航条和用于执行添加、删除、修改、保存、退出添加修改以及关闭表单操作的命令按钮,如图四所示:图四 系统用户数据管理表单(1) 按表十设置表单和控件属性。对象属性属性值对象属性属性值from1autocenter.t.txt用户名disablebackcolor255,255,255borderstyle2disableforecolor0,0,0caption系统用户管理format!tshowwindow1maxlength5command1caption添加readonly.t.namecmdaddtxt口令disablebackcolor255,255,255command2caption修改disableforecolor0,0,0namecmdeditinputmast999999command3caption删除maxlength6namecmddeletereadonly.t.command4caption保存txt权限disablebackcolor255,255,255namecmdsavedisableforecolor0,0,0command5caption退出inputmast9namecmdescmaxlength1command6caption关闭readonly.t.namecmdexit表十(2) 选择“表单”/“新建属性”命令,为表单创建两个属性isadding和iseditting,分别用于表示添加和编辑状态。(3) 编写表单init事件过程,在表单加载时,在表单标题栏中显示sysuserdata表中的记录信息,代码如下: *根据sysuserdata表中是否有记录显示提示信息cmsg=系统用户管理if reccount()0cmsg=cmsg+ - 当前记录:+alltrim(str(recno()+/+alltrim(str(reccount()+elsecmsg=cmsg+ - 无系统用户数据endifthisform.caption=cmsg(4) 扩展记录导航类功能。单击记录导航条中的首记录、前一记录、后一记录和尾记录按钮改变当前记录时,在表单标题栏中显示sysuserdata表中的记录信息。在首记录、前一记录、后一记录和尾记录按钮的单击事件过程中,首先执行dodefault()方法执行记录导航条类的默认事件代码,即完成记录导航,然后添加代码实现记录信息显示功能。代码略。(5) 编写添加按钮的click事件过程。在单击添加按钮时,进入添加记录状态,取消各个文本框的数据绑定属性和只读属性,并清空,使其进入编辑状态。同时禁用记录导航条、添加、修改、删除和关闭按钮,等执行完保存或退出添加状态之后再启用。添加的click事件过程代码略。(6) 编写修改按钮的click事件过程。代码略。(7) 编写退出按钮的click事件过程。在单击退出按钮时,退出当前添加或修改状态。恢复各个文本框的数据绑定属性和只读属性,启用记录导航条、添加、修改、删除和关闭按钮。代码略。编写保存按钮的click事件过程。在单击保存按钮时,保存新添加的记录或修改的当前记录。首先检验输入的数据是否有效,然后使用insert语句将添加的记录或使用replace语句将修改的当前纪录保存到sysuserdata表中。然后,恢复各个文本框的数据绑定属性和只读属性,启用记录导航条、添加、修改、删除和关闭按钮,代码略。(8) 编写删除按钮的click事件过程。在单击删除时删除当前记录,代码略。(9) 编写关闭按钮的click事件过程。单击关闭时关闭表单,代码如下:if messagebox(是否退出系统用户管理?,36,系统用户管理)=6thisform.release&关闭系统用户管理表单endif(10) 保存表单。路径:sjkformssysrsermanage.scx5.创建口令修改表单在项目管理器中创建一个新表单,在表单的数据环境设计器中添加保存系统用户信息的sysuserdata表。设计如图五所示表单图五 修改口令表单(1)编写表单init事件过程。在表单加载时,根据在capp_currentuser变量中保存的当前用户从sysuserdata表中获得用户的旧口令,并将用户名和旧口令显示在表单中。代码略。(2)编写清除按钮的click事件过程。单击清除时清除输入的新口令,代码如下:*清除新口令thisform.txtnewpwd1.value=thisform.txtnewpwd2.value=(3)编写确定按钮的click事件过程。在单击确定按钮时,首先检验两次输入的新口令是否相同,如果不相同,则显示相应的提示信息,否则将新口令保存到sysuserdata表中。代码略。(4) 编写关闭按钮的click事件过程。if messagebox(是否退出口令修改?,36,口令修改)=6thisform.release&关闭口令修改表单endif6创建药品信息管理表单在项目管理器中创建一个新的表单,在表单的数据环境设计器中添加保存药品信息的druginfo表,将表对应的cursorl的exclusive属性设置为.t.。从数据环境设计器中将druginfo表的各个字段拖动到表单设计窗口中。用组合框显示“种类”字段数据,为表单添加一个记录导航条和用于执行添加、删除、修改、保存、退出添加修改以及关闭表单操作的命令按钮,如图六所示图六 药品信息管理(1) 按表十一设置表单和控件属性。对象属性属性值对象属性属性值from1autocenter.t.txt编号disablebackcolor确定borderstyle2disableforecolor.t.caption药品信息管理format2showwindow1maxlength.t.command1caption添加readonly取消namecmdaddcombo1disablebackcolor3command2caption修改disableforecolortxtnamenamecmdeditreadonly0command3caption删除nametxtpasswordnamecmddeletesorted*command4caption保存rowsourcetype1namecmdsavecontrolsource.t.command5caption退出txt进价disablebackcolor口令namecmdescdisableforecolor.t.command6caption关闭inputmask2namecmdexitalignment.t.txt厂家disablebackcolor255,255,255readonly取消disableforecolor0,0,0txt售价disablebackcolor3readonly.t.disableforecolortxtnametxt名称disablebackcolor255,255,255inputmask0disableforecolor0,0,0alignmenttxtpasswordreadonly.t.readonly*表 十一(2)选择“表单”/“新建属性”命令,为表单创建两个属性isadding和iseditting,分别用于表示添加和编辑状态。(3)编写表单init事件过程。在表单加载时,检验druginfo表中是否有药品信息记录,在表单标题栏中显示记录信息,并将药品中类组合框控件的rowsource属性设置为获得药品种类信息sql select语句。代码略。(4)扩展记录导航类功能。在单击记录导航条中的首记录、前一记录、后一记录和尾记录按钮改变当前记录时,在表单标题栏中显示druginfo表中的记录信息。在首记录、前一记录、后一记录和尾记录按钮的单击事件过程中,首先执行dodefault()方法执行记录导航条类的默认事件代码,即完成记录导航,然后添加代码实现记录信息显示功能。代码略。(5)编写添加按钮的click事件过程。在单击添加按钮时,进入添加记录状态,取消各个文本框的数据绑定属性和只读属性,并清空,使其进入编辑状态。同时禁用记录导航条、添加、修改、删除和关闭按钮,在执行了保存或退出添加状态之后再启用。代码略。(6)编写修改按钮的click事件过程。在单击修改时,进入修改记录状态,同上。代码略。(7)编写退出按钮的click事件过程。代码略。(8)编写保存按钮的click事件过程。在单击保存按钮时,保存新添加的记录或修改的当前记录。首先检验输入的数据是否有效,然后使用insert语句将添加的记录或使用replace语句将修改的当前纪录保存到sysuserdata表中。然后,恢复各个文本框的数据绑定属性和只读属性,启用记录导航条、添加、修改、删除和关闭按钮,代码略。编写删除按钮的click事件过程。代码略。(9) 编写关闭按钮的click事件过程。代码如下:if messagebox(是否退出药品信息管理?,36,药品信息管理)=6thisform.release&关闭药品信息管理表单endif(10) 保存表单。路径:sjkformsdurginfomanage.scx7.创建药品入库表单在药品入库表单中,显示药品名称和编号列表。执行药品入库操作时,可从列表中选择药品名称和药品编号,然后输入药品入库数量,完成药品入库操作。(1) 在项目管理器中创建一个新的表单,在表单的数据环境设计器中添加保存药品库存信息的drugstore表,将表对应的cursorl的exclusive属性设置为.t.。(2) 为表单添加标签、组合框、文本框和命令按钮等控件,如图所示:图七 药品入库表单(3) 按表十二设置表单和控件属性。对象属性属性值对象属性属性值from1autocenter.t.combo2namecmbnumborderstyle2style2-下拉列表框caption药品入库text1nametxtnumshowwindow1inputmask9999command1caption保存label1autosize.t.namecmdsavecaption药品名称command2caption关闭label2autosizetxtnamenamecmdexitcaption0combo1namecmbnamelabel3autosize.t.style2-下拉列表框caption入库数量表 十二(4)编写表单的init事件过程,在表单加载时执行sql select命令从druginfo表中获得药品名称和药品编号,并用获得的数据建立药品名称和药品编号下拉列表框。代码略。(5)编写保存按钮的click事件过程。在单击保存时首先检验是否输入了药品入库数量的数据,然后检查指定的药品是否以存在库存记录。如果存在库存记录,则修改对应的库存量,否则添加新的库存记录。代码略。(6)编写药品名称下拉列表框的click事件过程。在药品名称下拉列表框中选择时,自动选中药品编号列表中的对应编号;反过来,在选择编号时,自动选中对应的名称。代码如下:*选种药品名称对应的编号thisform.cmbnum.listindex=thisform.cmbname.listindex*选种药品编号对应的名称thisform.cmbname.listindex=thisform.cmbnum.listindex(7)编写关闭按钮的click事件过程。代码如下:if messagebox(是否退出药品入库?,36,药品入库)=6thisform.release&关闭药品入库表单endif8创建药品库存数据管理表单(1)在项目管理器中创建一个新的表单,在表单的数据环境设计器中添加保存药品用户信息的drugstore表,将表对应的cursorl的exclusive属性设置为.t.。从数据环境设计器中将drugstore表的各个字段拖动到表单设计器窗口中。(2)为表单添加一个记录导航条和用于执行添加、删除、修改、保存、退出添加修改以及关闭表单操作的命令按钮,如图八所示。按表十三设置表单和控件属性。(3)选择“表单”/“新建属性”命令,为表单创建两个属性isadding和iseditting,分别用于表示添加和编辑状态。图八 药品库存数据管理表单对象属性属性值对象属性属性值from1borderstyle2command1caption修改caption药品库存数据管理namecmdeditshowwindow1command2caption删除txt编号disablebackcolor255,255,255namecmddeletedisableforecolor0,0,0command3caption保存readonly.t.namecmdsavetxt存量disablebackcolor255,255,255command 4caption退出disableforecolor0,0,0namecmdescinputmask9999command5caption关闭alignment0-左namecmdexitreadonly.t.txt下限caption999txt下限disablebackcolor255,255,255autosize0-左disableforecolor0,0,0caption.t.表 十三(4)编写init事件过程,在表单加载时,检验drugstore表中是否有药品信息记录,在表单标题栏中显示记录信息。代码如下:*根据drugstore表中是否有记录显示提示信息cmsg=药品库存数据管理if reccount()0cmsg=cmsg+ - 当前记录:+alltrim(str(recno()+/+alltrim(str(reccount()+elsecmsg=cmsg+ - 无药品库存数据endifthisform.caption=cmsg(5)扩展记录导航类功能。在单击记录导航条中的首记录、前一记录、后一记录和尾记录按钮改变当前记录时,在表单标题栏中显示druginfo表中的记录信息。在首记录、前一记录、后一记录和尾记录按钮的单击事件过程中,首先执行dodefault()方法执行记录导航条类的默认事件代码,即完成记录导航,然后添加代码实现记录信息显示功能。代码略。(6)编写修改按钮的click事件过程。在单击添加按钮时,进入添加记录状态,取消各个文本框的数据绑定属性和只读属性,并清空,使其进入编辑状态。同时禁用记录导航条、添加、修改、删除和关闭按钮,在执行了保存或退出添加状态之后再启用。代码略。(7)编写退出按钮的click事件过程。在单击退出按钮时,退出当前添加或修改状态。恢复各个文本框的数据绑定属性和只读属性,启用记录导航条、添加、修改、删除和关闭按钮。代码略。(8)编写保存按钮的click事件过程。在单击保存按钮时,保存新添加的记录或修改的当前记录。首先检验输入的数据是否有效,然后使用insert语句将添加的记录或使用replace语句将修改的当前纪录保存到sysuserdata表中。然后,恢复各个文本框的数据绑定属性和只读属性,启用记录导航条、添加、修改、删除和关闭按钮,代码如下:(9)编写删除按钮的click事件过程。代码略。(10)编写关闭按钮的click事件过程。代码如下:if messagebox(是否退出药品库存数据管理?,36,药品库存数据管理)=6thisform.release&关闭药品库存数据管理表单endif(11) 保存表单。路径:sjkformsdrugstoremanage.scx9.创建客户购物车表单创建客户购物车就是要为每个客户创建一个保存购药信息的表,该表保存客户所购药品的编号和数量。在创建购物车的同时,在“购物车记录”表中加入购物车的记录,包括购物车编号、客户名、日期和结算等信息。在创建购物车时,需要为购物车指定客户名称和一个可唯一标识购物车的编号。购物车编号采用自动生成方式,以字母t开头,加日期的6位数字和5位标识号组成,如t07062200001。(1) 在项目管理器中创建一个新的表单,在表单的数据环境设计器中添加保存购物车信息的shoppingcars表,将表对应的cursorl的exclusive属性设置为.t.。(2) 为表单添加标签、文本框和命令按钮等控件,如图九所示,按表十四设置表单及控件属性。图九 创建客户购物车表单对象属性属性值对象属性属性值from1autocenter.t.label1autosize.t.borderstyle2caption编号caption创建购物车label2autosize.t.showwindow1caption客户command1caption确定text1nametextnumbernamecmdokdisablebackcolor255,255,255command2caption刷新disableforecolor0,0,0namecmdrefreshreadonly.t.command3caption关闭text2nametxtnamenamecmdexit表 十四(3)编写表单的init事件过程。在表单加载时自动产生一个购物车编号,首先检查shoppingcars中是否有记录,如果有则用最大的编号加1得到新的购物车编号,否则,用标示号00001以及日期的6位数字组成购物车编号。代码如下:*设置shoppingcars的筛选条件select shoppingcarsgo top*按日期筛选记录set filter to 日期=datetime()count to nif n0 *存在当天的购物车记录,获得最大的日期对应的编号go bottomcnum=编号*显示当前可用的购物车编号n=val(right(cnum,5)cnum=left(cnum,7)n=n+1cnum=cnum+strtran(str(n,5), ,0)thisform.txtnumber.value=cnumelseset date to ymdthisform.txtnumber.value=t+strtran(dtoc(date(),/,)+00001endifthisform.refresh(4)编写确定按钮的click事件过程。在单击该按钮时执行购物车创建操作。首先执行create table命令创建购物车数据表,然后将购物车记录存入“购物车记录”数据表,代码略。(5)编写刷新按钮的click事件过程。在单击该按钮时,获得一个新的购物车编号。代码与表单的init代码相同。(6)编写关闭按钮的click事件过程。单击关闭按钮时关闭表单。代码如下:if messagebox(是否退出创建客户购物车表单?,36,创建客户购物车)=6thisform.release&关闭创建客户购物车表单endif(7)保存表单。路径:sjkformsaddshoppingcars.scx10.创建销售表单在药品销售表单中,可执行打开和关闭购物车、向导购物车添加、修改或删除项目,以及删除购物车操作。(1) 在项目管理器中创建一个新的表单,在表单的数据环境设计器中添加保存购物车信息的shoppingcars表,将表对应的cursorl的exclusive属性设置为.t.。(2) 为表单添加标签、文本框和命令按钮等控件,如图十所示,按表十五设置表单及控件属性。图十 药品销售表单对象属性属性值对象属性属性值from1autocenter.t.command1caption打开borderstyle2namecmdopencaption药品销售command2caption关闭购物车showwindow1namecmdcloselabel1autosize.t.enabled.f.caption购物车编号command3caption删除购物车label2autosize.t.namecmddeletecarcaption客户command4caption退出label1autosize.t.namecmdexitcaption药品编号command5caption添加label2autosize.t.namecmdadditemcaption数量enabled.f.text1nametxtnamecommand6caption删除text2nametxtnumnamecmddeleteitemmaxlength6enabled.f.text3nametxtsumcombo1namecmbnuminputmask9999style2-下拉列表grid1namegddruginfogrid2namegdshoppingcar对象属性属性值对象属性属性值columncount4columncount5readonly.t.readonly.t.表 十五(3)编写表单的init事件过程。在表单加载时,获得购物车编号列表和药品信息表格,显示默认购物车的客户姓名。代码略。(4)编写表单的resize事件过程。在表单大小发生变化时自动调整表格大小,代码如下:*调整表格高度thisform.gddruginfo.height=abs(this.height-thisform.gddruginfo.top-5)thisform.gdshoppingcar.height=abs(this.height-thisform.gdshoppingcar.top-5)(5)编写购物车编号列表的click事件过程。当从购物车编号列表中选择购物车时,自动显示对应的客户姓名,代码如下:citem=this.valueselect shoppingcarslocate for 编号=citemthisform.txtname.value=客户(6)编写打开按钮的click事件过程。在单击该按钮时打开从购物车编号列表选中的客户购物车,并显示该客户选购的药品。代码略。(7)编写关闭购物车按钮的click事件过程。在单击该按钮时,关闭当前客户购物车,代码略。(8)编写删除购物车按钮的click事件过程。在单击该按钮时,删除当前客户购物车,代码如下:*删除当前选定得购物车cnum=thisform.cmbnum.valueif messagebox(是否删除购物车+cnum+?,36,药品销售)=6&选择删除当前购物车drop table &cnum&删除当前购物车*删除购物车记录select shoppingcarsdelete while 编号=cnumpack*刷新购物车列表,执行sql select语句获得购物车编号select 编号,客户 from shoppingcars ;into cursor temp order by 编号select tempthisform.cmbnum.cleargo topdo while not eof()thisform.cmbnum.additem(编号)skipenddo*设置默认选项if reccount()0thisform.cmbnum.listindex=1go topthisform.txtname.value=客户elsethisform.txtname.value=*无购物车记录,禁用各个功能按钮thisform.cmdopen.enabled=.f.thisform.cmdclose.enabled=.f.thisform.cmddeletecar.enabled=.f.thisform.cmdadditem.enabled=.f.thisform.cmddeleteitem.enabled=.f.endifuse &关闭临时表tempendif(9)编写退出按钮的click事件过程。单击该按钮时关闭表单,代码:if messagebox(是否退出药品销售?,36,药品销售)=6thisform.release&关闭药品销售表单endif(10)编写“药品编号”文本框的interactivechange事件过程,在输入药品编号时,在药品信息表格中显示与之匹配的药品信息,代码:*设置药品信息临时表tempinfo的过滤条件select tempinfocfilter=alltrim(thisform.txtnum.text)if empty(cfilter) set filter toelseset filter to cfilter $ 编号endifthisform.gddruginfo.refresh(11)编写药品信息表格的afterrowcolchange事件过程。在药品信息表格中单击时,将对应药品的编号填写到“药品编号”文本框中,代码如下:lparameters ncolindexselect tempinfothisform.txtnum.value=编号 (12)编写添加按钮的click事件过程。在填写了药品编号和数量之后,单击添加按钮将其添加到客户选购项目列表中。代码略。(13)编写删除按钮的click事件过程。在单击该按钮时删除购物车中的当前项目,代码略。(14)保存表单。路径:sjkformsdrugsale.scx11.创建制订采购计划表单制订采购计划表单可分别显示有库存和无库存药品的信息,采购员根

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论