商品销售管理系统论文-无忧无虑毕设网_第1页
商品销售管理系统论文-无忧无虑毕设网_第2页
商品销售管理系统论文-无忧无虑毕设网_第3页
商品销售管理系统论文-无忧无虑毕设网_第4页
商品销售管理系统论文-无忧无虑毕设网_第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/OLE DB。 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 + 是 排序用 ID A 20 代理商编号 NAME A 20 代理商姓名 TYPE A 20 代理商地址 MEMO A 200 代理商备注 2: Goods(商品信息表) 字段名 类型 长度 关键字 备注 文件 基本信息 业务查询 数据备份 系统设置 数据恢复 权限管理 退出 操作员信息 代理商信息 商品信息 代理商进货数据录入 代理商退货数据录入 订单销售数据录入 销售管理 订单进货统计 代理商进货查询 代理商进货明细 商品分布统计 商品交易管理系统 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: NO + 是 排序用 ID A 20 是 商品编号 NAME A 40 是 商品名称 TYPE A 20 商品型号 UNIT A 6 单位 MEMO A 200 备注 3: sysuser(操作员信息表) 字段名 类型 长度 关键字 备注 NO + 是 排序用 ID A 20 操作员编号 NAME A 20 操作员姓名 SEX A 2 操作员性别 PASS A 20 操作员密码 RIGHTS A 50 操作员权限 MEMO A 200 操作员备注 4: SysUserRights(权限表 ) 字段名 类型 长度 关键字 备注 NO + 是 排序用 ID A 20 权限编号 NAME A 20 权限名称 RIGHTS A 20 权限开放程度 5: YWYData(订单信息) 字段名 类型 长度 关键字 备注 No + 是 排序用 ID A 20 订单编号 NAME A 20 所订商品名称 XH A 20 商品型号 SL A 200 订货数量 JFRQ A 20 交付日期 Memo A 200 订单备注 6: stockrecord(代理商进货表) 字段名 类型 长度 关键字 备注 No + 是 排序用 MYDATE A 10 购买日期 DEPOTID A 20 代理商编号 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: GOODSID A 20 商品编号 NUMBER S 进货数量 ID A 20 进货代号 PRICE N 价格 Memo A 200 备注 7: threcord(代理商退货表) 字段名 类型 长度 关键字 备注 No + 是 排序用 MYDATE A 10 退货日期 DEPOTID A 20 退货代理商编号 GOODSID A 20 退货商品编号 NUMBER S 退货数量 ID A 20 退货代号 PRICE N 退货数额 Memo A 200 备注 8: JXCrecord(进销存明细表) 字段名 类型 长度 关键字 备注 No + 是 排序用 JXC A 20 进销存状态 MYDATE A 10 进销存日期 GOODSID A 20 商品编号 NUMBER S 进货数量 PRICE A 20 价格 Memo A 200 备注 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) then begin 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;/登陆窗口 interface uses 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; implementation uses LoginUnit; $R *.dfm procedure TLogoForm.FormCreate(Sender: TObject); var Foundwin: HWND; begin Foundwin := FindWindow(nil, 商品销售管理系统 -); / 查找窗口 if Foundwin 0 then begin 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: / 调用 Delphi 自带的查询窗口函数,查找特定标题的窗体 / 若找到则激活已运行的程序,同时结束自身 ShowWindow(Foundwin, SW_RESTORE); halt; end; end; end unit LoginUnit; /密码登陆窗口 interface uses 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; implementation uses MainUnit, LogoUnit; $R *.dfm procedure 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(Sender: TObject); begin halt; end; procedure TLoginForm.FormCreate(Sender: TObject); var reg: TRegistry; begin self.Caption := application.Title + - ; self.Caption := self.Caption + 用户登录 ; 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: I_logo := 0; query_pass.DatabaseName := CPXSGL; B_halt := true; reg := TRegistry.Create; Reg.RootKey := HKEY_CURRENT_USER; with query_pass do begin sql.text := SELECT Sysuser.ID, Sysuser.NAME USERNAME, Sysuser.PASS Psd, + SysUserRights.NAME RIGHTSNAME, SysUserRights.RIGHTS RIGHTS FROM Sysuser + INNER JOIN SysUserRights ON (Sysuser.RIGHTS = SysUserRights.NAME) + ORDER BY Sysuser.ID; try open; except if LogoForm.Showing then LogoForm.Destroy; messagedlg(数据 库打开错误,可能指定的系统数据库文件不存在! + #13 + #13 + 系统将终止运行,请重新尝试打开本程序。 + #13 + #13 + 如果依然出现本信息,请与程序供应商联系。 , mtError, mbok, 0); close; try reg.DeleteKey(S_RegTree); finally reg.CloseKey; reg.free; end; application.Terminate; end; end; end; end. unit SetupFormUnit;/基本信息设置窗口 interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons, Registry; type 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: TSetupForm = class(TForm) Panel1: TPanel; GroupBox1: TGroupBox; GroupBox2: TGroupBox; GroupBox3: TGroupBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; SB_selectpath: TSpeedButton; Label9: TLabel; e_allname: TEdit; e_name: TEdit; E_tel: TEdit; E_address: TEdit; LE_datapath: TEdit; SB_about: TSpeedButton; SB_CLOSE: TSpeedButton; SB_save: TSpeedButton; SB_stop: TSpeedButton; Bevel_BUTTON: TBevel; RB_user: TRadioButton; RB_auto: TRadioButton; e_backupdays: TEdit; L_days: TLabel; procedure SB_stopClick(Sender: TObject); procedure SB_CLOSEClick(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure FormCreate(Sender: TObject); procedure SB_saveClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure SB_selectpathClick(Sender: TObject); procedure SB_aboutClick(Sender: TObject); procedure e_allnameChange(Sender: TObject); procedure e_allnameKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private B_save: boolean; Private declarations public 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: Public declarations end; var SetupForm: TSetupForm; implementation $R *.dfm uses MainUnit, SelectDirUnit, AboutUnit; procedure TSetupForm.SB_stopClick(Sender: TObject); var reg: TRegistry; begin inherited; reg := TRegistry.Create; try Reg.RootKey := HKEY_CURRENT_USER; reg.DeleteKey(S_RegTree); finally reg.CloseKey; reg.free; end; halt; end; procedure TSetupForm.SB_CLOSEClick(Sender: TObject); begin self.Close; end; procedure TSetupForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin inherited; if sb_save.Enabled then sb_save.Click; if not B_save then canclose := false; end; procedure TSetupForm.FormCreate(Sender: TObject); var TheBitmap: TBitmap; begin 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: inherited; self.Caption := application.Title + - 系统设置 ; TheBitmap := TBitmap.Create; TheBitmap.Height := application.icon.Height + 2; TheBitmap.Width := application.icon.Width + 2; TheBitmap.Canvas.Draw(0, 0, application.Icon); sb_about.Glyph := thebitmap; B_save := true; end; procedure TSetupForm.SB_saveClick(Sender: TObject); var reg: TRegistry; begin B_save := false; if messagedlg(确定要保存以上所有资料吗? , mtconfirmation, mbyes, mbno, 0) = mrno then begin B_save := true; exit; end; if trim(e_allname.Text) = then begin messagedlg(公司名称不能为空,请检查后重新输入。 , mtwarning, mbok, 0); e_allname.SetFocus; exit; end; if trim(e_name.Text) = then begin messagedlg(负责人姓名不能为空,请检查后重新输入。 , mtwarning, mbok, 0); e_name.SetFocus; exit; end; if (not DirectoryExists(trim(LE_datapath.Text) and (trim(LE_datapath.Text) 【系统默认】) then begin messagedlg(指定数据库目录不存在,请检查后重新输入。 , mtwarning, mbok, 0); LE_datapath.SetFocus; exit; end; reg := TRegistry.Create; try Reg.RootKey := HKEY_CURRENT_USER; 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: if (Reg.OpenKey(S_RegTree, False) = False then begin Reg.CreateKey(S_RegTree); end; Reg.OpenKey(S_RegTree, True); /读取窗体控件中的公司基本信息到注册表中 Reg.WriteString(username, trim(E_name.text); Reg.WriteString(coname, trim(E_allname.text); Reg.WriteString(cotel, trim(E_tel.text); Reg.WriteString(address, trim(E_address.text); Reg.WriteString(DataPath, trim(LE_datapath.text); if rb_auto.Checked then reg.Writestring(autosave, 1) else reg.writestring(autosave, 0); Reg.WriteString(savedays, trim(e_backupdays.text); Reg.CloseKey; sb_save.Enabled := false; with MainForm do begin S_name := trim(E_allname.text); S_username := trim(E_name.text); S_cotel := trim(E_tel.text); S_address := trim(E_address.text); CPXSGL := trim(le_datapath.Text); if CPXSGL = 【系统默认】 then begin CPXSGL := ExtractFileDir(Application.ExeName); if (StrLen(PChar(CPXSGL) 3) then CPXSGL := CPXSGL + DATA else CPXSGL := CPXSGL + DATA; end; if rb_auto.Checked then S_autosave := 1 else S_autosave := 0; S_savedays := trim(e_backupdays.text); end; messagedlg(系统设置数据信息保存完毕! , mtwarning, mbok, 0); MainForm.Caption := Application.Title + - + S_name + 【 + CPXSGL + 】 ; B_save := true; finally 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: Reg.CloseKey; Reg.Free; end; self.Close; end; procedure TSetupForm.FormShow(Sender: TObject); var reg: TRegistry; begin inherited; reg := TRegistry.Create; try Reg.RootKey := HKEY_CURRENT_USER; if (Reg.OpenKey(S_RegTree, False) = False then begin Reg.CreateKey(S_RegTree); end; Reg.OpenKey(S_RegTree, True); E_allname.text := reg.ReadString(Coname); e_name.text := reg.ReadString(Username); E_tel.text := reg.ReadString(Cotel); E_address.text := reg.ReadString(Address); LE_datapath.Text := reg.ReadString(DataPath); if LE_datapath.Text = then LE_datapath.Text := 【系统默认】 ; if reg.Readstring(autosave) = 1 then rb_auto.Checked := true else rb_user.Checked := true; e_backupdays.text := Reg.readString(savedays); if trim(e_backupdays.text) = then e_backupdays.text := 10; Reg.CloseKey; finally Reg.CloseKey; Reg.Free; end; sb_save.Enabled := false; end; procedure TSetupForm.SB_selectpathClick(Sender: TObject); begin Application.CreateForm(TSelectDir, SelectDir); 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: SelectDir.DriveComboBox1.Text := ExtractFileDrive(LE_datapath.Text); if (FileExists(LE_datapath.Text) then SelectDir.DirectoryListBox1.Directory := LE_datapath.Text; if (SelectDir.ShowModal = mrOK) then LE_datapath.Text := SelectDir.DirectoryListBox1.Directory; /Frm_select_dir.Label2.Caption; SelectDir.free; end; procedure TSetupForm.SB_aboutClick(Sender: TObject); begin Application.CreateForm(TAboutForm, AboutForm); AboutForm.showmodal; AboutForm.free; end; procedure TSetupForm.e_allnameChange(Sender: TObject); begin sb_save.Enabled := true; end; procedure TSetupForm.e_allnameKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (key = 13) or (key = 40) then 判断是按执行键 begin key := 0; perform(WM_NEXTDLGCTL, 0, 0); 移动到下一个控件 end; end; end. unit BackUpUnit; /数据备份 interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, shellapi; type TBackUpForm = class(TForm) Panel1: TPanel; 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: Edit_path: TEdit; Label3: TLabel; Label4: TLabel; Select: TButton; Panel_button: TPanel; Bevel_button: TBevel; OKBtn: TButton; CancelBtn: TButton; procedure OKBtnClick(Sender: TObject); procedure Edit_pathChange(Sender: TObject); procedure FormCreate(Sender: TObject); procedure SelectClick(Sender: TObject); procedure CancelBtnClick(Sender: TObject); procedure Edit_pathEnter(Sender: TObject); private Private declarations public B_showmessage: boolean; Public declarations end; var BackUpForm: TBackUpForm; implementation uses FunctionUnit, SelectDirUnit; $R *.dfm procedure TBackUpForm.OKBtnClick(Sender: TObject); var SFilePath, DFilePath, SourcePath: string; MesString: string; OpStruc: TSHFileOpStruct; FromBuf, ToBuf: array0.255 of Char; ShouldCopy: Boolean; sr: TSearchRec; FileAttrs: Integer; label COPYAGAIN; begin COPYAGAIN: / 准备目录拷贝 FillChar(FromBuf, Sizeof(FromBuf), 0); FillChar(ToBuf, Sizeof(ToBuf), 0); 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: / 设置 OpStruc with OpStruc do begin Wnd := Handle; wFunc := FO_COPY; pFrom := FromBuf; pTo := ToBuf; fFlags := FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION; fAnyOperationsAborted := False; hNameMappings := nil; lpszProgressTitle := nil; end; SourcePath := ExtractFileDir(Application.ExeName); if (StrLen(PChar(SourcePath) 3) then SourcePath := SourcePath + ; FillChar(FromBuf, Sizeof(FromBuf), 0); FillChar(ToBuf, Sizeof(ToBuf), 0); SFilePath := SourcePath + data; StrPCopy(FromBuf, Pchar(SFilePath); DFilePath := Edit_path.Text; StrPCopy(ToBuf, Pchar(DFilePath); / 检测源路径是否存在 if (not DirectoryExists(SFilePath) then begin if B_showmessage then begin MesString := 源数据库目录 + SFilePath + 已被破坏,系统不能进行备份。 ; MessageBox(Handle, PChar(MesString), 错误 , MB_OK + MB_ICONERROR); end; exit; end; if uppercase(SFilePath) = uppercase(DFilePath) then begin if B_showmessage then begin MesString := 源数据库目录与目标数据库目录相同,系统不能进行备份。 ; MessageBox(Handle, PChar(MesString), 错误 , MB_OK + MB_ICONERROR); end; exit; end; / 检测目的路径是否存在 ShouldCopy := True; if (DirectoryExists(DFilePath) then 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: begin if B_showmessage then begin MesString := 目的路径 + DFilePath + 已经存在,继续备份会删除该文件夹下的所有文件。 + chr(13) + 是否继续备份至该目录? ; if MessageBox(Handle, PChar(MesString), 信息 , MB_YESNO + MB_ICONINFORMATION) IDYES then ShouldCopy := False else /先删除该文件夹 begin OpStruc.wFunc := FO_DELETE; StrPCopy(FromBuf, Pchar(DFilePath); ShFileOperation(OpStruc); goto COPYAGAIN; /删除已存在的目录文件夹后重新 COPY end; end else begin OpStruc.wFunc := FO_DELETE; StrPCopy(FromBuf, Pchar(DFilePath); ShFileOperation(OpStruc); goto COPYAGAIN; /删除已存在的目录文件夹后重新 COPY end; end; if ShouldCopy then begin if ShFileOperation(OpStruc) 0 then begin MesString := 在备份目录 + SFilePath + 的过程中出现错误。 ; MessageBox(Handle, PChar(MesString), 错误 , MB_OK + MB_ICONERROR); end else / 将文件的属性设置为不是只读属性 begin FileAttrs := faAnyFile; if FindFirst(DFilePath + *.*, FileAttrs, sr) = 0 then begin FileSetAttr(DFilePath + + sr.Name, faArchive); end; while FindNext(sr) = 0 do begin FileSetAttr(DFilePath + + sr.Name, faArchive); end; 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: FindClose(sr); if B_showmessage then begin showmessage(所有数据已安全备份至“ + dfilepath + ”! ); self.Close; end; end; end; end; procedure TBackUpForm.Edit_pathChange(Sender: TObject); begin if trim(Edit_path.Text) then OKBtn.Enabled := true else OKBtn.Enabled := false; end; procedure TBackUpForm.FormCreate(Sender: TObject); var SourcePath: string; begin inherited; SELF.Caption := application.Title + - 数据备份 ; B_showmessage := true; SourcePath := ExtractFileDir(Application.ExeName); if (StrLen(PChar(SourcePath) 3) then SourcePath := SourcePath + ; Edit_path.Text := SourcePath + BACKUPDATA + formatdatetime(yyyymmdd, date); end; procedure TBackUpForm.SelectClick(Sender: TObject); begin Application.CreateForm(TSelectDir, SelectDir); SelectDir.DriveComboBox1.Text := ExtractFileDrive(Edit_path.Text); if (FileExists(Edit_path.Text) then SelectDir.DirectoryListBox1.Directory := Edit_path.Text; if (SelectDir.ShowModal = mrOK) then Edit_path.Text := SelectDir.DirectoryListBox1.Directory; SelectDir.free; OKBtn.SetFocus; end; procedure TBackUpForm.CancelBtnClick(Sender: TObject); 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: begin self.Close; end; procedure TBackUpForm.Edit_pathEnter(Sender: TObject); begin Edit_path.SelectAll; end; end. unit RightManageUnit; /权限管理窗口 interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, DB, DBTables, CheckLst; type TRightManageForm = class(TForm) LB_name: TListBox; Panel1: TPanel; Panel2: TPanel; CLB_rights: TCheckListBox; OKBtn: TButton; CancelBtn: TButton; query_data: TQuery; procedure LB_nameClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure OKBtnClick(Sender: TObject); procedure CLB_rightsClick(Sender: TObject); procedure FormPaint(Sender: TObject); procedure CancelBtnClick(Sender: TObject); private B_create: boolean; P_rights: array of array of string; Private declarations public Public declarations end; var RightManageForm: TRightManageForm; 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: implementation uses FunctionUnit; $R *.dfm procedure TRightManageForm.LB_nameClick(Sender: TObject); var S_rights: string; I_index: integer; begin inherited; if (LB_name.itemindex 6) then begin CLB_rights.Enabled := false; exit; end else CLB_rights.Enabled := true; S_rights := P_rights1, LB_name.itemindex; if length(S_rights) 10 then S_rights := 0000000000; for I_index := 1 to CLB_rights.Items.Count do begin if S_rightsI_index = 1 then CLB_rights.CheckedI_index - 1 := true else CLB_rights.CheckedI_index - 1 := false; end; end; procedure TRightManageForm.FormCreate(Sender: TObject); var I_index: integer; begin self.Caption := 权限管理 ; setlength(P_rights, 2); setlength(P_rights0, 6); setlength(P_rights1, 6); P_rights0, 0 := 管理员 ; P_rights0, 1 := 一级 ; P_rights0, 2 := 二级 ; P_rights0, 3 := 三级 ; 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: P_rights0, 4 := 四级 ; P_rights0, 5 := 限制级 ; query_data.DatabaseName := CPXSGL; B_create := false; with query_data do begin close; sql.Clear; sql.Text := select * from SysUserRights; try open; B_create := true; except messagedlg(Errormsg0001 + 0006, mtError, mbok, 0); close; B_create := false; end; /如果数据表记录数不对,则重置权限信息 if (RecordCount 6) and (B_create) then begin P_rights1, 0 := 1111111111; P_rights1, 1 := 1111011111; P_rights1, 2 := 1111011011; P_rights1, 3 := 1111001011; P_rights1, 4 := 1111000011; P_rights1, 5 := 0000000011; end else if (RecordCount = 6) and (B_create) then begin first; for I_index := 1 to recordcount do begin P_rights1, I_index - 1 := fieldbyname(rights).AsString; next; end; end; end; end; procedure TRightManageForm.OKBtnClick(Sender: TObject); var I_row: integer; begin 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: with query_data do begin close; sql.Clear; sql.Text := delete from SysUserRights; try execsql; except messagedlg(Errormsg0005 + 0006, mtError, mbok, 0); close; self.Close; end; for I_row := 0 to 5 do begin close; sql.Clear; sql.Text := insert into SysUserRights (id,name,rights) + values( + inttostr(I_row) + , + P_rights0, I_row + , + P_rights1, I_row + ); try execsql; except messagedlg(Errormsg0004 + 0006, mtError, mbok, 0); close; self.Close; end; end; close; self.Close; end; end; procedure TRightManageForm.CLB_rightsClick(Sender: TObject); var I_index, I_name: integer; S_rights: string; begin I_name := lb_name.ItemIndex; if I_name = 0 then /系统管理员 exit; if CLB_rights.Checked5 then CLB_rights.Checked6 := true; S_rights := ; 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: for I_index := 0 to CLB_rights.Items.Count - 1 do begin if CLB_rights.CheckedI_index then S_rights := S_rights + 1 else S_rights := S_rights + 0; end; S_rights := S_rights + 11; P_rights1, I_name := S_rights; end; procedure TRightManageForm.FormPaint(Sender: TObject); begin if not B_create then self.Close; end; procedure TRightManageForm.CancelBtnClick(Sender: TObject); begin Self.Close; end; end. unit OperInfoUnit; /操作员信息录入窗口 interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, DBTables, ComCtrls, Grids, DBGrids, ToolWin, ExtCtrls; type TOperInfoForm = class(TForm) PanelBkGnd: TPanel; ControlBar1: TControlBar; ToolBar1: TToolBar; TB_add: TToolButton; TB_EDIT: TToolButton; TB_DEL: TToolButton; ToolButton5: TToolButton; TB_refresh: TToolButton; TB_EXIT: TToolButton; DBG_BASSMESS: TDBGrid; 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: StatusBar: TStatusBar; DataSource: TDataSource; Query_data: TQuery; Query_del: TQuery; procedure TB_addClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure TB_EDITClick(Sender: TObject); procedure TB_DELClick(Sender: TObject); procedure FormPaint(Sender: TObject); procedure TB_EXITClick(Sender: TObject); procedure TB_refreshClick(Sender: TObject); private B_create: boolean; Private declarations public Public declarations end; var OperInfoForm: TOperInfoForm; implementation uses EditUserUnit, FunctionUnit, MainUnit; $R *.dfm procedure TOperInfoForm.TB_addClick(Sender: TObject); begin if Checkrights(USERRIGHTS, 增加 ) then begin Application.CreateForm(TEditUserForm, EditUserForm); EditUserForm.Caption := 操作员信息(增加) ; EditUserForm.P_state := 0; EditUserForm.C_rights.ItemIndex := 1; EditUserForm.showmodal; EditUserForm.free; tb_refresh.Click; query_data.Last; end else begin messagedlg(Errormsg0006 + 0007, mterror, mbok, 0); exit; 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: end; end; procedure TOperInfoForm.FormCreate(Sender: TObject); begin B_create := false; query_data.DatabaseName := CPXSGL; query_del.DatabaseName := CPXSGL; self.Caption := Application.Title + - 操作员信息设置 ; with query_data do begin close; sql.Clear; sql.Text := SELECT * from Sysuser; try open; B_create := true; except messagedlg(Errormsg0001 + 0001, mtError, mbok, 0); close; B_create := false; end; end; end; procedure TOperInfoForm.TB_EDITClick(Sender: TObject); begin if (Checkrights(USERRIGHTS, 编辑 ) and (query_data.fieldbyname(name).asstring = USERNAME) or (USERRIGHTSNAME = 管理员 ) then begin Application.CreateForm(TEditUserForm, EditUserForm); EditUserForm.P_state := 1; EditUserForm.Caption := 操作员信息(编辑) ; with query_data do begin EditUserForm.E_name.Text := fieldbyname(name).asstring; EditUserForm.E_id.Text := fieldbyname(id).asstring; EditUserForm.E_sex.Text := fieldbyname(sex).asstring; EditUserForm.E_password.Text := fieldbyname(pass).asstring; if fieldbyname(rights).asstring = 管理员 then EditUserForm.C_rights.ItemIndex := 0 else if fieldbyname(rights).asstring = 一级 then EditUserForm.C_rights.ItemIndex := 1 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: else if fieldbyname(rights).asstring = 二级 then EditUserForm.C_rights.ItemIndex := 2 else if fieldbyname(rights).asstring = 三级 then EditUserForm.C_rights.ItemIndex := 3 else if fieldbyname(rights).asstring = 四级 then EditUserForm.C_rights.ItemIndex := 4 else EditUserForm.C_rights.ItemIndex := 5; EditUserForm.E_memo.Text := fieldbyname(memo).asstring; end; EditUserForm.showmodal; EditUserForm.free; tb_refresh.Click; end else begin messagedlg(Errormsg0006 + 0007, mterror, mbok, 0); exit; end; end; procedure TOperInfoForm.TB_DELClick(Sender: TObject); begin if not Checkrights(USERRIGHTS, 删除 ) then begin messagedlg(Errormsg0006 + 0007, mterror, mbok, 0); exit; end; if messagedlg(警告:删除操作员信息数据可能产生严重数据丢失现象,请不要在此删除操作员信息数据 + chr(13) + chr(13) + 删 除数据操作将不可恢复,确定要删除本记录吗? , mtWarning, mbyes, mbno, 0) = mryes then if messagedlg(再次警告:为了保证数据库内数据信息的完整性,请不要在此删除操作员信息数据 + chr(13) + chr(13) + 删除数据操作将不可恢复,确定要删除本记录吗? , mtWarning, mbyes, mbno, 0) = mryes then begin if query_data.FieldByName(rights).AsString = 管理员 then begin messagedlg(Errormsg0007 + 0005, mtError, mbok, 0); exit; end; with query_del do 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: begin close; sql.Clear; sql.Text := delete from Sysuser where id= + query_data.fieldbyname(ID).asstring + ; try execsql; except messagedlg(Errormsg0005 + 0005, mtError, mbok, 0); close; exit; end; messagedlg(Infmsg0002, mtInformation, mbok, 0); close; tb_refresh.Click; end; end; end; procedure TOperInfoForm.FormPaint(Sender: TObject); begin if not B_create then self.Close; end; procedure TOperInfoForm.TB_EXITClick(Sender: TObject); begin Self.Close; end; procedure TOperInfoForm.TB_refreshClick(Sender: TObject); begin OperInfoForm.Query_data.Close; OperInfoForm.Query_data.Open; end; end. unit DepotInfoUnit; /代理商信息录入窗口 interface uses 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, DBTables, Grids, DBGrids, ComCtrls, ToolWin, ExtCtrls; type TDepotInfoForm = class(TForm) PanelBkGnd: TPanel; ControlBar1: TControlBar; ToolBar1: TToolBar; TB_add: TToolButton; TB_EDIT: TToolButton; TB_DEL: TToolButton; TB_refresh: TToolButton; TB_EXIT: TToolButton; DBG_BASSMESS: TDBGrid; Query_del: TQuery; DataSource: TDataSource; Query_data: TQuery; procedure TB_addClick(Sender: TObject); procedure TB_EDITClick(Sender: TObject); procedure TB_DELClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure TB_refreshClick(Sender: TObject); procedure DBG_BASSMESSDblClick(Sender: TObject); procedure TB_EXITClick(Sender: TObject); private B_create: boolean; Private declarations public Public declarations end; var DepotInfoForm: TDepotInfoForm; implementation uses DepotEditUnit, MainUnit, FunctionUnit; $R *.dfm procedure TDepotInfoForm.TB_addClick(Sender: TObject); begin inherited; if not Checkrights(USERRIGHTS, 增加 ) then 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: begin messagedlg(Errormsg0006 + 0007, mterror, mbok, 0); exit; end; Application.CreateForm(TDepotEditForm, DepotEditForm); DepotEditForm.Caption := 代理商信息(增加) ; DepotEditForm.P_state := 0; /DepotEditForm.C_Type.ItemIndex := 1; DepotEditForm.showmodal; DepotEditForm.free; tb_refresh.Click; query_data.Last; end; procedure TDepotInfoForm.TB_EDITClick(Sender: TObject); begin inherited; if not Checkrights(USERRIGHTS, 编辑 ) then begin messagedlg(Errormsg0006 + 0007, mterror, mbok, 0); exit; end; Application.CreateForm(TDepotEditForm, DepotEditForm); DepotEditForm.Caption := 代理商信息(编辑) ; DepotEditForm.P_state := 1; with query_data do begin DepotEditForm.E_name.Text := fieldbyname(name).asstring; DepotEditForm.E_ID.Text := fieldbyname(ID).asstring; DepotEditForm.E_memo.Text := fieldbyname(memo).asstring; end; DepotEditForm.showmodal; DepotEditForm.free; tb_refresh.Click; end; procedure TDepotInfoForm.TB_DELClick(Sender: TObject); begin inherited; if not Checkrights(USERRIGHTS, 删除 ) then begin messagedlg(Errormsg0006 + 0007, mterror, mbok, 0); 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: exit; end; if messagedlg(警告:删除代理商信息数据 可能产生严重数据丢失现象,请不要在此删除代理商信息数据 + chr(13) + chr(13) + 删除数据操作将不可恢复,确定要删除本记录吗? , mtWarning, mbyes, mbno, 0) = mryes then if messagedlg(再次警告:为了保证数据库内数据信息的完整性,请不要在此删除代理商信息数据 + chr(13) + chr(13) + 删除数据操作将不可恢复,确定要删除本记录吗? , mtWarning, mbyes, mbno, 0) = mryes then begin with query_del do begin close; sql.Clear; sql.Text := delete from depot where id= + query_data.fieldbyname(ID).asstring + ; try execsql; except messagedlg(Errormsg0005 + 0011, mtError, mbok, 0); close; exit; end; messagedlg(Infmsg0002, mtInformation, mbok, 0); close; tb_refresh.Click; end; end; end; procedure TDepotInfoForm.FormCreate(Sender: TObject); begin inherited; B_create := false; query_data.DatabaseName := CPXSGL; query_del.DatabaseName := CPXSGL; self.Caption := Application.Title + - 代理商信息设置 ; with query_data do begin close; sql.Clear; sql.Text := SELECT * from depot; try 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: open; B_create := true; except messagedlg(Errormsg0001 + 0008, mtError, mbok, 0); close; B_create := false; end; end; end; procedure TDepotInfoForm.TB_refreshClick(Sender: TObject); var I_index: integer; begin I_index := query_data.RecNo; QUERY_data.Close; QUERY_data.Open; if I_index query_data.RecordCount then query_data.RecNo := I_index else query_data.Last; end; procedure TDepotInfoForm.DBG_BASSMESSDblClick(Sender: TObject); begin TB_edit.Click; end; procedure TDepotInfoForm.TB_EXITClick(Sender: TObject); begin self.Close; end; end. unit GoodsInfoUnit; /商品信息录入窗口 interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, DBTables, Grids, DBGrids, ComCtrls, ToolWin, ExtCtrls; 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: type TGoodsInfoForm = class(TForm) PanelBkGnd: TPanel; Splitter1: TSplitter; ControlBar1: TControlBar; ToolBar1: TToolBar; TB_add: TToolButton; TB_EDIT: TToolButton; TB_DEL: TToolButton; ToolButton5: TToolButton; TB_EXIT: TToolButton; DBG_BASSMESS: TDBGrid; DBG

温馨提示

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

评论

0/150

提交评论