首页 > 编程语言 >JavaSE库存管理系统项目实战

JavaSE库存管理系统项目实战

时间:2023-04-19 19:02:24浏览次数:45  
标签:实战 String 管理系统 System user println JavaSE public out

需求分析

企业库房用于存放成品、半成品、原材料、工具等物资,一般情况下,这些物资统称为物料。库存管理常见业务包括物资的入库、出库、盘点、退货、报废以及财务核算等,业务逻辑比较复杂,库房信息系统项目开发周期一般要1~3个月。
本实践项目基于企业实际库存业务进行简化,实现一个简单的库存管理系统,便于学生在理解库存管理业务的同时,掌握Java SE开发技术,并最终完成整个项目开发。

库存管理是指在物流过程中商品数量的管理,是企业生产过程,商品流通过程中的重要环节。基本目标就是防止超储和缺货,以最合理的成本为用户提供所期望水平的服务,即在达到顾客期望的服务水平的前提下,尽量将库存成本减少到可以接受的水平。

本例主要讲解用户管理模块的开发。

项目运行效果

用户登录:

JavaSE库存管理系统项目实战_java

用户数据查看:

JavaSE库存管理系统项目实战_User_02

数据库建设

MySQL中信息用户表k_user,添加测试数据:

JavaSE库存管理系统项目实战_User_03

代码编写

项目整体框架分为三层,数据库层、业务层、视图层。在Eclipse中的整体项目结构如下图:

JavaSE库存管理系统项目实战_System_04


BaseDao为数据库层的基类,作用是获取数据库连接,封装公共的增删改查数据库方法。

BaseDao.java的源码如下:

点击展开内容
```java
package com.stock.dao;
import java.sql.*;

/**• Dao层的基类,获取数据库连接

*/

public class BaseDao {private String driver = "com.mysql.jdbc.Driver";

private String url = "jdbc:mysql://localhost:3306/orcl";

private String name = "root";

private String pass = "123456";public Connection conn;

public PreparedStatement ps;

public ResultSet rs;/**
• 得到数据库连接

*/

public Connection getConn() {

try {

Class.forName(driver);

this.conn = DriverManager.getConnection(url, name, pass);} catch (Exception e) {
  e.printStackTrace();
}
return conn;}
/** 测试连接 */

public static void main(String[] args) {

BaseDao bd = new BaseDao();

bd.getConn();

}/** 关闭资源 **/

public void closeAll() {

try {

if (rs != null) {

rs.close();

rs = null;

}

if (ps != null) {

ps.close();

ps = null;

}

if (conn != null) {

conn.close();

conn = null;

}

} catch (SQLException e) {

e.printStackTrace();

}

}/** 增删改的公用方法 **/

public int execSql(String sql, String param[]) {

int ret = 0;

this.conn = this.getConn();

try {

this.ps = conn.prepareStatement(sql);

if (param != null) {

for (int i = 0; i < param.length; i++) {

ps.setString(i + 1, param[i]);

}}
  ret = ps.executeUpdate();
} catch (SQLException e) {
  e.printStackTrace();
} finally {
  this.closeAll();
}
return ret;}

}</details>
UserDao存放于用户相关的数据库操作。
UserDao.java的源码如下:
<details>
<summary><font color="blue">点击展开内容</font></summary>
```java
package com.stock.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.stock.entity.User;
/**
 * 与用户相关的数据库操作
 */
public class UserDao extends BaseDao{

  /**
   * 用户登录
   * @param userNo 用户名(编号)
   * @param pwd 密码
   * @return 用户对象
   */
  public User login(String userNo, String pwd) {
    String sql = "select * from k_user where userno='"+userNo+"' And pwd='"+pwd+"'";
    this.conn=this.getConn();
    User user=null;
    try {
      this.ps=conn.prepareStatement(sql);
      ResultSet rs = ps.executeQuery();
      while (rs.next()) {
        user = new User();
        user.setId(rs.getInt("id"));
        user.setUsername(rs.getString("username"));
        user.setUserno(rs.getString("userno"));
        user.setPwd(rs.getString("pwd"));
      }
    } catch (SQLException e) {
      e.printStackTrace();
    }
    this.closeAll();
    return user;
  }

  /**
   * 查询用户列表
   * @return 用户集合
   */
  public List<User> findUserList() {
    String sql = "select * from k_user order by id asc";
    this.conn=this.getConn();
    List<User> list = new ArrayList<>();
    try {
      this.ps=conn.prepareStatement(sql);
      ResultSet rs = ps.executeQuery();
      while (rs.next()) {
        User user = new User();
        user.setId(rs.getInt("id"));
        user.setUsername(rs.getString("username"));
        user.setUserno(rs.getString("userno"));
        user.setPwd(rs.getString("pwd"));
        user.setAge(rs.getInt("age"));
        user.setSex(rs.getString("sex"));
        user.setPosition(rs.getString("position"));
        list.add(user);
      }
    } catch (SQLException e) {
      e.printStackTrace();
    }
    return list;
  }

  /**
   * 添加用户
   * @param user 用户对象
   * @return 是否添加成功
   */
  public boolean addUser(User user) {
    String sql = "insert into k_user(username,userno,pwd) values('"+user.getUsername()+"','"+user.getUserno()+"','"+user.getPwd()+"')";
    this.conn=this.getConn();
    try {
      this.ps=conn.prepareStatement(sql);
      int count=ps.executeUpdate();
      if(count>0){
        return true;
      }
    } catch (SQLException e) {
      e.printStackTrace();
    }
    return false;
  }

  /**
   * 删除用户
   * @param id 用户ID
   * @return 是否删除成功
   */
  public boolean deleteUser(String id) {
    String sql = "delete from k_user where id="+id;
    this.conn=this.getConn();
    try {
      this.ps=conn.prepareStatement(sql);
      int count=ps.executeUpdate();
      if(count>0){
        return true;
      }
    } catch (SQLException e) {
      e.printStackTrace();
    }
    return false;
  }

}实体类User的源码如下:
点击展开内容
```java
package com.stock.entity;
public class User {
private int id;//用户ID

private String userno;//用户编号

private String username;//用户姓名

private String pwd;//密码

private String sex;//性别

private int age;//年龄

private String position;//职位public String getSex() {

return sex;

}public void setSex(String sex) {

this.sex = sex;

}public int getAge() {

return age;

}public void setAge(int age) {

this.age = age;

}public String getPosition() {

return position;

}public void setPosition(String position) {

this.position = position;

}public int getId() {

return id;

}public void setId(int id) {

this.id = id;

}public String getUserno() {

return userno;

}public void setUserno(String userno) {

this.userno = userno;

}public String getUsername() {

return username;

}public void setUsername(String username) {

this.username = username;

}public String getPwd() {

return pwd;

}public void setPwd(String pwd) {

this.pwd = pwd;

}}
</details>
UserService存放用户相关的业务操作。
UserService的代码如下:
<details>
<summary><font color="blue">点击展开内容</font></summary>
```java
package com.stock.service;

import java.util.List;

import com.stock.dao.UserDao;
import com.stock.entity.User;
/**
 * 业务类
 * 用户相关的业务操作
 */
public class UserService {

  UserDao userDao=new UserDao();
  /**
   * 用户登录
   * @param userNo 用户名(编号)
   * @param pwd 密码
   * @return 用户对象
   */
  public User login(String userNo, String pwd) {
    return userDao.login(userNo,pwd);
  }
  /**
   * 查询用户列表
   * @return 用户集合
   */
  public List<User> findUserList() {
    return userDao.findUserList();
  }
  /**
   * 添加用户
   * @param user 用户对象
   * @return 是否添加成功
   */
  public boolean addUser(User user) {
    return userDao.addUser(user);
  }
  /**
   * 删除用户
   * @param id 用户ID
   * @return 是否删除成功
   */
  public boolean deleteUser(String id) {
    return userDao.deleteUser(id);
  }

}
</details>
UserService存放用户相关的业务操作。
UserService的代码如下:
<details>
<summary><font color="blue">点击展开内容</font></summary>
```java
package com.stock.service;

import java.util.List;

import com.stock.dao.UserDao;
import com.stock.entity.User;
/**
 * 业务类
 * 用户相关的业务操作
 */
public class UserService {

  UserDao userDao=new UserDao();
  /**
   * 用户登录
   * @param userNo 用户名(编号)
   * @param pwd 密码
   * @return 用户对象
   */
  public User login(String userNo, String pwd) {
    return userDao.login(userNo,pwd);
  }
  /**
   * 查询用户列表
   * @return 用户集合
   */
  public List<User> findUserList() {
    return userDao.findUserList();
  }
  /**
   * 添加用户
   * @param user 用户对象
   * @return 是否添加成功
   */
  public boolean addUser(User user) {
    return userDao.addUser(user);
  }
  /**
   * 删除用户
   * @param id 用户ID
   * @return 是否删除成功
   */
  public boolean deleteUser(String id) {
    return userDao.deleteUser(id);
  }

}

UserView为视图层,接收用户的选择并进行处理。 UserView的代码如下:

点击展开内容
```java
package com.stock.view;
import java.util.List;

import java.util.Scanner;import com.stock.entity.User;

import com.stock.service.UserService;

/**• 用户视图层
• 接收用户的选择并进行处理

*/

public class UserView {UserService userService = new UserService();

Scanner sc = new Scanner(System.in);/**
• 用户登录

*/

public User login() {

System.out.println("请输入用户名");

String userNo = sc.next();

System.out.println("请输入密码:");

String pwd = sc.next();User user = userService.login(userNo, pwd);
if (user != null) {
  System.out.println("登录成功!");
} else {
  System.out.println("登录失败!!!");
}
return user;}
/**
• 显示所有用户信息

*/

public void showUserList() {

System.out.println("所有用户信息如下:");

List list = userService.findUserList();

System.out.println("用户ID\t\t用户代码\t\t用户姓名\t\t密码\t\t性别\t\t年龄\t\t职位");for (User user : list) {
  System.out.println(user.getId() + "\t\t" + user.getUserno() + "\t\t"
      + user.getUsername() + "\t\t" + user.getPwd() + "\t\t"
      + user.getSex() + "\t\t" + user.getAge() + "\t\t"
      + user.getPosition());
}}
public void addUser() {

System.out.println("输入学号:");

String userNo = sc.next();

System.out.println("输入用户名:");

String userName = sc.next();

System.out.println("输入密码:");

String pwd = sc.next();User user = new User();
user.setUserno(userNo);
user.setUsername(userName);
user.setPwd(pwd);

if (userService.addUser(user)) {
  System.out.println("添加用户成功");
} else {
  System.out.println("添加用户失败");
}}
public void deleteUser() {

System.out.println("请输入要删除的用户id:");

String id = sc.next();

if (userService.deleteUser(id)) {

System.out.println("删除成功。");

} else {

System.out.println("删除失败!!!");

}

}}
</details>
Menu为菜单选择类,也是程序执行主类。
Menu的代码如下:
<details>
<summary><font color="blue">点击展开内容</font></summary>
```java
package com.stock.view;

import java.util.Scanner;
import com.stock.entity.User;

/**
 * 菜单类 用于用户菜单选择
 */
public class Menu {

  UserView userView = new UserView();
  Scanner sc = new Scanner(System.in);

  /**
   * 登录界面
   */
  private void LoginView() {
    System.out.println("-----------欢迎登录库存管理系统-----------");
    System.out.println("------------1.登录-----------");
    System.out.println("------------2.退出-----------");

    System.out.println("请输入要进行的操作:");
    int num = sc.nextInt();
    if (num == 1) {
      User user = userView.login();
      if (user != null) {
        IndexView(user);
      } else {
        LoginView();
      }

    } else {
      System.out.println("欢迎下次登录。");
    }

  }

  /**
   * 首页
   */
  private void IndexView(User user) {
    System.out.println("\t\t\t欢迎 [" + user.getUsername() + "]登录本系统!");
    System.out.println("\t\t\t--------1、基库存管理----------");
    System.out.println("\t\t\t-----------1.1 库存查询----------");
    System.out.println("\t\t\t-----------1.2 入库管理----------");
    System.out.println("\t\t\t-----------1.3 出库管理----------");
    System.out.println("\t\t\t--------2、报表管理----------");
    System.out.println("\t\t\t-----------2.1 库存月报----------");
    System.out.println("\t\t\t-----------2.2 物资台账----------");
    System.out.println("\t\t\t--------3、基础信息管理----------");
    System.out.println("\t\t\t-----------3.1 用户管理----------");
    System.out.println("\t\t\t-----------3.2 部门管理----------");
    System.out.println("\t\t\t-----------3.3 仓库管理----------");
    System.out.println("\t\t\t-----------3.4 供应商管理----------");
    System.out.println("\t\t\t-----------3.5 产品管理----------");
    System.out.println("\t\t\t--------4、退出系统----------");
    System.out.print("请输入要进行的操作:");
    String operate = sc.next();
    switch (operate) {
    case "3.1":
      showUserView(user);
      break;

    default:
      break;
    }
  }

  /**
   * 用户管理界面
   */
  private void showUserView(User user) {
    System.out.println("\t\t\t------------------欢迎到用户管理界面------------------");
    System.out.println("\t\t\t------------------1、查看用户信息------------------");
    System.out.println("\t\t\t------------------2、添加用户信息------------------");
    System.out.println("\t\t\t------------------3、修改用户信息------------------");
    System.out.println("\t\t\t------------------4、删除用户信息------------------");
    System.out.println("\t\t\t------------------5、返回上一级------------------");
    System.out.print("请输入要进行的操作:");
    String operate = sc.next();
    switch (operate) {
    case "1":
      userView.showUserList();
      showUserView(user);
      break;
    case "2":
      userView.addUser();
      showUserView(user);
      break;
    case "4":
      userView.deleteUser();
      showUserView(user);
      break;
    default:
      IndexView(user);
      break;
    }
  }

  public static void main(String[] args) {
    Menu menu = new Menu();
    menu.LoginView();
  }

}

项目数据库及源码下载地址:
链接:https://pan.baidu.com/s/1JfPAXQJgrnRVtOXqmBkO_w 提取码:8ncv
该系统的详细开发视频讲解关注下面的公众号观看。

更多内容及Java+大数据个人原创视频,可关注公众号观看:

JavaSE库存管理系统项目实战_User_05


原创文章,转载请注明出处!!



标签:实战,String,管理系统,System,user,println,JavaSE,public,out
From: https://blog.51cto.com/dreamboy/6207224

相关文章

  • javasec(四)序列化与反序列化基本原理
    title:javasec(四)序列化与反序列化基本原理tags:-javasec-反序列化categories:-javaseccover:'https://blog-1313934826.cos.ap-chengdu.myqcloud.com/blog-images/1.jpeg'feature:falsedate:2023-04-1816:02:20这篇文章介绍java序列化与反序列化基本原......
  • javasec(一)java反射
    这篇文章介绍javasec基础知识--java反射。0x01反射是什么?反射是一种机制,利用反射机制动态的实例化对象、读写属性、调用方法、构造函数。在程序运行状态中,对于任意一个类或对象,都能够获取到这个类的所有属性和方法(包括私有属性和方法),这种动态获取信息以及动态调用对象方法的......
  • javasec(五)URLDNS反序列化分析
    这篇文章介绍URLDNS就是ysoserial中⼀个利⽤链的名字,但准确来说,这个其实不能称作“利⽤链”。因为其参数不是⼀个可以“利⽤”的命令,⽽仅为⼀个URL,其能触发的结果也不是命令执⾏,⽽是⼀次DNS请求。ysoserial打包成jar命令mvncleanpackage-DskipTests,刚刚入门所以用这条链作......
  • javasec(六)RMI
    这篇文章介绍java-RMI远程方法调用机制。RMI全称是RemoteMethodInvocation,远程⽅法调⽤。是让某个Java虚拟机上的对象调⽤另⼀个Java虚拟机中对象上的⽅法,只不过RMI是Java独有的⼀种RPC方法。看这篇之前可以先去看看RPC:https://www.bilibili.com/video/BV1zE41147Zq?from=searc......
  • vue3微信公众号商城项目实战系列(9)购物车页面
    本篇显示购物车中的商品,购物车表结构如下,我们通过接口服务抓取登录用户的购物车信息。表名字段功能shoppingcartcart_id(int)购物车编号user_id(int)用户编号goods_id(int)商品编号goods_name(varchar)商品名称photo(varchar)商品图片price(decimal)......
  • vue3微信公众号商城项目实战系列(8)商品展示页面
    本篇实现在首页展示商品功能,表结构如下:表名字段功能goodsgoods_id(int)商品编号goods_name(varchar)商品名称photo(varchar)商品图片price(decimal)价格商品表页面呈现效果如下: 第1步:在api.js中加入获取首页商品信息和加购物车的接口方法,如下......
  • C++小型公司工资管理系统[2023-04-19]
    C++小型公司工资管理系统[2023-04-19]小型公司工资管理系统要求:1.公司主有4类人员:经理、技术员、销售员、销售经理。要求存储这些人的职工号、姓名、月工资、岗位、年龄、性别等信息。2.工资的计算方法:a、经理:固定月薪为8000;b、技术员:工作时间*小时工资(100元每小时);c、销售员:销......
  • 《社区人员管理》实战案例设计&个人案例分享
    作者:京东科技刘宗恺一、项目背景北京市疫情防控一体化平台是以“京办”为支撑,集病例流调、排查管控、隔离管理、人员转运、监测评估于一体的疫情防控平台,秉承五位一体统筹、现有体系融通、共性能力支撑、高效部门系统、快速局部突破的理念,进行建设。1.1技术挑战功能:多系统协作、......
  • RocketMQ实战系列(一)——RocketMQ简介
    RocketMQ是一款分布式消息引擎,由阿里巴巴旗下的MetaQ和RocketMQ合并而来。RocketMQ提供了高可靠、高吞吐量、可伸缩、易于使用的消息发布/订阅服务,适用于大规模分布式系统的消息通信。RocketMQ的特点包括:1.高可靠:RocketMQ采用主从同步复制机制,保证消息的可靠性和数据一致性。2......
  • springboot项目 宿舍管理系统 (源码+数据库文件+1w字论文+ppt)
    来了就点个赞再走呗,即将毕业的兄弟有福了文章底部获取源码springboot项目宿舍管理系统(源码+数据库文件+1w字论文+ppt)技术框架:java+springboot+vue+mysql后端框架:SpringBoot、SpringMVC、MyBatisPlus前端界面:vue、BootStrap、jQuery、ajxs系统共分为三种用户系统主要功......