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();
}
多线程是指一个程序包含多个执行流,是实现并发机制的有效手段。
该代码示例展示了使用Java编程实现的一个商品管理系统,包括商品信息展示、购买、查询等功能。同时,它还包括一个基于多线程的售票服务,模拟了两个售票窗口同时销售同一商品的过程。系统需要输入密码验证,并提供了文件操作来存储和读取商品信息。
5229

被折叠的 条评论
为什么被折叠?



