[计算机毕设]基于java的商店POS积分管理系统设计与实现(源代码+项目报告)

项目说明报告

某店POS积分管理系统

——积分失效与数据分析模块的实现

开发一个大而复杂的POS积分管理软件系统,将它进行适当的分解,不但可以降低其复杂性,还可以减少开发工作量,降低开发成本,提高软件生产率。其中, 积分失效处理,是为了刺激客户消费,对于一年以内未购买任何商品的会员,对其积分进行清除处理。数据处理模块,是对商品销售金额等具体数据进行计算处理,以方便企业对各类型商品销售情况等进行数据分析。作为商务用软件,错误检测机制尤为重要。因此,在模块开发时应考虑到各种实发情况的出现,并做出相应处理。在完成程序开发后,需作成单元检测清单(PCL),并进行测试,验证软件的有效性,发现并修补缺陷,以提高软件质量,确保开发出用户满意的软件产品。
POS积分管理软件系统;积分失效;数据分析;单元检测清单
目  录

总页数:30页

——积分失效与数据分析模块的实现.. 0

1     引言... 1

1.1     课题背景... 1

1.2     选题意义... 1

1.3     研究方法... 1

2     分析工程... 1

2.1     需求分析... 1

2.2     系统分析... 2

2.2.1     系统构成... 2

2.2.2     系统模块... 2

2.2.3     系统数据分析... 2

3     设计工程... 3

3.1     外部设计(概要设计) 3

3.1.1     数据库设计... 3

3.1.2     数据流程图... 7

3.2     内部设计(详细设计) 8

3.2.1     积分失效详细代码设计.. 8

3.2.2     数据分析模块详细代码设计.. 13

4     制造工程... 14

4.1     开发环境... 14

4.2     程序开发... 15

4.2.1     程序流程图... 15

4.2.2     建立JDBC-ODBC桥接器... 17

4.2.3     读取INI文件... 17

4.2.4     对数据库操作... 18

4.2.5     对文件操作... 19

5     测试工程... 20

5.1     测试准备... 20

5.1.1     积分失效模块单元检测表... 20

5.1.2     分析用POS明细作成模块单元检测表... 23

5.2     测试实施... 24

5.2.1     测试页面截图... 24

5.2.2     测试结果数据... 26

结    论... 27

参考文献... 28

致    谢... 29

声    明... 30

  1. 引言
    1. 课题背景

随着社会科学技术突飞猛进的发展,计算机的应用已经普及到经济和社会的各个领域。长期以来人们所使用的传统的单纯凭借人力进行管理的销售方式,已经无法适应当今社会的现状,同时也存在着很多弊端,如成本较高、安全性低、效率难以提高等。因此,作为计算机应用的一个方面,利用其强大的运算能力,进行销售管理具有无法替代的优势。其高效、可靠、稳定等优点已得到了消费者和销售企业一致的好评。

    1. 选题意义

不同类型的销售行业有自己的特点,对于零售业而言,是一个成本敏感,同时具有大规模的分布性和灵活多变的特点。因此,如何处理好在一个高度分布的网络环境中,多种软硬件平台的管理、部署和升级,适应实际的需求变化,为用户提供一种可靠的低成本运作模式,成为零售业解决方案成功的关键。

针对这一情况,希望研究出一套POS积分管理系统,用来对商品销售情况、会员消费情况、分店经营情况等信息进行系统高效的管理。降低甚至消除不必要的成本和费用,给客户带来更大效益。而本课题的研究正是要在这个系统之下开发出积分失效和数据分析两个模块。其中积分失效模块对一年内未购买任何物品的会员,进行积分过期失效处理。这样做可以刺激用户消费,提高销售业绩。而数据分析模块则是对商品销售信息进行分析,对各种类型的商品销售情况,销售利润做成数据资料以供外部分析使用。

    1. 研究方法

作为以JAVA语言为基础的商务型软件,此次研究主要采用面向对象的方法进行软件开发。尽可能模拟人类习惯的思维方式来分析和解决问题,保证软件系统的稳定性和可复用性以及良好的维护性。在程序中,采用了JDBC—ODBC桥的方式,进行数据库连接。另外,由于是商务软件,就要考虑到用户在使用该系统时有可能出现的各种错误,并针对这些错误制定出解决的方案。整个开发过程分为四个部分,包括分析工程、设计工程、制造工程、测试工程。下面将详细对上述过程进行细致的描述。

  1. 分析工程
    1. 需求分析

由于该百货店实行会员管理模式,每个会员都有代金消费点数,其中就存在部分会员在获得消费点后,因某些原因长期未能进行消费,但仍要对他们的消费点进行管理,这就给整个管理系统带来了负担,同时也占用了很多不必要的资源,无形中增大了管理的成本。为了解决这个问题,就需要建立一个模块来定期检查会员消费情况,对限定时间内未消费的用户进行积分失效处理,以节约系统资源,同时,也在一定程度上刺激会员消费。

把握市场动向,提高销售利润是企业的最终目标。在企业管理日趋科学化的今天,如何准确及时地进行生产经营决策是销售企业面临的严峻问题。要求决策者准确及时地捕捉到销售信息,分析销售情况,随时根据历史的销售情况,对下一步的生产经营科学地进行决策。销售分析需要大量的基础数据,但是如果将原始的销售信息直接用于分析又会给分析工作带来很大不便,是效率无法提高。因此就需要将原始销售信息进行整理,处理成决策分析所需的数据资料,进行保存。

从会员信息表中,找出一年前注册,当前点数不为0,且一年内未进行消费的用户,对其积分进行清零处理。

    • 数据分析

对每日POS消费记录文件进行数据处理,生成用于外部数据分析的明细文件

      1. 系统数据分析

    会员数据:包括会员的基本信息数据(入会日期,会员编码,姓名,住址,联系电话,出生年月日,会员种类,入会店铺编码等等);

    积分数据:包括积分卡基本信息数据(会员编码,现在积分点,累计积分点,输出累计积分点,增加累计积分点,基本累计积分点,购买次数,购买累计金额等等);

    店铺数据:包括店铺基本信息数据(店铺编码,店铺名称,DOMINANT编码,住址,联系电话等等);

用于进行数据分析处理的原始销售信息存放于一个名为FSP_EFI010.DAT的文件中,其数据格式如表1所示:

表1  原始销售信息文件数据格式

数据名称

数据字段长度(位)

店铺CODE

6

Terminal NO

6

交易序列号

5

交易日期

8

交易时间

2

会员NO

13

JAN CODE

13

商品名称

不定

消费点数

3

消费金额

6

会员价格

4

退货交易

1

折扣价

4

贴现价

4

按比例折扣价

4

按比例贴现价

4

按比例M&M值

4

GP CODE

4

部门 CODE

6

  1. 设计工程
    1. 外部设计(概要设计)
      1. 数据库设计

    数据库表结构的设计在每一个开发项目中都是非常重要的一个部分,数据库表设计的好坏直接关系到开发过程中代码实现的功能强大与否,是否包含齐备客户所需求的功能。因此现在来介绍该模块所用到的数据库表的详细设计。各数据表定义如表2所示

表2 数据表定义

序号

表参数名

表名说明

1

FSPTB_MEMBER

记录会员基本信息

2

FSPTB_MEMBER_STATUS

记录会员状态信息

3

FSPTB_POINT

记录会员点数基本信息

4

FSPTB_POINT_JNL

记录会员点数更新履历

5

FSPTB_POINT_RIREKI

记录会员当日消费点数信息

表3 FSPTB_MEMBER(会员)

主键

列(属性)名

中文名称

类型

宽度

是否允许为空

MEMBER_CODE

会员编码

Char

13

NOT NULL

NYUKAI_YMD

入会年月日

Char

8

NULL

SHIMEI_KANA_S

日语假名性

Char

16

NOT NULL

SHIMEI_KANA_N

日语假名名

Char

16

NOT NULL

SHIMEI_KANJI_S

中文姓

Char

32

NOT NULL

SHIMEI_KANJI_N

中文名

Char

32

NOT NULL

TEL_SHIGAI_1

电话1(市外)

Char

8

NOT NULL

TEL_SHINAI_1

电话1(市内)

Char

8

NOT NULL

TEL_BANGO_1

电话1(其它)

Char

8

NOT NULL

TEL_SHIGAI_2

电话2(市外)

Char

8

NOT NULL

TEL_SHINAI_2

电话2(市内)

Char

8

NOT NULL

TEL_BANGO_2

电话3(其它)

Char

8

NOT NULL

TEL_SHIGAI_3

电话3(市外)

Char

8

NOT NULL

TEL_SHINAI_3

电话3(市内)

Char

8

NOT NULL

TEL_BANGO_3

电话3(其它)

Char

8

NOT NULL

BIRTH_DAY

出生年月日

Char

8

NULL

MEMBER_KBN

会员种类

Char

1

NULL

FM_KBN

性别

Char

1

NULL

MEMBER_ZIP

邮政编码

Char

8

NOT NULL

ADDR_1

地址1

Char

32

NOT NULL

ADDR_2

地址2

Char

48

NOT NULL

ADDR_3

地址3

Char

48

NOT NULL

ADDR_4

地址4

Char

48

NOT NULL

NYUKAI_TENPO

入会的店铺编码

Char

6

NULL

MUKOU_KBN

起效种类

Char

1

NULL

HOLD_CODE

家庭所属代码

Char

13

NULL

ADD_YMDHMS

注册时间

Char

14

NULL

ADD_TANTOU

注册负责人ID

Char

6

NULL

UPD_YMDHMS

更新时间

Char

14

NULL

UPD_TANTOU

更新负责人ID

Char

6

NULL

表4 FSPTB_MEMBER_STATUS(会员状态)

主键

列(属性)名

中文名称

类型

宽度

是否允许为空

MEMBER_CODE

会员编码

Char

13

NOT NULL

OLD_MEMBER_CODE

旧会员编码

Char

13

NULL

DOMINANT_CODE

优先级别编码

Char

3

NOT NULL

TENPO_CODE

店铺号码

Char

6

NOT NULL

OLD_DOMINANT_CODE

旧优先级别编码

Char

3

NOT NULL

OLD_TENPO_CODE

旧店铺编码

Char

6

NOT NULL

UPD_KBN

更新种类

Char

1

NULL

MSTS_AUTO_ID

记录番号

Numeric

15

NULL

表5 FSPTB_POINT(积分)

主键

列(属性)名

中文名称

类型

宽度

是否允许为空

MEMBER_CODE

会员编码

Char

13

NOT NULL

OLD_MEMBER_CODE

旧会员编码

Char

13

NULL

YUTAI_RANK

优惠等级

Char

2

NULL

NOW_POINT

现在积分点

9

8

NULL

RUIKEI_POINT

累计积分点

9

8

NULL

OUT_RUIKEI_POINT

支出的累计积分点

9

8

NULL

ADD_RUIKEI_POINT

增加的累计积分点

9

8

NULL

KIHON_RUIKEI_POINT

基本累计积分点

9

8

NULL

BONUS_RUIKEI_POINT

奖励累计积分点

9

8

NULL

KAIAGE_R

最后交易时间

Char

8

NULL

TUKI_KAIAGE_M

每月交易金额

9

10

NULL

BEFORE_TUKI_KAIAGE_M

上月交易金额

9

10

NULL

KAIAGE_F

交易次数

9

5

NULL

KAIAGE_M

交易金额

9

10

NULL

MEMBER_WARIBIKI_M

打折累计金额

9

10

NULL

KOUNYU_M

购买金额

9

10

NULL

MUKOU_KBN

起效种类

Char

1

NULL

ADD_YMDHMS

登陆时间

Char

14

NULL

ADD_TANTOU

登陆负责人ID

Char

6

NULL

UPD_YMDHMS

更新时间

Char

14

NULL

UPD_TANTOU

更新负责人ID

Char

6

NULL

SYSTEM_UPD_YMDHMS

系统更新时间

Char

14

NULL

表6 FSPTB_POINT_JNL(积分更新记录)

主键

列(属性)名

中文名称

类型

宽度

是否允许为空

TENPO_CODE

店舗CODE

Char

6

NOT NULL

MEMBER_CODE

会员CODE

Char

13

NOT NULL

CLIENT_NO

顾客NO

Char

8

NOT NULL

ADD_POINT_B

当日追加POINT(更新前)

9

6

NOT NULL

OUT_POINT_B

当日支出POINT(更新前)

9

6

NOT NULL

NOW_POINT_B

現在POINT(更新前)

9

8

NOT NULL

BONUS_POINT_B

当日奖励POINT(更新前)

9

8

NOT NULL

OUT_KAIAGE_M_B

当日減算金額(更新前)

9

10

NOT NULL

ADD_KAIAGE_M_B

当日加算金額(更新前)

9

10

NOT NULL

TUKI_KAIAGE_M_B

月购买金額(更新前)

9

10

NOT NULL

ADD_POINT_A

当日追加POINT(更新后)

9

6

NOT NULL

ADD_RIYU_CODE

追加理由CODE

Char

2

NOT NULL

OUT_POINT_A

当日支出POINT(更新后)

9

6

NOT NULL

OUT_RIYU_CODE

支出理由CODE

Char

2

NOT NULL

NOW_POINT_A

現在POINT(更新后)

9

8

NOT NULL

BONUS_POINT_A

当日奖励POINT(更新后)

9

8

NOT NULL

OUT_KAIAGE_M_A

当日減算金額(更新后)

9

10

NOT NULL

ADD_KAIAGE_M_A

当日加算金額(更新后)

9

10

NOT NULL

TUKI_KAIAGE_M_A

月购买金額(更新后)

9

10

NOT NULL

KURIKOSHI_POINT

转入POINT

9

8

NOT NULL

TODAY_POINT

本日最終POINT

9

8

NOT NULL

UPD_YMDHMS

更新日期

Char

14

NOT NULL

UPD_TANTOU

担当者CODE

Char

6

NOT NULL

JNL_AUTO_ID

记录ID

Numeric

15

NOT NULL

表7 FSPTB_POINT_RIREKI(积分当日消费记录)

主键

列(属性)名

中文名称

类型

宽度

是否允许为空

MEMBER_CODE

会员CODE

Char

13

NOT NULL

YMD

日期

Char

8

NOT NULL

YUTAI_RANK

优待等级

Char

2

NULL

KIHON_POINT

当日基本POINT

9

6

NULL

BONUS_POINT

当日奖励POINT

9

6

NULL

ADD_POINT

当日追加POINT

9

6

NULL

OUT_POINT

当日支出POINT

9

6

NULL

NOW_POINT

現在POINT

9

8

NOT NULL

UPD_YMDHMS

更新日期

Char

14

NOT NULL

UPD_TANTOU

担当者CODE

Char

6

NULL

      1. 数据流程图

FSPTB_POINT_JNL

FSPTB_POINT_RIREKI

FSPTB_POINT

FSPTB_MEMBER

FSPTB_MEMBER_STATUS

FSPTB_LOG

积分失效模块

CSV

图1 积分失效处理流图

FSP_EFI010.DAT

POSYYYYMMDDXX.DAT

分析数据作成模块

FSPTB_LOG

图2 数据分析模块流图

图形注释:

       :数据文件            :数据库表

       :功能模块            :数据流

图3 注释图

    1. 内部设计(详细设计)
      1. 积分失效详细代码设计
  1. 程序初期设定。

如果出现错误,输出错误信息,程序结束。

  1. 输出开始日志记录。

    (1)如果出现错误,程序结束。

    (2)否则,取得系统前一年日期。

  1. 处理日期check。

    (1)读入初始设定的会员信息数据文件。

    • 如果出现错误,输出错误信息,程序结束。 
    • 否则,取得POINT实效日期。

(2)设定会员信息数据文件。

     系统日期不是POINT实效处理日期的场合,输出信息,程序结束。

  1. POINT实效处理。
    • CSV文件读入。
      1. 如果出现错误,输出错误信息,程序结束。 
      2. 取得文件名。
      3. 打开CSV文件。
    • POINT失效对象抽出(1)
  1. 从FSPTB_POINT中读取会员CODE。

条件:最后购买日期在一年前&&现在POINT不为0。

      失效区分有效。

  1. 抽出失效区分有效数据。
    • POINT失效对象抽出(2)
  1. 从FSPTB_POINT和FSPTB_MEMBER中读取会员CODE。

条件:会员CODE匹配;入会日期在一年以前;失效区分有效;买入次数为0;现在POINT不为0。

  1. 返回值不为空。
    • 各表的更新处理
    1. 从FSPTB_POINT中取出匹配会员的数据。

 条件:会员编号是匹配会员编号。

    1. 匹配会员的POINT信息更新。

参照“POINT信息项目移动表”。

    1. 从FSPTB_MEMBER中取出匹配会员的数据。

条件:会员编号是匹配会员编。

      1. 匹配用户数据的店铺CODE为NULL的场合。

     输出信息,处理终止。

      1. 否则,取得店铺CODE。
    1. 从FSPTB_POINT_RIREKI中取出匹配会员的POINT履历信息数据。

条件:会员编号是匹配会员编号;日期在系统日期之前。

      1. 如果出现错误,输出错误信息,程序结束。 
    1. 在FSPTB_POINT_JNL中追加数据。
      1. 匹配用户的POINT更新日志不存在。

      参照“POINT更新日志新建项目移动表”。

      1. 匹配用户的POINT更新日志存在。

参照“POINT更新日志更新项目移动表”。

    1. FSPTB_POINT_RIREKI的追加更新。

条件:会员编号是匹配会员编号;日期在系统日期之前。

      1. 通过(4)取得的POINT履历是EOF的情况,新追加POINT履历。

参照“POINT履历(追加)项目移动表”。

      1. 通过(4)取得的POINT履历不是EOF的情况,存储初始状态,并更新,参照“POINT履历(更新)项目移动表”。
    1. 在FSPTB_POINT中检索匹配的用户数据。

条件:用户CODE是匹配用户CODE;

    1. 不是EOF的情况,程序结束。
    2. 如果是EOF ,在FSPTB_MEMBER追加新的数据。

参照“用户数据项目移动表”。

    1. CSV文件数据输出。

参照“CSV文件项目移动表”。

  1. 输出结束日志。

表8 POINT信息项目移动表

移动表名称

移动操作地址名称

A

FSPTB_POINT

POINT信息项目移动表

B

C

D

编辑项目名称

原项目名称

A

B

C

D

移动方式

现在POINT

0

消费累计POINT

消费累计POINT+当前POINT

担当者CODE

NULL

系统更新时间

执行操作时系统时间

表9 POINT更新日志新建项目移动表

移动表名称

移动操作地址名称

A

FSPTB_MEMBER

POINT更新日志新建项目移动表

B

FSPTB_POINT

C

D

编辑项目名称

原项目名称

A

B

C

D

移动方式

店铺CODE

店铺CODE

Y

FSPTB_MEMBER的店舗CODE的右3位数的值

  • 小于10的情况,该值加5个空格。
  • 小于100的情况,该值加4个空格。
  • 大于100的情况,该值加3个空格。

会员CODE

会员CODE

Y

同项目

顾客NO

NULL

当日追加POINT(更新前)

0

当日支出POINT(更新前)

0

现在POINT(更新前)

现在POINT

Y

同项目

当日获赠POINT(更新前)

0

当日减算金额(更新前)

0

当日加算金额(更新前)

0

月中购买金额(更新前)

0

当日追加POINT(更新后)

0

追加理由CODE

NULL

当日追加POINT(更新后)

现在POINT

Y

同项目

支出理由CODE

“04”

现在POINT(更新后)

0

当日奖励POINT(更新后)

0

当日减算金额(更新后)

0

当日加算金额(更新后)

0

月中购买金额(更新后)

0

转入POINT

0

本日最终POINT

0

更新时间

当前的时间

执行者CODE

NULL

记录号

自动获取

表10 POINT更新日志更新项目移动表

移动表名称

移动操作地址名称

A

FSPTB_MEMBER

POINT更新日志更新项目移动表

B

FSPTB_POINT

C

FSPTB_POINT_RIREKI

D

编辑项目名称

原项目名称

A

B

C

D

移动方式

店铺CODE

店铺CODE

Y

FSPTB_MEMBER的店舗コード的右3位数的值

  • 小于10的情况,该值加5个空格。
  • 小于100的情况,该值加4个空格。
  • 大于100的情况,该值加3个空格。

会员CODE

会员CODE

Y

同项目

顾客NO

NULL

当日追加POINT(更新前)

当日追加POINT

Y

同项目

当日支出POINT(更新前)

当日支出POINT

Y

同项目

现在POINT(更新前)

现在POINT(

Y

同项目

当日获赠POINT(更新前)

当日获赠POINT

Y

同项目

当日减算金额(更新前)

0

当日加算金额(更新前)

0

月中购买金额(更新前)

0

当日追加POINT(更新后)

同项目

追加理由CODE

NULL

当日追加POINT(更新后)

当日追加POINT

Y

同项目

支出理由CODE

“04”

现在POINT(更新后)

0

当日奖励POINT(更新后)

0

当日减算金额(更新后)

0

当日加算金额(更新后)

0

月中购买金额(更新后)

0

转入POINT

0

本日最终POINT

0

更新时间

前一日的时间

执行者CODE

NULL

记录号

自动获取

表11 POINT履历(追加)项目移动表

移动表名称

移动操作地址名称

A

FSPTB_MEMBER

POINT履历(追加)项目移动表

B

FSPTB_POINT

C

D

编辑项目名称

原项目名称

A

B

C

D

移动方式

会员CODE

会员CODE

Y

同项目

日期

执行时的时间

优待等级号

优待等级号

Y

同项目

当日基本POINT

0

当日奖励POINT

0

当日追加POINT

0

当日支出POINT

现在POINT

Y

同项目

现在POINT

0

更新时间

执行时时间

执行者CODE

NULL

表12 POINT履历(更新)项目移动表

移动表名称

移动操作地址名称

A

FSPTB_MEMBER

POINT履历(更新)项目移动表

B

C

D

编辑项目名称

原项目名称

A

B

C

D

移动方式

当日支出POINT

Y

当日支出POINT+现在POINT

现在POINT

0

执行者CODE

Y

NULL

更新日期

执行操作时的日期

表13用户数据项目移动表

移动表名称

移动操作地址名称

A

FSPTB_MEMBER

用户数据项目移动表

B

C

D

编辑项目名称

原项目名称

A

B

C

D

移动方式

会员CODE

Y

同项目

旧会员CODE

NULL

Dominant CODE

NULL

店铺CODE

店铺CODE

同项目

旧Dominant CODE

NULL

旧店铺CODE

NULL

更新区分

“1”

记录号

自动获取

      1. 数据分析模块详细代码设计
  1. 初期处理。

(1)共通文件(INI)取得。

           如存在错误,输出错误信息,程序结束。

    (2)输出开始日志。

  1. 分析用POS明细文件作成。

    (1)文件检查处理。

    • 检查POS明细文件路径。

              如果不存在,输出错误日志,程序结束。

    • 生成POS明细文件。

              如果超过99个,直接跳转到步骤3。

    • 检查POS项目信息文件路径。

              如果不存在,输出错误日志,程序结束。

    • 检查POS项目信息文件。

              如果不存在,输出错误日志,程序结束。

    (2)读取POS项目信息文件。

         当数据读完,结束。

    (3)POS明细文件CODE作成。

    (4)参照“项目数据移动表”。

  1. 结束处理。

    输出结束日志。

表14项目数据移动表

移动表名称

移动操作地址名称

A

FSP_EFI010.DAT

项目数据移动表

B

C

D

编辑项目名称

原项目名称

A

B

C

D

移动方式

record区分

record区分

Y

同项目

店铺CODE

店铺CODE

Y

同项目

register NO

terminal NO

Y

店铺CODE

店铺CODE

Y

同项目

receipt NO

购买编号

Y

购买日期

购买日期

Y

同项目

购买时间

购买时间

Y

同项目

会员CODE

会员CODE

Y

同项目

商品分类号1

大分类号

Y

JAN CODE的左1~2位

商品分类号2

中分类号

Y

JAN CODE的左3~4位

商品分类号3

小分类号

Y

JAN CODE的左5~7位

商品分类号4

细分类号

Y

JAN CODE的左8~13位

扩充预留

“0”

JAN CODE

Y

如果FSP_EFI010.DAT中的JANCODE="0000000000000", JANCODE=""9999999"+GPCODE的右2位+部门CODE的右4位.否则, JANCODE等于FSP_EFI010.DAT中JANCODE

商品名

商品名

Y

同项目

购买点数

购买点数

Y

同项目

购买金额

Y

FSP_EFI010.DAT中的‘消费金额’-折扣价-贴现价-按比例折扣价-按比例贴现价-按比例M&M值

折扣价

"0000000"

特价区分

FSP_EFI010.DAT中的‘会员价格’不等于0则设为“1”,否则设为“0”

内税符号

GPCODE的右2位=“90”且购买点数=“000”且部门CODE的右4位=“9701”或“9702”或“9703”,则置“1”; 退货交易=”1”或者购买金额的计算结果<0,则置“1”;其他情况置位空格

原价

"000000"

备注

两个空格

  1. 制造工程
    1. 开发环境

开发环境为Eclipse3.2,JDK包采用版本为jdk1.5.0_06。OBDC数据源为tokyosuper。数据库登录帐号:sa ;密码:123456。

    1. 程序开发
      1. 程序流程图

图4 积分失效模块流程图

图5 数据分析模块模块流程图

      1. 建立JDBC-ODBC桥接器

try {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");/*注册数据库驱动程序为    SQL JDBC-ODBC驱动*/

       }

       catch (ClassNotFoundException e) {               /*如无法找到该驱动,则捕获异常,并输出错误*/

           // TODO Auto-generated catch block

           e.printStackTrace();

       }

      1. 读取INI文件

INI文件中记录了本系统中所有数据文件的存储地址。因此,在开始模块编码前,一定要先读取该文件。专门建立一个类Iniread.java来实现各种功能。具体如下:

成员变量:

FileReader inOjb;       //创建一个用来读取字符文件的对象

BufferedReader br;      //创建一个使用默认大小输入缓冲区的缓冲字符输入流。

Connection con;         //与特定数据库的连接

Statement stmt;        //用于执行静态 SQL 语句并返回它所生成结果的对象

String url;             //定义数据源名

String user;            //定义数据源的login name

String password;        //定义数据源的密码

/*构造方法(参数是为了进行数据库连接,在读取INI文件过程中如出现错误则将错误                                日志输入数据库的LOG表)*/

Iniread(String url,String user,String password){

inOjb=new FileReader("FSP.INI");

br=new BufferedReader(inOjb);

}

/*此方法用于获取数据文件在服务器上的地址,参数是数据文件名*/

public String getaddress(String a)    {

str=br.readLine();     //读取INI文件中的一行

}

      1. 对数据库操作

//向数据库插入一条数据,此处temp除可进行插入操作外,还能进行更新,删除操作

String url="jdbc:odbc:tokyosuper"; //定义数据源名

String user="sa";                  //定义数据源的login name

String password="123456";          //定义数据源的密码

String temp="INSERT INTO FSPTB_LOG(P_Sel,P_Msg,P_AppNM,P_FuncNM,P_JobNM,p_ErrDetail,P_InIFile) VALUES('L','读取文件错误','查找的地址不存在','iniread ','iniread ','FSP.INI读取出错','FSP.INI')";

try {

con=DriverManager.getConnection(url,user,password);

stmt=con.createStatement();

stmt.executeUpdate(temp);

con.close();

}

catch (SQLException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

//在数据库中查询数据查询的结果全部存放于ResultSet的对象中,利用next方法可以读取结果集的第一行,以后每执行一次,向下跳转一行。getxxx方法可以获得结果集中的某一项其中xxx为该项的属性,如String等

try {

           con=DriverManager.getConnection(url,user,password);

           stmt=con.createStatement();

           String temp="SELECT MEMBER_CODE,TENPO_CODE FROM FSPTB_MEMBER WHERE MEMBER_CODE='"+member+"'";

           ResultSet rs=stmt.executeQuery(temp);

           rs.next();

           String tenpo=rs.getString("TENPO_CODE");

} catch (SQLException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       }

      1. 对文件操作

//判断文件路径或文件是否存在,File的exists方法返回是ture则存在。

File posdata=new File(Pos_Data);

File outposprefix=new File(Pos_Data,Out_Pos_PreFIX);

posdata.exists();

outposprefix.exists();

//打开文件,逐条读取

FileReader fr=new FileReader(positem.getPath());

BufferedReader inOjb = new BufferedReader(fr);

str=inOjb.readLine();

while(str!=null)

           {

}

//打开文件写入数据

String address=file.getPath();

       FileWriter fw;

       try {

           fw = new FileWriter(address,true);//打开address所表示的文件,ture表示在该文件末尾写入数据,而非文件的开始处

           BufferedWriter out=new BufferedWriter(fw);

           //从新的一行开始写入          

out.newLine();

           //写入新的一行信息

           out.write(str,0,str.length());

           out.close();

           fw.close();

       } catch (IOException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       }

  1. 测试工程
    1. 测试准备

本系统属于一款商务应用型软件,因此,对各种可能出现的错误情况要有很高的检测能力,并进行响应处理。所以,在软件开发完成后,为了检验是否达到客户要求需要进行全面的测试,包括程序的逻辑处理,输入/输出处理,边界条件判断,异常处理等。在进行测试前,应针对上述各情况填写一份全面的单元测试检测清单。

      1. 积分失效模块单元检测表

表 15 积分失效模块单元检测表

项目名称

POINT失效

项目标记名

FSPB1400

测试编号

测试内容

测试结果

***异常测试***

*共通文件(INI)取得*

1

INI文件不存在的场合

向数据库日志表输出”INI文件地址错误。”消息。

程序结束

2

INI文件打开出错,或INI文件不可打开

向数据库日志表输出”INI文件地址错误。”消息。

程序结束

3

在INI文件中,文件地址、标记值、内容值不存在

向数据库日志表输出”INI设定错误。”消息。

程序结束

4

POINT失效处理日期取得错误

向数据库日志表输出”非失效处理日期。”消息。

程序结束

*CSV文件准备处理*

5

无法取得CSV文件名

向数据库日志表输出”POINT失效处理失败。”消息。

程序结束

6

无法打开CSV文件

向数据库日志表输出”POINT失效处理失败。”消息。

程序结束

*数据库更新处理时共通错误*

7

各表更新处理时出错

向数据库日志表输出”POINT失效处理失败。”消息。

程序结束

*检索、获取数据时错误*

8

店铺CODE取得错误

向数据库日志表输出“ ‘店铺CODE未设定,会员号:’+检索的会员号”消息。

数据不更新,程序结束

9

POINT信息取得错误

向数据库日志表输出“ ‘POINT信息获取失败,会员号:’+检索的会员号”消息。

数据不更新,程序结束

10

POINT履历取得错误

向数据库日志表输出“ ‘POINT履历获取失败,会员号:’+检索的会员号”消息。

数据不更新,程序结束

11

会员信息取得错误

向数据库日志表输出“ 会员信息获取失败,会员号:’+检索的会员号”消息。

数据不更新,程序结束

12

会员数据检索失败

向数据库日志表输出“ 会员数据检索失败,会员号:’+检索的会员号”消息。

数据不更新,程序结束

*插入、更新数据时错误*

13

POINT履历插入错误

向数据库日志表输出“ POINT履历插入失败,会员号:’+检索的会员号”消息。

原数据不改变,程序结束

14

会员履历更新错误

向数据库日志表输出“ 会员履历插入失败,会员号:’+检索的会员号”消息。

原数据不改变,程序结束

15

POINT更新日志插入失败

向数据库日志表输出“ POINT更新日志插入失败,会员号:’+检索的会员号”消息。

原数据不改变,程序结束

16

会员数据更新失败

向数据库日志表输出“ 会员数据更新失败,会员号:’+检索的会员号”消息。

原数据不改变,程序结束

17

POINT表更新错误

向数据库日志表输出“ POINT表更新失败,会员号:’+检索的会员号”消息。

原数据不改变,程序结束

18

CSV文件写入错误

向数据库日志表输出“ CSV文件写入失败,日期:’+当前日期”消息。

原数据不改变,程序结束

***正常测试***

19

无错误的情况

所有处理正常执行,程序正常结束

*初期处理*

20

开始日志输出

正常输出

*POINT失效对象取出条件检查1*

POINT表中取出会员号

21

最终购买日是一年前的后一天

对应的会员数据不进行更新

22

最终购买日是一年内的任意一天

对应的会员数据不进行更新

23

当前POINT已经是0

对应的会员数据不进行更新

24

失效区分为无效

对应的会员数据不进行更新

25

最终购买日正好是一年前、现在POINT不为0且失效区分有效的记录为0个

所有的会员信息不进行更新

26

最终购买日是一年前的前一天、现在POINT不为且失效区分有效的记录为0个

所有的会员信息不进行更新

27

最终购买日是一年前的某一天、现在POINT不为0且失效区分有效的记录为0个

所有的会员信息不进行更新

28

最终购买日正好是一年前、现在POINT不为0且失效区分有效的记录大于0个

对该范围的会员信息进行更新、并且更新正确

29

最终购买日是一年前的前一天、现在POINT不为且失效区分有效的记录大于0个

对该范围的会员信息进行更新、并且更新正确

 30

最终购买日是一年前的某一天、现在POINT不为0且失效区分有效的记录大于0个

对该范围的会员信息进行更新、并且更新正确

*POINT失效对象取出条件检查2*

POINT表及会员信息表中取出会员号

31

未检测到该会员CODE

对应的会员数据不进行更新

32

入会日期是一年前的后一天

对应的会员数据不进行更新

33

入会日期是一年内的某一天

对应的会员数据不进行更新

34

失效区分无效

对应的会员数据不进行更新

35

购买次数不为0

对应的会员数据不进行更新

36

现在POINT为0

对应的会员数据不进行更新

37

会员CODE检测的到、最终购买日正好是一年前、现在POINT不为0且失效区分有效的记录为0个

所有的会员数据不进行更新

38

会员CODE检测的到、最终购买日正好是一年前的前一天、现在POINT不为0且失效区分有效的记录为0个

所有的会员数据不进行更新

39

会员CODE检测的到、最终购买日正好是一年前的某一天、现在POINT不为0且失效区分有效的记录为0个

所有的会员数据不进行更新

40

会员CODE检测的到、最终购买日正好是一年前、现在POINT不为0且失效区分有效的记录大于0个

对该范围的会员信息进行更新、并且更新正确

41

会员CODE检测的到、最终购买日正好是一年前的前一天、现在POINT不为0且失效区分有效的记录大于0个

对该范围的会员信息进行更新、并且更新正确

42

会员CODE检测的到、最终购买日正好是一年前的某一天、现在POINT不为0且失效区分有效的记录大于0个

对该范围的会员信息进行更新、并且更新正确

*各表的编辑处理*

43

POINT信息更新

输出正确(参照“POINT信息项目移动表”)

44

该会员的POINT更新日志不存在的情况

输出正确(参照“POINT更新日志新建项目移动表”)

45

该会员的POINT更新日志已经存在的情况

输出正确(参照“POINT更新日志更新项目移动表”)

46

POINT履历中取得的该会员的POINT履历是EOF的场合

输出正确(参照“POINT履历(追加)项目移动表”以及“用户数据项目移动表“)

47

POINT履历中取得的该会员的POINT履历不是EOF的场合

输出正确(参照“POINT履历(更新)项目移动表” ),程序结束

48

CSV文件数据输出

输出正确(参照“CSV文件项目移动表” )

*结束处理*

49

终了日志的输出

终了日志正确输入到数据库日志表

      1. 分析用POS明细作成模块单元检测表

表16 分析用POS明细作成模块单元检测表

项目名称

分析用POS明细作成

项目标记名

FSPB1310

测试编号

测试内容

测试结果

***异常测试***

*共通文件(INI)取得*

1

INI文件不存在的场合

向数据库日志表输出”INI文件地址错误。”消息。

程序结束

2

INI文件打开出错,或INI文件不可打开

向数据库日志表输出”INI文件地址错误。”消息。

程序结束

3

在INI文件中,文件地址、标记值、内容值不存在

向数据库日志表输出”INI设定错误。”消息。

程序结束

*文件存在检查*

4

POS明细数据文件路径不存在

向数据库日志表输出“ 外部分析用POS明细数据文件路径不存在”消息。

程序结束

5

外部分析用POS明细数据文件超过99个

向数据库日志表输出“ 外部分析用POS明细数据文件超出99个”消息。

程序结束

6

POS情报项目文件路径不存在

向数据库日志表输出“ POS情报项目文件路径不存在”消息。

程序结束

7

POS情报项目文件不存在

向数据库日志表输出“ POS情报项目文件不存在”消息。

程序结束

*分析用POS明细作成处理*

8

处理过程中出现错误

显示该系统错误

向数据库日志表输出“ POS明细作成出错”消息。

程序结束

***正常测试***

9

无错误的情况

所有处理正常执行,程序正常结束

*初期处理*

10

开始日志输出

正常输出

*分析用明细作成项目编辑*

11

明细文件CODE作成

正确输出(参照)

12

外部分析用POS明细文件是0的场合

POSYYYYMMDD01.DAT文件正确作成

13

外部分析用POS明细文件是1的场合

POSYYYYMMDD02.DAT文件正确作成

14

外部分析用POS明细文件是50的场合

POSYYYYMMDD51.DAT文件正确作成

15

外部分析用POS明细文件是98的场合

POSYYYYMMDD99.DAT文件正确作成

*结束处理*

16

终了日志的输出

终了日志正确输入到数据库日志表

    1. 测试实施

在准备好测试数据,配置好测试环境后,根据测试清单上的内容,逐条进行测试,其中,如果中途发现BUG存在,并对程序进行相应更改的话,则前面所做的测试全部作废,需重新开始测试。

      1. 测试页面截图

积分失效模块测试

如图6所示编号为842345143672的会员其注册日期为一年以前。其积分失效区分为有效。

图6 用户注册信息表

如图7所示该用户当前积分为130

图7 用户POINT信息表

图8所示为该用户积分被清零

图8 用户积分清零

数据分析模块测试结果如图9所示

图9 分析用POS明细文件生成

      1. 测试结果数据

FSP_EFI010.DAT文件中测试数据:

123456,sdcdsc,21458,20080525,13,1234567890123,2001010000000,苹果,122,554545,1234,2,1245,1222,1235,5589,7789,2490,009701

123456,sdcdsc,21458,20080525,13,1234567890123,2001010000000,苹果,122,254545,1234,1,1245,1222,1235,5589,7789,2490,009701

生成POS明细文件POS2004011004.DAT中结果数据如下:

51,123456,sdcdsc,20080525,13,1234567890123,20,01,010,000000,02001010000000,苹果,122,554545,0000000,0, ,000000, 

51,123456,sdcdsc,20080525,13,1234567890123,20,01,010,000000,02001010000000,苹果,122,254545,0000000,0, ,000000, 

结    论

本次设计的内容主要是对积分失效和数据处理模块进行设计。其中积分失效模块对一年内未购买任何物品的会员,进行积分过期失效处理。这样做可以刺激用户消费,提高销售业绩。而数据分析模块则是对商品销售信息进行分析,对各种类型的商品销售情况,销售利润做成数据资料以供外部分析使用。作为商务用软件,错误检测机制尤为重要。因此,在模块开发时应考虑到各种实发情况的出现,并做出相应处理。在完成程序开发后,做了单元检测清单(PCL),并进行测试,验证了软件的有效性,发现并修补缺陷,以提高软件质量,确保开发出用户满意的软件产品。

通过本次设计,进一步学习了Java编程语言和SQL数据库知识。比如Java编程中如何建立JDBC桥接器,怎样运用Java中的各种类对象,怎样查询API知识,以及怎样用Java来查询数据库表等等。而且还学习了怎样对各种文件进行操作。在操作文件方面遇到了很多问题,特别是在文件的写入方面,花了很多的时间才成功地向文件里写入内容。以上都是在编程时所涉及到的知识,其实在编程之前还要构架环境,在这一方面也有很多问题,比如在设置数据源时,这要根据数据源是在本机还是其它服务器的不同来设置。这些问题都在老师的细心指导下成功地解决的。

在这次的设计中,不仅巩固和加深了以前所学的理论知识,而且在实践方面也吸取了很多经验。某百货店POS积分管理系统是由一个团队所开发的。因此在开发过程中还让我了解到团队精神的重要性。潜意识里没有协力合作互相帮助的概念,整个项目的开发是没有办法进行的。在短短两个多月时间里,在老师的指导和同学的帮助下,我顺利完成了积分失效和数据分析模块的功能实现。

参考文献

[1] 罗积玉,李超.软件工程推进方法[M].四川:电子科技大学出版社,2004.9。

[2] 杜斌,幸利.软件设计工程[M].四川:电子科技大学出版社,2004.9。

[3] 李超,罗积玉.软件制造工程[M].四川:电子科技大学出版社,2004.9。

[4] 林邦杰.Java程序设计入门教程[M].北京:中国青年出版社,2001。

[5] John D.mcGregor David A.Skyes[美].面向对象的软件测试[M].杨文宏等译.北京:机械工业出版社,2002。

[6] 周竞涛.Eclipse完全手册 基础·进阶·高级[M].北京:电子工业出版社,2006。

[7] 萧仁惠, 陈锦辉.JDBC数据库程序设计[M].北京:中国铁道出版社,2002。

参考资料:

java毕业设计——JAVA某店POS积分管理系统(源代码+论文).zip

java毕业设计——java某百货店POS积分管理系统_积分点更新生成以及通票回收处理(源代码+论文).zip

Java毕业设计174例,包含部署视频-CSDN博客

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

毕业课程设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值