商品进销存管理系统.doc_第1页
商品进销存管理系统.doc_第2页
商品进销存管理系统.doc_第3页
商品进销存管理系统.doc_第4页
商品进销存管理系统.doc_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

第一章 引 言随着计算机技术的迅速发展,管理信息系统的实施在技术上已逐步成熟,要提高企业效益,就必须加强企业的管理,进销存管理系统作为商品或者货物管理必须要涉及到的部分,在各种企业中有广泛的应用前景.在传统企业的经营活动中,进、销、存一般都是手工管理,这样的管理浪费人力、物力、财力,而且效率非常低。在我国数量众多的企业中,中小企业占了绝大多数。这些企业也不可避免地要加入国际化企业的竞争行列,而实现企业信息化是参与挑战的必要条件。但是中小企业的多样性及其灵活多变的经营方式,加上相关投入量的限制,使得很多中小企业没有进行信息化建设。实际上大部分中小企业需要的只是能解决进销存管理、财务管理等的基础软件。因此,开发基于中小企业应用的进销存管理系统优为重要。在该系统中要实现对商品进货基本信息的录入、查询、打印,库存信息的录入、查询、打印,还有商品销售信息的商品入库、出库,销售记录查询、打印。系统维护主要对操作员的口令修改和对数据的转入和转出,方便系统操作员进行系统操作。本文所设计的进销存管理系统可以基本上满足中小商品管理公司的进销存管理。本系统将通过使用Visual FoxPro 6.0简体中文版开发进销存管理系统,可以解决这些问题大大提高企业的效益,为企业创造较大的商业机会。但由于本人软件设计方面的经验不足,因此本系统在设计过程中出现了许多的困难,我查阅了许多的资料,并参考了别人的程序,才最终完成了本系统的设计。第二章 研究现状及设计目标2.1 应用背景在我国数量众多的企业中,中小企业占了绝大多数。这些企业也不可避免地要加入国际化企业的竞争行列,而实现企业信息化是参与挑战的必要条件。但是中小企业的多样性及其灵活多变的经营方式,加上相关投入量的限制,使得很多中小企业没有进行信息化建设。实际上大部分中小企业需要的只是能解决进销存管理、财务管理等的基础软件。因此,开发基于中小企业应用的进销存管理系统优为重要。一般的说,软件开发要经过系统分析、系统设计、系统实施和维护几个阶段。(1)分析阶段在软件开发的分析阶段,信息收集是决定软件项目可行性的重要环节。程序设计要通过对开发项目信息的收集,确定系统目标、软件开发的总体思路及所需的时间等。(2)设计阶段在软件开发的设计阶段,首先要对软件开发进行总体规划,认真细致地搞好规划可以省时、省力、省资金;然后具体设计程序完成的任务、程序输入输出的要求及采用的数据库等,并用算法描述工具详细描述算法。(3)实施阶段在软件开发的实施阶段,要按系统论的思想,把程序对象视为一个大的系统,然后将这个大系统分成若干小系统,保证高级控制程序能够控制各个功能模块。一般采用“自顶向下”的设计思想开发高级控制程序,并逐级控制更低一层的模块,每一种模块执行一个独立、精确的任务,且受控于高级程序。编写程序时要坚持使程序易阅读、易维护的原则,并使过程和函数尽量小而简明,使模块间的接口数目尽量的少。(4)维护阶段 在软件开发的维护阶段,要经常修正系统程序的缺陷,增加新的功能。在这个阶段,测试系统的性能尤为关键,要通过调试检查语法错误和算法设计错误。并加以修正。2.2系统功能本系统中的商品进销存管理系统完成的功能主要包括如下内容。1.系统登录:只有使用正确的用户名与密码登录后才能使用系统提供的各项功能。2.系统管理:就是要进行用户信息的管理,包括添加用户、删除用户等功能。3.商品信息:就是对商品的进销存管理的一些信息,包括商品入库信息的入库、删除、修改、浏览、退出等功能。商品进货信息的确定、打印、删除、修改、浏览和退出等功能。商品销售信息的商品销售统计等功能。4.商品查询信息:就是关于商品的一些查询信息,包括进货查询(按商品名称、按进货日期、按联系电话和按联系人查询)、销售查询(按顾客名称、按商品名称、按销售日期、按商品编号和按电话号码查询)、库存查询(按库存号、按商品名、按入库时间、按商品编号查询)。5.打印报表:就是关于本系统商品的一些打印报表信息,包括进货信息报表、库存信息报表和销售信息报表的预览和打印。6.系统维护:包括修改密码、商品进销存数据转入和商品进销存数据转出等功能。7.退出系统:就是本系统的结束退出本系统。在该系统中要实现对商品进货基本信息的录入、查询、打印,库存信息的录入、查询、打印,还有商品销售信息的商品入库、出库,销售记录查询、打印。系统维护主要对操作员的口令修改和对数据的转入和转出,方便系统操作员进行系统操作。2.3系统特点本系统的主要特点是界面清晰、易于操作、功能较完善,系统运行的硬件要求不高。2.4开发工具与运行环境(1)开发工具本系统采用面向对象可视化编程工具Visual FoxPro6.0开发。(2)运行环境硬件环境:PII350MHz以上处理器、32MB以上内存、一般需240MB硬盘空间。第三章 解决的几个关键问题3.1系统中模块的划分进入Visual FoxPro之后,新建一个项目商品进销存管理系统.pjx,将以上所列的数据库及数据库中的表分别建入项目文件的数据页面的数据库之中,各临时表加入到数据页面的自由表中。通过“项目管理器新建”对话框在文档中建立14个表单文档,分别是报表汇总、登录界面、进货查询表、库存查询表、销售查询表、入库表、入库浏览表、商品销售统计、系统维护表、系统主界面、进货信息表、商品入库表、修改密码和添加用户等表单。同时在此对话框的报表项目中创建报表,分别为:kc1、sp1、xs1、进货报表、口令、库存报表、销售报表。数据记录来源于项目中的数据库中的表。3.2 系统开发要掌握的几个技术项目管理器:项目是指文件、数据、文档和Visual FoxPro对象的集合。项目管理器是Visual FoxPro6.0用来管理、组织数据和对象的主要工具。Visual FoxPro6.0项目存储在以.pjx为扩展名的文件中。数据库:表属于数据库中的一部分,建立表时先打开所属的数据库,在数据库中建立新表,也可以在创建表后往数据库中添加表。表单:表单是用户和Visual FoxPro6.0应用程序之间进行数据交换的接口。表单包含多种控件,控件是一个可以图形化的方式显示出来并能与用户进行交流的对象。菜单:菜单是一个应用程序为用户提供功能服务的窗口,在Visual FoxPro6.0中,设计自己的菜单,给应用程序添加一个友好的界面,方便用户操作。主程序设计:主程序的起点,一般包括初始化环境,显示启动界面,控制时间循环,退出应用程序后恢复原来发系统环境。编译应用程序:一个完整的Visual FoxPro数据库应用系统,最终运行环境应该脱离Visual FoxPro系统。因此,还应该把设计好的应用程序进行连编,就是把数据库、表单、报表、菜单等应用程序文件的扩展名可以连编成一个.app应用文件或一个.exe可执行文件。第四章 系统结构与模型4.1系统功能的设计思想企业商品进、销、存系统主要目的和任务是利用计算机快速、准确处理大量数据的特点,对商品实现自动化管理,及时处理信息,确定经营决策,提高经营者对市场的预测能力,提高员工的工作效率和企业的经济效益。在该系统中要实现对商品进货基本信息的录入、查询、打印,库存信息的录入、查询、打印,还有商品销售信息的商品入库、出库,销售记录查询、打印。系统维护主要对操作员的口令修改和对数据的转入和转出,方便系统操作员进行系统操作。本系统中的商品进销存管理系统完成的功能主要包括如下内容。1.系统登录:只有使用正确的用户名与密码登录后才能使用系统提供的各项功能。2.系统管理:就是要进行用户信息的管理,包括添加用户、删除用户、计算器等功能。3.商品信息:就是对商品的进销存管理的一些信息,包括商品入库信息的入库、删除、修改、浏览、退出等功能。商品进货信息的确定、打印、删除、修改、浏览和退出等功能。商品销售信息的商品销售统计等功能。4.商品查询信息:就是关于商品的一些查询信息,包括进货查询(按商品名称、按进货日期、按联系电话和按联系人查询)、销售查询(按顾客名称、按商品名称、按销售日期、按商品编号和按电话号码查询)、库存查询(按库存号、按商品名、按入库时间、按商品编号查询)。5.打印报表:就是关于本系统商品的一些打印报表信息,包括进货信息报表、库存信息报表和销售信息报表的预览和打印。6.系统维护:包括修改密码、商品进销存数据转入和商品进销存数据转出等功能。7.退出系统:就是本系统的结束退出本系统。4.2系统功能模块划分考虑到计算机技术的发展及销售业务的扩展,在全面调查的基础上,通过对现行管理的分析,提出系统的目标需求和功能分析的总体逻辑描述。确定开发思路之后,紧接着要进行详细的系统调查和认真的需求分析,掌握实际系统中的基本结构和当前已明确的业务流程,进行推导出计算机管理信息系统所要初步达到的目标。经调查和研究,可得知系统功能结构图如下图所示: 图系统功能模块图4.3数据库设计 数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏直接对应用系统的效率,以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有的及将来可能增加的需求。4.3.1数据库需求分析用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入。收集基本数据、数据结构,以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。在仔细调查企业的进销存管理过程的基础上,得到企业的商品进销存管理主要包括商品购进、商品入库和商品销售等几大业务部分,系统所要处理数据的流程如下图所示:数据流程图如下:进货员输入过程库存添加销售员录入过程检索经调查得到以下的业务基本情况:1) 商品购进信息:市场信息市场调查市场分析商品销售商品购进等。商品信息包括商品编号、商品名称、商品型号、进货单位、联系人、进货人、联系电话、进货日期、进货数量、商品单价、进货总价。2) 商品入库信息:检验商品按序编号商品入库等。商品入库包括商品编号、商品名称、入库号、仓库号、库存量、商品型号、入库时间、商品单价。3) 产品销售信息:销售需求商品出库商品销售企业调查。商品销售过程包括商品基本信息的录入、销售信息的存储等。4.3.2 数据库概念结构设计这一设计阶段是在需求设计的基础上,设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。本实例根据前面的设计而规划出的实体有库存信息实体、销售信息实体、进货信息实体、各个实体及实体之间的联系可采用ERD图来描述。 管理员用户名密码管理库存信息单价商品名库存量入库时间仓库号入库号进货信息商品名进货单位进货数量进货日期联系人电话管理销售信息商品名电话单价总价商品型号商品编号销售日期销售数量顾客1n11nn1管理管理1nn 图4.3.2商品进销存管理系统E-R图4.3.3数据库逻辑结构设计数据库的概念结构设计完毕后,现在可以将上面的数据库概念结构转化为某种数据库系统甩支持的实际数据模型,也就是数据库的逻辑结构。使用Visual FoxPro开发时可以直接使用Visual FoxPro自带的数据库,商品进销存管理系统中使用的各个数据表的字段设置如下。表1、库存表(kc.dbf) 字段名 类型 宽度 小数位数 索引商品编号 字符型 6 普通索引 商品名 字符型 10入库号 字符型 8商品型号 字符型 12仓库号 字符型 4库存量 数值型 8入库时间 日期型 8单价 货币型 8表2、进货表(sp.dbf)字段名 类型 宽度小数位数索引 商品编号 字符型 6 普通索引 商品名 字符型 10 商品型号 字符型 12 进货单位字符型 40 联系人字符型 10 电话 字符型 13 进货日期 日期型 8进货数量 数值型 8 单价 货币型 8 总价 货币型 8表3、商品销售表(xs.dbf)字段名 类型 宽度小数位数 索引 商品编号 字符型 6 主索引 商品名 字符型 10 商品型号字符型 12 顾客字符型 20 电话字符型 13 销售日期日期型 8 销售数量数值型 8 2 单价货币型8 总价货币型 8表4、口令表(口令.dbf)字段名 类型 宽度小数位数 索引 Yhm 字符型 10 Mm字符型 104.3.4数据库物理结构设计在需求分析和概念结构设计的基础上得到数据库的逻辑结构之后,就可以得到其物理结构,如下图所示: 新建项目:单击“文件新建”命令,选择“项目”,单击“新建文件”按钮,在弹出的对话框中输入项目的名字为“商品进销存管理系统、pjx”,单击“保存”按钮,将弹出“项目管理器”对话框。新建数据库:在项目管理器中选择“数据”选项卡,选中“数据库”项,单击“新建”按钮。此时,又出现“创建”对话框,将新建的数据库起名为“数据1”,单击“保存”按钮,将出现数据库设计器。此时,数据库已经创建成功。新建表:当数据库创建成功后,选定数据库设计器对话框,右击,在弹出的快捷菜单中选择“新建表”命令,弹出“新建表”对话框,单击“新表”按钮,将数据库命名,单击“保存”按钮将弹出“表设计器”对话框。在表设计器对话框中,选定字段选项卡,然后根据需要输入字段名、类型、宽度。输入记录: 把记录输入表中,所有的字段都已经输入后,单击“确定”按钮,此时,Visual FoxPro将询问用户是否要立即输入记录,选择“是”将会出现记录编辑窗口。在输入记录时,可以有两种方式的对话框,一种是编辑,另一种是浏览。第五章 系统实现技术5.1创建项目与数据库设计好数据库的结构后,需要创建程序中使用的数据库,在使用Visual FoxPro开发时,利用项目管理器有利于开发的规范化和条理化,因此首先需要创建一个Visual FoxPro项目。在Visual FoxPro主窗口中选择【文件】【新建】命令,在打开的“创建”对话框的“文件类型”区域中选择“项目”,然后单击【新建文件】按钮,即可打开项目管理器,完成1个新项目的创建。在项目管理器中切换到“数据”选项卡,在列表框中选择“数据库”选项,单击选项卡右侧的【新建】按钮,在打开的“新建数据库”对话框中单击【新建数据库】按钮,然后在打开的“创建”对话框中选择数据库文件保存的位置及数据库的名称,单击【保存】按钮可以完成一个空白数据库的创建。数据库创建完成后,在新建的数据库节点的子节点中选择“表”选项,单击选项卡右侧的【新建】按钮,在打开的“新建表”对话框中单击【新建表】按钮,然后在打开的“创建”对话框中选择表文件保存的位置及表的名称,单击【保存】按钮打开“表设计器”设计表的结构。5.2 系统登录界面设计界面的设计: 分别是三个label控件、一个text文本框控件、一个组合控件和两个命令按钮组成。如果登录的系统用户具有商品信息管理的权限,可在如图所示的登录界面表单中选择操作用户名和输入密码就可以进入下图的系统主界面表单。其“确定”按钮的代码如下:private syspasssele 口令syspass=alltrim(thisform.text2.value)locate for alltrim(口令.yhm)=allt(thisform.text1.value)if found() and alltrim(口令.mm)=syspass do form 系统主界面thisform.text2.value= thisform.releaseelse =messagebox(用户名或密码不正确,请重新输入!) thisform.text1.value= thisform.text1.setfocusendif图 登录界面表单“退出”按钮的代码如下: local ynyn=messagebox(确定退出吗?,4+32,信息提示!)if yn=6thisform.releaseclear eventsendif 5.2.1 系统主界面设计其系统主界面的设计内容如下图所示:1)“进货信息”按钮的代码do form d:高健进货信息表.scx2)“商品入库” 按钮的代码do form d:高健入库表.scx3)“商品销售”按钮的代码do form d:高健商品销售统计.scx4)“进货查询”按钮的代码do form d:高健进货查询表.scx5)“销售查询”按钮的代码do form d:高健销售查询表.scx图 系统主界面表单1) 界面中命令按钮的设计 界面中的9个命令按钮控件分别连控了系统中的6个子模快(子模块是由添加的菜单中的表单组成,即系统管理、商品信息、商品查询、打印报表、系统维护、退出系统),承担了本系统的主要功能,命令按钮组成的功能键不仅体现了菜单的作用,同时也体现了相对于菜单快捷的操作方式和美观形象的特点。2) 菜单的制作利用菜单设计器,创建了一个菜单栏,在其中包括6个菜单项,分别是系统管理(M)、商品信息(I)、商品查询(F)、打印报表(C)、系统维护(W)、退出系统(X)。在系统管理菜单项中包含两个过程子菜单修改密码和添加用户,分别可以运行一个“修改密码.scx”表单和一个“添加用户.scx”。在商品信息菜单项中包含三个过程子菜单,分别可以运行一个“商品信息表.scx”表单、一个“入库表.scx”表单、一个“商品销售表.scx”表单。在商品查询菜单项中包含三个过程子菜单,分别是库存查询、销售查询、进货查询,它们分别可以运行一个“库存查询表.scx”表单、一个“销售查询表.scx”表单、一个“进货查询表.scx”表单。在打印报表菜单项中包含三个过程子菜单,分别是进货报表、销售报表、库存报表。它们分别可以运行一个“进货报表.frx”报表、“销售报表.frx” 报表、 “库存报表.frx” 报表。在系统维护菜单项中包含一个过程子菜单,可以运行一个“系统维护.scx”表单。 在退出系统菜单项中包含一个过程子菜单,可以运行一段程序代码。5.3 系统中各个表单的设计5.3.1 进货信息表单的设计本表单的主要功能是对某一具体商品的详细情况进行浏览、查询,并可进行实时的打印输出,如下图所示: 图 进货信息表单(1)在界面中加入所需控件本表单由11个label控件、10个text文本框控件、6个command命令按钮(确定、打印、删除、修改、浏览、退出),一个表控件组成。5.3.2 商品入库表单的设计产品入库表主要功能是从本界面向数据表中添加入库的产品明细。为系统各项的查询提供依据。其具体如下图所示:图 商品入库表单(1)在界面中加入所需控件本表单的主要控件为标签(label)、文本框(text)、数据表格(grid)、按钮(button)。其各个名称分别如上图所示。在此不在详述。5.3.3 销售统计表单的设计考虑到用户的实际需要,在这里设计了对所销售商品的有条件和无条件统计两种统计方式,有条件统计必须输入对应的商品编号和商品名,然后可实现对其按日、月、年进行统计。而所谓的无条件统计是指用户统计的结果是销售库里全部的记录,而不是对应商品的记录,统计结果在下面的文本中显示出来。(1)在界面中加入所需控件统计表单主要由一个页框控件(pageframe)、一个命令按钮、三个标签、三个文本控件组成。其中在页框控件(pageframe)中包括两个页面设置,每个页面中有5个标签控件、5个文本控件、一个命令按钮组。其主要设计如下图所示: 图 商品销售统计表单1)“按所销售商品统计.日统计”的代码 public a,bsele xslocate all for xs.商品编号=alltrim(thisform.text1.value) and xs.商品名=alltrim(thisform.text2.value) and xs.销售日期=ctod(thisform.pageframe1.page1.text1.value)if found ()sum xs.销售数量 for xs.商品编号=alltrim(thisform.text1.value) and xs.商品名=alltrim(thisform.text2.value) and xs.销售日期=ctod(thisform.pageframe1.page1.text1.value) to a sum xs.总价 for xs.商品编号=alltrim(thisform.text1.value) and xs.商品名=alltrim(thisform.text2.value) and xs.销售日期=ctod(thisform.pageframe1.page1.text1.value) to bthisform.pageframe1.page1.text3.value=athisform.pageframe1.page1.text4.value=belsemessagebox(记录没有发现,4+32,信息提示)endif5.3.4 进货查询表单设计进货查询表单主要功能是查询目前的进货明细情况,表单设计采用多页控件。数据显示采用数据表格控件grid,网格控件的加入相当于数据源的加载。加入网格控件后,点击右键选择“生成器”,从中可以选择该窗体的数据库表连接源,从而在Grid的RecordSource属性中表现出来。图 进货查询表单(1)界面主要控件 此界面主要是由一个pageframe1页面控件、一个label标签控件、两个命令按钮、一个text文本控件组成。(2)pageframe1页面控件的设置此控件分为4个页面,在每个页面上分别加入一个grid网格控件、一个命令按钮、一个文本控件和一个标签控件。5.3.5 销售查询表单设计本表单的设计与“进货查询表单”的控件设计基本相同,不同的是grid1的recordsource属性的值为xs.dbf(销售数据表),如图所示:“按顾客名称”查询按钮的代码set safety offsele * from xs where thisform.pageframe1.page1.text1.value=xs.顾客 into dbf xs1if _tally0 messagebox(祝贺你查询成功!,4+32,信息提示)else messagebox(对不起,查询失败,请重新查询,4+32,信息提示“)endifthis.parent.grid1.recordsource=xs1this.parent.grid1.refresh图 销售查询表单(1)界面主要控件此界面主要是由一个pageframe1页面控件、一个label标签控件、三个命令按钮、一个text文本控件组成。(2)pageframe1页面控件的设置此控件分为5个页面,在每个页面上分别加入一个grid网格控件、三个命令按钮、一个文本控件和一个标签控件。5.3.6 库存查询表单设计表单的设计与“进货查询表单”的控件设计基本相同,不同的是grid1的recordsource属性的值为kc.dbf(库存数据表)。(1)界面主要控件 此界面主要是由一个pageframe1页面控件、一个label标签控件、三个命令按钮、一个text文本控件组成。(2)pageframe1页面控件的设置此控件分为4个页面,在每个页面上分别加入一个grid网格控件、一个命令按钮、一个文本控件和一个标签控件。其主要设计如图所示:图 库存查询表单5.3.7 打印汇总表单设计在打印汇总表单里实现的是对所有库里记录的打印,这一项主要是考虑到企业对商品的库存、销售和进货信息的集中查阅而设置的。在这里通过打印按钮及相应的代码实现了对销售表、库存表和进货表信息表的集中打印。在界面中加入所需的控件本界面是由三个命令按钮组每个按钮组包括两个命令按钮)、4个标签按钮、一个命令按钮组成。1)进货报表中的“预览”按钮的代码 report form d:高健进货报表.frx preview 2) 进货报表中的“打印” 按钮的代码 report form d:高健进货报表.frx previewreport form d:高健进货报表.frx to printer图 报表汇总表单5.3.8 系统维护表单设计在系统维护表单里主要实现的是对用户密码的修改和对数据的转入和转出。这里通过列表框和文本框实现对用户密码的修改。在第一个文本框(text1)中要求输入对应操作员的原始密码,通过键盘事件确认密码后才可以对其进行修改,在第二个文本框(text2)中要求输入修改后的密码,第三个文本框(text3)是确认密码,系统确认密码后会给出相应的提示框。第二个选项按钮( option2)实现的是数据转出功能,第三个选项按钮( option3)实现的是数据转入功能,这两个功能的实现都是通过鼠标点击事件实现的,如图所示:图 系统维护表单在界面中加入所需的控件:本界面是由一个选项组控件(optiongroup)(包括三个单选按钮)、一个标签控件、一个容器控件(container)(包括四个标签控件、三个文本控件和一个组合控件)、一个命令按钮控件。5.3.9 修改密码表单的设计 修改密码菜单实现的是对用户名的密码修改,以防别人盗取密码。修改密码时需要知道旧密码才能实现修改成新密码。具体设计如下图所示:图 修改密码表单1)“确定”按钮的代码if thisform.text2.valuethisform.text3.value messagebox(两次密码输入不同,请重新输入!,30,警告) thisform.text2.value= thisform.text3.value= thisform.text2.setfocus else messagebox(恭喜你,修改成功,请点击“确定”成功修改!,64,信息提示) replace mm with thisform.text2.value replace yhm with bo1.valueendif在界面中加入所需控件: 本界面是由四个标签控件、一个组合控件、三个文本控件和两个命令按钮组成。5.3.10 添加用户表单的设计添加用户表单要实现的是添加新用户,具体设计如下图所示:1)“添加” 按钮的代码If thisform.text3.valuethisform.text2.value.or.len(thisform.text3.value)=0.or.len(thisform.text2.value)=0messagebox(两次输入密码不一致!,30,警告)elseappe blankmessagebox(恭喜你,添加用户成功!,64,信息提示)replace mm with thisform.text2.valuereplace yhm with thisform.text1.valuethisform.text1.value=thisform.text2.value=thisform.text3.value=endif图 添加用户表在界面中加入所需控件:本界面是由四个标签控件、三个文本控件和两个命令按钮组成。第六章 性能测试与分析6.1 程序的调试创建了应用程序的各个组件后,希望它们能正常的工作,但在编译运行程序时,或多或少的都要有些这样或那样的错误,于是就要用到VFP提供的调试工具进行调试。选择使用哪些调试工具,取决于VFP的当前操作环境;调试窗口和跟踪窗口在开发环境和运行环境都可用,而命令窗口只在开发环境中可用。总的来说在调试程序时可以用到以下几种方法:6.1.1 在命令窗口中直接输入测试命令命令窗口允许开发者在开发环境中对单独的代码进行测试,在命令窗口键入命令后,可查看到结果。但不同的命令会产生不同的结果,某些命令(如wait windows)可以立即看到结果;而某些命令仅返回值(如打印命令?,?,?)等等,如果一个命令没有可视结果,可以组合使用命令窗口和调试窗口来查看程序执行的结果。6.1.2 动态显示值当测试和调试单个命令和用户自定义的代码时,可能需要知道某些变量和函数的值。若要使用命令窗口来测试命令,则必须使用开发环境。如果要在开发环境或运行中查看动态值可使用跟踪窗口和查看窗口,在监视窗口里能观察到代码表达式及它们的当前值,并能够在表达式上设置断点。跟踪程序和表单程序在执行时是非常快的,要测试中间结果比较难,这时可通过跟踪窗口来观察到这些代码的执行。通过跟踪窗口可调节程序和方法的执行速度,一步一步地执行命令或跳过已检验的代码并设置断点,可以控制用户自定义代码的执行速度,也可跟踪表单,设置事件代码断点。6.2 添加测试代码在程序执行过程中显示阶段性结果也是一种有效的测试代码方法,因此可在代码中添加测试行来显示变量、函数和表达式的值。Wait命令和message box()函数常常用来显示测试信息和挂起程序,等待开发者按下一个键或单击某一键,然后程序继续执行。例如,若想知道是否已经删除,可以在原代码中加入测试语句:=message box(“记录删除成功”)也可以添加以下测试代码:?“记录删除成功”6.3 故障分析开发一个系统,并不是一帆风顺的事,或多或少会出现这样或那样的错误。在整个开发过程中,有许多环节是经过反复、多次更改才最终定型的,可以说遇到的问题很多,但总的来说应归纳为以下几个比较有代表性的问题:(1)系统表单的测试中常会遇到加载错误,例如,在数据中找不到表单中某些文本框绑定的数据源。(2)在程序运行中,因为表一般都是以独占方式打开的,当一个表没关闭,而另一个命令又要调用此表,就会发生错误,如果系统提示“表正在使用”,说明在引用前,未关闭此表。如果是第二种情况说明还有其他表正在打开。总的看来,如果在打开表之前,关闭其他表,就可以解决这些问题。因此,解决的关键在于关闭一个应用程序之前先关闭它所引用的表。还有另一种方法就是在程序中使用临时表,因为临时表在程序释放后会自动关闭。(3)当程序运行出错时,单击“忽略”或“挂起”,程序执行被终止,但界面仍留在屏幕上,即使使用clear命令也不能清屏,打开跟踪窗口后可以看出,程序运行时并未结束,而是被挂起了,要想结束程序,应在跟踪窗口中选择取消,回到主屏幕后发现界面已经被清除了。(4)在程序设计中,经常要用到字符串的比较,有时两个字符串的内容相同,但程序却认为不同,造成判断的错误。这时表面上看起来两个字符串是一样的,修正进一步研究才发现实际上两个字符串是不同的,原来其中一个多出了一些空格,为了消除这个错误,可用all trim()函数来删除字符串两端的空格。(5)在表单中直接利用grid引用表,既便于更改,又便于更新,但刷新grid后,每行宽度变小,因此在刷新时,要重新定义每一行宽度。下面就开发本系统时所遇到的难点及运用的技巧加发总结,主要包括数据缓冲、事务处理和表格控件的数据删除。 结 束 语经过一个月对该系统的设计和开发,商品进销存管理与分析系统基本开发完毕。其功能基本符合用户需求,能够完成对商品进货基本信息的录入、查询、打印,库存信息的录入、查询、打印,还有商品销售信息的商品出库、销售记录的查询、打印。并提供部分系统管理功能、维护等功能,对于数据的一致性的问题也通过程序进行有效地解决。但由于毕业设计时间短,本人技术和水平有限,所以该系统还有许多不尽人意的地方,比如有些功能未能实现,用户界面不够美观,出错处理不够等许多方面问题。这些都有待进一步改善,我从本次毕业设计中学到许多课外无法学到的知识。经过这次课程设计,可以说是对前面各章所讲的知识和设计技巧的综合的运用和训练,基本了解Microsoft Visual Foxpro6.0软件。大学专科的学习生活即将结束,在此,我要感谢所有曾经教导过我的老师和关心过我的同学,他们在我成长过程中给予了我很大的帮助。本文能够成功的完成,要特别感谢我的指导老师刘庆华老师的关怀和指导,感谢各位兄弟姐妹的关心和帮助。最后还要感谢我的父母,是他们一直在背后支持着我、鼓励着我。致 谢从2006年03月我接触该课题,到今年5月份正式开始毕业设计,到现在毕业设计正式完成,我的导师刘庆华老师给我极大的帮助,她学识渊博,待人热心,工作细致。从一开始进行总体方向总体框架的把握上开始指导,到最后系统论文中的一丝丝的找出,其严谨的工作作风及和蔼的性情给了我很大的影响。她的为人品格和在工作中的认真负责的态度是我学习的榜样。我系的领导老师也给予我热心的帮助,从材料的收集,系统需要的调查到开发时系统数据库的结构等等。他们都给予我关心,给予我帮助,给予支持,给予我了解众多的资料、书本如果没有你们的支持与关心,我的毕业设计也许不会完成的这么顺利,在此特向你们致敬!参考文献1数据库系统原理Visual FoxPro6.0应用系统开发 李庆超 丰树谦 编著 河南大学出版社2数据库系统基础 冯玉才 编著 华中理工大学出版社3Visual FoxPro6.0数据库开发实例与导航 清华大学出版社4Visual FoxPro6.0数据库开发 顾斌、杨德斌 译 清华大学出版社5Visual FoxPro 应用基础于面向对象程序设计教程 主编 李雁翎 高等教育出版社6数据库应用基础-Visual FoxPro 6.0主编 王森 李红 电子工业出版社7数据库系统概论(第三版) 主编 萨师煊 王珊 高等教育出版社8数据库技术 主编 罗晓沛 清华大学出版社9Visual FoxPro面向对象编程指南 主编 张琦 梁恩主 清华大学出版社10软件工程(第二版) 主编 王立福 麻志毅 张世琨 北京大学出版社附录(部分源程序)1.Object: “主程序”系统代码:clearclear all close allset sysmenu save &隐藏系统菜单set sysmenu toset exact offset safety offset status bar offset exclusive onuse d:高健kc.dbf shareduse d:高健sp.dbf shareduse d:高健xs.dbf shareddo form d:高健登录界面.scxread event &开始事件菜单set talk on2 主界面设计中的代码如下:1)“进货信息”按钮的代码do form d:高健进货信息表.scx2)“商品入库” 按钮的代码do form d:高健入库表.scx3)“商品销售”按钮的代码do form d:高健商品销售统计.scx4)“进货查询”按钮的代码do form d:高健进货查询表.scx5)“销售查询”按钮的代码do form d:高健销售查询表.scx6)“库存查询”按钮的代码do form d:高健库存查询表.scx7)“打印输出”按钮的代码do form d:高健报表汇总.scx8)“系统维护”按钮的代码do form d:高健系统维护表.scx9)“退出系统”按钮的代码a=messagebox(真的要退出吗?,4+16+0,对话窗口)if a=6quitendif3 进货查询表单设计中的代码如下:1)“打印”按钮的代码report form d:高健进货报表.frx preview2)“退出”按钮的代码release thisform3)“按商品名”查询按钮的代码set safety offsele * from sp where thisform.pageframe1.page1.text1.value= sp.商品名 into dbf sp1if _tally0 messagebox(祝贺你查询成功!,4+32,信息提示)else messagebox(对不起查询失败,请重新查询!,4+32,信息提示)endifthis.parent.grid1.recordsource=sp1this.parent.grid1.refresh4)“按进货日期”查询按钮的代码set safety offsele * from sp where thisform.pageframe1.page2.text1.value= sp.进货日期 into dbf sp1if _tally0 messagebox(祝贺你查询成功!,4+32,信息提示) else messagebox(对不起查询失败,请重新查询!,4+32,信息提示)endifthis.parent.grid1.recordsource=sp1this.parent.grid1.refresh5)“按联系电话”查询按钮的代码set safety offsele * from sp where thisform.pageframe1.page3.text1.value= sp.联系电话 into dbf sp1if _tally0 messagebox(祝贺你查询成功!,4+32,信息提示) else messagebox(对不起查询失败,请重新查询!,4+32,信息提示)endifthis.parent.grid1.recordsource=sp1this.parent.grid1.refresh6)“按联系人”查询按钮的代码set safety offsele * from sp where thisform.pageframe1.page4.text1.value= sp.联系人 into dbf sp1if _tally0 messagebox(祝贺你查询成功!,4+32,信息提示) else messagebox(对不起查询失败,请重新查询!,4+32,信息提示)endifthis.parent.grid1.recordsource=sp1this.parent.grid1.refresh4 商品入库表单设计中的代码如下:1)“入库”按钮的代码if empty (thisform.text1.value) or empty (thisform.text2.value) or emp

温馨提示

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

评论

0/150

提交评论