zoukankan      html  css  js  c++  java
  • 201772020113 李清华《面向对象程序设计(java)》第18周学习总结

    1、实验目的与要求

    (1) 综合掌握java基本程序结构;

    (2) 综合掌握java面向对象程序设计特点;

    (3) 综合掌握java GUI 程序设计结构;

    (4) 综合掌握java多线程编程模型;

    (5) 综合编程练习。

    2、实验内容和步骤

    任务1:填写课程课后调查问卷,网址:https://www.wjx.cn/jq/33108969.aspx。

    任务2:综合编程练习

    练习1:设计一个用户信息采集程序,要求如下:

    (1)  用户信息输入界面如下图所示:

     

    (1)用户点击提交按钮时,用户输入信息显示控制台界面;

    (2)用户点击重置按钮后,清空用户已输入信息;

    (3)点击窗口关闭,程序退出。

     1 package fff;
     2 import java.awt.EventQueue;
     3 
     4 import javax.swing.JFrame;
     5 
     6 public class Main {
     7     public static void main(String[] args) {
     8         EventQueue.invokeLater(() -> {
     9             DemoJFrame page = new DemoJFrame();
    10         });
    11     }
    12 }
    View Code
     1 package fff;
     2 import java.awt.Dimension;
     3 import java.awt.Toolkit;
     4 import java.awt.Window;
     5 
     6 public class WinCenter {
     7     public static void center(Window win){
     8         Toolkit tkit = Toolkit.getDefaultToolkit();
     9         Dimension sSize = tkit.getScreenSize();
    10         Dimension wSize = win.getSize();
    11         if(wSize.height > sSize.height){
    12             wSize.height = sSize.height;
    13         }
    14         if(wSize.width > sSize.width){
    15             wSize.width = sSize.width;
    16         }
    17         win.setLocation((sSize.width - wSize.width)/ 2, (sSize.height - wSize.height)/ 2);
    18     }
    19 }
    View Code
      1 package fff;
      2 import java.awt.*;
      3 import java.awt.event.*;
      4 import javax.swing.*;
      5 import javax.swing.border.*;
      6 public class DemoJFrame extends JFrame {
      7     public DemoJFrame() {
      8         JPanel panel1 = new JPanel();
      9         panel1.setPreferredSize(new Dimension(700, 45));
     10         panel1.setLayout(new GridLayout(1, 4));
     11         JLabel label1 = new JLabel("Name:");
     12         JTextField j1 = new JTextField("");
     13         JLabel label2 = new JLabel("Qualification:");
     14         JComboBox<Object> j2 = new JComboBox<>();
     15         j2.addItem("chuzhong");
     16         j2.addItem("gaozhong");
     17         j2.addItem("undergraduate");
     18         panel1.add(label1);
     19         panel1.add(j1);
     20         panel1.add(label2);
     21         panel1.add(j2);
     22 
     23         JPanel panel2 = new JPanel();
     24         panel2.setPreferredSize(new Dimension(700, 65));
     25         panel2.setLayout(new GridLayout(1, 4));
     26         JLabel label3 = new JLabel("Address:");
     27         JTextArea j3 = new JTextArea();
     28         JLabel label4 = new JLabel("Hobby:");
     29         JPanel p = new JPanel();
     30         p.setLayout(new GridLayout(3, 1));
     31         p.setBorder(BorderFactory.createLineBorder(null));
     32         JCheckBox c1 = new JCheckBox("Reading");
     33         JCheckBox c2 = new JCheckBox("Singing");
     34         JCheckBox c3 = new JCheckBox("Dancing");
     35         p.add(c1);
     36         p.add(c2);
     37         p.add(c3);
     38         panel2.add(label3);
     39         panel2.add(j3);
     40         panel2.add(label4);
     41         panel2.add(p);
     42 
     43         JPanel panel3 = new JPanel();
     44         panel3.setPreferredSize(new Dimension(700, 150));
     45         FlowLayout flowLayout1 = new FlowLayout(FlowLayout.LEFT, 70, 40);
     46         panel3.setLayout(flowLayout1);
     47         JLabel label5 = new JLabel("Sex:");
     48         JPanel p1 = new JPanel();
     49         p1.setLayout(new GridLayout(2,1));
     50         p1.setBorder(BorderFactory.createLineBorder(null));
     51         ButtonGroup bu = new ButtonGroup();
     52         JRadioButton jr1 = new JRadioButton("Male");
     53         JRadioButton jr2 = new JRadioButton("Female");
     54         bu.add(jr1);
     55         bu.add(jr2);
     56         p1.add(jr1);
     57         p1.add(jr2);
     58         panel3.add(label5);
     59         panel3.add(p1);
     60         add(panel1);
     61         add(panel2);
     62         add(panel3);
     63 
     64         JPanel panel4 = new JPanel();
     65         panel4.setPreferredSize(new Dimension(700, 150));
     66         JButton b1 = new JButton("Validate");
     67         panel4.add(b1);
     68         JButton b2 = new JButton("Reset");
     69         panel4.add(b2);
     70         add(panel4);
     71 
     72         FlowLayout flowLayout = new FlowLayout();
     73         this.setLayout(flowLayout);
     74         this.setTitle("Students Detail");
     75         this.setBounds(300, 300, 800, 400);
     76         this.setVisible(true);
     77         this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
     78 
     79         b1.addActionListener(new ActionListener() {
     80 
     81         
     82             public void actionPerformed(ActionEvent e) {
     83                 // TODO 自动生成的方法存根
     84                 String xueli = j2.getSelectedItem().toString();
     85                 System.out.println("Name:" + j1.getText());
     86                 System.out.println("Qualification:" + xueli);
     87                 String hobbystring = "Hobby:";
     88                 if (c1.isSelected()) {
     89                     hobbystring += "Reading";
     90                 }
     91                 if (c2.isSelected()) {
     92                     hobbystring += "Singing";
     93                 }
     94                 if (c3.isSelected()) {
     95                     hobbystring += "Dancing";
     96                 }
     97                 System.out.println("Address:" + j3.getText());
     98                 if (jr1.isSelected()) {
     99                     System.out.println("Sex:Male");
    100                 }
    101                 if (jr2.isSelected()) {
    102                     System.out.println("Sex:Female");
    103                 }
    104                 System.out.println(hobbystring);
    105             }
    106         });
    107         b2.addActionListener(new ActionListener() {
    108 
    109             public void actionPerformed(ActionEvent e) {
    110                 // TODO 自动生成的方法存根
    111                 j1.setText(null);
    112                 j3.setText(null);
    113                 j2.setSelectedIndex(0);
    114                 c1.setSelected(false);
    115                 c2.setSelected(false);
    116                 c3.setSelected(false);
    117                 bu.clearSelection();
    118             }
    119         });
    120     }
    121 
    122     public static void main(String args[]) {
    123         new DemoJFrame();
    124     }
    125 
    126 }
    View Code

    练习2:采用GUI界面设计以下程序:

    l  编制一个程序,将身份证号.txt 中的信息读入到内存中;

    l  按姓名字典序输出人员信息;

    l  查询最大年龄的人员信息;

    l  查询最小年龄人员信息;

    l  输入你的年龄,查询身份证号.txt中年龄与你最近人的姓名、身份证号、年龄、性别和出生地;

    l  查询人员中是否有你的同乡。

    l  输入身份证信息,查询所提供身份证号的人员信息,要求输入一个身份证数字时,查询界面就显示满足查询条件的查询结果,且随着输入的数字的增多,查询匹配的范围逐渐缩小。

     1 package Demo;
     2 
     3 import java.awt.*;
     4 import javax.swing.*;
     5 
     6 public class ButtonTest {
     7     public static void main(String[] args) {
     8         EventQueue.invokeLater(() -> {
     9             JFrame frame = new Main();
    10             frame.setTitle("身份证");
    11             frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    12             frame.setVisible(true);
    13         });
    14     }
    15 }
    View Code
      1 package Demo;
      2 
      3 import java.io.BufferedReader;
      4 import java.io.File;
      5 import java.io.FileInputStream;
      6 import java.io.InputStreamReader;
      7 import java.io.FileNotFoundException;
      8 import java.io.IOException;
      9 import java.util.ArrayList;
     10 import java.util.Arrays;
     11 import java.util.Collections;
     12 import java.util.Scanner;
     13 import java.awt.*;
     14 import javax.swing.*;
     15 import java.awt.event.*;
     16 
     17 public class Main extends JFrame {
     18     private static ArrayList<Student> studentlist;
     19     private static ArrayList<Student> list;
     20     private JPanel panel;
     21     private JPanel buttonPanel;
     22     private static final int DEFAULT_WITH = 600;
     23     private static final int DEFAULT_HEIGHT = 300;
     24 
     25     public Main() {
     26         studentlist = new ArrayList<>();
     27         Scanner scanner = new Scanner(System.in);
     28         File file = new File("studentfile.txt");
     29         try {
     30             FileInputStream fis = new FileInputStream(file);
     31             BufferedReader in = new BufferedReader(new InputStreamReader(fis));
     32             String temp = null;
     33             while ((temp = in.readLine()) != null) {
     34 
     35                 Scanner linescanner = new Scanner(temp);
     36 
     37                 linescanner.useDelimiter(" ");
     38                 String name = linescanner.next();
     39                 String number = linescanner.next();
     40                 String sex = linescanner.next();
     41                 String age = linescanner.next();
     42                 String province = linescanner.nextLine();
     43                 Student student = new Student();
     44                 student.setName(name);
     45                 student.setnumber(number);
     46                 student.setsex(sex);
     47                 int a = Integer.parseInt(age);
     48                 student.setage(a);
     49                 student.setprovince(province);
     50                 studentlist.add(student);
     51 
     52             }
     53         } catch (FileNotFoundException e) {
     54             System.out.println("学生信息文件找不到");
     55             e.printStackTrace();
     56         } catch (IOException e) {
     57             System.out.println("学生信息文件读取错误");
     58             e.printStackTrace();
     59         }
     60         panel = new JPanel();
     61         panel.setLayout(new BorderLayout());
     62         JTextArea jt = new JTextArea();
     63         panel.add(jt);
     64         add(panel, BorderLayout.NORTH);
     65 
     66         buttonPanel = new JPanel();
     67         buttonPanel.setLayout(new GridLayout(1, 7));
     68         JButton jButton = new JButton("字典排序");
     69         JButton jButton1 = new JButton("年龄最大和年龄最小");
     70         JLabel lab = new JLabel("猜猜你的老乡");
     71         JTextField jt1 = new JTextField();
     72         JLabel lab1 = new JLabel("找找同龄人(年龄相近):");
     73         JTextField jt2 = new JTextField();
     74         JLabel lab2 = new JLabel("输入你的身份证号码:");
     75         JTextField jt3 = new JTextField();
     76         JButton jButton2 = new JButton("退出");
     77 
     78         jButton.addActionListener(new ActionListener() {
     79             public void actionPerformed(ActionEvent e) {
     80                 Collections.sort(studentlist);
     81                 jt.setText(studentlist.toString());
     82             }
     83         });
     84         jButton1.addActionListener(new ActionListener() {
     85             public void actionPerformed(ActionEvent e) {
     86                 int max = 0, min = 100;
     87                 int j, k1 = 0, k2 = 0;
     88                 for (int i = 1; i < studentlist.size(); i++) {
     89                     j = studentlist.get(i).getage();
     90                     if (j > max) {
     91                         max = j;
     92                         k1 = i;
     93                     }
     94                     if (j < min) {
     95                         min = j;
     96                         k2 = i;
     97                     }
     98 
     99                 }
    100                 jt.setText("年龄最大:" + studentlist.get(k1) + "年龄最小:" + studentlist.get(k2));
    101             }
    102         });
    103         jButton2.addActionListener(new ActionListener() {
    104             public void actionPerformed(ActionEvent e) {
    105                 dispose();
    106                 System.exit(0);
    107             }
    108         });
    109         jt1.addActionListener(new ActionListener() {
    110             public void actionPerformed(ActionEvent e) {
    111                 String find = jt1.getText();
    112                 String text = "";
    113                 String place = find.substring(0, 3);
    114                 for (int i = 0; i < studentlist.size(); i++) {
    115                     if (studentlist.get(i).getprovince().substring(1, 4).equals(place)) {
    116                         text += "
    " + studentlist.get(i);
    117                         jt.setText("老乡:" + text);
    118                     }
    119                 }
    120             }
    121         });
    122         jt2.addActionListener(new ActionListener() {
    123             public void actionPerformed(ActionEvent e) {
    124                 String yourage = jt2.getText();
    125                 int a = Integer.parseInt(yourage);
    126                 int near = agenear(a);
    127                 int value = a - studentlist.get(near).getage();
    128                 jt.setText("年龄相近:" + studentlist.get(near));
    129             }
    130         });
    131 
    132         jt3.addKeyListener(new KeyAdapter() {
    133             public void keyTyped(KeyEvent e) {
    134                 list = new ArrayList<>();
    135                 Collections.sort(studentlist);
    136                 String key = jt3.getText();
    137 
    138                 for (int i = 1; i < studentlist.size(); i++) {
    139                     if (studentlist.get(i).getnumber().contains(key)) {
    140                         list.add(studentlist.get(i));
    141                         jt.setText("emmm!你可能是:
    " + list);
    142                     }
    143                 }
    144             }
    145 
    146         });
    147         buttonPanel.add(jButton);
    148         buttonPanel.add(jButton1);
    149         buttonPanel.add(lab);
    150         buttonPanel.add(jt1);
    151         buttonPanel.add(lab1);
    152         buttonPanel.add(jt2);
    153         buttonPanel.add(lab2);
    154         buttonPanel.add(jt3);
    155         buttonPanel.add(jButton2);
    156         add(buttonPanel, BorderLayout.SOUTH);
    157         setSize(DEFAULT_WITH, DEFAULT_HEIGHT);
    158     }
    159 
    160     public static int agenear(int age) {
    161         int min = 53, value = 0, k = 0;
    162         for (int i = 0; i < studentlist.size(); i++) {
    163             value = studentlist.get(i).getage() - age;
    164             if (value < 0)
    165                 value = -value;
    166             if (value < min) {
    167                 min = value;
    168                 k = i;
    169             }
    170         }
    171         return k;
    172     }
    173 
    174 }
    View Code
     1 package Demo;
     2 
     3 public class Student implements Comparable<Student> {
     4 
     5     private String name;
     6     private String number ;
     7     private String sex ;
     8     private int age;
     9     private String province;
    10    
    11     public String getName() {
    12         return name;
    13     }
    14     public void setName(String name) {
    15         this.name = name;
    16     }
    17     public String getnumber() {
    18         return number;
    19     }
    20     public void setnumber(String number) {
    21         this.number = number;
    22     }
    23     public String getsex() {
    24         return sex ;
    25     }
    26     public void setsex(String sex ) {
    27         this.sex =sex ;
    28     }
    29     public int getage() {
    30 
    31         return age;
    32         }
    33         public void setage(int age) {
    34             // int a = Integer.parseInt(age);
    35         this.age= age;
    36         }
    37 
    38     public String getprovince() {
    39         return province;
    40     }
    41     public void setprovince(String province) {
    42         this.province=province ;
    43     }
    44 
    45     public int compareTo(Student o) {
    46        return this.name.compareTo(o.getName());
    47     }
    48 
    49     public String toString() {
    50         return  name+"	"+sex+"	"+age+"	"+number+"	"+province+"
    ";
    51     }    
    52 }
    View Code

    练习3:采用GUI界面设计以下程序

    l  编写一个计算器类,可以完成加、减、乘、除的操作

    l  利用计算机类,设计一个小学生100以内数的四则运算练习程序,由计算机随机产生10道加减乘除练习题,学生输入答案,由程序检查答案是否正确,每道题正确计10分,错误不计分,10道题测试结束后给出测试总分;

    l  将程序中测试练习题及学生答题结果输出到文件,文件名为test.txt。

     1 package ui_test;
     2 
     3 public class Main {
     4 
     5     public static void main(String[] args) {
     6         MyExGUI lg = new MyExGUI();
     7         //new MyExGUI();
     8 
     9     }
    10 
    11 }
    View Code
      1 import java.awt.*;
      2 import java.awt.event.ActionEvent;
      3 import java.awt.event.ActionListener;
      4 import java.io.BufferedOutputStream;
      5 import java.io.File;
      6 import java.io.FileOutputStream;
      7 import java.io.IOException;
      8 import java.util.ArrayList;
      9 
     10 import javax.swing.*;
     11 
     12 public class MyExGUI extends JFrame {
     13     ArrayList<String> user_zongti = new ArrayList<String>();
     14     ArrayList<String> user_zonganswer = new ArrayList<String>();
     15     ArrayList<String> user_answer = new ArrayList<String>();
     16     ArrayList<String> true_answer = new ArrayList<String>();
     17     ArrayList<String> jta_timu = new ArrayList<String>();
     18     ArrayList<String> jta_zong = new ArrayList<String>();
     19     ArrayList<Integer> user_fenshu = new ArrayList<Integer>();
     20     JMenuBar jm; // 菜单条组件
     21     JMenu menu;// 菜单
     22     JMenuItem item1, item2;// 菜单项
     23     JMenu build; // 二级菜单
     24     JMenuItem file, project;
     25     TextArea answer_all = new TextArea();
     26     TextField jta = new TextField();
     27     TextField jta_answer = new TextField();
     28     JLabel num_answer = new JLabel();
     29     JLabel answer;
     30     JToolBar jtb;// 工具条
     31     JButton jb1, jb2, jb3, jb4, jb5, jb6, jb7, jb_next;
     32     int answer_count;
     33     int answer_fenshu;
     34 
     35     public MyExGUI() {
     36         // 创建菜单
     37         jm = new JMenuBar();
     38 
     39         menu = new JMenu("文件(F)");
     40         menu.setMnemonic('f'); // 助记符
     41 
     42         build = new JMenu("新建");
     43 
     44         file = new JMenuItem("文件");
     45         project = new JMenuItem("答题");
     46         item1 = new JMenuItem("保存(S)");
     47         item2 = new JMenuItem("退出");
     48 
     49         answer = new JLabel("第 1 题");
     50 
     51         // 添加菜单项至菜单上
     52         build.add(file);
     53         build.add(project);
     54 
     55         menu.add(build);
     56         menu.add(item1);
     57         menu.add(item2);
     58         menu.addSeparator();
     59         // 将菜单加入至菜单栏
     60         jm.add(menu);
     61 
     62         JPanel contentPanel = new JPanel();
     63         contentPanel.setLayout(null);
     64         JLabel daan = new JLabel("答案");
     65         JLabel dengyu = new JLabel("=");
     66         num_answer = answer;
     67         num_answer.setFont(new Font("宋体", Font.BOLD, 22));
     68         jb_next = new JButton("下一题");
     69         jta.setFont(new Font("宋体", Font.BOLD, 22));
     70         jta_answer.setFont(new Font("宋体", Font.BOLD, 22));
     71         jb_next.setFont(new Font("宋体", Font.BOLD, 22));
     72         daan.setFont(new Font("宋体", Font.BOLD, 22));
     73         dengyu.setFont(new Font("宋体", Font.BOLD, 22));
     74 
     75         contentPanel.add(num_answer);
     76         contentPanel.add(daan);
     77         contentPanel.add(dengyu);
     78         contentPanel.add(jta);
     79 
     80         contentPanel.add(jta_answer);
     81         contentPanel.add(answer_all);
     82         contentPanel.add(jb_next);
     83 
     84         num_answer.setBounds(90, 20, 130, 50);
     85         daan.setBounds(250, 20, 90, 50);
     86         jta.setBounds(50, 70, 150, 30);
     87         dengyu.setBounds(205, 70, 20, 20);
     88         jta_answer.setBounds(230, 70, 100, 30);
     89         jb_next.setBounds(350, 70, 110, 30);
     90         answer_all.setBounds(50, 120, 400, 300);
     91 
     92         this.setJMenuBar(jm); // 添加菜单栏,不能设定位置,会自动放在最上部
     93         this.add(contentPanel);
     94 
     95         this.setTitle("在线答题系统");
     96         this.setSize(600, 500);
     97         this.setVisible(true);
     98         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     99         item1.addActionListener(new ActionListener() {
    100             public void actionPerformed(ActionEvent arg0) {
    101                 FileOutputStream outSTr = null;
    102                 BufferedOutputStream Buff = null;
    103                 boolean flag = true;
    104                 File file;
    105                 // String test ;
    106                 do {
    107                     // test = "test"+count;
    108 
    109                     String inputValue = JOptionPane.showInputDialog("Please input file name");
    110                     file = new File(inputValue + "test.txt");
    111                     if (!file.exists()) {
    112                         // 创建文件
    113                         try {
    114 
    115                             flag = file.createNewFile();
    116 
    117                         } catch (IOException e) {
    118                             e.printStackTrace();
    119 
    120                         }
    121                         flag = false;
    122                     } else {
    123 
    124                         JOptionPane.showMessageDialog(null, "该文件名已存在,请重新输入", "ERROR", JOptionPane.ERROR_MESSAGE);
    125                         flag = true;
    126                     }
    127                 } while (flag);
    128                 // 写入文件
    129                 String u_answer;
    130                 try {
    131                     outSTr = new FileOutputStream(file);
    132                     Buff = new BufferedOutputStream(outSTr);
    133                     System.out.println("选择是后执行的代码" + user_zongti.size() + user_answer.size());
    134                     for (int i = 0; i < user_zongti.size(); i++) {
    135                         try {
    136                             Buff.write(user_zongti.get(i).getBytes());
    137                             Buff.write("    ".getBytes());
    138                             u_answer = user_answer.get(i);
    139                             if (u_answer.equals(""))
    140                                 u_answer = "没有作答";
    141 
    142                             Buff.write(u_answer.getBytes());
    143                             Buff.write("
    ".getBytes());
    144                         } catch (IOException e) {
    145                             e.printStackTrace();
    146                             i--;
    147                         }
    148                     }
    149                     Buff.flush();
    150                     Buff.close();
    151 
    152                 } catch (IOException e) {
    153                     e.printStackTrace();
    154                 }
    155                 try {
    156                     outSTr.close();
    157                 } catch (IOException e) {
    158                     e.printStackTrace();
    159                 }
    160                 user_zongti.clear();
    161                 user_answer.clear();
    162             }
    163         });
    164 
    165         project.addActionListener(new ActionListener() {
    166             public void actionPerformed(ActionEvent arg0) {
    167                 arithmetic art = new arithmetic();
    168                 true_answer = art.list_answer;
    169                 jta_timu = art.list_timu;
    170                 jta_zong = art.list;
    171                 answer_count = 1;
    172                 answer_all.setText("");
    173                 for (int i = 0; i < art.list_timu.size(); i++) {
    174                     user_zongti.add(jta_zong.get(i));
    175                     answer_all.append(jta_timu.get(i));
    176                     answer_all.append("
    ");
    177                 }
    178                 num_answer.setText("第 " + answer_count + " 题");
    179                 jta.setText(jta_timu.get(answer_count - 1));
    180                 answer_count++;
    181 
    182             }
    183         });
    184         jb_next.addActionListener(new ActionListener() {
    185             public void actionPerformed(ActionEvent arg0) {
    186                 String temp;
    187                 temp = jta_answer.getText();
    188 
    189                 if (jta.getText().equals("")) {
    190                     JOptionPane.showMessageDialog(null, "错误,请导入题库", "错误", JOptionPane.ERROR_MESSAGE);
    191                     return;
    192                 }
    193                 jta_answer.setText("");
    194                 if (answer_count <= 10) {
    195                     if (isInteger(temp)) {
    196 
    197                         user_answer.add(temp);
    198                         System.out.println("选择否后执行的代码" + temp + "user_size" + user_answer.size());
    199                         num_answer.setText("第 " + answer_count + " 题");
    200                         jta.setText(jta_timu.get(answer_count - 1));
    201                         answer_count++;
    202                     } else {
    203                         JOptionPane.showMessageDialog(null, "错误", "请输入数字", JOptionPane.ERROR_MESSAGE);
    204                     }
    205                 } else {
    206                     user_answer.add(temp);
    207                     System.out.println("选择否后执行的代码" + temp + "user_size" + user_answer.size());
    208                     answer_fenshu = 0;
    209                     for (int i = 0; i < user_answer.size(); i++) {
    210                         if (user_answer.get(i).equals(true_answer.get(i)))
    211                             answer_fenshu += 5;
    212                     }
    213                     user_fenshu.add(answer_fenshu);
    214                     Object[] options = { "是", "取消" };
    215                     int res = JOptionPane.showOptionDialog(null, "是否查看成绩", "答题完毕", JOptionPane.DEFAULT_OPTION,
    216                             JOptionPane.YES_NO_OPTION, null, options, options[0]);
    217                     if (res == JOptionPane.YES_OPTION) {
    218                         chart ct = new chart(user_fenshu);
    219                         ct.setVisible(true);
    220 
    221                     } else {
    222                         Object[] option = { "是", "取消" };
    223                         int res1 = JOptionPane.showOptionDialog(null, "是否退出程序", "终止框", JOptionPane.DEFAULT_OPTION,
    224                                 JOptionPane.YES_NO_OPTION, null, option, option[0]);
    225 
    226                         if (res1 == JOptionPane.YES_OPTION) {
    227                             dispose();
    228                             System.exit(0);
    229 
    230                         } else {
    231 
    232                         }
    233 
    234                     }
    235 
    236                 }
    237 
    238             }
    239         });
    240 
    241         item2.addActionListener(new ActionListener() {
    242             public void actionPerformed(ActionEvent e) {
    243                 dispose();
    244                 System.exit(0);
    245             }
    246         });
    247 
    248     }
    249 
    250     public static boolean isInteger(String str) {
    251         for (int i = str.length(); --i >= 0;) {
    252             if (!Character.isDigit(str.charAt(i))) {
    253                 return false;
    254             }
    255         }
    256         return true;
    257     }
    258 
    259 }
    View Code
      1 import java.io.BufferedOutputStream;
      2 import java.io.File;
      3 import java.io.FileOutputStream;
      4 import java.io.IOException;
      5 import java.util.ArrayList;
      6 import java.util.Random;
      7 import java.util.Scanner;
      8 
      9 public class arithmetic {
     10     ArrayList<String> list = new ArrayList<String>();
     11     ArrayList<String> list_timu = new ArrayList<String>();
     12     ArrayList<String> list_answer = new ArrayList<String>();
     13 
     14     public arithmetic() {
     15         FileOutputStream outSTr = null;
     16         BufferedOutputStream Buff = null;
     17         int number_n = 10, count;
     18 
     19         ArrayList<String> list_temp = new ArrayList<String>();
     20         String[] operator = new String[] { "+", "-", "*", "/" };
     21 
     22         Random rand = new Random();
     23         File file1 = new File("test.txt");
     24         if (file1.exists()) {
     25             // 创建文件
     26             try {
     27                 file1.createNewFile();
     28             } catch (IOException e) {
     29                 e.printStackTrace();
     30             }
     31         }
     32 
     33         while (number_n > 0) {
     34             int[] number_temp = new int[rand.nextInt(2) + 3];
     35             String[] str_temp = new String[number_temp.length - 1];
     36             for (int i = 0; i < number_temp.length; i++) {
     37                 if (i < number_temp.length - 1) {
     38                     number_temp[i] = rand.nextInt(100);
     39                     list_temp.add(String.valueOf(number_temp[i]));
     40                     str_temp[i] = operator[rand.nextInt(4)];
     41                     list_temp.add(str_temp[i]);
     42 
     43                 }
     44 
     45                 else {
     46                     number_temp[i] = rand.nextInt(100);
     47                     list_temp.add(String.valueOf(number_temp[i]));
     48                 }
     49             }
     50 
     51             count = calculate_RPN(produce_RPN(list_temp));
     52             if (count != -1) {
     53                 list_timu.add(transform_string(list_temp));
     54                 list_answer.add(String.valueOf(count));
     55                 list_temp.add(" = " + count);
     56                 list.add(transform_string(list_temp));
     57                 number_n--;
     58                 list_temp.clear();
     59             } else
     60                 list_temp.clear();
     61             System.out.println(number_n);
     62 
     63         }
     64         try {
     65             outSTr = new FileOutputStream(file1);
     66             Buff = new BufferedOutputStream(outSTr);
     67             for (int i = 0; i < list.size(); i++) {
     68                 try {
     69                     Buff.write(list.get(i).getBytes());
     70                     Buff.write("
    ".getBytes());
     71                 } catch (IOException e) {
     72                     e.printStackTrace();
     73                     i--;
     74                 }
     75             }
     76             Buff.flush();
     77             Buff.close();
     78 
     79         } catch (IOException e) {
     80             e.printStackTrace();
     81         }
     82         // Buff.close();
     83         try {
     84             outSTr.close();
     85         } catch (IOException e) {
     86             e.printStackTrace();
     87         }
     88 
     89         for (int i = 0; i < list.size(); i++) {
     90             System.out.print(list.get(i));
     91             System.out.println();
     92         }
     93         System.out.print("计算完毕!");
     94 
     95     }
     96 
     97     public static int calculate_RPN(ArrayList<String> list_temp) {
     98         int i = 0, t;
     99         double a = 0, b = 0;
    100         String l_temp;
    101         Stack sk = new Stack(10);
    102         for (t = 0; t < list_temp.size(); t++) {
    103             l_temp = list_temp.get(i++);
    104             if (!isInteger(l_temp)) {
    105                 b = sk.mypop();
    106                 a = sk.mypop();
    107                 switch (l_temp) {
    108                 case "+":
    109                     sk.mypush(a + b);
    110                     break;
    111                 case "-":
    112                     if(!(a<b)) {
    113                     sk.mypush(a - b);
    114                     }
    115                     else
    116                         return -1;
    117                     break;
    118                 case "*":
    119                     sk.mypush(a * b);
    120                     break;
    121                 case "/":
    122                     if (b == 0||a<b)
    123                         return -1;
    124                     sk.mypush(a / b);
    125                     break;
    126                 }
    127                 System.out.println("st.mytop: " + sk.mypeek());
    128             } else {
    129                 sk.mypush((double) Integer.parseInt(l_temp));
    130             }
    131 
    132         }
    133         if (!sk.myisempty()) {
    134             a = sk.mypop();
    135             b = a - (int) a;
    136             System.out.println("a:  " + a);
    137             if (a > 0 && b == 0) {
    138                 return (int) a;
    139             } else
    140                 return -1;
    141         } else
    142             return -1;
    143 
    144     }
    145 
    146     public static ArrayList<String> produce_RPN(ArrayList<String> list_temp) {
    147         int t = 0, i = 0;
    148         String tmp;
    149         Tack mytack = new Tack(10);
    150         ArrayList<String> lt_temp = new ArrayList<String>();
    151         while (true) {
    152             tmp = list_temp.get(i++);
    153             if (isInteger(tmp)) {
    154                 lt_temp.add(tmp);
    155             } else {
    156                 if (mytack.myisempty()) {
    157                     mytack.mypush(tmp);
    158                 }
    159 
    160                 else {
    161                     if (isCPriority(tmp, mytack.mypeek()))
    162                         mytack.mypush(tmp);
    163                     else {
    164                         lt_temp.add(mytack.mypop());
    165                         mytack.mypush(tmp);
    166                     }
    167 
    168                 }
    169             }
    170             if (i >= list_temp.size()) {
    171                 while (!mytack.myisempty())
    172                     lt_temp.add(mytack.mypop());
    173                 System.out.println(transform_string(list_temp));
    174                 list_temp = lt_temp;
    175                 System.out.println(list_temp);
    176                 return list_temp;
    177             }
    178         }
    179 
    180     }
    181 
    182     public static boolean isInteger(String str) {
    183         for (int i = str.length(); --i >= 0;) {
    184             if (!Character.isDigit(str.charAt(i))) {
    185                 return false;
    186             }
    187         }
    188         return true;
    189     }
    190 
    191     public static boolean isCPriority(String str, String s) {
    192         if ((str + s).equals("*+") || (str + s).equals("*-") || (str + s).equals("/+") || (str + s).equals("/-"))
    193             return true;
    194         else
    195             return false;
    196     }
    197 
    198     public static String transform_string(ArrayList<String> list_temp) {
    199         String s = "";
    200         for (int i = 0; i < list_temp.size(); i++) {
    201             s += list_temp.get(i);
    202         }
    203         return s;
    204 
    205     }
    206 
    207     static class Stack {
    208         int mytop;
    209         double stk[];
    210 
    211         public Stack(int num) {
    212             mytop = -1;
    213             stk = new double[num];
    214         }
    215 
    216         /* 出栈 */
    217         double mypop() {
    218             double peek = stk[mytop];
    219             mytop--;
    220             return peek;
    221         }
    222 
    223         /* 入栈 */
    224         void mypush(double x) {
    225             mytop++;
    226             stk[mytop] = x;
    227 
    228         }
    229 
    230         /* 判空 */
    231         Boolean myisempty() {
    232             if (mytop == -1)
    233                 return true;
    234             else
    235                 return false;
    236         }
    237 
    238         /* 取栈顶元素 */
    239         double mypeek() {
    240             double peek = stk[mytop];
    241             return peek;
    242         }
    243 
    244         /* 栈大小 */
    245         int mysize() {
    246             return mytop + 1;
    247         }
    248     }
    249 
    250     static class Tack {
    251         int mytop;
    252         String tk[];
    253 
    254         public Tack(int num) {
    255             mytop = -1;
    256             tk = new String[num];
    257         }
    258 
    259         /* 出栈 */
    260         String mypop() {
    261             String peek = tk[mytop];
    262             mytop--;
    263             return peek;
    264         }
    265 
    266         /* 入栈 */
    267         void mypush(String x) {
    268             mytop++;
    269             tk[mytop] = x;
    270 
    271         }
    272 
    273         /* 判空 */
    274         Boolean myisempty() {
    275             if (mytop == -1)
    276                 return true;
    277             else
    278                 return false;
    279         }
    280 
    281         /* 取栈顶元素 */
    282         String mypeek() {
    283             String peek = tk[mytop];
    284             return peek;
    285         }
    286 
    287         /* 栈大小 */
    288         int mysize() {
    289             return mytop + 1;
    290         }
    291 
    292     }
    293 
    294 }
    View Code

    任务3:本学期课程已结束,请汇总《面向对象程序设计课程学习进度条》的数据,统计个人专业能力提升的数据。并从学习内容、学习方法、学习心得几个方面进行课程学习总结,也希望你对课程的不足提出建议和意见。

     学习内容:

    Java语言特点与开发环境配置(第1章、第2章)

    Java基本程序结构(第3章)

    Java面向对象程序结构(第4章、第5章、第6章)

    类、类间关系、类图 

    Java JDK预定义类/接口及其API(String-第3章、 Arrays-第3章、Files-第3章62页、LocalDate-第4章、 Object-第5章、对象包装器-第5章、Comparator-第6章、 异常类-第7章、ArrayList-第5+8章、第9章、第10-12章、 第14章)

    — Java异常处理编程模型

    — Java GUI编程模型 

    Java并发程序设计(第14章) 

    Java应用程序部署(第13章)

    学习方法:

    理论与实践(实验)学习相结合,课下自主学习:

    1.理论课:老师讲授基础知识

    2.实验课:老师和助教演示示例程序,并进行相应的更改和创新

    3.课下自主学习:

    (1)结合书籍内容和相关的示例程序,并自主查阅资料,完成编程练习。

    (2)编程练习完成后,助教进行网络在线示范与讲解;老师根据出现的问题,在课堂上进行讲解。

    学习心得:

    经过一学期的学习,对面向对象编程有了一个清晰的概念,理解了Java历久弥新的强大生命力。但在语法上还有一些东西没有掌握,都需要尽快复习,以后也不能放下这门技能。还需继续努力学习Java,提高自己的编程水平。

  • 相关阅读:
    SpringBoot处理跨域的四种方式
    centos部署nextcloud
    nginx反向代理时配置访问密码
    java对redis的基本操作
    springboot使用redis
    Linux安装redis
    centos安装php7.2环境 (亲测可用)
    linux下后台启动springboot项目
    全局加token
    web移动端浮层滚动阻止window窗体滚动JS/CSS处理
  • 原文地址:https://www.cnblogs.com/bmwb/p/10199840.html
Copyright © 2011-2022 走看看