Java项目:ssm图书进销存管理系统

作者主页:夜未央5788

 简介:Java领域优质创作者、Java项目、学习资料、技术互助

文末获取源码

项目介绍

本系统是基于SSM和bootstrap进行开发的项目。主要也是为了完成学校的学习任务,整体可能没有那么完美,练练手倒还行。
该项目主要分为管理员与普通用户两种角色。
普通用户主要功能包括:图书查看、下订单、订单查看;
管理员主要功能包括:图书管理、订单管理、处理订单等;

由于本程序规模不大,可供课程设计、期末作业等之用,由于该项目界面较少,暂不适合做毕业设计之用,若想作为毕业设计,需要自行补充功能,完善内容。

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 
5.数据库:MySql 8.0版本;

6.是否Maven项目:是;

技术栈

1. 后端:Spring+SpringMVC+Mybatis

2. 前端:JSP+bootstrap

使用说明

1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;需要首先执行bookManager.sql,再执行insertBookData.sql;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中config.properties配置文件中的数据库配置改为自己的配置;
4. 运行项目,输入http://localhost:8080/manager/index.jsp 登录 注:Tomcat中配置项目路径必须为manager
管理员:Chris 密码:123456

普通用户:chris 密码:123

运行截图

 

 

 

 

相关代码

 图书控制器

package controller;

import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import po.*;
import service.BookService;
import service.ChangeBookService;
import service.StorageService;
import utils.BookChangeStuation;
import utils.SessionString;

import javax.servlet.http.HttpSession;
import java.sql.Timestamp;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

//这个对象是用来进行分页的
@Controller
public class BookController {
    @Autowired
    private BookService bookService;
    @Autowired
    private StorageService storageService;//增加库存
    //对于图书的管理
    @Autowired
    private ChangeBookService changeBookService;
    //通过查询获取部分的相应图书
    @RequestMapping(value = "/BookQuery")
    public String getSomeBooks(@RequestParam Map<String,Object> map, HttpSession httpSession){
        //注意两个分页的必要参数,page和limit
        List<Map<String,Object>> list = bookService.selectBookPageWhere(map);
        PageInfo<Map<String ,Object>> pageInfo = new PageInfo<Map<String,Object>>();
        map.put("list",list);
        //聚合数目最大值
        map.put("total",pageInfo.getTotal());
        httpSession.setAttribute(SessionString.BOOK_LIST,list);
        //通过Session进行判定,如果是user那就跳转到user的界面,反之就是manager的界面
        Manager manager = (Manager) httpSession.getAttribute(SessionString.Manager_SESSION);
        if(manager != null){
            return "/managerJsp/manager";
        }else{
            return "/userJsp/user";
        }
    }
    //通过查询获取全部图书
    @RequestMapping(value = "/BookAll")
    public String getAllBooks(@RequestParam Map<String,Object> map, HttpSession httpSession){
        //注意两个分页的必要参数,page和limit
        List<Map<String,Object>> list = bookService.selectAllBook(map);
        PageInfo<Map<String ,Object>> pageInfo = new PageInfo<Map<String,Object>>();
        map.put("list",list);
        //设置page和limit
        map.put("page",0);
        map.put("limit",0);
        //聚合数目最大值
        map.put("total",pageInfo.getTotal());
        httpSession.setAttribute(SessionString.BOOK_LIST,list);
        //通过Session进行判定,如果是user那就跳转到user的界面,反之就是manager的界面
        Manager manager = (Manager) httpSession.getAttribute(SessionString.Manager_SESSION);
        if(manager != null){
            return "/managerJsp/manager";
        }else{
            return "/userJsp/user";
        }
    }

    //通过id获取图书信息
    @RequestMapping("/book/getBookById")
    @ResponseBody
    public Book getBookById(Integer id){
        Book book = bookService.selectBookById(id);
        return book;
    }

    //更新图书
    @RequestMapping("/book/update")
    @ResponseBody
    public String updateBook(Book book,HttpSession session){
        //增加
        Book book1 = bookService.selectBookById(book.getId());
        boolean flag = changeBook(BookChangeStuation.UPDATE_BOOK,session,book);
        int rows = bookService.updateBook(book);
        if(rows > 0 && flag ){
            return "OK";
        }else{
            return "FAIL";
        }
    }

    //删除图书
    @RequestMapping("book/delete")
    @ResponseBody
    public String deleteBook(Integer id,HttpSession session){
        Book book = bookService.selectBookById(id);
        boolean flag = changeBook(BookChangeStuation.DELETE_BOOK,session,book);
        int rows = bookService.deleteBook(id);
        if(rows > 0 && flag){
            return "OK";
        }else{
            return "FAIL";
        }
    }

    //增加图书
    @RequestMapping("/book/create")
    @ResponseBody
    public String createBook(Book book){
        int num = book.getStorage().getNum();
        Storage storage  = new Storage();
        storage.setNum(num);
       int row = storageService.insertStorage(storage);
       int rows = bookService.insertBook(book);
        //主要就是这里进行图书库存的增加,获取book然后得到id,设置自己的
        Book book1 = bookService.selectBookByBook(book);
        int rows2 = bookService.updateBookStorageId(book1);
            if(rows > 0 && row > 0 && rows2 > 0){
            return "OK";
        }else{
            return "FAIL";
        }
    }

    //图书管理方法,参数method为行为
    public boolean changeBook(String method,HttpSession session,Book book){
        Manager manager = (Manager) session.getAttribute(SessionString.Manager_SESSION);
        ChangeBook changeBook = new ChangeBook();
        changeBook.setBook_id(book.getId());
        changeBook.setManager_id(manager.getId());
        //时间
        Date date = new Date();
        Timestamp timestamp = new Timestamp(date.getTime());
        changeBook.setChange_time(timestamp);
        //情况更改
        changeBook.setSituation(new BookChangeStuation().toStuation(book,method));
        int rows_change = changeBookService.insertChange(changeBook);
        return rows_change > 0;
    }
}

管理控制器

package controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import po.Manager;
import service.ManagerService;
import utils.SessionString;

import javax.servlet.http.HttpSession;

@Controller
public class ManagerController {
    @Autowired
    private ManagerService managerService;
    @RequestMapping(value = "/loginManager.action",method = RequestMethod.POST)
    public String login(String manager_name, String  manager_password, HttpSession httpSession) {
        Manager manager = managerService.findManagerByNameAndPassword(manager_name,manager_password);
        if(manager != null){
            httpSession.setAttribute(SessionString.Manager_SESSION,manager);
            return "redirect:/BookAll";//跳转到管理者界面。
        }else{
            httpSession.setAttribute(SessionString.MSG,"您的管理者的登录信息有误,请重新输入~");
            return "managerLogin";
        }
    }
    //使用get方法进行登录
    @RequestMapping(value = "/loginManager.action" ,method = RequestMethod.GET)
    public String toLogin() {
        return "managerLogin";
    }

    //管理者进行退出登录
    @RequestMapping("/logoutManager.action")
    public String logOut(HttpSession httpSession){
        httpSession.invalidate();
        return toLogin();
    }

    //图书列表跳转
    @RequestMapping(value =  "/bookList",method = RequestMethod.GET)
    public String showBookList(){
        return "forward:/BookAll";
    }
}

订单控制器

package controller;

import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import po.*;
import service.DeliveryService;
import service.OrderService;
import service.StorageService;
import utils.SessionString;
import utils.TimeStampFactory;

import javax.servlet.http.HttpSession;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;
import java.util.Map;

@Controller
public class OrderController {
    @Autowired
    private OrderService orderService;//订单
    @Autowired
    private DeliveryService deliveryService;//出库
    @Autowired
    private StorageService storageService;//库存修改

    @RequestMapping("/newOrder")
    @ResponseBody
    @Transactional
    public String addNewOrder(Delivery delivery, HttpSession session){
        //首先出库,然后在变成订单
        //时间
        delivery.setTime_delivery(TimeStampFactory.getSystemTime());
        int row = deliveryService.insertDelivery(delivery);
        //库存减少
        Storage storageOrigin = storageService.findStorageById(delivery.getStorage().getId());
        int booknum = storageOrigin.getNum();
        storageOrigin.setNum(booknum-delivery.getNum());
        int row3 = storageService.updateStorageNum(storageOrigin);
        //再读取该delivery然后将读取出来
        Delivery delivery1 = deliveryService.selectDelivery(delivery);
        //添加一个订单
        Order order = new Order();
        order.setDelivery(delivery1);
        //获取user
        User user = (User) session.getAttribute(SessionString.USER_SESSION);
        order.setUser(user);
        //新建一个订单
        int row2 = orderService.insertOneOrder(order);
        if(row > 0 && row2 > 0 && row3 > 0){
            return "OK";
        }else{
            return "FAIL";
        }
    }

    //进行读取所有的订单,展示到前端。
    @RequestMapping("orderList")
    public String getAllOrder(@RequestParam Map<String,Object> map, HttpSession httpSession){
        //注意两个分页的必要参数,page和limit
        List<Map<String,Object>> list = orderService.selectAllOrder(map);
        PageInfo<Map<String ,Object>> pageInfo = new PageInfo<Map<String,Object>>();
        map.put("list",list);
        //设置page和limit
        map.put("limit",0);
        map.put("page",0);
        //聚合数目最大值
        map.put("total",pageInfo.getTotal());
        httpSession.setAttribute(SessionString.ORDER_LIST,list);
        //通过Session进行判定,如果是user那就跳转到user的界面,反之就是manager的界面
        Manager manager = (Manager) httpSession.getAttribute(SessionString.Manager_SESSION);
        if(manager != null){
            return "/managerJsp/managerOrder";
        }else{
            return "/userJsp/userOrder";
        }
    }

    //删除订单
    @RequestMapping("order/delete")
    @ResponseBody
    public String deleteOrder(Integer id){
        int rows = orderService.deleteOrder(id);
        if(rows > 0 ){
            return "OK";
        }else{
            return "FAIL";
        }
    }

    //处理订单
    @RequestMapping("order/update")
    @ResponseBody
    public String updateOrder(Integer id,HttpSession session){
        Manager manager = (Manager) session.getAttribute(SessionString.Manager_SESSION);
        Order order = new Order();
        order.setId(id);
        order.setManager(manager);
        order.setTime_order(TimeStampFactory.getSystemTime());
        int rows = orderService.updateOrderAll(order);
        if(rows > 0 ){
            return "OK";
        }else{
            return "FAIL";
        }
    }

    //查询部分的订单
    @RequestMapping("order/query")
    public String queryOrder(@RequestParam Map<String,Object> map, HttpSession httpSession){
        //注意两个分页的必要参数,page和limit
        List<Map<String,Object>> list = orderService.selectOrderPageWhere(map);
        PageInfo<Map<String ,Object>> pageInfo = new PageInfo<Map<String,Object>>();
        map.put("list",list);
        //聚合数目最大值
        map.put("total",pageInfo.getTotal());
        httpSession.setAttribute(SessionString.BOOK_LIST,list);
        //通过Session进行判定,如果是user那就跳转到user的界面,反之就是manager的界面
        Manager manager = (Manager) httpSession.getAttribute(SessionString.Manager_SESSION);
        if(manager != null){
            return "/managerJsp/managerOrder";
        }else{
            return "/userJsp/userOrder";
        }
    }
}

用户控制器

package controller;

import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import po.User;
import service.UserService;
import utils.SessionString;

import javax.servlet.http.HttpSession;
import java.util.List;

@Controller
public class UserController {
    @Autowired
    private UserService userService;

    //登录检测
    @RequestMapping(value = "/userLogin.action",method = RequestMethod.POST)
    public String login( String username,  String password, Model model, HttpSession httpSession){
        //model是用于数据传递
        User user = userService.findUserByNameAndPassword(username,password);
        if(user != null){
            httpSession.setAttribute(SessionString.USER_SESSION,user);
            return "forward:/BookAll";//返回到用户购书的界面
        }else{
            httpSession.setAttribute(SessionString.MSG,"账号或密码有误,请重新输入!");
            return "userLogin";
        }
    }
    //直接进行登录验证
    @RequestMapping(value = "/userLogin.action",method = RequestMethod.GET)
    public String toLogin(){
        return "userLogin";
    }
    //用户注册
    @RequestMapping(value = "/userRegister.action")
    public String register(User user,HttpSession httpSession){
        //添加好数据后,跳转到数据
        int  row = userService.addNewUser(user);
        if(row > 0){
            httpSession.setAttribute(SessionString.MSG,"你已经注册成功可以进行登录!");
            return "userLogin";//返回登录的页面
        }else{
            return "ok";//返回注册错误的页面
        }
    }
    //用户退出
    @RequestMapping(value = "/logoutUser.action")
    public String logout(HttpSession httpSession){
        httpSession.invalidate();
        return "userLogin";
    }
}

图片上传控制器

package controller;

import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;

@Controller
public class PictureUploadController {

    @RequestMapping(value = "/pictureUpload")
    public String handlePic(@RequestParam("name") String name,
                            @RequestParam("uploadPic") MultipartFile uploadPic,
                            HttpServletRequest request) {
        // 判断所上传文件是否存在
        if (!uploadPic.isEmpty()) {
            //循环输出上传的文件
                // 设置上传文件的保存地址目录
                String dirPath = "S:\\Study\\JavaEEFinalExam2021\\BookManager\\src\\main\\webapp\\images\\books\\";
                File filePath = new File(dirPath);
                // 如果保存文件的地址不存在,就先创建目录
                if (!filePath.exists()) {
                    filePath.mkdirs();
                }
                //上传文件
                try {
                    uploadPic.transferTo(new File(dirPath + name+".jpg"));
                } catch (IOException e) {
                    e.printStackTrace();
                    return "redirect:/BookAll";
                }
        }
        return "redirect:/BookAll";
    }
}

如果也想学习本系统,下面领取。关注并回复:178ssm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜未央5788

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值