java项目实战(1)—基础——超市购物管理系统V1.0

目录

1.前言

2.项目基础:

3.项目实现内容:

4.代码介绍:

1、MainPage.java

2、GoodsDao.java:

3、SalesManDao.java

4、MysqlData.java



1.前言

记录一下我的第一个java实战小项目,零零星星的一个星期完成了(2020.9.16—9.24)。但是好像没有整体框架的思维,还有好多代码实现的方法没有达到最优,这样做项目估计会被大佬骂吧,如有大佬无意间看到,还请批评指正,提出建议。   

菜鸟很菜,继续学习呀!

2.项目基础:

  1. JDBC基础。学会使用jdbc连接数据库,访问数据库,修改数据库。(本项目使用mysql)
  2. 基础的sql语句,查询,修改,删除,真的很基础。
  3. java基础(我的java真的太基础了,好多还没学会)。

3.项目实现内容:

需求文档:链接:https://pan.baidu.com/s/1jsCTDi_6gbMgemOYinbedw 提取码:nyts 
 

4.代码介绍:

代码简单的分为四个类,以下的代码能全部实现,且没有bug(自己测过很多次没发现bug)。

MainPage.java:  实现主界面的功能

GoodsDao.java:  实现与商品有关的操作

SalesManDao.java:  实现与售货员有关的操作

MysqlData.java:  实现数据库的操作

数据库表: goods, salesman, gsales

                            goods                                                salesman                                                  gsales

1、MainPage.java

import java.util.Scanner;

public class MainPage {

    public static void main(String[] args) {

        Scanner s = new Scanner(System.in);
        Boolean flag = true;

        while (flag){
            System.out.println("**********************************");
            System.out.println("           1.商品维护");
            System.out.println("           2.前台收银");
            System.out.println("           3.商品管理");
            System.out.println("**********************************");
            System.out.println("请选择,输入数字或者按0退出:");
            int select = 0;
            while (true){
                try{
                    select = Integer.valueOf(s.nextLine());
                    break;
                }catch (Exception e){
                    System.out.println("输入错误!");
                }
            }

            switch (select){
                case 1:
                    GoodMaintenance();
                    break;
                case 2:
                    QianTaiLogin();
                    break;
                case 3:
                    GoodsMagLogin();
                    break;
                case 0:
                    flag = false;
                    System.out.println("已退出系统!");
                    break;
                default:
                    System.out.println("请输入正确的数字!");
            }
        }
    }

    /****************part1*****************/
    public static void GoodMaintenance(){
        System.out.println("执行显示商品维护菜单");
        System.out.println("商超购物管理系统>>商品维护");
        Scanner s = new Scanner(System.in);

        GoodsDao operate = new GoodsDao();

        while (true){
            System.out.println("**********************************");
            System.out.println("          1.添加商品");
            System.out.println("          2.更改商品");
            System.out.println("          3.删除商品");
            System.out.println("          4.显示所有商品");
            System.out.println("          5.查询商品");
            System.out.println("**********************************");
            System.out.println("请选择,输入数字或按0返回上一级菜单:");
            int select = 0;

            while (true){
                try{
                    select = Integer.valueOf(s.nextLine());
                    break;
                }catch (Exception e){
                    System.out.println("输入错误!");
                }
            }

            if (select == 1){
                operate.addGoods();
            } else if (select == 2){
                operate.alterGoods();
            } else if (select == 3){
                operate.deleteGoods();
            } else if (select == 4){
                operate.showGoods(1);
            } else if (select == 5){
                operate.quaryGoods();
            } else if (select == 0){
                //flag = false;
                break;
            } else {
                System.out.println("请输入正确的数字!");
            }
        }
        System.out.println("已退出<商品维护>,返回上一级菜单。");
    }


    /****************part2*****************/
    //登录界面
    public static void QianTaiLogin(){
        Scanner s = new Scanner(System.in);
        MysqlData md = new MysqlData();
        GoodsDao gd = new GoodsDao();
        int select = 3;

        while (true) {
            System.out.println("**********************************");
            System.out.println("       欢迎使用bala超市购物管理系统");
            System.out.println("       1.登录系统");
            System.out.println("       2.退出");
            System.out.println("**********************************");
            System.out.print("请选择,输入数字:");

            while (true){
                try{
                    select = Integer.valueOf(s.nextLine());
                    break;
                }catch (Exception e){
                    System.out.println("输入错误!");
                }
            }

            //System.out.println("select:" + select);
            if(select == 1){
                int i;
                for(i = 2; i >= 0; i--){

                    System.out.print("请输入用户名:");
                    String name = s.nextLine();
                    System.out.print("请输入密码:");
                    String pass = s.nextLine();

                    //检查用户密码,count=1,正确,count=0,用户名密码错误。
                    int[] arr = md.quaryData(name,pass,1);
                    //返回售货员ID
                    int count = arr[0];
                    int sid = arr[1];

                    if(count == 1){
                        //登录成功
                        System.out.println("登录成功");
                        gd.shopping(sid);
                        break;
                    }else {
                        System.out.println("用户名和密码不匹配!");
                        if(i != 0)
                            System.out.println("您还有"+i+"次登录机会,请重新输入:");
                        if(i == 0)
                            System.out.println("密码错误次数超过3次,已退出!");
                    }
                }

            }else if(select == 2){
                break;
            }else {
                System.out.println("输入错误!");
            }
        }
    }

    /****************part3*****************/
    public static void GoodsMagLogin(){
        System.out.println("执行商品管理!");
        System.out.println();
        System.out.println("商超购物管理系统>>商品管理");
        GoodsDao gd = new GoodsDao();
        SalesManDao sm = new SalesManDao();
        Scanner s = new Scanner(System.in);
        boolean flag = true; //退出当前系统标志

        while (flag){
            System.out.println("***************************************");
            System.out.println("           1、列出当日卖出商品列表");
            System.out.println("           2、售货员管理");
            System.out.println("***************************************");
            System.out.println("请选择,输入数字或者按0返回上一级菜单:");
            int select = 0;

            while (true){
                try{
                    select = Integer.valueOf(s.nextLine());
                    break;
                }catch (Exception e){
                    System.out.println("输入错误!");
                }
            }

            if (select == 1){
                gd.showTodaySales();
            } else if (select == 2){
                sm.jieMian();
            } else if (select == 0){
                flag = false;
            } else {
                System.out.println("输入错误!");
            }
        }
        System.out.println("已退出<商品管理>,返回上一级菜单。");
    }
}

2、GoodsDao.java:

import java.util.Scanner;

public class GoodsDao {
    //goods
    private String gName;
    private float gPrice;
    private int gNum;

    //goods sales
    java.util.Date date = new java.util.Date();
    java.sql.Date sData = new java.sql.Date(date.getTime());

    public String getgName() {
        return gName;
    }

    public void setgName(String gName) {
        this.gName = gName;
    }

    public float getgPrice() {
        return gPrice;
    }

    public void setgPrice(float gPrice) {
        this.gPrice = gPrice;
    }

    public int getgNum() {
        return gNum;
    }

    public void setgNum(int gNum) {
        this.gNum = gNum;
    }


    //添加商品
    public void addGoods(){

        MysqlData igd = new MysqlData();
        System.out.println("执行添加商品操作:");
        Scanner s = new Scanner(System.in);

        char flag = 'y';
        while (flag == 'y'){

            while (true){
                System.out.println("添加商品名称:");//不能为空

                this.setgName(s.nextLine());
                if(this.getgName().equals(""))  //or this.getgName().length() == 0
                    System.out.println("输入不能为空!");
                else
                    break;
            }
            while (true){
                System.out.println("添加商品价格:");
                try{
                    this.setgPrice(s.nextFloat());
                    break;
                }catch (Exception e){
                    System.out.println("输入错误!");
                    String huanchong = s.next();
                }
            }
            while (true){
                System.out.println("添加商品数量:");
                try{
                    this.setgNum(s.nextInt());
                    break;
                }catch (Exception e){
                    System.out.println("输入错误!");
                    String huanchong = s.next();
                }
            }
            System.out.println("输入的商品信息为:");
            System.out.printf(this.getgName() + "  " + this.getgPrice() + "   " + this.getgNum() + "\n");

            //存入数据库
            igd.InsertData(this.getgName(),this.getgPrice(),this.getgNum());

            //继续添加商品
            System.out.print("是否继续商品(y/n): ");

            while (true){
                try{
                    flag = s.nextLine().charAt(0);
                }catch (Exception e){
                    System.out.println("输入不能为空!");
                }
                if(flag == 'n' || flag == 'y')
                    break;
                else
                    System.out.println("输入错误!请重新输入:");
            }
        }
    }

    //更改商品,有个Scanner第二次循环,输入为空的问题没想明白
    public void alterGoods(){
        MysqlData md = new MysqlData();
        System.out.println("执行更改商品操作");

        //为什么在外面定义scann类,在while循环里,循环第二次的时候默认是空的,不能从键盘输入?
        //Scanner s = new Scanner(System.in);
        //String alterName = "";

        char flag = 'y';
        while (flag == 'y'){

            System.out.println("输入更改商品名称:");
            Scanner s = new Scanner(System.in);

            String alterName = s.nextLine();

            int count = md.quaryData(alterName,"acc_goods");
            System.out.println("查询商品返回的值:" + count);

            if(count > 0){
                System.out.println("选择你要更改的内容:");
                System.out.println("1、更改商品名称");
                System.out.println("2、更改商品价格");
                System.out.println("3、更改商品数量");
                int select = 0;

                while (true){
                    try{
                        select = Integer.valueOf(s.nextLine());
                        break;
                    }catch (Exception e){
                        System.out.println("输入错误!");
                    }
                }

                if(select == 1){

                    while (true){
                        System.out.println("请输入要更改商品名称:");//不能为空
                        try{
                            this.setgName(s.nextLine());
                            if(this.getgName().equals("")) //or this.getgName().length() == 0
                                System.out.println("输入不能为空!");
                            else {
                                md.alterData(alterName, this.getgName(), 1);
                                break;
                            }
                        }catch (Exception e){
                            System.out.println("输入错误!");
                        }
                    }

                }else if(select == 2){
                    System.out.println("请输入要更改商品价格");
                    float alprice;
                    while (true){
                        try{
                            alprice = Float.valueOf(s.nextLine());
                            break;
                        }catch (Exception e){
                            System.out.println("输入错误!");
                        }
                    }
                    md.alterData(alterName,alprice);

                }else if(select ==3){
                    System.out.println("请输入要更改商品数量");
                    int alnum;
                    while (true){
                        try{
                            alnum = Integer.valueOf(s.nextLine());
                            break;
                        }catch (Exception e){
                            System.out.println("输入错误!");
                        }
                    }
                    md.alterData(alterName,alnum,1);

                }else {
                    System.out.println("输入错误!");
                }
            }


            while (true){
                System.out.println("是否继续(y/n)");
                try{
                    flag = s.nextLine().charAt(0);
                }catch (Exception e){
                    System.out.println("输入不能为空!");
                }
                if(flag == 'n' || flag == 'y')
                    break;
                else
                    System.out.println("输入错误!请重新输入:");
            }

        }
    }

    //删除商品
    public void deleteGoods(){
        System.out.println("执行删除商品操作!");

        MysqlData igd = new MysqlData();
        char flag = 'y';

        while(flag == 'y'){
            System.out.println("输入删除的商品名称:");
            Scanner s = new Scanner(System.in);
            String delname = s.nextLine();
            //按照名字检查商品是否存在
            int count = igd.quaryData(delname,"acc_goods");

            if(count > 0){
                System.out.println("是否确定要删除(y/n)?:");
                if(s.next().charAt(0) == 'y'){
                    //执行删除商品
                    igd.deleteData(delname,1);
                }else {
                    System.out.println("未删除。");
                }
            }
            System.out.println("是否继续(y/n):");

            while (true){
                try{
                    flag = s.nextLine().charAt(0);
                }catch (Exception e){
                    System.out.println("输入不能为空!");
                }
                if(flag == 'n' || flag == 'y')
                    break;
                else
                    System.out.println("输入错误!请重新输入:");
            }

        }
    }

    //显示所有商品信息
    public void showGoods(int method){
        System.out.println("显示所有商品");
        MysqlData md = new MysqlData();
        md.showData(method);
    }

    public void quaryGoods(){
        System.out.println("执行查询商品操作!");
        MysqlData md = new MysqlData();
        Scanner s = new Scanner(System.in);
        char flag = 'y';

        while(flag == 'y'){
            System.out.println("1、按商品价格升序查询");
            System.out.println("2、按商品数量升序查询");
            System.out.println("3、输入关键字查询商品");
            System.out.println("请选择,输入数字或0返回上一级菜单:");
            int select = 0;

            while (true){
                try{
                    select = Integer.valueOf(s.nextLine());
                    break;
                }catch (Exception e){
                    System.out.println("输入错误!");
                }
            }

            if(select == 1){
                md.showData(2);
            }else if(select == 2){
                md.showData(3);
            }else if(select == 3){
                System.out.println("请输入商品关键字:");
                Scanner sc = new Scanner(System.in);
                String name = sc.nextLine();
                md.quaryData(name,"inacc_goods"); //按照模糊方法查询商品是否存在
            }else if(select == 0){
                break;
            }
            else {
                System.out.println("输入错误!");
            }

            System.out.println("是否继续(y/n):");
            while (true){
                try{
                    flag = s.nextLine().charAt(0);
                }catch (Exception e){
                    System.out.println("输入不能为空!");
                }
                if(flag == 'n' || flag == 'y')
                    break;
                else
                    System.out.println("输入错误!请重新输入:");
            }
        }
    }

    //购物结算
    public void shopping(int sid){
        System.out.println("                       1.购物结算");
        Scanner sc = new Scanner(System.in);
        MysqlData md = new MysqlData();
        float[] arr = {0,0};
        int gid = 0;
        float gprice = 0;
        int gnum = 0;
        float money = 0;
        int num = 0;

        System.out.println("输入商品关键字:");

        while(true){
            String name = sc.nextLine();
            int count = md.quaryData(name, "inacc_goods");
            if(count == 1){
                while (true){
                    System.out.print("请选择商品:");
                    String selname = sc.nextLine();
                    //有输入就会有错误!
                    int count2 = md.quaryData(selname,"acc_goods");
                    //返回商品ID,价格,数量
                    if(count2 == 1){
                        arr = md.quaryData(selname);
                        gid = (int)arr[0];
                        gprice = arr[1];
                        gnum = (int)arr[2];

                        while (true){
                            System.out.print("请输入购买数量:");
                            try{
                                num = Integer.valueOf(sc.nextLine());
                                if(num >= 0 & num <= gnum)
                                    break;
                            }catch (Exception e){
                                System.out.println("输入错误!");
                            }
                            if(num > gnum)
                                System.out.println("库存不足!请调整购买数量!");
                        }

                        money = gprice * num;
                        System.out.printf("总价:%.1f",money);
                        System.out.println();
                        System.out.println("请输入实际交费金额:");
                        while (true){
                            try{
                                int jiaofei = Integer.valueOf(sc.nextLine());
                                if(jiaofei < 0){
                                    System.out.println("输入错误!");
                                }else if(jiaofei < money){
                                    System.out.println("您的钱不够买呀!请重新输入:");
                                }else {
                                    System.out.println("找钱:" + (jiaofei - money));
                                    break;
                                }
                            }catch (Exception e){
                                System.out.println("输入错误!");
                            }
                        }
                        System.out.println("谢谢光临!");

                        //修改数据库商品数量
                        int alternum = (int) (gnum - num);
                        md.alterData(selname,alternum,2);
                        //将sid,gid,sdate,snum 信息存到gsales表中
                        md.insertGsales(gid,sid,this.sData,num);
                        break;
                    }
                }
                break;
            }else {
                System.out.println("请重新输入商品关键字!");
            }
        }
    }

    //列出当日卖出商品列表
    public void showTodaySales(){
        System.out.println("执行列出当日卖出商品列表操作!");
        System.out.println("今日售出商品:");
        MysqlData md = new MysqlData();
        md.showgoodsales(this.sData);
    }
}

3、SalesManDao.java

import java.util.Scanner;

public class SalesManDao {
    private String sName;
    private String sPass;

    public String getsPass() {
        return sPass;
    }

    public void setsPass(String sPass) {
        this.sPass = sPass;
    }

    public String getsName() {
        return sName;
    }

    public void setsName(String sName) {
        this.sName = sName;
    }

    public void jieMian(){
        System.out.println("商超购物管理系统>>商品管理>>售货员管理");
        Scanner s = new Scanner(System.in);
        while (true) {
            System.out.println("*****************************************");
            System.out.println("              1、添加售货员");
            System.out.println("              2、更改售货员");
            System.out.println("              3、删除售货员");
            System.out.println("              4、显示所有售货员");
            System.out.println("              5、查询售货员");
            System.out.println("*****************************************");
            System.out.println("请选择,输入数字或者按0返回上一级菜单:");
            int select = 0;
            while (true){
                try{
                    select = Integer.valueOf(s.nextLine());
                    break;
                }catch (Exception e){
                    System.out.println("输入错误!");
                }
            }

            if (select == 1) {
                this.addSalesMan();
            } else if (select == 2) {
                this.alterSalesMan();
            } else if (select == 3) {
                this.deleteSalesMan();
            } else if (select == 4) {
                this.showSalesMan();
            } else if (select == 5) {
                this.quarySalesMan();
            } else if (select == 0) {
                break;
            } else {
                System.out.println("输入错误!");
            }
        }
    }

    //添加售货员信息
    public void addSalesMan(){
        MysqlData md = new MysqlData();
        System.out.println("执行添加售货员操作:");
        Scanner s = new Scanner(System.in);
        char flag = 'y';
        while (true){
            System.out.println("添加售货员姓名:");
            while (true){
                this.setsName(s.nextLine());
                if(this.getsName().equals(""))
                    System.out.println("输入不能为空!");
                else
                    break;
            }

            System.out.println("添加售货员密码:");
            while (true){
                this.setsPass(s.nextLine());
                if(this.getsPass().equals(""))
                    System.out.println("输入不能为空!");
                else
                    break;
            }
            //存入数据库
            md.InsertData(this.getsName(),this.getsPass());
            System.out.println("是否继续(y/n)?");

            while (true){
                try{
                    flag = s.nextLine().charAt(0);
                }catch (Exception e){
                    System.out.println("输入不能为空!");
                }
                if(flag == 'n' || flag == 'y')
                    break;
                else
                    System.out.println("输入错误!请重新输入:");
            }
            if(flag == 'n')
                break;
        }
    }
    //更改售货员信息
    public void alterSalesMan(){
        System.out.println("执行更改售货员操作");
        Scanner s = new Scanner(System.in);
        MysqlData md = new MysqlData();
        String sname;
        String alname;
        String alpass;

        while (true){
            System.out.println("输入更改的售货员姓名:");

            while (true){
                sname = s.nextLine();
                if(sname.equals(""))
                    System.out.println("输入不能为空!");
                else
                    break;
            }

            int count = 0;
            count = md.quaryData(sname,"acc_salesman"); // 准确查询

            if(count > 0){
                System.out.println("选择您要更改的内容");
                System.out.println("1、更改售货员姓名");
                System.out.println("2、更改售货员密码");
                int select;
                while(true){
                    try{
                        select = s.nextInt();
                        break;
                    }catch (Exception e){
                        System.out.println("输入错误!");
                    }
                }

                if(select == 1){
                    System.out.println("请输入新的名字:");
                    while (true){
                        alname = s.nextLine();
                        if(alname.length() == 0)
                            System.out.println("不能为空!");
                        else {
                            md.alterData(sname,alname,2);
                            break;
                        }
                    }
                }else if(select == 2){
                    System.out.println("请输入新的密码:");
                    while (true){
                        alpass = s.nextLine();
                        if(alpass.equals(""))
                            System.out.println("不能为空!");
                        else {
                            md.alterData(sname,alpass,3);
                            break;
                        }
                    }
                }else {
                    System.out.println("输入错误!");
                }
            }
            System.out.println("是否继续(y/n)?");
            char flag = 'y';
            while(true){
                try{
                    flag = s.nextLine().charAt(0);
                }catch (Exception e){
                    System.out.println("输入不能为空!");
                }
                if(flag == 'y' || flag == 'n')
                    break;
                else
                    System.out.println("输入错误!请重新输入:");
            }
            if(flag == 'n')
                break;
        }
    }

    public void deleteSalesMan() {
        System.out.println("执行删除售货员操作");
        MysqlData md = new MysqlData();
        Scanner s = new Scanner(System.in);
        char flag = 'y';
        while (true) {

            System.out.println("输入删除的售货员姓名:");
            String sname = s.nextLine();
            int count = md.quaryData(sname, "acc_salesman");
            if (count > 0) {
                System.out.println("是否确定要删除(y/n)?");

                while (true){
                    try{
                        flag = s.nextLine().charAt(0);
                    }catch (Exception e){
                        System.out.println("输入不能为空!");
                    }
                    if(flag == 'n' || flag == 'y')
                        break;
                    else
                        System.out.println("输入错误!请重新输入:");
                }
                if (flag == 'y') {
                    //delete
                    md.deleteData(sname,2);
                }
            }

            while (true){
                System.out.println("是否继续(y/n)?");
                try{
                    flag = s.nextLine().charAt(0);
                    if(flag == 'y' || flag == 'n')
                        break;
                    System.out.println("请正确输入");
                }catch (Exception e){
                    System.out.println("请正确输入");
                }
            }
            if(flag == 'n')
                break;
        }

    }

    public void showSalesMan(){
        System.out.println("执行显示所有售货员操作");
        MysqlData md = new MysqlData();
        md.showData(4);

    }
    public void quarySalesMan(){
        System.out.println("执行查询售货员操作");
        MysqlData md = new MysqlData();
        Scanner s = new Scanner(System.in);
        char flag = 'y';
        while (true){
            System.out.println("输入要查询的售货员姓名关键字:");
            String sname = s.nextLine();
            md.quaryData(sname,"inacc_salesman");
            System.out.println("是够继续(y/n)?");

            while (true){
                try{
                    flag = s.nextLine().charAt(0);
                    if(flag == 'y' || flag == 'n')
                        break;
                    System.out.println("请正确输入");
                }catch (Exception e){
                    System.out.println("请正确输入");
                }
            }
            if(flag == 'n')
                break;
        }

    }
}

4、MysqlData.java

import java.sql.*;

public class MysqlData {
    private String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    private String DB_URL = "jdbc:mysql://localhost/long";
    private String USER = "root";
    private String PASS = "123456";

    Connection conn = null;
    PreparedStatement pstmt = null;
    Statement stmt = null;
    ResultSet rs = null;

/**************商品维护**********************/
    //添加商品信息
    public void InsertData(String name, Float price, int num){

        try {
            Class.forName(JDBC_DRIVER);
            conn = DriverManager.getConnection(DB_URL,USER,PASS);

            //注意:第一个ID自动编号,不用添加
            String sql = "insert into goods(GName,GPrice,GNum) values(?,?,?) ";

            pstmt = conn.prepareStatement(sql);

            //System.out.println("name:" + name);

            pstmt.setString(1, name);
            pstmt.setFloat(2, price);
            pstmt.setInt(3, num);

            int i = pstmt.executeUpdate();
            if(i > 0){
                System.out.println("商品添加成功!");
            }

            pstmt.close();
            conn.close();

        }catch (SQLException se){
            se.printStackTrace();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try {
                if(pstmt != null)
                    conn.close();
            }catch (SQLException se){
            }
            try {
                if(conn != null)
                    conn.close();
            }catch (SQLException se){
                se.printStackTrace();
            }
        }
    }
    //添加售货员信息
    public void InsertData(String sname, String spass){

        try {
            Class.forName(JDBC_DRIVER);
            conn = DriverManager.getConnection(DB_URL,USER,PASS);


            String sql = "insert into salesman(SName,SPassword) values(?,?) ";
            pstmt = conn.prepareStatement(sql);
            System.out.println("sqlname:" + sname);

            pstmt.setString(1, sname);
            pstmt.setString(2, spass);


            int i = pstmt.executeUpdate();
            if(i > 0){
                System.out.println("添加售货员成功!");
            }

            pstmt.close();
            conn.close();

        }catch (SQLException se){
            se.printStackTrace();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try {
                if(pstmt != null)
                    conn.close();
            }catch (SQLException se){
            }
            try {
                if(conn != null)
                    conn.close();
            }catch (SQLException se){
                se.printStackTrace();
            }
        }
    }

    /* method 方法调用
    * method = "acc_goods",商品信息精确查询;
    * method = "inacc_goods",商品信息模糊查询;
    * method = "acc_salesman",售货员信息精确查询;
    * method = "inacc_salesman",售货员信息模糊查询;
    * 用int count>0判断查询存在,否则不存在*/
    //查询数据(准确查,模糊查)
    public int quaryData(String name, String method){
        int count = 0;
        try {
            Class.forName(JDBC_DRIVER);
            conn = DriverManager.getConnection(DB_URL,USER,PASS);

            //查询数据是否存在数据库,用count>0判断是否存在
            //准确查询-商品
            String sqlgood = "SELECT * FROM goods WHERE GName = ?;";

            //模糊查询-商品
            //方法1
            String sqlgood1 =  "SELECT * FROM goods WHERE GName like \"%\"?\"%\"";
            //方法2
           /* String sql3 =  "SELECT * FROM goods WHERE ";
            sql1 += "GName like concat('%',?,'%')";*/

            //准确查询-售货员
            String sqlsales =  "SELECT * FROM salesman WHERE SName = ?;";
            //模糊查询-售货员
            String sqlsales1 = "SELECT * FROM salesman WHERE SName like \"%\"?\"%\"";

            String sql = "";

            if(method == "acc_goods"){
                sql = sqlgood;
            }else if(method == "inacc_goods"){
                sql = sqlgood1;
            }else if (method == "acc_salesman"){
                sql = sqlsales;
            }else if (method == "inacc_salesman"){
                sql = sqlsales1;
            }else {
                System.out.println("方法调用错误!");
            }

            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, name);
            rs = pstmt.executeQuery();

            if(method == "acc_goods" || method == "inacc_goods"){
                if(!rs.next()){
                    System.out.println("该商品不存在!");
                    count = 0;
                } else {
                    System.out.print("商品名称     " + "商品价格     " + "商品数量" + "\t" + "\n");
                    String gname = rs.getString("GName");
                    Float gprice = rs.getFloat("GPrice");
                    int gnum = rs.getInt("GNum");
                    System.out.print(gname + "       " + gprice +"        " + gnum + "\t" + "\n");
                    while (rs.next()){
                        gname = rs.getString("GName");
                        gprice = rs.getFloat("GPrice");
                        gnum = rs.getInt("GNum");
                        System.out.print(gname + "       " + gprice +"        " + gnum + "\t" + "\n");
                    }
                    count = 1;
                }
            }else {
                if(!rs.next()){
                    System.out.println("该售货员不存在!");
                    count = 0;
                } else {
                    System.out.print("售货员姓名     " + "售货员密码" + "\t" + "\n");
                    String sname = rs.getString("SName");
                    String spass = rs.getString("spassword");
                    System.out.print(sname + "          " + spass + "\t" + "\n");
                    while (rs.next()){
                        sname = rs.getString("SName");
                        spass = rs.getString("spassword");
                        System.out.print(sname + "          " + spass + "\t" + "\n");
                    }
                    count = 1;
                }
            }

            pstmt.close();
            conn.close();
        } catch (SQLException se){
            se.printStackTrace();
        } catch (Exception e){
            e.printStackTrace();
        }finally {
            try{
                if(pstmt != null)
                    conn.close();
            }catch (SQLException se){
            }
            try {
                if(conn != null)
                    conn.close();
            }catch (SQLException se){
                se.printStackTrace();
            }
        }
        /*System.out.println("count:" + count);*/
        return count;
    }


    //售货员用户名和密码匹配,返回售货员ID
    public int[] quaryData(String name, String spass, int i){
        int count = 0;
        int sid = 0;
        try{
            Class.forName(JDBC_DRIVER);
            conn = DriverManager.getConnection(DB_URL,USER,PASS);
            String sql = "SELECT *  FROM salesman WHERE SName = ? AND SPassword = ?;";

            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, name);
            pstmt.setString(2, spass);
            rs = pstmt.executeQuery();

            while (rs.next()){
                sid = rs.getInt("SID");
                count = 1;
            }


            pstmt.close();
            conn.close();
        } catch (SQLException se){
            se.printStackTrace();
        } catch (Exception e){
            e.printStackTrace();
        }finally {
            try{
                if(pstmt != null)
                    conn.close();
            }catch (SQLException se){
            }
            try {
                if(conn != null)
                    conn.close();
            }catch (SQLException se){
                se.printStackTrace();
            }
        }
        int[] arr = {count, sid};
        return arr;
    }

    //返回商品价格(float)、数量(int),id
    public float[] quaryData(String name){
        float price = 0;
        float num = 0;
        float gid = 0;

        try {
            Class.forName(JDBC_DRIVER);
            conn = DriverManager.getConnection(DB_URL,USER,PASS);
            String sql = "SELECT * FROM goods WHERE GName = ?";
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, name);
            rs = pstmt.executeQuery();
            while (rs.next()){
                price = rs.getFloat("gprice");
                num = rs.getFloat("gnum");
                gid = rs.getFloat("gid");
            }
            pstmt.close();
            conn.close();
        } catch (SQLException se){
            se.printStackTrace();
        } catch (Exception e){
            e.printStackTrace();
        }finally {
            try{
                if(pstmt != null)
                    conn.close();
            }catch (SQLException se){
            }
            try {
                if(conn != null)
                    conn.close();
            }catch (SQLException se){
                se.printStackTrace();
            }
        }
        float[] arr = {gid, price, num};
        return arr;
    }


    //method=1:更改商品名称;method=2:改售货员姓名;method=3,改售货员密码,
    public void alterData(String name, String alname, int method){

        try {
            Class.forName(JDBC_DRIVER);
            conn = DriverManager.getConnection(DB_URL,USER,PASS);

            String sql1 = "UPDATE goods SET GName = ? WHERE GName = ?";
            String sql2 = "UPDATE salesman SET SName = ? WHERE SName = ?";
            String sql3 = "UPDATE salesman SET SPassword = ? WHERE SName = ?";
            String sql = "";

            if(method == 1){
                sql = sql1;
            }else if(method == 2){
                sql = sql2;
            }else if(method == 3){
                sql = sql3;
            }else{
                System.out.println("方法调用错误!");
            }

            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, alname);
            pstmt.setString(2, name);

            if(method == 4){
                rs = pstmt.executeQuery();
                if(!rs.next()){
                    System.out.println("用户名和密码不匹配!!");
                    int count = 0;
                }
            }else {
                int i = pstmt.executeUpdate();
                if(i > 0){
                    System.out.println("修改成功!");
                }
            }

            pstmt.close();
            conn.close();

        } catch (SQLException se){
            se.printStackTrace();
        } catch (Exception e){
            e.printStackTrace();
        }finally {
            try{
                if(pstmt != null)
                    conn.close();
            }catch (SQLException se){
            }
            try {
                if(conn != null)
                    conn.close();
            }catch (SQLException se){
                se.printStackTrace();
            }
        }
    }

    //method=1:更改商品数量,并显示修改成功;method=2:更改商品数量,不显示修改成功
    public void alterData(String name, int alnum, int method){
        try {
            Class.forName(JDBC_DRIVER);
            conn = DriverManager.getConnection(DB_URL,USER,PASS);

            String sql = "UPDATE goods SET GNum = ? WHERE GName = ?";

            pstmt = conn.prepareStatement(sql);
            pstmt.setInt(1, alnum);
            pstmt.setString(2, name);
            //rs = pstmt.executeQuery();

            int i = pstmt.executeUpdate();
            if(i > 0 & method == 1){
                System.out.println("修改成功!");
            }

            pstmt.close();
            conn.close();

        } catch (SQLException se){
            se.printStackTrace();
        } catch (Exception e){
            e.printStackTrace();
        }finally {
            try{
                if(pstmt != null)
                    conn.close();
            }catch (SQLException se){
            }
            try {
                if(conn != null)
                    conn.close();
            }catch (SQLException se){
                se.printStackTrace();
            }
        }
    }
    //更改商品价格
    public void alterData(String name, Float alprice){
        try {
            Class.forName(JDBC_DRIVER);
            conn = DriverManager.getConnection(DB_URL,USER,PASS);

            String sql = "UPDATE goods SET GPrice = ? WHERE GName = ?";
            pstmt = conn.prepareStatement(sql);
            pstmt.setFloat(1, alprice);
            pstmt.setString(2, name);
            //rs = pstmt.executeQuery();

            int i = pstmt.executeUpdate();
            if(i > 0){
                System.out.println("商品价格修改成功!");
            }

            pstmt.close();
            conn.close();
        } catch (SQLException se){
            se.printStackTrace();
        } catch (Exception e){
            e.printStackTrace();
        }finally {
            try{
                if(pstmt != null)
                    conn.close();
            }catch (SQLException se){
            }
            try {
                if(conn != null)
                    conn.close();
            }catch (SQLException se){
                se.printStackTrace();
            }
        }
    }

    //method=1:删除商品;method=2:删除售货员
    public void deleteData(String name, int method){
        try {
            Class.forName(JDBC_DRIVER);
            conn = DriverManager.getConnection(DB_URL,USER,PASS);

            String sql1 = "DELETE FROM goods WHERE GName = ?";
            String sql2 = "DELETE FROM salesman WHERE SName = ?";
            String sql = "";
            if(method == 1){
                sql = sql1;
            }else if(method == 2){
                sql = sql2;
            }else{
                System.out.println("方法调用失败。");
            }
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, name);

            int i = pstmt.executeUpdate();
            if(i > 0){
                System.out.println("删除成功!");
            }else {
                System.out.println("删除失败!");
            }

            pstmt.close();
            conn.close();

        } catch (SQLException se){
            se.printStackTrace();
        } catch (Exception e){
            e.printStackTrace();
        }finally {
            try{
                if(pstmt != null)
                    conn.close();
            }catch (SQLException se){
            }
            try {
                if(conn != null)
                    conn.close();
            }catch (SQLException se){
                se.printStackTrace();
            }
        }
    }

    /*method = 1:显示所有商品信息;
    * method = 2:价格升序显示商品信息;
    * method = 3:数量升序显示商品信息;
    * method = 4:显示所有售货员*/
    //显示所有商品信息(普通显示,价格升序显示,数量升序显示)
    public void showData(int method){
        try {
            Class.forName(JDBC_DRIVER);
            conn = DriverManager.getConnection(DB_URL,USER,PASS);

            //method=1,显示所有商品信息
            String sql1 = "SELECT *, (CASE WHEN gnum >= 10 THEN NULL WHEN gnum < 10 THEN \"*该商品已不足10件!\" END) 'note' FROM goods;";
            //method=2,根据价格升序显示商品信息
            String sql2 = "SELECT GName,GPrice,GNum FROM goods GROUP BY GPrice";
            //method=3,根据数量升序显示商品信息
            String sql3 = "SELECT GName,GPrice,GNum FROM goods GROUP BY GNum";
            String sql4 = "SELECT SName,SPassword FROM salesman";
            String sql = "";

            if(method == 1){
                sql = sql1;
            }else if(method == 2){
                sql = sql2;
            }else if(method == 3){
                sql = sql3;
            }else if(method == 4){
                sql = sql4;
            }else {
                System.out.println("方法调用错误!");
            }

            stmt = conn.createStatement();

            rs = stmt.executeQuery(sql);

            //普通查询比其他查询多了一个备注
            if(method == 1){
                System.out.printf("%-10s","商品名称");
                System.out.printf("%-10s","商品价格");
                System.out.printf("%-10s","商品数量");
                System.out.printf("%-10s","备注");
                System.out.println();
                while (rs.next()){
                    //int gid = rs.getInt("GID");
                    String gname = rs.getString("GName");
                    Float gprice = rs.getFloat("GPrice");
                    int gnum = rs.getInt("GNum");
                    String note = rs.getString("note");

                    System.out.printf("%-14s",gname);
                    System.out.printf("%-13.1f",gprice);
                    System.out.printf("%-10d",gnum);
                    System.out.printf("%-10s",note);
                    System.out.println();

               /* System.out.printf("商品名称"+"\t \t \t \t ");
                System.out.printf("商品价格"+"\t \t \t \t ");
                System.out.printf("商品数量"+"\t \t \t \t ");
                System.out.printf("备注"+"\t \t \t \t ");
                System.out.println();
                System.out.printf(gname +"\t \t \t \t ");
                System.out.printf(gprice+"\t \t \t \t ");
                System.out.printf(gnum+"\t \t \t \t ");
                System.out.printf(note+"\t \t \t \t ");
                System.out.println();*/
                }
            }else if(method == 4) {
                System.out.print("售货员姓名     " + "售货员密码" + "\t" + "\n");
                while (rs.next()){
                    String sname = rs.getString("SName");
                    String spass = rs.getString("spassword");
                    System.out.print(sname + "       " + spass + "\t" + "\n");
                }
            } else {
                System.out.printf("商品名称"+"\t \t \t \t ");
                System.out.printf("商品价格"+"\t \t \t \t ");
                System.out.printf("商品数量"+"\t \t \t \t ");
                System.out.println();
                while (rs.next()){
                    String gname = rs.getString("GName");
                    Float gprice = rs.getFloat("GPrice");
                    int gnum = rs.getInt("GNum");

                    System.out.printf(gname +"\t \t \t \t ");
                    System.out.printf(gprice+"\t \t \t \t ");
                    System.out.printf(gnum+"\t \t \t \t ");
                    System.out.println();
                }
            }

            stmt.close();
            conn.close();

        } catch (SQLException se){
            se.printStackTrace();
        } catch (Exception e){
            e.printStackTrace();
        }finally {
            try{
                if(stmt != null)
                    conn.close();
            }catch (SQLException se){
            }
            try {
                if(conn != null)
                    conn.close();
            }catch (SQLException se){
                se.printStackTrace();
            }
        }
    }

    //销售信息存入gsales表
    public void insertGsales(int gid, int sid, Date sdate, int snum){
        try {
            Class.forName(JDBC_DRIVER);
            conn = DriverManager.getConnection(DB_URL,USER,PASS);

            String sql = "insert into gsales(GID,SID,SDate,SNum) values(?,?,?,?) ";

            pstmt = conn.prepareStatement(sql);
            pstmt.setInt(1, gid);
            pstmt.setInt(2, sid);
            pstmt.setDate(3, sdate);
            pstmt.setInt(4, snum);
            pstmt.executeUpdate();

            /*int i = pstmt.executeUpdate();
            if(i > 0){
                System.out.println("添加成功!");
            }else {
                System.out.println("添加失败!");
            }*/

            pstmt.close();
            conn.close();

        } catch (SQLException se){
            se.printStackTrace();
        } catch (Exception e){
            e.printStackTrace();
        }finally {
            try{
                if(pstmt != null)
                    conn.close();
            }catch (SQLException se){
            }
            try {
                if(conn != null)
                    conn.close();
            }catch (SQLException se){
                se.printStackTrace();
            }
        }
    }

    //显示今日销售的商品
    public void showgoodsales(Date sdate){
        try{

            Class.forName(JDBC_DRIVER);
            conn = DriverManager.getConnection(DB_URL,USER,PASS);

            String sql = "SELECT a.gid,a.GName,a.GPrice,a.GNum, b.snum,b.SDate," +
                    "(CASE WHEN a.gnum >= 10 THEN NULL WHEN a.gnum < 10 THEN\"*该商品已不足10件!\" END) 'note' " +
                    "FROM\tgoods a right JOIN gsales b on a.gid = b.gid where b.SDate = ? ";

            pstmt = conn.prepareStatement(sql);
            pstmt.setDate(1, sdate);
            rs = pstmt.executeQuery();

            System.out.print("商品名称    "+"商品价格    "+"商品数量    "+"销量    "+"备注"+"\t"+"\n");
            while (rs.next()){
                String gname = rs.getString("gname");
                float gprice = rs.getFloat("gprice");
                int gnum = rs.getInt("gnum");
                int snum = rs.getInt("snum");
                String note = rs.getString("note");
                System.out.println(gname+"      "+gprice+"       "+gnum+"         "+snum+"       "+note);
            }
            pstmt.close();
            conn.close();

        }catch (SQLException se){
            se.printStackTrace();
        } catch (Exception e){
            e.printStackTrace();
        }finally {
            try{
                if(pstmt != null)
                    conn.close();
            }catch (SQLException se){
            }
            try {
                if(conn != null)
                    conn.close();
            }catch (SQLException se){
                se.printStackTrace();
            }
        }
    }
}

 

  • 52
    点赞
  • 204
    收藏
    觉得还不错? 一键收藏
  • 23
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值