主要有两大类:,物品类,用户类

物品类的属性有:编号,品牌,名称,价格

用户类的属性有:用户名,用户密码,普通用户和管理员用户

管理员用户可以对商品进行增删改查,

普通用户只能查看商品和购买商品。

先展示物品类,代码如下:

package MXDX.OOP5.ShopTest.entity;import java.util.Objects;public class Goods {private int id;private String brand;private String name;private double price;public Goods(int id, String brand, String name, double price) {this.id = id;this.brand = brand;this.name = name;this.price = price;}public Goods() {}@Overridepublic String toString() {return "Goods{" +"id=" + id +", brand='" + brand + '\'' +", name='" + name + '\'' +", price=" + price +'}';}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Goods goods = (Goods) o;return id == goods.id &&Double.compare(goods.price, price) == 0 &&Objects.equals(brand, goods.brand) &&Objects.equals(name, goods.name);}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}
}

再创建一个GoodsDao类,用于实现物品的增删改查,代码如下:

package MXDX.OOP5.ShopTest.dao;import MXDX.OOP5.ShopTest.entity.Goods;/*** 定义商品类的增删改查*/
public class GoodsDao {
//定义一个数组,用于保存private Goods[] list=new Goods[10];/*** 添加商品*/public boolean insertGoods(Goods goods){for (int i = 0; i < list.length; i++) {if (!goods.equals(list[i])&&list[i]==null){list[i] = goods;return true;}}return false;}/*** 查看商品*/public void showAll(){//System.out.println("商品编号\t商品品牌\t商品名称\t商品价格");for (Goods goods :list){if(goods!=null){System.out.println(goods);}}}/*** 根据编号查询*/public Goods findGoodsById(int id){for (Goods goods:list ){if (goods!=null && goods.getId()==id){return goods;}}return null;}}
接下来是用户类,代码如下:
package MXDX.OOP5.ShopTest.entity;import java.util.Objects;public class User {private String username;private String password;private int role;public User() {}public User(String username, String password, int role) {this.username = username;this.password = password;this.role = role;}@Overridepublic String toString() {return "User{" +"username='" + username + '\'' +", password='" + password + '\'' +", role=" + role +'}';}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;User user = (User) o;return role == user.role &&Objects.equals(username, user.username) &&Objects.equals(password, user.password);}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public int getRole() {return role;}public void setRole(int role) {this.role = role;}
}
同理,再创建一个UserDao的类用于用户的登陆和注册,代码如下:
package MXDX.OOP5.ShopTest.dao;import MXDX.OOP5.ShopTest.entity.User;/*** 用户注册登陆类*/
public class UserDao {//创建一个数组,用于保存用户的信息private User[] list =new User[10];/*** 登陆*/public boolean login (User user ){//默认没有匹配的用户boolean f =false ;//循环遍历for( User u : list ){//如果匹配到用户,返回trueif(user.equals(u))  {f=true;}}return f;}/*** 注册(添加)**/public boolean register(User user) {//循环遍历,如果没有重复用户且有空位置,则将参数保存到数组中for (int i = 0; i < list.length; i++) {if (!user.equals(list[i]) && list[i] == null) {list[i] = user;return true;}}return false;}
}

再创建一个商店类(ShopService),用于实现GoodsDao类和UserDao类的方法,代码如下:

package MXDX.OOP5.ShopTest.service;import MXDX.OOP5.ShopTest.entity.Goods;
import MXDX.OOP5.ShopTest.entity.User;
import java.util.Scanner;
import MXDX.OOP5.ShopTest.dao.GoodsDao;
import MXDX.OOP5.ShopTest.dao.UserDao;/*** 商场的业务流程图*/
public class ShopService {Scanner sc = new Scanner(System.in);//创建真正操作数组的两个xxxDao对象GoodsDao goodsdao = new GoodsDao();UserDao userdao = new UserDao();/*** 主菜单* */public void menu() {System.out.println("1.注册");System.out.println("2.登陆");switch (sc.nextInt()) {case 1://接收信息调用userManager的注册方法System.out.println("请输入用户名");String username = sc.next();System.out.println("请输入密码");String password = sc.next();System.out.println("请输入角色(0管理员1普通用户)");int role = sc.nextInt();//创建对象,调用注册User registerUser = new User(username, password, role);if (userdao.register(registerUser)) {//注册成功,重新进入本方法menu();} else {System.out.println("注册失败");}break;case 2://接收信息调用userManager的登陆方法System.out.println("请输入用户名");String username2 = sc.next();System.out.println("请输入密码");String password2 = sc.next();System.out.println("请输入角色(0管理员1普通用户)");int role2 = sc.nextInt();User loginUser = new User(username2, password2, role2);//如果管理员登陆成功,进入管理员界面if (userdao.login(loginUser)) {if (loginUser.getRole() == 0) {//0管理员//调用管理员菜单managerMenu();} else {//普通用户//调用购买菜单buyMenu();}} else {System.out.println("用户名或密码错误");}break;}}/** 管理员菜单* */public void managerMenu() {System.out.println("1.添加商品");System.out.println("2.查看所有商品");System.out.println("3.返回登陆页面");switch (sc.nextInt()) {case 1://调用goodsManager中的添加
//                Goods g1 = new Goods(1001, "康师傅", "冰红茶", 3);
//                Goods g2 = new Goods(1002, "康师傅", "红烧牛肉面", 4.5);
//                Goods g3 = new Goods(1003, "娃哈哈", "AD钙奶", 3);
//                goodsManager.insertGoods(g1);
//                goodsManager.insertGoods(g2);
//                goodsManager.insertGoods(g3);//手动添加信息System.out.println("请输入添加商品的编号:");int id=sc.nextInt();System.out.println("请输入添加商品的品牌:");String brand=sc.next();System.out.println("请输入添加商品的名称:");String name=sc.next();System.out.println("请输入添加商品的价格:");int price=sc.nextInt();Goods goods =new Goods(id, brand, name, price);if (goodsdao.insertGoods(goods)) {System.out.println("添加成功!");}else{System.out.println("添加失败!");}managerMenu();break;case 2://调用goodsManager中的查看goodsdao.showAll();managerMenu();break;case 3://调用主菜单menu();break;}}/** 购买菜单* */public void buyMenu() {//先打印所有商品goodsdao.showAll();System.out.println("请输入要购买的商品编号");int id = sc.nextInt();//调用根据编号查询商品的方法Goods goodsById = goodsdao.findGoodsById(id);if (goodsById != null ) {//接受其他信息输出订单System.out.println("请输入收货人姓名");String name = sc.next();System.out.println("请输入收货人电话");String phone = sc.next();System.out.println("请输入收货人地址");String address = sc.next();System.out.println("===========订单信息============");System.out.println("收货人:" + name);System.out.println("联系电话:" + phone);System.out.println("收货地址:" + address);System.out.println("商品信息:" + goodsById);System.out.println("总价:¥" + goodsById.getPrice());System.out.println("===========谢谢使用============");} else {System.out.println("商品不存在");}}}

再创建一个main方法,用于程序的入口,代码如下:

package MXDX.OOP5.ShopTest;import MXDX.OOP5.ShopTest.service.ShopService;public class Main {public static void main(String[] args) {new ShopService().menu();}
}
注意事项:

1.创建对象时的名称不要和类混淆,尽量用大小写区分

2.创建的类有点多,注意导包,别导错了

3.在封装和初始化用户类和物品类是时,为了节约时间,建议使用快捷键。

商店管理系统的设计与实现相关推荐

  1. 课程设计-商店管理系统(四)----数据库的建立

    数据库的建立 之前的博文 课程设计-商店管理系统(一)----前端页面的制作(一) 课程设计-商店管理系统(二)----前端页面的制作(二) 课程设计-商店管理系统(三)----前端页面的制作(三) ...

  2. 课程设计-商店管理系统(三)----前端页面的制作(三)

    前端页面制作(三) 之前的博文 课程设计-商店管理系统(一)----前端页面的制作(一) 课程设计-商店管理系统(二)----前端页面的制作(二) 进出货查询 我们现在要制作进出货信息查询界面,这个界 ...

  3. 课程设计-商店管理系统(二)----前端页面的制作(二)

    前端页面制作(二) 之前的博文 课程设计-商店管理系统(一)----前端页面的制作(一) 看了老师发的课程设计要求,我设置准备制作以下功能 商品查询: 该界面可以进行查询:商品序号.商品编码.商品名称 ...

  4. 课程设计-商店管理系统(一)----前端页面的制作(一)

    前端页面的制作 ​ 因为前一段时间学习了数据库,学校老师要求制作一个有关数据库的管理系统,我看了一下要求的题目,其中最合适的就是商店管理系统(就是各大培训机构必做的电商系统).这篇博客是为了记录我的前 ...

  5. java宠物商店管理系统_Java实现宠物商店管理系统

    Java实现宠物商店管理系统,宠物,宠物商店,数组,您的,还需要 Java实现宠物商店管理系统 易采站长站,站长之家为您整理了Java实现宠物商店管理系统的相关内容. 本文实例为大家分享了Java实现 ...

  6. 基于Java的旅行管理系统的设计与实现

    欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye2 摘 要:旅行社信息管理系统应当比较能符合社会发展对它的要求.随着旅行社所储存的信息量以几何的指 ...

  7. (php毕业设计)基于php水果销售商店管理系统获取

    基于php水果销售商店管理系统 水果销售商店管理系统是基于php编程语言和mysql数据库开发,BS架构系统.本系统分为用户和管理员两个角色,用户可以在线查看水果分类,加入购物车,提交订单,订单评价等 ...

  8. 基于Spring boot的图书馆图书借阅管理系统的设计与实现

    作者主页:编程千纸鹤 作者简介:Java.前端.Python开发多年,做过高程,项目经理,架构师 主要内容:Java项目开发.毕业设计开发.面试技术整理.最新技术分享 收藏点赞不迷路  关注作者有好处 ...

  9. java计算机毕业设计商店管理系统源码+数据库+系统+lw文档+mybatis+运行部署

    java计算机毕业设计商店管理系统源码+数据库+系统+lw文档+mybatis+运行部署 java计算机毕业设计商店管理系统源码+数据库+系统+lw文档+mybatis+运行部署 本源码技术栈: 项目 ...

最新文章

  1. 集成学习之Boosting
  2. 了解 GNU GPL/GNU LGPL/BSD/MIT/Apache协议
  3. 在html中使用thymeleaf编写通用模块
  4. 苹果mac休眠快捷键_Mac技巧|如何高效使用苹果便笺?用便笺快捷键快速完成操作...
  5. keil生成hex文件找不到_骚操作!用Python把公众号文章打包成pdf文件,再也不怕找不到了...
  6. linux 4.4内核特性,Linux Kernel 4.4.19 LTS长期支持版发布
  7. 类型全部为string_python小讲堂丨学了这么久的,这6种基本数据类型你真的理解了吗...
  8. Windows Mobile 数独游戏及全部源码
  9. Datax-web 使用Python3 执行脚本
  10. [delphi]极域学生端解除键盘鼠标锁定退出全屏广播-强制窗口化-源代码
  11. html5饼图的制作方法,html5制作饼图
  12. 微星z370黑苹果_[原创]黑苹果Hackintosh 10.13.5 High Sierra i7 8700k z370
  13. linux系统ca证书认证失败修复过程记录
  14. 浅谈HTML页面基本结构
  15. Ubuntu /home下中文目录如何修改成英文
  16. 梭子鱼网络:2018年网络安全威胁预测
  17. 第五次网页前端培训笔记(javascript基础内容)
  18. hdu 6357 Hills And Valleys思维
  19. MyZip Mac一秒超快速解压/压缩
  20. 读书笔记-追风筝的人

热门文章

  1. ipsec与服务器协议失败,IPSEC SA无法协商成功
  2. Github 徽章shields使用教程
  3. Thread.currentThread().interrupt()和Thread.interrupted()和Thread.currentThread().isInterrupted()
  4. border渐变 ios_iOS一个方法搞定view渐变色
  5. IT运维面试问题总结-LVS、Keepalived、HAProxy、Kubernetes、OpenShift
  6. ❤️连续面试失败后,我总结了57道面试真题❤️,如果时光可以倒流...(附答案,建议收藏)
  7. 51单片机-定时器中断
  8. Android音频子系统(十)------MTK Audio录音流程代码解析
  9. 项目使用的 safe.cs 帮助类
  10. ASPICE SWE3之——C代码生成软件详细设计1 Doxygen配置