请选择 进入手机版 | 继续访问电脑版
搜索
房产
装修
汽车
婚嫁
健康
理财
旅游
美食
跳蚤
二手房
租房
招聘
二手车
教育
茶座
我要买房
买东西
装修家居
交友
职场
生活
网购
亲子
情感
龙城车友
找美食
谈婚论嫁
美女
兴趣
八卦
宠物
手机

java超市购物管理系统

[复制链接]
查看: 6|回复: 0

2万

主题

2万

帖子

6万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
65442
发表于 2019-12-9 20:01 | 显示全部楼层 |阅读模式
一.概述

1.鹏哥前面有写过java项目超市治理系统项目,传送门
2.收到很多朋友私信给我,也很感激老铁们的反应和交换,前面这个项目只是对java根柢常识和面向工具的脑筋练习,可是没有触及到java怎样操纵数据库,怎样经过java将数据从数据库拿出来,假如存进去这些题目。对于java新手来说,这些题目不晓得从何处脱手。有很多刚入门的java新手倡议我写个java操纵数据库的实战项目供入门者参考,我想假如能帮助他们少花点时候出坑,何乐不为?鹏哥就特地思考了一天,整理了一下思绪,明天就抽时候写个超市购物治理系统.....go go go
3.超市购物治理系统触及到的常识:java根柢语法,java面向工具的斥地脑筋,java怎样操纵数据库,聚集方面的常识
4.得当java入门,不晓得java怎样操纵数据库
5.根基全数的代码鹏哥会打上诠释,方便阅读
6.由因而java操纵数据库的实战项目,不会具体讲授java情况搭建,数据库安装,sql语法这些常识。太多了,我写一周不见得写完.....大要可以去鹏哥站 java一号 检察相关文章。所以起头之前你总的把java斥地情况安装好吧、数据库安装好吧、
7.斥地工具eclipse;jdk是1.8;数据库用的是mysql5.5 (固然sqlserver数据库完全可以)
8.源码获得:我会将焦点代码粘贴出来,全数的代码关注鹏哥公众号  java一号  实战项目中会给出
二:结果演示
  1. =================接待操纵超市购物治理系统=================1.商品入库2.按照商品编号查询商品3.商品列表4.采办商品5.删除商品6.更新商品0.退出系统请输入要实行的操纵3编号        称号        单价        数目        1234        苹果        12.0        35        1235        衣服        123.0        0        1236        篮球        200.0        20        输入y继续/否则退出y1.商品入库2.按照商品编号查询商品3.商品列表4.采办商品5.删除商品0.退出系统请输入要实行的操纵4输入采办商品的编号1235输入采办商品的数目1此商品库存0  没法采办;输入y继续采办/输入其他结算y输入采办商品的编号1234输入采办商品的数目2采办乐成输入y继续采办/输入其他结算1236编号        称号        数目        总价1234        苹果        2        24.0总计消耗:24.0元输入y继续/否则退出y1.商品入库2.按照商品编号查询商品3.商品列表4.采办商品5.删除商品0.退出系统请输入要实行的操纵5输入要刪除的商品编号4564沒有此商品输入y继续/否则退出y1.商品入库2.按照商品编号查询商品3.商品列表4.采办商品5.删除商品0.退出系统请输入要实行的操纵3编号        称号        单价        数目        1234        苹果        12.0        33        1235        衣服        123.0        0        1236        篮球        200.0        20        输入y继续/否则退出y1.商品入库2.按照商品编号查询商品3.商品列表4.采办商品5.删除商品0.退出系统请输入要实行的操纵4输入采办商品的编号1234输入采办商品的数目2采办乐成输入y继续采办/输入其他结算y输入采办商品的编号1234输入采办商品的数目2采办乐成输入y继续采办/输入其他结算t编号        称号        数目        总价1234        苹果        4        48.0总计消耗:48.0元输入y继续/否则退出
复制代码
三:建立项目

在eclipse建立一个ShopManager项目
我的关键词 java超市购物治理系统  热门消息 20191209105712604

接着我们将数据库驱动jar包引入(可以去官网下载大要在我的公众号 java一号  复兴  jdbc  即可获得,);
java和这个数据库驱动有什么关系呢?简单大白就是这个数据库驱动是java和数据库中心的桥梁,用于两者通讯。
我的关键词 java超市购物治理系统  热门消息 20191209110719480



建立lib的文件夹
我的关键词 java超市购物治理系统  热门消息 20191209110752620

将我们预备好的驱动复制到这个lib中
我的关键词 java超市购物治理系统  热门消息 20191209110850602

在这个驱动上右键实行
我的关键词 java超市购物治理系统  热门消息 20191209110920527

最初完整的结构
我的关键词 java超市购物治理系统  热门消息 20191209111000221

建立项目结构,很垂危,很垂危,很垂危,这些都是斥地要留意的,对于这些小项目而言,完全可以将全数的代码类都放在src下,可是今后项目越来越大,全数的类成千上百个,都放在src,没有分包的的话,项目项目其他斥地者看到代码什么承受几多点危险。
这个系统中比力简单,下面四个包便可以,其中app包用于放系统主进口类,pojo放系统触及的实体类,service放系统营业,utils放系统中的工具类;test姑且测试类
我的关键词 java超市购物治理系统  热门消息 2019120911215188

四:毗连数据库

由于系统会触及到屡次对数据库中数据的拜候,所以我们将毗连数据库操纵写成一个工具类DbUtil,不要每次触及到操纵数据库就写反复的毗连代码。
  1. package com.javayihao.top.utils;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;/** * @date 2019-12-9 * @Description 毗连数据库工具类 * @author com.javayihao.top */public class DbUtil {        //把几个用于毗连数据库的字符串界说成常量,不必每次去建立        private static final String USER = "root";//数据库用户名        private static final String UPWD = "root";//数据库密码        //当地数据库shop        private static final String URL = "jdbc:mysql://localhost:3306/shop";        //驱动        private static final String DRIVER = "com.mysql.jdbc.Driver";        //注册驱动        static {                try {                        Class.forName(DRIVER);                } catch (ClassNotFoundException e) {                        e.printStackTrace();                }        }        //获得数据库毗连工具Connection的函数        public static Connection getConnection() throws SQLException {                return DriverManager.getConnection(URL, USER, UPWD);        }        //封闭毗连和 实行 的翻开资本        public static void close(Connection connection, Statement statement) {                if (statement != null) {                        try {                                statement.close();                        } catch (SQLException e) {                                e.printStackTrace();                        }                }                if (connection != null) {                        try {                                connection.close();                        } catch (SQLException e) {                                e.printStackTrace();                        }                }        }        //封闭全数的翻开资本        public static void close(Connection connection, Statement statement, ResultSet rs) {                if (statement != null) {                        try {                                statement.close();                        } catch (SQLException e) {                                e.printStackTrace();                        }                }                if (connection != null) {                        try {                                connection.close();                        } catch (SQLException e) {                                e.printStackTrace();                        }                }                if (rs != null) {                        try {                                rs.close();                        } catch (SQLException e) {                                e.printStackTrace();                        }                }        }}
复制代码
测试
  1. package com.javayihao.top.test;import java.sql.Connection;import java.sql.SQLException;import com.javayihao.top.utils.DbUtil;/** * @date 2019-12-9 * @Description 测试数据库毗连类 * @author com.javayihao.top */public class DbUtilTest {        public static void main(String[] args) throws SQLException {                Connection con = DbUtil.getConnection();                System.out.println(con);        }}
复制代码
以下,说明数据库毗连乐成
我的关键词 java超市购物治理系统  热门消息 20191209114819620

五:建立实体类
  1. package com.javayihao.top.pojo;/** * @date 2019-12-9 * @Description 商品实体 * @author com.javayihao.top */public class Good {        //商品编号        private int id;        //商品称号        private String name;        //商品价格(价格大要触及到小数,这里操纵float,固然真正大型购物平台不会操纵float,有爱好的朋友可以上网了解)        private float price;        //库存        private int num;        //空参机关        public Good() {                super();        }        //打印方式        @Override        public String toString() {                return "Good [id=" + id + ", name=" + name + ", price=" + price + ", num=" + num + "]";        }        //有参机关,方便初始化工具        public Good(int id, String name, float price, int num) {                super();                this.id = id;                this.name = name;                this.price = price;                this.num = num;        }        //set get方式        public int getId() {                return id;        }        public void setId(int id) {                this.id = id;        }        public String getName() {                return name;        }        public void setName(String name) {                this.name = name;        }        public float getPrice() {                return price;        }        public void setPrice(float price) {                this.price = price;        }        public int getNum() {                return num;        }        public void setNum(int num) {                this.num = num;        }}
复制代码
六:数据库

当地建立数据库shop,建立表t_good
  1. CREATE TABLE `t_good` (  `id` int(5) NOT NULL,  `name` varchar(25) NOT NULL,  `price` float(10,2) NOT NULL,  `num` int(5) NOT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
复制代码
七.焦点营业

  1. package com.javayihao.top.service;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.Scanner;import com.javayihao.top.pojo.Good;import com.javayihao.top.utils.DbUtil;/** * @date 2019-12-9 * @Description 系统主界面 * @author com.javayihao.top */public class ShopView {        //获得键盘输入工具        Scanner input = new Scanner(System.in);        /*         * 系统运转方式         */        public void ShopStart() {                System.out.println("=================接待操纵超市购物治理系统=================");                //能否继续的标志量,默许是                String isGo="y";                do{                        //挪用菜单那展现的函数                                showMenu();                                System.out.println("请输入要实行的操纵");                                //接管键盘的输入,这里操纵String,一次性处置赏罚数字和字符输入,不倡议操纵int典范数字                                String select =input.next();                                //按照输入的挑选实行对应的方式                                switch (select) {                                //实行商品入库方式                                case "1":                                        insertGood();                                        break;                                //实行商品查詢方式                                case "2":                                        System.out.println("输入要查询的商品编号");                                        int goodId = input.nextInt();                                        //挪用查询商品的方式,                                        Good good = searchGoodById(goodId);                                        //存在                                        if(good!=null){                                                System.out.println("商品编号:"+goodId+" 商品称号:"+good.getName()                                                +"  商品价格:"+good.getPrice()+"  商品数目:"+good.getNum());                                        }else{                                                System.out.println("此商品不存在");                                        }                                        break;                                //实行商品列表方式                                case "3":                                        getGoodList();                                        break;                                //实行商品采办方式                                case "4":                                        buyGood();                                        break;                                        //实行商品采办方式                                case "5":                                        System.out.println("输入要刪除的商品编号");                                        int id = input.nextInt();                                        //挪用查询商品的方式,                                        if(searchGoodById(id)!=null){                                                deleteGood(id);                                        }else{                                                System.out.println("沒有此商品");                                        }                                        break;                                case "6":                                        updateGood();                                        break;                                //退出系统                                case "0":                                        System.out.println("*************接待下次操纵 再会!*************");                                        //禁止步伐                                        System.exit(0);                                default:                                        System.err.println("输入有误 请重新输入!");                                        continue;                        }                                System.out.println("输入y继续/否则退出");                                isGo = input.next();                }while(isGo.equals("y"));                System.out.println("*************接待下次操纵 再会!*************");        }        /**         * 更新商品操纵         * 1.先查询当前要更新的商品存不存在         * 2.假如存在更新即可,不存在提醒         */        private void updateGood() {                System.out.println("输入要点窜的商品id");                int gid = input.nextInt();                Good good = searchGoodById(gid);                System.out.println("商品信息以下");                if(good!=null){                        System.out.println("商品编号:"+gid+" 商品称号:"+good.getName()                        +"  商品价格:"+good.getPrice()+"  商品数目:"+good.getNum());                        System.out.println("点窜商品称号");                        String name = input.next();                        System.out.println("点窜商品单价");                        float price = input.nextFloat();                        System.out.println("点窜商品库存");                        int num = input.nextInt();                        String sql="update t_good set name=?,price=?,num=? where id=? ";                        try {                                //建立一个操纵数据库的工具                                Connection con = DbUtil.getConnection();                                //建立实行sql的实行工具PreparedStatement                                PreparedStatement pst = con.prepareStatement(sql);                                //给占位符设备值                                pst.setString(1, name);                                pst.setFloat(2, price);                                pst.setInt(3, num);                                pst.setInt(4, gid);                                //假如是查询的话execute()返回true,假如是更新或插入的话就返回false                                if(!pst.execute()){                                        System.out.println("更新乐成");                                }                                //封闭毗连                                DbUtil.close(con, pst);                        } catch (Exception e) {                                e.printStackTrace();                                System.out.println("更新很是"+e.getMessage());                        }                }else{                        System.out.println("此商品不存在");                }                        }                //用于展现系统界面菜单的方式                private void  showMenu() {                        System.out.println("1.商品入库");                        System.out.println("2.按照商品编号查询商品");                        System.out.println("3.商品列表");                        System.out.println("4.采办商品");                        System.out.println("5.删除商品");                        System.out.println("6.更新商品");                        System.out.println("0.退出系统");                }        /*         * 刪除商品         * 1.首先得判定该商品存在         * 2.按照商品编号id删除         */        private void deleteGood(int id) {                String sql = "delete from t_good where id=?";                try {                        //建立一个操纵数据库的工具                        Connection con = DbUtil.getConnection();                        //建立实行sql的实行工具PreparedStatement                        PreparedStatement pst = con.prepareStatement(sql);                        //给占位符设备值                        pst.setInt(1, id);                        //假如是查询的话execute()返回true,假如是更新或插入的话就返回false                        if(!pst.execute()){                                System.out.println("刪除乐成");                        }                        //封闭毗连                        DbUtil.close(con, pst);                } catch (Exception e) {                        e.printStackTrace();                        System.out.println("删除很是"+e.getMessage());                }        }        /*         * 商品入库         * 这里只处置赏罚编号不能反复的逻辑,         * 关于输入的编号能否是数字这里就不做判定,有爱好的朋友可以试试         */        private void insertGood(){                //商品编号                int id=0;                System.out.println("输入商品编号");                while(true){                         id= input.nextInt();                        //判定当前输入的编号反复没有,反复重新输入                        if(searchGoodById(id)==null){                                break;                        }                        System.err.println("编号反复,请重新输入商品编号");                }                System.out.println("输入商品称号");                String name = input.next();                System.out.println("输入商品单价");                float price = input.nextFloat();                System.out.println("输入商品数目");                int num = input.nextInt();                //要实行的sql语句,这里操纵占位符避免sql入侵                String sql = "insert into t_good()values(?,?,?,?)";                try {                        //建立一个操纵数据库的工具                        Connection con = DbUtil.getConnection();                        //建立实行sql的实行工具PreparedStatement                        PreparedStatement pst = con.prepareStatement(sql);                        //给占位符设备值                        pst.setInt(1, id);                        pst.setString(2, name);                        pst.setFloat(3, price);                        pst.setInt(4, num);                        //实行sql语句                    if(!pst.execute()){                            System.out.println("入库乐成");                     }                        //封闭毗连                        DbUtil.close(con, pst);                } catch (Exception e) {                        e.printStackTrace();                        System.out.println("入库很是"+e.getMessage());                }        }        /*商品查询         * 返回的是一个商品工具,没有此商品返回null         */        private Good searchGoodById(int id) {                //实行的sql语句                String sql="select id,name,price,num from t_good where id=?";                try {                        //建立一个操纵数据库的工具                        Connection con = DbUtil.getConnection();                        //建立实行sql的工具PreparedStatement                        PreparedStatement pst = con.prepareStatement(sql);                        pst.setInt(1, id);                        ResultSet rs = pst.executeQuery();                        if(rs.next()){//有结果,将查到的数据经过机关函数封装成一个商品工具                                Good good = new Good(rs.getInt("id"), rs.getString("name"),                                                 rs.getFloat("price"), rs.getInt("num"));                                return good;                        }                        //封闭毗连                        DbUtil.close(con, pst);                } catch (SQLException e) {                        e.printStackTrace();                }                return null;        }        //商品列表        private void getGoodList(){                //实行的sql语句                                String sql="select id,name,price,num from t_good";                                try {                                        //建立一个操纵数据库的工具                                        Connection con = DbUtil.getConnection();                                        //建立实行sql的工具PreparedStatement                                        PreparedStatement pst = con.prepareStatement(sql);                                        ResultSet rs = pst.executeQuery();                                        System.out.println("编号\t"+"称号\t"+"单价\t"+"数目\t");                                        if(rs.wasNull()){                                                System.out.println("没有商品");                                        }else{                                                while(rs.next()){//有结果,打印                                                        //经过rs.getxxx("yy")方式参数是数据库列名                                                        System.out.println(rs.getInt("id")+"\t"+rs.getString("name")+"\t"+                                                                        rs.getFloat("price")+"\t"+rs.getInt("num")+"\t");                                                }                                        }                                        //封闭毗连                                        DbUtil.close(con, pst);                                } catch (SQLException e) {                                        e.printStackTrace();                                }        }        //采办商品        public void buyGood() {                //用来存储采办商品的聚集                ArrayList goods = new ArrayList();                //能否继续采办标志                String flag = "y";                do{                        System.out.println("输入采办商品的编号");                        int id = input.nextInt();                        Good good = searchGoodById(id);                        if(good!=null){                                System.out.println("输入采办商品的数目");                                int num = input.nextInt();                                if(good.getNum()0){                                                                for (int i = 0; i < goods.size(); i++) {                                                                        if(goods.get(i).getId()==id){//假如购物车中有该商品 数目加即可                                                                                goods.get(0).setNum(num+goods.get(0).getNum());                                                                        }else{//假如购物车中没有该商品 数目加即可                                                                                goods.add(g);                                                                        }                                                                }                                                        }else{//购物车中没有商品,加入到购物车中                                                                goods.add(g);                                                        }                                                        System.out.println("采办乐成");                                                }else{                                                        System.out.println("采办失敗");                                                }                                        }catch(Exception e){                                                e.printStackTrace();                                                System.out.println("采办很是"+e.getMessage());                                        }                                }                                System.out.println("输入y继续采办/输入其他结算");                                flag = input.next();                                if(!flag.equals("y")){                                        //结算                                        account(goods);                                }                        }else{                                System.out.println("没有此商品");                        }                }while(flag.equals("y"));        }        //结算购物车        private void account(ArrayList goods) {                System.out.println("编号\t"+"称号\t"+"数目\t"+"总价");                //lambda表达式遍历聚集,固然是用for循环也ok                goods.forEach(in->System.out.println(in.getId()+"\t"+in.getName()+                                "\t"+in.getNum()+"\t"+in.getNum()*in.getPrice()));                //合计                float sum=0;                for (int i = 0; i < goods.size(); i++) {                        //对总价求和                        sum += (goods.get(i).getNum())*(goods.get(i).getPrice());                }                System.out.println("总计消耗:"+sum+"元");        }}
复制代码
总结

至此,项目已经完成了,固然项目自己还是存在不敷,比如,在接管键盘输入的正当性判定。对于java操纵数据库而言可以参考,
源码我放在了公众号  java一号  有必要的自提
不是在搬砖,就是搬砖的路上,盼望你的步伐永无bug
我的关键词 java超市购物治理系统  热门消息 20191209171330233



免责声明:假如加害了您的权益,请联系站长,我们会实时删除侵权内容,感谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2006-2014 淄博新闻网-淄博日报 淄博晚报 淄博财经新报 掌中淄博 淄博专业新闻资讯发布网站 版权所有 法律顾问:高律师 客服电话:0791-88289918
技术支持:迪恩网络科技公司  Powered by Discuz! X3.2
快速回复 返回顶部 返回列表