孔维滢《面向对象程序设计(java)》课程学习总结

实验十八  总复习

1、实验目的与要求              

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

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

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

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

(5) 综合编程练习。

2、实验内容和步骤

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

任务2:综合编程练习

练习1:

 

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.*;
import javax.swing.*;

public class Yonghu 
{
   public static void main(String[] args)
   {
      EventQueue.invokeLater(() -> {
         JFrame frame = new FrameTest();
         frame.setTitle("信息采集");
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         frame.setVisible(true);
      });
   }
}



class FrameTest extends JFrame
{
    
    private JPanel panel1;
    private JTextArea text1,text2;
    private JRadioButton JRadioButton1,JRadioButton2;
    private ButtonGroup ButtonGroup1;
    private JLabel JLabel1;
    private JCheckBox checkboxb1,checkboxb2,checkboxb3;
    private JComboBox<String> JComboBox1;
    private JButton Button1,Button2;
    
    
   public FrameTest()
   {
      setSize(700,500);
      panel1=new JPanel();
      panel1.setLayout(null);

      ButtonGroup1=new ButtonGroup();
      JRadioButton1=new JRadioButton("Male",false);   
      JRadioButton1.setBounds(150,330, 80, 50);
      JRadioButton2=new JRadioButton("Female",false); 
      JRadioButton2.setBounds(150,300, 80,50);
      ButtonGroup1.add(JRadioButton1);
      ButtonGroup1.add(JRadioButton2);
      
      addJLabel("sex:",100,300);
      addJLabel("name:",100,50);
      addJLabel("address:",100,150);
      addJLabel("Qualification:",400,50);
      addJLabel("Hobby:",400,150);
      
      
      text1=new JTextArea(1,1);
      text1.setBounds(150,70, 120, 30);
      text1.setLineWrap(true);
      text2=new JTextArea(5,3);
      text2.setBounds(150,160, 130, 100);
      text2.setLineWrap(true);
      
      
      checkboxb1=new JCheckBox("Reading");
      checkboxb1.setBounds(450,160,100,30);
      checkboxb2=new JCheckBox("Dancing");
      checkboxb2.setBounds(450,180,100,30);
      checkboxb3=new JCheckBox("Singing");
      checkboxb3.setBounds(450,200,100,30);

      
      JComboBox1=new JComboBox<>();
      JComboBox1.addItem("Graduate");
      JComboBox1.addItem("Sinior");
      JComboBox1.addItem("Junior");
      JComboBox1.setBounds(500,65, 100, 20);
      
      Button1 = new JButton("提交");Button1.setBounds(200, 400, 100, 35);
      Button2 = new JButton("重置");Button2.setBounds(400, 400, 100, 35);

      Button1.addActionListener(new Action1());
      Button2.addActionListener(new Action2());
      
      panel1.add(checkboxb1);
      panel1.add(checkboxb2);
      panel1.add(checkboxb3);
      panel1.add(Button1);
      panel1.add(Button2);
      panel1.add(JComboBox1);
      panel1.add(text1);
      panel1.add(text2);
      panel1.add(JRadioButton1);
      panel1.add(JRadioButton2);
      add(panel1);
      
      
   }
   
public void addJLabel(String n,int a,int b)
   {
       JLabel1 = new JLabel(n);
       JLabel1.setBounds(a,b,100,50);
       panel1.add(JLabel1);
   }
   
   private class Action1 implements ActionListener
   {
   public void actionPerformed(ActionEvent event)
       {        
       System.out.println("name:"+text1.getText()+"\n"+"address:"+text2.getText());
       System.out.println("Qualification:"+JComboBox1.getSelectedItem());
       System.out.println("Hobby:");
       if(checkboxb1.isSelected()==true)System.out.print(checkboxb1.getText());
       if(checkboxb2.isSelected()==true)System.out.print(checkboxb2.getText());
       if(checkboxb3.isSelected()==true)System.out.print(checkboxb3.getText());
       System.out.println("\n"+"sex:");
       if(JRadioButton1.isSelected()==true)System.out.println(JRadioButton1.getText());
       if(JRadioButton2.isSelected()==true)System.out.println(JRadioButton2.getText());
       System.out.println("\n");
       }
   } 
   private class Action2 implements ActionListener
   {
   public void actionPerformed(ActionEvent event)
       {        
       text1.setText(null);
       text2.setText(null);
       checkboxb1.setSelected(false);
       checkboxb2.setSelected(false);
       checkboxb3.setSelected(false);
       ButtonGroup1.clearSelection();
       JComboBox1.setSelectedIndex(0);
       }
   }   
}

 

  

      

      重置后:

      

练习2:

package ShenF;

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Toolkit;

import javax.swing.JFrame;

public class Main {

     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);
             });        
        }
}

  

package ShenF;

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("E:\\身份证号.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;
	}
}

  

package ShenF;

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";

	}
}

  练习3:

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.util.Random;
import javax.swing.*;
 
public class Text extends JFrame {
    JPanel p=new JPanel();
    JLabel timeLabel=new JLabel();
      
    JLabel[] label1=new JLabel[10];
    JLabel[] label2=new JLabel[10];
    JLabel[] label3=new JLabel[10];
    JLabel[] label4=new JLabel[10];
    JLabel[] label5=new JLabel[10];
    JTextField[] field=new JTextField[10];
    JLabel[] label6=new JLabel[10]; 
    String[] btn_name= {"开始","重置","提交","重考"};
    JButton[] btn=new JButton[4];
    Panel2 panel2=null;
    int ExamCount=0;
    JLabel examLabel=new JLabel();
    double[] result=new double[10];
    public static void main(String[] args) {
        new Text("测试").setVisible(true);
    }
      
    public Text(String title) {
        setTitle(title);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(3);
        setSize(400,500);
        setResizable(false);
        setForeground(Color.blue);
        add(new Panel1(),BorderLayout.NORTH);
        panel2=new Panel2();
        add(new JScrollPane(panel2));
        add(new Panel3(),BorderLayout.WEST);       
    }
 
    int rightResultCount=0;
    public void startExam() {
        int num1=0;
        int num2=0;
        String[] quots= {"+","-","*","/"};
        String quot=null;
        Random ran=null;
        ran=new Random(System.currentTimeMillis());
        Box box=Box.createVerticalBox();
          
        for(int i=0;i<10;i++) {
            num1=ran.nextInt(100)+1;
            num2=ran.nextInt(100)+1;
            int n=ran.nextInt(4);
            quot=new String(quots[n]);
            switch(quot) {
            case "+":
                result[i]=num1+num2;
                break;
            case "-":
                result[i]=num1-num2;
                break;
            case "*":
                result[i]=num1*num2;
                break;
            case "/":
                result[i]=num1/(num2*1.0);
                result[i]=Math.round(result[i]*100)/100.0;
                break;
            }
              
            label1[i]=new JLabel("第"+(i+1)+"题:");
            label2[i]=new JLabel(num1+"");
              
            label3[i]=new JLabel(quot);
            label4[i]=new JLabel(num2+"");
            label5[i]=new JLabel("=");
            field[i]=new JTextField();
            field[i].setPreferredSize(new Dimension(60,20));
            field[i].addKeyListener(new KeyAdapter() {
                public void keyTyped(KeyEvent ee) {
                    if((ee.getKeyChar()>'9' || ee.getKeyChar()<'0') && ee.getKeyChar()!=45 && ee.getKeyChar()!='.') {
                        ee.consume();
                    }
                }
            });
            label6[i]=new JLabel("");  
            Box hbox=Box.createHorizontalBox();
            hbox.add(label1[i]);       
            hbox.add(Box.createHorizontalStrut(20));
            hbox.add(label2[i]);  
            hbox.add(Box.createHorizontalStrut(5));
            hbox.add(label3[i]); 
            hbox.add(Box.createHorizontalStrut(5));
            hbox.add(label4[i]);     
            hbox.add(Box.createHorizontalStrut(5));
            hbox.add(label5[i]);   
            hbox.add(Box.createHorizontalStrut(5));
            hbox.add(field[i]);
            hbox.add(Box.createHorizontalStrut(20));
            hbox.add(label6[i]);
            box.add(hbox);
            box.add(Box.createVerticalStrut(20));
        }
        panel2.add(box);
        panel2.validate();
    }
    int submitCount=0;
    class Listener implements ActionListener{
        public void actionPerformed(ActionEvent e) {
            JButton button=(JButton)e.getSource();
            if(button==btn[0]) {
                startExam();
                ExamCount++;
                btn[0].setEnabled(false);
                  
                for(int i=1;i<4;i++) {
                    btn[i].setEnabled(true);
                }
            }
            if(button==btn[1]) {
                for(int i=0;i<10;i++) {
                    field[i].setText("");
                }
            }
            if(button==btn[2] ) {
                rightResultCount=0;
                btn[2].setEnabled(false);
                double yourResult=0;
                for(int i=0;i<10;i++) {
                    try {
                        yourResult=Double.parseDouble(field[i].getText().trim());
                    }catch(Exception ee) {}
                      
                    if(yourResult==result[i]) {
                        rightResultCount++;
                        label6[i].setText("V");
                        label6[i].setForeground(Color.BLUE);
                          
                    }else {
                        label6[i].setText("X");
                        label6[i].setForeground(Color.RED);
                          
                    }
                }
                examLabel.setText("你答对了 "+rightResultCount+
                        " 道题,答错了"+(10-rightResultCount)+" 道题!"+
                        "考试得分是: "+rightResultCount*10+" 分!");
            }
            if(button==btn[3]) {
                btn[2].setEnabled(true);
                panel2.removeAll();
                startExam();
                ExamCount++;
                btn[3].setEnabled(false);
                for(int i=0;i<10;i++) {
                    field[i].setText("");
                    label6[i].setText("");
                }
                panel2.repaint();
            }
            if(btn[2].isEnabled()==false && btn[3].isEnabled()==false) {
                btn[1].setEnabled(false);
            }
        }
    }
      
    class Panel1 extends JPanel{
        public Panel1() {
            setPreferredSize(new Dimension(350,120));
            setLayout(new GridLayout(3,1,10,10));
            JTextArea area=new JTextArea("点击“开始”开始答题,答案中有小数的,保留2位!");
            area.setLineWrap(true);
            area.setEditable(false);
            add(area);
            add(examLabel);
            p.add(timeLabel);
            add(p);
        }
    }
  
    class Panel2 extends JPanel{
        public Panel2() {
            setPreferredSize(new Dimension(400,600));  
        }
    }
      
    class Panel3 extends JPanel{
        public Panel3() {
            setPreferredSize(new Dimension(50,100));
            setBackground(Color.LIGHT_GRAY);
            for(int i=0;i<4;i++) {
                btn[i]=new JButton(btn_name[i]);
                btn[i].addActionListener(new Listener());
                add(btn[i]);
                if(i>0) {
                    btn[i].setEnabled(false);
                }
            }
        }
    }
}

  

实验总结:

    一个学期的java学习已经结束,我发现相较于很多同学来说,我的能力还是不够,我还需比其他同学更加努力。而且我深刻的感到,很多学习是需要耐心和实践才能认识到自己的不足,才能不断完善的。在以后的学习里,我会继续深入学习,不断完善自己的知识面,学会活学活用。

   还有对我帮助很多的老师和学长表示感谢。

意见和建议:

   因为专业课较多,所以如果实验作业在周四下午发布,周天下午五点提交,在这之间时间比较紧张。

   其次,我认为老师课堂教学+助教线上演示+网上教学+章末答疑这种教学方式很新颖也很有用,尤其是助教对我的帮助很大,因为我们在学习中遇到的问题,学长可能也经历过,所以能更好的解答,因为是同龄人,所以交流起来也更自然。还有每周提交完作业后,周一课上的答疑对我帮助也很大。觉得老师可以在以后的学妹学弟们身上继续使用这种教学方式,个人觉得很好。

 

猜你喜欢

转载自www.cnblogs.com/Weiron/p/10199485.html