返回顶部
首页 > 资讯 > 精选 >使用java如何实现简易超市管理系统
  • 104
分享到

使用java如何实现简易超市管理系统

2023-06-14 06:06:11 104人浏览 薄情痞子
摘要

这篇文章给大家分享的是有关使用java如何实现简易超市管理系统的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、确定需求程序概述:小型超市商品销售管理系统选择小型超市的四类商品进行管理。这四类商品是:食品、化妆品

这篇文章给大家分享的是有关使用java如何实现简易超市管理系统的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

一、确定需求

程序概述:
小型超市商品销售管理系统选择小型超市的四类商品进行管理。
这四类商品是:食品、化妆品、生活用品和饮料(四个类)。
每类商品都包含有商品名和商品利润 (其中包括商品的售价、进价、库存量)。(五个属性)
每类不同的商品还有区别于其他商品的特殊信息(子类特有属性)例如,食品有批发商,化妆品有品牌,饮料有生产厂家。

上述文字可以确定以下几点

程序要实现“增,删,改,查”这四个基本功能 + 显示利润本程序要求对四类商品进行操作,因此分类很明确,只需要创建四个类分别表示四类商品即可本程序中要求商品有(以下属性)商品名、商品利润、售价、进价、库存量(我们当然可以额外加入一个属性:商品id,以实现更加明确的equals比较,后文会提及)。本程序中要求对于不同类的商品还要有自己特有的信息(食品有批发商,化妆品有品牌,饮料有生产厂家)

通过以上内容,我们大概对这个程序有了初步的想法和思路,下面我们深入分析一下需要哪些类以及哪些方法

二、确定类、接口、方法实现

1.确定类

上文提及到:我们需要定义四个类分别表示四类商品,那么我们在写之前是否可以从四个类抽取它们相同的特点(属性)来引入继承的思想呢?

显然是可以的,我们可以定义一个商品类Wares作为父类,(并且使用多态来切换父类引用的不同指向)Wares父类包含了四个类商品的共性(具有商品名、售价、进价、库存量、商品编号id这五个属性),而其子类当然就是食品Food、化妆品Cosmetic、生活用品DailyUsing和饮料Drinking,这样程序中的类就确定下来了

我们可以再深入思考一下:Wares可以是普通类、可以是抽象类,我们如何去选择呢?

其实两者在功能实现上都是可以的,但是普通类实现接口的时候,是一定要重写接口中每一个方法的,而抽象类却不需要;况且Wares是四类商品的父类,我们在对商品进行操作的时候,只需要操作其子类的对象即可,没有必要实例化Wares对象,因此我们选择将Wares定义为抽象类。

关于四个子类:食品类Food、饮料类Drinking、化妆品类Cosmetic、生活用品类DailyUsing的确定

四个子类只需要继承父类Wares即可,共性属性自然而然的继承了下来,特性属性在每个类中单独编写即可。

//Wares类中的属性//商品名字private String name;//商品编号private int id;//商品进价private double inPrice;//商品售价private double outPrice;//库存量private int Count;

注:Wares及其子类的属性我们最好都设为私有属性,再去通过settergetter方法进行存取,养成封装的好习惯~

2.确定接口

商品类Wares会包含所以商品类及其子类所共有的静态特征(属性)和对商品的动态操作(方法),属性在类中一一初始化即可,但是方法我们也要在此类中一一写出方法体吗?

我们可以利用接口,把我们程序所需要的方法都一一声明到接口内,不需实现,只需等待父类Waresimplement接口,再让其子类中对接口内的方法一一实现(重写)即可

3.确定方法

下面我们来根据程序需求来确定方法(需求:增删改查、显示利润)

我们还可以加入“遍历所有商品”功能,这样还可以在程序调试的时候,判断是否可以真正实现增删改查功能,起到验证作用

因此我们确定下来了有以下几个方法:

public interface Operations {  void addWareInfo(ArrayList<Wares> arrayList);  void printWareInfo(ArrayList<Wares> arrayList);  void findWareInfo(ArrayList<Wares> arrayList);  void countWarePrice(ArrayList<Wares> arrayList);  void delWareInfo(ArrayList<Wares> arrayList);  void updateWareInfo(ArrayList<Wares> arrayList);}

三、敲代码前再分析一波~

1.重写equals()吗?

重写equals()的目的是用于比较两个不同对象在其本身内容相同时,希望equals方法判定结果是true而非false,这时我们需要重写equals()

本程序我们自定义equals()判定规则为:当对象的编号和名称同时相同时,判定两个对象为同一个对象
很显然,本程序无论是“增删改查”操作这四个基本功能,还是验证用户是否重复添加同一商品这一功能,都需要两个对象进行equals比较,因此重写equals()是必须的。

那么是否每一个类都需要重写equals方法呢?

显然,Wares抽象类是不需要的,因为我们在比较的时候,是比较其子类的对象是否是同一对象,而并非父类对象(况且该父类是抽象类,无法实例化对象,更别谈可以调用其equals()了)因此我们可以确定:要重写Food类、Drinking类、DailyUsing类、Cosmetic类中的equals()要进行重写

@Overridepublic boolean equals(Object o) { if (this == o) return true; if (o == null || !(o instanceof Wares)) return false; Cosmetic cosmetic = (Cosmetic) o; return super.getName().equals(cosmetic.getName()) && super.getId()==cosmetic.getId();}

2.重写toString吗?

由于需要清晰的显示商品信息,每一次需要输出信息的时候,可以System.out.print(“…” + 属性1 + “…” + 属性2);来显示每一条信息。

但是鉴于本程序输出的次数很多,而且System.out.print()方法在内部调用toString()

因此我们可以重写(父类)toString方法,使得每次的输出都有一套固定的输出格式,实现了System.out.print(实例化的对象名);即可完成格式化输出。

那么是否每一个类都需要重写toString()呢?

显然,Wares抽象类是不需要的,因为我们输出信息的时候,是要输出四个子类对象的信息(父类Wares是抽象类,无法实例化对象,更别谈可以调用其toString()了)因此我们可以确定:要重写Food类、Drinking类、DailyUsing类、Cosmetic类中的toString()要进行重写

@Overridepublic String toString() { return "化妆品 {\t " + super.getId() +   "\t " + super.getName() +   "\t\t" + super.getInPrice() + "元" +   "\t\t" + super.getOutPrice() + "元" +   "\t\t" + super.getCount() + "件" +   "\t}";}

3.重写hashCode()吗?

Java中规定:如果两个对象相同,那么它们的hashCode值一定要相同;如果两个对象的hashCode相同,它们对象本身equals比较并不一定相同。
因此如果改写了equals方法,令两个实际不是一个对象的两个实例在逻辑上相等了,但是hashcode却是不等,这是有矛盾的。

这种矛盾会在HashMap集合中造成实际运行结果和预期运行结果的不一致产生。
(个人理解:equals()返回true表示两个对象相同,在同一个单向链表上比较那么对于同一个单向链表上的结点来说,他们的哈希值都应该是相同的所以hashCode()的返回值也应该相同)。

就本程序来说没有用到hashMap这样集合底层的数据结构来存储每一个对象(而是用的arrayList),因此是否重写hashCode方法对本程序的影响不大,但是鉴于程序的规范性,还是应该遵循以下原则:

如果一个类的equals方法重写了,那么hashCode方法必须重写。并且equals方法返回如果是true,hashCode方法返回的值必须一样。

@Overridepublic int hashCode() { return Objects.hash(brand);}

4.存储结构的确定

类、接口、方法、属性、数据类型以及实现方法都已经确定了,现在需要把实例化的对象以什么样的形式存储到一起呢?

一种是数组、一种是集合

很显然,我们在进行初始化的时候,不知道需要存入多少商品,无法对数组进行预估计容量;数组只能存放单一数据类型的元素,在对其操作的时候(相比较集合中已提供了对集合的很多操作而言)很不方便,而且数组虽然检索效率高,但是插入查找效率很低。

本程序我们选择arrayList集合进行对象的存储。

注:就本程序而言,个人感觉还是使用hashMap(查询更加快捷)或hashSet排序更加便捷),且两者都可以自动控制存储的信息无重复的特点。这是本程序需要改进的地方之一

感谢各位的阅读!关于“使用java如何实现简易超市管理系统”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: 使用java如何实现简易超市管理系统

本文链接: https://lsjlt.com/news/268910.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 使用java如何实现简易超市管理系统
    这篇文章给大家分享的是有关使用java如何实现简易超市管理系统的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、确定需求程序概述:小型超市商品销售管理系统选择小型超市的四类商品进行管理。这四类商品是:食品、化妆品...
    99+
    2023-06-14
  • Python实现简易超市管理系统
    目录一:购物车管理功能二:用户管理功能三:AI客服对话一:购物车管理功能 1.添加商品(不重复添加)、 2.删除商品(购物车中有的才能删除)、 3.查看购物车 4.退出系统 产品列表...
    99+
    2024-04-02
  • java实现简易超市管理系统 附源码下载
    java超市管理系统 1.0(含源文件,后续会继续优化~) 前言 一个月零零散散的时间学习了java,通过这次“超市管理系统”的练习,希望可以给一同开始学习java的朋友一些参考,更...
    99+
    2024-04-02
  • Java如何实现超市会员管理系统
    这篇文章主要介绍了Java如何实现超市会员管理系统的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java如何实现超市会员管理系统文章都会有所收获,下面我们一起来看看吧。要求:借助集合框架及实用类实现该系统积分累...
    99+
    2023-06-29
  • Java实现超市会员管理系统
    本文实例为大家分享了Java实现超市会员管理系统的具体代码,供大家参考,具体内容如下 要求:借助集合框架及实用类实现该系统 1、积分累计2、积分兑换3、查询剩余积分4、修改密码5、开...
    99+
    2024-04-02
  • 用Java实现简易的图书管理系统(超详细)
    目录 1.设计背景 2.设计思路 3.模块展示及代码演示 3.1 Book类的实现 3.2 BookList类的实现(书架) 3.3 异常类的实现(OperationException) 3.4 用户类的实现 3.5 操作接口的实现(定义...
    99+
    2023-09-01
    java 开发语言
  • 超市管理系统(java+Mysql)
    目 录 摘 要 I Abstract II 1 正文 1 1.1研究背景分析 1 1.2 超市管理系统的概述 2 1.3所需软、硬件技术准备 2 1.4可行性分析 3 1.4.1 技术可行性 3 1....
    99+
    2023-10-20
    java mysql 超市管理系统 超市账单管理系统 毕业设计
  • 如何使用python实现简易名片管理系统
    小编给大家分享一下如何使用python实现简易名片管理系统,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下功能需求用户输入数字选择要进行的操作添加名片删...
    99+
    2023-06-14
  • 如何使用C语言实现超市信息管理系统
    这篇文章主要介绍了如何使用C语言实现超市信息管理系统,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下设计要求:设计一个超市信息管理系统,利用结构体存储货物信息和所购...
    99+
    2023-06-29
  • Java实现简易学籍管理系统
    本文实例为大家分享了Java实现简易学籍管理系统的具体代码,供大家参考,具体内容如下 1、我们先来讲讲什么是泛型化编程 package 学生管理系统;   import java.u...
    99+
    2024-04-02
  • Java实现简易学生管理系统
    本文实例为大家分享了Java实现学生管理系统的具体代码,供大家参考,具体内容如下 1.学生管理系统(控制台界面实现) //学生类,继承Serializeable接口,将其序列化写入文...
    99+
    2024-04-02
  • 超市商品信息管理系统/超市管理系统的设计与实现
    摘  要 随着现在网络的快速发展,网上管理系统也逐渐快速发展起来,网上管理模式很快融入到了许多国家的之中,随之就产生了“超市商品信息管理系统”,这样就让超市商品信息管理系统更加方便简单。 对于本超市商品信息管理系统的设计来说,系统开发主要...
    99+
    2023-10-08
    java 开发语言
  • java实现简易的学籍管理系统
    本文实例为大家分享了java实现简易的学籍管理系统的具体代码,供大家参考,具体内容如下 一、 代码 import java.awt.*; import java.awt.event....
    99+
    2024-04-02
  • Java Web实现简易图书管理系统
    本文实例为大家分享了Java Web实现简易图书管理系统的具体代码,供大家参考,具体内容如下 前言 首先实现的是用户的登录注册,注册成功后自动跳转到图书列表页面,之后实现图书的增删改...
    99+
    2024-04-02
  • Java实战之超市收银管理系统的实现
    目录一、项目简述二、项目运行三、效果图四、核心代码品类信息控制层用户信息控制层商品信息控制层一、项目简述 本系统主要实现的功能有:收银、报表、用户管理、商品管理、销售管理、进货退货管...
    99+
    2024-04-02
  • python如何实现简易图书管理系统
    这篇“python如何实现简易图书管理系统”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python如何实现简易图书管理系统...
    99+
    2023-06-29
  • Java怎么实现简易学籍管理系统
    这篇文章给大家分享的是有关Java怎么实现简易学籍管理系统的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下我们先来讲讲什么是泛型化编程package 学生管理系统; import&n...
    99+
    2023-06-29
  • Java实现简易版的【图书管理系统】
    目录 🌎1.分析图书管理系统的功能 🌍 2.在IDEA中进行功能类的创建 🦄2.1  创建一个名为book的包,里面存放书相关的 🦄 2.2 创建一个名为Operation...
    99+
    2023-09-11
    java
  • 怎么使用Java实现简易版的图书管理系统
    这篇文章主要介绍“怎么使用Java实现简易版的图书管理系统”,在日常操作中,相信很多人在怎么使用Java实现简易版的图书管理系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用Java实现简易版的图书管...
    99+
    2023-07-02
  • python实现超市进销存管理系统
    本文实例为大家分享了python实现超市进销存管理系统的具体代码,供大家参考,具体内容如下 面向对象程序设计 系统包括7种操作,分别是:1.查询所有商品;2.添加商品;3.修改商品;...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作