1 Module/môn: Lập trình Java 3 Số hiệu assignment: 1/1 % điểm: 60% Người điều phối của FPT Polytechnic: Bài assignment này đòi hỏi sinh viên phải dùng khoảng 35h làm để hoàn thành Tươ
Trang 11
Module/môn: Lập trình Java 3 Số hiệu assignment: 1/1 % điểm: 60%
Người điều phối của FPT Polytechnic:
Bài assignment này đòi hỏi sinh viên phải dùng khoảng 35h làm để hoàn thành
Tương ứng với mục tiêu môn học:
Gian lận là hình thức lấy bài làm của người khác và sử dụng như là mình làm ra Hình thức đó
bao gồm những hành động như: copy thông tin trực tiếp từ trang web hay sách mà không ghi rõ nguồn tham khảo trong tài liệu; gửi bài assignment làm chung như là thành quả cá nhân; copy bài assignment của các sinh viên khác cùng khóa hay khác khóa; ăn trộm hay mua bài assignment của ai đó và gửi lên như là sản phẩm mình làm ra Những sinh viên bị nghi ngờ gian lận sẽ bị điều tra và nếu phát hiện là có gian lận thì sẽ phải chịu các mức phạt theo quy định của Nhà trường
Quy định nộp bài assignment
• Một bản mềm kết quả bài làm assignment của bạn phải được upload trước nửa đêm (giờ
địa phương) vào ngày hạn nộp Quá hạn nộp hệ thống sẽ khóa lại và sinh viên không còn
quyền nộp bài
• Phiên bản upload lên cuối cùng sẽ được chấm điểm Sinh viên có quyền upload đè file
nhiều lần trước khi hết hạn nộp
• Tất cả những file tài liệu văn bản phải để ở dạng file gốc chứ không file dạng file được
xuất ra từ định dạng khác (ví dụ pdf được xuất từ doc) Không được gửi tài liệu văn bản
dưới dạng ảnh chụp
• Đối với bài assignment này bạn cũng phải đưa các bằng chứng hay sản phẩm khác vào
trong file nén dạng zip
• Kích thước file cần tuân thủ theo giới hạn trên hệ thống nộp bài (thông thường là <50M)
• Hãy đảm bảo các file được upload lên không bị nhiễm virus (điều này có thể dẫn đến file
bị hệ thống xóa mất) và không đặt mật khẩu mở file Nếu vi phạm những điều này, bài
coi như chưa được nộp
Trang 22
• Hãy chú ý xem thông báo sau khi upload để chắc chắn bài của bạn đã được nộp lên hệ
thống chưa
• Bạn không phải gửi lại file đề bài của assignment (file này)
Quy định đánh giá bài assignment
1 Sinh viên không có bài assignment trên hệ thống sẽ bị 0 điểm bài assignment
2 Sau hạn nộp bài một tuần, sinh viên nộp muộn có quyền nộp đơn kiến nghị xin được chấp nhận gia hạn nộp Hội đồng Nhà trường sẽ xét duyệt từng trường hợp Nếu kiến nghị không được chấp nhận, bài giữ nguyên điểm 0 Nếu quá một tuần không có kiến nghị thì bài cũng sinh viên không nộp mặc nhiên nhận điểm 0
3 Ngay cả trường hợp bài của sinh viên bị phát hiện gian lận sau khi có điểm, sinh viên sẽ
không được công nhận bài đó và chịu mức kỷ luật như quy định của Nhà trường
========================
Assignment
Lập trình JAVA – Thiết kế theo mô hình MVC
Mục tiêu cụ thể Sau bài assignment này , sinh viên cần đặt được:
- Hiểu về cấu trúc chung của JAVA GUI
- Thành thạo thiết kế giao diện bằng NETBEAN, kết nối CSDL
- Có đầy đủ kiến thức và kỹ năng để thiết kế các ứng dụng JAVA đơn giản…
Các công cụ cần có - Jdk
- NetBean
- Eclipse
- MS SQL server 2008 hoặc MySQL
Tài nguyên Thư mục tài nguyên đi kèm
ĐẶT VẤN ĐỀ
Trường cao đẳng FPT Polytechnic sử dụng một phần mềm nghiệp vụ đào tạo để quản lý sinh viên
và quá trình học tập của sinh viên Hãy xây dựng một chương trình JAVA mô phỏng các chức năng đơn giản của chương trình nghiệp vụ đào tạo của trường cao đẳng Fpt Poly với những yêu cầu như sau:
- Chương trình có chức năng đăng nhập
- Các user được chia làm hai loại là: giảng viên và cán bộ đào tạo
- Khi đăng nhập user giảng viên, nếu đăng nhập thành công sẽ hiện ra Chức năng quản lý điểm, cho phép nhập điểm, sửa điểm, xóa điểm cho các sinh viên đã có trong trường
- Khi đăng nhập user cán bộ đào tạo, sẽ hiện ra Chức năng quản lý sinh viên, gồm những
chức năng, thêm mới một sinh viên, xóa sinh viên
- Mỗi khi giảng viên cập nhật điểm cho sinh viên, chương trình sẽ tính lại điểm trung bình của mỗi sinh viên, đồng thời hiển thị danh sách 3 sinh viên có điểm tổng kết cao nhất của mỗi môn học
Trang 33 Giao diện chức năng Quản lý điểm
4 Giao diện chức năng quản lý sinh viên
Y2 Giao diện các Message thông báo
1 Message đăng nhập thành công
2 Message đăng nhập thất bại
3 Message báo lỗi, nếu cán bộ đào tạo thêm một sinh viên có mã sinh viên trùng lặp
với dữ liệu đã có
Y3 Xây dựng cơ sở dữ liệu FPL_ĐàoTạo
1 Thông tin người dùng được lưu trong bảng users
2 Có ít nhất các cột: username, password,chức năng
3 Thông tin Sinh viên được lưu trong bảng students gồm ít nhất các cột: Mã_SV,
họ_và_tên,
4 Bảng điểm của sinh viên được lưu trong bảng Grade gồm các cột: Mã_SV,điểm Tiếng
Anh, Điểm Tin học, Điểm GDTC
Trang 44
Y4 Điều khiển
1 Mỗi khi click vào nút Login, chương trình phải kiểm tra thông tin đăng nhập có đúng
không, nếu đúng thông báo thành công, nếu sai thông báo đăng nhập sai
2 Giảng viên chỉ có thể nhập điểm không thể thêm mới sinh viên
3 Cán bộ đào tạo chỉ có thể thêm mới sinh viên, không thể nhập điểm
4 Mỗi khi giảng viên cập nhật điểm cho sinh viên, chương trình sẽ tính lại điểm trung bình
của mỗi sinh viên, đồng thời hiển thị danh sách 3 sinh viên có điểm tổng kết cao nhất
của mỗi môn học
Y5 Xây dựng chương trình theo mô hình MVC
Sơ đồ các lớp
MÔ TẢ SẢN PHẨM PHẢI NỘP
1 Thư mục chứa Project
2 File dữ liệu đã nhập một số nhân viên
Đóng gói tất cả các sản phẩm trên thành một file nén theo định dạng
JAVA3_MãSV_Assignment.zip để đưa lên hệ thống LMS theo yêu cầu của giảng viên Lưu ý về
Trang 5yêu cầu nộp bài)
- Không đặt tên, đóng gói không theo chuẩn yêu cầu
-
Trang 6Bài 1 Tạo một ứng dụng SWING cơ bản
1 Trong NetBeans, chọn New Projects, đặt tên cho Projects là lab1, nhớ bỏ chọn nút “Creat Main Class”
Finish
2 Chuột phải vào Source Package, chọn như hình
Đặt tên là bài1 Finish
3 Chuột phải vào bài 1, chọn như hình
Trang 7Đặt tên là Jframe_canban
4 Extent Jframe
Xuất hiện báo lỗi màu đỏ Bấm Alt-Enter để hiển thị thông báo lỗi và gợi ý
Lỗi này là chưa import thư viện cho Jframe
Chọn “Add import for javax.swing.jframe
hết báo lỗi
5 Khai báo phương thức main trong class JFrame_canban
“public static void main(String[] args)”
Hoặc có thể dùng phím tắt psvm – bấm phím Tab
Trang 8Tạo một thực thể JFrame_canban
Tạo phương thức JFrame_canban
Như vậy ta đã tạo được một JFrame, hãy nhấn Shirt-F6 để chạy thử
Như bạn thấy chương trình đã chạy thành công, nhưng chúng ta không thấy điều gì xảy ra, do JFrame chưa được set thuộc tính hiển thị
Trang 9Bạn có thể thiết lập thêm các thuộc tính cho JFrame cho đúng ý mình
setTitle(String)
setBackground(c)
setForeground(c)
setSize(width,height)
Bài 2 Tạo JPanel và set ảnh nền cho JPanel
1 Trong Project của bạn, tạo 1 JFrame Form
2 Trong ô Swing Containers chọn Panel và kéo vào Frame của chúng ta, kéo cho vừa với kích thước
Trang 10Frame
3 Sau khi kéo Panel vừa khít với Frame, nhấn chuột phải vào Panel đó, chọn Customize Code
Sau đó ta sẽ có hộp thoại:
Trang 11Tại chỗ default code, bạn chọn lại là Custom creation
Như vậy ta đã có 1 Jpanel nằm trong JFrame
Chúng ta có thể thiết lập thuộc tính cho JPanel bằng các phương thức
- setBound
- setBackground
- setLayout
- setBorder
Trang 124 Set ảnh nền cho Panel
Paste đoạn code sau vào giữa nhé:
ImageIcon icon = new ImageIcon( "images/bg.png" );
public void paintComponent(Graphics g){
Trang 13Bài 1 Thiết kế giao diện máy máy tính bỏ túi
Tạo mới một Project, add một JPanel vào JFrame,
Tiếp theo bạn quy định cho cấu trúc của GridLayout là 5 cột, 4 hàng bằng cách Click vào mục
GridLayout có trong khung Inspector, sau đó trong khung Properties ở bên phải màn hình của
NetBean bạn sẽ quy định thông qua mục Column và Row như hình dưới đây
kéo thả vào trong jPanel của mình các nút sẽ dùng trên giao diện
Trang 14Đặt tên cho các thành phần trên giao diện
Đặt tên cho label dùng để hiển thị dữ liệu là “hienThi” bằng cách nhấn nút phải vào jLabel này và chọn lệnh “Change variable Name …”,
Giao diện hoàn thiện có dạng như sau
Bài 2 Lập trình sự kiện cho các nút
Lập trình cho các nút số (0,1,2, … 9)
Trang 15Để thể hiện số trên jLabel hienThi trong cửa sổ ứng dụng khi người dùng chọn số nào (nút nào) thì số đó sẽ xuất hiện trong jLabel Chúng ta sẽ làm như sau
- Trỏ chuột vào nút số cần lập trình và nhấn nút phải, sau đó chọn Events -> Action ->
actionPerformed Các thao tác được mô tả như hình dưới đây
Lúc này, cửa sổ viết Code sẽ xuất hiện Bạn hãy viết mã lệnh cho sự kiện của nút như sau
Các nút tương ứng với các phép toán cơ bản (+, -, *, /)
Khi người dùng nhấn vào các nút số để nhập vào số cần tính (Tại thời điểm này ta xem như họ nhập
số thứ nhất), khi người dùng chọn phép toán chính là lúc bạn phải ghi nhận số đã nhập vào trong 1
biến đồng thời ghi nhận luôn phép toán mà người ta muốn thực hiện, sau đó bạn phải “Reset” lại giá trị
trong jLabel hienThi để cho người dùng có thể tiến hành nhập tiếp giá trị của số thứ 2 có tham gia tính toán trong chương trình Cho đến khi họ nhấn vào nút “=” thì chúng ta sẽ lấy giá trị thứ nhất (Đã ghi nhận) kế hợp với phép toán đã chọn cùng với số thứ 2 (Số đang có trên jLabel hienThi tại thời điểm tính toán) để tính và trả về kết quả trên màn hình Với phân tích như thế, tôi đã khai báo ở mức toàn cục của lớp View 2 biến thành phần như sau
Trang 16mã lệnh của các nút chức năng tượng trưng cho 4 phép toán cơ bản như thế này
Như vậy, sau khi nhấn chọn phép toán và nhập số thứ 2; người dùng chọn nút “=” để xem kết quả của phép toán thì chúng ta sẽ lập trình cho nút này như sau
Trang 17Tương tự với các phép toán khác
Trang 18Bài 1: Xây dựng giao diện trò chơi xếp ô số như sau
Hướng dẫn thực hiện:
Thiết kế giao diện với 16 nút
Đặt layout cho cửa sổ là BorderLayout
Kéo 3 Jpanel vào và đặt ở các vị trí: First, Center, Last sau đó đặt layout cho các JPanel này như sau:
FlowLayout.CENTER cho 2 Panel First và Last
GridLayout(4x4) cho Panel Center
Kéo Jlabel vào JPanel vị trí First, 16 nút vào JPanel Center, 1 nút vào JPanel Last thiết kế các nhãn phù hợp
FlowLayout(CENTER)
FlowLayout(CENTER) GridLayout(4x4)
Trang 19Bài 2: Xây dựng trò chơi với qui tắc
Khi nhấp chuột nút số cạnh nút trống thì sẽ đổi số đó cho ô trống
Trò chơi kết thúc khi thứ tự các ô số được sắp xếp theo chiều tăng dần
Hướng dẫn:
[Bắt đầu]: Mở hộp thoại InputDialog yêu cầu nhập họ và tên người chơi và hiển thị trên tiêu đề của của sổ sau
đó Enable tất cả các nút số
o Sử dụng JoptionPane.showInputDialog() để là họ và tên từ người dùng
o Sử dụng this.setTitle() để thiết lập tiêu đề
o Sử dụng btn.setEnabled() để Enable/Disable các nút
[Nhấp nút số]: nếu nút số cạnh nút trống thì chuyển số sang nút trống
o Sử dụng btn.getText() và btn.setText() để thay đổi nhãn của nút
Xác nhận có chơi tiếp hay không khi trò chơi kết thúc? Nếu chọn yes thì đánh lại các ô số ngược lại thì đóng cửa
Trang 20Bài 1: Xây dựng giao diện JMenu
Sử dụng NetBeans IDE , xây dựng giao diện chương trình như sau:
Bài 2: xử lý sự kiện trên JMenu
Xây dựng một chương trình có giao diện sau:
Gán phím tắt và sự kiện cho menu
Xử lý sự kiện:
Trang 22Bài 1 Kết nối CSDL SQL Server 2008 từ NetBean (Type 4)
Bước 1: Download Driver
Để sử dụng CSDL SQL Server 2008, chúng ta có thể dùng 1 trong 2 driver sau:
driver JDBC nhanh nhất cho SQL Server
Giải nén file download, ta được file thư viện có dạng jar
Bước 2: Tạo Library mới
Trong NetBean bạn chọn Tools > Libaries > Chọn New Library > Đặt tên cho nó (chọn library type là Class Libaries)
Trang 23Bước 3: Tạo Project và import driver cho Project
Tạo project Test (Java Application) Nhấp chuột phải vào project mới tạo và chọn Properties Phía bên trái của của Sổ vừa hiện lên bạn chọn mục Libaries, chọn Add Library, bạn chọn Library vừa add vào ở bước 2
Bước 4: Kết nối
Tạo File test.java để thử connect
Trang 24Bài 2 : kết nối SQL Server trong JAVA Sử dụng ODBC – JDBC Bridge
(Type I)
Trong Windows, bạn hãy chọn Start - > Control Panel -> Administrative tools ->
Source Administrator” của hệ điều hành Windows và bạn hãy tiến hành theo các bước như mô tả dưới đây
Chọn [Tab] System DSN
Trang 25Chọn nút Add để tạo 1 DSN mới trong môi trường, lúc này bạn sẽ thấy xuất hiện cửa sổ sau :
Trang 26Chọn DBMS sẽ sử dụng, trong trường hợp của bài viết minh họa này, tôi minh họa dùng SQL Server, vì thế bạn hãy kéo thanh cuộn xuống phía dưới và dùng chuột chọn mục SQL Server (Nếu máy của bạn chưa cài Microsoft SQL Server thì sẽ không tìm thấy mục này) Giao diện như hình sau
Lúc này chọn Finish và tiến hành khai báo các thông số cần thiết cho Data Dource Name sẽ sử dụng cho ODBC Driver như mô tả dưới đây
Trang 27Bạn sẽ phải tiến hành nhập thông tin cho DSN cần tạo
Trong giao diện của cửa sổ trên, ta thấy có 3 mục Mục “Name” dùng để thông báo cho ODBC Driver biết rằng tên của DSN mà bạn muốn tạo tên là gì, mục
của mình Mục cuối cùng “Server” : bạn phải chọn tên của “Database Server” – tức
là tên của máy tính có cài đặt SQL Server chứa Database mà bạn sẽ kết nối đến (Nếu bạn kết nối đến 1 Database Server trên hệ thống mạng hoặc Internet thì tại mục này, bạn có thể gõ vào địa chỉ IP của server đó, trong trường hợp bạn kết nối đến SQL Server cài trong máy tính của bạn thì nhấn vào nút và chọn tên của
Database Server là tên mà khi cài đặt Microsoft SQL Server bạn đã đặt tên cho máy tính của mình) Trong hình dưới đây, tôi muốn DSN có tên là “qlCuocHen” và Database server trong máy tính của tôi có tên là “BODUA-D778EAB2E”
Trang 28Bạn chọn “Next” để tiếp tục, trên màn hình sẽ thấy giao diện như hình sau
Trong giao diện này, có 2 Radio button ở trên cùng cho phép bạn chọn hình thức đăng nhập và chứng thực khi kết nối vào Database Mục thứ nhất dùng
Trang 29khi muốn chứng thực bằng tài khoản đăng nhập của hệ điều hành windows Trong ví dụ này tôi chọn cách thứ 2 và chứng thực khi kết nối bằng 1 tài
khoản đã tạo trong SQL Server, vì thế tại 2 khung chọn ở phía dưới, Login
ID và Password, tôi phải nhập vào tên tài khoản đăng nhập và mật khẩu cần thiết của mình
Tiếp theo bạn chọn nút Next, cửa sổ tiếp theo sẽ xuất hiện như hình dưới đây
Bạn phải chỉ ra database mà mình muốn kết nối đến thông qua mục chọn “Change
the default database to”
Nhấn nút Next
Trang 30Cuối cùng chọn Finish,
Trang 31Bây giờ, bạn đã nhìn thấy tên của Data Source mà bạn tạo ra xuất hiện trong cửa sổ
Data Source)
Trang 32Bài 1: Thêm xóa sửa dữ liệu trên jTable
Dựa vào bài jTable trên slide 6, hãy hoàn thiện chương trình
- Bổ sung nút edit vào giao diện và viết hàm editCell() để sửa một ô giá trị
Bài 2 Phương pháp khác để viết hàm xóa hàng trong jTable
Trong bài tập 1 chúng ta đã xóa hàng bằng cách xóa bản ghi tương ứng trong database sau đó setModel lại cho jTable Phương pháp trên sẽ không tối ưu nếu bảng dữ liệu của chúng ta lớn vì việc setModel sẽ tốn khá nhiều thời gian cho việc truy xuất để lấy dữ liệu ra từ database
Có một cách khác hay hơn nhiều Trong data model, bạn hãy tạo ra một phương thức như sau:
Chúng ta tạo một JButton để thực hiện xóa row được chọn trên JTable Code xử lý sự kiện của nút như sau:
Trang 34MỤC TIÊU
Nắm vững kỹ thuật gửi email qua gmail
Biết cách queue email để tránh nghẽn
BÀI 1: Thiết kế giao diện như hình dưới
• Model: Mô hình dữ liệu cho JList
• View: Giao diện hiển thị các mục được chọn
• Controller: Xử lý sự kiện khi một nút được nhấn
Hướng dẫn thực hiện