随着小超市规模的发展不断扩大,商品数量急剧增加,有关商品的各种信息量也成倍增长。超市时时刻刻都需要对商品各种信息进行统计分析。而大型的超市管理系统功能过于强大而造成操作繁琐降低了小超市的工作效率。
超市管理系统是市场上最流行的超市上常用的系统之一,它主要包含以下几个模块:
本文系统的分析了软件开发的背景以过程;首先介绍了软件的开发环境,其次介绍了本软件的详细设计过程:数据库的设计、各个模块的设计和实现,以及具体界面的设计和功能。
关键词:超市 仓库管理系统
第一章 绪论
1。1社会背景
超市已经成为人们生活中必不可少的一部分,所以对超市仓库的管理已成为迫在眉睫的事情。所以小型超市管理系统就应运而生了。
随着现代科学技术的迅猛发展,社会的进步,计算机技术已经渗透到各个领域,成为各行业必不可少的工具,特别是Internet技术的推广和信息高速公路的建立,使IT产业在市场竞争中越发显示出其独特的优势,步入信息化时代,有巨大的数据信息等待加工处理和传输,这使得对书数据库的进一步开发和利用显得尤为迫切.
作为国内市场的一些中小型超市,它们在信息化过程中的步伐要落后于大中型超市,国内的一些中小型超市大多由人力管理,因而出现了很多不足,例如:管理效率低、劳动强度大、信息处理速度低而且准确率也不够令人满意。为了提高超市仓库管理效率、减轻劳动强度、提高信息处理速度和准确度。因此我们选择来设计一个小型超市管理系统的方案。让计算机对仓库进行自动管理,超市管理员可以在计算机上直接实现仓库的信息管理,并能够在一定的程度上实现自动化,所以小型超市仓库管理系统的开发就显得十分重要。
1。2超市仓库背景
在我国超市形成在20世纪90年代初期,现在已经成为我国零售业的一种重要形态,为国民经济的发展发挥了重要的作用。而超市的仓库管理也显得尤为.超市仓库就是库存货物的地方,它的存在对每个超市的发展有着至关重要的作用,一个超市的成败很大一部分就与仓库有关。
在人们的日常生活中,超市所销售的物品接近人们的琐碎的生活,它的这中特性也注定了超市仓库的库存量不但大而且品种类型复杂,以前虽然人工记录比
1
较慢但也可以满足超市正常营业的需要,但随着人们生活的水平的提高,先前的模式已不能满足正常的运营了。其经营管理也变得愈加复杂,早期的售货员站柜台的形式早已不能满足现有销售也的发展,这样就迫切地需要引入新的管理技术.
超市形态的高速发展,其经营管理也变得愈加复杂,日常所需要处理的数据量也逐渐增大,商业运转的中间环节也越来越多,原始的人工管理已无法应对这复杂的市场。为此,在选题过程中,我选择了小型仓库管理系统设计题目,依靠现代化的计算机信息处理技术来管理超市仓库,从而节省了大量的人力、物力,改善了员工的工作条件,减轻了劳动强度,并且能够快速反映出商品的进、销、存等状况和各种反馈信息分析,使管理人员快速对市场的变化做出相应的决策,加快超市经营管理效率。
2
第二章 开发运行环境
2。1 JSP语言概述
JSP(java server pages)是由Sun Microsystems公司倡导、许多公司可一起建立的一种动态网页技术标准。JSP技术有点类似于ASP技术,他是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag)从而形成JSP文件(*.jsp)。
2.2 JSP环境的搭建
(1)安装JDK,配置环境变量
Path:D:\\Program Files\\Java\\jdk1.6。0\\bin;
ClassPath:D:\\Program Files\\Java\\jdk1.6。0\\jre\\lib\\rt.jar;。; (2)安装Tomcat,配置环境变量
Java_Home:D:\\Program Files\\Java\\jdk1.6.0 Tomcat_Home:D:\\apache-tomcat-6。0。18
(3)在webapps、ROOT\\WEB—INF下建一个classes文件夹,若要建一些包,如果包名找不到,则需在JDK环境变量中加D:\\apache—tomcat—6.0.18\\ROOT\\WEB-INFclasses\\即可。
2.3 MySQL数据库
MySQL是一个小型关系型数据库管理系统,开发者是瑞典MySQLAB公司.前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开发源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。 MySQL的特征
(1)使用C和C++编写,并使用多种编译器进行测试,保证了源代码的可移植性
3
(2)支持AIX、FreeBSD、HP—UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2Wrap、Solaris、Windows等多种操作系统
(3)为多种编译语言提供API。这些编程语言包括C、C++、Eiffel、Java、Perl、PHP、
Python、Ruby和Tel等
(4)支持多线程,充分利用CPU资源
(5)优化的SQL查询算法,有效的提高查询速度
(6)既能作为一个单独的应用程序应用在客户服务器网络环境中,也能作为一个库嵌入在其他的软件中提供多种语言支持,常见的编码如中文的GB2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名 (7)提供TCP/IP、ODBC和JDBC等多种数据库连接途径 (8)提供用于管理、检查、优化数据库等多种数据库连接途径 (9)可以处理拥有上千万条记录的大型数据库
4
第三章 系统需求分析
3。1 用户工作流程分析
仓库管理系统主要对货物的入库出库、生成报表、货物查询、盘点统计等
关键功能优化创新,使其操作方便便于管理。
3。2 性能需求分析
(1)硬件环境
处理器:Intel(R)core(TM) i3 CPU 内存:2G 硬盘空间: (2)软件环境 操作环境:window 2007 数据库:MySQL
3.3 功能需求分析
超市仓库管理系统,以其强大的功能性要求,系统实现了用户登陆管理、货
物查询等基本功能要求,系统具体功能分析如下: 登录功能:用户登录系统。
查询功能:用户登陆后查询仓库货物存量. 录入功能:向仓库中添加货物以及货物的基本信息
3.4可行性分析
3.4。1技术可行性
本系统采用JSP+JavaBean+Servlet及MySql平台,由于Java的强大功能是对系统的开发容易了很多,特别是基于Jsp的网页形式的开发使Dreamweaver的优势
5
得以发挥。 3.4.2经济可行性
因为通过网络传递销售信息可以不受距离的,因此可以借阅许多的人力和物力,方便管理,由此可以减少不必要的开支,同时该系统可以提高超市的销售效率,即提高了超市的经济效益,所以从经济上完全是可行的.
1.超市有能力承担系统开发费用
开发新系统的工作是一项间距复杂的工作,它的投资主要是人力和物力的投资。对于本系统的开发者来说,其主要投资还是在人力和物力两个方面。如果是企业自己安排人手开发系统的话,其主要的投资还是在人力资源上,从系统的业务需求调查到系统的分析编码制作都是需要巨大的人力投入的。软件企业作为一个简短的高科技产业,其员工要求都比一般企业的要求要高,而且对系统开发及软件产业了解比较多,所以在自我开发管理系统的过程中,企业自己比较容易安排人手,这样就可以为企业借阅大部分的额外开支。同时软件就其它产品来说,属于高端行业,无论是产品的价格还是质量都比较高,而经营产品的经销商或者是商家都要求有雄厚的资金支持。所以,在系统的开发过程中,企业完全有能力承担开发费用。
2.新系统将为企业带来经济效益
管理系统是一个信息化、智能化和先进管理理念的集合体。而管理是一个动态过程,在其运行过程中要采取多项措施。所以在管理中获得经济效益是一个综合效益,要对它进行直接定量的分析是比较困难的.一般新系统带来的经济效益是简介的,其最主要的表现就是减少了企业管理费用和人力开支。而其它一些繁琐的食物都通过新系统来加以分析解决,不仅节省了大量的时间,还为企业的各项决策提供了宝贵的资料,为企业带来巨大的经济效益。 3。4.3操作可行性
本系统采用基于Windows的图形用户界面,而该系统是大家熟悉的操作系统,对于那些有一般的计算机知识的人员就可以轻松上手。而整个超市管理系统采用最友好的交互界面,简介明了,不需要对数据库进行深入的了解。
由此,该系统的操作是可行的,有必要开发该系统。
综合以上三方面,该系统具有很高的开发可行性,无论是从技术上或者经济
6
上还是操作上。因此,可以设计该系统的数据流程图,建立数据字典。 业务流程图
7
第四章 系统概要设计
4.1 设计思想
(1)系统分成几个相对的模块,但这些模块都进行集中式管理。
(2)分层的模块化程序设计思想,整个系统采用模块化结构设计.作为应用程序有较强的可操作性和扩展性。
(3)合理的数据流设计,在应用系统设计中,相对的模块间以数据流相互连接,使各模块间的耦合性较低,方便系统运行,提高系统安全性.
4。2 设计原则
为了使本系统功能齐全完备,操作简便,最大限度的提高软件的质量,从而满足用户的实际需要,在设计开发过程中遵循了如下原则:
(1)合法性原则:依据产品核算系统的工作规定以及要求,参照核算实际的工作情况,进行诸如产品进货、销售等工作。
(2)实用性原则:适合产品信息管理工作的实际需求,并能够处理一些特殊情况的要求,此外,尽可能预留空间,以便扩充功能.
(3)准确性原则:对输入的相关资料建立检错机制,及时报错,使用户能够及时准确的输入合法资料(如:类型匹配,长度不超限等)。
(4)易操作原则:要求设计的系统功能齐全,界面友好,操作方便,必要的地方进行提示.
(5)源程序可读性原则:为了便于其他设计,维护人员读懂代码或以后的代码修改,软件升级维护,即可能做好代码注释工作。
(6)优化原则:为了达到优化的目的,合理的运用窗口,菜单,对象等的继承,自定义用户对象,事件,函数,减少不必要的重复性代码,使程序简介明了,也方便了将来的维护。
(7)安全性原则:可以为该系统的用户设置用户权限。
8
第五章 系统详细设计
5。1超市仓库管理系统E—R图
如下 我所设计的程序只包含其中的几个子模块
5。2、详细设计各个模块E—R图
5。2。1 管理员的实体图及属性
管理员信息 ID 密码 验证码
图4。1 管理员的实体及属性
5.2.2 库存表实体及属性
9
库存表 数量 名称 价格
图4。2 订单实体及属性
5。2.3 出库表的实体及属性
出库表 名称 时间 商品名称 金额 类型
5。2。4 操作记录实际及属性
操作记录 登陆 管理 发件 删除 修改
图4.4.6操作记录实体及属性
10
5.3功能模块详细设计及算法
通过深入研究任务书,搜集、查阅与课题相关的资料,在总体设计阶段该系统预设计系统登录、商品入库、商品查询、商品更改、删除等几个功能模块。个模块又包含多项子功能:
1、统登录模块需要包含完成根据提供的用户名、初始密码进行登录验证 如果成功则进入系统,否则提示无法登录。
2、商品入库模块需要包含完成根据商品编号的首字母来进行商品的分类 如果输入的商品在数据库中存在,则给出已有的信息,可以修改数量;如果输 的商品不存在,则需要输入全部信息。
3、商品查询模块需要包含完成商品查询,分类列出数据库里全部的商品信 息。
4、分组模块需包括对报名信息按项目进行分库、分组等功能项。 5、商品更改、删除模块要包括完成商品更改,当商品售出对数量进行修改 或对其他信息进行修改,商品删除,商品数量为0则进行删除。
5。4系统模块设计
5.4.1.系统登录模块
功能:本模块的主要功能是对用户身份进行,验证只有系统的合法用户才能进入系统。其窗体如下图:
在进行系统登录过程中,登录模块将调用数据库里的用户清单,并对账号和密码进行验证,只有输入了正确的账号和密码后,系统登录才会成功。并在输入
11
了错误的或者是不存在的账户和密码时,系统会给出出错信息提示,指明登录过程中的错误输入或者错误操作,以便用户进行正确的登录。 实现代码如下:
class CLoginDlg : public CDialog {
// Construction public:
CLoginDlg(CWnd* pParent = NULL); // standard constructor ~CLoginDlg(); // Dialog Data
//{{AFX_DATA(CLoginDlg)
enum { IDD = IDD_LOGIN_DIALOG }; CEdit CEdit
m_control_username; m_control_password;
int count; int seconds; CSMButton m_ok; CSMButton m_cancel; CString m_Pwd; CString m_UserName; COLORREF m_clrText; COLORREF m_clrBkgnd; CBrush m_brBkgnd; CBrush m_brControlBkgnd1; CBrush m_brControlBkgnd2; protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support virtual void OnOK();
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
12
afx_msg void OnTimer(UINT nIDEvent); virtual BOOL OnInitDialog(); //}}AFX_MSG
DECLARE_MESSAGE_MAP() };
void CLoginDlg::OnOK() {UpdateData(TRUE); if (m_UserName == ”\"){ MessageBox(\"请输入用户名\");
return;}
if (m_Pwd == ””){ MessageBox(”请输入密码”);
return;}
//定义CUsers对象,用于从表Users中读取数据 CUsers user;
user.GetData(m_UserName);
//如果读取的数据与用户输入数据不同,则返回 if (user.GetPwd() != m_Pwd) { if (count〈3) {MessageBox(\"用户信息不正确,无法登录!\");
count++;
m_Pwd.Empty();
m_control_password.SetFocus();
UpdateData(FALSE);} else {
MessageBox(”你可能是非法用户!\",告”,MB_OK|MB_ICONHAND);
exit(0); }}else{KillTimer(0);CDialog::OnOK();}}
13
\"警
5.4.2.库存管理模块
功能:本模块的主要功能是商品信息的查询和更新,库存信息的查询和更新。 查询商品信息:主要功能查询商品的明细信息,和它的库存信息 添加商品信息:主要功能添加新进的商品.
修改商品信息:主要功能是修改商品的信息,包括他的库存数量。 删除商品信息:主要功能是删除不再销售的商品信息。 输入项、输出项:本模块的数据输入项主要是商品编号。 窗体如下:
代码实现如下:
void CStoreHouseManDlg::Refresh_Data() {
UpdateData(TRUE); CString cSource;
cSource = ”SELECT Sid, Sname AS 仓库单位, Memo AS 备注\"; cSource += ” FROM Storehouse ORDER BY Sname\"; m_adodc.SetRecordSource(cSource); m_adodc。Refresh();
14
//设置表格列宽度 _variant_t vIndex; vIndex = long(0);
m_datagrid。GetColumns().GetItem(vIndex)。SetWidth(0); vIndex = long(1);
m_datagrid。GetColumns()。GetItem(vIndex)。SetWidth(100); vIndex = long(2);
m_datagrid.GetColumns().GetItem(vIndex).SetWidth(420); }
void CStoreHouseManDlg::OnAddButton() {
// TODO: Add your control notification handler code here UpdateData(TRUE); //打开编辑对话框 CStoreHouseEditDlg dlg; dlg。cSid = ””;
if (dlg.DoModal() == IDOK) }
void CStoreHouseManDlg::OnModiButton() {
// TODO: Add your control notification handler code here if (m_adodc。GetRecordset().GetEof()) { }
UpdateData(TRUE); CStoreHouseEditDlg dlg;
15
Refresh_Data();
MessageBox(”请选择要修改的记录\"); return;
dlg.cSid = m_datagrid。GetItem(0); //记录编号 dlg。m_Sname = m_datagrid。GetItem(1); //仓库名称 dlg.m_Memo = m_datagrid.GetItem(2); //备注信息
if (dlg.DoModal() == IDOK) }
void CStoreHouseManDlg::OnDelButton() {
// TODO: Add your control notification handler code here if (m_adodc。GetRecordset()。GetEof()) { } CString Sid;
Sid = m_datagrid.GetItem(0); CStoreIn obj;
if (obj.HaveStore(Sid) == 1) { }
CTakeOut obj1;
if (obj1.HaveStore(Sid) == 1) { }
16
Refresh_Data();
MessageBox(”请选择要删除的记录\"); return;
MessageBox(”此仓库信息出现在入库单中,不能删除\"); return;
MessageBox(\"此仓库信息出现在出库单中,不能删除\"); return;
CProInStore obj2;
if (obj2。HaveStore(Sid) == 1) { }
if (MessageBox(\"是否删除当前记录”,\"请确定\) == IDYES) {
CStorehouse sh; sh。sql_delete(Sid); Refresh_Data();
MessageBox(\"此仓库信息出现在库存产品信息中,不能删除”); return;
} }
BOOL CStoreHouseManDlg::OnInitDialog() {
CDialog::OnInitDialog();
// TODO: Add extra initialization here Refresh_Data();
return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }
在Dreamweaver操作环境下 设计出主要的登陆界面采用超链接的方式跟其它的两个模块连接起来
17
入库模块
这是网页形式的代码