zoukankan      html  css  js  c++  java
  • 实验18 苏浪浪 201771010120

     

    实验十八  总复习

    实验时间 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)点击窗口关闭,程序退出。

    package a;
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    public class Frame extends JFrame {
        private JPanel panel;
        private JPanel panel1;
        private JPanel panel2;
        private JPanel spanel2;
        private JPanel buttonPanel;
        private JComboBox<String> faceCombo;
        private JCheckBox Reading;
        private JCheckBox Singing;
        private JCheckBox Dancing;
        private JPanel panelDanXuan;
        private ButtonGroup option;
        private JRadioButton optionA;
        private JRadioButton optionB;
        private static final int DEFAULT_WITH = 750;
        private static final int DEFAULT_HEIGHT = 350;
    
        public Frame() {
            panel = new JPanel();
            panel.setLayout(new GridLayout(2,4));
          //框架a
            panel1 = new JPanel();
           
            panel.setPreferredSize(new Dimension(300,80));
            JLabel lab = new JLabel("Name:   ", JLabel.CENTER);
            final JTextField jt = new JTextField();
            JLabel lab1 = new JLabel("Qualification:    ", JLabel.CENTER);
            faceCombo = new JComboBox<>();
            faceCombo.addItem("Graduate");
            faceCombo.addItem("Not graduated");
            //b
            panel1 = new JPanel();
            panel1.setPreferredSize(new Dimension(300,100));
            JLabel lab2 = new JLabel("Adress:                    ", JLabel.CENTER);
            final JTextArea jt1 = new JTextArea();
            JLabel lab3 = new JLabel("Hobby:            ", JLabel.CENTER);
            panel2 = new JPanel();
            panel2.setPreferredSize(new Dimension(220,20));
            
            Reading = new JCheckBox("Reading");
            Singing = new JCheckBox("Singing");
            Dancing = new JCheckBox("Dancing ");
            //框架c
            spanel2 = new JPanel();
            JLabel lab4 = new JLabel("                 Sex:                    ", JLabel.CENTER);
            spanel2.setPreferredSize(new Dimension(300,60));
            panelDanXuan = new JPanel();
            option = new ButtonGroup();
            optionA = new JRadioButton("Male");
            optionB = new JRadioButton("Female");
            //框架d
            buttonPanel = new JPanel();
            buttonPanel.setPreferredSize(new Dimension(0,50));
            JButton jButton1 = new JButton("Validate");
            JButton jButton2 = new JButton("Reset");
            
            panel.add(lab);
            panel.add(jt);
            panel.add(lab1);
            panel.add(faceCombo);
            panel.add(lab2);
             panel.add(jt1);
            panel.add(lab3);
            
            panel2.add(Reading);
            panel2.add(Singing);
            panel2.add(Dancing);
            panel2.setLayout(new BoxLayout(panel2, BoxLayout.Y_AXIS));
            panel.add(panel2);
            
            spanel2.add(lab4);
            option.add(optionA);
            option.add(optionB);
            panelDanXuan.add(optionA);
            panelDanXuan.add(optionB);
            panelDanXuan.setBorder(BorderFactory.createTitledBorder(""));
            panelDanXuan.setLayout(new BoxLayout(panelDanXuan, BoxLayout.Y_AXIS));
            spanel2.add(panelDanXuan);
            
            buttonPanel.add(jButton1);
            buttonPanel.add(jButton2);
            add(panel, BorderLayout.NORTH);
            add(panel1, BorderLayout.CENTER);
            add(panel2, BorderLayout.EAST);
            add(spanel2, BorderLayout.WEST);
            add(buttonPanel, BorderLayout.SOUTH);
            setSize(DEFAULT_WITH, DEFAULT_HEIGHT);
            
            jButton1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    String Name = jt.getText();
                    if (Name != null) {
                        System.out.println("Name:"+Name);
                    }
                    String m = faceCombo.getSelectedItem().toString();
                    System.out.println("Qualification:"+m);
                    String Adress = jt1.getText();
                    if (Adress != null) {
                        System.out.println("Adress:"+Adress);
                    }
                    System.out.println("Hobby:");
                    if(Reading.isSelected()) {
                    System.out.println(Reading.getText());
                    }
                    if(Singing.isSelected()) {
                    System.out.println(Singing.getText());
                    }
                    if(Dancing.isSelected()) {
                    System.out.println(Dancing.getText());
                    }
                    System.out.println("Sex:");
                    if(optionA.isSelected()) {
                    System.out.println(optionA.getText());
                    }
                    if(optionB.isSelected()) {
                    System.out.println(optionB.getText());
                    }
                }
            });
            jButton2.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    jt.setText("");
                    jt1.setText("");
                    faceCombo.setSelectedItem("Graduate");
                    Reading.setSelected(false);
                    Singing.setSelected(false);
                    Dancing.setSelected(false);
                    option.clearSelection();
                }
            });
        }
    }
    package a;
    
    import java.awt.*;
    import javax.swing.*;
    
    public class Test {
        public static void main(String[] args) {
            EventQueue.invokeLater(() -> {
                Frame frame = new Frame();
                frame.setTitle("Student Detail");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setVisible(true);
                frame.setResizable(false); 
            });
        }
    }

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

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

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

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

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

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

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

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

    package Test;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStreamReader;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collections;
    import java.util.Scanner;
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    
    public class Main extends JFrame {
        private static ArrayList<Student> studentlist;
        private static ArrayList<Student> list;
        private JPanel panel;
        private JPanel buttonPanel;
        private static final int DEFAULT_WITH = 800;
        private static final int DEFAULT_HEIGHT = 500;
        public Main() {
            studentlist = new ArrayList<>();
            Scanner scanner = new Scanner(System.in);
            File file = new File("F:\身份证号.txt");
            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 number = linescanner.next();
                    String sex = linescanner.next();
                    String age = linescanner.next();
                    String province =linescanner.nextLine();
                    Student student = new Student();
                    student.setName(name);
                    student.setnumber(number);
                    student.setsex(sex);
                    int a = Integer.parseInt(age);
                    student.setage(a);
                    student.setprovince(province);
                    studentlist.add(student);
    
                }
            } catch (FileNotFoundException e) {
                System.out.println("学生信息文件找不到");
                e.printStackTrace();
            } catch (IOException e) {
                System.out.println("学生信息文件读取错误");
                e.printStackTrace();
            }
            panel = new JPanel();
            panel.setLayout(new BorderLayout());
            JTextArea jt = new JTextArea();
            panel.add(jt);
            add(panel, BorderLayout.NORTH);
            buttonPanel = new JPanel();
            buttonPanel.setLayout(new GridLayout(1, 7));
            JButton jButton = new JButton("字典排序");
            JButton jButton1 = new JButton("年龄最大和年龄最小");
            JLabel lab = new JLabel("猜猜你的老乡");
            JTextField jt1 = new JTextField();
            JLabel lab1 = new JLabel("找找同龄人(年龄相近):");
            JTextField jt2 = new JTextField();
            JLabel lab2 = new JLabel("输入你的身份证号码:");
            JTextField jt3 = new JTextField();
            JButton jButton2 = new JButton("退出");
            jButton.setBounds(110, 90, 60, 30);
            jButton1.setBounds(110, 90, 60, 30);
            jt1.setBounds(110, 90, 60, 30);
            jt2.setBounds(110, 90, 60, 30);
            jt3.setBounds(110, 90, 60, 30);
            jButton2.setBounds(110, 90, 60, 30);
            jButton.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    Collections.sort(studentlist);
                    jt.setText(studentlist.toString());
                }
            });
            jButton1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    int max = 0, min = 100;
                    int j, k1 = 0, k2 = 0;
                    for (int i = 1; i < studentlist.size(); i++) {
                        j = studentlist.get(i).getage();
                        if (j > max) {
                            max = j;
                            k1 = i;
                        }
                        if (j < min) {
                            min = j;
                            k2 = i;
                        }
    
                    }
                    jt.setText("年龄最大:" + studentlist.get(k1) + "年龄最小:" + studentlist.get(k2));
                }
            });
            jButton2.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    dispose();
                    System.exit(0);
                }
            });
            jt1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    String find = jt1.getText();
                    String text="";
                    String place = find.substring(0, 3);
                    for (int i = 0; i < studentlist.size(); i++) {
                        if (studentlist.get(i).getprovince().substring(1, 4).equals(place)) {
                            text+="
    "+studentlist.get(i);
                            jt.setText("老乡:" + text);
                        }
                    }
                }
            });
            jt2.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    String yourage = jt2.getText();
                    int a = Integer.parseInt(yourage);
                    int near = agenear(a);
                    int value = a - studentlist.get(near).getage();
                    jt.setText("年龄相近:" + studentlist.get(near));
                }
            });
            jt3.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    list = new ArrayList<>();
                    Collections.sort(studentlist);
                    String key = jt3.getText();
                    for (int i = 1; i < studentlist.size(); i++) {
                        if (studentlist.get(i).getnumber().contains(key)) {                        
                            list.add(studentlist.get(i));                        
                            jt.setText("emmm!你可能是:
    " + list);
                           
                        }                    
                    }
                }
            });
            buttonPanel.add(jButton);
            buttonPanel.add(jButton1);
            buttonPanel.add(lab);
            buttonPanel.add(jt1);
            buttonPanel.add(lab1);
            buttonPanel.add(jt2);
            buttonPanel.add(lab2);
            buttonPanel.add(jt3);
            buttonPanel.add(jButton2);
            add(buttonPanel, BorderLayout.SOUTH);
            setSize(DEFAULT_WITH, DEFAULT_HEIGHT);
        }
    
            public static int agenear(int age) {      
            int j=0,min=53,value=0,k=0;
             for (int i = 0; i < studentlist.size(); i++)
             {
                 value=studentlist.get(i).getage()-age;
                 if(value<0) value=-value; 
                 if (value<min) 
                 {
                    min=value;
                    k=i;
                 } 
              }    
             return k;         
          }
    
    }
    package Test;
    
    import java.awt.*;
    import javax.swing.*;
    
    import c.v;
    
    public class ButtonTest {
        public static void main(String[] args) {
            EventQueue.invokeLater(() -> {
                JFrame frame = new Main();
                frame.setTitle("身份证");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setVisible(true);
            });
        }
    }
    package Test;
    
    public class Student implements Comparable<Student> {
    
        private String name;
        private String number ;
        private String sex ;
        private int age;
        private String province;
       
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getnumber() {
            return number;
        }
        public void setnumber(String number) {
            this.number = number;
        }
        public String getsex() {
            return sex ;
        }
        public void setsex(String sex ) {
            this.sex =sex ;
        }
        public int getage() {
    
            return age;
            }
            public void setage(int age) {
                // int a = Integer.parseInt(age);
            this.age= age;
            }
    
        public String getprovince() {
            return province;
        }
        public void setprovince(String province) {
            this.province=province ;
        }
    
        public int compareTo(Student o) {
           return this.name.compareTo(o.getName());
        }
    
        public String toString() {
            return  name+"	"+sex+"	"+age+"	"+number+"	"+province+"
    ";
        }    
    }

    身份证号:

    同龄:

    找老乡:

    年龄最小:

    字典排序:

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

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

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

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

    package c;
    
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.FileNotFoundException;
    import java.io.PrintWriter;
    import java.util.Collections;
    import java.util.Scanner;
    
    import javax.swing.*;
    
    import java.math.*;
    
    
    public class D extends JFrame {
        
        private String[] c=new String[10];
        private String[] c1=new String[11];
        private int[] list=new int[10];
        int i=0,i1=0,sum = 0;
        private PrintWriter out = null;
        private JTextArea text,text1;
        private int counter;
        
        public D()  {
            JPanel Panel = new JPanel();Panel.setLayout(null);
            JLabel JLabel1=new JLabel("...");JLabel1.setBounds(500, 800, 400, 30);JLabel1.setFont(new Font("Courier",Font.PLAIN,35));
            JButton Button = new JButton("题目");Button.setBounds(50,150,150,50);Button.setFont(new Font("Courier",Font.PLAIN,20)); Button.addActionListener(new Action());
            JButton Button2 = new JButton("确定");Button2.setBounds(300,150,150,50);Button2.setFont(new Font("Courier",Font.PLAIN,20));Button2.addActionListener(new Action1());
            JButton Button3 = new JButton("读出文件");Button3.setBounds(500,150,150,50);Button3.setFont(new Font("Courier",Font.PLAIN,20));Button3.addActionListener(new Action2());
             text=new JTextArea(30,80);text.setBounds(30, 50, 200, 50);text.setFont(new Font("Courier",Font.PLAIN,35));
             text1=new JTextArea(30,80);text1.setBounds(270, 50, 200, 50);text1.setFont(new Font("Courier",Font.PLAIN,35));
    
             Panel.add(text);
             Panel.add(text1);
    
             Panel.add(Button);
             Panel.add(Button2);
             Panel.add(Button3);
             Panel.add(JLabel1);
             add(Panel);
             
             
             
    
    
               
                      
        }
        
        private class Action implements ActionListener
        {
        public void actionPerformed(ActionEvent event)
            {        
            text1.setText("0");
            if(i<11) {
            
            int a = 1+(int)(Math.random() * 99);
            int b = 1+(int)(Math.random() * 99);
            int m= (int) Math.round(Math.random() * 3);
          switch(m)
          {
          case 1:
              while(a<b){  b = (int) Math.round(Math.random() * 100);a = (int) Math.round(Math.random() * 100); }  
              c[i]=((i+1)+":"+a+"/"+b+"=");
                list[(i+1)]=Math.floorDiv(a, b);
                text.setText((i+1)+":"+a+"/"+b+"=");
                i++;
                
              break; 
          case 2:
              c[i]=((i+1)+":"+a+"*"+b+"=");
              list[(i+1)]=Math.multiplyExact(a, b);
              text.setText((i+1)+":"+a+"*"+b+"=");        
             i++;
              break;
          case 3:
              c[i]=((i+1)+":"+a+"+"+b+"=");
              list[(i+1)]=Math.addExact(a, b);
             text.setText((i+1)+":"+a+"+"+b+"=");
             i++;
              break ;
          case 4:
              while(a<=b){  b = (int) Math.round(Math.random() * 100);a = (int) Math.round(Math.random() * 100); }    
              c[i]=((i+1)+":"+a+"-"+b+"=");
              text.setText((i+1)+":"+a+"-"+b+"=");
              list[(i+1)]=Math.subtractExact(a, b);
              i++;
    
              break ;
              }
            }
          }
        }      
        private class Action1 implements ActionListener
        {
        public void actionPerformed(ActionEvent event)
            {    
            if(i<10) {
                 
            String daan=text1.getText().toString().trim();
            int a = Integer.parseInt(daan);
            if(text1.getText()!="  ") {
             if(list[i1]==a) sum+=10;
             }
            
             c1[i1]=daan;
             
             i1++;
             
            }
            }
    
        }      
        
    
        private class Action2 implements ActionListener
        {
        public void actionPerformed(ActionEvent event)
            {
             
            try {
                out = new PrintWriter("text.txt");
            } catch (FileNotFoundException e) {
          
                e.printStackTrace();
            }
            for(int counter=0;counter<10;counter++)
            {
                out.println(c[counter]+c1[counter]);
            }
            out.println("成绩"+sum);
            out.close();
    
            }
    
        }   
    }
    package c;
    
    import java.awt.Dimension;
    import java.awt.EventQueue;
    import java.awt.Toolkit;
    
    import javax.swing.JFrame;
    
    public class N {
    
         public static void main (String args[])
            {
                 Toolkit t=Toolkit.getDefaultToolkit();
                Dimension s=t.getScreenSize(); 
                EventQueue.invokeLater(() -> {
                    JFrame frame = new D();
                    frame.setBounds(0, 0,(int)s.getWidth()/2,(int)s.getHeight()/2);
                    frame.setTitle("大师");
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    frame.setVisible(true);
                 });        
            }
     
    }

     

     

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

    总结:在这学期中学习了面向对象程序设计这门课程,学会了如何去构建GUI界面,知道了什么是封装以及封装的机制(类与对象)也知道了继承和接口的重要性能够简单的做一些异常处理,了解到泛型程序设计可以让程序更安全,更可读。最后也知道了并发能够让程序任务并行执行。这学期老师引入助教(这在我的学习生活中并没有遇到过),助教学长能够兢兢业业的为我们付出,为我们讲解不懂的知识,而且还在实验中设立自主编程练习,这样可以更好更有效地提升我们的能力。通过本学期的学习,我收获了很多。感谢老师以及学长的帮助/。

  • 相关阅读:
    【BZOJ-4031】小z的房间 Matrix-Tree定理 + 高斯消元解行列式
    无题
    【BZOJ-4261】建设游乐场 最大费用最大流
    【BZOJ-2888】资源运输 LCT + 启发式合并
    【Codeforces666E】Forensic Examination 后缀自动机 + 线段树合并
    【BZOJ-2142】礼物 拓展Lucas定理
    【BZOJ-3672】购票 树分治 + 斜率优化DP
    【BZOJ-3218】a+b Problem 最小割 + 可持久化线段树
    【BZOJ-1913】signaling信号覆盖 极角排序 + 组合
    【BZOJ-4408】神秘数 可持久化线段树
  • 原文地址:https://www.cnblogs.com/xiaolangoxiaolang/p/10186601.html
Copyright © 2011-2022 走看看