Bài tập Lập trình công nghệ Java - Module 1
Hướng dẫn sử dụng:
Nhập họ tên Sau đó nhấn nút “Xuất câu chào”
Tóm tắt yêu cầu
Thiết kế giao diện người dùng:
frmManHinhXuatCauChao: FrmXuatCauChao (extends từ
JFrame)
* (Các thể hiện phía dưới đều nằm trong Frame)
txtHoTen: JTextField (nhập liệu)
lblCauchao: JLabel (Kết xuất)
btnXuatCauChao: JButton
Nhập:
Họ tên
Xuất:
Câu chào
Qui tắc xử lý:
Không có
Thuật giải
Khai báo biến HoTen nhận giá trị của txtHoTen
th; this.imageHeight = imageHeight; } @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); try { BufferedImage image = null; URL url = new URL("file:" + value); image = getScaledImages(ImageIO.read(url), imageWidth, imageHeight); setIcon(new ImageIcon(image)); setHorizontalAlignment(JLabel.CENTER); setText(""); } catch (Exception e) { setText("[No image]"); e.printStackTrace(); } return this; } ... // private BufferedImage getScaledImages(BufferedImage in, int WIDTH, int HEIGHT) { BufferedImage out = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); Graphics2D g2 = out.createGraphics(); g2.setColor(Color.white); g2.fillRect(0, 0, WIDTH, HEIGHT); double width = in.getWidth(); double height = in.getHeight(); double xScale = WIDTH / width; double yScale = HEIGHT / height; double scale = 1.0; scale = Math.min(xScale, yScale); // scale to fit double x = (WIDTH - width * scale) / 2; double y = (HEIGHT - height * scale) / 2; AffineTransform at = AffineTransform.getTranslateInstance(x, y); at.scale(scale, scale); g2.drawRenderedImage(in, at); g2.dispose(); return out; } } 6.2. Quản lý danh bạ điện thoại Yêu cầu: Viết chương trình Quản lý danh bạ điện thoại. Tương tự như bài trên như có thêm một menu “Danh bạ”, trong đó có các item: Thêm một liên hệ, Xóa một liên hệ, Tìm kiếm liên hệ, Cập nhật liên hệ. Hướng dẫn sử dụng: Xem thông tin các liên hệ trên màn hình chính. Chọn item nào trong menu Danh bạ thì sẽ hiển thị màn hình tương ứng. Tóm tắt yêu cầu Thiết kế giao diện người dùng: frmManHinhDanhSach: JFrame * (Các thể hiện phía dưới đều nằm trong Frame) mnuDanhmuc: Jmenu mnuIThem: JMenuItem mnuIXoa: JMenuItem mnuICapNhat: JMenuItem mnuITimKiem: JMenuItem tblDanhSachLienHe: JTable Nhập: Không có Xuất: Danh Sách liên hệ Qui tắc xử lý : Không có Thuật giải Đọc nội dung file Phân tách các thành phần thành trong file Tạo nội dung hiển thị cho table, nội dung dưới dạng ma trận (Object[][]) mỗi dòng là một liên hệ, các thành phần mỗi dòng lần lược là "Hình ảnh", "Họ tên", "ĐTDĐ", "Hành động" Hiển thị hình ảnh bằng cách tạo TableCellRender cho cột "hình ảnh" và "hành động" Chọn menu Thêm, hiển thị màn hình thêm liên hệ Xử lý thêm liên hệ, cập nhật nội dung file Chọn menu Xóa, thực hiện xóa liên hệ, cập nhật nội dung file Chọn menu Cập nhật, hiển thị màn hình cập nhật liên hệ Xử lý cập nhật liên hệ, cập nhật nội dung file Chọn menu Tìm kiếm, hiển thị màn hình tìm kiếm Xử lý tìm kiếm liên hệ Hướng dẫn Không có 7.1. Thực hiện tính toán hai phân số Yêu cầu: Xây dựng chương trình Tính toán hai phân số Gồm có: phân số thứ nhất (tử số, mẫu số) và phân số thứ hai (tử số, mẫu số) combobox 4 phép tính: +, -, *, / cho người dùng chọn Hướng dẫn sử dụng: Nhập vào phân số thứ nhất (tử số, mẫu số) và phân số thứ 2 (tử số, mẫu số), chọn 1 trong 4 phép tính. Nhấn nút “Tính” => Hiển thị kết quả lên phân số kết quả (tử số, mẫu số) Tóm tắt yêu cầu Thiết kế giao diện người dùng: frmManHinhTinhToanPhanSo: FrmTinhToanPhanSo (extend từ JFrame) * (Các thể hiện phía dưới đều nằm trong Frame) txtTuSo1: JTextField (nhập liệu) txtMauSo1: JTextField (nhập liệu) txtTuSo2: JTextField (nhập liệu) txtMauSo2: JTextField (nhập liệu) cmbPhepTinh: JComboBox (chọn) txtKetQua: JTextField (nhập liệu) btnTinh: Jbutton (Xử lý tính) btnLamLai: Jbutton (Xử lý làm lại) Nhập: Tử số phân số 1 Mẫu số phân số 1 Tử số phân số 2 Mẫu số phân số 2 Chọn phép tính Xuất: Kết quả tính toán 2 phân số Qui tắc xử lý : Xây dựng class PhanSo Xử lý tính toán trên hai đối tượng có kiểu là PhanSo Thuật giải Khai báo biến tuSo1 nhận kết quả từ txtTuSo1 Khai báo biến mauSo1 nhận kết quả từ txtMauSo1 Khởi tạo phanSo1 (kiểu PhanSo) từ tuSo1, mauSo1 Khai báo biến tuSo2 nhận kết quả từ txtTuSo2 Khai báo biến mauSo2 nhận kết quả từ txtMauSo2 Khởi tạo phanSo2 (kiểu PhanSo) từ tuSo2, mauSo2 Khai báo biến phepTinh nhận giá trị từ cmbPhepTinh Tính toán 2 phân số theo phép tính Hướng dẫn Hàm tính toán 2 phân số theo phép tính private PhanSo tinh(String phepToan, PhanSo phanSo1, PhanSo phanSo2){ if("+".equals(phepToan)){ return tinhTong(phanSo1, phanSo2); }else if("-".equals(phepToan)){ return tinhHieu(phanSo1, phanSo2); }else if("*".equals(phepToan)){ return tinhTich(phanSo1, phanSo2); }else if("/".equals(phepToan)){ return tinhThuong(phanSo1, phanSo2); } return null; } Các Hàm tính toán 2 phân số private PhanSo tinhTong(PhanSo phanSo1, PhanSo phanSo2){ int kqTuSo = phanSo1.getTuSo() * phanSo2.getMauSo() + phanSo2.getTuSo() * phanSo1.getMauSo(); int kqMauSo = phanSo1.getMauSo() * phanSo2.getMauSo(); PhanSo kq = new PhanSo(kqTuSo, kqMauSo); return kq; } private PhanSo tinhHieu(PhanSo phanSo1, PhanSo phanSo2){ int kqTuSo = phanSo1.getTuSo() * phanSo2.getMauSo() - phanSo2.getTuSo() * phanSo1.getMauSo(); int kqMauSo = phanSo1.getMauSo() * phanSo2.getMauSo(); PhanSo kq = new PhanSo(kqTuSo, kqMauSo); return kq; } private PhanSo tinhTich(PhanSo phanSo1, PhanSo phanSo2){ int kqTuSo = phanSo1.getTuSo() * phanSo2.getTuSo(); int kqMauSo = phanSo1.getMauSo() * phanSo2.getMauSo(); PhanSo kq = new PhanSo(kqTuSo, kqMauSo); return kq; } private PhanSo tinhThuong(PhanSo phanSo1, PhanSo phanSo2){ int kqTuSo = phanSo1.getTuSo() * phanSo2.getMauSo(); int kqMauSo = phanSo1.getMauSo() * phanSo2.getTuSo(); PhanSo kq = new PhanSo(kqTuSo, kqMauSo); return kq; } 7.2. Quản lý Danh bạ thoại Yêu cầu: Xây dựng chương trình Quản lý danh bạ điện thoại Tương tự như bài “Quản lý danh bạ điện thoại” của chương 6, nhưng nội dung các phần tử trong mảng Liên hệ của tập tin khi được đọc sẽ tái cấu trúc và gán vào một đối tượng của class LienHe. Tất cả các liên hệ sẽ được quản lý bằng mảng các phần tử có kiểu class LienHe Hướng dẫn sử dụng: Không có Tóm tắt yêu cầu Thiết kế giao diện người dùng: Tương tự 6.2 Nhập: Không có Xuất: Danh sách liên hệ Qui tắc xử lý : Xây dựng class LienHe Xử lý các đối tượng của class LienHe trong mảng. Thuật giải Không có Hướng dẫn Không có 7.3. Hóa đơn bán hàng Yêu cầu: Xây dựng chương trình nhập xuất thông tin hóa đơn bán hàng của một siêu thị Thông tin hóa đơn gồm có: số hóa đơn, ngày lập hóa đơn, danh sách hàng hóa được mua trong hóa đơn Thông tin hàng hóa gồm có: tên hàng hóa, đơn vị tính, đơn giá, số lượng mua Xây dựng chương trình có giao diện như sau, nhập thông tin hóa đơn và xuất thông tin hóa đơn ra màn hình Hướng dẫn sử dụng: Nhập thông tin hóa đơn và thông tin các hàng hóa trong hóa đơn. Nhấn nút “Xuất hóa đơn” để xem thông tin của hóa đơn. Nhấn nút “Làm lại” để xóa các thông tin trên màn hình Tóm tắt yêu cầu Thiết kế giao diện người dùng: Thiết kế màn hình Nhập hóa đơn bán hàng frmManHinhNhapHoaDon: FrmNhapHoaDon (extend từ JFrame) * (Các thể hiện phía dưới đều nằm trong Frame) txtSoHoaDon: JTextField (nhập liệu) txtNgayHoaDon: JTextField (nhập liệu) txtSoLuongHoaDon: JTextField (nhập liệu) txtTenHangHoa: JTextField (nhập liệu) txtDonViTinh: JTextField (nhập liệu) txtDonGia: JTextField (nhập liệu) txtSoLuong: JTextField (nhập liệu) btnThemHoaDon: JButton (xử lý thêm hóa đơn) btnThemHangHoa: Jbutton (xử lý thêm hàng hóa) btnXuatHoaDon: JButton (xử lý xuất hóa đơn) btnLamLai: JButton (xử lý làm lại) Thiết kế màn hình Thông tin hóa đơn dlgHienThiHoaDon: DlgHienThiHoaDon (extend từ JDialog) * (Các thể hiện phía dưới đều nằm trong Frame) lblSoHoaDon: JLabel (hiển thị) lblNgayHoaDon: JLabel (hiển thị) tblDSHangHoa: JTable (hiển thị) btnOK: JButton (xử lý đóng màn hình) Nhập: Nhập các thông tin hóa đơn, hàng hóa Xuất: Thông tin hóa đơn Qui tắc xử lý : Xây dựng class HoaDon và class HangHoa Xử lý class. Thuật giải Không có Hướng dẫn Không có 8.1. Đổi ngoại tệ Yêu cầu: Viết chương trình Đổi ngoại tệ Gọi sử dụng Dịch vụ “Tỷ giá” trên Internet Hướng dẫn sử dụng: Nhập vào số tiền (USD, Yên, Euro), chọn Tỷ giá. Nhấn “Tính tiền” => Hiển thị thành tiền VNĐ tương ứng với số tiền đã nhập. Tóm tắt yêu cầu Thiết kế giao diện người dùng: frmManHinhTyGia: FrmTyGia (extend từ JFrame) * (Các thể hiện phía dưới đều nằm trong Frame) tblDsTyGia: JTable (hiển thị) txtNhapTien: JTextField (nhập liệu) cmbLoaiTienTe: JComboBox (chọn giá trị) txtThanhTienVNDMua: JTextField (hiển thị) txtThanhTienVNDBan: JTextField (hiển thị) txtTinhTien: JButton (xử lý tính tiền VND) Nhập: Giá trị tiền cần qui đổi Chọn loại tiền tệ Xuất: Giá mua, giá bán theo loại tiền tệ Qui tắc xử lý : Thành tiền = giá ngoại tệ * giá trị nhập Thuật giải Lấy thông tin tỷ giá từ Xử lý kết quả trả về, khai báo biền mapTyGia chứa kết quả xử lý Hiển thị kết quả lên table Khai báo biến nhận giá trị từ txtNhapGiaTri Khai báo biền loaiTienTe nhận giá trị từ cmbLoaiTienTe Xử lý tính giá mua, giá bán theo loại tiền tệ Hướng dẫn Hàm lấy thông tin từ request url private String layTyGia() throws IOException { URL tyGiaUrl = new URL(""); URLConnection yc = tyGiaUrl.openConnection(); BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream())); String input = in.readLine(); in.close(); return input; }
File đính kèm:
- Bài tập Lập trình công nghệ Java - Module 1.pdf