商品管理系统(多线程商品销售)

该代码示例展示了使用Java编程实现的一个商品管理系统,包括商品信息展示、购买、查询等功能。同时,它还包括一个基于多线程的售票服务,模拟了两个售票窗口同时销售同一商品的过程。系统需要输入密码验证,并提供了文件操作来存储和读取商品信息。

com.attribute类(新增)

package com.attribute;

public class Tickets { private int num;

    public  Tickets() {
    };

    public  Tickets(int num){
        this.num=num;
    };
    public int getNum(){
        return num;
    }
    public void setNum(int num){
        this.num=num;
    }
}

mainclass类(新增)

package mainclass;

import com.attribute.Goodsinfor;
import com.attribute.Tickets;
import operate.*;

import javax.swing.*;
import java.io.*;
import java.util.Scanner;

public class Salesperson extends Person implements InterF{
    public void use()
    {
        String m,m1,m2;
        int md=0,md1=0,md2=0;
        Goodsinfor g1 = new Goodsinfor(1, "可口可乐");
        Goodsinfor g2 = new Goodsinfor(2, "雪碧");
        Goodsinfor g3 = new Goodsinfor(3, "冰红茶");
        Goodsinfor g4 = new Goodsinfor(4, "牛奶");
        Goodsinfor g5 = new Goodsinfor(5, "零食");
        String content[]={"1.展示商品","2.购买商品","3.查询商品","4.增加商品","5.删除商品","6.更改商品","7.商品销售情况","0.退出"};
        while (md<=0)
        {
            m = JOptionPane.showInputDialog(null, "请输入密码");
            switch (m)
            {
                case "1":
                    md = 1;
                    break;
                default:
                    md=0;
                    System.out.println("密码错误,请重新输入");
            }
        }
        File file=new File("D:/function.txt");
        try{
            FileWriter fw=new FileWriter(file);
            BufferedWriter bw=new BufferedWriter(fw);
            for(int j=0;j<content.length;j++){
                bw.write(content[j]);
                bw.newLine();
            }
            bw.close();
            bw.close();
        }catch (IOException e){
            e.printStackTrace();
        }
        do {
            try{
                FileReader fr=new FileReader(file);
                BufferedReader br=new BufferedReader(fr);
                String tmp=null;
                int i=1;
                while ((tmp=br.readLine())!=null){
                    System.out.println(tmp);
                    i++;
                }
                br.close();
                br.close();
            }catch (IOException e){
                e.printStackTrace();
            }
            m1 = JOptionPane.showInputDialog(null, "请输入命令");
            switch (m1) {
                case "0":
                    System.exit(0);
                    break;
                case "1":
                    md1 = 1;
                    break;
                case "2":
                    md1 = 2;
                    break;
                case "3":
                    md1=3;
                    break;
                case "4":
                    md1=4;
                    break;
                case "5":
                    md1=5;
                    break;
                case "6":
                    md1=6;
                case "7":
                    md1=7;
                    break;
            }
            if (md1 == 1) {
                InterShow show=(Goodsinfor g)->{
                    System.out.println("Goods num="+g.getNum()+",name="+g.getName()+",price="+g.getPrice());
                };
                show.show(g1);
                show.show(g2);
                show.show(g3);
                show.show(g4);
                show.show(g5);
            }
            if (md1 == 2) {
                Buy buy = new Buy();
                System.out.println("请输入编号,名称");
                Scanner in = new Scanner(System.in);
                int num = in.nextInt();
                String name = in.nextLine();
                System.out.println("请输入数量");
                int nums = in.nextInt();
                Goodsinfor g = new Goodsinfor(num, name);
                buy.sellMoney(g, nums);
                double counmoney = buy.getMoney();
                System.out.println("总价是:" + counmoney);
            }
            if(md1==3){
                Find f=new Find();
                f.find();
            }
            if(md1==4){
                Increase in=new Increase();
                in.increase();
            }
            if(md1==5){
                Delete d=new Delete();
                d.delete();
            }
            if(md1==6){
                Change c=new Change();
                c.change();
            }
            if(md1==7){
                Tickets tickets=new Tickets(10);
                Saleservice st=new Saleservice(tickets);
                new Thread(()->{
                    while (tickets.getNum()>0)
                        st.sale();
                },"窗口1").start();
                new Thread(()->{
                    while (tickets.getNum()>0)
                        st.sale();
                },"窗口2").start();
            }
            m2= JOptionPane.showInputDialog(null,"输入y继续,n退出");
            switch (m2){
                case "y":
                    md2=1;
                    break;
                case "n":
                    md2=-1;
                    break;
            }
        }while (md2>0);
        System.exit(0);
    }
}

operate类(新增)

package operate;

import com.attribute.Tickets;

public class Saleservice implements TicketSale{
    private Tickets tickets;
    public Saleservice(){

    };
    public Saleservice(Tickets tickets){
        this.tickets=tickets;
    }
    public synchronized void sale(){
        int num=tickets.getNum();
        if(num>0){
            System.out.println(Thread.currentThread().getName()+"正在出售第"+num+"件商品,"+"还剩"+--num+"件商品");
        }
        tickets.setNum(num);
    }
}

接口(新增)

package operate;

public interface TicketSale {
    public void sale();
}

多线程是指一个程序包含多个执行流,是实现并发机制的有效手段。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值