同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能:
1.正常餐品结算和找零。
2.基本套餐结算和找零。
3.使用优惠劵购买餐品结算和找零。
4.可在一定时间段参与店内活动(自行设计或参考官网信息)。
5.模拟打印小票的功能(写到文件中)。
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.*;
import java.text.SimpleDateFormat;
import java.util.*;
import java.math.*;
import java.awt.event.MouseAdapter;
import java.awt.image.ImageObserver;
import java.awt.image.ImageProducer;
import java.net.URL;
import java.util.logging.SimpleFormatter;
import static java.lang.Math.random;
public class Mykfc extends Panel{
public static void main(String[] args){
//创建frame及panel容器
JFrame frame=new JFrame("KFC点餐");
JPanel panel1=new JPanel();
//设置label标签
JLabel label1=new JLabel("应付价钱");
JLabel label2=new JLabel("实付价钱");
JLabel label3=new JLabel("优惠折扣(如不选择则默认为无折扣)");
JLabel label4=new JLabel("结余");
JLabel label5=new JLabel("汉堡个数(20元一个)");
JLabel label6=new JLabel("可乐瓶数(5元一个)");
JLabel label7=new JLabel("薯条(10元一个)");
JLabel label8=new JLabel("套餐一:香辣鸡腿堡+可乐+薯条");
JLabel label9=new JLabel("套餐二:香辣鸡腿堡+可乐+冰淇淋+薯条");
JLabel label10=new JLabel("套餐三:由本店随机奉上");
JLabel label11=new JLabel("亲!如果已选择本店套餐请不要在选择具体商品哦!如果您非要选择具体商品则会按您所输入的商品进行计费!");
//设置三个空容器来存储图片
JLabel label12=new JLabel();
JLabel label13=new JLabel();
JLabel label14=new JLabel();
ImageIcon icon1=new ImageIcon("H:\\java\\编译\\inteli idea\\文件\\Kfc\\1.jpg"); //如果不能修改请将路径改为自己的文件位置
icon1.setImage(icon1.getImage().getScaledInstance(100,100,1));
label12.setIcon(icon1);
ImageIcon icon2=new ImageIcon("H:\\java\\编译\\inteli idea\\文件\\Kfc\\2.jpg"); //如果不能修改请将路径改为自己的文件位置
icon2.setImage(icon2.getImage().getScaledInstance(100,100,1));
label13.setIcon(icon2);
ImageIcon icon3=new ImageIcon("H:\\java\\编译\\inteli idea\\文件\\Kfc\\3.jpg"); //如果不能修改请将路径改为自己的文件位置
icon3.setImage(icon3.getImage().getScaledInstance(100,100,1));
label14.setIcon(icon3);
//创建文本框
JTextField textField1=new JTextField(20);
JTextField textField2=new JTextField(20);
JTextField textField3=new JTextField(20);
JTextField textField4=new JTextField(20);
JTextField textField5=new JTextField(20);
JTextField textField6=new JTextField(20);
JTextField textField7=new JTextField(20);
JCheckBox checkBox1=new JCheckBox();
JCheckBox checkBox2=new JCheckBox();
JCheckBox checkBox3=new JCheckBox();
//创建按钮
JButton button1=new JButton("计算应付价钱(ALT+1)");
JButton button2=new JButton("计算找零(ALT+2)");
JButton button3=new JButton("save(ALT+3)");
//设置按钮快捷键
button1.setMnemonic(KeyEvent.VK_1);
button2.setMnemonic(KeyEvent.VK_2);
button3.setMnemonic(KeyEvent.VK_3);
//设置按钮字体
button1.setFont(new Font("微软黑体",Font.BOLD,20));
button2.setFont(new Font("微软黑体",Font.BOLD,20));
button3.setFont(new Font("微软黑体",Font.BOLD,20));
//设置label标签属性
label1.setSize(500,500);
label2.setSize(500,500);
label3.setSize(500,500);
label4.setSize(500,500);
label5.setSize(500,500);
label6.setSize(500,500);
label7.setSize(500,500);
textField1.setSize(100,100);
textField2.setSize(100,100);
textField3.setSize(100,100);
textField3.setText(""+1);
textField4.setSize(100,100);
textField5.setSize(100,100);
textField6.setSize(100,100);
textField7.setSize(100,100);
label1.setFont(new Font("微软黑体",Font.BOLD,50));
label2.setFont(new Font("微软黑体",Font.BOLD,50));
label3.setFont(new Font("微软黑体",Font.BOLD,50));
label4.setFont(new Font("微软黑体",Font.BOLD,50));
label5.setFont(new Font("微软黑体",Font.BOLD,50));
label6.setFont(new Font("微软黑体",Font.BOLD,50));
label7.setFont(new Font("微软黑体",Font.BOLD,50));
label8.setFont(new Font("微软黑体",Font.BOLD,50));
label9.setFont(new Font("微软黑体",Font.BOLD,50));
label10.setFont(new Font("微软黑体",Font.BOLD,50));
label11.setFont(new Font("微软雅黑", Font.BOLD, 20));
label11.setForeground(Color.red);
textField1.setFont(new Font("微软黑体",Font.BOLD,20));
textField2.setFont(new Font("微软黑体",Font.BOLD,20));
textField3.setFont(new Font("微软黑体",Font.BOLD,20));
textField4.setFont(new Font("微软黑体",Font.BOLD,20));
textField5.setFont(new Font("微软黑体",Font.BOLD,20));
textField6.setFont(new Font("微软黑体",Font.BOLD,20));
textField7.setFont(new Font("微软黑体",Font.BOLD,20));
//将创建的组件添加到顶层容器中
panel1.add(label8);
panel1.add(checkBox1);
panel1.add(label9);
panel1.add(checkBox2);
panel1.add(label10);
panel1.add(checkBox3);
panel1.add(label11);
panel1.add(label5);
panel1.add(label12);
panel1.add(textField5);
panel1.add(label6);
panel1.add(label13);
panel1.add(textField6);
panel1.add(label7);
panel1.add(label14);
panel1.add(textField7);
panel1.add(label1);
panel1.add(textField1);
panel1.add(label2);
panel1.add(textField2);
panel1.add(label3);
panel1.add(textField3);
panel1.add(label4);
panel1.add(textField4);
panel1.add(button1);
panel1.add(button2);
panel1.add(button3);
//添加按钮的事件监听器
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int d1=Integer.parseInt(textField5.getText());
int d2=Integer.parseInt(textField6.getText());
int d3=Integer.parseInt(textField7.getText());
textField1.setText(""+((d1*20)+(d2*5)+(d3*10)));
}
});
button2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
double n1=Double.parseDouble(textField1.getText());
double n2=Double.parseDouble(textField2.getText());
double n3=Double.parseDouble(textField3.getText());
textField4.setText(""+(n2-n1*n3));
}
});
checkBox1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textField1.setText(""+((1*20)+(1*5)+(2*10)));
}
});
checkBox2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textField1.setText(""+((1*20)+(1*5)+(1*10)+(1*15)));
}
});
checkBox3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textField1.setText(""+(int)(random()*50+25));
}
});
//将panel添加至frame
frame.add(panel1);
frame.setBounds(0,0, 1000,1000);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
/*
JScrollBar scrollBar=new JScrollBar();
panel.add(scrollBar);
JTabbedPane tabbedPane=new JTabbedPane();
panel.add(tabbedPane);
JRadioButton radioButton=new JRadioButton();
panel.add(radioButton);
JList list=new JList();
panel.add(list);
*/
//double a1=Double.parseDouble(textField1.getText());
button3.addActionListener(new ActionListener() { //将按钮3设置绑定为存储并打印票据的方式
@Override
public void actionPerformed(ActionEvent e) {
Date d=new Date();
SimpleDateFormat day=new SimpleDateFormat("yy-MM-dd HH:mm:ss");
double d1=Double.parseDouble(textField1.getText());
double d2=Double.parseDouble(textField2.getText());
double d3=Double.parseDouble(textField3.getText());
double d4=Double.parseDouble(textField4.getText());
double d5=Double.parseDouble(textField5.getText());
double d6=Double.parseDouble(textField6.getText());
double d7=Double.parseDouble(textField7.getText());
try{
FileWriter fw = new FileWriter("otherout1.txt", true);
fw.write("欢迎光临肯德基:"+"\r\n");
fw.write("------------------------------"+"\r\n");
fw.write("当前订单产生时间为:"+day.format(d)+"\r\n");
fw.write("您共点汉堡:"+d5+"个"+"\t"+"应付"+(d5*20)+"元"+"\r\n");
fw.write("您共点可乐:"+d6+"瓶"+"\t"+"应付"+(d6*5)+"元"+"\r\n");
fw.write("您共点薯条:"+d7+"包"+"\t"+"应付"+(d7*10)+"元"+"\r\n");
fw.write("应付价钱:"+d1+"\r\n");
fw.write("实付价钱:"+d2+"\r\n");
fw.write("由于您拥有"+d3+"折扣的优惠券"+"\r\n");
fw.write("您最终应付价格为:"+d4+"\r\n");
fw.write("------------------------------"+"\r\n");
fw.write("谢谢惠顾!期待您的再次光临!"+"\r\n");
fw.close();
} catch (IOException a){
a.printStackTrace();
}
}
});
}
}
运行截图:
不太符合正常审美(啊哈哈哈)!
票据打印: