Đề tài Quảng cáo xe gắn máy

1. Mục tiêu. Khi hệ thống thi hành sẽ giúp việc truy cập, tìm kiếm, cập nhật về xe máy một cách nhanh chóng. Nhằm phục vụ cho khách hàng muốn tìm hiểu và mua xe. Vì mục đích của trang web này là quảng cáo các loại xe,cung cấp cho khách hàng những thông tin mà khách hàng muốn tìm. Nên chương trình này chỉ nhằm hỗ trợ cho các cửa hàng,đại lý trong việc mở rộng việc kinh doanh của công ty. 2. Lý do chọn đề tài. Ngày nay,công nghệ thông tin không ngừng phát triển, nó không chỉ mang tính chất thương mại. Nó giúp ích cho việc kinh doanh mua bán của các công ty, cửa hàng, đại lý. Nó góp phần mở rộng việc kinh doanh, mua bán của các công ty. Như chúng ta biết, ngày nay xe máy là một phương tiện đi lại nhanh chóng và hiệu quả mà bất cứ ai cũng cần. Vì vây, việc kinh doanh mua bán mặt hàng này đang được chú ý và quan tâm. Đó là lý do em chọn đề tài này.

doc38 trang | Chia sẻ: tuandn | Lượt xem: 2208 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Đề tài Quảng cáo xe gắn máy, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Bộ Giáo Dục – Đào Tạo Trường Đại Học Dân Lập Cửu Long KHOA CÔNG NGHỆ THÔNG TIN ĐỀ TÀI JAVA - WEB QUẢNG CÁO XE GẮN MÁY Giáo viên hướng dẫn: Viên Thanh Nhã. Phan Hồ Duy Phương Sinh viên thực hiện: Nguyễn Thị Thúy Phượng MSSV: 05.020.115 Vĩnh Long – 12/2007 Bộ Giáo Dục – Đào Tạo Trường Đại Học Dân Lập Cửu Long KHOA CÔNG NGHỆ THÔNG TIN ĐỀ TÀI JAVA - WEB QUẢNG CÁO XE GẮN MÁY Giáo viên hướng dẫn: Viên Thanh Nhã. Phan Hồ Duy Phương Sinh viên thực hiện: Nguyễn Thị Thúy Phượng MSSV: 05.020.115 Vĩnh Long – 12/2007 MỤC LỤC ĐỒ ÁN JAVA- WEB Đề tài: QUẢNG CÁO XE GẮN MÁY 1. Mục tiêu. Khi hệ thống thi hành sẽ giúp việc truy cập, tìm kiếm, cập nhật về xe máy một cách nhanh chóng. Nhằm phục vụ cho khách hàng muốn tìm hiểu và mua xe. Vì mục đích của trang web này là quảng cáo các loại xe,cung cấp cho khách hàng những thông tin mà khách hàng muốn tìm. Nên chương trình này chỉ nhằm hỗ trợ cho các cửa hàng,đại lý trong việc mở rộng việc kinh doanh của công ty. 2. Lý do chọn đề tài. Ngày nay,công nghệ thông tin không ngừng phát triển, nó không chỉ mang tính chất thương mại. Nó giúp ích cho việc kinh doanh mua bán của các công ty, cửa hàng, đại lý. Nó góp phần mở rộng việc kinh doanh, mua bán của các công ty. Như chúng ta biết, ngày nay xe máy là một phương tiện đi lại nhanh chóng và hiệu quả mà bất cứ ai cũng cần. Vì vây, việc kinh doanh mua bán mặt hàng này đang được chú ý và quan tâm. Đó là lý do em chọn đề tài này. 3. Yêu cầu đề tài. a. Chức năng. -- Đưa thông tin cho khách hàng xem. -- Cập nhật thông tin xe. -- Cập nhật thông tin khách hàng. -- Giá bán lẻ các sản phẩm. -- Tìm kiếm thông tin cho người dùng. b. Phân tích. -- Yêu cầu về lưu trữ: Lưu trữ thông tin của từng loại xe. -- Yêu cầu về tra cứu: Tra cứu về loại xe. -- Yêu cầu về giao diện: Cho phép thau tác qua lại giữa các trang web. -- Yêu cầu về phân quyền: Do chương trình này dành cho các tổ chức kinh doanh mua bán nên đòi hỏi sự bảo mật cao. -- Yêu cầu về sao lưu dữ liệu: Nên sao lưu dữ liệu thường xuyên để đề phòng mất cơ sở dữ liệu. àĐể thuận lợi cho việc quản lý các loại xe. c. Quản trị. Người quản trị là người có toàn quyền kiểm soát ứng dụng củachương trình,có quyền kiếm soát mọi hoạt động của chương trình.Người quản trị có thể đăng nhập vào hệ thống và quản lý các dữ liệu (thêm, xóa ,sửa). Ngoài ra ngừơi quản trị có thể xem thông tin quảng cáo. Đối với khách hàng, muốn biết các thông tin sản phẩm thì có thể vào trang web để xem và chon lựa những loại xe mà mình thích, hợp sở thích của mình. -- Chức năng quản trị đối với khách hàng. + Nhập thông tin khách hàng. + Sửa thông tin khách hàng. + Xóa thông tin khách hàng. -- Chức năng quản trị đối với trang web. + Nhập thông tin xe. + Sửa thông tin xe. + Xóa thông tin xe. + Tìm kiếm theo loại xe. d. Các trang web dự kiến. -- Trang chủ. -- Trang thông tin xe. -- Trang cập nhật xe. -- Trang cập nhật khách hàng. -- Trang giá bán lẻ các sản phẩm. -- Trang tìm kiếm loại xe. 4. Mô hình ERD. 5. Mô hình vật lý. 6. Mô hình quan hệ dữ liệu. XE ( MaXe, TenXe, HinhAnh, MoTa ). CHITIETXE ( MaChiTiet, DungTich, HDSuDung, GiaCa, Mau ). PHUTUNG ( MaPhuTung, TenPhuTung, GiaCa, Mau, MoTa, HinhAnh ). LOAIXE ( MaLoaiXe, TenLoaiXe, GhiChu, DacDiem ). KHACHHANG ( MaKhachHang, TenKhachHang, DiaChi, DienThoai, Email ). 7. Bảng mô tả các thực thể và các mối kết hợp. a. Thực thể XE. STT Thuộc tính Kiểu dữ,liệu Ràng buộc Diễn giải 1 MAXE Varchar (20) Khóa chính Mã Xe 2 TENXE Varchar (20) Tên loại xe 3 HINHANH Varchar (50) Hình ảnh 4 MOTA Varchar (200) Mô tả 5 MALOAIXE Varchar (20) Khóa ngoại Mã loại xe b. Thực thể LOAIXE. STT Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải 1 MALOAIXE Varchar(20) Khoá chính Mã loại xe 2 TENLOAIXE Varchar(20) Tên loại xe 3 GHICHU Varchar(100) Ghi chú 4 DACDIEM Varchar(50) Đặc điểm c. Thực thể CHITIETXE. STT Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải 1 MACHITIET Varchar(20) Khóa chính Mã chi tiết 2 DUNGTICH Varchar(20) Dung tích 3 GIACA Float(20) Gía cả 4 HDSUDUNG Varchar(50) Hướng dẫn sử dụng 5 MAU Varchar(20) Màu 6 MAXE Varchar(20) Khóa ngoại Mã xe d. Thực thể PHUTUNG. STT Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải 1 MAPHUTUNG Varchar(20) Khóa chính Mã phụ tùng 2 TENPHUTUNG Varchar(40) Tên phụ tùng 3 GIACA Float(8) Giá cả 4 NGUYENLIEU Varchar(30) Nguyên liệu 5 MAU Varchar(20) Màu 6 MOTA Varchar(200) Mô tả 7 HINHANH Varchar(50) Hình ảnh 8 MAXE Varchar(20) Khóa ngoại Mã xe e. Thực thể KHACHHANG. Thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải 1 MAKHACHHANG Varchar (20) Khóa chính Mã khách hàng 2 TENKHACHHANG Varchar (20) Tên khách hàng 3 DIACHI Varchar (20) Địa chỉ 4 DIENTHOAI Varchar (20) Điện thoại 5 EMAIL Varchar (20) Email 6 MAXE Varchar (20) Khóa ngoại Mã xe f. Các mối kết hợp. -- Mối quan hệ giữa XE và CHITIETXE. Mối kết hợp: có nhiều, tạo một quan hệ giữa xe và chi tiết xe là: quan hệ 1-n. Có nghĩa là một xe có nhiều chi tiết xe và ngược lại nhiều chi tiết xe thuộc một xe. -- Mối quan hệ giữa XE và PHUTUNG. Mối kết hợp: có nhiều, tạo một quan hệ giữa xe và phụ tùng là: quan hệ 1-n. Có nghĩa là một xe có nhiều phụ tùng và ngược lại nhiều phụ tùng của một xe. -- Mối quan hệ giữa LOAIXE và XE. Mối kết hợp: thuộc, tạo một quan hệ giữa loai xe và xe là: quan hệ 1- n. Có nghĩa là một loại xe có nhiều xe và ngược lại nhiều xe thuộc một loại xe. -- Mối quan hệ giữa XE và KHACHHANG. Mối kết hợp: đã mua, tạo một quan hệ giữa xe và khách hàng là: quan hệ 1-n. Có nghĩa là một xe được nhiều khách hàng và ngược lại nhiều khách hàng của một xe. 8. Ràng buộc toàn vẹn. RB1: Mỗi loại xe phải có một xe tương ứng. RB2: Mỗi khách hàng có một mã duy nhất và không trùng lắp. RB3: Mỗi xe phải có một tên duy nhất. RB4: Ngày nhập xe không thể nhỏ hơn ngày bán xe. RB5: Giá bán phải không âm. 9. Giao diện. a. Trang chủ. b. Trang đăng nhập. c.Trang thông tin xe. d. Trang chi tiết xe. e. Trang cập nhật xe. f. Trang cập nhật khách hàng. g. Trang giá bán lẻ các sản phẩm. h. Trang tìm kiếm 10. Giải thích các đoạn code. a. Tạo lớp kết nối. // Tạo ra lớp kết nối. package my; import com.borland.dx.sql.dataset.*; import java.util.*; // Hàm tạo ra lớp kết nối. public class KetNoi { public Database database1 = new Database(); public String trangThaiKetNoi = ""; //Statement thuc thi cau truy van // sau khi statement lay duoc bao nhieu mau tin thi no cat vao resultset public java.sql.Statement sta = null; public java.sql.ResultSet res = null; public Vector vIndex = null; public boolean flagSql = true; public KetNoi() { System.out.println("Dang ket noi csadl"); KetNoiDatabase(); } // Hàm ket noi cơ sở dữ liệu public void KetNoiDatabase() { try { jbInit(); } catch(Exception e) { System.out.println("Ket noi khong duoc"); e.printStackTrace(); } } private void jbInit() throws Exception { // khi ket noi chua duoc mo thi thuc hien ket noi lien. if(database1.isOpen() == false) database1.setConnection(new com.borland.dx.sql.dataset.ConnectionDescriptor("jdbc:odbc:qlxm", "", "", false, "sun.jdbc.odbc.JdbcOdbcDriver")); trangThaiKetNoi = "Ket noi thanh cong"; // Tao ra doi tuong statement. sta = database1.createStatement(); } public void dongKetNoi() { if(database1.isOpen()) { database1.closeConnection(); System.out.println("Dong ket noi CSDL"); trangThaiKetNoi = "da dong ket noi"; } } // Hàm lấy dữ liều về gán vào một vector. public Vector getDataVector( int viTriTruongTable,String sql,String loi) { Vector v = new Vector(); System.out.println(sql); try { res = sta.executeQuery(sql); while(res != null && res.next()) { add mot object vao mot vector v.add(res.getString(viTriTruongTable)); } }catch(Exception l) { System.out.println(loi + " " + l.toString()); } return v; } // Hàm lấy về số mẫu tin. public int laySoMauTin (String sql, String loi) { int soMauTin = 0; try { res = sta.executeQuery(sql); while(res != null && res.next()) { soMauTin = soMauTin + 1; } }catch(Exception l) { System.out.println(loi + " " + l.toString()); } return soMauTin; } //hàm thực thi cau lệnh insert,delete, update la execute. Sau khi thuc thi xong co trang thai la true false public void thucThiSql(String sql, String loi) { try { sta.execute(sql); System.out.println(sql); flagSql = true; }catch(Exception l) { System.out.println(sql); flagSql = false; System.out.println(loi + " " + l.toString()); } } //Hàm lấy mẫu tin đầu tiên. public String layMauTinDauTien(String sql, String loi, int viTri) { String keQua = ""; try { res = sta.executeQuery(sql); //lay mot mau tin dau tien if(res != null && res.next()) { keQua = res.getString(viTri); } }catch(Exception l) { System.out.println(loi + " " + l.toString()); } return keQua; } } b. Trang xử lý đăng nhập. <% // khai bao chuoi us lay ve bien txtUser va pa lay ve bien txtPass. String us = request.getParameter("txtUser"); String pa = request.getParameter("txtPass"); // Tao doi tuong ket noi. my.KetNoi kn = new my.KetNoi (); // Tao vector đăng nhập để thực hiện câu truy vấn. Vector vDangNhap = kn.getDataVector(1,"select * from LoGin where username = '"+us+"' AND password ='"+pa+"'","loi khi lay du lieu"); kn.KetNoiDatabase(); // Kiểm tra đăng nhập nếu lớn hơn không thì gởi biến user,password lên session. // dieu kien xay ra tra ve mau tin cat vao vector if(vDangNhap.size() >0 ){ session.setAttribute("username",us); session.setAttribute("password",pa); response.sendRedirect("CapNhatLoaixe.jsp"); } Else // Nếu sai thì gọi lại trang đăng nhập. response.sendRedirect("DangNhap.jsp"); %> c.Trang Hiện Dữ liệu. <% // Tạo kết nối cơ sở dữ liệu. my.KetNoi kn = new my.KetNoi (); // Tạo biến cbo, lấy biến mã loại xe so sánh khác bằng null thì lấy về mã loại xe. String cboDangChon = ""; if(request.getParameter("bienMaLoaiXe") != null) cboDangChon = request.getParameter("bienMaLoaiXe"); kn.KetNoiDatabase(); //Khai báo Vector đe hứng các giá trị. Vector vMaLoaiXe=new Vector(); Vector vMaLoaiXeDefault = new Vector(); Vector vTenLoaiXe = new Vector(); Vector vHinh=new Vector(); Vector vXe = new Vector(); Vector vMaXe = new Vector(); // Thực hiên câu truy vấn vMaLoaiXeDefault = kn.getDataVector(1,"select top 1 MaLoaiXe from LoaiXe ","loiLoaiXe"); vMaLoaiXe = kn.getDataVector(1,"select MaLoaiXe from LoaiXe order by MaLoaiXe asc","loiLoaiXe"); vTenLoaiXe = kn.getDataVector(1,"select TenLoaiXe from LoaiXe order by MaLoaiXe asc","loiLoaiXe"); vHinh = kn.getDataVector(1,"select HinhAnh from Xe ","Loi xe"); //out.println(vHinh); String giaTriCbo = ""; // Lấy về dữ liệu đầu tiên. String duLieuDau = kn.layMauTinDauTien("select MaLoaiXe from LoaiXe","Loi lay mau tin dau tien",1); if(request.getParameter("bienMaLoaiXe") != null) { giaTriCbo = request.getParameter("bienMaLoaiXe"); vXe = kn.getDataVector(1,"select TenXe from Xe where MaLoaiXe = N'"+giaTriCbo+"'","Loi xe"); vMaXe = kn.getDataVector(1,"select maXe from Xe where MaLoaiXe = N'"+giaTriCbo+"'","loiLoaiXe"); vHinh = kn.getDataVector(1,"select HinhAnh from Xe where MaLoaiXe = N'"+giaTriCbo+"'","Loi xe...."); } else { vXe = kn.getDataVector(1,"select TenXe from Xe where MaLoaiXe = N'"+duLieuDau+"'","Loi xe"); vMaXe = kn.getDataVector(1,"select MaXe from Xe where MaLoaiXe = N'"+duLieuDau+"'","loiLoaiXe"); vHinh = kn.getDataVector(1,"select HinhAnh from Xe where MaLoaiXe = N'"+vMaLoaiXeDefault.elementAt(0)+"'","Loi xe"); } %> Chon loai xe: <% int i = 0 ; String tenCbo = request.getParameter("cbo"); System.out.println("vMaLoaiXe = " + vMaLoaiXe); while(i < vMaLoaiXe.size()) { if(vMaLoaiXe.elementAt(i).equals(giaTriCbo)) {%> " selected="selected"> <% } else { %> "> <% } i++; }%> Tên xe <% int j = 0 ; while (j < vXe.size()) { String bienHinh = "Images/"+vHinh.elementAt(j); %> &path="> "> --%> function xuLy() { myForm.action = "XuLyHienDuLieu.jsp"; myForm.submit(); } d. Trang chi tiết xe. //tao ket noi my.KetNoi gc=new my.KetNoi (); //tao cac vector Vector vTenXe=new Vector(); Vector vGiaCa=new Vector(); Vector vMau=new Vector(); Vector vMoTa=new Vector(); Vector vmapt=new Vector(); String maXeLayTuTrangXe=""; maXeLayTuTrangXe=request.getParameter("maXe"); // lay thong tin chi tiet xe vTenXe=gc.getDataVector(1,"select TenXe from ChiTietXe,Xe where ChiTietXe.maxe=Xe.maxe and Xe.maxe = '"+maXeLayTuTrangXe+"'","loi phutung1"); vGiaCa = gc.getDataVector(1,"select GiaCa from Xe,ChiTietXe where Xe.maxe=ChiTietXe.maxe and Xe.maxe = '"+maXeLayTuTrangXe+"' ","loi phutung2"); vMau=gc.getDataVector(1,"select Mau from Xe,ChiTietXe where Xe. maxe=ChiTietXe.maxe and Xe.maxe = '"+maXeLayTuTrangXe+"'","loi phutung3"); vMoTa=gc.getDataVector(1,"select MoTa from chitietXe,Xe where chitietXe.maxe=Xe.maxe and Xe.maxe = '"+maXeLayTuTrangXe+"'","loi phutung4"); // lay thong tin phu tung xe Vector vTenPhuTung=new Vector(); Vector vGiaPhuTung=new Vector(); Vector vMauPhuTung=new Vector(); Vector vMoTaPhuTung=new Vector(); Vector vHinhAnhPhuTung=new Vector(); // Thực hiện câu truy vấn. vTenPhuTung=gc.getDataVector(1,"select TenPhuTung from PhuTung,Xe where PhuTung.maxe=Xe.maxe and Xe.maxe = '"+maXeLayTuTrangXe+"'","loi phutung1"); vGiaPhuTung = gc.getDataVector(1,"select Giaca from PhuTung,Xe where PhuTung.maxe=Xe.maxe and Xe.maxe='"+maXeLayTuTrangXe+ "'","loi phutung2"); vMauPhuTung=gc.getDataVector(1,"select Mau from PhuTung,Xe where PhuTung. maxe=Xe.maxe and Xe.maxe = '"+maXeLayTuTrangXe+"'","loi phutung3"); vMoTaPhuTung=gc.getDataVector(1,"select PhuTung.Mota from PhuTung,Xe where PhuTung.maxe=Xe.maxe and Xe.maxe = '"+maXeLayTuTrangXe+"'","loi phutung4"); vHinhAnhPhuTung=gc.getDataVector(1,"select PhuTung.Hinhanh from PhuTung,Xe where PhuTung.maxe=Xe.maxe and Xe.maxe = '"+maXeLayTuTrangXe+"'","loi phutung5"); %> phu tùng CHI TIẾT XE ">   Tên Xe    "> Giá :       "> Màu:       "> Mô Tả:    "> Tên Phụ Tùng Gía Màu Mô Tả Hình Ảnh <% int dem = 0 ; while(dem < vMoTaPhuTung.size()) { %> <% String chuoiHinh = "Images/" + vHinhAnhPhuTung.elementAt(dem); %> width = 50 height = 80> <%dem++;} %> e.Trang cập nhật xe. <% //khai bao cac vector int soMauTin = 0 ; Vector vMaXe = new Vector(); Vector vTenXe = new Vector(); Vector vMoTa = new Vector(); String maXe = ""; String tenXe = ""; String moTa = ""; //lay ve bien sql if(request.getParameter("bienSql") != null) if(request.getParameter("bienSql").equals("kptv")) { out.println("Bankhong phai la thanh vien cap nhat "); } else { out.println("TRANG THAI CAP NHAT: "); if(request.getParameter("bienSql").equals("THANH CONG")) out.println("THAt BAI"); else out.println("THANH CONG......"); } if(request.getParameter("maXe") != null) { maXe = request.getParameter("maXe"); tenXe = request.getParameter("tenXe"); moTa = request.getParameter("moTa"); } my.KetNoi kn = new my.KetNoi (); soMauTin = kn.laySoMauTin("select maXe from Xe","Loi Khi Lay So Mau Tin Xe") ; if(kn.getDataVector(1,"select maXe from Xe ","Loi khi lay thong tin max").size() > 0) { vMaXe = kn.getDataVector(1,"select maXe from Xe ","Loi khi lay thong tin max"); vTenXe = kn.getDataVector(1,"select TenXe from Xe ","Loi khi lay thong tin tenxe"); vMoTa = kn.getDataVector(1,"select MoTa from Xe ","Loi khi lay thong tin mota xe"); } %> Untitled Document CẬP NHẬT XE Quay lai trang chu--%> Ma xe: <% if(request.getParameter("viTriVector") != null) { int chuoiIndexVector = new Integer(request.getParameter("viTriVector")).intValue(); %> > <%} else if(vMaXe.size() > 0) {%> "> <%} else {%> // Tạo textbox tên xe Ten xe: <% if(request.getParameter("viTriVector") != null) { int chuoiIndexVector = new Integer(request.getParameter("viTriVector")).intValue(); %> > <%} else if(vMaXe.size() > 0) {%> "> <%} else {%> // Tạo Textbox Mô tả. Mo Ta: <% if(request.getParameter("viTriVector") != null) { int chuoiIndexVector = new Integer(request.getParameter("viTriVector")).intValue(); %> > <%} else if(vMaXe.size() > 0) {%> "> <%} else {%>   // Tạo nút xóa va bắ t sự kiện onclick.   // Tạo nút sửa và bắ t sự kiện onclick.   // Khi nhấn nut lưu.         )">Chon Xoa Chon sua Ma loai xe Ten loai xe Mo Ta <% // Thể hiện các giá trị lên đe xóa. int i = 0; while(i 0) { if(request.getParameter("viTriVector") != null && new Integer(request.getParameter("viTriVector")).intValue() == i) {%> /> " checked> <%} else {%> /> " onclick="rdioSua()"> <% i++; } kn.dongKetNoi(); %> // Hàm xử lý java script. function huyThaoTac() { myForm.bttLuu.id = "luu"; } // xu ly javascript khi nhan nut luu function luu() { if(myForm.bttLuu.id.equals("them")) { if(myForm.txtMaXe.value.equals("")) { alert("Ban chua nhap ma xe"); myForm.txtMaXe.focus(); return false; } if(myForm.txtTenXe.value.equals("")) { alert("Ban chua nhap ten xe"); myForm.txtTenXe.focus(); return false; } if(myForm.txtMoTa.value.equals("")) { alert("Ban chua nhap mo ta"); myForm.txtMoTa.focus(); return false; } return true; } // xử lý khi nhấn nút xóa. if(myForm.bttLuu.id.equals("xoa")) { flagDem = 0; for(i = 0 ; i ; i++) { if(myForm.chk[i].checked == true) { flagDem = flagDem + 1; } } if(flagDem == || flagDem > 0) { return true; } else { alert("Ban chua chon gia tri can xoa"); return false; } } //Xử lý khi nhấn nut lưu if(myForm.bttLuu.id.equals("luu")) { alert("ban chua nhan thao tac nao nen nut luu khong co hieu luc"); return false; } } function them() { myForm.bttLuu.id = "them"; myForm.bttLuu.value = " Luu(them) "; myForm.txtMaXe.value = ""; myForm.txtMaXe.focus(); myForm.txtTenXe.value = ""; myForm.txtMoTa.value = ""; } function xoa() { myForm.bttLuu.id = "xoa"; myForm.bttLuu.value = " Luu(xoa) "; } function sua() { myForm.bttLuu.id = "sua"; myForm.bttLuu.value = " Luu(sua) "; } // chon tat ca check box để xóa function xoaTatCa(so) { if(myForm.chkAll.checked == false) for(i = 0; i < so; i++) { myForm.chk[i].checked = true; } else for(i = 0; i < so; i++) { myForm.chk[i].checked = false; } } // Hàm chọn radio để sửa function rdioSua() { myForm.action = "XuLyCapNhatLoaiXe.jsp"; myForm.submit(); } // Hàm hủy thao tác function huyThaoTac() { myForm.action = "CapNhatLoaixe.jsp"; myForm.reset(); } f. Trang xử lý cập nhật xe. <% // Xử lý khi nhấn radio. if(request.getParameter("bttLuu") == null) { String chuoiIndex = reque