您好,欢迎来到抵帆知识网。
搜索
您的当前位置:首页超市管理系统项目需求规格说明书

超市管理系统项目需求规格说明书

来源:抵帆知识网


超市管理系统项目需求规格说明书

1简介

1.1目的

随着超市的出现,超市管理系统也随着出现,并且随着超市的发展,超市管理系统的功能和性能也随着发展。在早期的超市管理系统中,主要是对正在销售的商品进行管理,在当前的超市管理系统中已不仅仅有该功能,还要加人超市相关的物流、库存等相关操作功能。使用最少的人力,完成最大的销售总额,一直是超市管理系统的目标。

1.2业务范围

系使用超市管理系统的目的就是使用最少的人力,来完成超市中的日常工作。一个典型的超市管理系统,除了应该完成超市中必要的销售工作外,还应该具有后台管理的功能。

和超市相关的就是货物仓库,因为随着超市规模的越来越大,销售商品是非常多的,它们并不能全部放在超市中,需要将它们暂时放在仓库中,所以对仓库的管理是非常有必要的。

为了使超市更加吸引客户,推出了会员优惠活动,通过使用会员卡能够享受商品的优惠价。所以在超市管理系统中还要能够对超市会员进行管理。

根据超市的需要,我们来分析一下超市管理系统中还应该具有哪些功能。按照操作方向,可以将超市管理系统分为商品管理模块、仓库管理模块、销售管理模块和会员管理模块。

商品管理模块:通过该模块可以完成超市中商品的日常管理,其中包括新增一种新销售商品、向超市中进货、接收客户的退货和查询某一商品的功能。

仓库管理模块:通过该模块可以完成和超市匹配场所仓库的管理,其

1

中包括对商品的出库和入库操作、查询仓库中所有商品和查询指定商品等功能。

销售管理模块:通过该模块完成超市日常销售的管理,包括查看用户购买商品,并计算出销售总额,在后台中,还具有计算某一时间段,或者某一商品的销售情况。

会员管理模块:通过该某块可以对超市中会员客户进行管理,包括办理新客户、查询客户、在会员消费时使用会员卡等功能。

1.3术语表

列出本文件中用到的专门术语的定义和外文首字母组词的原词组 如图:

缩写、术语 SMS(Supermarket management system) 解 释 超市管理系统的简称

1.4参考资料

a. 《UML及建模》 作者:郭宁 清华大学出版社

b. 《实时UML与Rational Rose realtime 建模案例剖析》作者:余金

山 电子工业出版社

c. 《软件工程案例教程》 作者:毕硕本 卢桂香 北京大学出版社

2

2系统概述

2.1功能概述

supermarket管理系统例图整体功能概述:

3

前台销售管理用例图:

4

后台销售管理用例图:

库存管理用例图:

5

商品管理用例图:

6

信息查询用例图:

用户管理用例图:

7

2.2系统角色

SMS(超市管理系统)是不对外开放的,它的所有操作用户都是超市内部人员。这些操作用户又分为四类,分别是销售人员,管理员,超级管理员和技术人员。

1.销售人员: 对于销售人员来说,它的操作仅仅为前台销售实行打印清单收款等工作。

2.管理员: 管理员只能够完成商品、仓库和后台销售统计等相关功能。

3.超级管理员: 超级管理员能够对会员、商品、仓库、销售统计等相关功能进行管理。极其系统的维护,系统的扩充等相关操作。 4.技术人员: 对系统进行维护,需要超级管理员的允许。

2.3系统约束

主建模工具:Rational rose

开发环境: Microsoft Visual C++ 6.0环境 数据库: SQL Servers 2005 操作系统: Windows professional Xp 服务器: Windows Server 2008

8

3系统功能描述

本系统提供初始界面前后台管理,前台管理售货员和管理员管理,后台只有验证了管理员身份方能管理。我们解释出前台和后台内部重要部件的功能描述。

3.1前台销售管理:

需求编号:SMS-SELL-1

需求描述:提供给前台售货人员,负责销售,知道价钱。进行,查询,刷码,收款等工作。

SMS-SELL-1-1 输出货物的信息,价钱。提示是否可以出售。 SYS-SELL-1-2 提示操作完毕。打出售货条形码,完毕。

SYS-SELL-1-3 连接打印机,执行条码的打印,清单显示各种货物清单号,数量,单价等信息。

SYS-SELL-1-4 查询当前销售信息,当天信息查询等查询。 SYS-SELL-1-5 查询货物位置,和在销售种类。

3.2后台销售管理:

需求编号:SMS-SELL-2

需求描述:提供给后台销售人员,提供销售管理数据。

SMS-SELL-2-1 登录,验证管理员密码。返回数据,无异常。 SMS-SELL-2-2 异常情况,提示错误。

SMS-SELL-2-3 进入后台连接其他查询界面,进入后管理系统。

9

3.3库存查询:

需求编号:SMS-SELL-3

需求描述:查询仓库储存货物,可以浏览,也可以按照编号查询货物的存储量。也可以查询某项商品是否达到预警缺货,和预警货物提示。

SMS-SELL-3-1 按照库存信息浏览,提示所有库存。 SMS-SELL-3-2 按照商品编号查询所要查询的货物。 SMS-SELL-3-3 按照商品名称查询所要查询的货物。 SMS-SELL-3-4 按照商品条形码查询所要查询货物。 SMS-SELL-3-5 按照进货查询,得到最近进货商品。 SMS-SELL-3-5 货物缺货达到预警时候,窗口弹出提示。

3.4用户管理:

需求编号:SMS-SELL-4

需求描述:对大型以长期的客户进行的内部管理,其中超级管理员能执行添加用户,查询用户,更新用户,删除用户和其间返回数据的各种操作。 SMS-SELL-4-1 登录界面,需要验证超级管理员的身份。 SMS-SELL-4-2 添加用户,实行多用户的增加和信息填入。

SMS-SELL-4-3 提示用户所有信息添加完毕,并且正常入住VIP用户。 SMS-SELL-4-4 提示用户添加失败,提示缺少什么条件,需要办理。 SMS-SELL-4-5 更新用户信息。

SMS-SELL-4-6 删除用户信息,对无用用户进行删除。

SMS-SELL-4-7 提示无法删除用户,有账务未结算或货物积压等原因。 SMS-SELL-4-8 提示是否强行删除,对信息进行保存。

10

3.5信息查询:

需求编号:SMS-SELL-5

需求描述:管理员对超市的各种货物进行查询,有多种方式,多种模块。 SMS-SELL-5-1 按商品名称查询 SMS-SELL-5-1 按商品编号查询 SMS-SELL-5-1 按商品条形码查询 SMS-SELL-5-1 电器类查询 SMS-SELL-5-1 礼品类查询 SMS-SELL-5-1 日用类查询 SMS-SELL-5-1 蔬果类查询 SMS-SELL-5-1 食品类查询 SMS-SELL-5-1 生鲜类查询

3.6商品管理:

需求编号:SMS-SELL-6

需求描述:对商品的各种进出货物的管理。

SMS-SELL-6-1 商品的种类,对一定时间所要的销售商品种类进行确定,管理。

SMS-SELL-6-2 商品入库,提示入库时间。

SMS-SELL-6-3 商品出库,提示出库时间,去往何方是退货或者供应前台销售。

SMS-SELL-6-4 商品进货,记录种类,数量和时间。 SMS-SELL-6-5 商品退货,记录退货物品及其价钱。

SMS-SELL-6-6 上次新增加商品的记录,和下次即将要增加的商品进行记录和评估。

3.7系统维护:

需求编号:SMS-SELL-7

需求描述:对系统建立立下接口,以便以后进行维护和扩充。 SMS-SELL-7-1 验证超级用户密码。提示成功与否。 SMS-SELL-7-2 进入接口进行内核编辑。 SMS-SELL-7-3 更新系统,再次运行。

11

4非功能性需求

4.1性能

精度精确到分(价钱)时间精确到秒,响应时间在0.5秒内。数据的随时更新,每天超市关门时结束更新数据,传送时间基于服务器的性能。

4.2可扩展性

用C++进行实现,用MFC进行可视化编辑,模块容易添加删除。进而有良好的可扩展性,程序使用大量重载和多态,留有接口。对以后扩展留下丰富空间。

4.3安全性

用户要想登录本系统,必须输入正确的用户名及密码,普通用户进入系统后可以浏览部分信息,但无法做任何改动。同样,数据库信息也需输入正确用户名及密码后才能进入系统进行一系列操作。

4.4易用性

针对销售员,执行傻瓜,一切都是自动,提示。针对普通查询用户使用智能、便捷的方法操作系统;针对系统管理员,只要对其进行简单的培训操作,就能解决在操作超市管理系统实际中所遇到的问题。对于技术人员来说,有良好的扩展性和维护性。总体来说本系统是一个面向各个领域用户的简单的软件。输入信息错误或不满足条件时会给出错误提示信息,使各个管理员操作的十分简单。

12

4.5 可维护性

系统组成简单,各个模块间的独立性很高,易于维护。

5数据管理能力要求

5.1列出数据字典

如下图表示:

数据项 数据项关键字 数据项含义 数据类型 数据要求 管理员帐号号 管理员用户名 Account number 用户帐号 整形 1.2.3.4… Username 管理员用户名 字符型 8-100个字符 Password 管理员密码 管理员密码 字符型 1-50个字符 商品种类编号 商品种类名称 商品编号 商品名称 Commodity Class ID Commodity Class Name Commodity ID 商品种类编号 整型 1.2.3.4… 每一种商品种类的名称 每一件商品的编号 字符型 2-50个字符 整型 字符型 1.2.3.4… 2-50 Commodity Name 每一件商品的名称 13

商品种类 Commodity Class Bar code 每一件商品是属于哪类商品 负责打印或扫描查询 整型 1-50个字符 小数型 小数点后取二位(26,2) 条形码 生产厂家 Manufacturer 每一件商品的生产厂家 字符型 100 商品描述 Commodity Depict Commodity Price in 每一件商品的描述 字符型 250 商品进货价格 每一件商品的进货价格 小数型 小数点后取二位(26,2) 商品出售价格 Commodity Price out 每一件商品出售价格 小数型 小数点后取二位(26,2) Custom Pay 客户付款 售货时客户需要付的钱 小数型 小数点后取二位(26,2) Pay return 找钱 应找回客户的钱 小数型 小数点后取二位(26,2) 商品总数量 Commodity Amount Commodity stock Amount Commodity foreg Amount Reg Time 每一件商品的总数量 商品在仓库里的数量 在超市摆放出售的数量 每一件商品上架的时间 14

整型 1.2.3.4… 库存数量 商品前台数量 商品上架时间 整形 1.2.3.4… 整形 1.2.3.4… 日期

商品图片 订单编号 Image 每件商品的图片 BMP 整型 1.2.3.4… Order Form ID 每一个订单的唯一编号 Order Form NUM 每一个订单的序号 订单序号 售出商品商数量 库存上限 库存下限 整形 1.2.3.4… Commodity out 出售每种商品的数num Stock up Stock down 目 库存的上限 库存的下限 整形 1.2.3.4… 整形 整形 1.2.3.4… 1.2.3.4…

5.2 E-R图:

商品数据:

条形码 编码 名称 分类编号 商品档案 库存上限 库存下限 销售价 单位 规格 供应商进货价 15

进货数据,和实体联系:

编号 进货价 进货日期 进货商品进货单 数量 编号 数量 销售价 销售商品销售单 销售日期 管理员 供应商基本信息 超市 商品分类 销售单 进货单 商品档案 入库 服务器 销售

操作管理 16

超市管理系统项目设计说明书 1引言

1.1定义

缩写、术语 SMS(Supermarket management system) SMS-SALE-1 SMS-SALE-1 SMS-INFORMATION-1 解 释 超市管理系统的简称 超市管理系统---销售管理子系统 超市管理系统---销售管理子系统 超市管理系统---信息查询子系统 1.2参考资料

[1] 张海藩著 《软件工程导论》(第5版) 清华大学出版社 2008 [2] 《UML及建模》 作者:郭宁 清华大学出版社 [3] 《实时UML与Rational Rose realtime 建模案例剖析》

作者:余金山 电子工业出版社

[4] 《软件工程案例教程》 作者:毕硕本 卢桂香 北京大学出版社 [5] http://www.docin.com/p-73972497.html [6] http://www.docin.com/app/my/docin/myFavorite [5] http://www.doc88.com/p-30190805306.html

17

2总体设计

2.1需求规定

系统主要可以管理仓库和前台的商品信息,数量,用户信息。

 前台商品管理: 商品售货,包括和何时货物不充足,商品摆放等等。  后台售货管理: 管理仓库,货物种类等管理。

 仓库商品信息管理:该模块用来管理商城的商品信息,包括商品信息录入、修改以及商品信息查询三个功能模块。商品信息输入项有商品编号,商品名称,商品类型,生产时间,厂家地址,出厂价,出售价,折扣价。

 用户管理: 对用户进行管理,有用户添加,修改,删除和更新。  维护:超级管理员和技术人员所应用的。

2.2运行环境

系统模式:本系统采用C/S模式作为开发模式 硬件环境:

服务器端:高性能计算机一台,

运行时内存要求:256MB

客户端:普通计算机 软件环境:

服务器端:Windows XP Professional 操作系统或更高。 客户端:Windows XP 操作系统

数据库服务器:Microsoft SQL Server 2005。

18

2.3基本设计概念和处理流程

注册界面:

注册界面 填写注册信息 N 检查合法性 错误提示 Y 注册成功 数据库

用户打开注册界面—填入登录名(字符型)、用户姓名(字符型)、密码(字符型)、重复密码(字符型)、,4项详细信息—系统检测注册信息是否符合规定,若有错,提示出错信息,返回填写信息界面;若信息符合规定—提示注册成功—注册用户员信息保存在对应数据库的数据表中。

19

登入流程图:

登入界面 输入用户名和密码 N 检查合法性 错误提示 Y 系统界面

若成功登入,即可以检查后台个种服务,不能登入返回原始登录界面,仅仅可以查看前台功能。

20

商品进货流程,在管理知道商品库存的情况下对商品进行进货的管理。

2.4结构

21

销售统计 库存信息浏览 前台售货 库存信息浏览 按库存商品编号查询 按名称查询浏览 按商品条形码浏览 进货信息查询浏览 库存种类浏览 库存进货上货 前台销售管理 库存管理 添加用户信息 SMS 系统维护 查询用户信息 更新用户信息 删除用户信息 后台销售管理 用户管理 按商品名称查询 按商品编号查询 按商品条形码查询 电器类查询 礼品类查询 日用类查询 蔬果类查询 食品类查询 生鲜类查询 商品入库 商品管理 商品出库 商品进货 商品退货 新增商品

22

信息查询

前台售货:

货物管理:

23

24

进货管理中的进货信息信息:

25

进货管理序列图:

商品种类管理:

26

2.5功能需求与程序的关系

前台销售 后台销售 账户管理 货存管理 物品查询 进货管理 系统维护 程序货品 √ √ √ √ √ 程序账户 √ √ 程序货存 √ √ √ √ 程序进货 √ √ √ 程序维护 √ √ 2.6人工处理过程

进货,和库存往前台进货需要人工管理。销售商品的种类休要超级管理员自己去规定。

2.7尚未问决的问题

在进货系统还没有和资金系统联系起来,可以在在本系统的基础上阔家一个资金管理系统,完成自能进货,自能资金管理。

27

3接口设计

3.1用户接口

后台登录:

功能描述: 普通用户需要输入正确的用户名、密码和验证码,才能登录到超市管理系统中(如界面1),否则,弹出提示信息框。

28

进入后台:

功能描述:执行权限后,登入后台系统。各种功能都有下拉菜单,进行各种操作。

29

入库对话框:

功能描述:次对话框记录进货世间,商品种类,人员,等等….

30

3.2外部接口

外部接口包括用户界面、软件接口与硬件接口。

硬件接口:柜台机通过交款模块接口与服务器交换数据,进而对服务器上数据进行操

作。柜台机和服务器上都具备网卡,网卡间用网线连接,之间通过相应的通信协议进行数据交换。

软件接口:本系统中各模块间通过某些特定的类进行数据交换。例如,柜员机中的付

费软件与服务器中的超市管理软件的付费模块进行数据交换。

3.3内部接口

内部接口即模块之间的接口。

模块间进行数据交换和控制协助。例如,本系统的出入库模块,将数据通过中间件传递给数据库处理。当发生入库事件时,外部数据输入至本系统的入库管理模块,模块中的相关类检查数据的合法性。数据传递类将数据传递给数据库处理。当发生出库事件时,外部数据输入至本系统的出库管理模块,模块中的相关类事先提取数据库的相关数据,检查事件是否可行(例如,出库货物的数量是否大于库存,大于则该事件不可行),可行则交付具体的事件类进行处理。

4系统数据结构设计

4.1数据库部分设计:

管理员信息:

31

销售统计:

32

出库信息:

新增商品信息:

33

进库信息:

前台销售货物信息:

34

5系统出错处理设计

5.1出错信息

错误类型 在管理员登陆时,输入错误的对应信息,或无效信息 系统做出的响应 系统给出提示信息:信息错误,无法登陆 解决的方法 (1)重新登录 (2)选择找回信息 提交必要信息,找回信息 (3)重新申请用户号 不执行 按顺序执行操作 查询无效的信息或编码 同时执行超过次数限制的操作,也就时同时执行过多操作。 非法关闭系统或界面 系统给出提示信息:无效信息! 系统给出提示信息:系统忙,请稍候 系统给出提示信息:数据处理中,不能关闭软件,信息未保存! 用户确认后,执行。

5.2补救措施

故障出现后可能采取的措施,包括:

1. 数据库备份,一旦发生原始系统数据丢失,查找备份文件。 2. 发生多次并行操作时,系统自动按顺序执行。 3. 系统可以自动保存数据并且自动启动。

35

5.3系统维护设计

为了清除系统运行中发生的故障和错误,超级管理员要对系统进行必要的修改于完善:为了使系统适应用户环境的变化,满足新提出的需要,也要对原系统做些局部的更新,这些工作系统称为系统维护。

系统维护的任务是改正软件系统在使用过程中发现的隐含错误,扩充在使用过程中用户提出的新的功能及性能要求,其目的是维护软件系统的“正常运作”。这阶 段的文档是软件问题报告和软件修改报告,它记录发现软件错误的情况以及修改软件过程。软件维护包括以下四项:

1) 改正性维护:用户在程序使用期间发现错误,并把他们遇到的问题报告给维护

人员,我们把诊断和改正的过程叫改正维护。

2) 适应性维护:也就是为了和变化的环境适当的配合而进行修改软件活动。 3) 完善性维护:在使用软件的过程中用户往往提出增加新功能或修改已有功能的

建议,为了满足这类要求需要完善性维护。

4) 预防性维护:就是为了改进未来的可维护性或可操作性,或为了给未来的改进

奠定更好的基础而修复软件时,出现了防御性维护。

新系统在正式投入正常运行后,为了预防自然和人对数据的破坏,让系统长期高效地工作,必须适当对系统维护。主要做两方面的工作,日常维护和系统维护。在日常维护中,一个重要的环节是数据的备份和刷新,一定要有计划的、定期的对数据进行更新和备份。恢复数据对应数据的备份功能。在系统维护中,主要是对数据库的结构的改进和对程序代码做适当修改,以适应系统的需求。

36

6心得体会

高坤

经过了一周的课程设计,作为组长的我感受到有些压力,我很努力的想带领组员把这次课程设计做好,但是过程中我们遇到了很多的困难,大家分工完成但是有时候会和不到一起,课程设计我从没有思路到一点点的构思,也通过对别人课程设计的学习分析,然后找出自己的思路确定大体的方向,刚开始的时候以为不会太困难,有了题目就会有解决问题的办法,但是直到实践中才会发现不是那么顺利,作为组长的也感受到了肩上的责任,我不但想让自己把工作做好,也想让组员得到锻炼,我不怕工作的比别人多,但是既然是一次合作,我就希望每个人都能参与进来,大家能做多少做多少,虽然组员之间不能天天在一起做课程设计,但是大家如果有什么想法都会出来交流,也让我感受到了我不是一个人在努力,大家都在努力。课程设计做完了,虽然不知道从专业角度看会被给予怎样的评价,但是我们自己有了小小的成就感,这次实验让我在知识的运用上和同学的交往中都学到很多。同时也让我认识到了自己需要学习的内容还很多,我也希望自己在以后的学习中能更加虚心更加勤奋,使自己做的更好。

刘瑜

一周的课程设计结束了,在这次课程设计中,让我发现了自己很多的不足,我对有些专业知识了解的还不够透彻,设计中遇到很多困难的地方,得到了同组同学很多的帮助,每个人一有新的想法第一时间与我们探讨,交流中让我们都学到了更多,让我们的设计结果更加的完善。同时课程设计过程中运用到的知识不仅仅是书本上的,还有很多老师上课讲的,平时实验运用过的知识,让我了解了书本上的知识死记硬背是没有什么用的,要学会灵活的运用书本上的知识,同时实践中也出现了不少的问题和困难,也都是经历了茫然和烦躁之后大家在一起把它解决了。在这次设计中,我们分担的不同的任务,每个人都很努力的做,都希望可以做的很好,有一个组员生病发高烧,但在课程设计的这段时间里却没有因病而耽误一点,让我们特别特别的感动。这次实验让我感受到了知识就是力量,也让我更加珍惜和同学之间的深厚的友谊。

37

曹仁中

课程设计终于完成了,让我感觉那根儿紧绷的弦可以暂时的松一下了,课程设计的目的是培养我们对知识的灵活运用,训练大家对问题的思考能力同时也考验大家的合作精神,开始由于身体不舒服,大家为我着想不给我太多任务,但是我想我不能落后,我认真完成组长分配给我的任务,我去图书馆借书,查资料认真研究着,这次实验让我深刻的感受到了人多力量大,团结就是力量。这次课程设计考验了大家对平时知识的运用,让我对有些内容印象更加深刻,有些工作给我的印象很深,如果不去实践,我们可以随意的遐想,但是实践告诉我们有些方法是不可以的,不能光靠空想,不论这次课程设计最后的结果是怎样,我努力过,我认真的做,我们也愿意虚心接受老师给指出的错误,希望老师多多指教。虽然几天大家共同的努力让我学到了很多,也进步了很多,但是我清楚的知道这些远远不够,我需要学习的还很多,有些知识我掌握的不是特别透彻,我希望通过自己的努力让自己有更多的进步。

赵天骄

通过这次实验让我深深的了解自己的不足还是很多,我很想把组长分配给我的工作做好,但是实践的过程很困难,有错误总会让我陷入到苦恼中,我了解到自己对平时知识掌握的一点也不踏实,课程设计的过程中有很多都给我留下了深刻的印象,在这次合作中,大家互相都为小组的成员考虑,都想自己多做点贡献,也让我学会了听取别人的意见和礼貌的正确的给别人的想法提出一件和建议,当自己的意见小小的被采纳的时候也会感觉到自己的存在其实是有价值的,也激起我对专业知识学习的兴趣。我也明白了学习的道路还很漫长,每个人都有自己的想法,也有自己的价值,不管对与错敢于说出自己的想法,知道自己错了就应该改正,也要虚心学习组员给出的建议,我感谢组员对我部分建议的采纳和接受,也感谢组员对我错误的纠正,其实只要努力去做用心去做,每个人都可以的,这次实验对于我来说,不仅收获了更多知识,也收获了感动。

38

附录(部分代码)

#include \"stdafx.h\" #include \"ncshop.h\" #include \"DlgPwd.h\" #include \"ADOConn.h\" #ifdef _DEBUG

#define new DEBUG_NEW #undef THIS_FILE

static char THIS_FILE[] = __FILE__; #endif

CDlgPwd::CDlgPwd(CWnd* pParent /*=NULL*/) : CDialog(CDlgPwd::IDD, pParent) { //{{AFX_DATA_INIT(CDlgPwd) m_str1 = _T(\"\"); m_str2 = _T(\"\"); m_str3 = _T(\"\"); //}}AFX_DATA_INIT }

void CDlgPwd::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDlgPwd) DDX_Control(pDX, IDOK, m_Btn1); DDX_Control(pDX, IDCANCEL, m_Btn2); DDX_Text(pDX, IDC_EDIT1, m_str1); DDX_Text(pDX, IDC_EDIT2, m_str2); DDX_Text(pDX, IDC_EDIT3, m_str3); //}}AFX_DATA_MAP }

39

BEGIN_MESSAGE_MAP(CDlgPwd, CDialog) //{{AFX_MSG_MAP(CDlgPwd) ON_EN_CHANGE(IDC_EDIT2, OnChangeEdit2) //}}AFX_MSG_MAP END_MESSAGE_MAP()

///////////////////////////////////////////////////////////////////////////// // CDlgPwd message handlers

BOOL CDlgPwd::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here GetDlgItem(IDC_STATIC1)->SetFont(&ftHeader,TRUE); m_Btn1.SetXIcon(IDI_ICONBUTTON); m_Btn2.SetXIcon(IDI_ICONBUTTON); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }

void CDlgPwd::OnOK() { // TODO: Add extra validation here UpdateData(TRUE); CString strSql; CADOConn adoMain; strSql=\"select * from 管理员基本信息表 where 编号='\"; strSql=strSql+strNo+\"' and 密码='\"; strSql=strSql+m_str1+\"'\"; adoMain.Open(strSql); if(!adoMain.adoEOF()) { if(m_str2!=m_str3) { MessageBox(\"新密码与重新输入的不符!\提示\ARNING);

40

return; } strSql=\"update 管理员基本信息表 set 密码='\"; strSql=strSql+m_str2+\"' where 编号='\"; strSql=strSql+strNo+\"'\"; adoMain.ExecuteSQL(strSql); CDialog::OnOK(); } else MessageBox(\"密码错误!\提示\ adoMain.ExitConnect(); }

void CDlgPwd::OnChangeEdit2() { // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you override the CDialog::OnInitDialog() // function and call CRichEditCtrl().SetEventMask() // with the ENM_CHANGE flag ORed into the mask. // TODO: Add your control notification handler code here }

// DlgDanganBase.cpp : implementation file //

#include \"stdafx.h\" #include \"ncshop.h\"

#include \"DlgDanganBase.h\" #include \"ADOConn.h\" #include \"DlgAll.h\"

#include \"MyChiToLetter.h\" #ifdef _DEBUG

#define new DEBUG_NEW #undef THIS_FILE

static char THIS_FILE[] = __FILE__;

41

#endif

///////////////////////////////////////////////////////////////////////////// // CDlgDanganBase dialog

CDlgDanganBase::CDlgDanganBase(CWnd* pParent /*=NULL*/) : CDialog(CDlgDanganBase::IDD, pParent) { //{{AFX_DATA_INIT(CDlgDanganBase) m_str1 = _T(\"\"); m_str2 = _T(\"\"); m_str3 = _T(\"\"); m_str4 = _T(\"\"); m_str5 = _T(\"\"); m_str6 = _T(\"\"); m_str7 = _T(\"\"); m_str8 = _T(\"\"); m_dbl10 = 0.0; m_dbl9 = 0.0; m_dbl11 = 0.0; m_dbl12 = 0.0; m_dbl13 = 0.0; m_dbl14 = 0.0; m_dbl15 = 0.0; m_str16 = _T(\"\"); //}}AFX_DATA_INIT }

void CDlgDanganBase::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDlgDanganBase) DDX_Control(pDX, IDC_LIST1, m_listMain); DDX_Control(pDX, IDC_BUTTON1, m_Btn5); DDX_Control(pDX, IDMODIFY, m_Btn2);

42

DDX_Control(pDX, IDDEL2, m_Btn3); DDX_Control(pDX, IDC_BTNFIND, m_Btn4); DDX_Control(pDX, IDADD2, m_Btn1); DDX_Text(pDX, IDC_EDIT1, m_str1); DDV_MaxChars(pDX, m_str1, 255); DDX_Text(pDX, IDC_EDIT2, m_str2); DDV_MaxChars(pDX, m_str2, 50); DDX_Text(pDX, IDC_EDIT3, m_str3); DDV_MaxChars(pDX, m_str3, 50); DDX_Text(pDX, IDC_EDIT4, m_str4); DDV_MaxChars(pDX, m_str4, 50); DDX_Text(pDX, IDC_EDIT5, m_str5); DDV_MaxChars(pDX, m_str5, 50); DDX_Text(pDX, IDC_EDIT6, m_str6); DDV_MaxChars(pDX, m_str6, 50); DDX_Text(pDX, IDC_EDIT7, m_str7); DDV_MaxChars(pDX, m_str7, 50); DDX_Text(pDX, IDC_EDIT8, m_str8); DDV_MaxChars(pDX, m_str8, 5); DDX_Text(pDX, IDC_EDIT10, m_dbl10); DDX_Text(pDX, IDC_EDIT9, m_dbl9); DDX_Text(pDX, IDC_EDIT11, m_dbl11); DDX_Text(pDX, IDC_EDIT12, m_dbl12); DDX_Text(pDX, IDC_EDIT13, m_dbl13); DDX_Text(pDX, IDC_EDIT14, m_dbl14); DDX_Text(pDX, IDC_EDIT15, m_dbl15); DDX_Text(pDX, IDC_EDIT16, m_str16); //}}AFX_DATA_MAP }

BEGIN_MESSAGE_MAP(CDlgDanganBase, CDialog) //{{AFX_MSG_MAP(CDlgDanganBase) ON_BN_CLICKED(IDC_BTNFIND, OnBtnfind) ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1) ON_BN_CLICKED(IDADD2, OnAdd2) ON_BN_CLICKED(IDMODIFY, OnModify)

43

ON_BN_CLICKED(IDDEL2, OnDel2) ON_BN_CLICKED(IDC_BUTTON1, OnButton1) ON_EN_KILLFOCUS(IDC_EDIT6, OnKillfocusEdit6) ON_EN_CHANGE(IDC_EDIT6, OnChangeEdit6) ON_EN_UPDATE(IDC_EDIT6, OnUpdateEdit6) ON_EN_CHANGE(IDC_EDIT11, OnChangeEdit11) ON_EN_KILLFOCUS(IDC_EDIT11, OnKillfocusEdit11) ON_EN_UPDATE(IDC_EDIT11, OnUpdateEdit11) //}}AFX_MSG_MAP END_MESSAGE_MAP()

///////////////////////////////////////////////////////////////////////////// // CDlgDanganBase message handlers

void CDlgDanganBase::OnBtnfind() { // TODO: Add your control notification handler code here UpdateData(TRUE); CADOConn adoMain; CString strSql; strSql=\"SELECT 商品档案基本信息表.*, 商品库存数量统计表.进货价, 商品库存数量统计表.零售价,\"; strSql=strSql+\"商品库存数量统计表.会员价, 商品库存数量统计表.业务提成, \" ; strSql=strSql+\"商品库存数量统计表.库存 FROM 商品档案基本信息表 INNER JOIN 商品库存数量统计表 ON \"; strSql=strSql+\"商品档案基本信息表.条形码 = 商品库存数量统计表.条形码 where 商品档案基本信息表.条形码='\"; strSql=strSql+m_str16+\"' or 商品档案基本信息表.商品编码='\"; strSql=strSql+m_str16+\"'\"; adoMain.Open(strSql); adoMain.FillList(&m_listMain,15); adoMain.ExitConnect(); m_listMain.SetItemState(0, LVIS_SELECTED, LVIS_SELECTED); m_str1=\"\"; m_str2=\"\"; m_str3=\"\"; m_str4=\"\";

44

m_str5=\"\"; m_str6=\"\"; m_str7=\"\"; m_str8=\"\"; m_dbl9=0; m_dbl10=0; m_dbl11=0; m_dbl12=0; m_dbl13=0; m_dbl14=0; m_dbl15=0; UpdateData(FALSE); }

BOOL CDlgDanganBase::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here CADOConn adoMain; CString strSql; strSql=\"SELECT 商品档案基本信息表.*, 商品库存数量统计表.进货价, 商品库存数量统计表.零售价,\"; strSql=strSql+\"商品库存数量统计表.库存 FROM 商品档案基本信息表 INNER JOIN 商品库存数量统计表 ON \"; strSql=strSql+\"商品档案基本信息表.条形码 = 商品库存数量统计表.条形码\"; adoMain.Open(strSql); adoMain.InitList(&m_listMain,15); adoMain.FillList(&m_listMain,2); m_Btn1.SetXIcon(IDI_ICONBUTTON); m_Btn2.SetXIcon(IDI_ICONBUTTON); m_Btn3.SetXIcon(IDI_ICONBUTTON); m_Btn4.SetXIcon(IDI_ICONFIND); m_Btn5.SetXIcon(IDI_ICONALL); GetDlgItem(IDC_STATIC2)->SetFont(&ftHeader,TRUE); adoMain.ExitConnect();

45

return TRUE; }

void CDlgDanganBase::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here POSITION pos; int i; pos=m_listMain.GetFirstSelectedItemPosition(); i=m_listMain.GetNextSelectedItem(pos); if (i>=0) { m_str1=m_listMain.GetItemText(i,0); m_str2=m_listMain.GetItemText(i,1); m_str3=m_listMain.GetItemText(i,2); m_str4=m_listMain.GetItemText(i,3); m_str5=m_listMain.GetItemText(i,4); m_str6=m_listMain.GetItemText(i,5); m_str7=m_listMain.GetItemText(i,6); m_str8=m_listMain.GetItemText(i,7); m_dbl9=atof(m_listMain.GetItemText(i,8)); m_dbl10=atof(m_listMain.GetItemText(i,9)); m_dbl11=atof(m_listMain.GetItemText(i,10)); m_dbl12=atof(m_listMain.GetItemText(i,11)); } *pResult = 0; }

void CDlgDanganBase::OnAdd2() { // TODO: Add your control notification handler code here CADOConn adoMain; CString strSql; int i=0; UpdateData(TRUE); strSql=\"insert into 商品档案基本信息表(条形码) values('')\"; adoMain.ExecuteSQL(strSql);

46

strSql=\"insert into 商品库存数量统计表(条形码) values('')\"; adoMain.ExecuteSQL(strSql); strSql=\"SELECT 商品档案基本信息表.*, 商品库存数量统计表.进货价, 商品库存数量统计表.零售价,\"; strSql=strSql+\"商品库存数量统计表.会员价, 商品库存数量统计表.业务提成, \" ; strSql=strSql+\"商品库存数量统计表.库存 FROM 商品档案基本信息表 INNER JOIN 商品库存数量统计表 ON \"; strSql=strSql+\"商品档案基本信息表.条形码 = 商品库存数量统计表.条形码\"; adoMain.Open(strSql); adoMain.FillList(&m_listMain,15); m_listMain.SetItemState(0, LVIS_SELECTED, LVIS_SELECTED); m_str1=\"\"; m_str2=\"\"; m_str3=\"\"; m_str4=\"\"; m_str5=\"\"; m_str6=\"\"; m_str7=\"\"; m_str8=\"\"; m_dbl9=0; m_dbl10=0; m_dbl11=0; m_dbl12=0; m_dbl13=0; m_dbl14=0; m_dbl15=0; UpdateData(FALSE); adoMain.ExitConnect(); }

void CDlgDanganBase::OnModify() { // TODO: Add your control notification handler code here CADOConn adoMain; CString strSql,str; POSITION pos; int i;

47

pos=m_listMain.GetFirstSelectedItemPosition(); i=m_listMain.GetNextSelectedItem(pos); if (i>=0) { str=m_listMain.GetItemText(i,1); } UpdateData(TRUE); strSql=\"update 商品档案基本信息表 set 分类编号='\"; strSql=strSql+m_str1+\"',条形码='\"; strSql=strSql+m_str2+\"',商品编码='\"; strSql=strSql+m_str5+\"',名称='\"; strSql=strSql+m_str6+\"',规格='\"; strSql=strSql+m_str7+\"',单位='\"; strSql=strSql+m_str8+\"',库存上限=\"; str.Format(\"%f\ strSql=strSql+str+\库存下限=\"; str.Format(\"%f\ strSql=strSql+str+\" \"; str=m_listMain.GetItemText(i,1); strSql=strSql+\" where 条形码='\"+str+\"'\"; adoMain.ExecuteSQL(strSql); strSql=\"update 商品库存数量统计表 set 条形码='\"; strSql=strSql+m_str2+\"',进货价=\"; str.Format(\"%f\ strSql=strSql+str+\零售价=\"; str.Format(\"%f\ strSql=strSql+str+\库存=\"; str.Format(\"%f\ strSql=strSql+str; str=m_listMain.GetItemText(i,1); strSql=strSql+\" where 条形码='\"+str+\"'\"; adoMain.ExecuteSQL(strSql); strSql=\"SELECT 商品档案基本信息表.*, 商品库存数量统计表.进货价, 商品库存数量统计表.零售价,\";; strSql=strSql+\"商品库存数量统计表.库存 FROM 商品档案基本信息表 INNER JOIN 商品库存数量统计表 ON \"; strSql=strSql+\"商品档案基本信息表.条形码 = 商品库存数量统计表.条形码\";

48

adoMain.Open(strSql); adoMain.FillList(&m_listMain,15); while(m_listMain.GetItemText(i,1)!=m_str2&&i0) m_listMain.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED); adoMain.ExitConnect(); }

void CDlgDanganBase::OnDel2() { // TODO: Add your control notification handler code here CADOConn adoMain,adoFile; CString strSql; POSITION pos; int i; UINT j=0; pos=m_listMain.GetFirstSelectedItemPosition(); i=m_listMain.GetNextSelectedItem(pos); if (i>=0) { if(MessageBox(\"确信删除这些信息吗?\提示\ while(j49

i=i+1; } } adoMain.ExitConnect(); strSql=\"SELECT 商品档案基本信息表.*, 商品库存数量统计表.进货价, 商品库存数量统计表.零售价,\"; strSql=strSql+\"商品库存数量统计表.会员价, 商品库存数量统计表.业务提成, \" ; strSql=strSql+\"商品库存数量统计表.库存 FROM 商品档案基本信息表 INNER JOIN 商品库存数量统计表 ON \"; adoFile.Open(strSql); adoFile.FillList(&m_listMain,2); adoFile.ExitConnect(); m_listMain.SetItemState(0, LVIS_SELECTED, LVIS_SELECTED); m_str1=\"\"; m_str2=\"\"; m_str3=\"\"; m_str4=\"\"; m_str5=\"\"; m_str6=\"\"; m_str7=\"\"; m_str8=\"\"; m_dbl9=0; m_dbl10=0; m_dbl11=0; m_dbl12=0; m_dbl13=0; UpdateData(FALSE); }

void CDlgDanganBase::OnButton1() { // TODO: Add your control notification handler code here CDlgAll dlg; UpdateData(TRUE); dlg.strTitle=\"商品分类基本信息\"; dlg.strSql=\"select * from 商品分类基本信息表\"; dlg.intOpen=3;

50

if(dlg.DoModal()==IDOK) { m_str1=dlg.strKey; UpdateData(FALSE); } }

void CDlgDanganBase::OnKillfocusEdit6() { // TODO: Add your control notification handler code here CMyChiToLetter ch1; UpdateData(TRUE); ch1.m_blnAllBiG=TRUE; ch1.m_blnSimaple=TRUE; m_str5=ch1.GetLetter(m_str6); UpdateData(FALSE); }

void CDlgDanganBase::OnChangeEdit6() { // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you override the CDialog::OnInitDialog() // function and call CRichEditCtrl().SetEventMask() // with the ENM_CHANGE flag ORed into the mask. // TODO: Add your control notification handler code here OnKillfocusEdit6(); }

void CDlgDanganBase::OnUpdateEdit6() { // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you override the CDialog::OnInitDialog() // function to send the EM_SETEVENTMASK message to the control // with the ENM_UPDATE flag ORed into the lParam mask. // TODO: Add your control notification handler code here

51

OnKillfocusEdit6(); }

void CDlgDanganBase::OnChangeEdit11() { // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you override the CDialog::OnInitDialog() // function and call CRichEditCtrl().SetEventMask() // with the ENM_CHANGE flag ORed into the mask. // TODO: Add your control notification handler code here UpdateData(TRUE); m_dbl12=m_dbl11; m_dbl13=m_dbl11; m_dbl14=m_dbl11; UpdateData(FALSE); }

void CDlgDanganBase::OnKillfocusEdit11() { // TODO: Add your control notification handler code here OnChangeEdit11(); }

void CDlgDanganBase::OnUpdateEdit11() { // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you override the CDialog::OnInitDialog() // function to send the EM_SETEVENTMASK message to the control // with the ENM_UPDATE flag ORed into the lParam mask. // TODO: Add your control notification handler code here OnChangeEdit11(); }

52

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- dfix.cn 版权所有 湘ICP备2024080961号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务