实验十八 总复习
实验时间 2018-12-30
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 AA; 2 3 import java.awt.Dimension; 4 import java.awt.Toolkit; 5 import java.awt.Window; 6 7 public class WinCenter { 8 public static void center(Window win){ 9 Toolkit tkit = Toolkit.getDefaultToolkit(); 10 Dimension sSize = tkit.getScreenSize(); 11 Dimension wSize = win.getSize(); 12 if(wSize.height > sSize.height){ 13 wSize.height = sSize.height; 14 } 15 if(wSize.width > sSize.width){ 16 wSize.width = sSize.width; 17 } 18 win.setLocation((sSize.width - wSize.width)/ 2, (sSize.height - wSize.height)/ 2); 19 } 20 }
WinCenter
1 package AA; 2 3 import java.awt.Dimension; 4 import java.awt.FlowLayout; 5 import java.awt.GridLayout; 6 7 import javax.swing.BorderFactory; 8 import javax.swing.ButtonGroup; 9 import javax.swing.JButton; 10 import javax.swing.JCheckBox; 11 import javax.swing.JComboBox; 12 import javax.swing.JFrame; 13 import javax.swing.JLabel; 14 import javax.swing.JPanel; 15 import javax.swing.JRadioButton; 16 import javax.swing.JTextField; 17 18 public class DemoJFrame extends JFrame { 19 private JPanel jPanel1; 20 private JPanel jPanel2; 21 private JPanel jPanel3; 22 private JPanel jPanel4; 23 private JTextField fieldname; 24 private JComboBox comboBox; 25 private JTextField fieldadress; 26 private ButtonGroup bg; 27 private JRadioButton Male; 28 private JRadioButton Female; 29 private JCheckBox read; 30 private JCheckBox sing; 31 private JCheckBox dance; 32 33 public DemoJFrame() { 34 // 设置窗口大小 35 this.setSize(800, 400); 36 // 设置可见性 37 this.setVisible(true); 38 // 设置标题 39 this.setTitle("编程练习一"); 40 // 设置关闭操作 41 this.setDefaultCloseOperation(EXIT_ON_CLOSE); 42 // 设置窗口居中 43 WinCenter.center(this); 44 // 创建四个面板对象 45 jPanel1 = new JPanel(); 46 setJPanel1(jPanel1); 47 jPanel2 = new JPanel(); 48 setJPanel2(jPanel2); 49 jPanel3 = new JPanel(); 50 setJPanel3(jPanel3); 51 jPanel4 = new JPanel(); 52 setJPanel4(jPanel4); 53 // 设置容器的为流布局 54 FlowLayout flowLayout = new FlowLayout(); 55 this.setLayout(flowLayout); 56 // 将四个面板添加到容器中 57 this.add(jPanel1); 58 this.add(jPanel2); 59 this.add(jPanel3); 60 this.add(jPanel4); 61 62 } 63 64 /* 65 * 设置面一 66 */ 67 private void setJPanel1(JPanel jPanel) { 68 // TODO 自动生成的方法存根 69 jPanel.setPreferredSize(new Dimension(700, 45)); 70 // 给面板的布局设置为网格布局 一行4列 71 jPanel.setLayout(new GridLayout(1, 4)); 72 73 JLabel name = new JLabel("name:"); 74 name.setSize(100, 50); 75 fieldname = new JTextField(""); 76 fieldname.setSize(80, 20); 77 78 JLabel study = new JLabel("qualification:"); 79 comboBox = new JComboBox(); 80 comboBox.addItem("初中"); 81 comboBox.addItem("高中"); 82 comboBox.addItem("本科"); 83 jPanel.add(name); 84 jPanel.add(fieldname); 85 jPanel.add(study); 86 jPanel.add(comboBox); 87 88 } 89 90 /* 91 * 设置面板二 92 */ 93 private void setJPanel2(JPanel jPanel) { 94 // TODO 自动生成的方法存根 95 jPanel.setPreferredSize(new Dimension(700, 50)); 96 // 给面板的布局设置为网格布局 一行4列 97 jPanel.setLayout(new GridLayout(1, 4)); 98 99 JLabel name = new JLabel("address:"); 100 fieldadress = new JTextField(); 101 fieldadress.setPreferredSize(new Dimension(150, 50)); 102 103 JLabel study = new JLabel("hobby:"); 104 JPanel selectBox = new JPanel(); 105 selectBox.setBorder(BorderFactory.createTitledBorder("")); 106 selectBox.setLayout(new GridLayout(3, 1)); 107 read = new JCheckBox("reading"); 108 sing = new JCheckBox("singing"); 109 dance = new JCheckBox("danceing"); 110 selectBox.add(read); 111 selectBox.add(sing); 112 selectBox.add(dance); 113 jPanel.add(name); 114 jPanel.add(fieldadress); 115 jPanel.add(study); 116 jPanel.add(selectBox); 117 } 118 119 /* 120 * 设置面板三 121 */ 122 private void setJPanel3(JPanel jPanel) { 123 // TODO 自动生成的方法存根 124 jPanel.setPreferredSize(new Dimension(700, 150)); 125 FlowLayout flowLayout = new FlowLayout(FlowLayout.LEFT); 126 jPanel.setLayout(flowLayout); 127 JLabel sex = new JLabel("性别:"); 128 JPanel selectBox = new JPanel(); 129 selectBox.setBorder(BorderFactory.createTitledBorder("")); 130 selectBox.setLayout(new GridLayout(2, 1)); 131 bg = new ButtonGroup(); 132 Male = new JRadioButton("male"); 133 Female = new JRadioButton("female"); 134 bg.add(Male ); 135 bg.add(Female); 136 selectBox.add(Male); 137 selectBox.add(Female); 138 jPanel.add(sex); 139 jPanel.add(selectBox); 140 141 } 142 143 /* 144 * 设置面板四 145 */ 146 private void setJPanel4(JPanel jPanel) { 147 // TODO 自动生成的方法存根 148 jPanel.setPreferredSize(new Dimension(700, 150)); 149 FlowLayout flowLayout = new FlowLayout(FlowLayout.CENTER, 50, 10); 150 jPanel.setLayout(flowLayout); 151 jPanel.setLayout(flowLayout); 152 JButton sublite = new JButton("提交"); 153 JButton reset = new JButton("重置"); 154 sublite.addActionListener((e) -> valiData()); 155 reset.addActionListener((e) -> Reset()); 156 jPanel.add(sublite); 157 jPanel.add(reset); 158 } 159 160 /* 161 * 提交数据 162 */ 163 private void valiData() { 164 // TODO 自动生成的方法存根 165 // 拿到数据 166 String name = fieldname.getText().toString().trim(); 167 String xueli = comboBox.getSelectedItem().toString().trim(); 168 String address = fieldadress.getText().toString().trim(); 169 System.out.println(name); 170 System.out.println(xueli); 171 String hobbystring=""; 172 if (read.isSelected()) { 173 hobbystring+="reading "; 174 } 175 if (sing.isSelected()) { 176 hobbystring+="singing "; 177 } 178 if (dance.isSelected()) { 179 hobbystring+="dancing "; 180 } 181 System.out.println(address); 182 if (Male.isSelected()) { 183 System.out.println("male"); 184 } 185 if (Female.isSelected()) { 186 System.out.println("female"); 187 } 188 System.out.println(hobbystring); 189 } 190 191 /* 192 * 重置 193 */ 194 private void Reset() { 195 // TODO 自动生成的方法存根 196 fieldadress.setText(null); 197 fieldname.setText(null); 198 comboBox.setSelectedIndex(0); 199 read.setSelected(false); 200 sing.setSelected(false); 201 dance.setSelected(false); 202 bg.clearSelection(); 203 } 204 }
结果图:
练习2:采用GUI界面设计以下程序:
编制一个程序,将身份证号.txt 中的信息读入到内存中;
按姓名字典序输出人员信息;
查询最大年龄的人员信息;
查询最小年龄人员信息;
输入你的年龄,查询身份证号.txt中年龄与你最近人的姓名、身份证号、年龄、性别和出生地;
查询人员中是否有你的同乡。
输入身份证信息,查询所提供身份证号的人员信息,要求输入一个身份证数字时,查询界面就显示满足查询条件的查询结果,且随着输入的数字的增多,查询匹配的范围逐渐缩小。
package 框图; //import javax.swing.JFrame; import java.awt.BorderLayout; 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.IOException; import java.io.InputStreamReader; import java.util.*; import java.util.Timer; import javax.swing.*; public class Main1 extends JFrame { private static ArrayList<Person> Personlist; Scanner scanner = new Scanner(System.in); File file = new File("D:\\身份证号.txt"); private JPanel Panel; private JLabel JLabel1; private JButton Button, Button2, Button3; private JTextArea text, text1, text2, text3; boolean tru = true; public Main1() { Panel = new JPanel(); Panel.setLayout(null); Button = new JButton("1:按姓名字典序输出人员信息"); Button2 = new JButton("2:查询最大年龄与最小年龄人员信息"); Button3 = new JButton("查询相近年龄"); JLabel1 = new JLabel("输入身份证号或者地址查询"); JLabel1.setBounds(900, 50, 400, 30); text = new JTextArea(30, 80); text.setBounds(50, 180, 700, 700); text1 = new JTextArea(1, 30); text1.setBounds(900, 80, 400, 30); text2 = new JTextArea(30, 80); text2.setBounds(900, 180, 700, 700); text3 = new JTextArea(30, 80); text3.setBounds(420, 100, 200, 40); Button.addActionListener(new Action()); Button.setBounds(50, 50, 300, 40); Button2.addActionListener(new Action1()); Button2.setBounds(50, 100, 300, 40); Button3.addActionListener(new Action2()); Button3.setBounds(650, 100, 120, 40); Panel.add(JLabel1); Panel.add(Button); Panel.add(Button2); Panel.add(Button3); Panel.add(text); Panel.add(text2); Panel.add(text1); Panel.add(text3); add(Panel); Timer timer = new Timer(); TimerTask timeTask = new TimerTask() { @Override public void run() { // TODO Auto-generated method stub text2.setText(null); String place = text1.getText().toString().trim(); for (int i = 0; i < Personlist.size(); i++) { String Str = (String) Personlist.get(i).getbirthplace(); if (Str.contains(place) && !place.equals("")) { text2.append(Personlist.get(i).toString()); } } for (int i = 0; i < Personlist.size(); i++) { String Str = (String) Personlist.get(i).getID(); if (Str.contains(place) && !place.equals("")) { text2.append(Personlist.get(i).toString()); } } } }; timer.schedule(timeTask, 0, 100); Personlist = new ArrayList<>(); try { FileInputStream fis = new FileInputStream(file); BufferedReader in = new BufferedReader(new InputStreamReader(fis)); String temp = null; while ((temp = in.readLine()) != null) { Scanner linescanner = new Scanner(temp); linescanner.useDelimiter(" "); String name = linescanner.next(); String ID = linescanner.next(); String sex = linescanner.next(); String age = linescanner.next(); String place = linescanner.nextLine(); Person Person = new Person(); Person.setname(name); Person.setID(ID); Person.setsex(sex); int a = Integer.parseInt(age); Person.setage(a); Person.setbirthplace(place); Personlist.add(Person); } } catch (FileNotFoundException e) { System.out.println("查找不到信息"); e.printStackTrace(); } catch (IOException e) { System.out.println("信息读取有误"); e.printStackTrace(); } } private class Action implements ActionListener { public void actionPerformed(ActionEvent event) { text.setText(null); Collections.sort(Personlist); text.append(Personlist.toString()); } } private class Action1 implements ActionListener { public void actionPerformed(ActionEvent event) { text.setText(null); int max = 0, min = 100; int j, k1 = 0, k2 = 0; for (int i = 1; i < Personlist.size(); i++) { j = Personlist.get(i).getage(); if (j > max) { max = j; k1 = i; } if (j < min) { min = j; k2 = i; } } text.append("年龄最大: " + Personlist.get(k1) + "\n" + "年龄最小: " + Personlist.get(k2)); } } private class Action2 implements ActionListener { public void actionPerformed(ActionEvent event) { text.setText(null); int a = Integer.parseInt(text3.getText().toString().trim()); int d_value = a - Personlist.get(agenear(a)).getage(); for (int i = 0; i < Personlist.size(); i++) { int p = Personlist.get(i).getage() - a; if (p == d_value || -p == d_value) text.append(Personlist.get(i).toString()); } } } public static int agenear(int age) { int j = 0, min = 53, d_value = 0, k = 0; for (int i = 0; i < Personlist.size(); i++) { d_value = Personlist.get(i).getage() - age; if (d_value < 0) d_value = -d_value; if (d_value < min) { min = d_value; k = i; } } return k; } }
main1
package 框图; import java.awt.*; import javax.swing.*; public class ButtonTest { public static void main(String[] args) { EventQueue.invokeLater(() -> { JFrame frame = new Main1(); frame.setTitle("身份证"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); }); } }
ButtonTest
package project3; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.Toolkit; import javax.swing.JFrame; public class Out{ public static void main(String args[]) { Toolkit t = Toolkit.getDefaultToolkit(); Dimension s = t.getScreenSize(); EventQueue.invokeLater(() -> { JFrame frame = new Main1(); frame.setBounds(0, 0, (int) s.getWidth(), (int) s.getHeight()); frame.setTitle("身份查询系统"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); }); } }
out
package 框图; public class Person implements Comparable<Person> { private String name; private String ID; private int age; private String sex; private String birthplace; public String getname() { return name; } public void setname(String name) { this.name = name; } public String getID() { return ID; } public void setID(String ID) { this.ID = ID; } public int getage() { return age; } public void setage(int age) { this.age = age; } public String getsex() { return sex; } public void setsex(String sex) { this.sex = sex; } public String getbirthplace() { return birthplace; } public void setbirthplace(String birthplace) { this.birthplace = birthplace; } public int compareTo(Person o) { return this.name.compareTo(o.getname()); } public String toString() { return name + "\t" + sex + "\t" + age + "\t" + ID + "\t" + birthplace + "\n"; } }
person
练习3:采用GUI界面设计以下程序
编写一个计算器类,可以完成加、减、乘、除的操作
利用计算机类,设计一个小学生100以内数的四则运算练习程序,由计算机随机产生10道加减乘除练习题,学生输入答案,由程序检查答案是否正确,每道题正确计10分,错误不计分,10道题测试结束后给出测试总分;
将程序中测试练习题及学生答题结果输出到文件,文件名为test.txt。
package 计算器; public class Main { public static void main(String[] args) { MyExGUI lg = new MyExGUI(); // new MyExGUI(); } }
package 计算器; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.util.ArrayList; import java.util.Random; import javax.swing.JFrame; public class chart extends JFrame { // 绘制柱形统计图 ArrayList<Integer> ran = new ArrayList<Integer>(); public chart(ArrayList<Integer> scores) { super(); getContentPane().setForeground(Color.CYAN); setForeground(Color.CYAN); setBackground(Color.CYAN); for (int i = 0; i < scores.size(); i++) { ran.add(scores.get(i)); System.out.println(scores.get(i)); } setTitle("绘制柱形图"); setSize(600, 400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } @Override public void paint(Graphics g) { int Width = getWidth(); int Height = getHeight(); int leftMargin = 20;// 柱形图左边界 int topMargin = 50;// 柱形图上边界 Graphics2D g2 = (Graphics2D) g; g2.setColor(Color.WHITE);// 绘制白色背景 g2.fillRect(0, 0, Width, Height - 100);// 绘制矩形图 g2.setColor(Color.black); for (int i = 0; i <= 10; i++) { // 绘制灰色横线和百分比 g2.drawString((100 - 10 * i) + " ", 15, topMargin + 30 * i); g2.drawLine(10, topMargin + 30 * i, Width, topMargin + 30 * i);// 绘制灰色横线 } g2.setColor(Color.RED); for (int i = 0; i <= ran.size(); i++) { // 绘制柱形图 int step = (i + 1) * 40;// 设置每个柱形图的水平间隔为40 // 绘制矩形 g2.fillRoundRect(leftMargin + step * 2 - 5, (100 - ran.get(i)) * 3 + 50, 40, 300 - (100 - ran.get(i)) * 3, 40, 10); // 列出测试轮数 g2.drawString("第" + (i + 1) + "轮", leftMargin + step * 2, 380); } } }
package 计算器; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Random; import java.util.Scanner; public class arithmetic { ArrayList<String> list = new ArrayList<String>(); ArrayList<String> list_timu = new ArrayList<String>(); ArrayList<String> list_answer = new ArrayList<String>(); public arithmetic() { FileOutputStream outSTr = null; BufferedOutputStream Buff = null; int number_n = 10, count; ArrayList<String> list_temp = new ArrayList<String>(); String[] operator = new String[] { "+", "-", "*", "/" }; Random rand = new Random(); File file1 = new File("D:\\test.txt"); if (file1.exists()) { // 创建文件 try { file1.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } while (number_n > 0) { int[] number_temp = new int[rand.nextInt(2) + 3]; String[] str_temp = new String[number_temp.length - 1]; for (int i = 0; i < number_temp.length; i++) { if (i < number_temp.length - 1) { number_temp[i] = rand.nextInt(100); list_temp.add(String.valueOf(number_temp[i])); str_temp[i] = operator[rand.nextInt(4)]; list_temp.add(str_temp[i]); } else { number_temp[i] = rand.nextInt(100); list_temp.add(String.valueOf(number_temp[i])); } } count = calculate_RPN(produce_RPN(list_temp)); if (count != -1) { list_timu.add(transform_string(list_temp)); list_answer.add(String.valueOf(count)); list_temp.add(" = " + count); list.add(transform_string(list_temp)); number_n--; list_temp.clear(); } else list_temp.clear(); System.out.println(number_n); } try { outSTr = new FileOutputStream(file1); Buff = new BufferedOutputStream(outSTr); for (int i = 0; i < list.size(); i++) { try { Buff.write(list.get(i).getBytes()); Buff.write("\r\n".getBytes()); } catch (IOException e) { e.printStackTrace(); i--; } } Buff.flush(); Buff.close(); } catch (IOException e) { e.printStackTrace(); } // Buff.close(); try { outSTr.close(); } catch (IOException e) { e.printStackTrace(); } for (int i = 0; i < list.size(); i++) { System.out.print(list.get(i)); System.out.println(); } System.out.print("计算完毕!"); } public static int calculate_RPN(ArrayList<String> list_temp) { int i = 0, t; double a = 0, b = 0; String l_temp; Stack sk = new Stack(10); for (t = 0; t < list_temp.size(); t++) { l_temp = list_temp.get(i++); if (!isInteger(l_temp)) { b = sk.mypop(); a = sk.mypop(); switch (l_temp) { case "+": sk.mypush(a + b); break; case "-": if (!(a < b)) { sk.mypush(a - b); } else return -1; break; case "*": sk.mypush(a * b); break; case "/": if (b == 0 || a < b) return -1; sk.mypush(a / b); break; } System.out.println("st.mytop: " + sk.mypeek()); } else { sk.mypush((double) Integer.parseInt(l_temp)); } } if (!sk.myisempty()) { a = sk.mypop(); b = a - (int) a; System.out.println("a: " + a); if (a > 0 && b == 0) { return (int) a; } else return -1; } else return -1; } public static ArrayList<String> produce_RPN(ArrayList<String> list_temp) { int t = 0, i = 0; String tmp; Tack mytack = new Tack(10); ArrayList<String> lt_temp = new ArrayList<String>(); while (true) { tmp = list_temp.get(i++); if (isInteger(tmp)) { lt_temp.add(tmp); } else { if (mytack.myisempty()) { mytack.mypush(tmp); } else { if (isCPriority(tmp, mytack.mypeek())) mytack.mypush(tmp); else { lt_temp.add(mytack.mypop()); mytack.mypush(tmp); } } } if (i >= list_temp.size()) { while (!mytack.myisempty()) lt_temp.add(mytack.mypop()); System.out.println(transform_string(list_temp)); list_temp = lt_temp; System.out.println(list_temp); return list_temp; } } } public static boolean isInteger(String str) { for (int i = str.length(); --i >= 0;) { if (!Character.isDigit(str.charAt(i))) { return false; } } return true; } public static boolean isCPriority(String str, String s) { if ((str + s).equals("*+") || (str + s).equals("*-") || (str + s).equals("/+") || (str + s).equals("/-")) return true; else return false; } public static String transform_string(ArrayList<String> list_temp) { String s = ""; for (int i = 0; i < list_temp.size(); i++) { s += list_temp.get(i); } return s; } static class Stack { int mytop; double stk[]; public Stack(int num) { mytop = -1; stk = new double[num]; } /* 出栈 */ double mypop() { double peek = stk[mytop]; mytop--; return peek; } /* 入栈 */ void mypush(double x) { mytop++; stk[mytop] = x; } /* 判空 */ Boolean myisempty() { if (mytop == -1) return true; else return false; } /* 取栈顶元素 */ double mypeek() { double peek = stk[mytop]; return peek; } /* 栈大小 */ int mysize() { return mytop + 1; } } static class Tack { int mytop; String tk[]; public Tack(int num) { mytop = -1; tk = new String[num]; } /* 出栈 */ String mypop() { String peek = tk[mytop]; mytop--; return peek; } /* 入栈 */ void mypush(String x) { mytop++; tk[mytop] = x; } /* 判空 */ Boolean myisempty() { if (mytop == -1) return true; else return false; } /* 取栈顶元素 */ String mypeek() { String peek = tk[mytop]; return peek; } /* 栈大小 */ int mysize() { return mytop + 1; } } }
package 计算器; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import javax.swing.*; public class MyExGUI extends JFrame { ArrayList<String> user_zongti = new ArrayList<String>(); ArrayList<String> user_zonganswer = new ArrayList<String>(); ArrayList<String> user_answer = new ArrayList<String>(); ArrayList<String> true_answer = new ArrayList<String>(); ArrayList<String> jta_timu = new ArrayList<String>(); ArrayList<String> jta_zong = new ArrayList<String>(); ArrayList<Integer> user_fenshu = new ArrayList<Integer>(); JMenuBar jm; // 菜单条组件 JMenu menu;// 菜单 JMenuItem item1, item2;// 菜单项 JMenu build; // 二级菜单 JMenuItem file, project; TextArea answer_all = new TextArea(); TextField jta = new TextField(); TextField jta_answer = new TextField(); JLabel num_answer = new JLabel(); JLabel answer; JToolBar jtb;// 工具条 JButton jb1, jb2, jb3, jb4, jb5, jb6, jb7, jb_next; int answer_count; int answer_fenshu; public MyExGUI() { // 创建菜单 jm = new JMenuBar(); menu = new JMenu("文件(F)"); menu.setMnemonic(‘f‘); // 助记符 build = new JMenu("新建"); file = new JMenuItem("文件"); project = new JMenuItem("答题"); item1 = new JMenuItem("保存(S)"); item2 = new JMenuItem("退出"); answer = new JLabel("第 1 题"); // 添加菜单项至菜单上 build.add(file); build.add(project); menu.add(build); menu.add(item1); menu.add(item2); menu.addSeparator(); // 将菜单加入至菜单栏 jm.add(menu); JPanel contentPanel = new JPanel(); contentPanel.setLayout(null); JLabel daan = new JLabel("答案"); JLabel dengyu = new JLabel("="); num_answer = answer; num_answer.setFont(new Font("宋体", Font.BOLD, 22)); jb_next = new JButton("下一题"); jta.setFont(new Font("宋体", Font.BOLD, 22)); jta_answer.setFont(new Font("宋体", Font.BOLD, 22)); jb_next.setFont(new Font("宋体", Font.BOLD, 22)); daan.setFont(new Font("宋体", Font.BOLD, 22)); dengyu.setFont(new Font("宋体", Font.BOLD, 22)); contentPanel.add(num_answer); contentPanel.add(daan); contentPanel.add(dengyu); contentPanel.add(jta); contentPanel.add(jta_answer); contentPanel.add(answer_all); contentPanel.add(jb_next); num_answer.setBounds(90, 20, 130, 50); daan.setBounds(250, 20, 90, 50); jta.setBounds(50, 70, 150, 30); dengyu.setBounds(205, 70, 20, 20); jta_answer.setBounds(230, 70, 100, 30); jb_next.setBounds(350, 70, 110, 30); answer_all.setBounds(50, 120, 400, 300); this.setJMenuBar(jm); // 添加菜单栏,不能设定位置,会自动放在最上部 this.add(contentPanel); this.setTitle("在线答题系统"); this.setSize(600, 500); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); item1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { FileOutputStream outSTr = null; BufferedOutputStream Buff = null; boolean flag = true; File file; // String test ; do { // test = "test"+count; String inputValue = JOptionPane.showInputDialog("Please input file name"); file = new File(inputValue + "test.txt"); if (!file.exists()) { // 创建文件 try { flag = file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } flag = false; } else { JOptionPane.showMessageDialog(null, "该文件名已存在,请重新输入", "ERROR", JOptionPane.ERROR_MESSAGE); flag = true; } } while (flag); // 写入文件 String u_answer; try { outSTr = new FileOutputStream(file); Buff = new BufferedOutputStream(outSTr); System.out.println("选择是后执行的代码" + user_zongti.size() + user_answer.size()); for (int i = 0; i < user_zongti.size(); i++) { try { Buff.write(user_zongti.get(i).getBytes()); Buff.write(" ".getBytes()); u_answer = user_answer.get(i); if (u_answer.equals("")) u_answer = "没有作答"; Buff.write(u_answer.getBytes()); Buff.write("\r\n".getBytes()); } catch (IOException e) { e.printStackTrace(); i--; } } Buff.flush(); Buff.close(); } catch (IOException e) { e.printStackTrace(); } try { outSTr.close(); } catch (IOException e) { e.printStackTrace(); } user_zongti.clear(); user_answer.clear(); } }); project.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { arithmetic art = new arithmetic(); true_answer = art.list_answer; jta_timu = art.list_timu; jta_zong = art.list; answer_count = 1; answer_all.setText(""); for (int i = 0; i < art.list_timu.size(); i++) { user_zongti.add(jta_zong.get(i)); answer_all.append(jta_timu.get(i)); answer_all.append("\r\n"); } num_answer.setText("第 " + answer_count + " 题"); jta.setText(jta_timu.get(answer_count - 1)); answer_count++; } }); jb_next.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { String temp; temp = jta_answer.getText(); if (jta.getText().equals("")) { JOptionPane.showMessageDialog(null, "错误,请导入题库", "错误", JOptionPane.ERROR_MESSAGE); return; } jta_answer.setText(""); if (answer_count <= 10) { if (isInteger(temp)) { user_answer.add(temp); System.out.println("选择否后执行的代码" + temp + "user_size" + user_answer.size()); num_answer.setText("第 " + answer_count + " 题"); jta.setText(jta_timu.get(answer_count - 1)); answer_count++; } else { JOptionPane.showMessageDialog(null, "错误", "请输入数字", JOptionPane.ERROR_MESSAGE); } } else { user_answer.add(temp); System.out.println("选择否后执行的代码" + temp + "user_size" + user_answer.size()); answer_fenshu = 0; for (int i = 0; i < user_answer.size(); i++) { if (user_answer.get(i).equals(true_answer.get(i))) answer_fenshu += 5; } user_fenshu.add(answer_fenshu); Object[] options = { "是", "取消" }; int res = JOptionPane.showOptionDialog(null, "是否查看成绩", "答题完毕", JOptionPane.DEFAULT_OPTION, JOptionPane.YES_NO_OPTION, null, options, options[0]); if (res == JOptionPane.YES_OPTION) { chart ct = new chart(user_fenshu); ct.setVisible(true); } else { Object[] option = { "是", "取消" }; int res1 = JOptionPane.showOptionDialog(null, "是否退出程序", "终止框", JOptionPane.DEFAULT_OPTION, JOptionPane.YES_NO_OPTION, null, option, option[0]); if (res1 == JOptionPane.YES_OPTION) { dispose(); System.exit(0); } else { } } } } }); item2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dispose(); System.exit(0); } }); } public static boolean isInteger(String str) { for (int i = str.length(); --i >= 0;) { if (!Character.isDigit(str.charAt(i))) { return false; } } return true; } }
实验总结:本学期学Java这门课后学到了好多关于计算机语言的出事用法,自己真的学到的内容并不多,但是收获了很多以前没接触过的还有好多。
学期学习总结:学习内容
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章)
这学期开始最初进入学Java,学完十四章之后还行吧!对于我来说的确很难!
感谢老师和学长的教导!
原文地址:https://www.cnblogs.com/baimaciren/p/10200007.html