百货店是生活中不可缺少的一部分,为了给顾客提供更方便的服务平台以及更好的服务质量,而设计了POS积分管理系统。百货店通过点积分的管理获得顾客更好的信誉,增加客户流量,获得更多的利益。在百货店经营的过程中,每天的交易次数成千上万,所以,对顾客使用积分卡信息的查询是很重要的。根据这一点,设计了积分更新生成及通票回收处理的功能。积分点更新生成是指,将顾客交易情况生成更新查询文件;通票回收处理是指,对一定时间后没有使用过的通票进行回收处理以及保存相关信息。涉及到的技术主要是对文件的读和写操作、对数据库的查询和插入以及简单计算编程等等。是基于日文操作系统Windows 2000,采用Java开发语言,并使用SQL server 2000数据库,JDBC驱动器来完成积分点更新生成以及通票回收处理的功能。
21世纪的今天,人类已步入一个高速发展的信息时代。随着科学技术的不断发展,日益更新,计算机技术的发展更是突飞猛进,并在人们的生活当中起着重要的作用。运用计算机技术可以开发各式各样的产品,如:积分管理系统等等。
积分管理,它的概念在人们的记忆中并不陌生,它属于各大企业经营管理中的一种方式,也是提高管理效率的一种手段。随着WTO的步伐加快,国际化竞争必然加剧,国际国内市场将面临更为激烈的争夺。参与市场竞争,更多的要靠先进超前的经营管理观念和方法、系统的战略规划、科学的市场分析、规范的管理运作、入微的客户服务、优秀的员工队伍等综合实力。经营绩效是公司管理的重心,建立先进的管理系统,对推动公司战略实现、提高经营业绩是非常重要的。因此POS积分管理系统就是在具备先进科学技术条件下,以先进超前的经营管理理念为基础而设计的一套先进的管理系统。
POS积分管理系统的先进性,是要经过详细的需求分析和精心的设计才能实现的。一个公司的管理系统是否先进、完善,是由公司的管理制度,管理理念来决定的。然而一个公司的管理系统的先进性、完善性直接体现了该公司的管理制度和管理理念。因此具有先进和完善的管理系统,对各大企业的管理和发展都起着非常重要的作用。但是怎样才能体现一个管理系统是否真正的先进和完善呢?这在我们开发该POS积分管理系统时,首要涉及考虑的问题。比如:在积分管理系统中,会员的基本信息是否完整,店铺的基本信息是否完整,系统的积分更新是否准确及时,管理系统的性能是否稳定,管理系统的利用是否节约系统资源降低成本等等都是必须考虑的问题。
为了满足某百货店的需求,我们设计出具有以下优点的POS积分管理系统。如:检索迅速,可靠性高,稳定性强,更新方便,保密性好,成本低,使用方便等等。有了这些优点,各大企业可以利用积分管理系统通过积分的手段提高经营绩效,达到增加利润的目的,增加各个企业之间的竞争,从而促进社会经济的发展。
总的来说开发一套POS积分管理系统是很重要的。在这个POS积分管理系统中,主要负责积分更新生成和通票回收处理这两个模块的分析、设计和实现。结合所学的知识,基于日文系统Windows 2000,采用Java开发语言,并使用SQL server 2000的数据库来实现积分点更新生成以及通票回收处理的功能。下面将介绍开发过程中实现该模块的具体内容。
- 模块需求分析
各企业或百货店为了在激烈竞争的商场中立于不败之地,就必须与客户建立良好的关系,这就要求在各企业或百货店中拥有一套管理完善的、先进的、稳定的、功能齐全的POS积分管理系统。这里的POS积分管理系统是面向最终客户的,因此这里所谓的客户是指个人。
在每个店铺中拥有很多个客户,而客户又可能拥有旧店铺编码和旧会员编码,但是店铺与客户的关系却不是多对多的关系而是一对多的关系。通过对客户基本资料与店铺基本信息的管理,从而增加企业或百货店与客户的交易信誉度,使得客户在购买商品时买的放心,买的开心,以至于提高客户的满意度,吸引和保持更多的客户。
积分点更新生成模块,该模块是查询所需要更新的信息,将所需要更新的信息存在DAT文件中。通票回收处理是将符合某种条件的信息在CSV文件中显示。
- 积分卡所包含的基本资料
- 会员基本资料:包括会员编码,姓名,出生年月日,联系电话(可登记多个电话),会员种类(分为三个种类:一般,法人,社员),性别,邮编,联系地址,入会的店铺编码,无效区分(分为两种:有效,无效)。
- 店铺基本资料:包括店铺编码,店铺名称,店铺邮编,店铺地址,联系电话。
- 积分点基本资料:包括会员编码,旧会员编码,优惠等级,各种积分点(分为六种积分点:现时积分点,累计积分点,输出的累计积分点,增加的累计积分点,基本累计积分点,奖金积分累计积分点),最新一次使用积分卡的日期,使用积分卡的次数,购买金额,会员打折金额,系统更新日期。
- 其它资料:会员状态包括会员编码,店铺编码,更新种类(分为三种类型:登陆,修改,删除),处理日表包括营业日,处理日,登陆日期,更新时间。
- 处理功能需求
- 积分点更新生成:查询会员状态中的会员编码,按条件检索会员基本资料,店铺基本资料,积分点基本资料,以及其它将符合条件的数据取出存在内存中,然后再根据积分点更新生成的条件将符合的结果保存在DAT文件中,以方便更新查询。
- 通票回收处理:该模块主要针对通票回收和通票存储CSV文件进行处理,将符合日期条件的数据重新写入通票存储CSV文件中,方便查询。
- 开发环境需求
- 硬件需求:计算机一台。
- 操作系统:Windows 2000(日文)。
- 开发语言:Java(版本号:jdk1.5.0_06 ,eclipse 3.2)。
- 数据库:Microsoft SQL Server 2000。
- 其他软件需求:Microsoft SQL Server 2000 Driver for JDBC Service。
- 人力资源需求
积分点更新生成和通票回收处理这两个模块需要一个人完成。
- 时间需求
- 可行性研究
- Java技术的特点
以Java作为该模块的开发工具,是因为它是目前使用最为广泛的网络编程语言之一,并且具有简单、面向对象、稳定、与平台无关、解释型、多线程、安全、动态等特点。
- 简单:Java语言简单是指这门语言既易学又好用,而且Java中不再使用指针的概念。
- 面向对象:基于对象的编程更符合人的思维模式,使人们更容易编写程序。
- 与平台无关:这一点是Java语言最大的优点。即用Java编写的程序可以在任何安装了Java虚拟机(JVM)的计算机上正确运行。
- 解释型:Java不针对特定的CPU芯片进行编译,而是把程序编译为叫做自解码的一种“中间代码”。字节码是很接近机器码的文件,可以在提供了Java虚拟机(JVM)的任何系统上被解释执行。
- 多线程:Java还有一特点就是内置对多线程的支持。多线程支持完成多个任务。
- 安全:当使用支持Java的浏览器时,可以放心地运行Java的小应用程序(Java Applet),不必担心病毒的感染和恶意企图。
- 动态:Java程序的基本组成单元是类,有些类是自己编写的,有些是从类库中引入的,而类又是运行时动态装载的,这就使得Java可以在分布环境中动态地维护程序即类库。
- Microsoft SQL Server 2000的可行性分析
选择以Microsoft SQL Server 2000作为该模块的数据库,SQL Server 2000数据库学起来较为简单,容易使用,因此使用数据库查询语句,条件查询语句以及写入语句,对数据库进行查询取值,并向数据库里写入数据。
在技术难度方面,由于有指导老师的指导和相关的参考文献,特别是网上众多的网友所提供的资料,使得在开发过程中所遇到的困难都能够一一得到解决。
随着科学技术的发展,特别是计算机技术的飞跃发展,使得计算机在人们的生活使用中越来越普遍。计算机的普遍使用说明人们的生活水平提高了,从而也说明了计算机的价格越来越被众多人所接受。然而价格的低廉并不是说产品的质量不好,是因为技术的飞跃发展使得产品的成本降低。因此开发POS积分管理系统所需要的成本也是该百货店所能接受的,并且通过POS积分管理系统的管理使得客户获得相应的好处,从而使百货店获得更高的利益。除此之外它还具有很多优点,例如:
- 可以随时获得客户的基本资料,以及店铺的基本资料,通过这些可以增加客户与百货店之间的相互信任度。保证交易中的安全性。
- 方便百货店对客户积分的管理以及更新,以便让客户在符合条件的情况下享受某种特别优惠待遇,从而增加客户对百货店的满意度,吸引更多的客户。
根据以上分析,实现积分点更新生成以及通票回收处理的功能是可行的。
如图1通票回收处理数据流程图:
通票回收处理数据流程图说明:
通票回收处理数据流程涉及两个文件,通票回收数据文件只是输出文件,通票回收储蓄文件既是输出也是输入文件。
通票回收数据文件:所存放的数据是每次交易时使用积分卡所存放的交易时间以及其它数据信息。
通票回收储蓄文件:所存放的数据是每次通票处理时所存放的最新数据。
所存放的内容和通票回收数据文件一样。
如图2积分点更新生成数据流程图:
积分点更新生成数据流程图说明:
积分点更新生成数据流程处理时需要用到7种数据和一个文件,从这7个数据表中取出数据,将符合条件的数据存放在文件中,做成积分更新生成文件即积分更新数据文件。
会员数据:包括会员的基本信息数据(入会日期,会员编码,姓名,住址,联系电话,出生年月日,会员种类,入会店铺编码等等);
积分数据:包括积分卡的基本信息数据(会员编码,现在积分点,累计积分点,输出累计积分点,增加累计积分点,基本累计积分点,购买次数,购买累计金额等等);
店铺数据:包括店铺基本信息数据(店铺编码,店铺名称,优先级编码,住址,联系电话等等);
会员状态数据:记录是否曾经办理过积分卡的信息数据(会员编码,旧会员编码,店铺编码,旧店铺编码,优先级编码等等);
优先数据:记录优先级信息数据(优先级编码,优先级名称,更新日期等等);
奖励积分数据:记录会员获奖信息数据(处理日期,会员编码,每月消费金额,奖励积分点,系统更新日期等等);
处理日数据:记录所有处理的日期数据(营业日期,处理日期,登陆日期,更新日期等等);
数据库表结构的设计在每一个开发项目中都是非常重要的一个部分,数据库表设计的好坏直接关系到开发过程中代码实现的功能强大与否,是否包含齐备客户所需求的功能。因此下面介绍该模块所用到的数据库表的详细设计:
- 表名定义
表1数据库表名一览
序号 | 表参数名 | 说明 |
1 | FSPTB_MEMBER | 记录会员基本信息 |
2 | FSPTB_POINT | 记录积分卡的基本信息 |
3 | FSPTB_TENPO | 记录店铺基本信息 |
4 | FSPTB_MEMBER_STATUS | 记录会员状态信息 |
5 | FSPTB_DOMINANT | 记录优先级别信息 |
6 | FSPTB_POINT_BONUS | 记录会员获奖信息 |
7 | FSPTB_COMM_CONT | 记录处理的日期信息 |
表2会员表
主键 | 列(属性)名 | 中文名称 | 类型 | 宽度 | 是否允许为空 |
◎ | 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 | |
BIRTH_DAY | 出生年月日 | Char | 8 | NULL | |
MEMBER_KBN | 会员种类 | Char | 1 | NULL | |
FM_KBN | 性别 | Char | 1 | NULL | |
NYUKAI_TENPO | 入会的店铺编码 | Char | 6 | 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 |
表3会员状态表
主键 | 列(属性)名 | 中文名称 | 类型 | 宽度 | 是否允许为空 |
◎ | 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 |
表4积分表
主键 | 列(属性)名 | 中文名称 | 类型 | 宽度 | 是否允许为空 |
◎ | 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 | |
UPD_TANTOU | 更新负责人ID | Char | 6 | NULL |
表5优先级别表
主键 | 列(属性)名 | 中文名称 | 类型 | 宽度 | 是否允许为空 |
◎ | DOMINANT_CODE | 优先级别编码 | Char | 3 | NOT NULL |
DOMINANT_KANA | 日文名称 | Char | 20 | NULL | |
DOMINANT_KANJI | 中文名称 | Char | 30 | NULL | |
UPD_YMDHMS | 更新时间 | Char | 14 | NULL | |
UPD_TANTOU | 更新负责人ID | Char | 6 | NULL |
表6店铺表
主键 | 列(属性)名 | 中文名称 | 类型 | 宽度 | 是否允许为空 |
◎ | TENPO_CODE | 店铺编码 | Char | 6 | NOT NULL |
TENPO_KANA | 日语名称 | Char | 20 | NULL | |
TENPO_KANJI | 中文名称 | Char | 30 | NULL | |
DOMINANT_CODE | 优先级别编码 | Char | 3 | NULL | |
TENPO_ZIP | 邮政编码 | Char | 7 | NULL | |
TENPO_ADDR | 地址 | Char | 100 | NULL | |
TENCYO_MEI | 店长名 | Char | 20 | NULL | |
UPD_YMDHMS | 更新时间 | Char | 14 | NULL | |
UPD_TANTOU | 更新负责人ID | Char | 6 | NULL |
表7积分奖励表
主键 | 列(属性)名 | 中文名称 | 类型 | 宽度 | 是否允许为空 |
◎ | SHORI_YM | 处理月 | Char | 6 | NOT NULL |
◎ | MEMBER_CODE | 会员编码 | Char | 13 | NOT NULL |
TUKI_KAIAGE_M | 每月交易金额 | 9 | 10 | NULL | |
BONUS_POINT | 奖励积分点 | 9 | 8 | NULL | |
BONUS_KUBN | 奖励种类 | 9 | 4 | NULL | |
SYSTEM_UPD_YMDHMS | 系统更新时间 | Char | 14 | NULL |
表8处理日表
主键 | 列(属性)名 | 中文名称 | 类型 | 宽度 | 是否允许为空 |
EIGYO_YMD | 营业日期 | Char | 8 | NOT NULL | |
SYORI_YMD | 处理日期 | Char | 8 | NOT NULL | |
ADD_YMD | 登陆日期 | Char | 8 | NOT NULL | |
ADD_HMS | 登陆时间 | Char | 6 | NOT NULL | |
UPD_YMD | 更新日期 | Char | 8 | NOT NULL | |
UPD_HMS | 更新时间 | Char | 6 | NOT NULL |
jdk1.5.0_06软件的安装和一般软件的安装一样,没有需要特别注意的地方,只需按步骤依次安装即可。安装完成后在所选安装目录下存在jdk1.5.0_06文件。
如图3jdk1.5.0_06文件:
Eclipse 3.2,只要解压就可以使用,解压时可以设置或选择项目程序所在目录,在这里所编写的程序放在D:\FSP中,如图4 Eclipse3.2创建:
Microsoft SQL Server 2000 Driver for JDBC Service安装软件,在安装过程中没有什么特别的要求,即可安装成功。如图5JDBC安装:
开发某百货店POS积分管理系统时,共同使用一个服务器,因此Microsoft SQL Server 2000的安装是在服务器上进行的,这里的模块不涉及数据库Microsoft SQL Server 2000的安装,只是使用而已。
为了与该系统的数据库建立连接,首先需要配置一个ODBC数据源,步骤:
打开Windows中的控制面板后,双击“管理工具”接着双击“数据源(ODBC)”图标,出现界面;
- 单击界面中“System DSN”选项卡,出现对话框,此对话框用于设置系统数据源的名称和对应的驱动程序,单击“Add”按钮,出现对话框;
- 选择对话框中“SQL Server”条目,单击“完了 ”按钮,出现界面;
- 在界面中的第一个文件编辑框中键入连接的数据库的名称(例如:
“ tokyosuper” ),接着从服务器下拉框中选择服务器名字(例如:SK-XUFENG),(但是如果使用本机的数据库即已安装了相应的SQL Server数据库软件时,选择“Local(本地) ”就可以了。)出现界面;
- 选择由用户名和密码来连接服务器的单选按钮,在Login ID中填写用户名(例如:“sa”),在Password中填写密码,出现界面;
- 选中“chang the default database to”按钮,从服务器下拉框中选择“ tokyosuper”,点击下一步,接着点击完成,最后点击ok就可以了。
如图6数据源:
在这里负责的2个模块是积分更新生成模块和通票回收处理模块,详细实现过程如下:
- 建立JDBC-ODBC桥接器,如下实现代码:
建立JDBC-ODBC桥接器实现代码中s可用"sun.jdbc.odbc.JdbcOdbcDriver"来替换,即可实现JDBC-ODBC桥接器建立的功能。
- INI文件的获取
在这里的INI文件是系统中所公用的文件,里面存放了所有文件的存放路径信息。此功能实现代码省略。
- 数据库日志输出实现
在这些模块中需要输出消息日志,开始日志和结束日志,实现代码如下:
日志输出实现代码中str表示数据库插入语句INSERT插入数据库表FSPTB_LOG中的内容。p_Sel,p_Msg,p_AppNM,p_FuncNM, p_JobNM, p_ErrDetail,p_InIFile这些列名分别表示日志种类,日志信息,程序名,函数名,工作名,错误信息,INI文件名。
- 重新设置内容
在积分更新生成模块中,需要对从数据库中取出的内容按照某中条件进行重新设置,有三种不同的情况,实现代码如下:
重新设置内容代码实现中有参数的构造函数Reset(String s1){…}是对现在积分点和累计积分点的重新设值,它的实现功能是如果取出的值为null或者小于0的情况下就将那个值重新设置为“00000000”; 方法public String resetKingaku(String s2){…},是对每月购买金额重新设值,它的实现功能是如果取出的值为null或者小于0的情况下就将那个值重新设置为“0000000000”;方法public String resetBonusKubn(String s3){…},是对奖励种类重新设值,如果所取的值不为空则返回所取得值,其它情况下都设置为“0001”。其中的两个方法由空构造函数Reset(){}的对象来调用。
在写入文件实现的代码中,有三个参数filepath, filename, cotents分别表示文件的路径,文件名,以及向文件中写入数据的内容。这里需要注意,当我们对文件进行操作时,一定要记得在每操作完以后要关闭文件,以便释放系统资源,否则造成不必要的资源浪费。