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

