POS管理系统开发与实现Word文档格式.docx
《POS管理系统开发与实现Word文档格式.docx》由会员分享,可在线阅读,更多相关《POS管理系统开发与实现Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
POSmanagementsystem;
VisualC++;
SQLServer2000
引言
超市占国内商业企业总数的绝大部分,它们在市场中最具活力,通过对某超市的运营业务进行了解的基础上,中小型超市,以其人力、物力和财力方面不一定能使用和维护一个大型的计算机信息系统,但对于初期投资和低廉的事务处理系统,很受中小型超市的欢迎。
POS系统作为这样一种设备,具有直接、即使入账的实时处理能力,超市实施了POS系统管理后,每售出一件商品,POS系统数据库中就相应地减少该商品的库存记录,从而免除了商品的盘点之苦,节约了大量人力物力,而及时提供的商品存储信息又可以为经营决策者对商品品种的调运和调整提供可靠地依据。
POS系统的差错率很低,据统计在三百万分之一,同时POS系统还记录了销售过程中的每一笔交易,完善了商场的管理,塑造了良好的商场形象。
以下我针对小型超市,将现实中的经营过程做适当的简化和规范,对超市购物系统做系统分析,并在此基础上,给出超市购物系统的系统设计。
1.分析调查
1.1.POS系统的结构
POS系统的核心部件是POS机和计算机系统,其结构有三种。
1.1.1.独立的收银机POS系统
这种POS机即收银机,本身具有商品交易处理、商品信息存储和管理的功能,一般是基于PC的收银机,可以完成数据录入和票据的打印,适用于小的杂货店、小餐厅、小型连锁店等。
1.1.2.POS机与PC组成的POS系统
POS机一般有连接外部设备或通信的接口,通过通信线路将多台POS机与PC机相连构成如图1-1所示的POS系统
图1-1收银机与PC组成的POS系统
这种POS系统适用于中小型商场或超市等。
1.1.3.POS机、网络、计算机组成的POS系统
这种系统由若干组的POS机组成,每组POS机与PC机相连,而PC之间由网络相连,如图1-2所示
图1-2收银机、网络、计算机组成的POS系统
这种POS系统适用于大型商场或超市等。
1.2.超市购物系统业务流程分析
从分析超市的商品进行销存业务管理过程可以看到,始终伴随商品物流存在着的信息流有三个主要的信息结点:
商品进货信息结点、商品存货信息结点和商品销售信息结点。
有效地在这三个信息结点处组织数据,并加以必要的控制,即能满足超市购物系统对于信息处理的必要需求。
一般小型超市企业的经营方式是:
以小批量形式进货,零售方式销货。
以批量形式购入的商品首先存入商品库中(称为库存),经常持有小量库存,库存中记录进货单价。
准备销售的商品,一律需从商品库中逐一搬至销售柜台上(称为柜存),经常持有小量柜存,柜存中记录销售单价。
顾客购买商品时,总是从销售柜台上取得商品销售。
任一商品的进货单价小于该商品的销售单价,企业从这些商品的进销差价中取利润。
一般小型超市企业常聘用管理人员若干名、销售员若干名,均以轮班方式工作。
每次交接换班时,货与款均要求挡板结、转、清。
小型超市商品购物系统的业务流程如图1-3所示。
图1-3超市购物系统业务流程分析
1.3.超市购物系统平台构建
[14]超市购物系统也与其他行业一样面临着新技术的挑战,为此,超市已纷纷开始使用POS系统。
目前,国内已有许多版本的POS系统,从最早的DOS环境下开发的版本到Windows2000/WindowsXP环境下开发的版本,良莠不齐。
所谓POS系统即超市购物事务中,销售事务在专门的POS机上进行,通过操作POS机,将销售事务中的数据记录在POS机中,由POS机完成与主机的信息交换。
事实上,POS机是一种简化的PC机,安装了支持销售业务的软件,并且将软件固化在该机器上,使得POS机只能支持销售业务的操作,而不像一般PC机那样可以支持各种不同类型的应用。
一般POS机载支持特殊设备上可能与PC也有所不同,例如有专门支持条码扫描仪的接口,有专门支持打印机的接口,有专门支持数据通信的接口。
以PC机模拟POS机构建超市购物系统的硬件环境,其系统结构如图1-4所示。
图1-4PC机模拟POS机超市购物系统结构
1.4.超市购物系统体系结构
超市购物系统建立在局域网的平台之上,局域网选用Client/Server体系结构,以下对Client/Server体系结构做一分析。
C/S结构的基本工作方式:
客户程序运行用户的应用程序,向数据库服务器发送SQL请求,数据库服务器接收客户机的请求,并将处理结构返回客户端(见图1-5)。
[14]
图1-5客户机/服务器系统结构
客户机/服务器系统结构可以指硬件结构,也可以指软件结构。
硬件结构指某项任务在两台或多台计算机之间进行分配,客户机来运行提供用户接口和前端处理的应用程序,服务器提供可供客户使用的各种资源和服务。
软件结构指把一个应用系统按照逻辑功能分成四个组成部分:
用户界面、应用表示逻辑、事务逻辑、数据管理,按照其相应角色的不同区分为客户端和服务器端软件。
2.开发工具
2.1.数据库选择
[8]超市购物系统有大量的数据产生,数据管理十分重要。
我们知道,数据库是专门研究数据管理的一门技术,数据库基于某一种数据模型基础之上。
基于关系模型的关系数据库从20实际80年代后成为数据库的主流,数据库管理系统的生产厂商推出的一系列产品大多是关系型的数据库管理系统。
考虑Windows环境的普及程度、使用成本等等因素,超市购物系统的数据库平台选择关系型数据库管理系统Access和SQLServer。
在客户机/服务器软件的概念中,SQLServer是后端部分,而客户端视前端部分。
SQLServer支持多种客户端通过这些客户端,用户可以插入、更新、删除和查询存储在SQLServer数据库中的数据。
2.2.开发工具选择
超市购物系统的开发工具选择微软的Visual C++。
VC++是面向Windows的,使用它编程,可以帮助我了解Windows,定制Windows,更好地为Windows服务。
MFC,微软基础类(MicrosoftFoundationClasses),实际上是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎,VC++是Windows下开发人员使用的专业C++SDK,MFC就是挂在它之上的一个辅助软件开发包,MFC作为与VC++血肉相连的部分(注意C++和VC++的区别:
C++是一种程序设计语言,是一种大家都承认的软件编制的通用规范,而VC++只是一个编译器,或者说是一种编译器+源程序编辑器的。
)使我有了重新学习新知识的机会。
3.超市购物系统设计
3.1.超市购物系统设计目标
前面介绍的超市POS购物系统功能强大、实用性极强,但由于个人能力和时间限制,仅能开发出单机版的功能相对简单的系统。
客户端开发工具选择Visual C++,数据库服务器选择SQLServer2000。
设计目标重点放在购物过程中,销售事务、收银的完成和超市管理者对整个超市购物系统的管理上。
3.2.系统设计
系统登陆的人分为两种,一种是普通的收银员,另一种是管理员,这两种人员登陆系统后使用系统的权限不一样。
普通的收银员登陆系统后,只能执行系统的计费功能,也就是将顾客购买的货物编号录入系统由系统进行记录同时计费。
系统管理员(一般是超市的数据库管理人员)登录后除了拥有一般收银员的权限之外,还可以有仓储管理、人事管理、查看统计信息等功能。
管理员要完成数据库查询、添加、修改、删除、浏览等处理功能
安全性、协调性和完整性。
当管理员添加货物编号(收银员编号)时,要保证货物编号(收银员编号)不能重复;
销售表的货物信息要与货物表的货物基本信息相一致,不能使用不同的数据类型,这样才能实现查询功能和各个信息模块的协调;
另外销售表中的货物编号必须使用货物中已经存在的号码,所以对数据进行添加,修改删除,查询时要进行监控,进行出错提示及处理
根据系统需求,这个版本的超市POS购物系统是一个单机版的购物管理系统,也就是安装在一台机子上数据库只允许一个用户使用,应该说还存在继续升级的余地,下一步应将系统升级为多用户版,即可以通过网络实现多用户同时访问系统,实现多用户对数据库的实时访问,能够达到多个操作点的信息共享。
3.3.超市POS系统模块划分
根据需求分析的结果,本系统主要划分为以下五个子模块:
系统管理、仓储管理、人事管理、收费管理、统计信息等五个模块,如下所示:
图3-1POS系统总体模块设计图
●模块说明:
3.3.1.系统管理模块
管理员和收银员通过这个模块登陆系统,不同的用户用不同的用户名登陆,系统通过用
户名区分用户是否为管理员(默认0号用户为管理员)。
不同用户登陆系统后拥有不同的权限,可以完成不同的操作。
其中管理员可以使用系统的仓储管理、人事管理、收费管理模块和查看统计信息,而一般收银员只能使用收费管理模块。
登陆系统后必须退出,然后才能再次登陆。
3.3.2.仓储管理模块
仓储管理为管理员提供如下功能,显示仓库中各种货物的基本信息(货物编号、货物名称、货物库存、货物单价)、删除某货物信息、修改货物信息、添加货物信息等。
其中,删除和修改货物信息时所操作的货物编号必须已经在系统的数据库中存在,否则提示出错;
添加货物信息时添加的货物编号不能与系统中已存在的货物编号相同(即必须添加进新的货物编号的货物),否则同样显示出错。
3.3.3.人事管理模块
人事管理主要为管理员提供浏览、添加、修改、删除人事信息。
管理员可以添加一般收银员,也可以添加新的管理员,也可以修改一般收银员的登陆密码,还可以删除一般收银员的基本信息,其中0号管理员是系统生成的管理员,无法删除也不允许删除。
管理员还可以逐一浏览目前所有可以登陆系统的人员的基本信息。
3.3.4.收费管理模块
一般收银员和管理员都可以使用这个模块,模块的主要功能是记录消费者所购买的货物信息(购买的货物编号、购买数量),输入后系统将访问根据货物编号访问数据库中的货物表,查到该货物编号所对应的单价,从而计算出应支付的金额,同时相应地修改该货物的库存。
另外系统还必须将这次购买记录输入到当日的销售记录表中,以备查询使用。
3.3.5.信息统计模块
只有管理员才能查询统计信息,信息统计系统中,详细记录着所有的销售记录。
这些记录可以依据卖出货品的数量或金额来进行排序,保证管理者能够详细清楚地了解、掌握潮湿的运营状况,并且管理员有清空记录的权利。
3.4.分析与创建数据库
根据系统功能要求,数据库采用SQLServer2000建立。
[2]
数据库概念设计
3.4.1.超市管理系统的概念设计描述如下:
1)职员(管理员和售货员)可出售货物。
2)职员(管理员)可修改货物信息。
3)售货单会记录职员出售货物的信息。
实体—联系图
实体图
图3-2
●说明:
职员的编号和密码为登陆该系统时使用。
职员的权限有管理员级和售货员级,管理员级职员有该系统所有的权限,包括查看并修改货物信息,查看并修改人事信息,查看销售记录信息和售货计费,而售货员级职员只有售货计费的权限。
3.4.2.数据库逻辑设计
3.4.2.1.职员信息表:
Person:
person_nochar(10)职员编号
person_namechar(20)职员姓名
person_codechar(10)密码
person_limitint权限
其中person_no职员编号为主码
3.4.2.2.货物信息表:
Goods:
good_nochar(10)货物编号
good_namechar(20)货物名称
good_quantityint货物库存
good_priceint货物单价
其中good_no货物编号为主码
3.4.2.3.售货记录信息表:
Record:
record_datechar(30)售货日期
record_nochar(10)货物编号
record_quantityint售出数量
record_salesumint出售金额
其中record_date售货日期和货物编号record_no为主码
4.超市POS系统界面实现
4.1.主界面代码
MarketManager.cpp
#include"
stdafx.h"
MarketManager.h"
MainFrm.h"
MarketManagerDoc.h"
MarketManagerView.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
BEGIN_MESSAGE_MAP(CMarketManagerApp,CWinApp)
ON_COMMAND(ID_APP_ABOUT,OnAppAbout)
addandremovemappingmacroshere.
intheseblocksofgeneratedcode!
commands
ON_COMMAND(ID_FILE_NEW,CWinApp:
:
OnFileNew)
ON_COMMAND(ID_FILE_OPEN,CWinApp:
OnFileOpen)
ON_COMMAND(ID_FILE_PRINT_SETUP,CWinApp:
OnFilePrintSetup)
END_MESSAGE_MAP()
BOOLCMarketManagerApp:
InitInstance()
{
AfxEnableControlContainer();
if(!
AfxOleInit())
{AfxMessageBox("
InitializeOLEFails!
"
);
returnFALSE;
}
try
{
m_pConnection.CreateInstance(__uuidof(Connection));
m_pConnection->
Open("
driver={SQLServer};
Server=(local);
DATABASE=Market"
"
sa"
adModeUnknown);
catch(_com_errore)
AfxMessageBox("
ConnectiontoDatabaseFails!
CheckThePathisOK!
#ifdef_AFXDLL
Enable3dControls();
#else
Enable3dControlsStatic();
SetRegistryKey(_T("
LocalAppWizard-GeneratedApplications"
));
LoadStdProfileSettings();
//LoadstandardINIfileoptions(includingMRU)
CSingleDocTemplate*pDocTemplate;
pDocTemplate=newCSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CMarketManagerDoc),
RUNTIME_CLASS(CMainFrame),
RUNTIME_CLASS(CMarketManagerView));
AddDocTemplate(pDocTemplate);
CCommandLineInfocmdInfo;
ParseCommandLine(cmdInfo);
if(!
ProcessShellCommand(cmdInfo))
m_pMainWnd->
ShowWindow(SW_SHOW);
SetWindowText("
超市POS系统(单机版)"
UpdateWindow();
returnTRUE;
}
classCAboutDlg:
publicCDialog
public:
CAboutDlg();
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg:
CAboutDlg():
CDialog(CAboutDlg:
IDD)
voidCAboutDlg:
DoDataExchange(CDataExchange*pDX)
CDialog:
DoDataExchange(pDX);
BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)
voidCMarketManagerApp:
OnAppAbout()
CAboutDlgaboutDlg;
aboutDlg.DoModal();
intCMarketManagerApp:
ExitInstance()
//TODO:
Addyourspecializedcodehereand/orcallthebaseclass
////////////////////////////////////////////////
//peterstatements
m_pConnection->
Close();
returnCWinApp:
ExitInstance();
5.系统测试与分析
5.1.SQLServer配置
5.1.1.数据库建立
建立名为Market的数据库
5.1.2.数据表建立
(1)Person(person_nochar(10),person_namechar(20),person_codechar(10),person_limitint)主键为person_no;
(2)Goods(goods_nochar(10),goods_namechar(20),goods_quantityint,goods_priceint)主键为goods_no;
(3)Record(Record_Datechar(30),Record_Nochar(10),Record_Quantityint,Record_SaleSumint)主键为Record_Date和Record_No;
5.1.3.数据初始化
人事纪录表Person中设置该管理员信息:
person_no=0perons_limit=0。
其中person_no为该管理员的编号,person_limit=0为管理员权限(一般收银员的权限为1);
person_name为管理员姓名,person_code为管理员的身份密码。
5.2.系统的测试环境和测试条件
5.2.1.硬件环境
处理器:
AMDAthlon™3000+(64位)内存:
1GB操作系统:
WindowsXPSP3
5.2.2.软件环境
MicrosoftVisualC++6.0
5.3.系统测试过程及用例
测试过程主要采用黑盒测试,主要测试其功能的完整性与运行效率及负载能力。
以下测试均在局域网环境下完成。
5.3.1.测试过程
5.3.1.1.服务器配置
指定局域网内一台主机,作为服务器,按照上面设置将数据库配置好
5.3.1.2.客户机配置
(1)在源代码中设置SQL连接语句:
m_pConnection->
中,“local”更改为服务器IP