资源描述
超市收银系统设计分析
一、 系统整体架构
图1
从图1可以看出,系统框架很清晰,顾客登录,依照顾客权限不同,相应不同操作办法,操作对象为商品。
但本系统规定使用C/S框架构造来设计。
C/S框架简介:
C/S 构造,即人们熟知客户机和服务器构造。
C/S 构造基本原则是将计算机应用任务分解成各种子任务,由多台计算机分工完毕,即采用“功能分布”原则。客户端完毕数据解决,数据表达以及顾客接口功能;服务器端完毕DBMS(数据库管理系统)核心功能。这种客户祈求服务、服务器提供服务解决方式是一种新型计算机应用模式。
Client和Server经常分别处在相距很远两台计算机上,Client程序任务是将顾客规定提交给Server程序,再将Server程序返回成果以特定形式显示给顾客;Server程序任务是接受客户程序提出服务祈求,进行相应解决,再将成果返回给客户程序。
鉴于超市收银系统特性,本系统不牵扯各种客户端,不需要线程同步。
二、 代码设计框架
由于使用C/S框架设计程序,因而有固定设计环节:
1. 项目包设计:
图2
client包:重要由客户端操作界面类和客户端业务类构成,客户端操作类也就是客户端main办法类,重要负责引导顾客操作,提供系统界面信息提示操作,涉及:初始化登录视图、商品库存管理视图和收银管理视图;客户端业务类重要涉及解决客户端祈求并将客户端祈求打包发送给服务器办法和某些辅助操作办法。解决库存管理员祈求办法为:商品入库、商品出库、新增商品、查询所有商品和按编号查询商品;解决收银员祈求办法为:扫描商品、修改购买数量商品和结账。
entity包:重要由系统所涉及实体类构成,依照操作视图可以拟定为顾客类和商品类。
图3 顾客信息
图4 商品信息
server包:重要由服务器主流程类(线程类)和服务器(数据解决)业务类构成,服务器主流程类也即main办法类,重要负责接受客户端祈求,并依照祈求标志信息分派相应操作,最后再将解决数据发送给客户端;服务器数据解决业务类重要由解决客户端祈求办法和商品信息库构成。
util包:
util包为实用工具包,重要涉及项目中某些工具类,重要涉及数据解决类(加密、解密、数据转换、特殊文献操作和数据打包)和常量类。
本项目重要涉及数据打包类、常量类和proprties文献操作类。
sys.properties文献:
Properties文献是一种文本文献;properties文献语法有两种,一种是注释,一种是属性配备;注释:前面加上#号;属性配备:以“键=值”方式书写一种属性配备信息。
Properties类自身表达了对一种Map构造操作,properties文献自身就表达一种“键值对”集合,因而,Properties类属于集合容器家族,在使用前应当创立一种Properties容器,事实上就是创立一种默认不带参数Properties对象,通过别方式给里面添加“键值对”。
sys.properties在本项目作用重要用来配备服务器信息:主机名和端标语。
2、项目设计知识点
本项目重要设计核心知识点:类和对象,封装,继承,异常,集合和泛型,输入/输出,多线程和网络编程。
3、代码编写思路
1) 创立项目
2) 创立Java包:客户端包,服务器包,实体包,实用工具包。
3) 创立配备文献:.properties文献或 .xml文献。
4) 创立各Java包中类文献:
客户端包:客户端操作界面类和客户端业务类;
服务器包:服务器主流程类(线程类)和服务器业务类(数据解决);
实体包:依照详细项目状况创立;
实用工具包:
ü 数据包类:重要储存客户端和服务器之间交互核心数据,涉及实体对象和逻辑判断标志等;
ü 常量类:客户端和服务器之间需要共同使用状态常量,普通为业务操作标记符和系统信息常量(对的、错误状态常量,配备信息常量)。
ü 工具类:普通为配备文献操作类。
5) 编写个项目文献(由简入繁:单个功能实现到所有功能拓展)。
6) 项目调试。
三、 详细代码分析
1. sys.properties文献编写
该文献重要顾客配备socket套接字属性:主机名和端标语,在此配备信息为:
图5 sys信息
2. 实体类编写
依照entity包分析可知:Goods类和Users类。
Goods类:
图6 Goods类
Users类:
图7 Users类
注:由于涉及到socket编程,因而两实体类均需要序列化。
3. 实用工具包类编写
1) 数据包类(Datas类):
由于该项目为超市收银系统,依照项目效果图可知,重要设计对象为:商品对象(goods),顾客对象(user);为便于商品信息操作,创立商品集合,又由于牵扯到库存管理和收银两个类,进而创立库存商品集合和 购买商品集合;又由于牵扯到客户端和服务器端业务祈求操作,因而创立业务操作标记变量:flag。详细内容如下:
图8 Datas类
图9 库存商品集合应用需求
图10 购买商品集合应用需求
注:由于涉及到socket编程,Datas类需要序列化。
2) 工具类(Tools类文献):
Tools文献重要用于操作sys.properties文献,对sys.properties文献操作之前,一方面需要加载源文献(鉴于加载操作特殊性(提前操作),使用static块来封装),然后才干读取sys.properties文献中键相应值。
该类重要是用于读取socket参数信息(host,port)。
图11
Propertis办法:void load(InputStream inStream) 从输入流中读取属性列表(键和元素对)。
ClassLoader类:类加载器是负责加载类对象。
InputStream getResourceAsStream(String name):返回读取指定资源输入流。
3) 常量类:
由代码编写思路分析可知:常量类列表重要由如下几种部门构成:系统配备常量,系统信息反馈常量,系统操作常量,管理员操作常量,收银员操作常量。
图12 常量列表
注:详细常量参数可以在详细编程中增长或删减。
4. 客户端类编写
1) 客户端操作界面类:
客户端操作界面类重要完毕如下工作:(1)顾客登录(2)顾客操作
顾客登录有两个选项:管理员和收银员;顾客操作也分别按照管理员和收银员来展开。
图13 管理员登录成功视图
图14 收银员登录成功视图
鉴于登录操作只有两个选项,采用if-else编写较为快捷。详细代码截图如下:
图15登录操作代码
管理员操作和业务员操作选取较多,因而采用switch来实现较为适当,详细代码截图如下:
图16 管理员操作代码
图17 收银员操作代码
main()办法:原则上main()越简朴越好,详细代码截图如下:
图18 main()办法代码
注:代码编写按如上模块来进行编写(登录办法,管理员操作办法,收银员办法),详细办法实现依托客户端业务类,本类中重要负责视图引导和显示,可以分模块来进行编写和调试,遵循由简入繁原则。
2) 客户端业务类:
客户端类办法编写重要为满足客户端操作界面类需求且需要实现与服务器端信息交互(通过socket编程实现),因而详细代码涉及登录信息解决(办法),管理员视图下业务操作解决(办法),收银员视图下业务操作解决(办法),以及业务操作过程需要逻辑操作办法编写。详细代码截图如下:
图19 客户端业务办法
由于需要使用socket编程来实现客户端与服务器数据通信,因而需要socket初始化和socket关闭操作。详细代码如下:
图20 socket初始化和关闭操作
注:客户端业务类调试应当在服务器类框架搭好之后进行(可以完毕基本通信应答操作)。
客户端编程核心点:
客户端发送数据编写原则,通过Datas类中属性参数作为载体,即对客户信息,商品信息和业务操作常量标记符进行数据打包,统统将需要发送核心信息封装到Datas对象内,然后将这个对象发送给服务器,详细代码截图如下:
图21 商品入库核心信息Datas打包发送代码
同步读取服务器端返回Datas数据,提取需要信息进行解决和判断,其中涉及状态常量信息(success或error),详细代码截图如下:
图22 读取服务器返回数据并解决
5. 服务器类编写
1) 服务器主流程类:
服务器主流程类也即线程类,本线程类采用继承Thread父类来实现。
run()办法重要负责读取客户端发送过来数据,提取业务操作常量标记,然后分别进行相应操作,详细数据解决依托服务器业务类来实现,然后在将解决好数据打包(Datas)发送给客户端,详细代码截图如下:
图23 读取客户端数据并进行相应操作代码
图24 将解决好数据打包发送给客户端操作代码
2) 服务器业务类:
服务器业务类重要涉及两某些:基本数据:顾客信息(管理员和收银员账号、密码-ROM型),库存商品信息(ROM型),购买商品信息(RAM型);解决客户端祈求数据解决办法。基本数据后来可用数据库来保存解决。
ROM型数据初始化采用static块实现,一次执行,最先执行。详细代码截图如下:
图25 系统基本数据代码
数据解决办法均为有参数办法,由于要将解决信息发送给客户端,详细返回数据类型根据详细业务操作来定。详细代码截图如下:
图26 服务器业务解决办法代码
注:客户端与服务器联调时,可以先把客户端和服务器基本框架搭好,调试好基本功能后再做后续代码扩展和调试。
问题点收集:
展开阅读全文