超市管理系统说明书1课案.docx
《超市管理系统说明书1课案.docx》由会员分享,可在线阅读,更多相关《超市管理系统说明书1课案.docx(26页珍藏版)》请在冰豆网上搜索。
超市管理系统说明书1课案
超市管理系统
1课程设计的目的
我国超市出现在20世纪90年代初期,现在已经成为我国零售业的一种重要形态,为国民经济的发展发挥了重要的作用。
随着超市的高速发展,其经营管理也变得愈加复杂,早期的售货员站柜台的形式早已不能满足现有销售的发展,这样就迫切地需要引入新的管理技术。
超市形态具有种种优点,但在目前状况下,它仍存在零售业企业所共有的落后的一面,如:
不能有效地管理每种商品,收款结算速度慢,容易出现营业差错,不宜进行商品调价,盘点效率低等,而且在超市日常管理中,商品的进、销、存等决策以经验为主,缺乏实时分析功能,管理人员对及时传递资料的要求始终得不到满足。
随着超市形态的高速发展,其经营管理也变得愈加复杂,日常所需要处理的数据量也逐渐增大,商业运转的中间环节也越来越多,原始的人工管理已无法应对这复杂的市场。
为此,依靠现代化的计算机信息处理技术来管理超市,从而节省了大量的人力、物力,改善了员工的工作条件,减轻了劳动强度,并且能够快速反映出商品的进、销、存等状况和各种反馈信息分析,使管理人员快速对市场的变化做出相应的决策,加快超市经营管理效率。
1985年著名教授高登.戴维斯给了管理信息系统一个较完整的定义:
“它是一个利用计算机硬件和软件,分析、计划、控制和决策模型,手工操作以及数据库的人-机系统。
它能提供信息,能支持企业或组织的运行、管理和决策[1]。
2设计方案及论证
2.1可行性分析
2.1.1调查分析
系统的初步调查是系统设计规划阶段的第一项活动,也是整个系统开发的第一项活动,主要目标就是了解组织机构、工作现状。
正式开发管理信息系统之前进行调研是非常必要的,其必要性主要表现在以下几个方面。
(1)明确用户的要求,以便根据调查结果进行可行性分析,确认系统的开发是否可行。
(2)提出新系统的人员并不都是系统研究人员,有些人对功能和处理数据的方法没明确的认识。
他们只是根据自已业务工作的需要提出了要求,系统开发人员要对此进行详细的调查和分析,确认用户的要求可以通过现有的计算技术来实现,保证开发的管理信息系统的功能与用户提出的要求相吻合。
(3)超市管理系统的现行系统可能是手工系统,也可能是使用计算机的系统,无论是何情况,都要详细地调查现行系统中信息处理的具体情况,系统内部功能结构,以便设计一个合理的、好的新系统逻辑模型,为新系统的设计工作打好基础,保证整个系统开发的质量。
通过对整个超市系统目前主要管理业务的了解,主要工作是由管理员负责完成的。
首先管理员手工录入目前所有产品或配件信息,并负责对其进行管理和维护;建立详尽的客户信息,并对进出货进行登记,便于随时查询销售状况,以及利润状况。
总之,必需对现行系统进行详细调查,明确用户需求,保证开发的新系统的功能与用户的要求相吻合,避免耗费大量的人力、物力、财力。
2.1.2系统分析
(1)系统必要性分析
随着销售数据规模的日益庞大,商品数目也在呈指数级的增长,这样就造成了:
产品库存量大,工作人员为产品进出库登记时的工作负荷重、效率低。
进出货过程中,时常会出现错误,增加了业务成本。
对进出货数据进行查询时,需要手工翻阅大量的票据,大大降低了查询效率,而查询的结果不尽人意。
以上缺点直接或间接地降低了工作效率,最终影响了商品进出库的管理。
(2)系统需求性分析
本软件对超市的采购、销售、仓库、资金、帐务等实际运作流程均实现了动态的计算管理,使得超市经营者能够迅速的掌控公司的实际运作状况、合理做出公司的战略决策。
软件提供的商品入库流水帐、商品销售流水帐、商品台帐、会计帐及各种报表在提高公司工作效率、减少人为的差错、最大限度堵塞漏洞的基础上很好的减轻了采购、销售、仓库、财务等环节工作人员的劳动强度,全面体现了现代企业管理理论所倡导的工作高效、环境轻松的氛围。
由于本系统设计针对该超市的具体情况,因此用户需求的目的是通过该企业的需求调查,从中总结出企业对管理信息系统的需求,然后根据这些需求设计出系统的方案。
需求收集和分析是数据库设计的第一阶段。
需求分析定义了软件产品的各种用户需求如功能、性能等,需求分析是否透彻、完整、正确是软件项目成败的关键。
这一阶段收集到的基础数据是下一步设计概念结构的基础。
从数据库设计的角度考虑,需求分析阶段的目标是:
对现实世界要处理的对象(组织、部门、企业等)进行详细调查,在了解原系统的概况,确定新系统功能的过程中,收集支持系统目标的基础数据及其处理,最重要的就是建立用户数据模型。
无论是采取哪种开发策略,都需要访问用户、记录需求,并根据这些需求建立数据模型的原型,这样的模型标识了需要在数据库中存储的内容和它们的结构及相互关系。
进行数据建模要求既要有一定的行业知识,又要精通建模的方法和技巧[2]。
开发建立一套数据库应用系统——超市管理系统,用于管理商品的录入、运转、查询以及进库、出库等信息。
系统为C/S结构。
另外,一个界面友好、操作方便的超市管理系统能够更好地解决商品繁琐的统计工作。
2.1.3系统总体设计
系统的功能结构是根据需求分析的结果来设计的,根据系统详细分析,超市管理系统共分为四个模块,分别为:
信息管理、日常操作、信息查询、系统管理。
系统功能模块图如图1所示。
图1功能模块图
2.2数据库设计
2.2.1实体E-R图
这一设计阶段是在需求分析的基础上,设计出能满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。
E-R图为实体-联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。
将现实世界的实体,属性和联系转化为抽象的概括的概念模型。
构成E-R图的基本要素是实体型、属性和联系。
超市基本信息的实体-属性图,如图2所示。
图2超市基本信息实体-属性图
总实体图,如图3所示。
图3总实体图
2.2.2数据库逻辑设计
将关系模型转换成具体DBMS支持的实际关系数据模型,如下面的几个表格所示。
(每个表格表示在数据库中的一个表)
商品分类表包括编号、名称、备注字段,如表1所示。
表1商品分类表
列名
数据类型
是否为空
字段宽度
默认值
说明
编号
int
否
10
主键
名称
Varchar(50)
否
50
备注
char
10
管理员基本信息表包括姓名、权限、身份证号、密码等字段,如表2所示。
表2管理员基本信息表
列名
数据类型
是否为空
字段宽度
默认值
说明
姓名
int
否
10
权限
Varchar(50)
否
50
身份证号
char
否
10
0.00
主键
密码
char
否
10
123
联系方式
char
否
10
地址
char
否
20
供货商基本信息表包括编号、名称、单位性质、联系人、联系方式,如表3所示。
表3供货商基本信息表
列名
数据类型
是否为空
字段宽度
默认值
说明
编号
int
否
10
主键
名称
char
否
20
单位性质
char
否
20
联系人
char
否
20
联系方式
char
否
20
说明原因
进货统计表包括开票日期、经办人、供货商编号等字段,如表4所示。
表4进货单统计表
列名
数据类型
是否为空
字段宽度
默认值
说明
开票日期
日期型
否
10
经办人
char
否
10
供应商编号
char
否
10
备注
char
否
10
说明原因
商品库存数量统计表包括条形码、进货价、零售价、会员价等字段,如表5所示。
表5商品库存数量统计表
列名
数据类型
是否为空
字段宽度
默认值
说明
条形码
int
否
20
主键
进货价
货币型
否
10
0.00
零售价
货币型
否
10
0.00
会员价
货币型
否
10
0.00
业务提成
货币型
否
10
0.00
说明原因
库存
int
10
在上面的实体以及实体之间的关系的基础上,形成数据库中的表格和各个表格之间的关系,即关系模型。
设计关系模型并对其进行优化:
确定数据依赖,给出关系模式中的主码,明确其依赖关系。
对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。
对照数据依赖的理论对各个关系模式逐一进行分析,考察是否存在部分函数依赖、传递函数依赖、多值依赖,确定各个关系模式分别所属的范式类型。
按照需求分析阶段得到的处理要求,分析对于这样的应用环境这些模式是否合适,对某些模式检查是否有合并或分解的需要。
对关系模式进行必要的分解,提高数据操作效率和存储空间的利用率。
2.2.3数据库物理设计
(1)数据库设计视图
设计相应的数据库,并录入相关的数据,如图4所示。
图4数据库设计图
(2)数据库表之间关联图
为各个表之间建立相应的关联,如图5所示。
图5数据库表之间关联图
2.2.4连接数据库
#defineProvider"Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;
PersistSecurityInfo=False;InitialCatalog=Catering"
voidADOConn:
:
OnInitADOConn()
{
HRESULThr;
:
:
CoInitialize(NULL);
try
{
hr=m_pCon.CreateInstance("ADODB.Connection");
if(SUCCEEDED(hr))
{
m_pCon->ConnectionTimeout=3;
//m_pCon->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=Catering.mdb","","",adModeUnknown);
m_pCon->Open(_bstr_t(Provider),"","",adModeUnknown);
}
else
AfxMessageBox("创建连接对象失败!
");
}
catch(_com_errorexp)
{
AfxMessageBox("数据库未连接");
AfxMessageBox(exp.Description());
}
}
2.3详细设计
本系统分四大模块:
信息管理模块、日常操作模块、信息查询模块、系统管理等模块。
可以实现商品信息管理,系统信息管理,商品进货操作,商品出货操作,进货记录查询,出库信息查询,库存记录查询,修改密码等功能。
2.3.1系统界面设计
(1)功能模块设计
信息管理模块
超市基本信息界面设计
创建窗口对象,命名ID为IDD_CHAOSHI_B_DIALOG,在合适的位置添加五个文本框,四个编辑框,一个下拉列表框和两个命令按钮,按照自己所需相应的依次为每一个控件修改ID和caption属性,其设计如图6所示。
图6超市基本信息界面设计
日常操作模块
进货开单界面设计
创建窗口对象,命名ID为IDD_KANDAN_C_DIALOG,在合适的位置添加五个文本框,五个编辑框,,按照自己所需相应的依次为每一个控件修改ID和caption属性,其设计如图7所示。
图7进货开单界面设计
信息查询模块
出库开单界面设计
创建窗口对象,命名ID为IDD_CHUKU_E_DIALOG,在合适的位置添加五个文本框,五个编辑框,,按照自己所需相应的依次为每一个控件修改ID和caption属性,其设计如图8所示。
图8出库开单界面设计
系统管理模块
密码修改界面设计
创建窗口对象,命名ID为IDD_PWD_A_DIALOG,在合适的位置添加三个文本框,三个编辑框,两个命令按钮,按照自己所需相应的依次为每一个控件修改ID和caption属性,其设计如图9所示。
图9出库开单界面设计
(2)菜单设计
添加菜单,并添加菜单项系统设置、基本资料、进货管理、销售管理、库存管理等子菜单项,如图10所示。
图10菜单设计
2.4部分程序代码
//DlgDanganBase.cpp:
implementationfile
//
#include"stdafx.h"
#include"ncshop.h"
#include"DlgDanganBase.h"
#include"ADOConn.h"
#include"DlgAll.h"
#include"MyChiToLetter.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
//CDlgDanganBasedialog
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
}
voidCDlgDanganBase:
:
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);
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)
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()
//CDlgDanganBasemessagehandlers
voidCDlgDanganBase:
:
OnBtnfind()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData(TRUE);
CADOConnadoMain;
CStringstrSql;
strSql="SELECT商品档案基本信息表.*,商品库存数量统计表.进货价,商品库存数量统计表.零售价,";
strSql=strSql+"商品库存数量统计表.会员价,商品库存数量统计表.业务提成,";
strSql=strSql+"商品库存数量统计表.库存FROM商品档案基本信息表INNERJOIN商品库存数量统计表ON";
strSql=strSql+"商品档案基本信息表.条形码=商品库存数量统计表.条形码where商品档案基本信息表.条形码='";
strSql=strSql+m_str16+"'or商品档案基本信息表.商品编码='";
strSql=strSql+m_str16+"'or商品档案基本信息表.助记码='";
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="";
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);
}
BOOLCDlgDanganBase:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
//TODO:
Addextrainitializationhere
CADOConnadoMain;
CStringstrSql;
strSql="SELECT商品档案基本信息表.*,商品库存数量统计表.进货价,商品库存数量统计表.零售价,";
strSql=strSql+"商品库存数量统计表.会员价,商品库存数量统计表.业务提成,";
strSql=strSql+"商品库存数量统计表.库存FROM商品档案基本信息表INNERJOIN商品库存数量统计表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();
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
//EXCEPTION:
OCXPropertyPagesshouldreturnFALSE
}
voidCDlgDanganBase:
:
OnClickList1(NMHDR*pNMHDR,LRESULT*pResult)
{
//TODO:
Addyourcontrolnotificationhandlercodehere
POSITIONpos;
inti;
pos=m_listMain.GetFirstSelectedItemPosi