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肯德基点餐系统详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

时间: 2019-05-13

java实现简单的学生信息管理系统代码实例

java实现简单的学生信息管理系统(无界面) 学生类实体: package com.edu.imau.wcy; public class Stu { private String stuNum;//学号 private String name;//姓名 private String gender;//性别 private int age;//年龄 private int score;//分数 public Stu() { super(); } public String getStuNum()

java实现酒店管理系统

本文实例为大家分享了java实现酒店管理系统的具体代码,供大家参考,具体内容如下 编写环境:MyEclipse2014+sql server2014 系统功能: 1.登录验证 2.房态统计显示 3.预定登记并入库 4.入住登记并入库 5.换房登记并入库 6.客人信息查询 7.退房并入库 运行界面如下: =====登录界面====== =====主界面===== =====为每个房间设置弹出菜单====== =====登记界面====== =====换房界面===== =====退房界面=====

Java按时间梯度实现异步回调接口的方法

1. 背景 在业务处理完之后,需要调用其他系统的接口,将相应的处理结果通知给对方,若是同步请求,假如调用的系统出现异常或是宕机等事件,会导致自身业务受到影响,事务会一直阻塞,数据库连接不够用等异常现象,可以通过异步回调来防止阻塞,但异步的情况还存在一个问题,若调用一次不成功的话接下来怎么处理?这个地方就需要按时间梯度回调,比如前期按10s间隔回调,回调3次,若不成功按30s回调,回调2次,再不成功按分钟回调,依次类推--相当于给了对方系统恢复的时间,不可能一直处于异常或宕机等异常状态,若是再不成

Java多线程之火车售票系统

Java多线程之火车售票(Thread和Runnable的区别) java中实现多线程的方式有两种 继承Thread类 实现Runnable接口 继承了Thread类的类,使用对象.start()启动线程 实现了Runnable类的类,使用new Thread(new Runnable的实现类()).start()启动 下面有个经典例子,很适合用实现Runnable接口的类去实现. 火车售票问题简单分析: 1.票数是共用的,不能将一张票买多次.  2.同时有多个售票点在出售车票,即有多个线程存在

Javacript实现颜色梯度变化和渐变的效果代码

对于本站的导航栏,想做点什么.所以,选择了用js对导航栏的颜色做了梯度的变化处理. 起初,觉得用opacity属性(透明度)来改变颜色的梯度变化.不过,这样会出现一个问题. 每一个导航标签用的是[li],当鼠标浮动到标签上时,通过onmouseover()立即改变[li]的className,并用setInterval()来使其opacity(透明度)由0变到1.不过,当鼠标离开时,对于[li]标签的颜色恢复的处理貌似麻烦了许多.所以,很快就放弃了这个做法,换种思路. 到百度上一搜,看到了一篇很

基于Java的电梯系统实现过程

一.思路 写一个简单的电梯系统,首先根据老师提供的需求,写一下基础思路: 电梯有最高层和最低层,输入数字选择正确楼层数 输入数字大于当前楼层,则为上行:小于当前楼层,则为下行 每次输入数字的时候,需要对同为上行的数字或者同为下行的数字,进行排序 所输入的目标楼层用集合存放,循环最低层到最高层,如果当前层在集合中存在,显示开门,若还有目标楼层,则关门,继续到下一目标楼层. 当选择一个目标楼层,会生成随机重量记录在目标楼层,上行用原来重量加上目标楼层重量,下行则用原来重量减去目标楼层重量 二.实现

java实现学生信息管理系统

JAVA简单写学生信息管理系统,实现学生信息的输入.查询.修改.删除操作 package Week; import jdk.internal.util.xml.impl.Input; import java.util.HashSet; import java.util.Scanner; public class StudentMs { Scanner sc = new Scanner(System.in); public int getID() { return ID; } public Str

Java吃货联盟订餐系统代码实例

本文实例为大家分享了Java订餐系统的具体代码,供大家参考,具体内容如下 package cn.practice1200; import java.util.Scanner; public class Eater_Alliance { /** * 吃货联盟订餐系统 * * @author QCD * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner

Java编程使用UDP建立群聊系统代码实例

相关java类介绍 DatagramSocket public class DatagramSocket extends Object 此类表示用来发送和接收数据报包的套接字. 数据报套接字是包投递服务的发送或接收点.每个在数据报套接字上发送或接收的包都是单独编址和路由的.从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达. 在DatagramSocket上总是启用UDP广播发送.为了接收广播包,应该将DatagramSocket绑定到通配符地址,在某些实现中,将Dat

Java实现电影院订票系统代码

程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势...但是由于时间原因,小编并未在代码中添加可视化图形界面,有兴趣的朋友可自行添加. 可参阅:Java图形化界面设计之容器(JFrame)详解 演示结果: 下面是具体实现代码: public class Test { public static void main(String[] args) { BookTicket bookTicket = new BookTicket(); bookTicket.init()

java中stack(栈)的使用代码实例

java中stack类继承于vector,其特性为后进先出(lastinfirstout). 入栈和出栈实例图: 实例图的java代码实例: package com.lanhuigu.java.ListTest; import java.util.Stack; public class StackTest { public static void main(String[] args) { Stack<String> staffs = new Stack<String>(); //

Java中io流解析及代码实例

IO流 Java中IO流分为两种,字节流和字符流,顾名思义字节流就是按照字节来读取和写入的,字符刘是按照字符来存取的:常用的文件读取用的就是字符流,在网络通信里面用的就是字节流 下面这张图是Java中IO流的总体框架: 字节流 Java中字节流一般都是以stream结尾的,输入的字节流叫InputStream,输出字节流叫OutputStream;InputStream和OutputStream是表示自己输入/输出的所有类的超类,是抽象类(abstract) 常用的字节流有: 1.FileInp

java获取当前时间并格式化代码实例

这篇文章主要介绍了java获取当前时间并格式化代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 private static final DateTimeFormatter FORMAT_FOURTEEN = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); private static final DateTimeFormatter FORMAT_DATE = DateTimeFor

java一个数据整理的方法代码实例

这篇文章主要介绍了java一个数据整理的方法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 import java.sql.*; public class Main { //本地数据库 // static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; // static final String DB_URL = "jdbc:mysql://127.0.0.1

java 对象参数去空格方式代码实例

这篇文章主要介绍了java 对象参数去空格方式代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 import java.lang.reflect.Field; import java.lang.reflect.Method; public class Test { /** * 去掉bean中所有属性为字符串的前后空格 * * @param bean * @throws Exception */ public static void bea

Java数组集合的深度复制代码实例

这篇文章主要介绍了Java数组集合的深度复制代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Java当我们想要对一个数组进行一些操作,同时又不希望对原来的数组数据有影响的时候,使用引用是不能满足我们的需求的, 这时候我们可以使用System.arraycopy()方法实现,对用这两种复制方式,我们习惯称前者为浅复制,后者为深复制.深复制的 实现方法如下: public static void arraycopyTest() { int[

Vue请求java服务端并返回数据代码实例

这篇文章主要介绍了Vue请求java服务端并返回数据代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 最近在自学vue怎么与java进行数据交互.其实axios还是挺简单的,与ajax请求几乎一样,无外乎也就是要解决下跨域的问题. 废话不多说了,直接贴代码,一看就懂! //向springmvc Controller发起请求,传递一个参数 get请求(带参数传递) axios.get('http://127.0.0.1:8088/inas/