兴元我的世界自动售货机机后台操作简单吗?

红网 - 消费维权 - 长沙望城兴元自动售货机公司生产的售货机有质量问题
| 市州直达(-------------) |
&即时滚动 >>
此页使用了内帧,需更高版本的浏览器支持。
长沙望城兴元自动售货机公司生产的售货机有质量问题
静气.123 发表于 &17:24:33『标签:&->&』
  我叫欧阳政,家住:湖南省汨罗市华苑小区  厂家(兴元自动售货机公司)销售员叫李芳,厂址:湖南省望城同心.国际工业园A8栋。  事情经过:  我在兴元自动售货机公司买了一台综合自动售货机,价格是27700元。机器放在汨罗市屈子祠学校。  在买后半个月才使用,本以为在厂家买的东西应该是好的,不会出现问题。但是在使用过程中,出现了以下4个问题。  第一个问题,机器的弹簧一共6层,下面3层的弹簧往上翘起来了。弹簧外面一格的,一些比较贵重的物品(如极品芙蓉王35元,槟榔10元等)都不见了。而且取物口里面好脏,有树枝,小木棍,铁丝和很多碎屑物之类的。  于是我打电话问销售员,那里的回答是,你的弹簧没有调整好。我当时觉得奇怪,这个好像跟弹簧的调整,没什么多大关系。按她说的,把弹簧调整好了。  后面几次过去看,弹簧还是被翘起来了,物品还是一样不见了。还是一样的问题,多次问了销售员,也是白问,解决不了。  一次偶然的机会,我看到了一个学生用木棍在取物口里搞里面的东西出来。我也尝试了一下,真的可以把东西搞出来。  之后我把下面3层的货都卸下来了,防止别人再搞东西出来。  联系了厂家,把问题都反映上去了。厂家过了几天,说要寄个挡板过来,把取物口那里增加块挡板,需要自己安装下。我跑过去安装,螺丝大些,螺丝孔小些,安装不上去。&&& 于是打电话问售后,那边说要钻孔,才可以把螺丝搞好。我实在安装不了,说要那边派技术员过来维修,经过几次催促,终于过来人了。  技术员按公司的要求把挡板安装好了,还是解决不了问题。我试了下,还是可以把里面的东西搞出来。  第二个问题,是投硬币的时候,可以多找出硬币。假如,我一共投入2个硬币,投入第1个硬币正常。投入第2个硬币在退币口出来了,但是显示器上面,还有余额1元。也是可以买东西的。每次投入钱,都多找出来。  我打电话,问了销售员,他说这个现象少,以后不会出现了。  后来又出现了这个问题,还是没有解决问题。说是要寄个硬币器,换掉才可以,也不知道行不行。  第三个问题,别人把电源关掉,再打开电源。用身体一推,退币口偶尔可以掉出来好多个硬币的现象。  问了售后,也没有解决问题。说是要寄个硬币器,换掉才可以,也不知道行不行。  第四个问题,机器上面的时间是准确的,但是电脑上面的销售时间不对。今天白天别人买的东西,但显示是前一天的晚上买的东西。  问了售后,也没有解决问题。说是要寄个硬币器,换掉才可以,也不知道行不行。  我觉得消费者在公司买东西,是信得过,觉得质量应该没问题,才过去买的。我买的不是一件小商口,而是价格比较贵的东西。要是机器质量不好的话,对我的损失是比较大的。&&   在质监局领导的协商下,厂家还是没有解决商品被盗的问题。  最终:我跟厂家协商退货,厂家同意了。但只肯赔付1000元的商品损失和机器的钱。  厂家那边的经理说,售货机上车就打钱过来。现在售货机都运出去10天左右了,厂家那边也收到货了,可迟迟没有把钱退给我。打电话给销售员,那边也不接电话了。  我家住汩罗市,机器在屈子祠学校,是乡镇。从市区跑到乡镇,来回有30公里路,跑一次要20元左右。为了这事,都跑好多次了。  第一天,销售记录上面是670多元的。第二天,别人就知道怎么搞东西出来,之后每天都只做到100元左右。我的利润有40%到50%,每天几乎都损失300元左右。  别人搞破坏,像别人断电搞硬币,取货口很脏,有木棍,搞东西出来。这个都需要我自己过来,才能解决的。下面3层,可以搞破坏。槟榔进了3800元的,保质期只有2个月,按计划是可以销售出去的,过了时间就卖不出了。  由于经常被搞破坏,取物口弄得很脏。每次过去了,都要清洗干净。货物只摆上面3层的,也不多。现在学生都不愿意买了,对机器失去了购物信心。机器比较贵,钱是我借来的,生意是因为机器缺陷造成的。对我而言,损失比较大的。  希望相关部门能维护消费都权益,使民众感到公平,正义。机器的缺陷是厂家造成的,产品质量不合格,怎么还能卖给消费者。我想退货,还有厂家赔偿我应有的损失。
:质量瑕疵属违约
构成损害要赔偿  一、厂家出售了质量不合格的机器,构成违约。  厂家与消费者之间签订了买卖合同,应当提供质量有保障的机器,厂家卖给消费者的机器质量有问题,属于违约行为。  二、厂家作为卖方,存在违约行为,应当对违约行为承担责任。  销售厂家出售了存在缺陷的机器,属于违约行为,厂家应当对自己的违约行为承担责任。  1、依据《中华人民共和国合同法》第一百一十一条的规定,质量不符合约定的,应当按照当事人的约定承担违约责任。对违约责任没有约定或者约定不明确且不能确定的,可以合理选择要求对方承担修理、更换、重作、退货、减少价款或者报酬等违约责任。  2、依照《最高人民法院关于审理买卖合同纠纷案件适用法律问题的解释》第二十三条的规定,标的物质量不符合约定,买受人有以下几种方式要求销售者承担违约责任。  (1)销售者可以依照合同法第一百一十一条的规定要求减少价款。  (2)消费者主张以符合约定的标的物和实际交付的标的物按交付时的市场价值计算差价的。  (3)若价款已经支付,消费者可以主张返还减价后多出部分价款。  三、消费者也可以追究厂家的侵权责任,但只能与违约责任选其一。  销售者因为购买产品造成了损害,可以要求具体责任人承担责任。  《中华人民共和国侵权责任法》第四十一条规定:“因产品存在缺陷造成他人损害的,生产者应当承担侵权责任。”  因此,消费者可以要求厂家承担侵权责任。覃巨石,湖南大学法学本科和法学硕士,实务经验丰富,优秀青年民商事律师; 致力于从事民商事法律服务,擅长婚姻家庭纠纷、公司法务、企业法律风险防控、劳动争议等民商事诉讼仲裁等领域。 执业理念:专业、开放、分享、同行。 办公地点:长沙市岳麓区银杉路绿地中央广场5栋28楼。 联系电话:3&&。&09:51:32
?(*)代表必填项目<TABLE cellSpacing='0' cellPadding='0' width='100%' border='0'为了能在百姓呼声进行正常的投诉和互动,请先,没有注册的请先!扫一扫,关注红网《百姓呼声》官方微信!【公告】兴元售货机手机APP后台管理系统上线
兴元无人售货机的各位合作伙伴:
& & & & 大家好:
& & & & 为更大程度的满足您对售货机的管理需求,以适应更佳的用户体验;也为了更好的适应市场需求;一款专为售货机的便捷管理而研发的手机客户端,手机APP后台管理系统,在我司科研团队的努力下,已于今天正式上线运营。
各位合作伙伴,若要安装该款APP,请与我司相关人员联系,以便我们及时为您服务。
& & & & & & & & & & & & & & & & & & & 山西兴元智能科技有限公司
& & & & & & & & & & & & & & & & & & & 日21:24 提问
java简单的自动售货机?
1 用java编写图形化界面,标出饮料的价格
可供选择的饮料可乐,芬达,红茶,绿茶,可以投入的钱只有1元和5元
3 管理员输入密码可以查看售货机余额并向售货机内加钱,用户不用输入密码可以查看商品剩余
4 用户可以选择退款
按赞数排序
增加了修改商品数量功能。
只是一个例程,自己动手根据自己的具体实际的要求对应改改就好了!不要做伸手党~~
多测试一下吧。有问题反馈给我。
登录之后显示管理员界面,如下所示:
代码如下:
import java.awt.BorderL
import java.awt.C
import java.awt.GridBagC
import java.awt.GridBagL
import java.awt.I
import java.awt.I
import java.awt.event.ActionE
import java.awt.event.ActionL
import java.awt.event.MouseA
import java.awt.event.MouseE
import java.awt.image.BufferedI
import java.io.F
import java.io.IOE
import javax.imageio.ImageIO;
import javax.swing.ImageI
import javax.swing.JB
import javax.swing.JCheckB
import javax.swing.JF
import javax.swing.JL
import javax.swing.JOptionP
import javax.swing.JP
import javax.swing.JTextF
import javax.swing.SwingU
import javax.poundB
import javax.swing.border.LineB
import javax.swing.border.TitledB
* 自动售货机 功能说明:
* &li&点击图片或图片下方的购买复选框进行商品的选择或取消选择,商品数量小于等于0时无法选择;&/li&
* &li&点击“投入一元”或“投入五元”按钮模拟投入钱操作;&/li&
* &li&点击“购买”按钮完成购买,当投入钱数少于购买商品需要的钱数时购买不成功,当系统零钱不够找零时购买不成功;&/li&
* &li&点击“退款”按钮完成退款;&/li&
* &li&点击“查看”按钮可以查看所有商品的剩余数量,显示五秒后会关闭显示;&/li&
* 点击“登录”按钮弹出登录管理员需要的密码输入框,输入ADMIN后可以进入管理员页面,管理员页面可以查看系统总余额,系统一元数量和五元数量
* ,同时可以手动更新一元和五元的数量,完成添加操作;&/li&
* &h4&注意在运行之前修改图片路径&/h4&
* @author th
public class AutoSaleMachine extends JFrame {
private static final long serialVersionUID = 2463412L;
private static final String ADMIN = "ADMIN"; // 管理员密码
// 初始化所有商品的名字
private static final String NAME_COKE = "可口可乐";
private static final String NAME_FANTA = "芬达";
private static final String NAME_RTEA = "红茶";
private static final String NAME_GTEA = "绿茶";
// 初始化所有商品的价格
private static final int PRICE_COKE = 3;
private static final int PRICE_FANTA = 2;
private static final int PRICE_RTEA = 4;
private static final int PRICE_GTEA = 5;
// 初始化所有商品的ID,没有多少用
private static final int ID_COKE = 1;
private static final int ID_FANTA = 2;
private static final int ID_RTEA = 3;
private static final int ID_GTEA = 4;
// 初始化所有商品数量
private static int COUNT_COKE = 10;
private static int COUNT_FANTA = 1;
private static int COUNT_RTEA = 30;
private static int COUNT_GTEA = 2;
private String img_coke = "photos/coke.jpg";
private String img_fanta = "photos/fanta.jpg";
private String img_rtea = "photos/rtea.jpg";
private String img_gtea = "photos/gtea.jpg";
private int cokeC
private int fantaC
private int rteaC
private int gteaC
private int userMoneyS // 用户投入的钱数
private int userOneC // 用户一元计数
private int userFiveC // 用户五元计数
private int sysMoneyS // 系统的总钱数
private int sysOneCount = 1; // 系统一元计数
private int sysFiveCount = 20; // 系统五元计数
private JTextField txt_UserM
private JButton btn_UserF
private JButton btn_UserO
private GoodPanel gp_
private GoodPanel gp_
private GoodPanel gp_
private GoodPanel gp_
private JButton btn_S
private JButton btn_B
private JButton btn_C
private JButton btn_A
private JPanel panel_A
private JL
private JTextField txt_SysS
private JLabel label_1;
private JTextField txt_SysO
private JLabel lblNewL
private JTextField txt_SysF
private JButton btn_S
private JButton btn_L
public AutoSaleMachine() {
setTitle("\u81EA\u52A9\u552E\u8D27\u673A");
GridBagLayout gridBagLayout = new GridBagLayout();
gridBagLayout.columnWidths = new int[] { 0, 0 };
gridBagLayout.rowHeights = new int[] { 0, 0, 0, 0 };
gridBagLayout.columnWeights = new double[] { 1.0, Double.MIN_VALUE };
gridBagLayout.rowWeights = new double[] { 1.0, 0.0, 0.0,
Double.MIN_VALUE };
getContentPane().setLayout(gridBagLayout);
JPanel panel_Good = new JPanel();
GridBagConstraints gbc_panel_Good = new GridBagConstraints();
gbc_panel_Good.insets = new Insets(0, 0, 5, 0);
gbc_panel_Good.fill = GridBagConstraints.BOTH;
gbc_panel_Good.gridx = 0;
gbc_panel_Good.gridy = 0;
getContentPane().add(panel_Good, gbc_panel_Good);
GridBagLayout gbl_panel_Good = new GridBagLayout();
gbl_panel_Good.columnWidths = new int[] { 230, 230, 0 };
gbl_panel_Good.rowHeights = new int[] { 0, 0, 0 };
gbl_panel_Good.columnWeights = new double[] { 0.5, 0.5,
Double.MIN_VALUE };
gbl_panel_Good.rowWeights = new double[] { 0.5, 0.5, Double.MIN_VALUE };
panel_Good.setLayout(gbl_panel_Good);
gp_coke = new GoodPanel(img_coke, PRICE_COKE, NAME_COKE, ID_COKE,
COUNT_COKE);
GridBagConstraints gbc_gp_coke = new GridBagConstraints();
gbc_gp_coke.insets = new Insets(5, 5, 5, 5);
gbc_gp_coke.fill = GridBagConstraints.BOTH;
gbc_gp_coke.gridx = 0;
gbc_gp_coke.gridy = 0;
panel_Good.add(gp_coke, gbc_gp_coke);
gp_fanta = new GoodPanel(img_fanta, PRICE_FANTA, NAME_FANTA, ID_FANTA,
COUNT_FANTA);
GridBagConstraints gbc_gp_fanta = new GridBagConstraints();
gbc_gp_fanta.insets = new Insets(5, 5, 5, 5);
gbc_gp_fanta.fill = GridBagConstraints.BOTH;
gbc_gp_fanta.gridx = 1;
gbc_gp_fanta.gridy = 0;
panel_Good.add(gp_fanta, gbc_gp_fanta);
gp_rtea = new GoodPanel(img_rtea, PRICE_RTEA, NAME_RTEA, ID_RTEA,
COUNT_RTEA);
GridBagConstraints gbc_gp_rtea = new GridBagConstraints();
gbc_gp_rtea.insets = new Insets(5, 5, 5, 5);
gbc_gp_rtea.fill = GridBagConstraints.BOTH;
gbc_gp_rtea.gridx = 0;
gbc_gp_rtea.gridy = 1;
panel_Good.add(gp_rtea, gbc_gp_rtea);
gp_gtea = new GoodPanel(img_gtea, PRICE_GTEA, NAME_GTEA, ID_GTEA,
COUNT_GTEA);
GridBagConstraints gbc_gp_gtea = new GridBagConstraints();
gbc_gp_gtea.insets = new Insets(5, 5, 5, 5);
gbc_gp_gtea.fill = GridBagConstraints.BOTH;
gbc_gp_gtea.gridx = 1;
gbc_gp_gtea.gridy = 1;
panel_Good.add(gp_gtea, gbc_gp_gtea);
JPanel panel_Btn = new JPanel();
GridBagConstraints gbc_panel_Btn = new GridBagConstraints();
gbc_panel_Btn.insets = new Insets(0, 0, 5, 0);
gbc_panel_Btn.fill = GridBagConstraints.HORIZONTAL;
gbc_panel_Btn.gridx = 0;
gbc_panel_Btn.gridy = 1;
getContentPane().add(panel_Btn, gbc_panel_Btn);
GridBagLayout gbl_panel_Btn = new GridBagLayout();
gbl_panel_Btn.columnWidths = new int[] { 0, 0, 0, 0, 0 };
gbl_panel_Btn.rowHeights = new int[] { 0, 0, 0 };
gbl_panel_Btn.columnWeights = new double[] { 0.25, 0.25, 0.25, 0.25,
Double.MIN_VALUE };
gbl_panel_Btn.rowWeights = new double[] { 0.0, 0.0, Double.MIN_VALUE };
panel_Btn.setLayout(gbl_panel_Btn);
JLabel lbl_UserMoney = new JLabel(
"\u\u91D1\u989D\uFF08\u5143\uFF09");
GridBagConstraints gbc_lbl_UserMoney = new GridBagConstraints();
gbc_lbl_UserMoney.insets = new Insets(5, 5, 5, 5);
gbc_lbl_UserMoney.gridx = 0;
gbc_lbl_UserMoney.gridy = 0;
panel_Btn.add(lbl_UserMoney, gbc_lbl_UserMoney);
txt_UserMoney = new JTextField();
txt_UserMoney.setEditable(false);
GridBagConstraints gbc_txt_UserMoney = new GridBagConstraints();
gbc_txt_UserMoney.insets = new Insets(5, 0, 5, 5);
gbc_txt_UserMoney.fill = GridBagConstraints.HORIZONTAL;
gbc_txt_UserMoney.gridx = 1;
gbc_txt_UserMoney.gridy = 0;
panel_Btn.add(txt_UserMoney, gbc_txt_UserMoney);
txt_UserMoney.setColumns(10);
btn_UserOne = new JButton("\u\u4E00\u5143");
GridBagConstraints gbc_btn_UserOne = new GridBagConstraints();
gbc_btn_UserOne.insets = new Insets(5, 0, 5, 5);
gbc_btn_UserOne.gridx = 2;
gbc_btn_UserOne.gridy = 0;
panel_Btn.add(btn_UserOne, gbc_btn_UserOne);
btn_UserOne.addActionListener(handler);
btn_Show = new JButton("\u67E5\u770B");
GridBagConstraints gbc_btn_Show = new GridBagConstraints();
gbc_btn_Show.insets = new Insets(0, 0, 5, 5);
gbc_btn_Show.gridx = 0;
gbc_btn_Show.gridy = 1;
panel_Btn.add(btn_Show, gbc_btn_Show);
btn_Show.addActionListener(handler);
btn_Buy = new JButton("\u8D2D\u4E70");
GridBagConstraints gbc_btn_Buy = new GridBagConstraints();
gbc_btn_Buy.insets = new Insets(0, 0, 5, 5);
gbc_btn_Buy.gridx = 1;
gbc_btn_Buy.gridy = 1;
panel_Btn.add(btn_Buy, gbc_btn_Buy);
btn_Buy.addActionListener(handler);
btn_UserFive = new JButton("\u\u4E94\u5143");
GridBagConstraints gbc_btn_UserFive = new GridBagConstraints();
gbc_btn_UserFive.insets = new Insets(5, 0, 5, 0);
gbc_btn_UserFive.gridx = 3;
gbc_btn_UserFive.gridy = 0;
panel_Btn.add(btn_UserFive, gbc_btn_UserFive);
btn_UserFive.addActionListener(handler);
btn_Cancle = new JButton("\uE");
GridBagConstraints gbc_btn_Cancle = new GridBagConstraints();
gbc_btn_Cancle.insets = new Insets(0, 0, 5, 5);
gbc_btn_Cancle.gridx = 2;
gbc_btn_Cancle.gridy = 1;
panel_Btn.add(btn_Cancle, gbc_btn_Cancle);
btn_Cancle.addActionListener(handler);
btn_Admin = new JButton("\u767B\u5F55");
GridBagConstraints gbc_btn_Admin = new GridBagConstraints();
gbc_btn_Admin.insets = new Insets(0, 0, 5, 0);
gbc_btn_Admin.gridx = 3;
gbc_btn_Admin.gridy = 1;
panel_Btn.add(btn_Admin, gbc_btn_Admin);
btn_Admin.addActionListener(handler);
panel_Admin = new JPanel();
panel_Admin.setBorder(new TitledBorder(null,
"\u7BA1\u\u754C\u9762", TitledBorder.LEADING,
TitledBorder.TOP, null, null));
GridBagConstraints gbc_panel_Admin = new GridBagConstraints();
gbc_panel_Admin.fill = GridBagConstraints.BOTH;
gbc_panel_Admin.gridx = 0;
gbc_panel_Admin.gridy = 2;
getContentPane().add(panel_Admin, gbc_panel_Admin);
GridBagLayout gbl_panel_Admin = new GridBagLayout();
gbl_panel_Admin.columnWidths = new int[] { 130, 230, 0 };
gbl_panel_Admin.rowHeights = new int[] { 0, 0, 0, 0, 0 };
gbl_panel_Admin.columnWeights = new double[] { 0.0, 0.5,
Double.MIN_VALUE };
gbl_panel_Admin.rowWeights = new double[] { 0.0, 0.0, 0.0, 0.0,
Double.MIN_VALUE };
panel_Admin.setLayout(gbl_panel_Admin);
label = new JLabel("\u7CFB\u7EDF\u603B\u4F59\u989D\uFF1A");
GridBagConstraints gbc_label = new GridBagConstraints();
gbc_label.insets = new Insets(0, 0, 5, 5);
gbc_label.anchor = GridBagConstraints.EAST;
gbc_label.gridx = 0;
gbc_label.gridy = 0;
panel_Admin.add(label, gbc_label);
txt_SysSum = new JTextField();
txt_SysSum.setEditable(false);
GridBagConstraints gbc_txt_SysSum = new GridBagConstraints();
gbc_txt_SysSum.insets = new Insets(0, 0, 5, 0);
gbc_txt_SysSum.fill = GridBagConstraints.HORIZONTAL;
gbc_txt_SysSum.gridx = 1;
gbc_txt_SysSum.gridy = 0;
panel_Admin.add(txt_SysSum, gbc_txt_SysSum);
txt_SysSum.setColumns(10);
label_1 = new JLabel("\u7CFB\u7EDF\u4E00\u\u91CF\uFF1A");
GridBagConstraints gbc_label_1 = new GridBagConstraints();
gbc_label_1.anchor = GridBagConstraints.EAST;
gbc_label_1.insets = new Insets(0, 0, 5, 5);
gbc_label_1.gridx = 0;
gbc_label_1.gridy = 1;
panel_Admin.add(label_1, gbc_label_1);
txt_SysOne = new JTextField();
GridBagConstraints gbc_txt_SysOne = new GridBagConstraints();
gbc_txt_SysOne.insets = new Insets(0, 0, 5, 0);
gbc_txt_SysOne.fill = GridBagConstraints.HORIZONTAL;
gbc_txt_SysOne.gridx = 1;
gbc_txt_SysOne.gridy = 1;
txt_SysOne.setToolTipText("可以输入修改的数量,点击保存按钮完成系统中一元数量的修改。");
panel_Admin.add(txt_SysOne, gbc_txt_SysOne);
txt_SysOne.setColumns(10);
lblNewLabel = new JLabel("\u7CFB\u7EDF\u4E94\u\u91CF\uFF1A");
GridBagConstraints gbc_lblNewLabel = new GridBagConstraints();
gbc_lblNewLabel.anchor = GridBagConstraints.EAST;
gbc_lblNewLabel.insets = new Insets(0, 0, 5, 5);
gbc_lblNewLabel.gridx = 0;
gbc_lblNewLabel.gridy = 2;
panel_Admin.add(lblNewLabel, gbc_lblNewLabel);
txt_SysFive = new JTextField();
GridBagConstraints gbc_txt_SysFive = new GridBagConstraints();
gbc_txt_SysFive.insets = new Insets(0, 0, 5, 0);
gbc_txt_SysFive.fill = GridBagConstraints.HORIZONTAL;
gbc_txt_SysFive.gridx = 1;
gbc_txt_SysFive.gridy = 2;
txt_SysFive.setToolTipText("可以输入修改的数量,点击保存按钮完成系统中一元数量的修改。");
panel_Admin.add(txt_SysFive, gbc_txt_SysFive);
txt_SysFive.setColumns(10);
btn_Save = new JButton("\u4FDD\u5B58");
GridBagConstraints gbc_btn_Save = new GridBagConstraints();
gbc_btn_Save.insets = new Insets(0, 0, 0, 5);
gbc_btn_Save.gridx = 0;
gbc_btn_Save.gridy = 3;
panel_Admin.add(btn_Save, gbc_btn_Save);
btn_Save.addActionListener(handler);
btn_Logout = new JButton("\u9000\u51FA");
GridBagConstraints gbc_btn_Logout = new GridBagConstraints();
gbc_btn_Logout.gridx = 1;
gbc_btn_Logout.gridy = 3;
panel_Admin.add(btn_Logout, gbc_btn_Logout);
btn_Logout.addActionListener(handler);
panel_Admin.setVisible(false);
* 响应按钮事件
private ActionListener handler = new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btn_UserOne) {
userOneCount++;
updateUserMoney();
} else if (e.getSource() == btn_UserFive) {
userFiveCount++;
updateUserMoney();
} else if (e.getSource() == btn_Buy) {
// 获取购买的商品总价,如果总价大于输入的钱数,提示用户继续投入钱
int needSum = getGoodSum();
if (needSum & userMoneySum) {
JOptionPane.showMessageDialog(null, "投入的金额小于需要购买商品的总价,请再投入"
+ (needSum - userMoneySum) + "元或取消一些商品。");
reinitGoodCount();
// 计算需要找零的钱数
int remain = userMoneySum - needS
int remainFiveCount = remain / 5;
int remainOneCount = remain % 5;
// 修改系统钱数和计数
int sysRemain = sysOneCount + userOneCount - remainOneC
if (sysRemain & 0) {
JOptionPane.showMessageDialog(null,
"抱歉,系统中没有足够的零钱,请修改够买商品或退款后使用零钱购买。");
sysOneCount = sysR
sysFiveCount = sysFiveCount + userFiveCount
- remainFiveC
sysMoneySum = sysOneCount + sysFiveCount * 5;
// 修改商品的总数
updateGoodCount();
// 输出购买的商品和找零的钱数
String result = getBuyResult(remain);
JOptionPane.showMessageDialog(null, result);
// 设置初始状态
pnlAdminUpdate();
} else if (e.getSource() == btn_Cancle) {
updateUserMoney();
if (userMoneySum & 0) {
String remainResult = getRemianResult();
JOptionPane.showMessageDialog(null, remainResult);
JOptionPane.showMessageDialog(null, "您投入的钱数为0,无法进行退款操作。");
} else if (e.getSource() == btn_Show) {
// 显示剩余商品数目
showGoodCount();
} else if (e.getSource() == btn_Admin) {
String input = JOptionPane.showInputDialog("请输入管理员密码,区分大小写。");
if (ADMIN.equals(input)) {
// 登录成功,显示管理员面板
pnlAdminUpdate();
panel_Admin.setVisible(true);
repaint();
JOptionPane.showMessageDialog(null, "您输入的密码错误,无法进入管理员页面。");
} else if (e.getSource() == btn_Save) {
String oneStr = txt_SysOne.getText();
int one = Integer.parseInt(oneStr);
String fiveStr = txt_SysOne.getText();
int five = Integer.parseInt(fiveStr);
sysOneCount =
sysFiveCount =
sysMoneySum = sysOneCount + sysFiveCount * 5;
JOptionPane.showMessageDialog(null, "修改成功,系统中的总余额为:"
+ sysMoneySum + "元。");
txt_SysSum.setText(sysMoneySum + "");
} else if (e.getSource() == btn_Logout) {
panel_Admin.setVisible(false);
repaint();
* 更新管理员面板信息
private void pnlAdminUpdate() {
txt_SysOne.setText(sysOneCount + "");
txt_SysFive.setText(sysFiveCount + "");
txt_SysSum.setText((sysOneCount + sysFiveCount * 5) + "");
* 显示商品数量
protected void showGoodCount() {
gp_coke.showRemain();
gp_fanta.showRemain();
gp_rtea.showRemain();
gp_gtea.showRemain();
* 获取退款结果
protected String getRemianResult() {
StringBuffer sb = new StringBuffer();
sb.append("退款成功。您取回");
if (userOneCount & 0) {
sb.append(userOneCount).append("个一元硬币;");
if (userFiveCount & 0) {
sb.append(userFiveCount).append("张五元纸币;");
return sb.toString();
* 获取购买的商品描述
* @param remain
protected String getBuyResult(int remain) {
StringBuffer sb = new StringBuffer();
sb.append("购买成功。您购买了");
if (cokeCount & 0) {
sb.append(cokeCount).append("瓶").append(NAME_COKE).append(";");
if (fantaCount & 0) {
sb.append(fantaCount).append("瓶").append(NAME_FANTA).append(";");
if (rteaCount & 0) {
sb.append(rteaCount).append("瓶").append(NAME_RTEA).append(";");
if (gteaCount & 0) {
sb.append(gteaCount).append("瓶").append(NAME_GTEA).append(";");
if (remain & 0) {
sb.append("并找您" + remain + "元。");
return sb.toString();
* 更新商品数量
protected void updateGoodCount() {
if (cokeCount & 0) {
COUNT_COKE -= cokeC
gp_coke.setGoodCount(COUNT_COKE);
gp_coke.reInit();
if (fantaCount & 0) {
COUNT_FANTA -= fantaC
gp_fanta.setGoodCount(COUNT_FANTA);
gp_fanta.reInit();
if (rteaCount & 0) {
COUNT_RTEA -= rteaC
gp_rtea.setGoodCount(COUNT_RTEA);
gp_rtea.reInit();
if (gteaCount & 0) {
COUNT_GTEA -= gteaC
gp_gtea.setGoodCount(COUNT_GTEA);
gp_gtea.reInit();
* 设置商品选中数为0,并初始化投入钱数等于0;
protected void reinit() {
reinitGoodCount();
userOneCount = 0;
userFiveCount = 0;
userMoneySum = 0;
txt_UserMoney.setText(0 + "");
* 重新设置商品的选择数量为0
protected void reinitGoodCount() {
cokeCount = 0;
fantaCount = 0;
rteaCount = 0;
gteaCount = 0;
* 获取购买商品需要的总钱数
protected int getGoodSum() {
int sum = 0;
if (gp_coke.isSelected()) {
cokeCount++;
sum += cokeCount * PRICE_COKE;
if (gp_fanta.isSelected()) {
fantaCount++;
sum += fantaCount * PRICE_FANTA;
if (gp_rtea.isSelected()) {
rteaCount++;
sum += rteaCount * PRICE_RTEA;
if (gp_gtea.isSelected()) {
gteaCount++;
sum += gteaCount * PRICE_GTEA;
* 更新用户投入的钱数
protected void updateUserMoney() {
userMoneySum = (userOneCount + userFiveCount * 5);
txt_UserMoney.setText(userMoneySum + "");
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
AutoSaleMachine asm = new AutoSaleMachine();
asm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
asm.setSize(500, 600);
asm.setResizable(false);
asm.setLocationRelativeTo(null);
asm.setVisible(true);
* @author th 商品面板,包含商品的图片和名称,以及是否选中的复选框
class GoodPanel extends JPanel {
private static final long serialVersionUID = 2746083L;
private static final String MONEY_UNIT = "元";
private static final String TIP = "单击图片可以选择购买或者取消购买";
private String picP
private JTextField txt_P
private JLabel lbl_P
private JCheckBox cbox_S
private int goodId;
private int goodC
private JLabel lbl_R
private JTextField txt_R
GoodPanel(String picPath, int price, String name, int goodId, int goodCount) {
this.picPath = picP
this.price =
this.name =
this.goodId = goodId;
this.goodCount = goodC
this.setBorder(new CompoundBorder(null, new LineBorder(new Color(255,
0, 0), 2)));
this.setLayout(new BorderLayout(0, 0));
lbl_Pic = new JLabel();
this.add(lbl_Pic, BorderLayout.CENTER);
lbl_Pic.setToolTipText(TIP);
// 单击图片可以选择购买或者取消购买;
lbl_Pic.addMouseListener(mouseAdapter);
JPanel panel_Prop = new JPanel();
this.add(panel_Prop, BorderLayout.SOUTH);
JLabel lbl_Name = new JLabel(this.name);
panel_Prop.add(lbl_Name);
txt_Price = new JTextField();
txt_Price.setEditable(false);
panel_Prop.add(txt_Price);
txt_Price.setColumns(2);
txt_Price.setText(this.price + MONEY_UNIT);
cbox_Select = new JCheckBox("\u8D2D\u4E70");
if (this.goodCount &= 0) {
cbox_Select.setSelected(false);
panel_Prop.add(cbox_Select);
lbl_Remain = new JLabel("剩余:");
panel_Prop.add(lbl_Remain);
txt_Remain = new JTextField();
txt_Remain.setEditable(false);
panel_Prop.add(txt_Remain);
txt_Remain.setColumns(2);
lbl_Remain.setVisible(false);
txt_Remain.setVisible(false);
initPic();
* 图片的响应事件
MouseAdapter mouseAdapter = new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (goodCount & 0)
cbox_Select.setSelected(!cbox_Select.isSelected());
* 设置商品数量
* @param goodCount
public void setGoodCount(int goodCount) {
this.goodCount = goodC
if (this.goodCount &= 0) {
cbox_Select.setEnabled(false);
* 初始化显示的商品图片
private void initPic() {
if (this.picPath == null) {
new Thread() {
public void run() {
int width = getWidth();
while (width == 0) {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
width = getWidth();
int height = getHeight();
File input = new File(picPath);
if (!input.exists()) {
BufferedImage image = ImageIO.read(input);
ImageIcon bgIcon = new ImageIcon(image.getScaledInstance(
width, height, Image.SCALE_DEFAULT));
lbl_Pic.setIcon(bgIcon);
repaint();
} catch (IOException e) {
e.printStackTrace();
}.start();
* 是否购买该商品
public boolean isSelected() {
return cbox_Select.isSelected();
* 获取商品编号
public int getGoodId() {
return goodId;
* 购买完毕后需要重置
public void reInit() {
cbox_Select.setSelected(false);
* 显示商品余量
public void showRemain() {
new Thread() {
public void run() {
lbl_Remain.setVisible(true);
txt_Remain.setText(goodCount + "");
txt_Remain.setVisible(true);
repaint();
Thread.sleep(5000);
lbl_Remain.setVisible(false);
txt_Remain.setVisible(false);
repaint();
} catch (InterruptedException e) {
e.printStackTrace();
}.start();
对不起,这个我也看到了,可视化界面过于简单,不能总是使用提示窗口,并且提示窗口点击叉号后,还会报错
我也不懂。。。。。。。。。。。。。。。
其他相关推荐}

我要回帖

更多关于 我的世界自动售货机 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信