JavaSE库存管理系统项目实战

需求分析

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

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

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

项目运行效果

用户登录:
JavaSE库存管理系统项目实战_第1张图片

用户数据查看:
JavaSE库存管理系统项目实战_第2张图片

数据库建设

MySQL中信息用户表k_user,添加测试数据:
JavaSE库存管理系统项目实战_第3张图片

代码编写

项目整体框架分为三层,数据库层、业务层、视图层。在Eclipse中的整体项目结构如下图:
JavaSE库存管理系统项目实战_第4张图片
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;

}
}

UserDao存放于用户相关的数据库操作。 UserDao.java的源码如下:
点击展开内容 ```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 findUserList() { String sql = "select * from k_user order by id asc"; this.conn=this.getConn(); List 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;
}

}

UserService存放用户相关的业务操作。 UserService的代码如下:
点击展开内容 ```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 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("删除失败!!!");
}
}

}

Menu为菜单选择类,也是程序执行主类。 Menu的代码如下:
点击展开内容 ```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
该系统的详细开发视频讲解关注下面的公众号观看。

你可能感兴趣的:(JavaSE库存管理系统项目实战)