基于java的超市管理系统设计与实现

news2024/11/25 12:24:43

摘  要

随着小型超市规模的发展不断扩大,商品数量急剧增加,有关商品的各种信息量也成倍增长,传统的人工记忆方式也慢慢的无法适应形势的变化。随着信息技术的发展,计算机已被广泛的用于社会的各个领域,成为推动社会发展的技术动力。而在计算机应用中,软件的作用十分突出,软件已经发展成为信息技术的核心,主导着信息产品的开发和信息技术市场的进一步的开拓。软件产业已成为社会信息化进程中的一个战略性产业。在软件技术的应用中软件的开发技术尤其是应用型软件产品的开发技术成了重中之重。不断开发适应用户需求、市场需要的新型软件产品。随着社会的发展,软件也在不断的更新换代。

由于有些超市里对商品的进货、售出及商品的基本信息等的一些繁琐处理都是通过手工进行记载并进行处理的,对商品信息的处理工作量特别大,不仅浪费大量的人力物力,而且还很容易出错,更重要的是为了方便顾客,超市需要时时刻刻对商品对各种信息进行统计分析。 一直以来人们使用传统人工的方式管理超市的各项工作, 这种管理方式存在着许多缺点, 如: 效率低、保密性差, 另外时间一长, 将产生大量的冗余文件和数据, 这给查找、统计、更新和维护工作都带来了很大的困难。然而大型的超市管理系统功能过于强大而造成操作繁琐降低了小超市的工作效率。如果有这样一套完整的小型超市管理系统软件,只需点击几下鼠标就可完成所需操作,那样就会大大的提高超市员工的工作效率和管理水平,并能进一步提高超市的工作效率并使超市实施规范化管理。鉴于小型超市管理中存在的诸多问题, 我们在此次课程设计中以小型超市管理系统为研究课题,对此系统进行了全面的设计。

超市管理系统由顾客、员工、管理员界面三部分组成。 超市管理系统应该能够为用户提供充足的信息和快捷的查询手段。一个完整系统的设计,当然就离不开后台环境的支持,在此次设计中,我们主要以MYSQL数据库作为基础,实行此系统的开发。

关键词:Idea;MySQL;数据库;表

第一章 设计目的

《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力。

随着现代科学技术的迅猛发展,计算机技术已经渗透到各个领域,成为各行业必不可少的工具,特别是Internet技术的推广和信息高速公路的建立,使IT产业在市场竞争中越发显示出其独特的优势,步入信息化时代,有巨大的数据信息等待加工处理和传输,这使得对数据库的进一步开发和利用显得尤为迫切。

作为国内市场的一些中小型超市,它们在信息化过程中的步伐要落后于大中型超市,而对于这些企业的资源管理,信息的存储和处理也显得迫切需要,要适应市场竞争,就需要有高效的处理方式和管理方法,因此加快超市的信息化进程是必不可少的。

我国的超市在20世纪90年代初期形成,现在已经成为我国零售业的一种重要形态,为国民经济的发展发挥了重要的作用。随着经济的快速发展,超市的经营管理也变得愈加复杂,早期的售货员站柜台的形式早已不能满足现有销售业的发展,这样就迫切地需要引入新的管理技术。

主要是中小型超市使用者,该消费群体具有以下特征:超市日常管理人工化居多,工作效率较低;超市日常交易额较小,货物流通较小,不愿花高价购进大型超市管理系统。因此,该消费群体对产品的功能性需求并不高,只需满足前台销售系统、后台货物管理即可。

第二章 设计任务与要求

课程设计可选用IDEA、MySQL等作为开发平台以提高开发效率,尽可能熟练掌握其中一种集成开发环境。建议采用UML建模技术进行系统的分析设计,在Visio中画出系统用例图和类图,并将UML图复制到设计报告中。

通过这次设计,要求掌握以下内容:

(1)面向对象技术中的继承与多态(重载和覆盖)机制、各种修饰符的使用

(2)类、包、接口的定义与使用

(3)常用工具类与算法的实现(数组、向量、字符串、链表)

(4)Java的异常处理机制

(5)Java的数据库连接技术

第三章 设计说明

3.1  需求分析

3.1.1功能分析

本平台是基于Java语言的一个超市管理系统,主要功能是为广大的中小型超市提供一些日常的琐碎工作的管理,使得超市管理员能够从琐碎的管理事物中抽身出来,节省不必要的精力,从而可以更高效更好地完成工作。根据超市管理的实际需要,将本系统划分为几个功能模块,分别是普通用户及VIP用户的登录注册操作,对商品信息的管理,对员工信息的管理,对用户购物的操作,对用户退货,用户积分积攒及用户基本查看、兑换等操作。

本系统主要实现以下基本功能:

(1) 注册模块:该模块能实现普通用户、VIP用户在该系统注册账号,成为该超市的用户。

登录模块:该模块能实现普通用户、VIP用户登录系统,从而在系统上进行相应的查看商品、下单、退货等一系列操作。

  1. 商品管理模块:主要供管理员管理商品信息,可新增、修改、查询、删除商品信息,并进行节日购物打折设置。
  2. 购物管理模块: 为购物者提供方便的服务,将商品信息进行整理,展示,用户在登录系统后可查看商品、购买商品、退货的功能,VIP会员除此功能外,可查看个人积分并进行积分兑换。
  3. 管理员管理模块:管理员可登录系统,对员工信息进行查看、添加、修改、删除操作,对员工进行统一管理。

3.1.2性能要求分析

(1) 系统易操作性:

所开发的系统就做到操作简单,尽量使系统操作不受用户对电脑知识水平的限制。

(2) 系统具有可维护性:

由于系统涉及的信息比较广,数据库中的数据需要定期修改,系统可利用的空间及性能也随之下降,为了使系统更好地运转。

(3) 系统具有开放性:

该系统能够在开放的硬件系结构中运行,并且能与其他系统顺利连接,不会因外部系统的不同面要做在量的修改工作。

3.2 概要设计 

3.2.1功能模块图

图3-1 功能模块图

3.3 详细设计

3.3.1项目代码目录结构

controller:程序控制包,放的是说程序逻辑控制判断类。

dao:数据操作包,数据操作接口及其实现类。

db:数据库连接包,下面是数据库连接获取工具类。

view:系统菜单界面包。

po:实体类包。

main:程序启动包,程序启动需通过此包下面的Main.class里面的main方法。

3.3.2数据表设计

admin(管理员表)

建表语句:CREATE TABLE `admin`  (

  `aid` int(11) NOT NULL,

  `aname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

  `apass` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

  `profit` float NULL DEFAULT NULL,

  PRIMARY KEY (`aid`) USING BTREE

) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

employees(员工表)

建表语句:

  CREATE TABLE `employees`  (

  `eid` int(11) NOT NULL AUTO_INCREMENT,

  `ename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

  `salary` float NULL DEFAULT NULL,

  `state` int(11) NULL DEFAULT NULL,

  PRIMARY KEY (`eid`) USING BTREE

) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

goods(商品表)

建表语句:

CREATE TABLE `goods`  (

  `goodsid` int(11) NOT NULL AUTO_INCREMENT,

  `goodsname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

  `price` float NULL DEFAULT NULL,

  `goodspoint` int(11) NULL DEFAULT NULL,

  `kindid` int(11) NULL DEFAULT NULL,

  `num` int(11) NULL DEFAULT NULL,

  PRIMARY KEY (`goodsid`) USING BTREE

) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

kinds(商品分类表)

建表语句:

CREATE TABLE `kinds`  (

  `kindid` int(11) NOT NULL AUTO_INCREMENT,

  `kindname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

  PRIMARY KEY (`kindid`) USING BTREE

) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

users(普通用户表)

建表语句:

CREATE TABLE `users`  (

  `uid` int(11) NOT NULL AUTO_INCREMENT,

  `uname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

  `upass` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

  `upoint` int(11) NULL DEFAULT NULL,

  PRIMARY KEY (`uid`) USING BTREE

) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

vip(vip用户表)

建表语句:

CREATE TABLE `vip`  (

  `vipid` int(11) NOT NULL AUTO_INCREMENT,

  `vipname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

  `vippass` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

  `vippoint` int(11) NULL DEFAULT NULL,

  PRIMARY KEY (`vipid`) USING BTREE

) ENGINE = InnoDB AUTO_INCREMENT = 1003 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

3.4主要程序功能流程图

(1)用户注册模块:普通用户注册,如图3-3。会员用户注册,如图3-4。

图3-3 普通用户注册

图3-4 会员用户注册

(2)登录模块:普通用户、管理员用户登录,如图3-5所示。会员用户登录,如图3-6所示。

图3-5 普通用户、管理员登录      

图3-6 会员用户登录

(3)商品管理:商品查看,如图3-7所示。商品新增,如图3-8所示。商品修改,如图3-9所示。商品下架,如图3-10所示。

图3-7 商品查看

图3-8 商品新增

图3-9 商品修改

图3-10 商品下架

(4)员工管理:员工查看,如图3-11所示。员工新增,如图3-12所示。员工修改,如图3-13所示。员工删除,如图3-14所示。

图3-11 员工查看

图3-12 员工新增

图3-13 员工修改

图3-14 员工删除

(5)积分兑换管理:积分查看,如图3-15所示。积分兑换,如图3-16所示。

图3-15 积分查看

图3-16 积分兑换

(6)商品节日打折:商品节日打折录入,如图3-17所示。

图3-17 商品节日打折

第四章 设计成果

4.1主要代码

数据库工具类:

package db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DB {

   private Connection conn;
   public Statement stmt;
   public DB() {
      try {
         Class.forName("com.mysql.jdbc.Driver");
         String url="jdbc:mysql://localhost:3306/supermarket";
         conn=DriverManager.getConnection(url, "root", "123456");
      } catch (ClassNotFoundException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      } catch (SQLException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
      
   }
   public int update(String sql) {//执行增删改
      // TODO Auto-generated method stub
      System.out.println(sql);
      try {
         this.stmt=conn.createStatement();
         return this.stmt.executeUpdate(sql);
      } catch (SQLException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
      return -1;
   }
   public ResultSet query(String sql) {//查询
      System.out.println(sql);
      try {
         this.stmt=conn.createStatement();
         return this.stmt.executeQuery(sql);
         
      } catch (SQLException e) {
               e.printStackTrace();
      }
      return null;
   }
   
   public int updatepoint(int vipid) {//获取数据库中会员积分
      String sql;
      ResultSet rs;
      sql="SELECT vippoint FROM vip where vipid="+vipid+"";
      try {
         stmt=conn.createStatement();
         rs=stmt.executeQuery(sql);
         if(rs.next()) {
            int vippoint0=rs.getInt(1);
            return vippoint0;
         }
      } catch (SQLException e) {
         e.printStackTrace();
      }
      return -1;
   }
}

程序控制代码:

package control;

import java.util.ArrayList;
import java.util.Scanner;


import dao.impl.AdminDaoImpl;
import dao.impl.EmployeesDaoImpl;
import dao.impl.GoodsDaoImpl;
import dao.impl.UserDaoImpl;
import dao.impl.VipDaoImpl;
import db.DB;
import po.Admin;
import po.Employees;
import po.Goods;
import po.Users;
import po.Vip;
import view.View;

public class Control {
   private AdminDaoImpl adminDao;
   private UserDaoImpl userDao;
   private VipDaoImpl vipDao;
   private EmployeesDaoImpl employeeDao;
   private GoodsDaoImpl goodsDao;
   private Scanner get;
   private View view;
   private DB db;
   public Control() {
      // TODO Auto-generated constructor stub
      adminDao=new AdminDaoImpl();
      userDao=new UserDaoImpl();
      vipDao=new VipDaoImpl();
      employeeDao=new EmployeesDaoImpl();//曾因为未在此处初始化出现错误
      goodsDao=new GoodsDaoImpl();
      get=new Scanner(System.in);
      view=new View();
      db=new DB();
   }
   public void start() {
      // TODO Auto-generated method stub
      while(true) {
         view.showMenu();
         String t=get.next();
         if("1".equals(t)) {//普通用户注册
            System.out.println("请输入用户名:");
            String uname=get.next();
            System.out.println("请输入密码:");
            String upass=get.next();
            Users user=new Users(uname, upass);
            if(userDao.regUser(user)) {
               System.out.println("注册成功");
               while(true) {
                  view.userMenu1();
                  t=get.next();
                  if("1".equals(t)) {//查看所有商品信息
                     ArrayList<Goods> list=goodsDao.selectGoods();
                     System.out.println("goodsid\t\tgoodsname\tprice\t\tgoodspoint\tkindid\t\tnum");
                     for(Goods g:list) {
                        g.show();
                     }
                  }else if("2".equals(t)) {//购买商品
                     System.out.println("请输入要购买商品的名称");
                     String goodsname=get.next();
                     boolean flag=false;
                     ArrayList<Goods> list=goodsDao.selectGoods();
                     for(Goods g:list) {
                        if(goodsname.equals(g.getGoodsname())) {
                           flag=true;
                           System.out.println("商品所剩数量为:"+g.getNum());
                           System.out.println("请输入要购买商品的数量");
                           int number=get.nextInt();
                           if(number<=g.getNum()) {
                              System.out.println("购买成功");
                           }else {
                              System.out.println("所剩商品不足,购买失败");
                           }
                           int newnum=g.getNum()-number;
                           boolean flag1=goodsDao.updateNum(g.getGoodsid(), newnum);//修改库存
                           if(flag1) {
                              System.out.println("库存更新成功");
                           }else {
                              System.out.println("库存更新失败");
                           }
                           break;
                        }
                     }
                     if(flag==true) { }else {
                        System.out.println("超市中不存在此商品");
                     }

                  }else if("3".equals(t)) {//退货
                     System.out.println("请输入要退商品的名称");
                     String goodsname=get.next();
                     ArrayList<Goods> list=goodsDao.selectGoods();
                     for(Goods g:list) {
                        if(goodsname.equals(g.getGoodsname())) {
                           
                           System.out.println("请输入要退商品的数量");
                           int number=get.nextInt();
                           System.out.println("退货成功");
                           int newnum=g.getNum()+number;
                           boolean flag1=goodsDao.updateNum(g.getGoodsid(), newnum);//修改库存
                           if(flag1) {
                              System.out.println("库存更新成功");
                           }else {
                              System.out.println("库存更新失败");
                           }
                           break;
                        }
                     }
                  }else if("0".equals(t)) {
                     break;
                  }
               }
            }else {
               System.out.println("注册失败");
            }
         }else if("2".equals(t)) {//普通用户登录
            System.out.println("请输入用户名:");
            String uname=get.next();
            System.out.println("请输入密码:");
            String upass=get.next();
            Users user=new Users(uname, upass);
            if(userDao.loginUser(user)) {
               System.out.println("登录成功");
               while(true) {
                  view.userMenu1();
                  t=get.next();
                  if("1".equals(t)) {//查看所有商品信息
                     ArrayList<Goods> list=goodsDao.selectGoods();
                     System.out.println("goodsid\t\tgoodsname\tprice\t\tgoodspoint\tkindid\t\tnum");
                     for(Goods g:list) {
                        g.show();
                     }
                  }else if("2".equals(t)) {//购买商品
                     System.out.println("请输入要购买商品的名称");
                     String goodsname=get.next();
                     boolean flag=false;
                     ArrayList<Goods> list=goodsDao.selectGoods();
                     for(Goods g:list) {
                        if(goodsname.equals(g.getGoodsname())) {
                           flag=true;
                           System.out.println("商品所剩数量为:"+g.getNum());
                           System.out.println("请输入要购买商品的数量");
                           int number=get.nextInt();
                           if(number<=g.getNum()) {
                              System.out.println("购买成功");
                           }else {
                              System.out.println("所剩商品不足,购买失败");
                           }
                           int newnum=g.getNum()-number;
                           boolean flag1=goodsDao.updateNum(g.getGoodsid(), newnum);//修改库存
                           if(flag1) {
                              System.out.println("库存更新成功");
                           }else {
                              System.out.println("库存更新失败");
                           }
                           break;
                        }
                     }
                     if(flag==true) { }else {
                        System.out.println("超市中不存在此商品");
                     }
                  }else if("3".equals(t)) {//退货
                     System.out.println("请输入要退商品的名称");
                     String goodsname=get.next();
                     ArrayList<Goods> list=goodsDao.selectGoods();
                     for(Goods g:list) {
                        if(goodsname.equals(g.getGoodsname())) {
                           
                           System.out.println("请输入要退商品的数量");
                           int number=get.nextInt();
                           System.out.println("退货成功");
                           int newnum=g.getNum()+number;
                           boolean flag1=goodsDao.updateNum(g.getGoodsid(), newnum);//修改库存
                           if(flag1) {
                              System.out.println("库存更新成功");
                           }else {
                              System.out.println("库存更新失败");
                           }
                           break;
                        }
                     }
                  }else if("0".equals(t)) {
                     break;
                  }
               }
            }else {
               System.out.println("用户名或者密码错误");
            }
         }else if("3".equals(t)) {//vip用户注册
            System.out.println("请输入用户名:");
            String vipname=get.next();
            System.out.println("请输入密码:");
            String vippass=get.next();
            Vip vip=new Vip(vipname, vippass);
            if(vipDao.regVip(vip)) {               
               System.out.print("本人的会员编号为:");//查找到对应编号
               vipDao.showid(vipname);
               System.out.println("请输入自己的会员编号:");
               int vipid0=get.nextInt();
               System.out.println("注册成功");
               while(true) {
                  view.vipMenu1();
                  t=get.next();
                  if("1".equals(t)) {//查看所有商品信息
                     ArrayList<Goods> list=goodsDao.selectGoods();
                     System.out.println("goodsid\t\tgoodsname\tprice\t\tgoodspoint\tkindid\t\tnum");
                     for(Goods g:list) {
                        g.show();
                     }
                  }else if("2".equals(t)) {//购买商品
                     System.out.println("请输入要购买商品的名称");
                     String goodsname=get.next();
                     boolean flag=false;
                     ArrayList<Goods> list=goodsDao.selectGoods();
                     for(Goods g:list) {
                        if(goodsname.equals(g.getGoodsname())) {
                           flag=true;
                           System.out.println("商品所剩数量为:"+g.getNum());
                           System.out.println("请输入要购买商品的数量");
                           int number=get.nextInt();
                           if(number<=g.getNum()) {
                              System.out.println("购买成功");
                              int newvippo=number*g.getGoodspoint()+db.updatepoint(vipid0);
                              boolean flag1=vipDao.updateVippoint(vipid0, newvippo);
                              if(flag1) {
                                 System.out.println("会员积分更新成功");
                              }else {
                                 System.out.println("会员积分更新失败");
                              }
                           }else {
                              System.out.println("所剩商品不足,购买失败");
                           }
                           int newnum=g.getNum()-number;
                           boolean flag1=goodsDao.updateNum(g.getGoodsid(), newnum);//修改库存
                           if(flag1) {
                              System.out.println("库存更新成功");
                           }else {
                              System.out.println("库存更新失败");
                           }
                           break;
                        }
                     }
                     if(flag==true) { }else {
                        System.out.println("超市中不存在此商品");
                     }

                  }else if("3".equals(t)) {//退货
                     System.out.println("请输入要退商品的名称");
                     String goodsname=get.next();
                     ArrayList<Goods> list=goodsDao.selectGoods();
                     for(Goods g:list) {
                        if(goodsname.equals(g.getGoodsname())) {
                           
                           System.out.println("请输入要退商品的数量");
                           int number=get.nextInt();
                           System.out.println("退货成功");
                           int newvippo=db.updatepoint(vipid0)-number*g.getGoodspoint();
                           
                           boolean flag0=vipDao.updateVippoint(vipid0, newvippo);//修改会员积分
                           if(flag0) {
                              System.out.println("会员积分更新成功");
                           }else {
                              System.out.println("会员积分更新失败");
                           }
                           int newnum=g.getNum()+number;
                           boolean flag1=goodsDao.updateNum(g.getGoodsid(), newnum);//修改库存
                           if(flag1) {
                              System.out.println("库存更新成功");
                           }else {
                              System.out.println("库存更新失败");
                           }
                           break;
                        }
                     }
                  }else if("4".equals(t)) {//查看自己积分
                     int vippoint=db.updatepoint(vipid0);
                     System.out.println("积分为:"+vippoint);
                  }else if("5".equals(t)) {//积分抵扣兑换
                     System.out.println("请输入要购买商品的名称");
                     String goodsname=get.next();
                     boolean flag=false;
                     ArrayList<Goods> list=goodsDao.selectGoods();
                     for(Goods g:list) {
                        if(goodsname.equals(g.getGoodsname())) {
                           flag=true;
                           System.out.println("商品所剩数量为:"+g.getNum());
                           System.out.println("商品的单价为:"+g.getPrice());
                           System.out.println("请输入要购买商品的数量");
                           int number=get.nextInt();
                           if(number<=g.getNum()) {
                              System.out.println("是否选择积分抵扣(y/n):");//只有商品总价格大于积分/30(积分可抵扣积分/30)时才可抵扣
                              String select=get.next();
                              boolean flag1=false;
                            if(number*g.getPrice()>(vipid0/30) && select.equalsIgnoreCase("y")) {
                              if(select.equalsIgnoreCase("y")) {
                                 System.out.println("购买成功");
                                 int newvippo=number*g.getGoodspoint();//全部抵扣原积分
                                 
                                 flag1=vipDao.updateVippoint(vipid0, newvippo);
                              }else if(select.equalsIgnoreCase("n")) {//不用积分抵扣
                                 System.out.println("购买成功");
                                 flag1=vipDao.updateVippoint1(vipid0, number*g.getGoodspoint());
//                               flag1=vipDao.updateVippoint(vip.getVipid(), newvippo);
                              }else {
                                 System.out.println("购买失败");//输入的不是y或者n
                              }
                              
                              if(flag1) {
                                 System.out.println("会员积分更新成功");
                              }else {
                                 System.out.println("会员积分更新失败");
                              }
                           }else {
                              System.out.println("所剩商品不足,购买失败");
                           }
                           int newnum=g.getNum()-number;
                           boolean flag1=goodsDao.updateNum(g.getGoodsid(), newnum);//修改库存
                           if(flag1) {
                              System.out.println("库存更新成功");
                           }else {
                              System.out.println("库存更新失败");
                           }
                           break;
                        }
                     }
                     if(flag==true) { }else {
                        System.out.println("超市中不存在此商品");
                     }
                  }else if("0".equals(t)) {
                     break;
                  }
               }
            }else {
               System.out.println("注册失败");
            }
         }else if("4".equals(t)) {//vip用户登录
            System.out.println("请输入用户名:");
            String vipname=get.next();
            System.out.println("请输入密码:");
            String vippass=get.next();
            Vip vip=new Vip(vipname, vippass);
            
            
            if(vipDao.loginVip(vip)) {    

               System.out.print("本人的会员编号为:");//查找到对应编号
               vipDao.showid(vipname);
               System.out.println("请输入自己的会员编号:");
               int vipid0=get.nextInt();
               System.out.println("登录成功");
               while(true) {
                  view.vipMenu1();
                  t=get.next();
                  if("1".equals(t)) {//查看所有商品信息
                     ArrayList<Goods> list=goodsDao.selectGoods();
                     System.out.println("goodsid\t\tgoodsname\tprice\t\tgoodspoint\tkindid\t\tnum");
                     for(Goods g:list) {
                        g.show();
                     }
                  }else if("2".equals(t)) {//购买商品
                     System.out.println("请输入要购买商品的名称");
                     String goodsname=get.next();
                     boolean flag=false;
                     ArrayList<Goods> list=goodsDao.selectGoods();
                     for(Goods g:list) {
                        if(goodsname.equals(g.getGoodsname())) {
                           flag=true;
                           System.out.println("商品所剩数量为:"+g.getNum());
                           System.out.println("请输入要购买商品的数量");
                           int number=get.nextInt();
                           if(number<=g.getNum()) {
                              System.out.println("购买成功");
//                            System.out.println("!!!!"+db.updatepoint(vipid0));//验证
                              int newvippo=number*g.getGoodspoint()+db.updatepoint(vipid0);
                              boolean flag1=vipDao.updateVippoint(vipid0, newvippo);
                              if(flag1) {
                                 System.out.println("会员积分更新成功");
                              }else {
                                 System.out.println("会员积分更新失败");
                              }
                           }else {
                              System.out.println("所剩商品不足,购买失败");
                           }
                           int newnum=g.getNum()-number;
                           boolean flag1=goodsDao.updateNum(g.getGoodsid(), newnum);//修改库存
                           if(flag1) {
                              System.out.println("库存更新成功");
                           }else {
                              System.out.println("库存更新失败");
                           }
                           break;
                        }
                     }
                     if(flag==true) { }else {
                        System.out.println("超市中不存在此商品");
                     }

                  }else if("3".equals(t)) {//退货
                     System.out.println("请输入要退商品的名称");
                     String goodsname=get.next();
                     ArrayList<Goods> list=goodsDao.selectGoods();
                     for(Goods g:list) {
                        if(goodsname.equals(g.getGoodsname())) {
                           
                           System.out.println("请输入要退商品的数量");
                           int number=get.nextInt();
                           System.out.println("退货成功");
                           int newvippo=db.updatepoint(vipid0)-number*g.getGoodspoint();
                           
                           boolean flag0=vipDao.updateVippoint(vipid0, newvippo);//修改会员积分
                           if(flag0) {
                              System.out.println("会员积分更新成功");
                           }else {
                              System.out.println("会员积分更新失败");
                           }
                           int newnum=g.getNum()+number;
                           boolean flag1=goodsDao.updateNum(g.getGoodsid(), newnum);//修改库存
                           if(flag1) {
                              System.out.println("库存更新成功");
                           }else {
                              System.out.println("库存更新失败");
                           }
                           break;
                        }
                     }
                  }else if("4".equals(t)) {//查看自己积分
                     int vippoint=db.updatepoint(vipid0);

                     System.out.println("积分为:"+vippoint);
                  }else if("5".equals(t)) {//积分抵扣兑换
                     System.out.println("请输入要购买商品的名称");
                     String goodsname=get.next();
                     boolean flag=false;
                     ArrayList<Goods> list=goodsDao.selectGoods();
                     for(Goods g:list) {
                        if(goodsname.equals(g.getGoodsname())) {
                           flag=true;
                           System.out.println("商品所剩数量为:"+g.getNum());
                           System.out.println("商品的单价为:"+g.getPrice());
                           System.out.println("请输入要购买商品的数量");
                           int number=get.nextInt();
                           if(number<=g.getNum()) {
                              System.out.println("是否选择积分抵扣(y/n):");//只有商品总价格大于积分/30(积分可抵扣积分/30)时才可抵扣
                              String select=get.next();
                              boolean flag1=false;
                              if(select.equalsIgnoreCase("y")) {
                                 System.out.println("购买成功");
                                 int newvippo=number*g.getGoodspoint();//全部抵扣原积分
                                 
                                 flag1=vipDao.updateVippoint(vipid0, newvippo);
                              }else if(select.equalsIgnoreCase("n")) {//不用积分抵扣
                                 System.out.println("购买成功");
                                 flag1=vipDao.updateVippoint1(vipid0, number*g.getGoodspoint());
                              }else {
                                 System.out.println("购买失败");//输入的不是y或者n
                              }
                              
                              if(flag1) {
                                 System.out.println("会员积分更新成功");
                              }else {
                                 System.out.println("会员积分更新失败");
                              }
                           }else {
                              System.out.println("所剩商品不足,购买失败");
                           }
                           int newnum=g.getNum()-number;
                           boolean flag1=goodsDao.updateNum(g.getGoodsid(), newnum);//修改库存
                           if(flag1) {
                              System.out.println("库存更新成功");
                           }else {
                              System.out.println("库存更新失败");
                           }
                           break;
                        }
                     }
                     if(flag==true) { }else {
                        System.out.println("超市中不存在此商品");
                     }
                  }else if("0".equals(t)) {
                     break;
                  }
               }
            }else {
               System.out.println("登录失败");
            }
         }else if("5".equals(t)) {//管理员登录
            System.out.println("请输入管理员名称:");
            String aname=get.next();
            System.out.println("请输入管理员密码:");
            String apass=get.next();
            Admin admin=new Admin(aname, apass);
            if(adminDao.loginAdmin(admin)) {
               System.out.println("登录成功");
               while(true) {
                  view.adminMenu1();
                  t=get.next();
                  if("1".equals(t)) {//查看所有商品
                     ArrayList<Goods> list=goodsDao.selectGoods();
                     System.out.println("goodsid\t\tgoodsname\tprice\t\tgoodspoint\tkindid\t\tnum");
                     for(Goods g:list) {
                        g.show();
                     }
                  }else if("2".equals(t)) {//增加商品
                     System.out.println("请输入商品编号");
                     int goodsid=get.nextInt();
                     if(adminDao.selectGoodsid(goodsid)) {
                        System.out.println("库中有此商品");
                        System.out.println("请输入要增加商品的数量");
                        int num=get.nextInt();
                        
                        if(adminDao.addGoodsNum(goodsid, num)) {
                           System.out.println("增加商品库存成功");
                        }else {
                           System.out.println("增加库存失败");
                        }
                     }else {
                        System.out.println("请输入商品名称");
                        String goodsname=get.next();
                        System.out.println("请输入商品单价");
                        float price=get.nextFloat();
                        System.out.println("请输入商品对应积分");
                        int goodspoint=get.nextInt();
                        System.out.println("请输入商品类型编号");
                        int kindid=get.nextInt();
                        System.out.println("请输入添加商品数量");
                        int num=get.nextInt();
                        Goods goods=new Goods(goodsid, goodsname, price, goodspoint, kindid, num);
                        if(goodsDao.addGoods(goods)) {
                           System.out.println("添加商品成功");
                        }else {
                           System.out.println("添加商品失败");
                        }
                     }
                                    
                  }else if("3".equals(t)) {//下架商品
                     System.out.println("请输入要下架的商品的编号");
                     int goodsid=get.nextInt();
                     if(adminDao.deleteGoods(goodsid)) {
                        System.out.println("下架成功");
                     }else {
                        System.out.println("下架失败");
                     }
                  }else if("4".equals(t)) {//节日价格打折
                     System.out.println("请输入要优惠商品的编号");
                     int goodsid=get.nextInt();
                     System.out.println("请输入要优惠的折扣");
                     float percent=get.nextFloat();
                     if(adminDao.updatePrice(percent, goodsid)) {
                        System.out.println("已优惠");
                     }else {
                        System.out.println("设置商品打折失败");
                     }
                  }else if("5".equals(t)) {//修改商品信息                 
                     System.out.println("是否要修改商品的价格(y/n)");
                     String s=get.next();
                     if(s.equalsIgnoreCase("y")) {
                        System.out.println("请输入商品的编号");
                        int goodsid=get.nextInt();
                        System.out.println("请输入商品新的价格");
                        float price=get.nextFloat();
                        if(adminDao.updatePrice1(goodsid, price)) {
                           System.out.println("修改价格成功");
                        }else {
                           System.out.println("修改失败");
                        }
                     }else {}
                     System.out.println("是否要修改商品的对应积分:");
                     String s1=get.next();
                     if(s1.equalsIgnoreCase("y")) {
                        System.out.println("请输入商品的编号");
                        int goodsid=get.nextInt();
                        System.out.println("请输入商品新的对应积分");
                        int goodspoint=get.nextInt();
                        if(adminDao.updateGoodspoint(goodsid, goodspoint)) {
                           System.out.println("修改积分成功");
                        }else {
                           System.out.println("修改积分失败");
                        }
                     }else {}
                  }else if("6".equals(t)) {//管理员工
                     while(true) {
                        view.employeeMenu1();
                        t=get.next();
                        if("1".equals(t)) {//录入新员工
                           System.out.println("请输入新员工的姓名");
                           String ename=get.next();
                           System.out.println("请输入新员工的工资");
                           float salary=get.nextFloat();
                           System.out.println("请输入新员工的工作状态");
                           int state=get.nextInt();
                           Employees employee=new Employees(ename, salary, state);
                           
                           if(employeeDao.addEmp(employee)) {
                              System.out.println("录入成功");
                           }else {
                              System.out.println("录入失败");
                           }
                        }else if("2".equals(t)) {//删除员工
                           System.out.println("请输入要删除员工的编号");
                           int eid=get.nextInt();
                           if(employeeDao.deleteEmp(eid)) {
                              System.out.println("删除员工成功");
                           }else {
                              System.out.println("删除员工失败");
                           }
                        }else if("3".equals(t)) {//查看员工信息
                           employeeDao.show();
                        }else if("4".equals(t)) {//修改员工状态(0请假,1在职)
                           System.out.println("请输入员工编号");
                           int eid=get.nextInt();
                           System.out.println("请输入要修改员工状态为");
                           int state=get.nextInt();
                           if(employeeDao.updateEmp1(eid, state)) {
                              System.out.println("修改成功");
                           }else {
                              System.out.println("修改失败");
                           }
                        }else if("0".equals(t)) {
                           break;
                        }
                     }

                  }else if("0".equals(t)) {
                     break;
                  }
               }
            }
            
         }else if("0".equals(t)) {
            break;
         }
      }
   }
}

4.2运行结果截图

1.系统主界面

图4-1 系统主界面

2.普通用户注册界面

图4-2 普通用户注册界面

3.普通用户登录界面

图4-3 普通用户登录界面

4.vip用户注册界面

图4-4 vip用户注册界面

5.vip用户登录界面

图4-5 vip用户登录界面

6.用户(普通、vip)登录后的共性操作界面

图4-6 查看所有商品界面

图4-7 查看所有商品界面

图4-8 退货界面

7.用户(vip)登录后的积分操作界面

图4-9 查看自己的积分界面

图4-10 积分兑换界面

8.返回界面

图4-11 反馈界面

9.管理员操作界面

图4-12 管理员登录界面

图4-13 管理员查看所有商品界面

图4-14 管理员增加商品界面

 

 图4-15 管理员下架商品界面

图4-16 管理员节日价格打折界面

图4-17 管理员修改商品界面

图4-18 管理员管理员工菜单界面

图4-19 管理员录入新员工界面

图4-20 管理员删除员工界面

 图4-21 管理员查看员工界面

图4-22 管理员修改员工状态界面

 想要的点赞收藏加关注私信作者交流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/586543.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EMNLP - 征集系统演示

Call For System Demonstrations - EMNLP 2023 EMNLP 2023 系统演示计划委员会邀请演示计划的提案。演示范围从早期研究原型到成熟的生产就绪系统。特别感兴趣的是公开可用的开源或开放访问系统。鉴于自然语言处理领域的理论和应用研究的现状&#xff0c;我们还强烈鼓励展示技术…

利用画图以及代码分析详细解读外排序的实现过程

外排序的实现 思想代码分析完整代码 如果有海量数据需要排序&#xff0c;而在内存中放不下这么多数据&#xff0c;因此就不能使用内排序&#xff08;直接插入排序&#xff0c;希尔排序&#xff0c;堆排序&#xff0c;快速排序&#xff0c;归并排序等等&#xff09;。关于想了解…

Java利用JOL工具分析对象分布

对象的组成 对象头[Header] Markword&#xff1a;存储对象自身运行时数据如hashcode、gc分代年龄等&#xff0c;64位系统总共占用8个字节&#xff0c;关于Markword详细内存分布如下 类型指针&#xff1a;对象指向类元数据地址的指针&#xff0c;jdk8默认开启指针压缩&#xff…

算法基础学习笔记——⑫最小生成树\二分图\质数\约数

✨博主&#xff1a;命运之光 ✨专栏&#xff1a;算法基础学习 目录 ✨最小生成树 &#x1f353;朴素Prim &#x1f353;Kruskal算法 ✨二分图 &#x1f353;匈牙利算法 ✨质数 &#x1f353;&#xff08;1&#xff09;质数的判定——试除法 &#x1f353;&#xff08;2&…

简单认识OSI(计算机网络分层)七层模型

前言 学校上课讲的太笼统啥也不是&#xff0c;自己学的太玄学似懂非懂突然在看到了一篇公众文文章。文章从初始到现在&#xff0c;步步为营的遇到一个解决一个前人的问题&#xff0c;有了细致入微的讲述&#xff0c;把之前学的死东西都连起来了。 如果让你来设计网络https://m…

chatgpt赋能python:Python取余数:介绍和实际应用

Python取余数&#xff1a;介绍和实际应用 Python是一种高级编程语言&#xff0c;其灵活性和多功能性使其成为开发者的首选之一。在Python中&#xff0c;取余数是常见的数学运算之一&#xff0c;这个操作在编写程序时非常有用。在本文中&#xff0c;我们将介绍Python中的取余数…

chatgpt赋能python:Python中单行输出的使用方法

Python中单行输出的使用方法 Python是广泛使用的高级编程语言之一&#xff0c;具有易于学习、可读性强和简单易用等优点。在Python编程中&#xff0c;我们经常需要输出文本内容&#xff0c;而Python中单行输出便是一个非常重要的功能。 什么是单行输出 单行输出是指将多个元…

TDengine 深入解析缓存技术

TDengine是一款高性能的物联网大数据平台。为了高效处理时序数据&#xff0c;TDengine中大量用到了缓存技术&#xff0c;自己实现了哈希表、缓存池等技术。本文会为大家讲解TDengine中用到的这些缓存技术。 首先会介绍一下什么是缓存&#xff0c;常用的缓存技术&#xff0c;最后…

想知道怎么翻译多个文本?我教你三个好方法吧

随着电子商务的全球化发展&#xff0c;越来越多的企业意识到将产品推向全球市场的重要性。在全球市场中&#xff0c;各种语言和文化的消费者都存在着巨大的潜在需求。为了吸引和服务这些不同语言的客户&#xff0c;企业需要采取一系列的措施&#xff0c;其中翻译是至关重要的一…

科技发展的那些事儿

近30年来&#xff0c;科技发展取得了惊人的成就&#xff0c;涉及范围广泛&#xff0c;包括计算机科学、通讯技术、生物医学、能源等多个领域。本文将列举近30年来科技发展的重要事件&#xff0c;并探讨这些事件对我们的生活、工作和社会产生的影响。 1991年&#xff0c;Linux操…

chatgpt赋能python:Python中可以用八进制表示整数吗?

Python中可以用八进制表示整数吗&#xff1f; Python是一种流行的动态编程语言&#xff0c;它支持许多整数表示方法。八进制是一种表示整数的方法&#xff0c;那么Python中可以使用八进制表示整数吗&#xff1f;本文将探讨这个问题。 什么是八进制&#xff1f; 在计算机科学…

基于SSM的服装设计供需系统设计与实现

摘 要&#xff1a;作为服装设计的重要形式之一&#xff0c;服装具有显著的审美性&#xff0c;是人类情感表达不可忽视的代表形态。但在新时期背景下&#xff0c;随着服装设计的进一步优化&#xff0c;服装设计创新融合强度也随之增强。本文就服装设计供需系统进行深入探究。 服…

chatgpt赋能python:如何在Python中去掉逗号

如何在Python中去掉逗号 在Python编程中&#xff0c;逗号是一个非常常见的符号&#xff0c;它通常用于分隔多个变量或值。然而&#xff0c;有时候我们需要从文本中去掉逗号&#xff0c;以便更好地处理数据。那么在Python中&#xff0c;如何去掉逗号呢&#xff1f;接下来&#…

华为OD机试真题B卷 Java 实现【停车场车辆统计】,附详细解题思路

一、题目描述 特定大小的停车场&#xff0c;数组cars[]表示&#xff0c;其中1表示有车&#xff0c;0表示没车。 车辆大小不一&#xff0c;小车占一个车位&#xff08;长度1&#xff09;&#xff0c;货车占两个车位&#xff08;长度2&#xff09;&#xff0c;卡车占三个车位&a…

idea使用Alibaba Cloud Toolkit插件远程操作Docker

idea使用Alibaba Cloud Toolkit插件远程操作Docker 前言 从github下载的开源项目源码&#xff0c;你基本上都能在项目根目录下发现会有个Dockerfile文件&#xff0c;Dockerfile文件是记录构建docker容器的构建命令&#xff0c;用途&#xff1a;一般用来将本地的jar包远程传输到…

内存对齐原则

struct &#xff08;1&#xff09;结构体第一个数据成员放在offset为0的地方&#xff0c;后面每个成员相对于结构体首地址的偏移量&#xff08;offset&#xff09;都是成员大小&#xff08;该变量类型所占字节&#xff09;的整数倍&#xff0c;如有需要编译器会在成员之间加上填…

中国人工智能学会主办!真实AIGC业务数据驱动,欢迎全球开发者参加

近期&#xff0c;由百度商业联合中国人工智能学会举办、NVIDIA提供战略支持&#xff0c;百度飞桨承办的“百度商业AI技术创新大赛”正式启动&#xff0c;启动会现场&#xff0c;中国工程院院士、中国人工智能学会理事长、清华大学信息科学技术学院院长戴琼海院士通过视频方式对…

chatgpt赋能python:在Python中一行书写两条语句:提高代码效率的好策略

在Python中一行书写两条语句&#xff1a;提高代码效率的好策略 从一开始Python就是因为简单易用、快速开发、名字有趣等因素而受到开发者的喜爱。当然&#xff0c;解释型语言也是Python深受欢迎的原因之一&#xff0c;你可以在Linux、Windows、Mac等各种平台上运行Python脚本&…

基于SSM的图书借阅管理系统

1.项目介绍 本项目是一款基于SpringSpring MVCMybatis的图书借阅管理系统&#xff0c;主要针对计算机相关主页的正在做课程设计的学生与需要项目实战学习、练习的Java学生人群。 该系统基于B/S架构&#xff0c;采用SpringSpring MVCMybatis框架技术&#xff0c;并结合主流的轻…

一起了解AJAX

注册账号的时候账号不能重复&#xff0c;通过AJAX实现实时验证当前注册的账号是否存在。 1.1register.jsp. 1.2HomeRegisterServlet. 2.JSON概述. 2.1何为JSON. JSON即 JavaScript Object Notation &#xff08;js对象标记&#xff09; ,是一种轻量级的数据交换格式&#xf…