java实现可视化界面肯德基(KFC)点餐系统代码实例
一、题目
使用java实现可视化kfc点餐系统。
二、题目分析
根据java中的用户图形界面包中的各个类设计界面。利用jframe提供最大的容器,然后设计各个面板,各个面板中添加所需要的组件,本程序中需要对按钮组件添加监听者,当按下按钮之后做出相应的相应。
对于程序运行显示的第一个界面由一个继承于jframe的类run类在构造函数中设计并通过函数setvisible(true)显示在界面上,界面上有一个按钮“点餐饮”,当此按钮按下时触发响应函数,进入点餐界面,然后通过点击点餐界面各食物的按钮“+”“-”触发响应改变用户类client的对象的相对应变量的数量并且刷新界面,此界面还有食物种类的四个按钮“汉堡”“小吃”“饮品”“套餐”,同样点击按钮触发响应刷新出对应的界面,之后设计了两种付款模式,一种是现金付款,使用文本框组件类jtextfield产生组件,在此组件中输入你的支付金额,另外是扫二维码支付,只需一个标签组件jlabel中加入图片即可。
三、程序代码
由于初次使用java设计可视化界面的程序,没有设计好导致源代码繁琐,以下列出部分代码
主函数类:
import java.awt.*; import java.io.serializable; import javax.swing.jframe; public class run implements serializable{ static string title = "kfc"; static beginning begin = new beginning(title); static order order=new order(title); static jframe[] frames= {begin,order}; static saoma sao=new saoma("扫码支付"); //二维码窗口 static xiadan xiadan=new xiadan("订单信息"); //订单信息窗口 public static void main(string args[]) throws interruptedexception { for (int index = 0; index < frames.length; index++) { frames[index].setdefaultcloseoperation(jframe.exit_on_close); frames[index].setpreferredsize(new dimension(1000,900)); screencentre(frames[index]); frames[index].pack(); } frames[0].setvisible(true); } //使框架显示在屏幕* public static void screencentre(jframe frame) { toolkit kit = toolkit.getdefaulttoolkit(); // 定义工具包 dimension screensize = kit.getscreensize(); // 获取屏幕的尺寸 int screenwidth = screensize.width; // 获取屏幕的宽 int screenheight = screensize.height; // 获取屏幕的高 frame.setlocation(screenwidth/4, screenheight/15);// 设置窗口居中显示 } }
程序运行第一个界面:
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class beginning extends jframe{ jpanel panel = new jpanel(); jlabel title = new jlabel("欢迎光临kfc",jlabel.center); //标签组件 jlabel im = new jlabel(new imageicon("images/1.jpg")); //标签组件 jbutton order=new jbutton(new imageicon("images/4.png")); //按钮组件 public beginning(string name) { super(name); setlayout(new gridlayout(4,1)); //设置布局 title.setfont(new font("kfc",font.bold,50) ); //设置字体 add(title); //添加组件 add(im); order.addactionlistener(new beginlis()); //添加监听者 order.setborderpainted(false); //去边界 jpanel jpanel2=new jpanel(); jpanel2.setlayout(new gridlayout(1,3)); jpanel2.add(new jpanel()); jpanel2.add(order); jpanel2.add(new jpanel()); add(jpanel2); //panel.add(title); //getcontentpane().add(panel); } private class beginlis implements actionlistener { public void actionperformed(actionevent e) { setvisible(false); run.frames[1].setvisible(true); } } }
二维码支付窗口:
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class saoma extends jframe{ jpanel jpanel=new jpanel(); jbutton buttonwancheng=new jbutton("支付完成"); public saoma(string name) { super(name); jlabel jlabel=new jlabel(new imageicon("images/saoma.png")); jpanel.add(jlabel); this.setsize(700, 700); this.setlocation(300, 200); this.add(jpanel); this.add(buttonwancheng,borderlayout.south); buttonwancheng.addactionlistener(e->{ run.sao.setvisible(false); run.xiadan.setvisible(false); run.frames[1].setvisible(false); system.exit(-1); }); } }
现金支付窗口:
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class xianjin extends jframe{ jpanel jpanel=new jpanel(); jlabel jlabel=new jlabel("掏出整钱"); jtextfield in=new jtextfield(20); jbutton buttonzhifu=new jbutton("支付"); public xianjin(string name) { super(name); this.setlayout(new gridlayout(2,1)); this.setsize(700, 450); this.setlocation(300, 200); this.setvisible(true); this.setdefaultcloseoperation(jframe.hide_on_close); jtextarea show=new jtextarea(24,20); jscrollpane scrollpane=new jscrollpane(show); show.seteditable(false); show.append("您需要支付"+run.order.client1.num+"元"+'\n'+"请在下方输入框输入金钱进行支付以及找零:\n"); this.add(scrollpane); jpanel.add(jlabel); jpanel.add(in); jpanel.add(buttonzhifu); this.add(jpanel); buttonzhifu.addactionlistener(e->{ string content=in.gettext(); float jinqian=integer.parseint(content); float zhaoling=jinqian-run.order.client1.num; if(jinqian<run.order.client1.num) { show.append("您给的钱不够支付,请重新支付\n"); } else show.append("您支付了"+jinqian+"元,找您"+zhaoling+"元\n"+"本次订单完成\n"); in.settext(""); }); } }
下单窗口:
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class xiadan extends jframe{ jbutton buttonxianjinzhifu=new jbutton(new imageicon("images/xianjinzhifu.png")); jbutton buttonzhifubaosaoma=new jbutton(new imageicon("images/zhifubaosaoma.png")); jtextarea show=new jtextarea(24,20); public xiadan(string name) { super(name); } public void s() { this.setlayout(new gridlayout(2,1)); this.setsize(700, 450); this.setlocation(300, 200); this.setdefaultcloseoperation(jframe.hide_on_close); jscrollpane scrollpane=new jscrollpane(show); show.seteditable(false); }
四、测试以及运行结果
程序运行界面:
点击“点餐饮”:
点击各食物的“+”:
点击“立即购买”:
点击“现金支付”并在文本框输入30后点击“支付”:
点击“扫码支付”:
五、总结
初次使用java设计可视化程序,对用户图形界面方面的只是很是陌生,本应该结合设计模式使得程序代码结构更加清晰,由于第一次接触图形界面以及设计模式应用实践很少,这次程序设计没有结合好设计模式,这次程序代码也相对很是糙,在写的过程中遇到各种问题,图形界面设计总是不在理想状态,慢慢的上网查资料以及查阅书本大多数得到了解决,只不过程序还存在一些小问题,一点点积累经验吧。
有了这次实践的经验,下次一定会做出稍漂亮的界面以及设计更加结构清晰的代码。
以上所述是小编给大家介绍的java肯德基点餐系统详解整合,希望对大家有所帮助