KFC系统

一.题目要求

同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能:

1.正常餐品结算和找零。

2.基本套餐结算和找零。

3.使用优惠劵购买餐品结算和找零。

4.可在一定时间段参与店内活动(自行设计或参考官网信息)。

5.模拟打印小票的功能(写到文件中)。

基本要求:

  1. 程序设计风格良好,控制台界面友好,最多两人一组完成任务。
  2. 实现功能测试代码,确保程序的健壮性。
  3. 画出使用的设计模式图。

提高要求:

  1. 实现可视化界面(使用MFC)。
  2. 实现会员储值卡功能,完成储值卡消费。
  3. 实现当天营业额和餐品销量计算和统计,用数据库记录。

 

二.题目分析

此次题目要求为实现收银系统,且要求较多难度较大,我运用了Java swing页面设计来完成此次题目要求,我通过网上的一个例子进行了改变并且在他的基础上进行了创造。

预期想法:首先设计一个登录界面,用户通过注册办理会员信息来登录肯德基系统,可选择办理会员卡,也可选择不办理会员卡,(初始值为用户名:1,密码:1),登录成功后,用户可以选择需要的食物,可单点也可选择套餐,支付方式为三种,分别是现金支付、会员卡支付以及优惠券支付,选择会员卡支付,也可在点餐系统中选择充值来完成对会员卡内的充值过程;选择优惠券支付则必须满足消费满200元,则可使用优惠券来立减50元,并且每个用户只能有一张,此外还提供打印小票的功能,根据顾客意愿来选择是否打印小票,且打印小票必须是在支付成功后才可使用,每选择一项功能,则上个界面自动关闭,并开启新的界面。

 

三.整体代码设计

1、页面的布局设计

首先是在登录界面,我选择运用网格布局(GridLayout),通过这种方式可以将一个容器的区域被划分为矩形网络,每个矩形大小规格一致且各个组件可以放置在其中任意一个矩形内,很规整的一种布局方式。

其次是注册界面,我选择运用边界布局(BorderLayout),控件会按照区域来进行调整,直到完全充满该区域,同样也很规整。

但两种界面也存在了一些问题,对于控件较多的界面,两种布局就会显得太规整,且范围只有这么多,很难讲一个区域内的控件全部包括在内,于是其余的界面我选择自定义布局,通过改变控件的位置来对控件进行移动以及排列,这样对于较多控件的页面,可以随机安放需要的控件并进行调整。

2、组件的选择以及添加

在选择组件时涉及到的问题较多,因为每一个组件展示出来的效果不同,且作用也不一样。

像是按钮(JButton)通过鼠标控制,选择什么就是什么,只能执行一个命令,但执行命令很方便快捷,所以我选择通过按钮来进行页面的切换以及提示区域的显示。

复选框(JCheckBox)通过鼠标控制时,可以执行多个命令,所以我选择通过复选框来进行餐品的选择,因为可以多选,错选时也可以取消。   

文本框(JTextField)用来展示选择的结果以及总额的总数,也可以在注册时任意添加文字以及最后的支付金额。

像是在定义这些组件时都可使用数组将其保存,可以将相同属性的组件保存在同一个数组中,这样方便定义,但此次我没有用到这样的方法,所以显得代码有些太长,没有优化好。

3、每个组件相应的代码命令

当整个页面布局完成后最重要的就是代码的添加,因为对于各个组件来说,不同的组件添加不同的代码,不像平常使用c++,一整段代码过去后得出最后效果,swing里面即使是一个小复选框按钮,它所代表的意义也是它本身所特有的,就像是选择餐品时,我选择薯条的控制按钮就必须调用这个复选框中的代码,不能跳到其他的复选框中。整个代码的流程必须要保证流通性以及合法性,每一步都必须正确显示,但好处也在用,成功定义一个复选框或按钮的代码后,其余相同组件的代码也大致相似,同样页面和页面的相互转换也是一样的方法。

4、文件的保存、读入以及写入

此次写入、读入并保存的文件包括用户注册的信息,会员卡的钱数,以及小票的打印,我将三者分别保存在不同的文件中以方便观察以及调用。

首先是用户注册的信息,将会保存用户名、密码、身份证号以便于登录系统;其次是会员卡中钱数的保存,方便直接读取调用;最后是小票的打印,记录餐品,钱数,支付数,找零数以及交易时间,其中找零数包括现金、会员卡以及优惠券的使用情况。

文件保存至相应的文档中。

5、背景图片的添加

背景图片的添加是为了装饰,使得面板更有色彩,不显得太单一或太光滑。

 

四.流程图设计

 

五.调试以及测试结果

 

图一 登录界面

 

图二 信息注册

 

图三 点餐系统界面

图四 充值界面

 

 

图五 现金支付界面

 

图六 现金支付成功界面

 

图七 现金找零界面

 

图八 打印小票

 

图九 会员卡找零界面

 

图十 选择优惠券时满足的条件

 

图十一 使用优惠券界面

 

图十二 小票打印

 

图十三 用户名,密码,身份证号的保存

图十四 金额的保存

 

六、遇到的问题以及解决方法

 

1. 页面的切换问题

一开始在进行页面切换时,弹出新的页面后旧的页面没有消失,一两个页面还行,定义多个页面后显得太乱太杂,且如果不注意还会改变选择方式导致整个系统没有流畅性。

通过网上资料查到使用dispose()便可以改变这种情况,该语句的作用是使当前页面消失,新的页面在指定位置产生,该语句一般加在函数最后。

 

2、选择餐品以及显示总金额问题

通过复选框选择餐品,选择后直接将金额显示在下方,效果如下图

想要的效果就是选择一个餐品后在下方显示出金额,并且在不需要此餐品时总金额也会减去相应的餐品价格。

一开始在定义时完全没有头绪去计算金额以及显示总金额,通过资料以及一些代码的演示才找到了解决方法。

当选择餐品时,以“香辣鸡腿堡”为例,通过下面的语句来完成对餐品金额的显示

String.valueOf((Integer.parseInt(s.substring(1,s.length())))+12))

此语句的意义为string.valueof()是用于数据转换;Integer.parseInt输出一个十进制;s.substring()索引位置的长度,从1开始到字符长度结束

 

3、支付金额时显示的餐品列表以及总金额

此问题的难点在于要在另一个面板中显示上一个面板所选择的餐品内容以及总金额,一开始我使用继承的方式尝试解决此问题,但并没有达到预期的效果,相反还增加了许多没有选择的内容。

通过资料的查找此问题可以通过提前定义一个boolean frag,通过上个问题,当选择某一样餐品时,frag=true,撤销某一样餐品时frag=false;通过if语句将frag=true的餐品名通过append()将内容打印出来,输入到一个文本框中。

最后将这个文本框内的内容与之前定义过得总金额保存的文本框一起当参数付给一个新的函数,再重新定义这个新函数,这样就可以保证在新的函数页面上显示上一个页面所选择的餐品以及金额。

 

4、用户自己输入的金额与总金额的比较以及找零问题

所以定义过得金额全部都是以String形式定义,真正要去比较时,是比较二者的字符串内数字,所以我的想法是将他们两个先从String转换为int类型,之后再进行比较,发现有的数字在比较时差别较大,找零时也存在一些问题。

之后我想到先用两个字符串进行比较,当作减法运算时再将其转换为int类型,这样出错率明显降低了许多,但还是会存在一些小问题。

此外String转换为int的方法为 int i=Interger.parseInt(String);

Int转换为String的方法为 String s=String.valueof(int);

 

5、文件的读入问题

相比较c++而言java的写入也不是很难,且较为便捷,所以在写入文件并保存是还是比较容易完成的,可当读入一个文件并且将它保存到一个数组中时遇到了问题,原以为跟其余的编程方法一样通过fwrite写入,freader读出,也许是我的方法问题,我没有成功读出文件。

通过网上资料后Scanner读入了文件,且将它保存在一个String数组中方便调用,且解决了字符串与字符串之间的空格问题。

 

6、图片的加入

此次可惜之处在于没有成功的添加背景图片,只添加了几个图标,因为背景图片覆盖组件的问题我还没有完全搞明白。

加入图片时当时代码无误,却怎么也导入不进图片,通过查找资料才明白一个图片路径问题,调用图片的必须是在制定的哪个包哪张图才可用导入成功。

 

七.经验总结

此次是我首次使用java来编程,而且此题难度较大,虽然时间较为充裕但对我而言还是相当有难度,一开始我使用c++进行编程,发现使用c++较为容易,且实现的功能也很多,但为了挑战一下才放弃c++成功的代码转战java,也是通过java我才了解到其中java swing的用处,我也决定使用此功能编程。

正式编程前我通过教材以及各种资料,先对每个组件都了解以及编写了一遍,熟悉了各个组件(面板,复选框,按钮)的功能以及怎样去定义,接着将各个组件添加进面板中调整位置查看效果,一切试验成功后才开始正式进行编程。

首先将各个页面做好,每一个页面上拥有的组件全部进行位置调整好,保持各个界面的美观性,其次加入各个组件的代码,先定义注册系统功能,保证其良好性并且保存用户信息,其次加入其余各组件的代码,先保证页面切换的函数,保证整个系统的流通性和可用性,其次保证复选框中的代码成立,可以选择餐品,再保证文本框内可以显示所点餐品名称以及总额,接着保证三种支付方式的局限性以及可运用性,之后保证输入的金额数可以与总额比较进行找零,以及会员卡的充值功能,最后将小票进行打印出来,结束此次点餐。

开始编程前我对整个流程进行了全盘的分析以及考虑,考虑要达到什么样的效果以及满足什么样的功能条件,我对此次编程系统做了几组考虑,上述过程是其中实现的一组情况,还有另一种想法没有实现成功,就是通过组合框(JComboBox)来选择餐品,每选择一个餐品显示一张餐品图片,组合框的好处在于可以节省大量的空间,因为我定义的餐品较多,如果使用组合框则可以尽量少的考虑到位置的调整问题,由于技术问题没有成功的将其编写出来,一方面在于选错后的修改问题,一方面在于图片的刷新问题,有时间在尝试将其表示出来。

这段代码也耗费了相当大的时间以及精力,因为一方面要查找各式各样的资料,一方面还要考虑到所查找到的资料是否适合自身代码,所以在进行修改时考虑的的点太多,虽然困难很多但还是完成了代码,可惜还有些不足以及自己考虑到的功能暂未实现。

通过这段代码让我对Java swing有了认识,虽然定义起来相对来说费劲一点,但整体效果呈现的还是很不错的,至少很直观,就像MFC界面一样,一个一个的定义以及一步一步的操作,比起c++显示出来的cmd黑界面以及java下方的调试框显得美化了许多,而且总的看来swing要比MFC界面容易,因为代码量少,我曾在MFC界面中添加背景图片需要几十行代码,现在运用java至于要几行代码,而且可以根据不同的页面添加不同的图片,但这方面我还欠些火候还需要学习。

 

八.参考文献

【1】郑秋生 夏敏捷.Java游戏编程开发教程.清华大学出版社.2016年7月第一版

【2】明日科技.Java从入门到精通(第四版).清华大学出版社.2016年10月第四版

【3】明日科技.Java经典编程300例.清华大学出版社.2012年1月第一版

【4】黑马程序员.Java基础入门(第二版).清华大学出版社.2018年12月第二版

【5】豆丁文档:http://www.docin.com/p-743775123.html

【6】博客:https://liuyanzhao.com/4082.html

【7】CSDN博客:https://blog.csdn.net/memray/article/details/7312817/

【8】CSDN博客:https://blog.csdn.net/Wang_Hong_Yi/article/details/71373980

【9】CSDN博客:https://bbs.csdn.net/topics/390661720

【10】CSDN博客:https://blog.csdn.net/qq_39186891/article/details/79459885

【11】360问答:https://wenda.so.com/q/1534876850214682?src=14

 

九、完整代码

1、登录界面代码

package com;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;

import javax.swing.AbstractButton;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class LoginDialog extends JDialog{
	private JButton okButton,cancelButton,newButton;
	private JTextField nameText;  //允许编辑单文档
	private JPasswordField passwordText; //密码输入组件
	private JLabel nameLabel,passwordLabel;  //标签
	private Container c; //数据容器,方便调用,修改
	
	public LoginDialog(String title) {
		
		this.setVisible(true);
		ImageIcon picture=new ImageIcon("img/21.jpg");
		this.setTitle(title); //标题
		c=getContentPane();  //获得JFrame的内容面板
		JPanel jpmian1=new JPanel();//登录界面分为3个面板,一个底板,一个图片版,一个登录面板
		JPanel jpmian2=new JPanel();
		JPanel picture1=new JPanel();
		JPanel jplogin1=new JPanel();
		JPanel jplogin2=new JPanel();
		
		JLabel j=new JLabel(picture);
        //j.setOpaque(false);
        add(j);
        j.setBounds(0, 0, 150, 150);
		
		okButton=new JButton("登录");
		okButton.addActionListener(new KFCShow()); //添加指定的动作侦听器,以接收发自此按钮的动作事件
		cancelButton=new JButton("退出");
		cancelButton.addActionListener(new KFCShow());
		newButton=new JButton("注册");
		newButton.addActionListener(new newShow());
		
		nameText=new JTextField(10); //这里的参数表示这个输入框的长度为10列
		nameLabel=new JLabel("用户名"); //两个标签
		passwordLabel=new JLabel("密码");
		passwordText=new JPasswordField(10);	
        
		jpmian1.setLayout(new GridLayout(1,2));//设定布局方式为网格布局为1行2列
		jpmian1.add(picture1,BorderLayout.WEST);
		jpmian1.add(jpmian2,BorderLayout.EAST);
		jpmian2.add(jplogin1,BorderLayout.NORTH);
		jpmian2.add(jplogin2,BorderLayout.SOUTH);
		
		jplogin1.setLayout(new GridLayout(3,2)); //设定布局方式为网格布局为三行行两列
		jplogin1.add(nameLabel);
		jplogin1.add(nameText);
		jplogin1.add(passwordLabel);
		jplogin1.add(passwordText);
		jplogin2.add(okButton);
		jplogin2.add(cancelButton);
		jplogin2.add(newButton);
		
		setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
		
		c.add(jpmian1);

	}
	
	public class KFCShow implements ActionListener{ 
		public void actionPerformed(ActionEvent e) {//用于接收操作事件的侦听器接口。对处理操作事件感兴趣的类可以实现此接口
			if(e.getSource().equals(okButton)) { //e.getSource()方法依赖于事件对象,当点击按钮时发生的事件	
				try {
		            Scanner in = new Scanner(new File("save.txt"));
		 
		            while (in.hasNextLine()) {
		                String str = in.nextLine();
		                String strr = str.trim();
		        		String[] abc = strr.split("[\\p{Space}]+");
		        		String str1 = abc[0];
		        		String str2 = abc[1];
				if((nameText).getText().equals(str1) && (new String(passwordText.getPassword())).equals(str2)) {//设定用户名和密码
					KFC_ORDER test=new KFC_ORDER();
					test.text.setText("");
					dispose();//销毁程序中指定的图形界面资源,对数据资源不产生影响,相当于关闭窗口
				}
				else if(nameText.getText().equals("")||new String(passwordText.getPassword()).equals(""))
					JOptionPane.showConfirmDialog(null, "用户名或密码不能为空,若没有请先注册","错误",JOptionPane.CLOSED_OPTION,JOptionPane.WARNING_MESSAGE);//JOptionPane 定制四种不同种类的标准对话框,ConfirmDialog 确认对话框。提出问题,然后由用户自己来确认,可以直接弹出对话框
				else {
					JOptionPane.showConfirmDialog(null, "用户名或密码错误","错误",JOptionPane.CLOSED_OPTION,JOptionPane.WARNING_MESSAGE);
					nameText.setText("");
					passwordText.setText("");
				}
			} 
		        } catch (FileNotFoundException e1) {
		            e1.printStackTrace();
		        }
                }
			if(e.getSource().equals(cancelButton)) {
				dispose();
			}
		}
	}

	public class newShow implements ActionListener{
		public void actionPerformed(ActionEvent e) {
			if(e.getSource().equals(newButton)) {
				MyFrame m=new MyFrame();
				dispose();   //当前页面消失,新的页面产生
			}
		}
	}
	
public static void main(String args[]) {
	LoginDialog login=new LoginDialog("肯德基系统");  //LoginDialog登陆窗口“注册用户”按钮添加监听
	login.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);  //设置用户在此窗体上发起 "close" 时默认执行的操作	
	login.pack(); //调整窗口的大小,使其适应组件的大小和布局
	login.setLocation(400,200);
	login.setSize(500,200);
	login.setModal(true);//指定对话框是否是模式对话框。模式对话框包含发送到父框架的所有用户输入内容
	login.setVisible(true);//设置窗体可见,此语句必须有,否则没有界面就没有如何意义了
}
}

2、注册界面代码

package com;

import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class MyFrame extends JFrame{
	private JPanel pan1, pan2, pan3;
	private JLabel labName, labPassword, labConfirm, labSex, labId, labNumber,money;
	private JTextField textField1, textField2,textField3;
	private JPasswordField passwordField, passwordField2;
	private JRadioButton radioButton1, radioButton2;
	private JComboBox comboBox;
	private JButton okButton,saveButton;

	public MyFrame() {
	setSize(320, 400);
	setLocationRelativeTo(null);


	JPanel contentPane = new JPanel(new BorderLayout());
	setContentPane(contentPane);


	pan1 = new JPanel();
	contentPane.add(pan1, BorderLayout.NORTH);


	labName = new JLabel("用户名:");
	textField1 = new JTextField(20);
	labPassword = new JLabel("密码:");
	passwordField = new JPasswordField(20);
	passwordField.setEchoChar('*');
	labConfirm = new JLabel("确认密码:");
	passwordField2 = new JPasswordField(20);
	passwordField2.setEchoChar('*');
	pan1.add(labName);
	pan1.add(textField1);
	pan1.add(labPassword);
	pan1.add(passwordField);
	pan1.add(labConfirm);
	pan1.add(passwordField2);


	pan2 = new JPanel();
	contentPane.add(pan2, BorderLayout.CENTER);
	labSex = new JLabel("性别:");
	radioButton1 = new JRadioButton("男");
	radioButton2 = new JRadioButton("女");
	labId = new JLabel("证件类型:");
	String[] item = { "身份证", "护照", "学生证", "驾驶证", "军官证", "其他" };
	comboBox = new JComboBox(item);
	
	ButtonGroup btngroup = new ButtonGroup();
	btngroup.add(radioButton1);
	btngroup.add(radioButton2);


	pan2.add(labSex);
	pan2.add(radioButton1);
	pan2.add(radioButton2);
	pan2.add(labId);
	pan2.add(comboBox);


	pan3 = new JPanel();
	okButton=new JButton("确定");
	saveButton=new JButton("保存");
	money=new JLabel("存入的金额");
	textField3=new JTextField(10);
	contentPane.add(pan3, BorderLayout.SOUTH);
	labNumber = new JLabel("证件号码:");
	textField2 = new JTextField(20);


	pan3.add(labNumber);
	pan3.add(textField2);
	pan3.add(money);
	pan3.add(textField3);
	pan3.add(okButton);
	pan3.add(saveButton);
	
	
	okButton.addMouseListener(new ok());
	saveButton.addMouseListener(new save());

	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	setVisible(true);
	pack();
	}
	
	private class ok extends MouseAdapter {
		public void mouseClicked(MouseEvent e) {
			if(e.getSource().equals(okButton)) {
				LoginDialog login=new LoginDialog("肯德基系统");
				login.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);  //设置用户在此窗体上发起 "close" 时默认执行的操作	
				login.pack(); //调整窗口的大小,使其适应组件的大小和布局
				login.setLocation(400,200);
				login.setSize(500,200);
				login.setModal(true);//指定对话框是否是模式对话框。模式对话框包含发送到父框架的所有用户输入内容
				login.setVisible(true);//设置窗体可见,此语句必须有,否则没有界面就没有如何意义了
				dispose();
			}
		}
	}
	
	private class save extends MouseAdapter{
		public void mouseClicked(MouseEvent e) {
			if(e.getSource().equals(saveButton)) {
				 try {		            	
		            	FileWriter fn=new FileWriter("save.txt");
		            	FileWriter fm=new FileWriter("money.txt");  
		                fn.write(textField1.getText()+" ");
		                fn.write(passwordField.getText()+" ");
		                fn.write(textField2.getText());
		                fm.write(textField3.getText());
		                fn.close();
		                fm.close();
		                JOptionPane.showConfirmDialog(null, "保存成功","请返回",JOptionPane.CLOSED_OPTION,JOptionPane.INFORMATION_MESSAGE);
		            }catch (IOException e1) {
	                    e1.printStackTrace();
	                } 
			}
		}
	}
}

3、选餐界面代码

package com;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Date;
import java.text.SimpleDateFormat;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class KFC_ORDER extends JFrame{
	static Container m;
	JButton cash=new JButton("现金");
	JButton vip=new JButton("会员卡");
	JButton discount=new JButton("优惠券");
	JButton recharge=new JButton("充值");
	JButton cancel=new JButton("取消");
	JPanel jpmian=new JPanel();
	JPanel jpmian1=new JPanel();
	JPanel jpmian2=new JPanel();
	JPanel jpmian3=new JPanel();
	JLabel jpltitle=new JLabel();
	JLabel jpltitletext=new JLabel("欢迎进入KFC点餐系统");
	JLabel jltime=new JLabel();
	int intTime=0;
	ImageIcon image1=new ImageIcon("img/21.jpg");
	
	static JLabel l1=new JLabel("汉堡");
	static JLabel l2=new JLabel("薯条");
	static JLabel l3=new JLabel("炸鸡");
	static JLabel l4=new JLabel("饮料");
	static JLabel l5=new JLabel("甜点");
	static JLabel l6=new JLabel("双人");
	static JLabel l7=new JLabel("儿童");
	static JLabel l8=new JLabel("全家");
	
	public JRadioButton rad1=new JRadioButton("香辣鸡腿堡\n");
	public JRadioButton rad2=new JRadioButton("劲脆鸡腿堡\n");
	public JRadioButton rad3=new JRadioButton("深海鳕鱼堡\n");
	public JRadioButton rad4=new JRadioButton("新奥尔良烤鸡腿堡\n");
	
	public JRadioButton rad5=new JRadioButton("大薯条\n");
	public JRadioButton rad6=new JRadioButton("中薯条\n");
	public JRadioButton rad7=new JRadioButton("小薯条\n");
	
	public JRadioButton rad8=new JRadioButton("大可乐\n");
	public JRadioButton rad9=new JRadioButton("中可乐\n");
	public JRadioButton rad10=new JRadioButton("小可乐\n");
	public JRadioButton rad11=new JRadioButton("奶茶\n");
	public JRadioButton rad12=new JRadioButton("牛奶\n");
	public JRadioButton rad13=new JRadioButton("咖啡\n");
	public JRadioButton rad14=new JRadioButton("豆浆\n");
	
	public JRadioButton rad15=new JRadioButton("烤鸡\n");
	public JRadioButton rad16=new JRadioButton("烤鸡翅\n");
	public JRadioButton rad17=new JRadioButton("炸鸡腿\n");
	public JRadioButton rad18=new JRadioButton("骨肉相连\n");
	public JRadioButton rad19=new JRadioButton("黑椒鸡块\n");
	public JRadioButton rad20=new JRadioButton("鸡米花\n");
	
	public JRadioButton rad21=new JRadioButton("香芋地瓜丸\n");
	public JRadioButton rad22=new JRadioButton("香蕉酥\n");
	public JRadioButton rad23=new JRadioButton("蛋挞\n");
	public JRadioButton rad24=new JRadioButton("圣代\n");
	public JRadioButton rad25=new JRadioButton("甜筒\n");
	
	public JRadioButton rad26=new JRadioButton("双人套餐(香辣鸡腿堡*2,中可乐*2,中薯条,烤鸡翅,鸡米花,蛋挞):75元\n");
	public JRadioButton rad27=new JRadioButton("儿童套餐(深海鳕鱼堡,中薯条,牛奶,鸡米花,任意玩具一个):40元\n");
	public JRadioButton rad28=new JRadioButton("全家桶(香辣鸡腿堡*2,新奥尔良烤鸡腿堡,大薯条,中可乐*3,鸡米花,蛋挞,炸鸡腿,黑椒鸡块,骨肉相连):110元\n                                                       ");
	
	public boolean frag1;
	public boolean frag2;
	public boolean frag3;
	public boolean frag4;
	public boolean frag5;
	public boolean frag6;
	public boolean frag7;
	public boolean frag8;
	public boolean frag9;
	public boolean frag10;
	public boolean frag11;
	public boolean frag12;
	public boolean frag13;
	public boolean frag14;
	public boolean frag15;
	public boolean frag16;
	public boolean frag17;
	public boolean frag18;
	public boolean frag19;
	public boolean frag20;
	public boolean frag21;
	public boolean frag22;
	public boolean frag23;
	public boolean frag24;
	public boolean frag25;
	public boolean frag26;
	public boolean frag27;
	public boolean frag28;
	
	JLabel accountname=new JLabel("总计");
	JTextField accounttext=new JTextField("$0",6);
	JTextArea text=new JTextArea(8,18);
	
	int sum=0;
	
	public KFC_ORDER() {
		this.setTitle("KFC点餐系统");
		this.setResizable(false);
		this.setBounds(300, 120, 800, 700);
		this.setVisible(true);
		
		m=getContentPane();
		
		Font font1=new Font("Serif",Font.BOLD+Font.ITALIC,20); //字体的修改,字体,字形,字号
		Font font2=new Font("Serif",Font.BOLD+Font.ITALIC,15);
		Font font3=new Font("Serif",Font.BOLD+Font.ITALIC,30);
		
		Container container=getContentPane();
		container.setLayout(new FlowLayout());

		l1.setOpaque(true);
        l1.setBounds(0, 100, 50, 50);
        l1.setFont(font1);
        l1.setHorizontalAlignment(JLabel.CENTER); 
        l2.setOpaque(true);
        l2.setBounds(0, 150, 50, 50);
        l2.setFont(font1);
        l2.setHorizontalAlignment(JLabel.CENTER);
        l3.setOpaque(true);
        l3.setBounds(0, 200, 50, 50);
        l3.setFont(font1);
        l3.setHorizontalAlignment(JLabel.CENTER);
        l4.setOpaque(true);
        l4.setBounds(0, 250, 50, 50);
        l4.setFont(font1);
        l4.setHorizontalAlignment(JLabel.CENTER);
        l5.setOpaque(true);
        l5.setBounds(0, 300, 50, 50);
        l5.setFont(font1);
        l5.setHorizontalAlignment(JLabel.CENTER);
        l6.setOpaque(true);
        l6.setBounds(0, 350, 50, 50);
        l6.setFont(font1);
        l6.setHorizontalAlignment(JLabel.CENTER);
        l7.setOpaque(true);
        l7.setBounds(0, 400, 50, 50);
        l7.setFont(font1);
        l7.setHorizontalAlignment(JLabel.CENTER);
        l8.setOpaque(true);
        l8.setBounds(0, 450, 50, 50);
        l8.setFont(font1);
        l8.setHorizontalAlignment(JLabel.CENTER);
        jltime.setOpaque(true);
        jltime.setBounds(400, 50, 500, 50);
        jltime.setFont(font2);
        jltime.setHorizontalAlignment(JLabel.CENTER);
        jpltitletext.setOpaque(true);
        jpltitletext.setBounds(0, 10, 550, 50);
        jpltitletext.setFont(font3);
        jpltitletext.setHorizontalAlignment(JLabel.CENTER);
        
        JLabel j=new JLabel(image1);
        j.setOpaque(false);
        add(j);
        j.setBounds(590, 500, 150, 150);
        
        
        add(l1,"Center");
        add(l2,"Center");
        add(l3,"Center");
        add(l4,"Center");
        add(l5,"Center");
        add(l6,"Center");
        add(l7,"Center");
        add(l8,"Center");
        add(jltime,"Center");
        add(jpltitletext,"Center");
		
		add(rad1);
		add(rad2);
		add(rad3);
		add(rad4);
		add(rad5);
		add(rad6);
		add(rad7);
		add(rad8);
		add(rad9);
		add(rad10);
		add(rad11);
		add(rad12);
		add(rad13);
		add(rad14);
		add(rad15);
		add(rad16);
		add(rad17);
		add(rad18);
		add(rad19);
		add(rad20);
		add(rad21);
		add(rad22);
		add(rad23);
		add(rad24);
		add(rad25);
		add(rad26);
		add(rad27);
		add(rad28);
		add(accountname);
		add(accounttext);
		add(cash);
		add(vip);
		add(recharge);
		add(discount);
	    add(cancel);
		
		rad1.setSelected(false);
		rad2.setSelected(false);
		rad3.setSelected(false);
		rad4.setSelected(false);
		rad5.setSelected(false);
		rad6.setSelected(false);
		rad7.setSelected(false);
		rad8.setSelected(false);
		rad9.setSelected(false);
		rad10.setSelected(false);
		rad11.setSelected(false);
		rad12.setSelected(false);
		rad13.setSelected(false);
		rad14.setSelected(false);
		rad15.setSelected(false);
		rad16.setSelected(false);
		rad17.setSelected(false);
		rad18.setSelected(false);
		rad19.setSelected(false);
		rad20.setSelected(false);
		rad21.setSelected(false);
		rad22.setSelected(false);
		rad23.setSelected(false);
		rad24.setSelected(false);
		rad25.setSelected(false);
		rad26.setSelected(false);
		rad27.setSelected(false);
		rad28.setSelected(false);
			
		rad1.setBounds(70, 100, 100, 50);
		rad2.setBounds(170, 100, 100, 50);
		rad3.setBounds(270, 100, 100, 50);
		rad4.setBounds(370, 100, 150, 50);
		rad5.setBounds(70, 150, 100, 50);
		rad6.setBounds(170, 150, 100, 50);
		rad7.setBounds(270, 150, 100, 50);
		rad8.setBounds(70, 200, 100, 50);
		rad9.setBounds(170, 200, 100, 50);
		rad10.setBounds(270, 200, 100, 50);
		rad11.setBounds(370, 200, 100, 50);
		rad12.setBounds(470, 200, 100, 50);
		rad13.setBounds(570, 200, 100, 50);
		rad14.setBounds(70, 250, 100, 50);
		rad15.setBounds(170, 250, 100, 50);
		rad16.setBounds(270, 250, 100, 50);
		rad17.setBounds(370, 250, 100, 50);
		rad18.setBounds(470, 250, 100, 50);
		rad19.setBounds(570, 250, 100, 50);
		rad20.setBounds(670, 250, 100, 50);
		rad21.setBounds(70, 300, 100, 50);
		rad22.setBounds(170, 300, 100, 50);
		rad23.setBounds(270, 300, 100, 50);
		rad24.setBounds(370, 300, 100, 50);
		rad25.setBounds(470, 300, 100, 50);
		rad26.setBounds(70, 350, 500, 50);
		rad27.setBounds(70, 400, 500, 50);
		rad28.setBounds(70, 450, 650, 50);
		accountname.setBounds(70, 500, 50, 50);
		accounttext.setBounds(100,500,100,50);
		recharge.setBounds(300, 500, 100, 50);
		cash.setBounds(50, 600, 100, 50);
		vip.setBounds(180, 600, 100, 50);
		discount.setBounds(310, 600, 100, 50);
		cancel.setBounds(440, 600, 100, 50);
		
		this.setLayout(null);//制定组建位置
        this.add(rad1);
        this.add(rad2);
        this.add(rad3);
        this.add(rad4);
        this.add(rad5);
        this.add(rad6);
        this.add(rad7);
        this.add(rad8);
        this.add(rad9);
        this.add(rad10);
        this.add(rad11);
        this.add(rad12);
        this.add(rad13);
        this.add(rad14);
        this.add(rad15);
        this.add(rad16);
        this.add(rad17);
        this.add(rad18);
        this.add(rad19);
        this.add(rad20);
        this.add(rad21);
        this.add(rad22);
        this.add(rad23);
        this.add(rad24);
        this.add(rad25);
        this.add(rad26);
        this.add(rad27);
        this.add(rad28);
        this.add(accountname);
		this.add(accounttext);
		this.add(cash);
		this.add(vip);
		this.add(discount);
		this.add(recharge);
		this.add(cancel);
		this.add(j);
		
		accounttext.setEditable(false);
		
		rad1.addItemListener(new AddPrice());
		rad2.addItemListener(new AddPrice());
		rad3.addItemListener(new AddPrice());
		rad4.addItemListener(new AddPrice());
		rad5.addItemListener(new AddPrice());
		rad6.addItemListener(new AddPrice());
		rad7.addItemListener(new AddPrice());
		rad8.addItemListener(new AddPrice());
		rad9.addItemListener(new AddPrice());
		rad10.addItemListener(new AddPrice());
		rad11.addItemListener(new AddPrice());
		rad12.addItemListener(new AddPrice());
		rad13.addItemListener(new AddPrice());
		rad14.addItemListener(new AddPrice());
		rad15.addItemListener(new AddPrice());
		rad16.addItemListener(new AddPrice());
		rad17.addItemListener(new AddPrice());
		rad18.addItemListener(new AddPrice());
		rad19.addItemListener(new AddPrice());
		rad20.addItemListener(new AddPrice());
		rad21.addItemListener(new AddPrice());
		rad22.addItemListener(new AddPrice());
		rad23.addItemListener(new AddPrice());
		rad24.addItemListener(new AddPrice());
		rad25.addItemListener(new AddPrice());
		rad26.addItemListener(new AddPrice());
		rad27.addItemListener(new AddPrice());
		rad28.addItemListener(new AddPrice());
		
		cash.addMouseListener(new ButtonClick());
		vip.addMouseListener(new ButtonClick());
		discount.addMouseListener(new ButtonClick());
		recharge.addMouseListener(new recharge());
		cancel.addMouseListener(new ButtonClick());
		
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		new GetDate();
		m.add(jpmian);
		
	//	this.setSize(800, 600);
      //  this.setLocation(100, 100);
		
	}
	
	public class AddPrice implements ItemListener{
		public void itemStateChanged(ItemEvent e) {
			String s=accounttext.getText();
			if(e.getSource()==rad1) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+12)));//string.valueof()是用于数据转换;Integer.parseInt输出一个十进制;s.substring()索引位置的长度,从1开始到字符长度结束
					frag1=true;
					
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-12)));				     
				    frag1=false;
				    
				}
					
			}
			else if(e.getSource()==rad2) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+12)));
					frag2=true;
					
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-12)));
					frag2=false;
					
				}
					
			}
			else if(e.getSource()==rad3) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+15)));
					frag3=true;
					
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-15)));
					frag3=false;
					
				}
					
			}
			else if(e.getSource()==rad4) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+13)));
					frag4=true;
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-13)));
					frag4=false;
				}
					
			}
			else if(e.getSource()==rad5) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+11)));
					frag5=true;
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-11)));
					frag5=false;
				}
					
			}
			else if(e.getSource()==rad6) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+9)));
					frag6=true;
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-9)));
					frag6=false;
				}
					
			}
			else if(e.getSource()==rad7) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+7)));
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-7)));
				}
					
			}
			else if(e.getSource()==rad8) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+25)));
					frag8=true;
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-25)));
					frag8=false;
				}
					
			}
			else if(e.getSource()==rad9) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+10)));
					frag9=true;
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-10)));
					frag9=false;
				}
					
			}
			else if(e.getSource()==rad10) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+10)));
					frag10=true;
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-10)));
					frag10=false;
				}
					
			}
			else if(e.getSource()==rad11) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+10)));
					frag11=true;
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-10)));
					frag11=false;
				}
					
			}
			else if(e.getSource()==rad12) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+10)));
					frag12=true;
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-10)));
					frag12=false;
				}
					
			}
			else if(e.getSource()==rad13) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+10)));
					frag13=true;
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-10)));
					frag13=false;
				}
					
			}
			else if(e.getSource()==rad14) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+11)));
					frag14=true;
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-11)));
					frag14=false;
				}
					
			}
			else if(e.getSource()==rad15) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+9)));
					frag15=true;
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-9)));
					frag15=true;
				}
					
			}
			else if(e.getSource()==rad16) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+7)));
					frag16=true;
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-7)));
					frag16=false;
				}
					
			}
			else if(e.getSource()==rad17) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+10)));
					frag17=true;
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-10)));
					frag17=false;
				}
					
			}
			else if(e.getSource()==rad18) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+10)));
					frag18=true;
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-10)));
					frag18=false;
				}
					
			}
			else if(e.getSource()==rad19) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+10)));
					frag19=true;
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-10)));
					frag19=false;
				}
					
			}
			else if(e.getSource()==rad20) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+10)));
					frag20=true;
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-10)));
					frag20=false;
				}
					
			}
			else if(e.getSource()==rad21) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+9)));
					frag21=true;
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-9)));
					frag21=false;
				}
					
			}
			else if(e.getSource()==rad22) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+9)));
					frag22=true;
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-9)));
					frag22=false;
				}
					
			}
			else if(e.getSource()==rad23) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+7)));
					frag23=true;
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-7)));
					frag23=true;
				}
					
			}
			else if(e.getSource()==rad24) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+9)));
					frag24=true;
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-9)));
					frag24=false;
				}
					
			}
			else if(e.getSource()==rad25) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+10)));
					frag25=true;
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-10)));
					frag25=false;
				}
					
			}
			else if(e.getSource()==rad26) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+75)));
					frag26=true;
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-75)));
					frag26=true;
				}
					
			}
			else if(e.getSource()==rad27) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+40)));
					frag27=true;
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-40)));
					frag27=false;
				}
					
			}
			else if(e.getSource()==rad28) {
				if(e.getStateChange()==1) {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))+110)));
					frag28=true;
				}
				else {
					accounttext.setText("$"+(String.valueOf((Integer.parseInt(s.substring(1,s.length())))-110)));
					frag28=false;
				}
					
			}
			
			m.validate();
			
			m.repaint();
		}

	}

	public class ButtonClick extends MouseAdapter{
		public void mouseClicked(MouseEvent e) {
				if(accounttext.getText().equals("$0")) {
					JOptionPane.showConfirmDialog(null, "还没有选择任何食物","注意",JOptionPane.CLOSED_OPTION,JOptionPane.WARNING_MESSAGE);				
				}
				else {
					if(frag1) {
						text.append(rad1.getText());//将内容打印出来
						sum+=12;
					}
					if(frag2) {
						text.append(rad2.getText());
						sum+=12;
					}
					if(frag3) {
						text.append(rad3.getText());
						sum+=15;
					}
					if(frag4) {
						text.append(rad4.getText());
						sum+=13;
					}
					if(frag5) {
						text.append(rad5.getText());
						sum+=11;
					}
					if(frag6) {
						text.append(rad6.getText());
						sum+=9;
					}
					if(frag7) {
						text.append(rad7.getText());
						sum+=7;
					}
					if(frag8) {
						text.append(rad8.getText());
						sum+=25;
					}
					if(frag9) {
						text.append(rad9.getText());
						sum+=10;
					}
					if(frag10) {
						text.append(rad10.getText());
						sum+=10;
					}
					if(frag11) {
						text.append(rad11.getText());
						sum+=10;
					}
					if(frag12) {
						text.append(rad12.getText());
						sum+=10;
					}
					if(frag13) {
						text.append(rad13.getText());
						sum+=10;
					}
					if(frag14) {
						text.append(rad14.getText());sum+=11;
					}
					if(frag15) {
						text.append(rad15.getText());sum+=9;
					}
					if(frag16) {
						text.append(rad16.getText());sum+=7;
					}
					if(frag17) {
						text.append(rad17.getText());sum+=10;
					}
					if(frag18) {
						text.append(rad18.getText());sum+=10;
					}
					if(frag19) {
						text.append(rad19.getText());sum+=10;
					}
					if(frag20) {
						text.append(rad20.getText());sum+=10;
					}
					if(frag21) {
						text.append(rad21.getText());sum+=9;
					}
					if(frag22) {
						text.append(rad22.getText());sum+=9;
					}
					if(frag23) {
						text.append(rad23.getText());sum+=7;
					}
					if(frag24) {
						text.append(rad24.getText());sum+=9;
					}
					if(frag25) {
						text.append(rad25.getText());sum+=10;
					}
					if(frag26) {
						text.append(rad26.getText());sum+=75;
					}
					if(frag27) {
						text.append(rad27.getText());sum+=40;
					}
					if(frag28) {
						text.append(rad28.getText());sum+=110;
					}
					if(e.getSource().equals(cash)) {
					    KFC_count list=new KFC_count(sum,accounttext,text);
					    dispose();
					}
					
					if(e.getSource().equals(vip)) {
					    KFC_count1 list=new KFC_count1(sum,accounttext,text);
					    dispose();
					}
					
					if(sum>=200) {
					   if(e.getSource().equals(discount)) {
					        KFC_count2 list=new KFC_count2(sum,accounttext,text);
					        dispose();
					    }
					}
					else if(sum<200){
						 if(e.getSource().equals(discount)) {
					    	JOptionPane.showConfirmDialog(null, "抱歉您的消费金额未满200元","请选择其他支付方式",JOptionPane.CLOSED_OPTION,JOptionPane.INFORMATION_MESSAGE);
						 }
						 
					}
				}
				if (e.getSource().equals(cancel)) {
				        LoginDialog login=new LoginDialog("肯德基系统");
				        login.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);  //设置用户在此窗体上发起 "close" 时默认执行的操作	
				        login.pack(); //调整窗口的大小,使其适应组件的大小和布局
				        login.setLocation(400,200);
				        login.setSize(500,200);
				        login.setModal(true);//指定对话框是否是模式对话框。模式对话框包含发送到父框架的所有用户输入内容
				        login.setVisible(true);//设置窗体可见,此语句必须有,否则没有界面就没有如何意义了
				        dispose();
			        }
			
		}
	}
		
	private class recharge extends MouseAdapter{
		public void mouseClicked(MouseEvent e) {
			if(e.getSource().equals(recharge)) {
				Recharge r=new Recharge();
				dispose();
			}
		}
	}
	
	public class GetDate extends Thread{
		Thread t;
		SimpleDateFormat sdf;
		Date d;
		public GetDate() {
			t=new Thread(this);
			t.start();
		}
		
		public void run() {
			try {
				while(intTime==0) {
					t.sleep(1000);    //线程休眠1秒,相当于1秒刷新一次
					sdf=new SimpleDateFormat("yyyy'年'MMM dd'号', EEE,HH:mm:ss");
					d=new Date();
					jltime.setText(sdf.format(d));
				}
			}
			catch(Exception e) {
				System.out.println("线程被中断!");
			}
		}
	}
}

4、充值界面代码

package com;

import java.awt.Container;
import java.awt.Font;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class Recharge extends JFrame{
	Container m;
	
	JButton ok=new JButton("确定");
	JButton cancel=new JButton("取消");
	JLabel account=new JLabel("充值金额");
	JTextField a=new JTextField();
	
	ImageIcon image1=new ImageIcon("img/1.png");
	
	public Recharge() {
		
		this.setResizable(false);
	    this.setLocation(500,250);
	    this.setSize(500,300);
	    this.setVisible(true);
	    this.setTitle("充值系统");
	    
	    Font font1=new Font("Serif",Font.BOLD+Font.ITALIC,20);
	    
	    JPanel jpmian=new JPanel();
	     
	    jpmian.add(ok);
		jpmian.add(cancel);
	    jpmian.add(a);
	    
	    m=getContentPane();
	    
	    JLabel j=new JLabel(image1);
        j.setOpaque(false);
        add(j);
        j.setBounds(0, 0, 150, 180);
	    
	    account.setOpaque(true);
	    account.setBounds(180, 30, 100, 100);
	    account.setFont(font1);
	    account.setHorizontalAlignment(JLabel.CENTER); 
	    
	    ok.setBounds(70, 180, 100, 50);
		cancel.setBounds(350, 180, 100, 50);
	    a.setBounds(188, 100, 100, 50);
	    
	    add(account,"Center");
	    
	    this.add(ok);
		this.add(cancel);
	    this.add(a);
	    this.add(j);
	    
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		
        ok.addMouseListener(new Pay());
		cancel.addMouseListener(new Cancel());
        
		m.add(jpmian);
		
		this.setVisible(true);
	    
	}
	
	private class Pay extends MouseAdapter{
		public void mouseClicked(MouseEvent e) {
			if(e.getSource().equals(ok)) {
				try {
					Scanner in = new Scanner(new File("money.txt"));
			        while (in.hasNextLine()) {
				         String str1 = in.nextLine();
				         String strr = str1.trim();
				         String[] abc = strr.split("[\\p{Space}]+");
				         String str2 = abc[0];
				         int m = Integer.parseInt(str2);
					     int t=Integer.parseInt(a.getText());
					     int sum=0;
					     sum=m+t;
					     String s = String.valueOf(sum);
        	             FileWriter fw=new FileWriter("money.txt");
                         fw.write(s);
                         fw.close();
                         JOptionPane.showConfirmDialog(null, "充值成功","充值",JOptionPane.CLOSED_OPTION,JOptionPane.INFORMATION_MESSAGE);
                    }
			        }catch (IOException e1) {
                  e1.printStackTrace();
            } 
				}
		    }
	    }
	
	private class Cancel extends MouseAdapter{
		public void mouseClicked(MouseEvent e) {
			if(e.getSource().equals(cancel)) {
				KFC_ORDER t=new KFC_ORDER();
				dispose();
			}
		}
	}
	
}

5、现金支付界面代码

package com;

import java.awt.Canvas;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Toolkit;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;



public class KFC_count extends JFrame{
	Container m;
	
	JButton ok=new JButton("确定");
	JButton cancel=new JButton("取消");
	JButton print=new JButton("打印");
	JLabel account=new JLabel("总计");
	JLabel account1=new JLabel("支付");
	ImageIcon picture=new ImageIcon("img/21.jpg");
	
	Date date = new Date();
	String d=String.format("%tc", date);
	
	JTextArea area=new JTextArea(); 
	
	JTextField a=new JTextField();
	
	String s;
	
	public KFC_count(int sum,JTextField accounttext,JTextArea text) {
				
		s = String.valueOf(sum); 
		
		area=text;
		
		this.setResizable(false);
		this.setLocation(500,250);
		this.setSize(500,300);
		this.setVisible(true);
		this.setTitle("您已选择现金支付");
		
		JPanel jpmian=new JPanel();
	    
		text.setLineWrap(true);
		
		jpmian.add(text);
		jpmian.add(account);
		jpmian.add(accounttext);
		jpmian.add(ok);
		jpmian.add(cancel);
		jpmian.add(account1);
		jpmian.add(print);
		jpmian.add(a);
		
		m=getContentPane();	
		
		ok.setSelected(false);
		cancel.setSelected(false);
		print.setSelected(false);
		
		ok.setBounds(70, 180, 100, 50);
		cancel.setBounds(350, 180, 100, 50);
		print.setBounds(215, 180, 100, 50);
		account1.setBounds(297, 80, 40, 50);
		a.setBounds(328, 100, 70, 23);
		
		this.add(ok);
		this.add(cancel);
		this.add(print);
		this.add(account1);
		this.add(a);

		
		ok.addMouseListener(new Pay());
		cancel.addMouseListener(new OKClick());
		print.addMouseListener(new print());
		
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		
		m.add(jpmian);
		
		this.setVisible(true);
	}
	
	private class OKClick extends MouseAdapter{
		public void mouseClicked(MouseEvent e) {
			if(e.getSource().equals(cancel)) {
				KFC_ORDER t1=new KFC_ORDER();
				dispose();
			}
		}
	}
	
		private class Pay extends MouseAdapter{
				
		public void mouseClicked(MouseEvent e) {
		
			int i = Integer.parseInt(a.getText());
			int j=Integer.parseInt(s);
			
			if(e.getSource().equals(ok)) {
				if(((a).getText()).equals(s)) {
					JOptionPane.showConfirmDialog(null, "支付成功","欢迎下次光临",JOptionPane.CLOSED_OPTION,JOptionPane.INFORMATION_MESSAGE);
				}
				else if(((a).getText()).equals(""))
					JOptionPane.showConfirmDialog(null, "请支付","错误",JOptionPane.CANCEL_OPTION,JOptionPane.WARNING_MESSAGE);//JOptionPane 定制四种不同种类的标准对话框,ConfirmDialog 确认对话框。提出问题,然后由用户自己来确认,可以直接弹出对话框
				else if(a.getText().compareTo(s)<0)
					JOptionPane.showConfirmDialog(null, "支付有误","错误",JOptionPane.CANCEL_OPTION,JOptionPane.WARNING_MESSAGE);
				else if(a.getText().compareTo(s)>0)
					JOptionPane.showConfirmDialog(null, ("找您"+(i-j)+"元"),"欢迎下次光临",JOptionPane.CANCEL_OPTION,JOptionPane.INFORMATION_MESSAGE);		
			}
			else {
				System.exit(0);
			}
		}
	}
		
		private class print extends MouseAdapter{
			public void mouseClicked(MouseEvent e) {
				if(e.getSource().equals(print)){
		            String str=area.getText();
		            String t=a.getText();
		            int i = Integer.parseInt(a.getText());
					int j = Integer.parseInt(s);
		            try {		            	
		            	FileWriter fw=new FileWriter("tip.txt",true);
		                fw.write("\r\n"+"*************************************************"+"\r\n");
		                fw.write(str+"\r\n");
		                fw.write("共计:"+s+"元\r\n");
		                fw.write("收您:"+t+"元\r\n");
		                fw.write("找您:"+(i-j)+"元\r\n");
		                fw.write(d+"\r\n");
		                fw.write("\r\n"+"*************************************************"+"\r\n");
		                fw.close();
		                JOptionPane.showConfirmDialog(null, "打印成功","欢迎下次光临",JOptionPane.CLOSED_OPTION,JOptionPane.INFORMATION_MESSAGE);
		            }catch (IOException e1) {
	                    e1.printStackTrace();
	                } 
			}
			}
		}

}

6、会员卡支付代码

package com;

import java.awt.Container;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;
import java.util.Scanner;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class KFC_count1 extends JFrame{
Container m;
	
	JButton ok=new JButton("确定");
	JButton cancel=new JButton("取消");
	JButton print=new JButton("打印");
	JLabel account=new JLabel("总计");
	JLabel account1=new JLabel("支付");
	ImageIcon picture=new ImageIcon("img/21.jpg");
	
	Date date = new Date();
	String d=String.format("%tc", date);
	
	JTextArea area=new JTextArea(); 
	
	JTextField a=new JTextField();
	
	String s;
	
	public KFC_count1(int sum,JTextField accounttext,JTextArea text) {
				
		s = String.valueOf(sum); 
		
		area=text;
		
		this.setResizable(false);
		this.setLocation(500,250);
		this.setSize(500,300);
		this.setVisible(true);
		this.setTitle("您已选择会员卡支付");
		
		JPanel jpmian=new JPanel();
	    
		text.setLineWrap(true);
		
		jpmian.add(text);
		jpmian.add(account);
		jpmian.add(accounttext);
		jpmian.add(ok);
		jpmian.add(cancel);
		jpmian.add(account1);
		jpmian.add(print);
		jpmian.add(a);
		
		m=getContentPane();	
		
		ok.setSelected(false);
		cancel.setSelected(false);
		print.setSelected(false);
		
		ok.setBounds(70, 180, 100, 50);
		cancel.setBounds(350, 180, 100, 50);
		print.setBounds(215, 180, 100, 50);
		account1.setBounds(297, 80, 40, 50);
		a.setBounds(328, 100, 70, 23);
		
		this.add(ok);
		this.add(cancel);
		this.add(print);
		this.add(account1);
		this.add(a);

		
		ok.addMouseListener(new Pay());
		cancel.addMouseListener(new OKClick());
		print.addMouseListener(new print());
		
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		
		m.add(jpmian);
		
		this.setVisible(true);
	}
	
	private class OKClick extends MouseAdapter{
		public void mouseClicked(MouseEvent e) {
			if(e.getSource().equals(cancel)) {
				KFC_ORDER t1=new KFC_ORDER();
				dispose();
			}
		}
	}
	
		private class Pay extends MouseAdapter{
				
		public void mouseClicked(MouseEvent e) {
		
			if(e.getSource().equals(ok)) {
				try {
		            Scanner in = new Scanner(new File("money.txt"));
		            while (in.hasNextLine()) {
			            String str = in.nextLine();
			            String strr = str.trim();
			            String[] abc = strr.split("[\\p{Space}]+");
			        	String str1 = abc[0];
		        		int i = Integer.parseInt(a.getText());
		        		int j=Integer.parseInt(str1);
				if(((a).getText()).equals(""))
					JOptionPane.showConfirmDialog(null, "请支付","错误",JOptionPane.CANCEL_OPTION,JOptionPane.WARNING_MESSAGE);//JOptionPane 定制四种不同种类的标准对话框,ConfirmDialog 确认对话框。提出问题,然后由用户自己来确认,可以直接弹出对话框
				else if(i>j)
					JOptionPane.showConfirmDialog(null, "您卡内剩余余额不足,请充值","错误",JOptionPane.CANCEL_OPTION,JOptionPane.WARNING_MESSAGE);
				else if(i<j)
					JOptionPane.showConfirmDialog(null, ("您还剩"+(j-i)+"元"),"欢迎下次光临",JOptionPane.CANCEL_OPTION,JOptionPane.INFORMATION_MESSAGE);	
				 try {		
					    String x;
					    x = String.valueOf(j-i); 
		            	FileWriter fm=new FileWriter("D:\\money.txt");  
		                fm.write(x);
		                fm.close();
		            }catch (IOException e1) {
	                    e1.printStackTrace();
	                } 
			}
		}catch (IOException e1) {
            e1.printStackTrace();
        } 
	}
		}
		}
		
		private class print extends MouseAdapter{
			public void mouseClicked(MouseEvent e) {
				if(e.getSource().equals(print)){
		            String str=area.getText();
		            String t=a.getText();
		            int i = Integer.parseInt(a.getText());
		            try {
		            	Scanner in = new Scanner(new File("money.txt"));
				        while (in.hasNextLine()) {
					         String str1 = in.nextLine();
					         String strr = str1.trim();
					         String[] abc = strr.split("[\\p{Space}]+");
					         String str2 = abc[0];
					         int m = Integer.parseInt(str2);
		            	FileWriter fw=new FileWriter("tip.txt",true);
		                fw.write("\r\n"+"*************************************************"+"\r\n");
		                fw.write(str+"\r\n");
		                fw.write("共计:"+s+"元\r\n");
		                fw.write("收您:"+t+"元\r\n");
		                fw.write("您会员卡内还剩:"+(m)+"元\r\n");
		                fw.write(d+"\r\n");
		                fw.write("\r\n"+"*************************************************"+"\r\n");
		                fw.close();
				        }
		                JOptionPane.showConfirmDialog(null, "打印成功","欢迎下次光临",JOptionPane.CLOSED_OPTION,JOptionPane.INFORMATION_MESSAGE);
		            }catch (IOException e1) {
	                    e1.printStackTrace();
	                } 
			}
			}
		}
}

7、优惠券支付代码

package com;

import java.awt.Container;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class KFC_count2 extends JFrame{
    Container m;
	
	JButton ok=new JButton("确定");
	JButton cancel=new JButton("取消");
	JButton print=new JButton("打印");
	JLabel account=new JLabel("总计");
	JLabel account1=new JLabel("支付");
	JLabel account2=new JLabel("优惠券");
	ImageIcon picture=new ImageIcon("img/21.jpg");
	
	Date date = new Date();
	String d=String.format("%tc", date);
	
	JTextArea area=new JTextArea(); 
	
	JTextField a=new JTextField();
	JTextField b=new JTextField("1");
	
	String s;
	
	public KFC_count2(int sum,JTextField accounttext,JTextArea text) {
				
		s = String.valueOf(sum); 
		
		area=text;
		
		this.setResizable(false);
		this.setLocation(500,250);
		this.setSize(500,500);
		this.setVisible(true);
		this.setTitle("您已选择优惠券支付");
		
		JPanel jpmian=new JPanel();
	    
		text.setLineWrap(true);
		
		jpmian.add(text);
		jpmian.add(account);
		jpmian.add(accounttext);
		jpmian.add(ok);
		jpmian.add(cancel);
		jpmian.add(account1);
		jpmian.add(account2);
		jpmian.add(b);
		jpmian.add(print);
		jpmian.add(a);
		
		m=getContentPane();	
		
		ok.setSelected(false);
		cancel.setSelected(false);
		print.setSelected(false);
		
		ok.setBounds(70, 180, 100, 50);
		cancel.setBounds(350, 180, 100, 50);
		print.setBounds(215, 180, 100, 50);
		account1.setBounds(297, 80, 40, 50);
		a.setBounds(328, 100, 70, 23);
		account2.setBounds(297, 120, 40, 50);
		b.setBounds(340, 138, 70, 23);
		
		this.add(ok);
		this.add(cancel);
		this.add(print);
		this.add(account1);
		this.add(a);
		this.add(account2);
		this.add(b);

		
		ok.addMouseListener(new Pay());
		cancel.addMouseListener(new OKClick());
		print.addMouseListener(new print());
		
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		
		m.add(jpmian);
		
		this.setVisible(true);
	}
	
	private class OKClick extends MouseAdapter{
		public void mouseClicked(MouseEvent e) {
			if(e.getSource().equals(cancel)) {
				KFC_ORDER t1=new KFC_ORDER();
				dispose();
			}
		}
	}
	
		private class Pay extends MouseAdapter{
				
		public void mouseClicked(MouseEvent e) {
		
			int i = Integer.parseInt(a.getText());
			int j=Integer.parseInt(s);
			
			if(e.getSource().equals(ok)) {
				if(i+50==j) {
					JOptionPane.showConfirmDialog(null, "您已成功使用优惠券,立减50元","欢迎下次光临",JOptionPane.CLOSED_OPTION,JOptionPane.INFORMATION_MESSAGE);
				}
				else if(((a).getText()).equals(""))
					JOptionPane.showConfirmDialog(null, "请支付","错误",JOptionPane.CANCEL_OPTION,JOptionPane.WARNING_MESSAGE);//JOptionPane 定制四种不同种类的标准对话框,ConfirmDialog 确认对话框。提出问题,然后由用户自己来确认,可以直接弹出对话框
				else if(i+50<j)
					JOptionPane.showConfirmDialog(null, "支付有误","错误",JOptionPane.CANCEL_OPTION,JOptionPane.WARNING_MESSAGE);
				else if(i+50>j)
					JOptionPane.showConfirmDialog(null, ("找您"+(i+50-j)+"元"),"欢迎下次光临",JOptionPane.CANCEL_OPTION,JOptionPane.INFORMATION_MESSAGE);		
			}
			else {
				System.exit(0);
			}
		}
	}
		
		private class print extends MouseAdapter{
			public void mouseClicked(MouseEvent e) {
				if(e.getSource().equals(print)){
		            String str=area.getText();
		            String t=a.getText();
		            int i = Integer.parseInt(a.getText());
					int j = Integer.parseInt(s);
		            try {		            	
		            	FileWriter fw=new FileWriter("tip.txt",true);
		                fw.write("\r\n"+"*************************************************"+"\r\n");
		                fw.write(str+"\r\n");
		                fw.write("共计:"+s+"元\r\n");
		                fw.write("收您:"+t+"元\r\n");
		                fw.write("您已使用优惠券,立减50元");
		                fw.write("找您:"+(i+50-j)+"元\r\n");
		                fw.write(d+"\r\n");
		                fw.write("\r\n"+"*************************************************"+"\r\n");
		                fw.close();
		                JOptionPane.showConfirmDialog(null, "打印成功","欢迎下次光临",JOptionPane.CLOSED_OPTION,JOptionPane.INFORMATION_MESSAGE);
		            }catch (IOException e1) {
	                    e1.printStackTrace();
	                } 
			}
			}
		}

}

猜你喜欢

转载自blog.csdn.net/qq_41890177/article/details/90142968