Hướng dẫn thực hành Lập trình hướng đối tượng (Java 1)
MỤC LỤC
Module 1: Program and Statement . 3
Module 2: Objects and Primitive data . 22
Module 3: Writing Class . 29
Module 4: Enhancing Class . 38
Module 5: Array and Collections . 43
Module 6: Inheritance . 48
Module 7: Exception – IO Stream . 51
Module 8: Graphic User Interface . 54
lý: + Khi người dùng chọn phân xưởng nào trên combobox thì hiện Số sản phẩm chuẩn tương ứng. + Nút “Tính lương”: xuất ra lương của nhân viên đang nhập (xem hình). Yêu cầu kiểm tra dữ liệu nhập. + Nút “Thêm”: thêm nhân viên đang nhập vào JTable với các cột như hình. Chú ý không được thêm khi: - Không nhập đủ dữ liệu. - Số sản phẩm không phải là số. - Trùng mã nhân viên. + Nút “Xóa”: xóa một nhân viên đang chọn trên JTable. Chú ý phải hỏi trước khi xóa và không được xóa khi chưa chọn dòng nào. + Khi chọn 1 dòng trên JTable thì hiện thông tin nhân viên đó lên các ô nhập liệu (xem hình). + Khi người dùng nhấn nút “Sửa” thì chương trình sửa thông tin của nhân viên đang chọn vào JTable. Chú ý không được sửa khi: - Không có đủ dữ liệu. - Số SP không phải là số. - Trùng mã nhân viên. Bài tập 19: Viết chương trình quản lý sản phẩm Yêu cầu chức năng: Cho phép nhập/ xuất danh mục, danh sách sản phẩm Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 65 - Cho phép cập nhật thông tin - Cho phép lưu / đọc danh mục sản phẩm - Yêu cầu sử dụng JMenuBar, JList, JTable, JCombobox, … Bài tập 20: (i).Viết lớp SinhVien với yêu cầu sau: Thuộc tính: mã sinh viên (String), họ tên (String), mã lớp (String), điểm môn 1 (double), điểm môn 2 (double). Các hàm khởi tạo. Các hàm get/set. Hàm DiemTrungBinh(): trả về điểm trung bình của 2 môn học. Hàm KetQua(): trả về “Đậu” khi điểm trung bình >=5, ngược lại là “Rớt”. Hàm toString(): trả về mã sinh viên. (ii) Thiết kế giao diện như hình bên dưới Giao diện cho nhập mã sinh viên, họ tên, chọn mã lớp, nhập điểm môn 1, môn 2. Menu Write Data to disk dùng để lưu dữ liệu xuống ổ cứng Menu Open Data from disk để đọc dữ liệ từ ổ cứng Menu Exit dùng để thoát chương trình Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 66 Yêu cầu xử lý: + Nút “Kết quả”: xuất ra điểm trung bình và kết quả của sinh viên đang nhập (xem hình). Chú ý ô nhập Điểm môn 1 và môn 2 phải là số. + Nút “Thêm”: thêm một sinh viên vào table với các cột như hình. Chú ý không được thêm khi: - Không nhập đủ dữ liệu. - Điểm môn 1 và môn 2 không phải là số. - Trùng mã sinh viên. + Nút “Xóa”: xóa một sinh viên đang chọn trên table. Chú ý phải hỏi trước khi xóa và không được xóa khi chưa chọn dòng nào. + Khi chọn 1 dòng trên table thì hiện thông tin sinh viên đó lên các ô nhập liệu (xem hình). Bài tập 21: Thiết kế giao diện và thực hiện như hình bên dưới: Chương trình cho phép thêm 1 nút con hoặc nút anh em của nút đang chọn khi người dùng nhấn nút “Add Child” hoặc “Add Sibling”, nút “Delete” sẽ xóa nút đang chọn. Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 67 Bài tập 22: (i) Viết lớp SinhVien với yêu cầu sau: Thuộc tính: mã sinh viên (String), họ tên (String), giới tính (boolean), mã lớp (String). Các hàm khởi tạo. Các hàm get/set. Hàm toString(): trả về chuỗi thông tin gồm: mã sinh viên – họ tên – giới tính. (ii) Thiết kế giao diện như hình bên dưới: Yêu cầu giao diện: Trên JTree có sẵn nút gốc “DS lop” và các nút con là các mã lớp: NCTH2A, NCTH2B, NCTH2C, NCTH2K. Yêu cầu xử lý: + Nút “Thêm”: thêm một sinh viên vào lớp đang chọn trên JTree (xem hình). Chú ý không được thêm khi: - Không nhập đủ dữ liệu. - Không chọn mã lớp trên JTree. - Trùng mã sinh viên. + Nút “Xóa”: xóa sinh viên đang chọn trên JTree. Chú ý phải hỏi trước khi xóa và không được xóa khi: - Không chọn nút muốn xóa. - Chọn vào nút gốc hoặc nút mã lớp. + Khi chọn nút sinh viên thì hiện thông tin sinh viên đó lên các ô nhập liệu (xem hình). Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 68 Bài tập 23: Thực hành về tạo Menu. Yêu cầu thiết kế Menu theo hình sau, ứng với mỗi menu item sinh viên hãy cài đặt coding để hiển thị thông báo là đang chọn menu nào. Hướng dẫn: JMenuBarJMenuJMenuItem. Phải biết kết hợp các class này. MenuBar sẽ add Menu, Menu sẽ add MenuItem, rồi gọi setJMenuBar(menuBar); Yêu cầu giả lập Menu giống như chương trình Foxit Reader: Menu File có giao diện như trên Menu Edit có giao diện như trên Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 69 Bài tập 24: Thực hành về JToolBar, tương tự như câu 12, giả lập Toolbar của chương trình Foxit Reader, ứng với mỗi lệnh trên JToolBar, sinh viên hãy xuấtt thông báo đang sử dụng chức năng nào. Hướng dẫn: tạo các JButton rồi add vào JToolBar Bài tập 25: Thực hành về Timer class Dùng class Timer để thiết kế ứng dụng ImageAnimation. Giao diện sẽ có 2 JButton: Start và Stop. Khi bấm Start chương trình sẽ hiển thị hình ảnh tuần tự trong mảng 10 hình ảnh có sẵn. Bấm Stop để tạm dừng duyệt hình ảnh. Xem hình yêu cầu Hướng dẫn: Dùng CardLayout và Timer import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ImageAnimation extends JFrame{ private static final long serialVersionUID = 1L; Timer timer; private int pos=1; public ImageAnimation(String title) { super(title); timer=new Timer(500, null); } public void doShow() Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 70 { setSize(500,550); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); addControl(); setVisible(true); } public void addControl() { JPanel pnBorder=new JPanel(); pnBorder.setLayout(new BorderLayout()); JPanel pnNorth=new JPanel(); JButton btnStart=new JButton("Start"); JButton btnStop=new JButton("Stop"); pnNorth.add(btnStart); pnNorth.add(btnStop); pnBorder.add(pnNorth,BorderLayout.NORTH); final JPanel pnCenter=new JPanel(); pnCenter.setLayout(new CardLayout()); pnBorder.add(pnCenter,BorderLayout.CENTER); pnCenter.setBackground(Color.RED); JPanel []pnArr=new JPanel[10]; addImage(pnCenter,pnArr); showImage(pnCenter,"card1"); btnStart.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { timer.start(); timer.addActionListener(new TimerPanel(pnCenter)); } }); btnStop.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { timer.stop(); } }); Container con=getContentPane(); con.add(pnBorder); } private void addImage(JPanel pnCenter,JPanel []pnArr) { for(int i=0;i<pnArr.length;i++) { pnArr[i]=new JPanel(); JLabel lbl=new JLabel(); ImageIcon icon=new ImageIcon("E:\\hoa\\"+i+".jpg"); lbl.setIcon(icon); pnArr[i].add(lbl); pnCenter.add(pnArr[i],"card"+i); } } public void showImage(JPanel pn,String cardName) { CardLayout cl=(CardLayout)pn.getLayout(); cl.show(pn, cardName); Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 71 } private class TimerPanel implements ActionListener { JPanel pn=null; public TimerPanel(JPanel pn) { this.pn=pn; } public void actionPerformed(ActionEvent arg0) { showImage(pn,"card"+pos); pos++; if(pos>=10) pos=1; } } public static void main(String[] args) {; ImageAnimation imgUi=new ImageAnimation("Image Animation!"); imgUi.doShow(); } } Bài tập 26: Cải tiến bài tập 10. Chương trình sẽ cho phép đọc danh sách các hình ảnh bất kỳ trong ổ đĩa. Hướng dẫn: import java.awt.*; import java.awt.event.*; import java.io.File; import javax.swing.*; public class ImageAnimation2 extends JFrame{ Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 72 private static final long serialVersionUID = 1L; Timer timer; private int pos=0; public ImageAnimation2(String title) { super(title); timer=new Timer(500, null); } public void doShow() { setSize(500,550); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); addControl(); setVisible(true); } public void addControl() { JPanel pnBorder=new JPanel(); pnBorder.setLayout(new BorderLayout()); JPanel pnNorth=new JPanel(); JButton btnBrowser=new JButton("Browser"); JButton btnStart=new JButton("Start"); JButton btnStop=new JButton("Stop"); pnNorth.add(btnBrowser); pnNorth.add(btnStart); pnNorth.add(btnStop); pnBorder.add(pnNorth,BorderLayout.NORTH); final JPanel pnCenter=new JPanel(); pnCenter.setLayout(new CardLayout()); pnBorder.add(pnCenter,BorderLayout.CENTER); pnCenter.setBackground(Color.RED); btnStart.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { timer.start(); timer.addActionListener(new TimerPanel(pnCenter)); } }); btnStop.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { timer.stop(); } }); btnBrowser.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { JFileChooser jfc=new JFileChooser(); jfc.setMultiSelectionEnabled(true); if(jfc.showOpenDialog(null)==JFileChooser.APPROVE_OPTION) { File []files=jfc.getSelectedFiles(); for(int i=0;i< files.length;i++) { Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Trang 73 File f=files[i]; ImageIcon icon=new ImageIcon(f.getPath()); JPanel pn=new JPanel(); JLabel lbl=new JLabel(icon); pn.add(lbl); pnCenter.add(pn,"card"+i); } showImage(pnCenter, "card0"); } } }); Container con=getContentPane(); con.add(pnBorder); } public void showImage(JPanel pn,String cardName) { CardLayout cl=(CardLayout)pn.getLayout(); cl.show(pn, cardName); } private class TimerPanel implements ActionListener { JPanel pn=null; public TimerPanel(JPanel pn) { this.pn=pn; } public void actionPerformed(ActionEvent arg0) { showImage(pn,"card"+pos); pos++; if(pos>=pn.getComponentCount()) pos=0; } } public static void main(String[] args) {; ImageAnimation2 imgUi=new ImageAnimation2("Image Animation!"); imgUi.doShow(); } }
File đính kèm:
- Final_java1_Exercise_2013.pdf