关键词:
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
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
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
练习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
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
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
练习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
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
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
任务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,提高自己的编程水平。
李清华201772020113《面向对象程序设计(java)》第十三周学习总结(代码片段)
1、实验目的与要求(1)掌握事件处理的基本原理,理解其用途;(2)掌握AWT事件模型的工作机制;(3)掌握事件处理的基本编程模型;(4)了解GUI界面组件观感设置方法;(5)掌握WindowAdapter类、AbstractAction类的用法;(6)掌握GUI程序中鼠标... 查看详情
李清华201772020113《面向对象程序设计(java)》第十四周学习总结(代码片段)
1、实验目的与要求(1)掌握GUI布局管理器用法;(2)掌握各类JavaSwing组件用途及常用API;2、实验内容和步骤实验1:导入第12章示例程序,测试程序并进行组内讨论。测试程序1l 在elipseIDE中运行教材479页程序12-1,结合运行结果理... 查看详情
201772020113李清华《面向对象程序设计(java)》第17周学习总结(代码片段)
1、实验目的与要求(1)掌握线程同步的概念及实现技术;(2)线程综合编程练习2、实验内容和步骤实验1:测试程序并进行代码注释。测试程序1:l 在Elipse环境下调试教材651页程序14-7,结合程序运行结果理解程序;l 掌... 查看详情
李清华201772020113《面向对象程序设计(java)》第六周学习总结(代码片段)
第一部分理论知识1.继承用已有类来构建新类的一种机制。新类可以继承父类的方法和域,同时可以在新类中添加新的方法和域。已有类称为:超类、基类或父类。新类称作:子类、派生类或孩子类。子类的构造器不能直接访问... 查看详情
201772020113李清华《面向对象程序设计(java)》第18周学习总结(代码片段)
1、实验目的与要求(1)综合掌握java基本程序结构;(2)综合掌握java面向对象程序设计特点;(3)综合掌握javaGUI程序设计结构;(4)综合掌握java多线程编程模型;(5)综合编程练习。2、实验内容和步骤任务1:填写课程课后调查问卷,网... 查看详情
esayxc++面向对象程序设计实践-汉诺塔
记一次课设GitHub:https://github.com/tao355667/HanoiGame面向对象程序设计实践-汉诺塔IDE:VisualStudio2022依赖库:EsayX效果预览:参考资料:[1]童晶,丁海军,金永霞,周小芹编著.面向“工程教育认证”计算机系列课程规划教材C语言课程... 查看详情
uml系统建模基础教程(清华大学出版社)课后题答案
参考技术AUML习题答案第一章 面向对象设计与UML1. 填空题(1) 基本构造块UML规则公共机制(2) 名字属性操作(3) 封装继承多态(4) 继承(5) 瀑布模型喷泉模型基于组件的开发模型XP开发模型2.选择题(1)C(2)ABCD(3)ABCD... 查看详情
面向对象程序设计介绍以及面向对象的基本特征
面向对象的程序设计(ObjectOrientedProgramming,OOP)方法是目前比较流行的程序设计方法,和面向过程的程序设计比,它更符合人类的自然思维方式。在面向过程程序设计中,程序=数据+算法,数据和对数据的操作是分离的,如... 查看详情
《面向对象程序设计概述》牛咏梅
面向对象程序设计概述牛咏梅(南阳理工学院河南南阳473000)摘要:分析传统程序设计方法与面向对象程序设计方法之间的差别,重点分析了面向对象程序设计方法的特点,介绍了面向对象程序设计方法的步骤及其优点。关键词:面向对... 查看详情
java面向对象大致梳理
...概述:Java设计语言面向对象:Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下,使用Java语言去设计、开发计算机程序。这里的对象泛指现实中一切事物,每种事物都... 查看详情
面向对象的程序设计
阅读目录一面向对象的程序设计的由来二什么是面向对象的程序设计及为什么要有它三类与对象四属性查找五绑定到对象的方法的特殊之处六对象之间的交互七练习八继承与派生九多态与多态性十封装十一绑定方法与非绑定方法... 查看详情
面向对象思想
...0年代,位于美国加州的Xerox研究中心推出smalltalk语言及其程序设计环境,使得面向对象程序设计方法得到比较完善的实现,掀起了面向对象研究的高潮。到80年代中后期,面向对象的软件设计和程序设计方法 查看详情
面向对象设计----软件设计师
上午12分下午两大答题30分面向对象的基本概念❤❤❤❤❤采用面向对象的软件开发,通常由面向对象分析,面向对象设计,面向对象实现1面向对象分析OOA:获取对应用问题的理解,主要任务是抽取和整理用户需求并建立问题域精确模... 查看详情
面向对象分析与设计面向对象设计包括哪些内容
一、总述面向对象分析的输入是用户的功能需求,输出是简单的、理性化的分析模型,此阶段的工作更多侧重于如何理解软件的功能需求;面向对象设计的输入是面向对象分析的结果,蔬菜水果最终的、细化后的设计模型,此阶... 查看详情
面向对象思想初识
面向对象思想概述Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下,使用Java语言去设计、开发计算机程序。这里的对象泛指现实中一切事物,每种事物都具备自己的... 查看详情
面向过程程序设计,面向对象程序设计,可视化程序设计的异同
...开-闭原则。也使代码更易阅读。相对而言,面向过程的程序设计是面向对象程序设计的基础。面向对象的程序里面一定会有面向过程的程序片断的!可视化程序设计主要是一种技术 参考技术B这些是阶梯型向上发展的,一个比一... 查看详情
面向对象程序设计的总结
自学习面向对象程序设计语言以来,深深体会到这种语言的魅力。与面向过程设计语言相比,随着学习的深入,两者的风格不一更加凸显。面向过程程序设计语言,典型的有C语言、C++,面向过程是一种以过程... 查看详情
面向对象的程序设计(代码片段)
一、什么是面向对象 面向对象编程是一种编程方式,使用“类”和“对象”来实现,所以,面向对象编程就是对“类”和“对象”的使用。 面向对象编程核心就是“对象”二字,“对象”是特征与技能的结合体。“类”... 查看详情