(精品)毕业精品商品销售管理系统精品(2013年优秀毕业设计)_第1页
(精品)毕业精品商品销售管理系统精品(2013年优秀毕业设计)_第2页
(精品)毕业精品商品销售管理系统精品(2013年优秀毕业设计)_第3页
(精品)毕业精品商品销售管理系统精品(2013年优秀毕业设计)_第4页
(精品)毕业精品商品销售管理系统精品(2013年优秀毕业设计)_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

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

文档简介

商 品 交 易 管 理 系 统【摘要】本文简要介绍了本商品管理系统的开发情况,基本设计思想、系统开发环境及目前的应用情况。关键词 订单 代理商 销售查询 备份目 录:第一章 引言 第二章 数据库应用系统开发简介2.1 数据库2.2 数据库管理系统2.3 创建数据库第三章 应用系统开发工具 3.1 DELPHI简介 3.2 DELPHI数据库访问方法与数据库组件介绍第四章 商品销售管理系统目标分析 4.1 任务分析 4.2 系统目标第五章 商品销售管理系统的数据库设计 5.1 常见应用程序数据表 5.2 DELPHI中的数据文件路径管理第六章 试题库系统应用程序界面设计 6.1 用户登录窗体 6.2 主窗体 6.3 系统设置窗体 6.4 权限管理窗体 6.5 操作员信息设置窗体 6.6 代理商进/退货录入窗口 6.7 订单进货数据录入窗口 6.8 代理商销售数据查询窗口 6.9 商品分布查询窗口 第七章 结束语致谢主要参考文献附录程序清单及注释一 引 言 随着大学教学改革进一步的深入和大学本科课程建设的逐步完善,对学生掌握每一课程内容程度的考试必须规范化,系统化,科学化,现代化;教学管理必须现代化、规范化。我们知道,传统的出试卷方法是由教师个人组卷,这样往往造成试题难度和知识覆盖面难以把握,不能达到对学生的科学而又全面的考核。针对这一情况,我们研制了计算机类学科试题库与自动组卷系统。一方面,自动组卷系统避免了手工出试卷造成的试卷不规范,不易集中管理;另一方面,避免教师每次考试时手工组卷及平时为学生组织练习时的重复劳动,将教师从简单、重复的环节中解脱出来,以更多的精力投入到教学与科研中去。高校教务管理工作中一项非常重要的工作就是考试管理工作,每学期各专业考试,从组织出卷到试卷的印制及试卷的管理等工作非常繁琐且工作量很大,这种组织管理方式不仅工作任务繁重而且试卷的标准化程度、难易程度、题量大小等各方面难以控制,难以形成有效的试题库,不利于充分发挥历年来的优秀试题及试卷的作用,给试题和试卷的管理带来很多问题和困难。鉴于这种情况,利用计算机进行试卷的自动生成并逐步积累形成有效的试题库,对试题和试卷的管理将变的高效而便捷,对提高工作效率,使试卷管理逐步走向正规化自动化将起到十分重要的作用。在试题库的制作方面,通过自动组卷系统对每次考试的实现,可以不断地对试题库的内容进行完善。在每一次组卷时,可以进一步对每题的内容进行分析,发现细微的问题,对试题库的内容作进一步地修改。这样避免了传统出试卷时,考试一次结束一次的缺点。由于试题库的建设具有继承性,规范性,可以不断积累考试经验,丰富试题库的内容。二 数据库应用系统开发简介在数据库应用系统开发之前,对开发数据库的基本概念应当了解,对数据库的结构、开发数据库应用程序的步骤、开发体系及方法都应当有相当清晰的了解和认识。 数据库应用系统开发的目标是建立一个满足用户长期需求的产品。开发的主要过程为:理解用户的需求,然后,把它们转变为有效的数据库设计。把设计转变为实际的数据库,并且这些数据库带有功能完备、高效能的应用。 数据库技术在计算机软件邻域研究中一直是非常重要的主题,产生于60年代,30多年来数据库技术得到了迅速发展,并已形成较为完整的理论体系和一大批实用系统。并且,近年来,随着World Wide Web(WWW)的猛增及Internet技术的迅速发展,使得数据库技术之时成为最热门技术之一。2.1 数据库数据库由DBMS(数据库管理系统)处理,DBMS则由开发人员和用户通过应用程序直接或间接地使用。它主要包括四个要素:用户数据、元数据、索引和应用元数据。用户数据: 目前,大多数主流数据库管理系统把用户数据表示为关系。现在把关系看作数据表。表的列包含域或属性,表的行包含对应业务环境中的实体的记录。并非所有的关系都同样符合要求,有些关系比其它关系更结构化一些。元数据: 数据库是自描述的,这就意味着它自身包含了它的结构的描述,这种结构的描述称作元数据。因为DBMS产品是用来存储和操纵表的,所以大多数产品把元数据以表的形式存储,有时称作系统表。这些系统表存储了数据库中表的情况,指出每一个表中有多少列,那一列是主关键字,每一列的数据类型的描述,它也存储索引、关键字、规则和数据库结构的其他部分。在表中存储元数据不仅对DBMS是有效的,对用户也是方便的,因为他们可以使用与查询用户数据同样的查询工具来查询元数据。本文介绍的SQL语言可以同时用于元数据和用户数据。应用元数据:存储在数据库中的第四种数据是应用元数据,它用来存储用户窗体、报表、查索引:第三种类型的数据改进了数据库的性能和可访问性,这种数据经常称作开销数据,尽管有时也采用其他类型的数据结构,如链表,但它主要还是索引。索引可以用来排序和快速访问数据。查询和其他形式的查询组件。并非所有的DBMS都支持应用组件,支持组件的DBMS也不一定把全部组件的结构作为应用元数据存储在数据库中。然而,大多数现代的DBMS产品存储这种数据作为数据库的一部分。一般来说,数据库开发人员和用户都不直接访问应用元数据,想反,他们通过DBMS中的工具来处理这些数据。2.2 数据库管理系统数据库管理系统(DBMS)是指数据库系统中管理数据的软件系统。DBMS是数据库系统的核心组成部分。对数据库的一切操作,包括定义、更新及各种控制,都是通过DBMS进行的。DBMS总是基于某种数据模型,可以把DBMS看成是某种数据模型在计算机系统上的具体实现。根据数据模型的不同,DBMS可以分成层次型、网状型、关系型、面向对象型等。Access 2000就是一种关系型数据库管理系统。 DBMS的特点和功能可以分为三个子系统:设计工具子系统、运行子系统和DBMS引擎。设计子系统有一个方便数据库及其应用创建的工具集。它典型地包含产生表、窗体、查询和报表的工具。DBMS产品还提供编程语言和对编程语言的接口;运行子系统处理用设计子系统开发的应用组件。它所包含的运行处理器用来处理窗体和数据库的数据交互,以及回答查询和打印报表等;DBMS引擎从其他两个组件接受请求,并把它们翻译成对操作系统的命令,以便读写物理介质上的数据。DBMS引擎还涉及事务管理、锁、备份和恢复。2.3 创建数据库数据库模式: 数据库模式定义了数据库的结构、表、关系、域和业务规则。数据库模式是一种设计,数据库和应用正是建立在此基础上的。数据库设计主要是进行数据库的逻辑设计,即将数据按一定的分类、分组系统和逻辑层次组织起来,是面向用户的。数据库设计时需要综合企业各个部门的存档数据和数据需求,分析各个数据之间的关系,按照DBMS提供的功能和描述工具,设计出规模适当、正确反映数据关系、数据冗余少、存取效率高、能满足多种查询要求的数据模型。数据库中的关系表是二维的,它有如下四个性质:l 在表中的任意一列上,数据项应属于同一个属性(如图中每一列都存放着不同记录的同一属性数据)。 2 表中所有行都是不相同的,不允许有重复组项出现(如图中每一行都是一个不同的记录)。3 在表中,行的顺序无关紧要(如图中每行存的都是记录,至于先放哪一个都没关系)。 4 在表中,列的顺序无关紧要,但不能重复 为防止数据库出现更新异常、插入异常、删除异常、数据冗余太大等现象,关系型数据库要尽量按关系规范化要求进行数据库设计。三 应用系统开发工具3.1 Delphi简介Delphi是一个极有代表性的面向对象开发工具;它将面向对象的程序设计方法与数据库技术;网络技术以及可视化;事件驱动,代码自动生成等先进技术完美的结合在一起,使用它可以直观的,快速地开发,高质量的windows应用程序。Delphi强大的易用的特点得到程序员的青睐。Delphi7.0除了保留以前版本的强大功能之处,更在数据库程序开发方面提供了强有力的支持,使程序员完全可能轻松开发出复杂且功能强大的数据库程序。Delphi类可以粗略地分成两部分:一部分是组件类,这些组件类通常以某种方式出现在组件面板上,当用户从组件面板上点取一个类的图标后,在程序中就自动生成了该类的对象(非可视组件除外);另一部分是功能类,这此功能类的对象通常出现在程序代码中,起着不可代替的作用,但是这些功能类在组件面板上是找不到的。在Delphi中,每一个类的祖先都是Tobject类,整个类的层次结构就像一棵倒挂的树,在最顶层的树根即为Tobject类。这样,按照面向对象编程的基本思想,就使得用户可用Tobject类这个类型代替任何其它类的数据类型。3.2 Delphi数据库访问方法与数据库组件介绍 3.2.1数据库访问方法1. BDE方法:它提供了存取各种文型和客户/服务器型数据库的驱动器程序。该方法直接访问Paradox和Dbase等数据库或通过DOBC(Open DataBase connecivity,开放数据库)来访问Access和PoxPro等数据库,还可通过内嵌方式访问SQL Servr、Oracle和DB2等大型数据库。2. ADO方法:ADO方法是微软提供的一种数据库访问技术。通过ADO技术可方便的访问各种类型的数据库,尤其对于OLEDB类型的数据库,ADO更是访问数据库的标准接口。Delphi通过ADO技术可让开发者快速访问关系或非关系型数据库,但使用时需安装ADO的数据库引擎。3. MIDAS方法:MIDAS方法是Delphi用于开发多层应用系统的中间透明引擎。通过MIDAS,开发者可使用相同的组件来存取不同的后台应用程序服务器。这些后台应用服务器程序包括COM+/DCOM应用程序服务器、MTS中间件或CORBA应用程序服务器。MIDAS方法实现了真正意义上的客户端程序与后台数据库的分离,但MIDAS的灵活性很差,与数据感应控件关联过于密切,限制了程序员的创造性。4. dbExpress 方法:Delphi 6.0提供了新一代的跨平台数据访问引擎dbExpress方法,它由一组新控件、技术和驱动程序组成,并通过这些组成部分和各种数据源连链接。如配合不同的数据库动态链接库文件,还可处理后台数据库数据。因此也是Delphi和Kylix的核心数据访问。综上所述,虽然Delphi的各个版本提供多种数据库的连接和访问方法,但在同一个应用程序中,开发者几乎不可能同时选用多种连接方法,因而选择合适方法是一个必须在开发前仔细考虑的问题。 3.2.2数据库组件用Delphi6.0开发数据库应用,重点是和各种数据库组件打交道,控件组有:BDE控件组、ADO控件组、Date Controls控件组和dbExpress控件组。1ADO是Micrsoft公司关于各种类型数据的高等界面,后来逐渐演变成满足所有数据访问需要的完整解决办法。ADO的对象模型是所有数据访问接口对象模型中最简单的一种。它主要控件有:TTADOConnection控件,TADOCommand控件,ADODateSet控件,TADOTable控件,TADOQuery控件,TADOStoeProc控件。Delphi的ADO组件无需依靠BDE而是使用ADO技术,提供了可以通过数据控制组件访问数据的新方法。唯一的要求是在使用ADO组件时必须运行ADO/OLEDB。ADO组件的使用使得DELPHI在访问数据的类型和采用的技术方面都有了很大的突破四 商品销售管理系统目标分析4.1:任务分析: 由于商品销售管理系统是一个用来帮助使用者管理商品销售流程的软件。使用者通过对销售过程中所涉及到的商品,订单,销售商等资料的录入,便可以轻松实现商品销售流程的管理。所以,此系统必须向使用者提供一下一些具体功能:。 1:软件必须向使用者提供商品基本的录入,删除,编辑等基本功能2:鉴于商品的不同销售方式(分为订单销售和代理商销售两种形式),软件必须向使用者提供商品销售环节中的基本管理功能,因此必须有订单分销模块和代理商分销模块。3:软件必须向使用者提供基本的查询功。4:由于是销售管理软件,所以系统安全性必须是要考虑的问题。因此,必须实现以下两点:a:系统操作员机制。对系统的使用者,按等级开放管理权限,这样可以在一定程度上保证数据库系统的安全性,避免数据被泄漏,非法更改等。B:销售数据直接反映了一个销售单位的盈亏状况,鉴于销售数据的重要性,所以必须对这些数据加以保护,在系统崩溃时或者误操作等情况下,可以对数据进行恢复。这就需要系统提供备份功能。 5 :对于销售数据不能只存储在计算机中,而是需要导出步骤,最后以印刷品的形式出现在使用者面前,该软件设计的最终目的才能得以具体的实现。所以,打印功能是必不可少的系统功能之一。经过系统分析阶段,得下图:订单销售数据备份密码登陆数据恢复权限管理订单销售录入订单销后查询代理商进货数据录入代理商销售查询代理商进货明细代理商销售操作员信息管理代理商信息管理商品交易管理系统销售子系统安全子系统人员管理子系统 4.2:系统目标本系统的目标是:使用者通过对基本销售信息的录入,即可方便直观的实现对商品交易流程的管理,查询,以及对已有信息的打印输出等功能。本销售系统定义了两种销售模式:1:订单销售。即销售方通过订单方式销售的商品。2:代理商销售方式。(此功能略复杂,所以在实现的是时候必须对其提供录入修改查询等基本功能)。除了上述基本功能外,系统还必须提供必要的附加功能: 1:数据备份功能。 2:密码登陆功能。 3:操作员及相应的权限管理功能。综上所述,为实现上述系统目标,必须定义相应功能的单元模块,所以本系统的层次结构如下图所示: 文件基本信息业务查询数据备份系统设置数据恢复权限管理退出操作员信息代理商信息商品信息代理商进货数据录入代理商退货数据录入订单销售数据录入销售管理订单进货统计代理商进货查询代理商进货明细商品分布统计商品交易管理系统五 商品销售管理系统数据库设计5.1创建应用程序数据表在这个商品销售管理系统中我们设计了若干个paradox类型的table表(代理商信息表商品信息表操作员信息表代理商销售记录订单销售记录,系统信息表),每个表的具体字段内容如下:1:depot(代理商信息表)字段名类型长度关键字备注NO+是排序用IDA20代理商编号NAMEA20代理商姓名TYPEA20代理商地址MEMOA200代理商备注2:Goods(商品信息表)字段名类型长度关键字备注NO+是排序用IDA20是商品编号NAMEA40是商品名称TYPEA20商品型号UNITA6单位MEMOA200备注3:sysuser(操作员信息表)字段名类型长度关键字备注NO+是排序用IDA20操作员编号NAMEA20操作员姓名SEXA2操作员性别PASSA20操作员密码RIGHTSA50操作员权限MEMOA200操作员备注4:SysUserRights(权限表)字段名类型长度关键字备注NO+是排序用IDA20权限编号NAMEA20权限名称RIGHTSA20权限开放程度5:YWYData(订单信息)字段名类型长度关键字备注No+是排序用IDA20订单编号NAMEA20所订商品名称XHA20商品型号SLA200订货数量JFRQA20交付日期MemoA200订单备注6:stockrecord(代理商进货表)字段名类型长度关键字备注No+是排序用MYDATEA10购买日期DEPOTIDA20代理商编号GOODSIDA20商品编号NUMBERS进货数量IDA20进货代号PRICEN价格MemoA200备注7:threcord(代理商退货表)字段名类型长度关键字备注No+是排序用MYDATEA10退货日期DEPOTIDA20退货代理商编号GOODSIDA20退货商品编号NUMBERS退货数量IDA20退货代号PRICEN退货数额MemoA200备注8:JXCrecord(进销存明细表)字段名类型长度关键字备注No+是排序用JXCA20进销存状态MYDATEA10进销存日期GOODSIDA20商品编号NUMBERS进货数量PRICEA20价格MemoA200备注 5.1.1定义数据库别名为了方便对数据库中文件进行管理,在创建数据库之前,一般先要建立一个存放数据库的文件夹。然后使用DBD和BDE,按照下列方法定义数据库别名。建立数据库别名是在Delphi 7提供的数据库驱动器(BDE,Borland Database Engine)中进行的。数据库驱动器(BDE,Borland Database Engine)又称集成化数据库应用程序编程接口(IDAPI),它是数据库工具中的核心部件,是运行数据库应用程序时所必须的支撑系统。BDE Administrator是设置和管理BDE的工具,可以用来管理BDE中的别名和驱动程序。建立数据库别名具体操作步骤如下:步骤1:打开Windows的资源管理器,在H盘(或其他盘符,但是设置别名路径时应作相应的修改)创建“毕业设计”文件夹,并在该文件夹下在创建一个“数据库”的子文件夹。用于存放本系统的8个数据表,名称分别为:“depot” “Goods” “sysuser” “SysUserRights” “YWYData” “stockrecord” “threcord” “JXCrecord”。步骤2:单击Windows桌面的“开始”菜单,选择“程序”“Borland Delphi 7” “BDE Administrator”。(要进入BDE Administrator进行操作,必须先关闭全部正在使用的BDE应用程序,为的是保证再进入编程环境时所设置的参数生效。)步骤3:右键单击Database页卡,在弹出菜单中选择new菜单项来增设一个数据库别名。在弹出的Database Driver Name选择窗口中选择STANDARD,单击OK按钮。输入“CPXSGL”作为数据库别名。把CPXSGL数据库的路径填入Definition页卡的PATH项,本例填入“H:毕业设计数据库”。单击Configuration页卡,在Drivers选项中选择Native类驱动程序,在展开的树状结构中选择PARADOX驱动程序项。设置完毕后选择Object菜单,单击save as菜单项。重复步骤3,直到需要的数据库别名设计完毕。 5.1.2 定义数据表设计DBD(Database Desktop)是Delphi中提供的简单实用的数据库桌面工具,它的功能是创建维护以及查询数据库。1. 表结构设计 依据表一给出的字段设计表的字段名称,字段类型,初始长度,初始值。创建数据库表结构具体操作步骤如下:步骤1:单击Windows桌面的“开始”菜单,选择“程序”“Borland Delphi 7”“Database Desktop”。步骤2:选择“File” “New” “Table”,在弹出的Create Table对话框中选择Table Type为Paradox7.在表结构设计窗体中填写字段名,类型,长度,默认值。步骤3:设计好表结构后要对表结构进行保存。单击save as按钮,在弹出的保存对话框中选择Alias为“CPXSGL”(设计其他数据库时要做相应更改),填写表名后单击“保存”按钮。重复步骤2和步骤3直到设计完所有表结构。2. 数据录入表结构设计好后,就须对每个数据库中的表的内容进行录入。输入表字段内容具体操作步骤如下:步骤1:单击Windows桌面的“开始”菜单,选择“程序”“Borland Delphi 7”“Database Desktop”。步骤2:选择“File” “Open” “Table”,在弹出的Select Table对话框中选择 Alias为CPXSGL(对其他数据库表进行输入时该别名应作相应变化).步骤3:使用“Table” “Edit”菜单项,则即可进入编辑状态对数据直接进行修改。在编辑状态下按Insert键,可以插入一条新的记录行;按Delete下键,可以删除当前的记录。若再次选择“Table” “Edit”菜单项,则 DBD将保存所进行的修改。重复步骤2和步骤3直到所有表内容输入完毕。5.2:DELPHI中数据文件路径的管理Delphi中的Table控件(Component)和query控件都需要有一个DatabaseName属性。可以用DatabaseName属性来指定该控件所引用的数据表路径。有两种方法可以为属性DatabaseName设置路径:第一种方法是直接输入数据表所在路径,另一种方法是使用数据库别名(Alias)。在Delphi中数据库别名是在数据库引擎(BDE)中设定的,5.2的方法在设计时是可行的,然而需要对程序进行移植时却会导致程序运行出现异常。数据库应用程序的移植是一个重要的问题。因为在数据库应用程序中要访问数据库或数据表,就要涉及到数据文件的路径。一般来说,数据库应用程序开发完成后要移植到其他的机器上使用,因此数据库应用程序运行时的数据文件路径很可能和开发时的不同。所以必须对数据文件的路径进行有效的管理,以便用于系统的移植。管理数据文件路径的方法有三种:把数据文件建立在应用程序所在目录的子目录下利用配置文件存放数据路径 利用数据库别名存放数据库路径。本试题库系统采用的是第三种方法,且具有更强的移植性,每次启动时都会对别名进行检查并进行重设,以防异常情况的出现,但是损失了一定的运行时间。下面代码说明如何建立名字为“CPXSGL”的别名,它的数据库路径为“H:毕业设计数据库”,数据库类型为PARADOX。Session.ConfigMode:=cmall;Session.AddStandardAlias(CPXSGL, E:毕业设计数据库,PARADOX); Session.SaveConfigFile; /保存新建立的别名如须对别名进行删除,则先要检查别名是否存在,如果对不存在的别名做删除操作则会引起异常。下面代码说明如何检查数据库别名“CPXSGL”是否存在,如果存在则进行删除。 定义变量:var strAlias:TStringList; /用于保存BDE数据库别名表 代码: strAlias:=TStringList.Create;/生成TstringList类的实例 Session.GetAliasNames(strAlias);/获取数据库别名if (strAlias.IndexOf(CPXSGL) -1) thenbegin session.DeleteAlias(CPXSGL); session.SaveConfigFile;end; 六 试题库系统应用程序界面设计本系统采用图形化界面并且提供帮助,界面友好,操作方便,可以大大降低了本软件的使用难度和维护难度,为软件的使用者带来方便。系统在进行设计时,主要使用的是delphi中的一部分的控件,最长使用的是Label控件、Button控件、Radiogroup 控件,Memo控件。数据库方面常用Datasource控件、 ADOQuery控件、 ADOConnection控件、 DBNavingation控件、 ADOTable控件、 DBEdit控件、DBGrid控件。6.1 用户登录窗体本窗体的任务是通过用户输入密码判断用户是否是合法的用户.它用于管理员按照用户名和密码进行登录。以免不相关得人进入系统进行不良的操作,而对系统进行破坏,导致整个系统进行瘫痪。6.2 主窗体该窗体是本系统的统筹界面。它是系统的结构匡架,便于对整个系统的观摩、管理.主要使用Label和 panl以及manu等控件实现的。Image控件使得界面得以美化。 由于每次操作不一定会用到所有的数据库,所以没有必要在每次运行时生成所有的数据库别名。Session控件提供了动态生成数据库别名的方法,使通过操作选择窗体进行优选择的别名生成成为可能。6.3 系统设置窗体本窗体由Lable和Edit控件组成,可以实现系统基本信息的设置。在第一次运行本系统时, 本窗口自动运行,要求使用者输入系统的基本信息, 以及指定数据库所在路径。6.4 权限管理窗体 该窗体是向用户提供权限管理功能,通过对用户级别的选择再组合相应的权限,即可方便得以对统一数据库的相同或不同的数据表进行操作。界面简捷是本窗体的一个有点,这使对权限的管理十分方便。6.5 操作员信息设置窗体 这里是设置操作员信息的窗体单元。用户可以通过增加按钮任意增加一个操作员,同样也可以通过修改或者删除按钮实现相应的操作。另外,为了方便用户,双击dbgrid也会出现编辑对话框。 此外,还有类似的窗体,如代理商信息设置,商品信息设置等等,由于这些窗体在结构上具有相似性,在此就不一一赘述了。6.6 代理商进/退货录入窗口如上图所示,在录入进货数据时,必须先选择代理商的姓名,然后双击dbgrid就可以实现对出售商品的选择。为了保证数据表的参照完整性,在点击保存按钮的时候,系统会检查录入的数据是否完整,如缺少项目,系统会给出正确的提示。退货数据录入窗口和进货数据录入敞口大体相当,唯一不同的是在保存时候会检查代理商是否有过相应的进货数据,如在没有进货纪录的同时退货,系统会给出相应的提示。 6.7 定单进货数据录入窗口以及查询窗口 该窗体是供使用者输入订货单信息时候使用的,使用者可以对订单进行增加修改删除等具体操作。订单查询窗口与之类似,但是不提供增加和修改功能。6. 8 代理商销售数据查询该功能分为两个窗体实现,分别是一般数据查询和明细数据查询。上图是一般查询,使用者通过对代理商,商品名称以及商品型号的选择,可以很快地查到该代理商的进货情况,并且可以通过报表打印输出。上图是代理商进货明细查询,蓝色的字体标出的是该代理商的进货记录,红色的字体标出的是该代理商的退货记录,同时,使用者还可以使用对代理商姓名,商品名称及型号的输入,轻松实现对个别代理商销售的查询。必不可少的,该窗体同样向用户提供打印输出功能。6. 9 商品分布查询 该窗体以图形化的界面,简单直观的向使用者提供商品的查询功能,使用者可以通过已知商品信息迅速查询到与此种商品相关的代理商信息,同时,也可用过代理商的信息反查处其代理的商品状况。此外,为了实现系统的界面风格和报表输出功能,用到了两个控件,分别是XpMenu3.1 修改版 和QRMaker 。具体的安装和使用方法就不在这里详细说明。本系统主要分为四个主要功能,即订单系统,代理商系统,备份系统,何管理员系统。其中,订单系统和代理商系统是为商品销售服务的,而管理员登陆系统是为数据安全考虑的, 最后的备份系统有助于提高系统的健壮性,在系统崩溃后可以把损失降到最低限度。同时,本系统也提供了丰富的打印功能,使得计算机里的数据可以以书面的形式印刷并且传播,不会出现信息孤岛的现象。七 结束语 经过几个月的设计和开发,商品销售管理系统基本开发完毕。其功能基本符合用户需求,能够完成商品流通过程中所涉及到的基本信息的、输入、修改,查询等动能。并提供部分系统维护功能,使用户方便进行用户名称和密码的更改,提高了软件的安全性和健壮性。此外,本软件对于数据的一致性的问题也通过程序进行了有效的解决。但现实中的商品交易形式是多种多样的,是由于毕业设计时间较短,需求分析做得不够完善,个人能力以及精力等因素的限制,所以该系统只假设了两种形式销售方式,即订单销售和代理商销售, 并且假设这两种销售方式在商品的流通过程中不存在互相干扰的现象。另外,该系统还有许多不尽如人意的地方。比如功能不是很完善、用户界面不够美观,出错处理不够等多方面问题。这些都有待进一步改善。致谢在本次毕业设计中,我从指导老师张韦伟老师身上学到了很多东西。张韦伟老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。她无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助,感谢她耐心的辅导。另外,系统能及时开发完成也得益于同组同学之间的密切协作,这里一并表示感谢!主要参考文献:1 Delphi企业经营管理系统开发实例导航作者:求是科技 王志伟 黄超 出版社:人民邮电出版社2 Delphi 面向对象程序设计及应用开发 作者:朱振元,朱承出版社:西安电子科技大学出版社3 Delphi 6程序设计导学 作者:张春林出版社:清华大学出版社4 最新Delphi 7数据库开发指南作者: 只飞 等出版社:北京希望电子出版社5 Delphi 实用程序100例作者:段兴出版社:人民邮电大学6 网上资料查询附录程序清单及注释程序清单 unit LogoUnit;/登陆窗口interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, jpeg, ExtCtrls, ComCtrls, StdCtrls;type TLogoForm = class(TForm) Panel1: TPanel; StatusBar1: TStatusBar; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; procedure FormCreate(Sender: TObject); private Private declarations public Public declarations end;var LogoForm: TLogoForm;implementationuses LoginUnit;$R *.dfmprocedure TLogoForm.FormCreate(Sender: TObject);var Foundwin: HWND;begin Foundwin := FindWindow(nil, 商品销售管理系统 -); / 查找窗口 if Foundwin 0 then begin / 调用Delphi自带的查询窗口函数,查找特定标题的窗体 / 若找到则激活已运行的程序,同时结束自身 ShowWindow(Foundwin, SW_RESTORE); halt; end;end;endunit LoginUnit; /密码登陆窗口interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, DB, DBTables, Registry, DBCtrls;type TLoginForm = class(TForm) PanelBkGnd: TPanel; Label2: TLabel; Label1: TLabel; Label3: TLabel; L_name: TLabel; Panel_button: TPanel; Bevel_button: TBevel; OKBtn: TButton; CancelBtn: TButton; E_ID: TEdit; E_PassWord: TEdit; query_pass: TQuery; procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure OKBtnClick(Sender: TObject); procedure E_IDChange(Sender: TObject); procedure E_IDKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure CancelBtnClick(Sender: TObject); procedure FormCreate(Sender: TObject); private B_halt: bool; I_logo: integer; Private declarations public Public declarations end;var LoginForm: TLoginForm;implementationuses MainUnit, LogoUnit;$R *.dfmprocedure TLoginForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);var S_temppass: string;begin inherited; if b_halt then begin query_pass.Close; query_pass.Free; application.Terminate; exit; end else b_halt := true; S_temppass := E_password.text; USERNAME := L_name.Caption; if (E_id.Text = ) or (L_name.Caption = 未知用户) then /用户名为空 begin messagedlg(用户错误, mterror, mbok, 0); E_id.SetFocus; canclose := false; exit; end /end if else /用户名非空 begin with query_pass do begin first; while not eof do /检查用户名与密码 begin if (USERNAME = fieldbyname(USERname).asstring) and (S_tempPass = fieldbyname(Psd).asstring) then begin USERRIGHTSNAME := fieldbyname(rightsname).AsString; USERRIGHTS := fieldbyname(rights).AsString; break; end; next; end; /end while if eof then /用户名与密码不符 begin inc(I_logo); if I_logo = 3 then begin messagedlg(您已尝试超过 3 次,系统将停止运行!, mterror, mbok, 0); query_pass.Close; query_pass.Free; application.Terminate; end else begin messagedlg(用户名与密码不符,请检查后重新输入。 + #13 + #13 + 你还有 + inttostr(3 - I_logo) + 次机会!, mterror, mbok, 0); e_password.SetFocus; e_password.SelectAll; canclose := false; exit; end; end; /end if end; /end with end; /end else if; MainForm.StatusBar_main.Panels.Items3.Text := 操作员:【 + USERNAME + 】 权限: + USERRIGHTSNAME + ; query_pass.Free; canclose := true;end;procedure TLoginForm.OKBtnClick(Sender: TObject);begin b_halt := false; self.Close;end;procedure TLoginForm.E_IDChange(Sender: TObject);begin with query_pass do begin first; while not eof do begin if E_id.Text = fieldbyname(ID).AsString then begin L_name.Caption := fieldbyname(USERName).AsString; exit; end else L_name.Caption := 未知用户; next; end; end;end;procedure TLoginForm.E_IDKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin if key = 27 then begin cancelbtn.Click; exit; end; if (key = 13) or (key = 40) then 判断是按执行键 begin key := 0; perform(WM_NEXTDLGCTL, 0, 0); 移动到下一个控件 end;end;procedure TLoginForm.CancelBtnClick(

温馨提示

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

评论

0/150

提交评论