2017 java期末上機練習
阿新 • • 發佈:2017-06-22
輸出 action 查看 數字 制作 顯示時間 監聽器 目錄 ann
僅供參考!
一、最大值、最小值、平均數
1 package examination; 2 3 import java.util.Arrays; 4 import java.util.Scanner; 5 6 /** 7 * 1. 從鍵盤輸入10個成績 8 * 2. 對這10個數字進行排序並從小到大顯示 9 * 3. 輸出最大值和最小值 10 * 4. 輸出平均值 11 * 12 */ 13 public class gradeTest 14 { 15 public static void main(String[] args)16 { 17 int[] grades = new int[10]; // 10個成績 18 float sum = 0; // 10個成績的和 19 20 Scanner scan = new Scanner(System.in); // 從鍵盤接收數據 21 22 System.out.println("請輸入10個整數並以空格分隔:"); 23 // 示例:33 25 13 67 76 85 90 83 99 91 24 for (int i = 0; i < 10; i++) 25 {26 grades[i] = scan.nextInt(); // 成績 賦值 27 sum += grades[i]; // 成績累加 28 } 29 30 scan.close(); // 關閉 Scanner 對象 31 Arrays.sort(grades); // 升序排序 32 33 // 遍歷排序結果 34 for (int i = 0; i < grades.length; i++) 35 { 36 intj = grades[i]; 37 System.out.print(j + " "); 38 } 39 // 輸出最大值、最小值、平均數 40 System.out.println(); 41 System.out.println("最大值:" + grades[grades.length - 1]); 42 System.out.println("最小值:" + grades[0]); 43 System.out.println("平均數:" + sum / grades.length); 44 } 45 46 }
二、簡單GUI測試
要求:
1.用戶登錄界面 可以通過按鈕進入註冊界面;
2.註冊界面具有跳轉到留言板和查看留言功能;
3.留言板內容可以初始化、保存到ly.txt文件
- 登錄界面
1 package examination; 2 3 import javax.swing.*; 4 import java.awt.event.ActionListener; 5 import java.awt.GridLayout; 6 import java.awt.event.ActionEvent; 7 8 public class Login extends JFrame 9 { 10 JLabel jlUser, jlPwd; //標簽 11 JTextField jtfUsername; //單行文本框 12 JPasswordField jpfPwd; //密碼框 13 14 JPanel jp1, jp2, jp3; //面板容器 15 JButton jbtnRegist; //註冊按鈕 16 17 public Login() 18 { 19 jtfUsername = new JTextField(10); // 創建單行文本框 20 jpfPwd = new JPasswordField(10); // 創建密碼文本框 21 22 jlUser = new JLabel("用戶名"); // 創建標簽 23 jlPwd = new JLabel("密 碼"); // 創建標簽 24 25 jbtnRegist = new JButton("註 冊"); // 創建“註冊”按鈕 26 27 // 監聽器:按鈕事件 28 jbtnRegist.addActionListener(new ActionListener() 29 { 30 public void actionPerformed(ActionEvent arg0) 31 { 32 new Regist(); 33 } 34 }); 35 // jb2 = new JButton("取消"); 36 jp1 = new JPanel(); 37 jp2 = new JPanel(); 38 jp3 = new JPanel(); 39 40 // 設置 網格 布局 41 getContentPane().setLayout(new GridLayout(3, 1)); 42 43 // 面板1添加用戶名和文本框 44 jp1.add(jlUser); 45 jp1.add(jtfUsername); 46 47 // 面板2添加密碼和密碼輸入框 48 jp2.add(jlPwd); 49 jp2.add(jpfPwd); 50 51 jp3.add(jbtnRegist); // 面板3添加註冊按鈕 52 53 // 將三塊面板添加到登陸框 54 getContentPane().add(jp1); 55 getContentPane().add(jp2); 56 getContentPane().add(jp3); 57 58 // 設置顯示 59 this.setVisible(true); 60 this.setTitle("登錄"); 61 this.setSize(300, 200); 62 this.setLocation(200, 200); 63 64 // 退出程序 65 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 66 67 } 68 69 public static void main(String[] args) 70 { 71 new Login(); 72 } 73 }
- 註冊界面
1 package examination; 2 3 import javax.swing.*; 4 import java.awt.event.ActionListener; 5 import java.io.BufferedReader; 6 import java.io.FileReader; 7 import java.io.IOException; 8 import java.awt.event.ActionEvent; 9 10 public class Regist extends JFrame 11 { 12 JButton jbtnCheck; // “查看留言”按鈕 13 JButton jbtnMessage; // “留言”按鈕 14 15 JPanel jPanel; //面板容器 16 17 public Regist() 18 { 19 jbtnMessage = new JButton("留 言"); 20 jbtnCheck = new JButton("查看留言"); 21 22 // 按鈕事件:編輯留言 23 jbtnMessage.addActionListener(new ActionListener() 24 { 25 public void actionPerformed(ActionEvent arg0) 26 { 27 new MessageBoard(); 28 } 29 }); 30 // 按鈕事件:查看留言 31 jbtnCheck.addActionListener(new ActionListener() 32 { 33 public void actionPerformed(ActionEvent arg0) 34 { 35 String msg = readFile(); 36 // 查看文件中的留言 37 if (!msg.equals("")) 38 { 39 JOptionPane.showMessageDialog(null, msg, "留言板", JOptionPane.INFORMATION_MESSAGE); // 消息提示框 40 } 41 else 42 { 43 JOptionPane.showMessageDialog(null, "您還沒有留言!", "提示", JOptionPane.ERROR_MESSAGE); 44 } 45 } 46 }); 47 48 jPanel = new JPanel(); 49 jPanel.add(jbtnMessage); 50 jPanel.add(jbtnCheck); 51 52 getContentPane().add(jPanel); 53 54 // 設置顯示 55 this.setVisible(true); 56 this.setTitle("註冊"); 57 this.setSize(300, 200); 58 this.setLocation(220, 200); 59 60 // 關閉當前窗口:釋放本窗口資源,但不退出主程序 61 this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 62 63 } 64 65 /** 66 * 讀文件,並返回到字符串 67 * @return 68 */ 69 protected static String readFile() 70 { 71 String fileName = "./ly.txt"; // 默認讀取當前項目下 72 String msg = ""; //留言內容 73 try 74 { 75 FileReader fr = new FileReader(fileName); 76 BufferedReader bfr = new BufferedReader(fr); 77 78 String str = null; 79 while ((str = bfr.readLine()) != null) 80 { 81 msg += str + "\n"; 82 } 83 bfr.close(); 84 fr.close(); 85 86 } catch (IOException ioException) 87 { 88 89 } 90 91 return msg; 92 } 93 94 public static void main(String[] args) 95 { 96 new Regist(); 97 } 98 }
- 留言板界面
1 package examination; 2 3 import javax.swing.*; 4 import java.awt.event.ActionListener; 5 import java.io.BufferedWriter; 6 import java.io.FileWriter; 7 import java.io.IOException; 8 import java.awt.BorderLayout; 9 import java.awt.event.ActionEvent; 10 11 public class MessageBoard extends JFrame 12 { 13 JTextArea jTextArea; // 多行文本框 14 JButton jbtnSave; // “保存”按鈕 15 JPanel jPanel; // 面板容器 16 17 public MessageBoard() 18 { 19 jTextArea = new JTextArea(); // 創建文本編輯區 20 jTextArea.setLineWrap(true); // 自動換行 21 22 // 初始化留言文本 23 String msg = Regist.readFile(); 24 // 查看文件中的留言 25 if (!msg.equals("")) 26 { 27 jTextArea.setText(msg); 28 } 29 30 jbtnSave = new JButton("保存留言"); 31 32 // 按鈕事件:編輯留言,並保存到目錄下為“ly.txt” 33 jbtnSave.addActionListener(new ActionListener() 34 { 35 public void actionPerformed(ActionEvent arg0) 36 { 37 saveFile(); // 保存到文件 38 dispose(); // 關閉當前窗口 39 } 40 }); 41 42 // 設置邊界布局 43 getContentPane().setLayout(new BorderLayout()); 44 getContentPane().add(jbtnSave, BorderLayout.SOUTH); 45 getContentPane().add(jTextArea, BorderLayout.CENTER); 46 47 // 設置顯示 48 this.setVisible(true); 49 this.setTitle("留言板"); 50 this.setSize(300, 200); 51 this.setLocation(240, 200); 52 53 // 關閉當前窗口:釋放本窗口資源,但不退出主程序 54 this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 55 56 } 57 58 private void saveFile() 59 { 60 String fileName = "./ly.txt"; // 默認保存當前項目下 61 62 try 63 { 64 FileWriter fw = new FileWriter(fileName); 65 BufferedWriter bfw = new BufferedWriter(fw); 66 bfw.write(jTextArea.getText(), 0, jTextArea.getText().length()); 67 bfw.flush(); 68 fw.close(); 69 70 JOptionPane.showMessageDialog(null, "留言成功!"); // 消息提示框 71 72 } catch (IOException ioException) 73 { 74 JOptionPane.showMessageDialog(null, "留言失敗!", "錯誤", JOptionPane.ERROR_MESSAGE); 75 } 76 } 77 78 public static void main(String[] args) 79 { 80 new MessageBoard(); 81 } 82 }
三、制作一個提醒器
提示:
1.能夠設計一個時間和一個內容,當到了設定時間彈出對話框顯示設定內容;
2.可以設置好友生日,到了生日的前一天能夠提示“明天是那個好友的生日”
1 package examination; 2 3 import java.awt.event.ActionEvent; 4 import java.awt.event.ActionListener; 5 import java.text.DateFormat; 6 import java.text.SimpleDateFormat; 7 import java.util.Date; 8 9 import javax.swing.JFrame; 10 import javax.swing.JLabel; 11 import javax.swing.Timer; 12 13 /** 14 * 測試swing中Timer的使用 15 * 一個顯示時間的GUI程序 16 * @author wasw100 17 * 18 */ 19 public class TimerTest extends JFrame implements ActionListener { 20 // 一個顯示時間的JLabel 21 private JLabel jlTime = new JLabel(); 22 private Timer timer; 23 24 public TimerTest() { 25 setTitle("Timer測試"); 26 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 27 setSize(180, 80); 28 add(jlTime); 29 30 //設置Timer定時器,並啟動 31 timer = new Timer(500, this); 32 timer.start(); 33 setVisible(true); 34 } 35 36 /** 37 * 執行Timer要執行的部分, 38 */ 39 @Override 40 public void actionPerformed(ActionEvent e) { 41 DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 42 Date date = new Date(); 43 jlTime.setText(format.format(date)); 44 45 } 46 47 public static void main(String[] args) { 48 new TimerTest(); 49 } 50 }
2017 java期末上機練習