zoukankan      html  css  js  c++  java
  • java抽象类实现计算景区门票

    需要为一个景区实现计算景区门票的程序,已知成年人的门票价格是100元,儿童票打3折,老年票打5折。使用抽象类来为任意多张不同类型的票计算总价。其UML类图如下所示。

    程序实现结果如下图所示:

    要求:给出程序具体的实现代码,程序运行正确稳定。

    //package en.edu.shengda;
    /**
     *
     * @author 201705050153 张宜强
     */
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    
    abstract class Ticket {
        private float price;
        public Ticket() {
            this.price=100;
        }
        public Ticket (float price) {
            this.price=price;
        }
        public float getPrice() {
            return price;
        }
        public abstract float singlePrice();
    }
    class YoungTicket extends Ticket{
            public float singlePrice() {
                return this.getPrice();
            }
            public YoungTicket() {
                
            }
            public YoungTicket(float price) {
                super(price);
            }
    }
    class OldTicket extends Ticket{
            public float singlePrice() {
                return (float) (this.getPrice()*0.5);
            }
            public OldTicket() {
                
            }
            public OldTicket(float price) {
                super(price);
            }
    }
    class ChildTicket extends Ticket{
            public float singlePrice() {
                return (float) (this.getPrice()*0.3);
            }
            public ChildTicket() {
                
            }
            public ChildTicket(float price) {
                super(price);
            }
    }
    
    public class Main extends javax.swing.JFrame {
        
        public Main() {
            initComponents();
        }
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
        private void initComponents() {
    
            jScrollBar1 = new javax.swing.JScrollBar();
            jScrollPane1 = new javax.swing.JScrollPane();
            jTextPane1 = new javax.swing.JTextPane();
            jScrollPane3 = new javax.swing.JScrollPane();
            jTextPane2 = new javax.swing.JTextPane();
            jScrollPane4 = new javax.swing.JScrollPane();
            jTextPane3 = new javax.swing.JTextPane();
            jScrollPane5 = new javax.swing.JScrollPane();
            jTextPane4 = new javax.swing.JTextPane();
            jButton1 = new javax.swing.JButton();
            jButton1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                   
                   String YoungNumber = jTextPane1.getText(); 
                   int a=Integer.parseInt(YoungNumber);
                   String OldNumber = jTextPane2.getText(); 
                   int b=Integer.parseInt(OldNumber);
                   String ChildNumber = jTextPane3.getText(); 
                   int c=Integer.parseInt(ChildNumber);
                   YoungTicket Ticket1= new YoungTicket();
                   OldTicket Ticket2= new OldTicket();
                   ChildTicket Ticket3= new ChildTicket();
                   float TotalPrice = Ticket1.singlePrice()*a + Ticket2.singlePrice()*b + Ticket3.singlePrice()*c;
                   String ans = Float.toString(TotalPrice);
                   jTextPane4.setText(ans);
                }
            });
            jLabel1 = new javax.swing.JLabel();
            jLabel2 = new javax.swing.JLabel();
            jLabel3 = new javax.swing.JLabel();
            jLabel4 = new javax.swing.JLabel();
            jLabel5 = new javax.swing.JLabel();
            jLabel6 = new javax.swing.JLabel();
            jLabel7 = new javax.swing.JLabel();
            jLabel8 = new javax.swing.JLabel();
            jLabel9 = new javax.swing.JLabel();
            jTextField1 = new javax.swing.JTextField();
    
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    
            jScrollPane1.setViewportView(jTextPane1);
    
            jScrollPane3.setViewportView(jTextPane2);
    
            jScrollPane4.setViewportView(jTextPane3);
    
            jScrollPane5.setViewportView(jTextPane4);
    
            jButton1.setText("计算");
    
            jLabel1.setText("张");
    
            jLabel2.setText("张");
    
            jLabel3.setText("张");
    
            jLabel4.setText("元");
    
            jLabel5.setText("成年票:");
    
            jLabel6.setText("门票标准单价:");
    
            jLabel7.setText("老年票:");
    
            jLabel8.setText("儿童票:");
    
            jLabel9.setText("总价:");
    
            jTextField1.setText("100");
    
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGap(53, 53, 53)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(layout.createSequentialGroup()
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(jLabel6)
                                .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 222, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jLabel8)
                                .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jLabel9))
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 6, Short.MAX_VALUE)
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(layout.createSequentialGroup()
                                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                        .addComponent(jScrollPane5, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 59, Short.MAX_VALUE)
                                        .addComponent(jScrollPane4, javax.swing.GroupLayout.Alignment.LEADING)
                                        .addComponent(jScrollPane3, javax.swing.GroupLayout.Alignment.LEADING)
                                        .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING))
                                    .addGap(18, 18, 18)
                                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                        .addComponent(jLabel1)
                                        .addComponent(jLabel2)
                                        .addComponent(jLabel3)
                                        .addComponent(jLabel4)))
                                .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 79, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGap(108, 108, 108))
                        .addGroup(layout.createSequentialGroup()
                            .addComponent(jButton1)
                            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(layout.createSequentialGroup()
                            .addGap(48, 48, 48)
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel6)
                                .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGap(40, 40, 40)
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(layout.createSequentialGroup()
                                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                        .addComponent(jScrollPane1)
                                        .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                        .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                                .addGroup(layout.createSequentialGroup()
                                    .addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE, 16, Short.MAX_VALUE)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                    .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)))
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, 25, Short.MAX_VALUE)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addComponent(jLabel8)
                                    .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                            .addGap(18, 18, 18)
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                .addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jLabel9)))
                        .addGroup(layout.createSequentialGroup()
                            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jLabel4)))
                    .addGap(37, 37, 37)
                    .addComponent(jButton1)
                    .addContainerGap())
            );
    
            pack();
        }// </editor-fold>                        
    
        public static void main(String args[]) {
       
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new Main().setVisible(true);
                    //System.out.println(jTextPane1.getText());
                }
            });
        }
        // Variables declaration - do not modify                     
        private javax.swing.JButton jButton1;
        private javax.swing.JLabel jLabel1;
        private javax.swing.JLabel jLabel2;
        private javax.swing.JLabel jLabel3;
        private javax.swing.JLabel jLabel4;
        private javax.swing.JLabel jLabel5;
        private javax.swing.JLabel jLabel6;
        private javax.swing.JLabel jLabel7;
        private javax.swing.JLabel jLabel8;
        private javax.swing.JLabel jLabel9;
        private javax.swing.JScrollBar jScrollBar1;
        private javax.swing.JScrollPane jScrollPane1;
        private javax.swing.JScrollPane jScrollPane3;
        private javax.swing.JScrollPane jScrollPane4;
        private javax.swing.JScrollPane jScrollPane5;
        private javax.swing.JTextField jTextField1;
        private javax.swing.JTextPane jTextPane1;
        private javax.swing.JTextPane jTextPane2;
        private javax.swing.JTextPane jTextPane3;
        private javax.swing.JTextPane jTextPane4;
        // End of variables declaration                   
    }
    

    程序运行结果:

  • 相关阅读:
    jmeter--同步定时器
    手机配置jmete器
    jmeter---http授权管理器
    jmeter---http信息头管理器
    mysql---聚合函数
    jmeter---BeanSheel提取数组
    简述MYSQL的优化
    java常用设计模式
    什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用?
    String s = new String("xyz");创建了几个String Object? 二者之间有什么区别?
  • 原文地址:https://www.cnblogs.com/zyq1758043090/p/11852476.html
Copyright © 2011-2022 走看看