版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业设计说明书题目:超市收银系统的设计与实现产品设计工艺设计方案设计类型:学生姓名:学号:_________________学院:软件学院专业:软件技术(软件开发方向)班级:学校指导教师:企业指导教师:2016年05月03日目录TOC\o"1-3"\u1.绪论 11.1项目开发主要技术java介绍 绪论虽然在当今的21世纪,各种商场的收银系统都很齐全,但是不免会有些许的不足,比如传统的按单结算,但是我想开发一款既能收银服务,又能管理超市的各项业务,比如销售模块,库存模块,商品模块,进退货模块等,这样一来就比传统的收银系统在功能上和经济上更加方便快捷,因为现在市场上的竞争与日俱增,不仅仅是软件这方面的竞争了,更是各行各业的事情,一款简单方便的收银系统肯定是必须的,自此我选择了超市收银这个系统,以我最大的努力设计出独具一格且富有经济性的软件,节省人力物力!仅靠计算机轻松实现收银与管理,不管是效率还是速度都远远超过人工!尤其是本系统的后台管理,可谓是万事俱备。本系统采用了eclipse开发java项目,Oracle作为数据库的开发软件,取名为emp,利用jdbc技术进行连接用来保存各种数据,商品管理模块实现了添加商品以及进出货管理,用户管理实现了用户信息添加比如收银员、管理员、会员、顾客等和用户信息查询,库存查询模块实现了快速浏览查询和较为详细的查询,信息查询模块实现了根据商品编号和条形码来查询商品的信息,销售管理功能模块实现了可以查询商品的销售的相关信息,可以显示已经销售掉的商品的名称、商品编码、销售数量、销售金额、销售日期以及金额。总而言之,这款超市收银系统的开发对我对企业一定有很大的帮助。1.1项目开发主要技术java介绍Java是由SunMicrosystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称。由JamesGosling和同事们共同研发,并在1995年正式推出。JAVA语言的主要特征有以下几点:1.Java语言是简单的:Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用。另一方面,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,而是引用。并提供了自动的废料收集,使得程序员不必为内存管理而担忧。2.Java语言是面向对象的:Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C++语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。3.Java语言是分布式的:Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(javanet),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。4.Java语言是健壮的:Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。5.Java语言是安全的:Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。6.Java语言是体系结构中立的:Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。7.Java语言是可移植的:这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSIC实现的。8.Java语言是解释型的:如前所述,Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。9.Java是高性能的:与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just.In.Time)编译器技术的发展越来越接近于C++。10.Java语言是多线程的:在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable)的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。11.Java语言是动态的:Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。关于数据库连接,java中链接数据库的技术是jdbc,java程序通过jdbc驱动程序与数据库相连,执行DDL、DML、tcl、等操作。目前大多数数据库系统都带有jdbc驱动程序,所以java能够访问Oracle、MYSQL、等等数据库。1.2项目开发主要技术Oracle简介ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。比如SilverStream就是基于数据库的一种中间件。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。但它的所有知识,只要在一种机型上学习了ORACLE知识,便能在各种类型的机器上使用它。它的特点有以下几点:1、完整的数据管理功能:1)数据的大量性2)数据的保存的持久性3)数据的共享性4)数据的可靠性2、完备关系的产品:1)信息准则:关系型DBMS的所有信息都应在逻辑上用一中方法,即表中的值显式地表示;2)保证访问的准则3)视图更新准则:只要形成视图的表中的数据变化了,相应的视图中的数据同时变化4)数据物理性和逻辑性独立准则关于Oracle的管理:创建数据库,数据库的创建就是准备若干个操作系统文件,使其能够作为一个ORACLE数据库运转,用于数据存储。然而,对于一个数据库系统来说,无论其数据库由多少个数据库文件组成或被多少个例程所存取,数据库需要被创建一次。针对一个现存的数据库进行创建工作,将毁坏先前数据库文件中已经存在的任何数据。修改数据库配置,ORACLE数据库能够处于三种不同的状态,决定了其可用性:①卸载状态数据库当前不与任何例程相联系,DBA用户和普通用户均不能存取。②装载且关闭状态数据库当前已与一个例程相联系,仅DBA用户能够存取(进行系统维护)。③装载且打开状态数据库当前能够用于正常的数据库操作,DBA用户和普通用户均能够存取。1.3项目开发主要技术Visio2010简介MicrosoftVisio使用各种预绘制的形状、示例绘图以及用于IT、业务、流程管理和更多方面的模板集快速开始图表绘制。对于任何类型的绘图需要,Visio都可帮助您快速开始工作。在一个位置即可找到完成绘图任务所需的任何信息。使用功能区选项卡中的逻辑功能组合(增强的形状窗口)可轻松访问形状和模具,全新的状态栏可帮助您在图表之间和图表中更高效地移动,这样,创建图表的每个步骤都更直观。使用诸如快速形状浮动工具栏、增强的动态网格、自动布局调整和自动调整页面大小等功能添加和对齐形状。使用子流程和容器可直观且合理地组合相关形状,从而简化了大型复杂的图表。子流程是单独页上的小型图表,它链接到更大图表中的子流程形状,从而将图表中的复杂流程分割为更易管理的部分。容器可帮助您组织不同的形状集并说明它们在图表中的相互关系。使用新颖的形状和可视效果、丰富的主题库和实时预览可快速将您的图表装扮得外观专业且引入注目。针对业务规则和逻辑核对图表以确保图表中的准确性和一致性。只需一次单击,即可验证图表以确保其结构合理且适当。使用包含SharePoint工作流规则和逻辑的全新高级模板,以及在MicrosoftSharePointDesigner2010和Visio2010之间导出和导入工作流的功能,可以比以往更轻松地创建和监视SharePoint工作流。需求分析需求分析是指理解用户需求,就软件功能与客户达成一致,需求分析的任务就是解决做什么的问题,就是要全面地理解用户的各项要求,并准确地表达所接受的用户需求,具有决策性、方向性、策略性的作业。2.1超市收银系统设计要求和目标超市收银系统主要还是以客户为中心,根据用户的需求来定义各种功能,将信息技术应用到普通超市进行管理,通过点击按钮操作各项功能。为了达到预期设定应用目标,最基本的要求是系统能够运行起来,实现集成化应用,建立规范的超市收银系统,坚决以提高收益和客户利益为主要原则!销售管理、库存查询、用户管理、信息查询、商品管理等各项功能的实现。以简便操作高效益为主体!理员可以随时查询信息,这个系统主要功能模块为销售管理。内部各功能模块紧密相连,都是相互协作运行的,让客户感受到超市收银的管理严谨系统齐全,让企业管理者容易管理,并且易于操作,简单明了。2.2超市收银系统可行性分析2.2.1经济可行性分析经济可行性对于企业来说,就是能否应用得当,能否有实际的经济意义,能不能给企业带来利益自己节省开支等,这次设计的超市收银系统能够很好地将实际情况与程序紧密结合起来,特别有利于提高企业的效率,增加收益,在经营方面,该系统大大提高了效益,避免了客户排队长时间等待的情况,同时增加了经济收入,因为有时客流量一多就容易流失客户,但是有了这个系统就方便了许多,更带来了方便快捷,省人省力!经济上完全可行。2.2.2操作可行性分析由于还是学生,设计的系统肯定不会很难操作,肯定是越简单方便越好,可以在各种windows系统运行,界面友好,使用轻松,操作简单易懂,格式简单明了,非常适合各种等级的收银员使用。2.2.3技术可行性分析技术可行性主要是指开发人员能否顺利完成系统开发,水平技术能否达标等,开发设备是否可以支持程序开发,当然,现在的计算机硬件不断更新增强,有足够的功能支持开发,本系统在技术上也是完全可行的。2.3业务流程需求分析超市收银系统流程图如下。管理员的流程图:如图2.1所示。销售管理销售管理销售管理管理员销售管理管理员增删改查后台页面登录成功增删改查后台页面登录销售管理销售管理销售管理失败销售管理销售管理销售管理图2.1管理员操作流程图收银员的流程图:如图2.2所示。管理员结算管理员结算输入商品编号输入商品编号找零找零图2.2收银员的流程图这次的系统流程运作也很简单,首先打开项目运行进入到主界面,在主界面收银员可以进行收银,删除取消等普通操作,进行销售结算和添删改,管理员身份可以经过验证转到后台进行后台管理,因为考虑到安全问题,除了收银以及简单的删除和销售功能所有的功能都先要经过管理员验证才可以使用,这样保证了企业信息的安全性。3.概要设计3.1超市收银系统的设计需求逻辑结构收银以及简单的删除取消等操作是第一要实现的,再者要进行商品添加,用户(收银员)的添加和会员的添加,还有进货添加。收银员可以通过扫码以及输入商品编号的方法进行结算账单,对于员工的管理设计,这里面设置了用户管理、信息查询模块,使员工和管理员可以快速了解到需要查询的内容,处理相关数据信息等。下面是系统功能的总体浏览,本系统主要分为五个模块:销售管理模块、库存查询模块、用户管理模块、信息查询模块、商品管理模块。如图3.1所示。超市收银系统超市收银系统销售收银销售收银用户管理销售管理库存查询信息查询商品管理用户管理销售管理库存查询信息查询商品管理输入输入结算结算图3.1超市收银系统整体结构3.2超市收银系统的设计系统功能结构本系统功能模块设计包括五个部分:销售管理、库存查询、用户管理、信息查询、商品管理。销售管理模块功能描述:销售管理功能可以查询商品的销售信息,并以列表的形式输出销售商品的商品名称、商品编码、销售数量、销售金额、销售日期以及金额。如图3.2所示。销售管理查询销售管理输出金额销售日期销售金额销售数量商品编码商品名称用户管理金额销售日期销售金额销售数量商品编码商品名称用户管理图3.2销售管理模块功能图库存查询模块功能描述:库存查询功能可以分为快速浏览查询和详细查询,其中快速浏览查询就是一次性显示所有的信息,详细查询就是查询商品编号显示的信息。如图3.3所示。库存查询库存查询详细查询浏览查询详细查询浏览查询商品编号商品库存信息商品信息返回商品库存信息商品信息图3.3库存查询功能模块图用户管理用户管理模块功能描述:用户管理查询功能可以查询用户账户信息。如图3.4所示。用户管理商品库存信息商品库存信息通过管理员商品库存信息商品库存信息图3.4用户管理功能模块图信息查询信息查询功能模块描述:信息查询功能可以根据商品的名称编号或者条形码来查询商品的相关信息。如图3.5所示。信息查询编号、条形码查询商品信息名称查询商品信息图3.5信息查询图商品管理功能模块描述:商品管理功能可以进行出入库的管理以及添加商品的功能。如图3.6所示。商品管理商品管理通过管理员出入库出入库添加商品进出货添加商品进出货图3.6商品管理功能模块图4.数据库设计4.1数据库设计原则一个项目的数据库在整个程序中起着很大的作用,数据库可以储存项目所有的信息,进行增删改查,在这个系统中占着最主要的位置。数据库的设计直接与程序挂钩,会影响整个程序,一个好的数据库,可以提高数据信息的存储效率,可以保证数据的安全性与全面性。再者,只要数据库设计好了,程序也就实现了一大半了。这次的数据库名称我用orcl作为后台数据库。4.2数据库概念结构设计数据库的原则是共享性、独立性、完整性、灵活性、安全与保密性。本系统采用了orcl作为后台数据库,共分为九个表,分别是:用户表usermanage用户实体有10个字段,分别是:卡号,持卡人,证件号,级别,折扣率,类型,期限,积分,开发日期,备注。实体如图4.1所示。CardDateUserGradePasswordCardDateUserGradePasswordIDcardtermIDcardtermUserNameintegralUserNameintegralCardIDagioCardIDagioremark用户表usermanageremark用户表usermanage图4.1用户实体图2.进退货表backsale本系统的进退货实体分为九个字段,分别为:退货品编号,产品编号,产品名称,序号,价格,进货日期,超市名称,理由。实体如图4.2所示。PriceBNumberPriceBNumberJtDateJtDateProductNameSuperMarketProductNameSuperMarketProduct_IDNextBackProduct_IDNextBackBackSale_IDreasonBackSale_IDreason进退货表backsale进退货表backsale图4.2进退货实体图3.商品表merchandise本系统的商品实体分为九个字段,分别为:卡号,持卡人,证件号,级别,折扣率,类型,期限,积分,开发日期,备注。实体如图4.3所示。RetailPriceRetailPriceMerchandiseNameMerchandiseNameMerchandiseSpecUnitsSortNumberMerchandiseSpecUnitsSortNumberPurchasePriceTreatyCodePurchasePriceTreatyCodeMerchandiseNumberCheckTermMerchandiseNumberCheckTermRemarkRemark商品表merchandiseSequenceNumber商品表merchandiseSequenceNumber图4.3商品实体图4.付款表paymentlist本系统的付款实体分为八个字段,分别为:商品编号,商品名称,规格,单位,数量,售价,折扣,金额。实体如图4.4所示。PriceBNumberPriceBNumberJtDateJtDateSuperMarketSuperMarketProductNameProductNameNextBackNextBackreasonBackSale_IDreasonBackSale_ID付款表paymentlist付款表paymentlist图4.4付款实体图5.销售表sale本系统的销售实体分为八个字段,分别为:商品编码,商品名称,销售数量,销售金额,收效日期,金额小计。实体如图4.5所示。SNumberSaleDateSNumberSaleDatePricePriceDiscountDiscountProductIDProductIDVIP_IDVIP_IDProductNameSale_IDProductNameSale_ID销售表sale销售表sale图4.5销售实体图6.商品类别表sort本系统的商品类别实体分为三个字段,分别为:类别序号,类别编号,类别名称。实体如图4.6所示。SortNumberSortNumberSortIDSortIDSortNameSortName商品类别表sort商品类别表sort图4.6商品类别实体图7.采购表stock本系统的采购实体分为九个字段,分别为:编号,商品编号,商品名称,商品部门,商品序号,进货价,实价,进货日期,备注。实体如图4.7所示。overallmoneydataSnumberoverallmoneydataSnumberMerchandiseNumberMerchandiseNumberMerchandiseNameMerchandiseNamedepartmentdepartmentunitpriceIdunitpriceIdremark采购表stockremark采购表stockpaymentdatepaymentdate图4.7采购实体图8.入出库表enterstock本系统的入出库实体分为八个字段,分别为:编号,数量,进货价,总金额,日期,仓库号,经手人,填单人。实体如图4.8所示。dealWithHumanPutDatadealWithHumanPutDataENumberENumberinoutinoutPurchasePricePurchasePricedownNamedownNameStoreHouse_IDMerNumberStoreHouse_IDMerNumber入出库表enterstock入出库表enterstockEnterStock_IDEnterStock_ID图4.8入出库实体图9.库存表stockpile本系统的库存实体分为八个字段,分别为:序号,商品名称,编号。实体如图4.9所示。MerchandiseNumberMerchandiseNumberIDIDSSnumberSSnumber库存表stockpile库存表stockpile图4.9库存实体图4.3数据库物理结构设计在概念结构之后,物理结构也是同等重要,数据库逻辑设计需要经过周密的思考,考虑到方面详情,兼顾到各个方面,肯定不是件简单的事情,在这里我分为了九个表,分别根据了五大模块而设计的,也考虑到了各个方面,像用户表我就列出了十个字段,是否空值和什么数据类型,接下来介绍每个表的详细情况。用户表用来保存用户的基本信息,如表4.10所示。表4.10用户基本信息表属性名称含义数据类型主要属性说明CardId卡号int主键用于储存用户卡号UserName持卡人varchar2(20)notnull用于储存用户名字IDcard证件号varchar2(20)notnull用于储存用户证件号Password级别varchar2(20)notnull用于储存用户级别CardDate折扣率varchar2(30)notnull用于储存用户折扣率UserGrade类型varchar2(16)notnull用于储存用户类型term期限Char(10)notnull用于储存用户期限integral积分Char(10)notnull用于储存用户积分agio开发日期Char(10)notnull用于储存用户开发日期remark备注varchar2(200)notnull用于储存用户备注2.进退货表用来保存进退货的基本信息,如表4.11所示。表4.11进退货基本信息表属性名称含义数据类型主要属性说明BackSale_ID退货品编号number主键用于储存进退货编号Product_ID产品编号varchar(50)notnull用于储存编号ProductName产品名称varchar2(20)notnull用于储存名称BNumber序号numbernotnull用于储存序号Price价格numbernotnull用于储存价格JtDate进货日期varchar2(30)notnull用于储存进货日期SuperMarket超市名称varchar2(16)notnull用于储存超市名称NextBack理由varchar2(250)notnull用于储存理由商品表用来保存商品的基本信息,如表4.12所示。表4.12商品基本信息表属性名称含义数据类型主要属性说明SequenceNumber商品编码int主键用于储存商品编码MerchandiseNumber条形码varchar2(20)notnull用于储存商品条形码TreatyCode类别编号varchar2(20)notnull用于储存商品类别编码SortNumber简码varchar2(20)notnull用于储存商品简码MerchandiseName商品名称varchar2(50)notnull用于储存商品名称RetailPrice零售价numbernotnull用于储存商品零售价MerchandiseSpec商品规格varchar2(50)notnull用于储存商品规格Units计量单位varchar2(20)notnull用于储存商品计量单位PurchasePrice进货价numbernotnull用于储存商品进货价CheckTerm保质期numbernotnull用于储存商品保质期Remark备注varchar2(50)notnull用于储存商品备注4.付款表用来保存付款的基本信息,如表4.13所示。表4.13付款基本信息表属性名称含义数据类型主要属性说明OddNumber商品编号int主键用于储存商品编号Victualer商品名称varchar2(10)notnull用于储存商品名称Coin规格varchar2(10)notnull用于储存商品规格PaymentFashion单位varchar2(20)notnull用于储存商品单位ChequeNumber数量varchar2(20)notnull用于储存商品数量Dates售价varchar2(26)notnull用于储存商品售价DealWithMan折扣varchar2(10)notnull用于储存商品折扣MakeLiseMan金额varchar2(10)notnull用于储存商品金额5.销售表用来保存销售的基本信息,如表4.14所示。表4.14销售基本信息表属性名称含义数据类型主要属性说明Sale_ID商品编码number主键用于储存商品编码ProductID产品编号varchar2(10)notnull用于储存产品编号SaleDate销售日期varchar2(50)notnull用于储存销售日期SNumber销售数量numbernotnull用于储存销售数量Price销售金额varchar2(10)notnull用于储存销售金额Discount折扣率varchar2(10)notnull用于储存折扣率VIP_ID会员卡号varchar2(10)notnull用于储存会员卡号ProductName商品名称varchar2(50)notnull用于储存商品名称商品类别表用来保存商品类别的基本信息,如表4.15所示。表4.15商品类别基本信息表属性名称含义数据类型主要属性说明SortID类别序号Int(4)主键用于储存类别序号SortNumber销售日期varchar2(20)notnull用于储存类别编号SortName类别名称varchar2(20)notnull用于储存类别名称采购表用来保存采购的基本信息,如表4.16所示。表4.16采购基本信息表属性名称含义数据类型主要属性说明id编号Int(4)主键用于储存编号MerchandiseNumber商品编号varchar2(50)notnull用于储存商品编号MerchandiseName商品名称varchar2(50)notnull用于储存商品名称department商品部门numbernotnull用于储存商品部门Snumber商品序号varchar2(20)notnull用于储存商品序号unitprice进货价varchar2(20)notnull用于储存进货价overallmoney实价varchar2(20)notnull用于储存实价data商品名称varchar2(26)notnull用于储存商品名称paymentdate进货日期varchar2(10)notnull用于储存进货日期remark备注varchar2(50)notnull用于储存备注8.入出库表用来保存入出库的基本信息,如表4.17所示。表4.17入出库基本信息表属性名称含义数据类型主要属性说明EnterStock_ID编号int主键用于储存编号MerNumber数量varchar(30)notnull用于储存数量ENumber进货价numbernotnull用于储存进货价PurchasePrice总金额numbernotnull用于储存总金额PutData日期varchar2(30)notnull用于储存日期StoreHouse_ID仓库号varchar2(20)notnull用于储存仓库号dealWithHuman仓库号varchar2(20)notnull用于储存仓库号downName填单人varchar2(20)notnull用于储存填单人9.库存库表用来保存库存的基本信息,如表4.18所示。表4.18库存基本信息表属性名称含义数据类型主要属性说明ID序号number主键用于储存序号MerchandiseNumber商品名称varchar2(20)notnull用于储存商品名称SSnumber编号numbernotnull用于储存编号5.系统实现5.1主销售界面设计1、系统主界面截图如下。运行软件进入主界面,进入销售模块,在主界面用户可以进行销售作业,通过输入商品编号可以拿到折扣率以及价格,还可以获得当前时间,并且回车能够得到结算页面自动算出实收以及找零即系统自动列出所购商品的详细信息,并自动计算当前购物车所有商品的总价,即应收,输入实收金额自动计算找零,点击回车完成交易。如图5.1所示:图5.1系统主页面主要代码如下:publicvoidjTextField5_keyReleased(KeyEvente){intt=(int)e.getKeyChar();if(t==10){//如果输入的是回车键try{Doublegather=newDouble(jTextField5.getText());System.out.println(gather);doublegathering=((int)(gather*100))/100.0;Doubleaccount=newDouble(jTextField3.getText());System.out.println(account);doublegivechange=((int)((gathering.account)*100))100.0;if(givechange<0){JOptionPane.showMessageDialog(this,"输入的金额不足");}Doublegivechange1=newDouble(givechange);jLabel8.setText(givechange1.toString());}catch(Exceptionex){JOptionPane.showMessageDialog(this,"输入的金额有误");}Settle_Dialogsett=newSettle_Dialog();sett.setSize(400,300);sett.setLocation(300,250);sett.setVisible(true);//显示结账界面sett.jTextField1.setText(jTextField3.getText().toString());sett.jTextField2.setText(jTextField5.getText());sett.jTextField3.setText(jLabel8.getText());jTextField6.setEditable(true);//会员卡号可编辑jTextField6.setText("");//商品编号销售日期商品数量商品单价折扣会员卡号商品名称intnum1=0;while(num1<colnames4.size()){//更新数据库Vectorls=newVector();ls=(Vector)colnames4.get(num1);//ls.get(0).toString();//商品编号//jLabel11.getText();//时间Integernumber=newInteger(ls.get(4).toString());//数量DoublePrice=newDouble(ls.get(5).toString());//单价//ls.get(6).toString();//折扣//jTextField6.getText();//会员卡号//ls.get(1).toString();//商品名称UpdateData.out_StockPile(number,ls.get(0).toString());Insert_stock.Insert_Sale(ls.get(0).toString(),jLabel11.getText(),number,Price,ls.get(6).toString(),jTextField6.getText(),ls.get(1).toString());num1++;}jTextField1.setText("");jTextField2.setText("1");colnames4.removeAllElements();jTable1=Mytable.maketable(colnames4,colnames);//显示内容jScrollPane1.getViewport().add(jTable1);//把表装入容器}}付款页面:如图5.2所示:图5.2付款页面截图代码如下:privatevoidjbInit()throwsException{panel1.setLayout(null);jTextField1.setFont(newjava.awt.Font("宋体",Font.PLAIN,30));jTextField1.setBounds(newRectangle(213,44,130,42));jTextField2.setFont(newjava.awt.Font("宋体",Font.PLAIN,30));jTextField2.setBounds(newRectangle(213,108,130,42));jTextField3.setFont(newjava.awt.Font("宋体",Font.PLAIN,30));jTextField3.setBounds(newRectangle(213,171,130,42));jLabel1.setFont(newjava.awt.Font("宋体",Font.PLAIN,30));jLabel1.setText("金额累计");jLabel1.setBounds(newRectangle(41,45,130,42));jLabel2.setFont(newjava.awt.Font("宋体",Font.PLAIN,30));jLabel2.setText("实收金额");jLabel2.setBounds(newRectangle(41,108,130,42));jLabel3.setFont(newjava.awt.Font("宋体",Font.PLAIN,30));jLabel3.setText("找零金额");jLabel3.setBounds(newRectangle(41,171,130,42));panel1.setBackground(Color.green);getContentPane().add(panel1);panel1.add(jLabel1);panel1.add(jLabel2);panel1.add(jLabel3);panel1.add(jTextField2);panel1.add(jTextField3);panel1.add(jTextField1);}点击后台管理转入后台弹出用户验证窗口。验证成功进入后台。后台管理截图:如图5.3所示。图5.3管理员登录图主要代码如下:publicvoidjButton1_actionPerformed(ActionEvente){Vectoruser=newVector();Stringname=jTextField1.getText();Stringpassword=jPasswordField1.getText();user=Select_Means.Select_User(name,password);if(user.size()!=0){this.setVisible(false);MainFramemainFrame=newMainFrame();mainFrame.setVisible(true);mainFrame.setLocation(50,50);form.setVisible(false);}else{ JOptionPane.showMessageDialog(this,"用户名或密码不正确,请重新输入");}}验证成功后进入后台管理,后台管理包括销售管理,库存查询,用户管理,信息查询,商品管理。点击相应标签进入子系统。登录成功后进入此页面:如图5.4所示。图5.4后台管理主界面主要代码如下:privatevoidjbInit()throwsException{contentPane=(JPanel)getContentPane();contentPane.setLayout(null);setSize(newDimension(930,600));setTitle("赵娟的超市收银系统");statusBar.setText("");statusBar.setBounds(newRectangle(0,585,800,15));//设置树DefaultMutableTreeNoderoot=newDefaultMutableTreeNode("系统管理");DefaultMutableTreeNodeMan2=newDefaultMutableTreeNode("销售管理");DefaultMutableTreeNodeMan3=newDefaultMutableTreeNode("库存查询");DefaultMutableTreeNodeMan4=newDefaultMutableTreeNode("用户管理");DefaultMutableTreeNodeMan5=newDefaultMutableTreeNode("信息查询");DefaultMutableTreeNodeMan6=newDefaultMutableTreeNode("商品管理");...//初始化树jTree1=newJTree(root);jTree1.addTreeSelectionListener(newMainFrame_jTree1_treeSelectionAdapter(this));jMenuFile.setText("文件");jToolBar.setBounds(newRectangle(0,0,800,29));jScrollPane1.setBounds(newRectangle(13,93,152,435));jMenuBar1.add(jMenuFile);jMenuFile.add(jMenuItem1);jMenuBar1.add(jMenu1);jMenuBar1.add(jMenu2);jMenuBar1.add(jMenu3);jMenuBar1.add(jMenu5);jMenuBar1.add(jMenu4);setJMenuBar(jMenuBar1);jToolBar.add(jButton1);jToolBar.add(jButton2);jToolBar.add(jButton3);contentPane.add(jToolBar,null);contentPane.add(statusBar,null);contentPane.add(jScrollPane1);contentPane.add(jScrollPane2);jScrollPane2.getViewport().add(jTable1);jScrollPane1.getViewport().add(jTree1);jMenu3.add(jMenuItem2);jMenu3.add(jMenuItem3);jMenu3.add(jMenuItem15);jMenu4.add(jMenuItem5);jMenu2.add(jMenuItem7);jMenu2.add(jMenuItem9);jMenu2.add(jMenuItem16);jMenu1.add(jMenuItem10);jMenu1.add(jMenuItem11);jMenu5.add(jMenuItem17);jMenu5.add(jMenu7);jMenu7.add(jMenuItem18);jMenu7.add(jMenuItem25);jMenu7.add(jMenuItem19);jMenu7.add(jMenu9);jMenu9.add(jMenuItem8);jMenu9.add(jMenuItem20);jMenu9.add(jMenuItem21);jMenu9.add(jMenuItem22);jMenu9.add(jMenuItem23);jMenu9.add(jMenuItem24);}5.2销售管理模块销售管理有一个子模块..销售统计,销售统计可以根据时间段或者商品编号查询销售记录。商品销售统计截图:如图5.5。图5.5商品销售统计主要代码如下:publicvoidjButton1_actionPerformed(ActionEvente){Stringstr1=jComboBox1.getSelectedItem().toString()+"."+jComboBox2.getSelectedItem().toString()+"."+jComboBox3.getSelectedItem().toString();Stringstr2=jComboBox4.getSelectedItem().toString()+"."+jComboBox5.getSelectedItem().toString()+"."+jComboBox6.getSelectedItem().toString();Vectorvector=newVector();//用来接收查询结果Vectorvector2=newVector();vector=SelectEarning.findAll(jTextField1.getText());//接收返回的结果if(vector.size()==0){JOptionPane.showMessageDialog(this,"没有商品的销售信息");}doubleallMoney=0;//用于计算总金额inti=0;while(i<vector.size()){Vectorvector1=newVector();vector1=(Vector)vector.get(i);System.out.println(vector1.get(4).toString().substring(0,10));System.out.println(str1);System.out.println(SelectEarning.charbj(vector1.get(4).toString().substring(0,10),str1));System.out.println(SelectEarning.charbj(str2,vector1.get(4).toString().substring(0,10)));if(SelectEarning.charbj(vector1.get(4).toString().substring(0,10),str1)&&SelectEarning.charbj(str2,vector1.get(4).toString())){Vectorvector3=newVector();intj=0;while(j<6){vector3.add(vector1.get(j).toString());j++;}Doublemoney=newDouble(vector1.get(5).toString());allMoney+=money;vector2.add(vector3);}i++;}if(vector2.size()==0){JOptionPane.showMessageDialog(this,"没有商品的销售信息");}5.3库存查询模块可存信息查询可以查询当前商品的库存信息,库存查询分两个子模块,库存信息浏览和按商品编号查询。库存信息浏览:该模块可以查询所有商品库存记录。并将库存信息列表输出。如图5.6。图5.6库存查询图主要代码如下:publicvoidjTextField1_focusLost(FocusEvente){Vectorselect_merchandise=newVector();Stringnumber=jTextField1.getText();//得到商品编号if(number.length()==0){return;}select_merchandise=Select_Means.Select_sort2(number);//根据商品编号查找相应的信息if(select_merchandise.size()==0){JOptionPane.showMessageDialog(this,"无此商品");}inti=0;while(i<select_merchandise.size()){Vectorselect=newVector();select=(Vector)select_merchandise.get(i);jTextField2.setText(select.get(3).toString());jTextField5.setText(select.get(4).toString());i++;try{Integernumber1=newInteger(jTextField4.getText());Doublenumber2=newDouble(jTextField5.getText());number2=number2*number1;Doublenumber3=newDouble(number2);jTextField6.setText(number3.toString());}catch(Exceptionex){JOptionPane.showMessageDialog(this,"数量框中输入的不是数字","错误",JOptionPane.ERROR_MESSAGE);}}}2、按商品编号查询:通过输入商品编号指定查询目标,对单个商品信息进行查询,并输出该商品信息。如图5.7。图5.7商品编号查询图主要代码如下:publicstaticVectorSelect_sort2(Stringnumber){//按商品编号查询Connectionconn=null;PreparedStatementpmst=null;ResultSetrs=null;Vectorvector2=newVector();conn=DBAccess.getConnection();try{pmst=conn.prepareStatement(select2);pmst.setString(1,number);rs=pmst.executeQuery();while(rs.next()){Vectorvector1=newVector();vector1.add(rs.getString(1));vector1.add(rs.getString(2));vector1.add(rs.getString(3));vector1.add(rs.getString(4));vector1.add(rs.getString(5));vector1.add(rs.getString(6));vector1.add(rs.getString(7));vector1.add(rs.getString(8));vector1.add(rs.getString(9));vector1.add(rs.getString(10));vector2.add(vector1);}}catch(Exceptione){e.printStackTrace();}returnvector2;}5.4用户管理模块1、添加修改用户:点击添加修改用户弹出用户验证,若验证为管理员则可以进行用户添加。此功能需要管理员登录:如图5.8。图5.8添加用户模块主要代码如下:publicvoidjButton5_actionPerformed(ActionEvente){StringcardId=jTextField1.getText();//卡号VectorSelect_vector=newVector();Select_vector=Select_Means.Select_UserManager(cardId);//查询此卡是否存在if(Select_vector.size()==0){JOptionPane.showMessageDialog(this,"卡号不存在","提示",JOptionPane.INFORMATION_MESSAGE);return;}jTextField1.setText(Select_vector.get(0).toString());//卡号jTextField2.setText(Select_vector.get(1).toString());//持卡人jTextField3.setText(Select_vector.get(2).toString());//身份证jTextField4.setText(Select_vector.get(3).toString());//密码jTextField9.setText(Select_vector.get(4).toString());//开卡日期if(Select_vector.get(5).toString().equals("普通会员")){jComboBox1.removeAllItems();jComboBox1.addItem("普通会员");jComboBox1.addItem("收银员");}if(Select_vector.get(5).toString().equals("收银员")){jComboBox1.removeAllItems();jComboBox1.addItem("收银员");jComboBox1.addItem("普通会员");}jTextField7.setText(Select_vector.get(6).toString());//期限jTextField8.setText(Select_vector.get(7).toString());//积分jTextField5.setText(Select_vector.get(8).toString());//折扣jTextArea1.setText(Select_vector.get(9).toString());//备注}个人账号查询:输入卡号查询个人账号信息。输入卡号就能查询到:如图5.9。图5.9个人账户查询图5.5信息查询模块按商品名称查询:输入商品名称查询该商品详细信息。如图5.10。图5.10商品名称查询商品主要代码如下:publicstaticVectorSelect_sort3(Stringnumber){//按商品名称查询Connectionconn=null;PreparedStatementpmst=null;ResultSetrs=null;Vectorvector2=newVector();conn=DBAccess.getConnection();try{pmst=conn.prepareStatement(select3);pmst.setString(1,number);rs=pmst.executeQuery();while(rs.next()){Vectorvector1=newVector();vector1.add(rs.getString(1));vector1.add(rs.getString(2));vector1.add(rs.getString(3));vector1.add(rs.getString(4));vector1.add(rs.getString(5));vector1.add(rs.getString(6));vector1.add(rs.getString(7));vector1.add(rs.getString(8));vector1.add(rs.getString(9));vector1.add(rs.getString(10));vector2.add(vector1);}}catch(Exceptionex){ex.printStackTrace();}returnvector2;}可查询到数据:如图5.11。图5.11商品数据查询结果2、按商品编号查询:输入商品编号查询该商品详细信息。如图5.12。图5.12商品编号查询商品主要代码入下:publicstaticVectorSelect_sort2(Stringnumber){//按商品编号查询Connectionconn=null;PreparedStatementpmst=null;ResultSetrs=null;Vectorvector2=newVector();conn=DBAccess.getConnection();try{pmst=conn.prepareStatement(select2);pmst.setString(1,number);rs=pmst.executeQuery();while(rs.next()){Vectorvector1=newVector();vector1.add(rs.getString(1));vector1.add(rs.getString(2));vector1.add(rs.getString(3));vector1.add(rs.getString(4));vector
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度声学工程设计施工合同
- 2024年度医疗器械销售合同标的详细解析2篇
- 《黄金投资说明会》课件
- 2024年度机器设备租赁合同:叉车、堆高机等
- 安全用电施工协议书模板
- 2024年度企业间借款协议
- 九年级化学上册 6 碳和碳的氧化物教案 (新版)新人教版
- 《网络营销服务》课件
- 2024年冬春航季民航客运航班数据解读
- 2024年度甲乙双方房屋买卖合同
- 一年级家长会课件2024-2025学年
- 2023年中国人民银行直属事业单位招聘考试真题
- 2024年湖南土建中级职称-建筑工程《法律法规及技术标准》考试题库(含答案)
- 国开(浙江)2024年《个人理财》形考作业1-4答案
- 《扣件式钢管脚手架安全技术规范》JGJ130-2023
- 基于人才战略的企业年金在民办高校中的应用研究
- 消防维保年度总结范文(2篇)精选范文
- 天津科技大学 大学物理(下)本科试卷(A卷)(含答案)
- 消防应急组织架构图
- 锅炉安装工程—质量证明书(散装)
- 铁矿矿山环境保护与综合治理方案
评论
0/150
提交评论