總複習綱要 html
1. Java語言特色與開發環境配置(第1章、第2章)java
2. Java基本程序結構(第3章)編程
3. Java面向對象程序結構(第4章、第5章、第6章)多線程
4. 類、類間關係、類圖併發
5. 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章) app
— Java異常處理編程模型 dom
— Java GUI編程模型ide
6. Java併發程序設計(第14章)學習
7. Java應用程序部署(第13章) 測試
實驗時間 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 jiemian; 2 3 import java.awt.EventQueue; 4 import java.awt.event.ActionEvent; 5 import java.awt.event.ActionListener; 6 7 import javax.swing.ButtonGroup; 8 import javax.swing.JButton; 9 import javax.swing.JCheckBox; 10 import javax.swing.JComboBox; 11 import javax.swing.JFrame; 12 import javax.swing.JLabel; 13 import javax.swing.JPanel; 14 import javax.swing.JRadioButton; 15 import javax.swing.JTextArea; 16 17 public class aaa { 18 19 public static void main(String[] args) { 20 EventQueue.invokeLater(() -> { 21 JFrame frame = new FrameTest(); 22 frame.setTitle("WangZT"); 23 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 24 frame.setVisible(true); 25 }); 26 } 27 } 28 class FrameTest extends JFrame { 29 30 private JPanel panel; 31 private JRadioButton JRadioButton1,JRadioButton2; 32 private ButtonGroup ButtonGroup; 33 private JLabel JLabel; 34 private JTextArea fieldname,fieldadress; 35 private JCheckBox Read,dance,sing; 36 private JComboBox<String> JComboBox; 37 private JButton Button1,Button2; 38 public FrameTest() { 39 setSize(700,500); 40 panel=new JPanel(); 41 panel.setLayout(null); 42 ButtonGroup=new ButtonGroup(); 43 JRadioButton1=new JRadioButton("男",false); JRadioButton1.setBounds(130,330, 80, 50); 44 JRadioButton2=new JRadioButton("女",false); JRadioButton2.setBounds(130,300, 80,50); 45 ButtonGroup.add(JRadioButton1); 46 ButtonGroup.add(JRadioButton2); 47 addJLabel("性別:",100,300); 48 addJLabel("姓名:",100,50); 49 addJLabel("地址:",90,150); 50 addJLabel("資格:",400,50); 51 addJLabel("喜愛:",400,150); 52 53 fieldname=new JTextArea(1,1);fieldname.setBounds(150,70, 120, 30);fieldname.setLineWrap(true); 54 fieldadress=new JTextArea(5,3);fieldadress.setBounds(150,160, 130, 100);fieldadress.setLineWrap(true); 55 Read=new JCheckBox("讀書");Read.setBounds(450,160,100,30); 56 dance=new JCheckBox("跳舞");dance.setBounds(450,180,100,30); 57 sing=new JCheckBox("唱歌");sing.setBounds(450,200,100,30); 58 JComboBox=new JComboBox<>(); 59 JComboBox.addItem("研究生"); 60 JComboBox.addItem("本科生"); 61 JComboBox.addItem("專科生"); 62 JComboBox.setBounds(500,65, 100, 20); 63 Button1 = new JButton("提交");Button1.setBounds(200, 400, 100, 35); 64 Button2 = new JButton("重置");Button2.setBounds(400, 400, 100, 35); 65 Button1.addActionListener(new Action1()); 66 Button2.addActionListener(new Action2()); 67 68 panel.add(Button2); 69 panel.add(Button1); 70 panel.add(JComboBox); 71 panel.add(Read); 72 panel.add(dance); 73 panel.add(sing); 74 panel.add(fieldname); 75 panel.add(fieldadress); 76 panel.add(JRadioButton1); 77 panel.add(JRadioButton2); 78 add(panel); 79 } 80 81 82 public void addJLabel(String n,int a,int b) { 83 JLabel = new JLabel(n); 84 JLabel.setBounds(a,b,100,50); 85 panel.add(JLabel); 86 } 87 88 private class Action1 implements ActionListener { 89 public void actionPerformed(ActionEvent event) { 90 System.out.println("name:"+fieldname.getText()+"\n"+"address:"+fieldadress.getText()); 91 System.out.println("Qualification:"+JComboBox.getSelectedItem()); 92 System.out.println("Hobby:"); 93 if(Read.isSelected()==true)System.out.print(Read.getText()); 94 if(dance.isSelected()==true)System.out.print(dance.getText()); 95 if(sing.isSelected()==true)System.out.print(sing.getText()); 96 System.out.println("\n"+"sex:"); 97 if(JRadioButton1.isSelected()==true)System.out.println(JRadioButton1.getText()); 98 if(JRadioButton2.isSelected()==true)System.out.println(JRadioButton2.getText()); 99 System.out.println("\n"); 100 } 101 } 102 private class Action2 implements ActionListener { 103 public void actionPerformed(ActionEvent event) { 104 fieldname.setText(null); 105 fieldadress.setText(null); 106 Read.setSelected(false); 107 dance.setSelected(false); 108 sing.setSelected(false); 109 ButtonGroup.clearSelection(); 110 JComboBox.setSelectedIndex(0); 111 } 112 } 113 114 }
練習2:採用GUI界面設計如下程序:
1.編制一個程序,將身份證號.txt 中的信息讀入到內存中;
2.按姓名字典序輸出人員信息;
3.查詢最大年齡的人員信息;
4.查詢最小年齡人員信息;
5.輸入你的年齡,查詢身份證號.txt中年齡與你最近人的姓名、身份證號、年齡、性別和出生地;
6.查詢人員中是否有你的同鄉。
7.輸入身份證信息,查詢所提供身份證號的人員信息,要求輸入一個身份證數字時,查詢界面就顯示知足查詢條件的查詢結果,且隨着輸入的數字的增多,查詢匹配的範圍逐漸縮小。
1 package shiwuzhou; 2 3 import java.awt.Dimension; 4 import java.awt.EventQueue; 5 import java.awt.Toolkit; 6 7 import javax.swing.JFrame; 8 9 public class Out { 10 11 public static void main (String args[]) 12 { 13 Toolkit t=Toolkit.getDefaultToolkit(); 14 Dimension s=t.getScreenSize(); 15 EventQueue.invokeLater(() -> { 16 JFrame frame = new Main1(); 17 frame.setBounds(0, 0,(int)s.getWidth(),(int)s.getHeight()); 18 frame.setTitle("第四組"); 19 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 20 frame.setVisible(true); 21 }); 22 } 23 24 }
1 import java.awt.BorderLayout; 2 import java.awt.event.ActionEvent; 3 import java.awt.event.ActionListener; 4 import java.io.BufferedReader; 5 import java.io.File; 6 import java.io.FileInputStream; 7 import java.io.FileNotFoundException; 8 import java.io.IOException; 9 import java.io.InputStreamReader; 10 import java.util.*; 11 import java.util.Timer; 12 import javax.swing.*; 13 14 public class Main1 extends JFrame 15 { 16 private static ArrayList<Person> Personlist; 17 18 19 Scanner scanner = new Scanner(System.in); 20 File file = new File("D:\\身份證號.txt"); 21 22 private JPanel Panel; 23 private JLabel JLabel1; 24 private JButton Button,Button2,Button3; 25 private JTextArea text,text1,text2,text3; 26 boolean tru=true; 27 28 29 30 public Main1() { 31 32 33 Panel = new JPanel();Panel.setLayout(null); 34 Button = new JButton("1:按姓名字典序輸出人員信息"); 35 Button2 = new JButton("2:查詢最大年齡與最小年齡人員信息"); 36 Button3 = new JButton("查詢相近年齡"); 37 JLabel1 = new JLabel("輸入身份證號或者地址查詢"); 38 JLabel1.setBounds(900, 50, 400, 30); 39 40 text=new JTextArea(30,80);text.setBounds(50, 180, 700, 700); 41 text1=new JTextArea(1,30);text1.setBounds(900, 80, 400, 30); 42 text2=new JTextArea(30,80);text2.setBounds(900,180,700, 700); 43 text3=new JTextArea(30,80);text3.setBounds(420,100,200,40); 44 45 Button.addActionListener(new Action());Button.setBounds(50,50,300,40); 46 Button2.addActionListener(new Action1());Button2.setBounds(50,100,300,40); 47 Button3.addActionListener(new Action2());Button3.setBounds(650,100,120,40); 48 Panel.add(JLabel1); 49 Panel.add(Button); 50 Panel.add(Button2); 51 Panel.add(Button3); 52 Panel.add(text); 53 Panel.add(text2); 54 Panel.add(text1); 55 Panel.add(text3); 56 add(Panel); 57 58 59 Timer timer = new Timer(); 60 TimerTask timeTask=new TimerTask() { 61 62 @Override 63 public void run() 64 { 65 // TODO Auto-generated method stub 66 text2.setText(null); 67 String place=text1.getText().toString().trim(); 68 for (int i = 0; i <Personlist.size(); i++) 69 { 70 71 String Str=(String)Personlist.get(i).getbirthplace(); 72 if(Str.contains(place)&&!place.equals("")) 73 { 74 text2.append(Personlist.get(i).toString()); 75 } 76 } 77 for (int i = 0; i <Personlist.size(); i++) 78 { 79 80 String Str=(String)Personlist.get(i).getID(); 81 if(Str.contains(place)&&!place.equals("")) 82 { 83 text2.append(Personlist.get(i).toString()); 84 } 85 } 86 87 } 88 89 };timer.schedule(timeTask, 0,100); 90 91 Personlist = new ArrayList<>(); 92 try { 93 FileInputStream fis = new FileInputStream(file); 94 BufferedReader in = new BufferedReader(new InputStreamReader(fis)); 95 String temp = null; 96 while ((temp = in.readLine()) != null) { 97 Scanner linescanner = new Scanner(temp); 98 linescanner.useDelimiter(" "); 99 String name = linescanner.next(); 100 String ID = linescanner.next(); 101 String sex = linescanner.next(); 102 String age = linescanner.next(); 103 String place =linescanner.nextLine(); 104 Person Person = new Person(); 105 Person.setname(name); 106 Person.setID(ID); 107 Person.setsex(sex); 108 int a = Integer.parseInt(age); 109 Person.setage(a); 110 Person.setbirthplace(place); 111 Personlist.add(Person); 112 113 } 114 } catch (FileNotFoundException e) { 115 System.out.println("查找不到信息"); 116 e.printStackTrace(); 117 } catch (IOException e) { 118 System.out.println("信息讀取有誤"); 119 e.printStackTrace(); 120 } 121 122 123 } 124 125 126 127 128 private class Action implements ActionListener 129 { 130 public void actionPerformed(ActionEvent event) 131 { 132 text.setText(null); 133 Collections.sort(Personlist); 134 text.append(Personlist.toString()); 135 } 136 137 } 138 139 private class Action1 implements ActionListener 140 { 141 public void actionPerformed(ActionEvent event) 142 { 143 text.setText(null); 144 int max=0,min=100;int j,k1 = 0,k2=0; 145 for(int i=1;i<Personlist.size();i++) 146 { 147 j=Personlist.get(i).getage(); 148 if(j>max) 149 { 150 max=j; 151 k1=i; 152 } 153 if(j<min) 154 { 155 min=j; 156 k2=i; 157 } 158 } 159 text.append("年齡最大: "+Personlist.get(k1)+"\n"+"年齡最小: "+Personlist.get(k2)); 160 } 161 162 } 163 164 private class Action2 implements ActionListener 165 { 166 public void actionPerformed(ActionEvent event) 167 { 168 text.setText(null); 169 int a = Integer.parseInt(text3.getText().toString().trim()); 170 int d_value=a-Personlist.get(agenear(a)).getage(); 171 172 for (int i = 0; i < Personlist.size(); i++) 173 { 174 int p=Personlist.get(i).getage()-a; 175 176 if(p==d_value||-p==d_value) text.append(Personlist.get(i).toString()); 177 } 178 } 179 180 } 181 182 183 public static int agenear(int age) { 184 185 int j=0,min=53,d_value=0,k=0; 186 for (int i = 0; i < Personlist.size(); i++) 187 { 188 d_value=Personlist.get(i).getage()-age; 189 if(d_value<0) d_value=-d_value; 190 if (d_value<min) 191 { 192 min=d_value; 193 k=i; 194 } 195 196 } return k; 197 198 } 199 200 }
1 public class Person implements Comparable<Person> { 2 private String name; 3 private String ID; 4 private int age; 5 private String sex; 6 private String birthplace; 7 8 public String getname() 9 { 10 return name; 11 } 12 public void setname(String name) 13 { 14 this.name = name; 15 } 16 public String getID() 17 { 18 return ID; 19 } 20 public void setID(String ID) 21 { 22 this.ID= ID; 23 } 24 public int getage() 25 { 26 return age; 27 } 28 public void setage(int age) 29 { 30 this.age= age; 31 } 32 public String getsex() 33 { 34 return sex; 35 } 36 public void setsex(String sex) 37 { 38 this.sex= sex; 39 } 40 public String getbirthplace() 41 { 42 return birthplace; 43 } 44 public void setbirthplace(String birthplace) 45 { 46 this.birthplace= birthplace; 47 } 48 49 public int compareTo(Person o) 50 { 51 return this.name.compareTo(o.getname()); 52 } 53 54 public String toString() 55 { 56 return name+"\t"+sex+"\t"+age+"\t"+ID+"\t"+birthplace+"\n"; 57 58 } 59 60 61 62 }
練習3:採用GUI界面設計如下程序
8.編寫一個計算器類,能夠完成加、減、乘、除的操做
9.利用計算機類,設計一個小學生100之內數的四則運算練習程序,由計算機隨機產生10道加減乘除練習題,學生輸入答案,由程序檢查答案是否正確,每道題正確計10分,錯誤不計分,10道題測試結束後給出測試總分;
10.將程序中測試練習題及學生答題結果輸出到文件,文件名爲test.txt。
1 import java.awt.Dimension; 2 import java.awt.EventQueue; 3 import java.awt.Toolkit; 4 5 import javax.swing.JFrame; 6 7 public class New { 8 9 public static void main (String args[]) 10 { 11 Toolkit t=Toolkit.getDefaultToolkit(); 12 Dimension s=t.getScreenSize(); 13 EventQueue.invokeLater(() -> { 14 JFrame frame = new Demo(); 15 frame.setBounds(0, 0,(int)s.getWidth()/2,(int)s.getHeight()/2); 16 frame.setTitle("第四組"); 17 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 18 frame.setVisible(true); 19 }); 20 } 21 22 }
1 import java.awt.Font; 2 import java.awt.event.ActionEvent; 3 import java.awt.event.ActionListener; 4 import java.io.FileNotFoundException; 5 import java.io.PrintWriter; 6 import java.util.Collections; 7 import java.util.Scanner; 8 9 import javax.swing.*; 10 11 import java.math.*; 12 13 14 public class Demo extends JFrame { 15 16 private String[] c=new String[10]; 17 private String[] c1=new String[10]; 18 private int[] list=new int[10]; 19 int i=0,i1=0,sum = 0; 20 private PrintWriter out = null; 21 private JTextArea text,text1; 22 private int counter; 23 24 public Demo() { 25 JPanel Panel = new JPanel(); 26 Panel.setLayout(null); 27 JLabel JLabel1=new JLabel(""); 28 JLabel1.setBounds(500, 800, 400, 30); 29 JLabel1.setFont(new Font("Courier",Font.PLAIN,35)); 30 JButton Button = new JButton("生成題目"); 31 Button.setBounds(50,150,150,50); 32 Button.setFont(new Font("Courier",Font.PLAIN,20)); 33 Button.addActionListener(new Action()); 34 JButton Button2 = new JButton("肯定答案"); 35 Button2.setBounds(300,150,150,50); 36 Button2.setFont(new Font("Courier",Font.PLAIN,20)); 37 Button2.addActionListener(new Action1()); 38 JButton Button3 = new JButton("讀出文件"); 39 Button3.setBounds(500,150,150,50); 40 Button3.setFont(new Font("Courier",Font.PLAIN,20)); 41 Button3.addActionListener(new Action2()); 42 text=new JTextArea(30,80);text.setBounds(30, 50, 200, 50); 43 text.setFont(new Font("Courier",Font.PLAIN,35)); 44 text1=new JTextArea(30,80); 45 text1.setBounds(270, 50, 200, 50); 46 text1.setFont(new Font("Courier",Font.PLAIN,35)); 47 48 Panel.add(text); 49 Panel.add(text1); 50 51 Panel.add(Button); 52 Panel.add(Button2); 53 Panel.add(Button3); 54 Panel.add(JLabel1); 55 add(Panel); 56 57 58 59 60 61 62 63 } 64 65 private class Action implements ActionListener 66 { 67 public void actionPerformed(ActionEvent event) 68 { 69 text1.setText("0"); 70 if(i<10) { 71 72 int a = 1+(int)(Math.random() * 99); 73 int b = 1+(int)(Math.random() * 99); 74 int m= (int) Math.round(Math.random() * 3); 75 switch(m) 76 { 77 case 0: 78 while(a<b){ 79 b = (int) Math.round(Math.random() * 100); 80 a = (int) Math.round(Math.random() * 100); 81 } 82 c[i]=(i+":"+a+"/"+b+"="); 83 list[i]=Math.floorDiv(a, b); 84 text.setText(i+":"+a+"/"+b+"="); 85 i++; 86 break; 87 case 1: 88 c[i]=(i+":"+a+"*"+b+"="); 89 list[i]=Math.multiplyExact(a, b); 90 text.setText(i+":"+a+"*"+b+"="); 91 i++; 92 break; 93 case 2: 94 c[i]=(i+":"+a+"+"+b+"="); 95 list[i]=Math.addExact(a, b); 96 text.setText(i+":"+a+"+"+b+"="); 97 i++; 98 break ; 99 case 3: 100 while(a<=b){ 101 b = (int) Math.round(Math.random() * 100); 102 a = (int) Math.round(Math.random() * 100); 103 } 104 c[i]=(i+":"+a+"-"+b+"="); 105 text.setText(i+":"+a+"-"+b+"="); 106 list[i]=Math.subtractExact(a, b); 107 i++; 108 break ; 109 } 110 } 111 } 112 } 113 private class Action1 implements ActionListener 114 { 115 public void actionPerformed(ActionEvent event) 116 { 117 if(i<10) { 118 text.setText(null); 119 String daan=text1.getText().toString().trim(); 120 int a = Integer.parseInt(daan); 121 if(text1.getText()!="") { 122 if(list[i1]==a) sum+=10; 123 } 124 c1[i1]=daan; 125 i1++; 126 } 127 } 128 } 129 130 131 private class Action2 implements ActionListener 132 { 133 public void actionPerformed(ActionEvent event) 134 { 135 136 try { 137 out = new PrintWriter("text.txt"); 138 } catch (FileNotFoundException e) { 139 // TODO Auto-generated catch block 140 e.printStackTrace(); 141 } 142 for(int counter=0;counter<10;counter++) 143 { 144 out.println(c[counter]+c1[counter]); 145 } 146 out.println("成績"+sum); 147 out.close(); 148 149 } 150 151 } 152 }
任務3:本學期課程已結束,請彙總《面向對象程序設計課程學習進度條》的數據,統計我的專業能力提高的數據。並從學習內容、學習方法、學習心得幾個方面進行課程學習總結,也但願你對課程的不足提出建議和意見。
經過這一學期對Java程序設計這門課程的學習,不論是在知識層面仍是能力提高方面,都對我有很大的幫助。尤爲是在老師的積極關心和助教學長認真負責的幫助下,學到的東西不止課本上的那些知識,雖然課本的有些知識也還沒吃透,但我以爲不管是老師上課爲咱們開拓的就業層面和將來發展層面的相關知識,仍是助教學長給咱們教授的編程技能。其重要性都高於課本所學的內容。因此,能經過這門課程認識兩位良師益學長也能夠說是很是Lucky了。
統計這學期的我的專業能力提高數據,代碼量也有個一萬多行了,可是本身的能力仍是不好,反思以後。首先,投入的學習時間仍是太少,自主練習程度還不夠。其次,沒有認真進行課後反思,對本身的要求偏低。最後,指定的學習計劃並無很好的完成。
學習內容方面,在老師的劃分梳理總結下,很厚的一本書咱們有條理的按部就班學習,成功學完大部分基礎性知識。並且老師也爲咱們的之後發展作出了指導和引薦,讓咱們對本身有個大體定位和目標方向。並且,在老師新加入的學習模式當中,結對編程,助教演示,課上檢測,課後答疑等都從不一樣方面提高咱們的學習能力和專業能力。我我的以爲之後能夠繼續下去。
學習方法和對你們的建議在之前的一篇博客當中總結的很完善,以後的之一段時間裏也沒有作太多變化,因此這裏就很少廢話了。
學習心得,在我看來,學習是一個不斷求知、不斷探索、不斷完善本身的過程,而興趣則是最好的老師。而授課老師只是爲你指引一個前進的方向,和在你走偏的時候幫你迴歸正道。自主學習纔是王道,而老師對咱們的培養也是抓住自主學習能力這一核心開展的。所謂「知之者不如好之者,好之者不如樂之者」,有了學習的興趣,就有了學習的動力,就有信心學好一切。其次對學習要有一個正確的態度和認識。學習是成長的一部分,咱們在學習中成長,同時也在成長中學習,所以咱們不只要學習新的知識,跟要學習如何作人,由於人的道德品行高於一切,人的高貴在於靈魂。只有態度端正了,目標明確了,纔有前進的方向。
我對老師不斷跟進教學模式這一作法非常贊同,但願老師能將「不斷革新課程模式,加入新的學習模式」,這一作法堅持下去。由於時代在變化,咱們對知識的獲取,學習,理解都會有着不一樣的變化。
最後,祝老師學長和同學們在新的一年繼續努力,再創輝煌!