毕业设计论文基于Delphi的小型超市进存销管理系统

上传人:仙*** 文档编号:75082072 上传时间:2022-04-15 格式:DOC 页数:20 大小:574.53KB
收藏 版权申诉 举报 下载
毕业设计论文基于Delphi的小型超市进存销管理系统_第1页
第1页 / 共20页
毕业设计论文基于Delphi的小型超市进存销管理系统_第2页
第2页 / 共20页
毕业设计论文基于Delphi的小型超市进存销管理系统_第3页
第3页 / 共20页
资源描述:

《毕业设计论文基于Delphi的小型超市进存销管理系统》由会员分享,可在线阅读,更多相关《毕业设计论文基于Delphi的小型超市进存销管理系统(20页珍藏版)》请在装配图网上搜索。

1、基于Delphi的小型超市进存销管理系统摘 要在市场经济中,销售是企业运作的重要环节,为了更好地推动销售,不少企业建立分公司代理,通过分公司或代理把产品推向最终用户。这些分公司或代理商大多分布在全国各地,甚至是在国外,远距离频繁的业务信息交流构成了这些企业业务活动的主要特点。在传统方式上,公司之间通常采用电传、电报、电话等方式传递发货、到货、压货、换货、退货等信息,并且对进货、销售、库存等信息进行手工存档,工作效率极其低下。本毕业设计针对传统的进存销系统的一些弊端,根据进存销系统的基本流程,实现了一个小型超市的进存销管理系统。本系统主要包含有资料管理、进货管理、销售管理、库存查询、系统管理、历

2、史查询、账目查询等进存销管理的基本功能。其中,资料管理包括有商品资料、供货商资料、客户资料的添加、删除、修改、查询等操作。本系统采用C/S模式,由 Delphi 7.0开发,数据库设计使用MS SQL Server2000。关键词:C/S模式;Delphi;SQL Server 2000;进存销管理系统The Stocking Selling and Storing Management Systemof Small Supermarket Based on Delphi AbstractSalesmanship is an important part of operation of ent

3、erprises in the market economy. In order to promote the sales of the produces, many enterprises establish the agencies of branch, push products to the terminal customers through these agencies. Many agencies or branches are distributed all over the country, even abroad, so that the main feature of t

4、hese business activities is remote frequent exchange of operational information. In the traditional way, the company usually exchange messages about the transmission, arrival, storage, change, return of goods by telex, telegraph, telephone and store the data of Purchase, Sale, Storage by manual. The

5、 working efficiency is extremely low.According to the basic process of the Stocking Selling and Storing Management , the author realized a Stocking Selling and Storing Management System of small supermarket. The basic functions of this system include data management, inventory management, sales mana

6、gement, storage inquiry, system management, history inquiry, account inquiry. The data management which include add, delete, modify and inquire the data about goods, data about supplier and data about customer. The system uses C/S model and has been developed by Delphi 7.0. Database design use SQL S

7、erver 2000.Key words: C/S model; Delphi; SQL Server 2000; Stocking Selling and Storing目 录论文总页数:24页1引言11.1 课题背景与开发目的11.2 开发环境11.3 硬件需求1系统总体设计22.1 功能概述22.2 数据库设计32.2.1 数据库概念模型32.2.2 数据库各表设计42.2.3 进货单与销售单存储过程73 超市进存销系统的实现83.1 用户登录83.2进存销系统主界面83.3 资料管理93.4 进货管理103.5 销售管理133.6 库存管理143.7 系统管理143.8 历史查询183

8、.9 帐目查询19结 论22参考文献22致 谢23声 明241引言1.1 课题背景与开发目的电子商务的发展和市场竞争的加剧将企业推上了风口浪尖,中小企业除了积极迎接挑战之外,别无选择,网络的兴起与电子商务的发展带来了时空界限的突破、贸易方式的变革和经济活动的革命,从某种意义上讲,这些变化为中小企业创造了与大型企业、国外企业平等竞争的有利条件。然而,管理水平的差异会弱化这种平等的实际意义。具体而言,中小企业在进、存、销等环节的管理上都存在着一定程度的不足,而这些不足无疑将使其在市场竞争中陷入被动的境地。在网络经济的时代背景下,进行有效的进存销管理已经成为中小企业存身立业的头等要事。然而对于一贯疏

9、于管理的中小企业而言,实现有效的进存销管理必然存在着一定的难度,因此必须借助现代化的管理方法和管理技术计算机进存销管理系统。超市最主要的任务是商品进货存货及销售管理,即商品进存销管理,由于商品种类繁多且数据量大,传统手工操作任务繁重、工作效率低下,不适应现代化信息社会发展需要,所以急需使用商品进存销管理软件进行现代化管理:超市运作中批发及零售企业基本上都属于中小型规模、而且单位数量特别多,因此商品进销存管理软件有很大的需求市场。本文作者选择Delphi来开发一个小型超市的进存销管理系统,得到快速完美的开发效果。本文对商业进销存管理系统进行系统分析,给出了管理系统用到的数据结构及开发过程中的关键

10、技术。本系统采用C/S模式设计,把超市工作人员从繁杂的数据管理以及处理中解放出来,避免了手工数据统计的种种弊端,大大地提高了工作效率。将超市进存销的各种信息存储于数据库中,再通过前台友好的用户界面来对数据库中的数据进行插入、删除、修改与更新等操作,由于本系统设计的界面友好,操作方便,用户能轻而易举地学会使用,有利于企业创造更大的经济效益。1.2 开发环境Delphi是Inprise公司的可视化软件开发工具,是目前创建Windows应用程序最强大的开发工具之一,它具有C+的强大功能和Visual Basic的易用性,Delphi具有友好的开发环境、真正面向对象的程序设置、组件化的编程方式、快速P

11、ascal编译器,是软件开发人员不可多得的好工具。本系统是在windows XP操作系统下,使用Borland Delphi 7.0作为开发工具,数据库使用的是SQL SERVER 2000开发。1.3 硬件需求在运行本系统前,请检查一下计算机是否满足以下要求:1.服务器要求的配置为:(1) CPU:Intel 赛扬以上,建议Intel Pentium以上(2) 内存:128M以上,建议256M以上(3) 硬盘:1G以上的可用硬盘安装空间(4) Microsoft SQL Server 7.0以上2.客户机硬件配置要求为:(1) CPU:Intel赛扬 以上,建议Intel Pentium 以

12、上(2) 内存:128M以上,建议256M以上系统总体设计2.1 功能概述根据进存销管理系统的逻辑划分,本系统一共分为七个功能,分别是资料维护、进货管理、销售管理、库存查询、系统管理、历史查询、帐目查询。其功能结构图如图2-1所示。超市进存销管理系统资料维护进货管理销售管理库存查询系统管理帐目查询历史查询权限设置用户管理图2-1 系统功能结构图(1) 资料管理主要包括商品资料、供货商资料和客户资料的维护,可以进行添加、删除、修改与查询等一系列操作。商品资料、供货商资料、客户资料是进销存管理系统基本资料。(2) 进货管理主要功能是进货的过程中,对数据库数据进行实时更新,入库的时候,将供货商、商品

13、等基本信息读入数据库的表格中,主要是读入进货单历史和进货单明细历史中;对库存库中对应的商品信息,诸如,库存数量、仓库、库存金额等数据进行更新操作;对应于进货单中供货商,产生应付款金额;同时打印进货单。(3) 销售管理主要功能是销售的过程中,对数据库中的数据进行实时更新,出库的时候,将客户、商品等基本信息读入数据库表格中,主要是读入销售单历史和销售单明细历史中;对库存库中对应的商品信息进行修改,主要是减去销售的商品数量;对应于销售单中的客户,产生应收款金额;同时打印销售单。(4) 库存查询主要功能是对库存库中的商品信息进行查询,输入货号、商品拼音或是仓库,便可以方便快捷地查询到库存库中对应的商品

14、信息。(5) 系统管理系统管理中包含系统用户的权限修改功能,同时还包含有只有管理员admin才拥有的用户管理功能,包括对用户信息的添加、删除、修改等操作,同时考虑到安全问题,本系统对用户对应的密码进行了MD5加密处理。(6) 历史查询主要功能是对进货单历史、进货单明细历史、销售单历史、销售单明细历中的数据进行查询操作。(7) 帐目查询主要功能是对进货过程中产生的应付款及销售过程中产生的应收款进行操作,输入对应的供货商号或客户编号就能查询到对应的应付款或应收款金额汇总,结算后,将对应的记录从应付款或应收款表中删除,同时对已付款或已收款中的数据进行更新。2.2 数据库设计2.2.1 数据库概念模型

15、 数据库主要涉及到三个实体:商品、供货商、客户。进货时,一张进货单对应一个供货商,可以向供货商进多种货物。销售时,一张销售单对应一个客户,可以向客户销售多种商品。因此,一个商品可以向多个供货商进货,也可以销售给多个客户,只是对应着不同的进货单或销售单。 E-R(Eneity-Relationship Approach)图是最常用的概念模型表示方法,也是数据库的核心和基础,它是按用户的观点来对数据和信息建模,依据概念模型设计应具的特点:真实性、易理解性、易修改性、易转换性。下面画出商品、供货商、客户三个之间的实体关系图(E-R图):商 品货号条码拼音编码销售进货供货商客户客户编号名 称名 称拼音

16、编码拼音编码供货商号NMPQ图2-2 商品、供货商和客户E-R图2.2.2 数据库各表设计对于本超市进存销系统所用到的数据库表有:供货商清单:保存关于供货商的资料信息,如供货商号、名称等。商品清单:保存超市所经营商品的资料信息,如货号、品名、进货价和销售价等。客户清单:保存超市客户的资料信息。库存库:保存超市商品库存的数量、金额等信息。应付款:保存进货过程中产生的应付款信息。应收款:保存销售过程中产生的应收款信息。权限清单:保存本系统所有使用者的权限信息。用户清单:保存本系统所有使用者的信息。进货单:进货单主表,保存一次进货中的所有商品的概括信息。进货单历史:保存进货单历史。进货单明细:进货单

17、从表,保存每一商品的进货信息,如进价、税额和仓库等。进货单明细历史:保存进货单明细历史。销售单:销售单主表,保存一次销售中的所有商品的概括信息。销售单历史:保存销售单历史。销售单明细:销售单从表,保存每一商品的销售信息,如销售数量和销售价等。销售单明细历史:保存销售单明细历史。仓库清单:保存超市的仓库信息,可以用于生成数据字典。已收款:保存超市结算“应收款”的情况。已付款:保存超市结算“应付款”的情况。下面给出几个主要表的具体信息:表2-1 供货商清单字段名数据类型长度是否允许为空字段描述供货商号Char10否主键拼音编码Char40否以便查询名称Varchar80是地址Varchar80是邮

18、编Char6是传真Varchar20是电话Varchar20是电报Varchar20是银行帐号Varchar20是库房地址Varchar40是库房电话Varchar20是表2-2 库存库字段名数据类型长度是否允许为空字段描述货号Char14否商品货号仓库Varchar20否库存数量Decimal(28,6)否库存金额Decimal(28,6)否库存单价Decimal(28,6)否最新进价Decimal(28,6)是表2-3 应付款字段名数据类型长度是否允许为空字段描述编号Char14否主键进货单号Char14是外键货号Char14否外键供货商号Char10否外键数量Decimal(28,6)否

19、进货单价Decimal(28,6)是金额Decimal(28,6)是进货日期Datetime8是状态Char6是应付表2-4 权限清单字段名数据类型长度是否允许为空字段描述权限序号Int4否自增字段用户编号Char6是外键部门Char20是权限名称Char30否表2-5 用户清单字段名数据类型长度是否允许为空字段描述用户编号Char20否主键部门Char20是姓名Char10否性别Char2是密码Varchar32否MD5加密表2-6 进货单字段名数据类型长度是否允许为空字段描述编号Char14否主键供货商号Char10否外键进货日期Datetime8是业务员Char10是制单人Char10是

20、税价合计Decimal(28,6)是不含税价Decimal(28,6)是税额Decimal(28,6)是表2-7 进货单明细字段名数据类型长度是否允许为空字段描述编号Char14否主键进货单号Char14否外键货号Char14否外键进货数量Decimal(28,6)否进价Decimal(28,6)是税价合计Decimal(28,6)是税率Decimal(28,6)是不含税价Decimal(28,6)是税额Decimal(28,6)是仓库Char20是表2-8 已付款字段名数据类型长度是否允许为空字段描述供货商号Char10否主键供货商名称Varchar80是已付金额Decimal(28,6)否

21、最近结算Datetime8是 最近的结算日期以上便是数据库中的主要表单,商品清单、客户清单与表2-1(供货商清单)类似,应收款与表2-3(应付款)类似,销售单与进货单的对应表单类似,已收款与表2-10(已付款)类似。2.2.3 进货单与销售单存储过程数据库中还设计了两个存储过程,分别是sf_进货单和sf_销售单,分别用于进货和销售时,对数据库中各表的数据更新操作。进货的时候,库存库中的仓库和货号要与进货单明细中的仓库和货号相匹配,若不匹配,证明是新的记录,进货单明细中所对应的货号与仓库记录添加到库存库中,若匹配,证明同一商品入的是同一仓库,便将库存库中的库存数量累加新入库的数量;将进货单明细中

22、所对应的供货商号、税价合计、进货数量、货号等信息插入到应付款中,以产生应付款金额;将进货单和进货单明细中的记录添加到对应的历史表格中;清除进货单和进货单明细表格。销售的时候,将销售单明细中销售的对应货号数量从库存库对应的记录中减去;将销售单明细中对应的客户编号、销售价、金额等信息插入到应收款中,以产生应收款金额;将销售单和销售单明细中的记录添加于应的历史表格中;清除销售单和销售单明细表格中的记录。3 超市进存销系统的实现3.1 用户登录用户登录是一个系统安全性能的重要体现,本系统用到的所有密码均通过MD5加密。登录界面上放置了一个ADOQuery1控件,并设置它的ConnetionString

23、属性指向的数据库my_jxc,用以完成数据库的连接。登录过程是:首先在用户清单中查找输入的用户名和密码所对应的用户编号。若没有找到,说明输入的用户名或密码有误,并给出提示。若找到这样的用户编号,说明是合法用户,再在权限清单中,查找对应的权限,找到什么权限,便将对应的功能按钮所对应的Enabled值置为True。特别指出,在用户清单中查找用户名和密码所对应的用户编号的时候,由于界面上输入的是明文,而用户清单中的密码字段是32位的密文,且MD5是单向加密的密码算法,所以在查找之前,先引用md5单元,再调用MD5String( )函数对密码框中的明文进行加密,再用MD5Print( )函数将加密后的

24、密文显示出来,赋值给encrypt_num变量,实际在用户清单中找查密码是以密文为准,而非输入的明文,其查找用户编号主要代码如下:/保存用户输入的帐号和密码 user:=edit1.Text; pass:=Edit2.Text; encrypt_num:=md5.MD5Print(MD5String(pass);/加密明文/将原来的SQL语句清除后再添加新的SQL语句ADOQuery1.SQL.Text:=select 用户编号 from 用户清单 where 姓名= +user+and 密码=+encrypt_num+; temp:=adoquery1.FieldByName(用户编号).A

25、sString;之后便以用户编号和权限名称在权限清单中查找对应的权限序号,若找到对应的权限序号,说明该用户拥有该权限,若没有找到权限序号,说明该用户没有该权限,找到什么权限,便将manage和info窗体上对应的按钮Enabled值置为True。3.2进存销系统主界面超市进销存系统主界面上放置七个按钮,分别对应七个功能模块:资料管理、进货管理、销售管理、库存管理、系统管理、历史查询、帐目查询。点击对应的按钮,便跳转到对应的功能窗体上。图3-1 系统主界面在主界面的左下方会显示当前登录的用户名字。因为当前登录的用户为系统管理员admin,所以图3-1中显示的登录用户名为ad。3.3 资料管理资料

26、管理窗体上放置的几个主要控件是DBNavigator1控件、DBGrid1控件、ADOQuery1控件和DataSource1控件。首先是设置ADOQuery1的Connection String属性指向my_jxc,再设置DataSource1的DataSet属性为ADOQuery1,设置DBNavigator1和DBGrid1的DataSource属性为DataSource1,资料管理分为商品资料维护、供货商资料维护和客户资料维护,以DBNavigator1来控制删除、插入或修改等功能。分别点击MainMenu菜单上不同的菜单项,来更新数据集,以显示不同表格中的数据。例如,点击了商品资料维

27、护,便在ADOQuery1的SQL中添加这样的语句:adoquery1.SQL.Text:=select * from 商品清单;使DBGrid1显示出由数据集返回的结果,同时DBNavigator1控制的商品清单中的数据。同理,点击了供货商资料维护或是客户资料维护菜单时,便向ADOQuery1的SQL中添加新的SQL语句,以使控制不同的数据集。同时,窗体上还能对商品资料、供货商资料、客户资料进行查询,输入对应的拼音编码部分或全部便能进行查询。查询按钮所响应的事件:首先是根据label1的caption内容来判断是对那一张表格进行操作的,而label1.caption是由点击MainMenu上

28、不同的菜单项而改变的。例如,点击了MainMenu上的商品资料维护,label1.caption便为“商品拼音”,点击了“查询”按钮时,先判断label1.caption=商品拼音,于是对商品清单进行查询。同时,DBGrid1还有一个鼠标双击的响应事件,因为在进货管理或销售管理时,选择供货商、商品或是客户信息时,需要跳转到资料管理窗体上,双击DBGrid1上的记录,以把数据传递到进货单或销售单窗体上。这样也大大地提高了系统使用的方便性,简单易用的图形化操作界面,使用户能更方便快捷学会使用。这部分代码将在进货管理和销售管是部分详细阐述。3.4 进货管理这部分实现对进货单的管理,主要提供保存进货单

29、、显示进货单报表和打印进货单并记帐的功能。进货单input窗体上,放置ADOQuery1和ADOCommand1控件,并且设置它们的ConnectionString属性指向my_jxc,以完成数据库的连接。进货日期默认为当前系统日期,制单人为前当登录用户,在下拉菜单中选择业务员,这几项都可以为空,但为了使数据更加详尽,最好不要为空。进货单窗体如图所示:图3-2 进货单窗体首先选择供货商,鼠标点击Combobox2时,对应的DropDown事件响应,跳转到资料管理中去,同时将input窗体置为不可用。然后在info窗体中,DBGrid1的双击事件响应,判断input.Enabled=false且

30、label1.caption=供货商拼音,于是执行相应代码,设置了两个string类型的变量:num,name,分别接收DBGrid1.Fields0和DBGrid1.Fields2中的内容,传递给input窗体上的ComboBox2.Text和Edit3.Text。将供货商号和供货商名称返回到进货单窗体上,以此完成了供货商的选择。其代码如下:if (input.Enabled=false)and(label1.Caption=供货商拼音) then begin/将供货商的标号和名称传回进货单窗体 num:=dbgrid1.Fields0.AsString; name:=dbgrid1.Fie

31、lds2.AsString; input.ComboBox2.Text:=num; input.Edit3.Text:=name;/成功后返回进货单 input.Enabled:=true; info.Close; manage.Hide; end;接着,选择需要进货的商品。在StringGrid1中双击单元格,以跳转到资料管理的窗体上。在DBGrid1的双击事件里响应,判断input.enabled属性为false且label1.caption=商品拼音,双击对应纪录,将商品清单中的货号、品名和销售价1的信息传递到进货单窗体中,代码如下:if (input.Enabled=false)and

32、(label1.Caption=商品拼音) then begin/将货号和商品名称传回进货单窗体 num:=dbgrid1.Fields0.AsString; name:=dbgrid1.Fields3.AsString; price:=dbgrid1.Fields7.AsString; if input.currentRow=0 then input.currentRow:=1; input.StringGrid1.Cells1,input.currentRow:=num; input.StringGrid1.Cells2,input.currentRow:=name; input.Stri

33、ngGrid1.Cells6,input.currentRow:=price;/成功后返回进货单 input.Enabled:=true; info.Close; manage.Hide; end;特别指出,num,name,price分别对应着货号、品名和价格。Cells 1,input.currentRow指的是StringGrid1中当前行第1列所对应的单元格。在Forminput单元文件中的接口部分的public处声明了currentRow和currentCol两个整型变量,在implementation部分中,由StringGrid1 SelectCell事件激发,以currentR

34、ow和currentCol来接收Arow和Acol两个变量。这样便达到了,在input窗体上激发的变量,被两个public变量接收,可以被info窗体引用的目的。在商品入库之前,要对所进商品进货到哪个仓库进行选择。添加仓库的下拉菜单与添加业务员的过程相似,只有当选择了商品信息且点击了“仓库”所对应的列,才能进行仓库选择。另外,当点击某条记录的“金额”单元格时,自动算出对应进货记录的金额、税价与税价合计。点击“保存进货单”按钮时,将把进货信息插入到进货单和进货单明细两个表格中去,进货单中的一条记录保存的是一次进货中向某个供货商所有进货商品的总税价合计、总不含税额和总税额;进货单明细则保存的是向某

35、个供货商进货的每一商品所对应的税价合计,不含税价和税额等信息。首先是编号的插入,如果是插入的第一条记录,编号为00000,如果不是插入第一条记录,则分别是从进货单历史和进货单明细历史中查找出最大编号,将其加1,再插入到进货单和进货单明细表格中。例如进货单记录的插入过程:获取最大编号:adoquery1.SQL.Add(select max(编号) 最大编号 from 进货单历史);maxnum:=adoquery1.FieldByName(最大编号).asstring; 如果是第一条记录,插入编号00000:if (maxnum=)or(maxnum= ) then temp:=00000向进

36、货单中插入对应记录:adocommand1.CommandText:=insert into 进货单(编号,供货商号, 进货日期,业务员,制单人,税价合计,不含税价,税额) values (+inputnum+,+combobox2.Text+,+edit1.Text+,+combobox1.Text+,+edit2.Text+,+edit4.Text+,+edit5.Text+,+edit6.Text+);adocommand1.Execute;然后点击“显示进货单报表”,是对进货单报表进行预览。点击“打印进货单并记帐”,便可将进货单报表打印成(.mdi)格式的文档,同时执行了“sf_进货单

37、”存储过程,以对数据库中数据进行实时地更新。下面介绍一下,报表的制作:本毕业设计所使用到的报表是用QuickReport控件制作的,由于Delphi 7.0默认情况下没有安装此控件,因此需要手动添加。在Delphi的Packages里,点击“Add”按钮,找到安装目录下BorlandDelphi7Bindclqrt70.bpl添加QuickReport控件组。 进货单报表report上,放置QuickRep1控件、ADOQuery1控件、若干QRLabel控件以标签文字说明,若干QRDBText控件,设置其DataSet属性为ADOQuery1,DataField属性为欲读取的字段名。Quci

38、kRep1的DataSet属性为ADOQuery1。ADOQuery1控件的ConnectionString指向my_jxc数据库,以完成数据库的连接。其SQL属性中添加查询语句,以对数据库中数据进行查询返回数据集以供报表上显示。3.5 销售管理销售过程与进货过程类似,这部分实现对销售的管理,提供的主要功能有“保存销售单”、“打印销售单报表”和“记帐销售单” 三个功能。其界面如图所示:图3-3 销售单窗体首先需要向Combobox1的下拉菜单上添加项目,其代码与在进货管理中添加业务员菜单项目是一样的。鼠标点击客户下拉框,跳转到资料管理窗体上,以选择客户。同时将output的enabled值置为

39、false。然后在info窗体上,双击相应的记录,由DBGrid1的双击事件响应,通过判断,执行相关代码,将客户编号和客户名称传递至output窗体上。此过程代码与进货管理中选择供货商过程的代码类似。至此,完成了客户选择操作。然后双击output中StringGrid1的单元格,跳转到库存库store窗体上。双击库存库store窗体上的StringGrid1单元,便将货号、仓库、销售价等信息传递至store窗体上。StringGrid1的双击事件中,首先由adoquery2在商品清单里查得销售价1字段,由price变量接收。货号、品名等信息与进货单中执行的过程类似,在此不再赘述。当点击保存销售

40、单后,第一条记录编号为00000,如果不是第一条记录,从销售单历史和销售单明细历史表格中把最大编号读取出来,将其加1,再插入到销售单和销售单明细表格中去。这个过程与进货管理中插入到进货单历史和进货单明细历史中相类似。点击“打印销售报表”按钮,以打印出销售单对应报表。点击“记帐销售单”按钮,执行“sf_销售单”存储过程,以更新数据库中数据。销售报表与进货报表的制作大同小异,只是对应的数据集不同,执行的SQL语句当然也不同。3.6 库存管理这部分主要是提供对库存商品信息的查询,输入货号、商品拼音和仓库中的任意一项便可对库存中商品的信息进行查询。设置ADOQuery1控件、ADOQuery2控件的C

41、onnectionString指向my_jxc,以完成数据库的连接。然后向“查询”按钮里添加事件,以使输入“货号” 、“商品拼音” 和“仓库”中的任意一项,便可进行查询。由于可以对商品拼音模糊查询,如果不输入商品拼音的话,系统会将商品拼音看成一个空字符串,便得不到查询的真实结果。所以先对其进行判断,如果为空,便不追加对应查询语句。其对应的代码如下:adoquery1.SQL.Add(select 库存库.货号,商品清单.品名,商品清单.单位,库存库.仓库,库存库.库存数量,库存库.库存单价,库存库.库存金额 from 库存库,商品清单); adoquery1.SQL.Add(where 库存库

42、.货号=商品清单.货号 and ); adoquery1.SQL.Add(商品清单.货号=+edit1.Text+)or); if edit2.Text then begin adoquery1.SQL.Add(商品清单.拼音编码 like %+ edit2.Text +%)or); end; adoquery1.SQL.Add(库存库.仓库=+combobox1.text+); adoquery1.Open;到此,便完成了库存查询的操作。3.7 系统管理系统管理功能中分为“用户管理”和“权限设置”两项功能。在用户管理功能中,可以对用户信息进行添加、删除或修改等操作。“用户管理”功能只有管理员

43、拥有,而“权限管理”功能,只有被授予了该权限的用户才拥有。作为系统管理员,所有权限均为其开放,并且系统管理员的权限是不能修改的。管现员可以对本系统的其它普通用户的资料进行修改,或给其它普通用户授予权限。系统管理窗体rights上放置ADOQuery1、ADOQuery2、ADOQuery3和ADOCommand1控件,它们的ConnectionString均指向my_jxc,用以连接数据库。最左边下拉列表框是对用户的选择,选择了对应的用户,此时在右边的列表框中显示它所具有的所有权限的名称,且在最下面的组合复选框中,将其所具有的权限名称前面显示有”,可以修改复选组合框中的内容,再点击“确认修改”

44、,即可完成对所对应用户的权限的权限。点击“用户管理”按钮,进入到用户管理的窗体上。系统管理的主要界面如下图所示:图3-4 权限管理窗体在系统管理窗体中,只有当前用户为管理员,“用户管理”按钮才可见,权限功能的修改实现过程是这样的:首先在ComboBox1Change事件中,当选择了对应的用户后,执行相关代码,在listbox中用以更新显示出当前用户名所对应的权限名称。先以用户名在用户清单里查询得到对应的用户编号,再以用户编号在权限清单里查询所对应的用权限名称,将查找到的权限名称添加到listbox1的项目中去,查询权限的对应代码如下:adoquery2.SQL.Text:=select 权限名

45、称 from 权限清单 where 用户编号=(select 用户编号 from 用户清单 where 姓名=+ combobox1.Text + +);向列表框中添加查询到的权限项目:while not adoquery2.Eof do begin temp:=adoquery2.fieldbyname(权限名称).AsString; listbox1.Items.Add(temp); adoquery2.Next; end;在ComboBox1Change事件中同时也对下方的checkbox的checked属性进行修改。以对应的用户编号和权限名称对权限清单进行查找,如果查找到的用户编号不为

46、空,说明该用户存在这样的权限,便将对应checkbox的checked属性设为true;否则checked属性为false。例如:判断用户是否具有商品资料维护的权限,其代码如下:adoquery2.SQL.Add(select 用户编号 from 权限清单 where (用户编号=(select 用户编号 from 用户清单 where 姓名=+combobox1.Text+ ) and(权限名称=+checkbox2.Caption+);adoquery2.Open;if adoquery2.FieldByName(用户编号).AsString then checkbox2.Checked:

47、=true else checkbox2.Checked:=false;另外,对于“确认修改”按钮响应的事件,首先获取用户编号,以用户姓名在用户清单里查找对应的用户编号赋值给临时变量UserName;在权限清单里查找到最大的权限序号赋值给MaxNumber;删除该用户在权限清单里拥有的所有权限。判断下方的checkbox的checked属性是否为true,同时将先前查找到的最大权限序号增加,以新的权限序号插入到权限清单里,以免跟以前的权限序号冲突。例如对“商品资料维护”权限的修改,对应代码如下:if checkbox1.Checked thenbegin order:=strtoint(MaxNumber)+1; str:=inttostr(order); adocommand1.CommandText:=insert into 权限清单(权限序号,用户编号,权限名称) values(+str+,+UserNumber+,+ checkbox1.Caption+); adocommand1.Execute;end;如果当前用户为管理员的话,会看到系统管理窗体上出现一个“用户管理”按钮,点击它会跳转到用户管理users的窗体,如图所示:图3-5 用户管理窗体第17页 共24页

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!