小型超市进销存管理系统的设计与实现
本科毕业设计(论文)
题 目: 小型超市进销存管理系统的设计与实现
院 系: 计算机科学系
专 业: 计算机科学与技术
姓 名:
学 号:
指导教师:
教师职称:
填写日期: 2012年 4月27日
摘要
最初的小型超市进销存管理都是靠人力来完成的,随着我国小型超市经营规模日益扩大,销售额和门店数大幅度增加,许多小型超市正向品种多样化发展,需要处理大量的信息,时刻要更新产品销售信息,不断添加商品信息,并对商品的各种信息进行统计分析。一般大中型小型超市都具有完善的进销存管理体系,但是针对于小型小型超市的这种系统还不多见。有鉴于小型小型超市数量多,种类较丰富,操作人员少的特点,小型小型超市进销存管理系统的设计重在操作简单,功能齐备,一目了然。本系统主要针对小型小型超市的管理,包括顾客管理、厂家管理、商品管理、退货管理,购物车管理,采购管理、个人管理,管理员管理,系统管理等几个方面。系统可以完成对各类信息的浏览、查询、添加、删除、修改等功能。系统采用C/S架构,采用MySQL 来设计数据库,并使用优秀的集成开发工具Eclipse 并安装MyEclipse 插件,使用当前主流的Hibernate 和Spring 框架,项目运行环境为JDK1.6。开发模式采用敏捷开发模式, 使用CVS 进行协同开发,代码书写格式规范,注释详细。
关键字:MySQL 、小型超市、Eclipse 、进销存管理系统
Abstract
The supermarket Invoicing management is to rely on manpower to complete, along with our country supermarket the increasing scale of operation, sales and store numbers greatly increased, many supermarkets to breed diversification development, need to process large amounts of information, to update the product sales information, and constantly add product information, goods and a variety of statistical information analysis of. General large and medium-sized supermarkets have improved the Invoicing management system, but for the small supermarket this system also does not see more. In view of the small supermarket amount much, type is rich, few operating staff characteristics, small supermarket Invoicing management system design is simple operation, complete functions, stick out a mile. This system mainly for small supermarket management, including customer management, vendor management, commodity management, returns management, shopping cart management, procurement management, personal management, administrator management, system management and so on several aspects. System can complete all types of information browsing, query, add, delete, modify the functions of. The system adopts C / S structure, using MySQL to design the database, and use the excellent integrated development tool Eclipse and install MyEclipse plug-in, the use of the current mainstream Hibernate and Spring framework, project operating environment for JDK1.6. Development of model using agile development mode, the use of CVS collaborative development, code writing format specification, detailed notes.
Keywords : MySQL 、supermarket 、Eclipse 、Enterprise Resourse Planning (ERP)
目 录
摘要 . ......................................................................................................................................... I Abstract ................................................................................................................................. II
第一章 概述 . ........................................................................................................................ 1
第二章 系统分析 . ................................................................................................................ 2
第一节 可行性分析 . ...................................................................................................... 2
一、技术可行性 . .................................................................................................... 2
二、经济可行性 . .................................................................................................... 2
三、操作可行性 . .................................................................................................... 2
四、运行可行性 . .................................................................................................... 2
第二节 系统需求分析 . .................................................................................................. 2
一、职能分析 . ........................................................................................................ 3
二、功能分析 . ........................................................................................................ 3
三、附加功能 . ........................................................................................................ 4
第三章 系统设计与实现 . ...................................................................................................... 5
第一节、数据库设计 . .................................................................................................... 5
一、E-R 图 ............................................................................................................. 6
二、使用使用PowerDesigner 建模 ...................................................................... 7
三、数据字典 . ........................................................................................................ 7
第二节 功能模块设计 . ................................................................................................ 13
第三节 模块的实现 . .................................................................................................... 14
一、 登陆功能实现 ............................................................................................. 15
二、商品管理实现 . .............................................................................................. 17
三、购物车管理模块实现 . .................................................................................. 21
四、管理员功能模块实现 . .................................................................................. 24
第四章 系统测试与发布 . .................................................................................................... 27
第一节 单元测试概述 . ................................................................................................ 27
第二节 什么是单元测试 . ............................................................................................ 27
第三节 系统打包发布 . ................................................................................................ 27
第四节 API 参考文档 ................................................................................................. 28
第五章 总结与展望 . ............................................................................................................ 29
致谢 . ...................................................................................................................................... 30
参考文献 . .............................................................................................................................. 31
第一章 概述
小型小型超市一般是十人以下,分布较广的小型超市集群。针对与小型小型超市的进销存管理系统,其开发主要包括后台数据库的建立和维护以及前端界面程序的开发两个方面。小型小型超市进销存管理系统在设计上体现了人性化和“以人为本”的精神,要求操作简单,权限明确,功能完善。界面设计上亲切友好,简单直观,便于操作。
系统的核心是进货、销售和库存三者之间的联系,每一个表的修改都将会牵扯到其它的表,当完成进货、销售和退货操作时系统会自动地完成相对应信息的修改。查询功能也是系统的核心之一,在系统中可以进行模糊查询和精确查询,其目的都是为了方便用户使用,以求更快的查找到相应的基本信息。
利用小型超市管理系统可以在以下几个方面提高小型超市管理的水平:
✓ 提高管理效率
✓ 提高销售额
✓ 降低人工成本
✓ 降低采购成本
✓ 商业数据智能分析
✓ 高效决策
第二章 系统分析
第一节 可行性分析
随着市场经济和现代技术的发展,小型超市的管理系统逐渐走向信息化。为了更加节约人力资源,压缩成本,简便操作,小型超市进销存管理系统的建立尤为必要。而随着小型超市的普及,针对小型超市的进销存管理系统将应运而生。我们从技术、经济、操作、运行等几个方面进行可行性分析。
一、技术可行性
从技术角度分析,这项开发工作所涉及的专业技术为:Java 编程技术、Swing 、J2SE 、MySQL 、Hibernate 、Spring 。
二、经济可行性
采用计算机管理不但可以提高工作效率,而且还可以节省人力、物力、财力,这样原来几个人干的工作现在一个人就完全可以胜任。因此单从节省的职工工资、提高工作效率而避免各种直接或间接的经济损失角度来看,该系统实际所能够起到的作用将会远远大于投入的开发费用,所以从经济上是完全可行的。
三、操作可行性
开发所采用的工具是MyEclipse ,开发出的应用程序均是图形化界面,操作员几乎不用记住任何DOS 命令就可以直接操作此软件。另外,软件的操作员大多已经会基本的Windows 操作,即便不会操作Windows ,经过短期的培训也能熟练地使用本软件,所以在操作上也是可行的。
四、运行可行性
本系统经过精心设计开发, 比较紧凑,项目比较小,所以对软硬的要求并不高,运行投入也相对较少,现在普通的电脑都能够满足条件,因此,本系统在运行上是可行的。
综上所述,此系统开发目标已明确,在技术和经济等方面都可行,不会存在问题,并且投入少、效率高。因此认为该小型小型超市进销存管理系统可以开发。
第二节 系统需求分析
小型超市进销存系统必须提供顾客信息、厂家信息、采购信息、销售信息、库存信息和财务信息的基础设计,提供强大的精确查找和模糊查找信息的功能,可以分不同权限、不同用户对该系统进行操作。另外,该系统还必须保证数据的安全性、完整性和准确性。
小型超市进销存管理系统的目标是实现小型超市信息化管理,减少盲目采购、降低采购成本、合理控制库存、减少资金占用并提升小型超市综合竞争力。时间就是金钱,效率就是生命。小型超市进销存管理系统能够为小型超市节省大量人力资源,减少管理费用,从而间接为小型超市节约成本,提高小型超市效率,创造收益。
一、职能分析
通过与各种类型小型超市人员进行交流,发现小型超市管理系统需要满足来自多个不同用户的要求。在小型超市经营中,按照人员的职能分为五大类,分别是顾客、营业员、采购员、经理、系统管理员。从小型超市的角度出发,一般也具有这五大职能类别。 顾客
顾客是小型超市的上帝,是小型超市创造收入的直接对象,因此小型超市的所有商品都是建立在顾客的需求上的!而顾客的要求就是能购买到经济实惠的商品。我将顾客按类型分为三种:
1. 普通顾客:购买次数少,金额小。购买商品(无积分,无须注册)。
2. 会员:购买次数多,金额比较大,是主要服务对象购买商品送积分,办会员卡免费,有充值功能!如果充值金额大于100, 每充100元送5元,积分用于节日促销活动。。
3. 贵宾:购买次数一般,金额大,是需要经常维护的对象。会员积分达到一定的数量时,可以转成贵宾卡,购买商品送更多的积分,有充值功能!如果充值金额大于100, 每充100元送5元,积分用于节日促销活动。贵宾拥有更多的权利。
采购员
采购员的要求是查看经理指派给自己的所有采购信息并按规定完成任务,即去联系厂家并按规定验收采购的商品,并退回不合格的采购商品。修改自己的账号密码。 营业员
营业员的要求是销售商品给顾客,添加购物车信息、可以查看、查找、添加、修改顾客信息、但不可以删除顾客信息。并做好记录顾客因各种原因而退货的商品信息。修改自己的账号密码。
经理
经理的要求是能够查看1)采购、2) 销售、3) 库存、4) 商品、5)营业额等信息从而进行高效决策,如:下达采购信息;添加删除用户,即雇佣和解雇职员。修改自己的账号密码。
系统管理员
系统管理员只具有管理用户和管理系统的权限,不具备所有用户的权限,即没有采购员、营业员、经理等角色的权限。修改自己的账号密码。
二、功能分析
小型超市的管理系统必须建立在实用,适用的基础上,因此在通过与小型超市管理人员进行反复的讨论后,最终确定系统应该实现以下功能:
(一) 对商品信息的变动进行处理
在商品的采购和销售过程中,商品信息总是在不断变化的,比如商品价格的调整、商品信息的修改、新商品信息的增加以及旧商品信息的删除,因此设计系统时必须考虑到这些情况。商品信息有商品编号、商品名、商品数量、商品规格、商品价格、厂
家名等属性。
(二) 对用户信息的变动进行处理
需考虑到职员的雇佣和解雇、所以用户信息的修改及删除也是要有的。
(三) 对采购信息的变动进行处理
采购员在采购的过程中采购信息也在不断发生改变,因此也要充分考虑。采购信息有采购编号、采购日期、商品厂家、采购员、商品价格、商品规格、商品数量等属性。
(四) 对销售信息的变动进行处理
营业员在销售的过程中销售信息也在不断发生改变,如顾客买到了劣质产品要求退货,因此也要充分考虑。
(五) 查询及统计功能
要求可以根据指定的条件对厂家信息、顾客信息、商品信息、采购信息、销售信息进行查询和对每天账务的收入支出进行统计查询!查询又分为精确查询和模糊查询。
三、附加功能
为了能当小型超市增加新的业务需求时能方便的升级系统,所以系统应当具有良好的扩张性,将能够与第三方产品对接,比如:与短信平台对接以提供短信发送和接收功能;与声讯系统对接,提供自动呼叫服务;与邮件系统对接以发送和接受邮件;当然,种种功能的完善和实现,都需要进一步的研究和更新。
第三章 系统设计与实现
根据系统分析的描述以及与小型超市人员的沟通,实现目标如下:
● 界面设计简洁、友好、美观大方。
● 操作简单、快捷方便。
● 数据存储安全、可靠。
● 信息分类清晰、准确。
● 强大的查询功能,保证数据查询的灵活性。
● 提供销售排行榜,为管理员提供真实的数据信息。
● 提供灵活、方便的权限设置功能,使整个系统的管理分工明确。
● 对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。
由于此系统是一个典型的客户/服务器(C/S)体系结构的数据库应用程序,因此具体设计阶段主要分两大部分进行:数据库的设计和各种功能模块及界面的设计。从运用的技术角度分析,即MySQL 部分的设计和Java 部分的设计。下面,我们将从这两个方面对系统的设计进行阐述。
第一节、数据库设计
小型超市进销存管理系统是一个基于C/S架构的应用程序,它可以直接在本地计算机上运行,而不需要向Web 应用那样部署到指定的服务器中。所以这个小型超市进销存管理系统在本地计算机上安装了MySQL 数据库服务器,将数据库和应用程序放在同一个计算机中,可以节省开销、提升系统安全性。另外,本系统也可以在网络内的其他计算机中运行,但是这需要将数据库对外开放、会降低数据安全性,其数据库运行环境如下: 硬件平台:
✓ CPU :Inter E2180 2GHz
✓ 内存:2GB
✓ 硬盘空间:160GB
软件平台:
✓ 操作系统:Windows XP SP3
✓ 数据库:MySQL5.0
小型超市进销存管理系统的数据库设计采用关系数据模型理论,有关系的元素组成一张表,表与表之间用外键保持一致性,用主键的方式确保记录的唯一性。涉及的表有充值表、顾客表、厂家表、商品表、日志表、财务表、退货表、销售表、购物车表、采购表和用户表共十一张表。小型超市管理系统模块分为:登录模块、顾客管理模块、厂家管理模块、商品管理模块、退货管理模块、购物车管理模块、采购管理模块、个人管理模块、管理员管理模块和系统管理模块共十大模块。为了方便数据库的设计,缩小开发周期,我用PowerDesigner 软件把表都设计好,然后自动生成数据库的建表SQL 语句。在对数据库进行访问时我用到了MVC 设计模式中DAO (Data Access Object )技术封装对数据库的查询、删除、插入等各种操作,这样提高数据库访问的透明性和系统的灵活性。
一、E-R 图
小型超市进销存管理系统主要实现从进货、退货、库存到销售的一体化信息管理,涉及到了顾客信息、厂家信息、商品信息等多个实体。下面简单介绍几个关键的实体E-R 图。 顾客实体E-R 图
小型超市进销存管理系统将记录所有的顾客信息,顾客实体包括顾客编号、顾客姓名、顾客性别、顾客年龄、顾客联系电话、顾客联系地址、顾客电子邮箱、顾客类型、顾客可用余额、顾客可用积分等属性,顾客E-R 图如图1所示。
图3.1顾客实体E-R 图
厂家实体E-R 图
小型超市进销存管理系统将记录所有的厂家信息,厂家实体包括厂家编号、厂家名称、厂家负责人、厂家联系电话、厂家地址等属性,厂家E-R 图如图2所示。
图3.2 厂家实体E-R 图
商品实体E-R 图
小型超市进销存管理系统将记录所有的商品信息,商品实体包括商品编号、商品名称、
商品数量、商品规格、商品价格、商品厂家名等属性,商品E-R 图如图3所示。
图3.3 商品实体E-R 图
二、使用使用PowerDesigner 建模
在数据库概念设计中已经分析了本系统中主要的数据实体对象,通过这些实体可以得出数据表结构的基本模型,最终实施到数据库中,形成完整的数据结构。本系统使用PowerDesigner 工具完成数据库建模,使用的版本为12.5。使用该工具生成的模型如图4下:
图3.4 小型超市进销存管理系统的模型
三、数据字典
表3.1 充值表
表3.3 厂家表
表3.5 日志表
表3.7 退货表
表3.10 采购表
表3.11 用户表
表3.12 用户组表
表3.14 权限表
第二节 功能模块设计
根据以上对小型超市管理系统数据库的分析,一个标准的小型超市进销存管理系统应该实现的主要的功能模块有:登录模块、采购管理模块、退货管理模块、商品信息管理模块、购物车管理模块、用户管理模块、顾客管理模块、厂家管理模块、统计管理模块、管理员管理模块。(共十大模块)为了方便,应该加入准确查询和模糊查询。下面对这些功能模块作下简单的介绍。 登录模块
用于验证用户的登录。不同的用户成功登录后显示的窗体是不一样的。这是每个系统都应该具有的功能,在这里我要特别的介绍一下了。别小看了一个普通的登录模块,它包含的用户需求可以是有几十条的。比如:用户不能重复登录,输入三次密码错误后,应该锁定用户的账号,记住密码功能,以及对密码进行MD5加密(解密)等等。 顾客管理模块
这个模块用于维护顾客的资料。系统中顾客分为三种:贵宾、会员、普通顾客。类型为0表示普通顾客,为1表示会员,为2表示贵宾,系统默认有一个BuyerID 为0的普通顾客。其都有如下几个基本信息:顾客ID 、顾客名、性别、年龄、地址、电话、E-mail 、顾客类别。顾客的信息是小型超市一个很重要的市场资源、必须持久性的保存到数据库中,同时为了数据的安全性,应定期将数据备份到其他介质上保存或把数据打印成资料保管起来。顾客管理包括:增加顾客、删除顾客、修改顾客、查询顾客。 厂家管理模块
这个模块用于维护厂家的资料。系统中厂家有如下几个基本的信息:厂家ID 、厂家名称、厂家经理、厂家联系电话、厂家地址。厂家的信息也是小型超市的一个很重要的信息,所以必须是管理员或经理才能查看。同时为了数据的安全性,应定期将数据备份到其他介质上保存或把数据打印成资料保管起来。厂家管理模块包括:增加厂家信息、删除厂家信息、修改厂家信息、查询厂家信息。 商品管理模块
这个模块用户维护商品的资料。当小型超市中出现了由于商品价格定价过高而导致商品不畅销的商品时,可以更新商品的价格信息。系统中商品都有如下几个基本信息:商品ID 、商品名称、商品数量、商品规格、商品价格、商品厂家名。商品信息管理包括:更新商品信息、查询商品信息。 退货管理模块
用于对采购了问题产品而退货和顾客购买了问题产品而退货的信息进行登记。采购员对应采购退货,工作流程:对小型超市的采购退货记录进行详细记录。营业员对应销售退
货,工作流程:对小型超市的销售退货记录进行详细记录。 购物车管理模块
用于营业员管理小型超市的销售业务,其主要功能是让营业员进行销售信息的添加及查询。为了让经理和系统管理员了解销售情况!购物车管理模块工作流程是:营业员先扫描顾客购物车里面的商品,然后确定顾客是普通顾客还是会员,是付现金还是刷卡,最后打印出销售小票。并把销售记录进行详细的记录。 采购管理模块
用于采购员管理小型超市的采购业务,其主要功能是完成小型超市采购信息的添加及查询。工作流程是:经理通过查看小型超市的销售状况和对库存进行盘点,对库存不足的商品进行采购,并下达采购信息,指派给相对应的采购员去完成,采购员则接受经理的命令,去厂家采购商品,并验收入库,还要对小型超市的采购记录进行详细记录。 个人管理模块
用户系统用户修改自己的账号密码和修改自己的个人信息。不同的用户只能够修改自己的密码和个人信息。提高了系统的安全性和准确性。个人管理模块还有换班管理以及局域网聊天子系统等功能,方便用户的特殊需求,如小型超市职工需请假,则可以通过换班管理,和其他人交接班,以方便小型超市的正常运转。局域网聊天是为了经理给小型超市职工下达通知以及小型超市职工向经理汇报情况等提供方便,提高工作效率,异地协同办公。
管理员管理模块
用于给系统分配登录用户。不同的用户具有不同的权限,权限管理可以提高系统的安全性。系统用户分为四种级别的用户,系统管理员、经理、营业员和采购员。其都有如下几个基本信息:用户ID 、用户名、用户密码、用户电话、用户地址、用户类别。系统默认有一个系统管理员admin ,密码设置为admin ,系统管理员能够操作系统中所有的功能。用户管理包括对经理、营业员、采购员等用户进行添加和删除等管理。工作流程:1、负责系统登录用户的管理。 系统管理模块
系统管理是软件最基本、最重要的信息。其包含有查看系统日志、查看销售信息、查看充值信息和收入支出统计等功能。查看系统日志要求对该系统的使用情况进行记录,如何时何地何人使用过该小型超市进销存管理系统,以及对重要信息的增删改进行记录,方便经理进行查阅。查看销售信息、查看充值信息和收入支出统计等功能模块用于管理员或经理了解小型超市的经营情况,从而做出重要性的高校决策。提高管理效率!
第三节 模块的实现
系统整体操作流程分别如下图3.5,由于系统设计的模块较多,不便一一叙述,因此挑选登录功能、
图3.5 系统整体流程图
一、 登录功能实现
用户登录系统的登入,需要用户输入相应身份的用户名、密码,成功后方能进入系统,如果输入信息不正确,则无法登录,登录的流程图如下所示:
图3.6 登陆流程图
登录界面是使用者在使用此软件时需要输入自已的账号和密码,从而使用自已的权限来管理小型超市的运行。
运行该系统出现登录窗体,如下图3.5所示。
图3.7 系统登录界面
主要实现代码如下:
package org.yinpan.supermarket.gui; /**
* 初始化窗体 */
private void initFrame() {
loginFrame = new JFrame(Common.getMessage("title")); loginFrame.setSize(380, 300); // 设置窗口的显示位置和大小
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = loginFrame.getSize();
int x = (int) (screenSize.getWidth() - frameSize.getWidth()) / 2; int y = (int) (screenSize.getHeight() - frameSize.getHeight()) / 2; loginFrame.setLocation(x, y); // 设置窗口的大小固定
loginFrame.setResizable(false); // 设置窗口的布局格式 loginFrame.setLayout(null);
// 添加图片
Icon icon = new ImageIcon("res\\about2.jpg");
JLabel aboutLabel = new JLabel(icon);// 创建具有指定图像的 // JLabel实例。该标签在其显示区内垂直和水平居中对齐。 aboutLabel.setBounds(0, 0, 380, 150); loginFrame.add(aboutLabel); // 添加用户名
JLabel userNameLabel = new JLabel(Common.getMessage("username")); userNameLabel.setBounds(5, 155, 80, 20);
userPwdField = new JPasswordField(); userPwdField.setBounds(80, 180, 290, 20); userPwdField.setFocusable(true); loginFrame.add(userPwdField);
confirmBtn = new JButton(Common.getMessage("login")); confirmBtn.setBounds(70, 220, 80, 20); loginFrame.add(confirmBtn);
cancelBtn = new JButton(Common.getMessage("cancel")); cancelBtn.setBounds(220, 220, 80, 20); loginFrame.add(cancelBtn);
loginFrame.add(userNameLabel); userNameField = new JTextField();
userNameField.setBounds(80, 155, 290, 20); loginFrame.add(userNameField); // 添加密码
JLabel userPwdLabel = new JLabel(Common.getMessage("userpwd")); userPwdLabel.setBounds(5, 180, 80, 20); loginFrame.add(userPwdLabel);
loginFrame.setVisible(true); }
二、商品管理实现
输入用户名、密码后进入小型超市进销存管理系统主窗体界面如下图所示。
图3.6 系统管理界面
商品管理模块的主要功能是由营业员来完成的,员工的功能模块如下:
图3.7 员工功能模块
商品管理这个模块是用户维护商品的资料。系统中商品都有如下几个基本信息:商品ID 、商品名称、商品数量、商品规格、商品价格、商品厂家名。商品信息管理包括:更新商品信息、查询商品信息。
下图是商品查询界面
图3.8 查看商品信息
核心代码实现如下:
private void initFrame() {
seeGoodsInfoFrame = new JFrame("查看商品信息---小型超市进销存管理系统"); seeGoodsInfoFrame.setBounds(400, 300, 550, 500); seeGoodsInfoFrame.setResizable(false); seeGoodsInfoFrame.setLayout(null);
// 精确查询商品信息
JLabel queryLabel1 = new JLabel("精确查找:"); queryLabel1.setBounds(10, 10, 100, 20); seeGoodsInfoFrame.add(queryLabel1);
String[] str1 = { "商品ID", "商品数量", "商品价格" }; keyCombox = new JComboBox(str1); keyCombox.setBounds(90, 10, 100, 20); seeGoodsInfoFrame.add(keyCombox); String[] str2 = { ">", ">=", "=", "
valueField.setBounds(300, 10, 110, 20); seeGoodsInfoFrame.add(valueField); queryBtn = new JButton("准确查询"); queryBtn.setBounds(420, 10, 90, 20); seeGoodsInfoFrame.add(queryBtn);
// 模糊查询商品信息
JLabel queryLabel2 = new JLabel("模糊查找:"); queryLabel2.setBounds(10, 40, 100, 20); seeGoodsInfoFrame.add(queryLabel2);
String[] str21 = { "商品ID", "商品名", "商品数量", "商品规格", "商品价格", "厂家名keyCombox2 = new JComboBox(str21); keyCombox2.setBounds(90, 40, 100, 20); seeGoodsInfoFrame.add(keyCombox2);
JLabel queryLabel3 = new JLabel("全部或部分名称:"); queryLabel3.setBounds(200, 40, 120, 20); seeGoodsInfoFrame.add(queryLabel3);
" };
valueField2 = new JTextField(); valueField2.setBounds(300, 40, 110, 20); seeGoodsInfoFrame.add(valueField2); queryBtn2 = new JButton("模糊查询"); queryBtn2.setBounds(420, 40, 90, 20); seeGoodsInfoFrame.add(queryBtn2); JScrollPane goodsInfoScollPane = new JScrollPane(); goodsInfoScollPane.setBounds(10, 80, 520, 350); seeGoodsInfoFrame.add(goodsInfoScollPane); // 创建表的列名向量 Vector columnsVector = new Vector(); String[] columns = { "商品ID", "商品名", "商品数量", "商品规格", "商品价格", "厂家名" }; // 为表的列名向量赋值 for (int i = 0; i
三、购物车管理模块实现
用于管理小型超市的销售业务,主要使用对象是营业员,其主要功能是让营业员进行销售信息的添加及查询,同时,让经理和系统管理员了解销售情况。购物车管理模块工作流程是:营业员先扫描顾客购物车里面的商品,然后确定顾客是普通顾客还是会员(出示会员卡或者贵宾卡),是付现金还是刷卡,最后打印出销售小票。并把销售记录进行详细的记录。
打折
删除VIP
图3.9 营业员用例图
选择“购物车管理”/“添加购物车信息”按钮,在弹出的窗体中进行对销售信息的操作。如下图所示。
图3.10 查看购物车信息
核心代码实现如下:
/**
* 初始化窗体 * */
private void initFrame() {
seeShopCarInfoFrame = new JFrame("查看购物车信息---小型超市进销存管理系统"); seeShopCarInfoFrame.setBounds(400, 300, 550, 500); seeShopCarInfoFrame.setResizable(false); seeShopCarInfoFrame.setLayout(null);
// 精确查询购物车信息
JLabel queryLabel1 = new JLabel("精确查找:"); queryLabel1.setBounds(10, 10, 100, 20); seeShopCarInfoFrame.add(queryLabel1);
String[] str1 = { "购物车ID", "条形码", "购买数量", "商品单价" }; keyCombox = new JComboBox(str1); keyCombox.setBounds(90, 10, 100, 20); seeShopCarInfoFrame.add(keyCombox); String[] str2 = { ">", ">=", "=", "
valueField.setBounds(300, 10, 110, 20); seeShopCarInfoFrame.add(valueField); queryBtn = new JButton("准确查询"); queryBtn.setBounds(420, 10, 90, 20); seeShopCarInfoFrame.add(queryBtn);
// 模糊查询购物车信息
JLabel queryLabel2 = new JLabel("模糊查找:"); queryLabel2.setBounds(10, 40, 100, 20); seeShopCarInfoFrame.add(queryLabel2);
String[] str21 = { "购物车ID", "条形码", "商品名称", "商品规格", "购买数量", "商品 " 顾客名", "用户名" };
keyCombox2 = new JComboBox(str21); keyCombox2.setBounds(90, 40, 100, 20); seeShopCarInfoFrame.add(keyCombox2);
单价",
JLabel queryLabel3 = new JLabel("全部或部分名称:"); queryLabel3.setBounds(200, 40, 120, 20); seeShopCarInfoFrame.add(queryLabel3); valueField2 = new JTextField(); valueField2.setBounds(300, 40, 110, 20); seeShopCarInfoFrame.add(valueField2); queryBtn2 = new JButton("模糊查询"); queryBtn2.setBounds(420, 40, 90, 20); seeShopCarInfoFrame.add(queryBtn2); JScrollPane stockInfoScollPane = new JScrollPane(); stockInfoScollPane.setBounds(10, 80, 520, 350); seeShopCarInfoFrame.add(stockInfoScollPane); // 创建表的列名向量 Vector columnsVector = new Vector(); String[] columns = { "购物车ID", "条形码", "商品名称", "商品规格", "购买数量", "商品单价", " 顾客名", "用户名" }; // 为表的列名向量赋值 for (int i = 0; i
}
seeShopCarInfoFrame.add(numLabel); seeShopCarInfoFrame.setVisible(true);
public static void main(String[] args) { new SeeShopCarInfoFrame().init(); }
四、管理员功能模块实现
本模块用于给系统分配登录用户。根据系统设计不同的用户具有不同的权限,权限管理可以提高系统的安全性。系统用户分为四种级别的用户,系统管理员、经理、营业员和采购员。其都有如下几个基本信息:用户ID 、用户名、用户密码、用户电话、用户地址、用户类别。系统默认有一个系统管理员admin ,密码设置为123,系统管理员能够操作系统中所有的功能。用户管理包括对经理、营业员、采购员等用户进行添加和删除等管理。工作流程:1、负责系统登录用户的管理。
图3.911系统管理员用例图
选择“管理员管理”/“添加用户”按钮,在弹出的窗体中进行添加操作。如图3.12所示。
图3.12 添加用户界面
核心代码实现如下: /**
* 初始化窗体 * */
private void initFrame() {
addUserInfoFrame = new JFrame("添加用户---小型超市进销存管理系统"); addUserInfoFrame.setBounds(300, 300, 380, 280); addUserInfoFrame.setLayout(null); addUserInfoFrame.setResizable(false);
// 增加用户
JLabel userNameLabel = new JLabel("用户名:"); userNameLabel.setBounds(10, 10, 60, 20); addUserInfoFrame.add(userNameLabel); userNameField = new JTextField();
userNameField.setBounds(100, 10, 100, 20); addUserInfoFrame.add(userNameField);
userNameConfirmBtn = new JButton("检测用户名"); userNameConfirmBtn.setBounds(210, 10, 120, 20); addUserInfoFrame.add(userNameConfirmBtn);
JLabel userPwdLabel = new JLabel("密 码:"); userPwdLabel.setBounds(10, 50, 60, 20); addUserInfoFrame.add(userPwdLabel); userPwdField = new JPasswordField(); userPwdField.setBounds(100, 50, 100, 20); addUserInfoFrame.add(userPwdField); JLabel userPhoneLabel = new JLabel("用户电话:"); userPhoneLabel.setBounds(10, 90, 80, 20); addUserInfoFrame.add(userPhoneLabel); userPhoneField = new JTextField(); userPhoneField.setBounds(100, 90, 100, 20); addUserInfoFrame.add(userPhoneField); JLabel userAddressLabel = new JLabel("用户地址:"); userAddressLabel.setBounds(10, 130, 90, 20); addUserInfoFrame.add(userAddressLabel); userAddressField = new JTextField(); userAddressField.setBounds(100, 130, 100, 20); addUserInfoFrame.add(userAddressField); JLabel userTypeLabel = new JLabel("用户类别:"); userTypeLabel.setBounds(10, 170, 80, 20); addUserInfoFrame.add(userTypeLabel); String[] str = { "管理员", "经理", "营业员", "采购员" };// 管理员为0,经理为1,营业员为2,采购员为3 userTypeCombox = new JComboBox(str); userTypeCombox.setBounds(100, 170, 70, 20); addUserInfoFrame.add(userTypeCombox); additonBtn = new JButton("添加用户"); additonBtn.setBounds(50, 210, 90, 20); addUserInfoFrame.add(additonBtn); addUserInfoFrame.setVisible(true); }
第四章 系统测试与发布
在现代软件开发过程中,测试不再作为一个独立的生命周期,单元测试成为与编写代码同步进行的开发活动。单元测试能够提高程序员对程序的信心,保证程序的质量,加快软件开发速度,使程序易于维护。
第一节 单元测试概述
单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立工作单元将在与程序的其他部分相隔离的情况下进行测试。
在一种传统的结构化编程语言中,如Java 语言,要进行测试的工作单元一般是方法。在像C++这样的面向对象的语言中,要进行测试的基本单元是类。单元测试不仅仅是作为无错编码的一种辅助手段,在一次性的开发过程中使用,单元测试还必须是重复的,无论是在软件修改或移植到新的运行环境的过程中。因此,所有的测试都必须在整个软件系统的生命周期中进行。
第二节 什么是单元测试
它是一种验证行为
程序中的每一项功能都可以通过单元测试来验证其正确性。它为以后的开发提供支持。就算是开发后期,也可以轻松地增加功能或更改程序结构,更不用担心这个过程中会破坏重要的东西。而且它为代码的重构提供了保障。这样,我们就可以自由地对程序进行改进。
它是一种设计行为
编写单元测试将我使我们从调用者的角度观察、思考。特别是先写测试,迫使我们把程序设计成易于调用和可测试的,即迫使我们解除软件中的耦合。
它是一种编写文档的行为
在很多项目的初期,项目中的大部分程序员都能够自觉地编写单元测试。随着项目的进展、任务的加重,离交付时间越来越近,不能按时完成项目的风险越来越大,单元测试就往往成为牺牲品了。项目经理因为进度的压力也不重视了,程序员因为编码的压力和无人看管而不再为代码编写单元测试了,越是在项目的后期,能够坚持编写测试的程序员在整个项目组中所占的比例越来越低。为了追赶项目进度,多数程序员将没有经过任何测试的程序代码上传到版本控制系统,项目经理也不再追问,照单全收。这样做的结果就是在项目后期,技术骨干人员只好加班加点进行系统集成,集成完了之后,下发给测试人员测试,Bug 的报告数量翻倍增长。程序员开始修改Bug ,但有非常多的Bug 隐藏得很深,一直潜伏到生产环境中去。
第三节 系统打包发布
Java 应用程序可以打包成Jar 文件,Jar 文件是一个简单的ZIP 格式的文件,它包含程序中的类文件和执行程序的其他资源文件。在程序发布之前,需要将所有的编译好了的Java 文件封装到一个程序打包文件中,然后将这个程序的打包文件提交给客户使用。一旦程序打包之后,就可以使用简单的命令来执行它。另外,如果配置好Java 环境或使用JDK 的
安装程序构建Java 环境,那么就可以像运行本地可执行文件一样去执行Jar 文件。然后可以发送到桌面快捷方式,这样就可以点击桌面的快捷方式来运行该小型超市进销存管理系统。
第四节 API 参考文档
通过点击MyEclipse 的“Project ”/“Generate Javadoc”生成的该小型超市进销存管理系统API 参考文档如下图所示。生成的系统API 参考文档可以方便其他程序员做二次开发及扩展。
图4.1 API参考文档
第五章 总结与展望
实现小型超市信息化管理是现代社会小型超市稳步发展的必要条件,它可以提高小型超市的管理水平和工作效率,最大限度地减少手工操作带来的失误。通过完成这次毕业设计,我学习到了如何进行系统分析,如何进行系统设计,如何进行数据库分析和数据库建模,
在社会生活不断信息化以及软件不断网络化的今天,我们日常生活中的小型超市实现现代化、信息化及其人性化的管理势在必行,传统的人工管理小型超市的方式必然跟不上时代的节奏,而前台利用Java 开发再加上后台使用MySQL 数据库技术,两者结合的开发结构是小型超市管理系统实现的良好选择。
致谢
本次毕业设计的选题、设计方法及报告的撰写均是在指导教师梁老师的细心指导下进行的。设计中离不开老师梁细心耐心的帮助,论文经过了初稿,二稿几次修改后才得以成行,在论文设计的过程中,犯了很多错误,甚至有很多低级的错误,我自己都感到很惭愧,但是梁老师依然没有责怪我,而是提醒我“只有对自己负责别人才能对你负责”。因此,在二稿的修改中,鉴于梁老师的意见我又通篇的进行了琢磨、修改,对到现在还没完全理解的内容向同学、师兄请教。没有老师的细心指导,就没有我们的设计成果。梁老师在我面对问题的时候虚心的指导和帮助及其严谨的工作态度、创新的精神,都使我受益匪浅,在此特别向梁老师表示深深的感谢和由衷的敬意。
大学四年向我教授各门知识的顾老师、杨阳老师、欧阳老师、王老师、于老师、温老师等等,每一个向我传授知识的老师都应该感谢,是他们让我这次毕业设计有了理论的基础。同时,我还需要特别感谢一位贵大的师兄,在他的帮助下,我的思路受到了启示,才能有论文整体的内容。
在此次毕业设计中,让我感觉到,学习永远都是无止境的,也是不定向的,我们需要学习和掌握的东西还有很多,特别是在毕业之后。在毕业设计整个过程中所遇到的挫败、提点、责问、辩解、帮助等等,都将成为以后的学习,工作,乃至生活上宝贵的财富和难忘的记忆。我会牢记住这段时间一点一滴的烦恼和辛苦汗水,还有成功后的欢笑,会记住曾给予我帮助、鼓励、批评的老师和同学们。最后,再一次衷心的感谢给予我帮助与支持的梁老师和朋友,谢谢你们!
参考文献
[1] 王红霞.Java 程序设计基础教程. 北京:中国电力出版社,2009
[2] 李相国.Java 实例精通. 北京:机械工业出版社,2009.3
[3] 黄晓东.Java 课程设计案例精编( 第二版). 北京:中国水利水电出版社,2007
[4] 张孝祥.Java 就业培训教程. 北京:清华大学出版社,2003
[5] (美)Herbert Schildt.Java参考大全. 北京:清华大学出版社,2006
[6] 王克宏.Java 技术教程(基础篇). 北京:清华大学出版社,2002
[7] 袁然.Java 案例开发集锦. 北京:电子工业出版社,2005
[8] David Flanagan.JAVA技术手册. 中国电力出版社
[9] Java项目开发全程实录
[10]冯硕,贾志博.Visual Basic数据库编程宝典,电子工业出版社,2001.5
[11]李勇平.Visual Basic 6.0案例教程,电子出版物数据中心《Computer DIY》杂志社,
2001.6