Giáo trình Lập trình mã nguồn mở (Phần 1)
Lợi ích của mã nguồn mở đối với ngƣời sử dụng
Lợi ích lớn nhất trong việc chuyển đổi sang phần mềm tự do nguồn mở là giảm
tổng chi phí sở hữu, từ các yếu tố sau:
- Miễn phí bản quyền phần mềm2
- Miễn phí các phiên bản nâng cấp trong toàn bộ vòng đời sử dụng sản phẩm
- Giảm chi phí phát triển phần mềm đáp ứng theo yêu cầu nghiệp vụ (sử dụng
phần mềm, mô-đun có sẵn để phát triển tiếp, sửa đổi điều chỉnh cho phù hợp với
nghiệp vụ)
- Kéo dài thời gian sử dụng/tái sử dụng các phần cứng, thiết bị trong khi vẫn
đảm bảo hiệu năng toàn hệ thống
- Chi phí đầu tƣ, vận hành hệ thống tập trung cho các dịch vụ “hữu hình” đem
lại giá trị trực tiếp, thiết thực cho tổ chức nhƣ: tƣ vấn, sửa đổi theo yêu cầu, triển khai,
đào tạo, bảo trì, nâng cấp hệ thống.
- Mức chi phí tiết kiệm khoảng 75-80% so với phần mềm license ngay trong
năm đầu tiên.
Giảm tối đa sự phụ thuộc vào một vài nhà cung cấp phần mềm dẫn đến dịch vụ
kém (do không có cạnh tranh), hoặc “bị ép” trong các trƣờng hợp cần đàm phán về chi
phí, dịch vụ (mỗi FLOSS có thể có nhiều nhà cung cấp dịch vụ tƣơng tự), nâng cấp
phần mềm, mở rộng hệ thống (với mã nguồn trong tay, có thể dễ dàng nâng cấp, mở
rộng hệ thống theo yêu cầu trong mỗi giai đoạn phát triển).
Đối với các hệ thống đang hoạt động, chủ động thực hiện chuyển đổi sẽ tránh
đƣợc “nguy cơ” bị phạt vi phạm bản quyền và/hoặc bị “bắt buộc” mua license.
Tăng tính thƣơng hiệu cho doanh nghiệp khi giới thiệu đƣợc với cộng đồng, đối
tác, khách hàng (đặc biệt là ngoài nƣớc) và không vi phạm bản quyền.
Tăng cƣờng độ tin cậy, ổn định, tính an toàn, bảo mật (theo báo cáo của Gartner
& nhiều tổ chức phân tích độc lập) toàn hệ thống.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Giáo trình Lập trình mã nguồn mở (Phần 1)
m copy($source, $dest), trong đó $source là path file cần copy và $dest là path file cần di chuyển tới. Nếu muốn đổi luôn tên thì đƣờng dẫn $dest khai báo một cái tên khác if (!copy('demo2.txt', 'demo3.txt')){ echo 'Copy thất bại'; } Xóa file. Ta dùng hàm unlink($path) để xóa file, trong đó $path là đƣờng dẫn đến file cần xóa. if (file_exists('demo.txt')){ unlink('demo.txt'); } Kiểm tra một đường dẫn folder có tồn tại không. Ta dùng hàm is_dir($filename), trong đó $filename là đƣờng dẫn đến folder cần kiểm tra. if(is_dir('system')){ echo 'Folder Tồn Tại'; } Tạo một folder mới. Ta dùng hàm mkdir($path) để tạo folder mới, trong đó $path là đƣờng dẫn đến folder cần tạo, lƣu ý folder cuối cùng chính là tên folder cần tạo và tất cả các folder trƣớc nó chắc chắn là phải có, nếu không sẽ bị lỗi. Ví dụ: // Nếu folder parent chưa có thì sẽ bị lỗi if(!is_dir('parent/sub')){ mkdir('parent/sub'); } 139 2.14. Bài tập 1. Viết trang PHP hiển thị câu: CHÀO MỪNG CÁC BẠN ĐẾN VỚI LẬP TRÌNH WEB PHP. 2. Sử dụng ngôn ngữ PHP viết trang Web xuất thông tin sinh viên bao gồm: Họ và tên, ngày tháng năm sinh, lớp 3. Sử dụng ngôn ngữ PHP viết trang Web thực hiện các phép tính cộng, trừ, nhân, chia, chia lấy dƣ và xuất kết quả ra màn hình. Từ hai biến cho trƣớc ($x=3, $y=5). - $x, $y đƣợc lấy ngẫu nhiên mỗi lần chạy (gợi ý: dùng hàm Rand). - $x, $y đƣợc lấy ngẫu nhiên mỗi lần chạy với điều kiện $x >$y (gợi ý: kết hợp thêm hàm while hoặc do-while). - $x, $y đƣợc lấy ngẫu nhiên mỗi lần chạy với điều kiện $x= k.$y. - Xuất ra BCLN($x,$y). - Xuất ra UCLN($x,$y); 4. Viết trang PHP hiển thị dãy số từ 1 đến 100 sao cho số chẵn là chữ in đậm, số lẽ là chữ in thƣờng. Kết quả: 1 2 3 4.., 100. Hƣớng dẫn: Sử dụng vòng lặp for, 1 biến đếm i, toán tử %. 5. Viết trang PHP hiển thị thông tin sau: 6. Nhập dữ liệu cho một listbox chứa danh sách năm từ 1900 đến năm hiện tại. Hƣớng dẫn: Sử dụng các thẻ sau: - Thẻ tạo listbox: , , - Tạo biến Date, hàm getYear(), vòng lặp for. 7. Viết trang web xuất ra bảng cửu chƣơng từ 2 đến 10. 8. Viết chƣơng trình cho phép đƣa số ngẫu nhiên vào mảng có độ dài là n phần tử cho trƣớc. Xây dựng hàm thực hiện các yêu cầu sau: - Xuất mảng lên trang Web. - Đếm tổng số chẵn. - Tính tổng của các số lẻ trong mảng. - Xuất ra giá trị lớn nhất, nhỏ nhất của mảng. - Xuất đảo ngƣợc các giá trị trong mảng. Gợi ý: Sử dụng hàm rand() để tạo giá trị ngẫu nhiên; Rand(x,y) tạo giá trị ngẫu nhiên trong đoạn x,y. 9. Xử dụng foreach để duyệt mảng và xuất các giá trị nhƣ sau: 140 Gợi ý: $list = array("alpha", "beta", "gamma", "delta", "epsilon"); 10. Tạo hai trang web PHP có nội dung sau: Lƣu ý: sử dung cho 2 phƣơng thức POST và GET. 11. Viết trang web thực hiện các phép tính sau: Lƣu ý: dùng css để tạo giao diện nhƣ yêu cầu, dùng js để tạo chức năng “Quay lại trang trước”. 12. Viết hàm kiểm tra dữ liệu nhập vào (kiểm tra ở trang kết quả). Nếu dữ liệu là chuỗi ký tự hoặc không hợp lệ (phép chi cho 0,), tự động quay lại trang web trƣớc đó. 13. Viết trang PHP hiển thị thông tin sau: Thiết kế Form tính diện tích hình chữ nhật Yêu cầu thiết kế: 141 STT Đối tƣợng Yêu cầu Ghi chú 1 Form - Đặt tên Form - Thiêt lập phƣơng thức cho Form là POST - Thiết lập action của Form là tên của trang 2 Điều khiển - Sử dụng điều khiển TextField, Button - TextField Diện tích không cho phép nhập dữ liệu và chỉnh sửa Yêu cầu chức năng: STT Đối tƣợng Yêu cầu xử lí chức năng Ghi chú 1 Nút lệnh Khi chọn sẽ thực hiện lệnh tính: “Tính” Diện tích = chiều dài * chiều rộng 14. Thực hiện form sau Thiết kế Form tính diện tích và chu vi hình tròn Yêu cầu thiết kế: STT Đối tƣợng Yêu cầu Ghi chú 1 Form - Đặt tên Form - Thiêt lập phƣơng thức cho Form là POST - Thiết lập action của Form là tên của trang 2 Điều khiển - Sử dụng điều khiển TextField, Button - TextField Diện tích và Chu vi không cho phép nhập dữ liệu và chỉnh sửa Yêu cầu chức năng: STT Đối tƣợng Yêu cầu xử lí chức năng Ghi chú 1 Nút lệnh Khi chọn sẽ thực hiện lệnh tính: PI = 3,14 “Tính” Diện tích = PI*R2 R: Bán kính Chu vi = 2*PI*R 15. Thực hiện form Thanh toán tiền điện nhƣ sau: Thiết kế Form tính tiền điện: 142 Yêu cầu thiết kế: STT Đối tƣợng Yêu cầu Ghi chú 1 Form - Đặt tên Form - Thiêt lập phƣơng thức cho Form là POST - Thiết lập action của Form là tên của trang 2 Điều khiển - Sử dụng điều khiển TextField, Button - TextField số tiền thanh toán không cho phép nhập dữ liệu và chỉnh sửa - Giá trị mặc định của đơn giá là 2000 Yêu cầu chức năng: STT Đối tƣợng Yêu cầu xử lí chức năng Ghi chú 1 Nút lệnh Khi chọn sẽ thực hiện lệnh tính: “Tính” Số tiền thanh toán = (Chỉ số mới – Chỉ số cũ)*Đơn giá 16. Viết trang PHP hiển thị kết quả học tập Thiết kế Form kết quả học tập nhƣ sau: Yêu cầu thiết kế: STT Đối tƣờng Yêu cầu Ghi chú 1 Form - Đặt tên Form 143 - Thiêt lập phƣơng thức cho Form là POST - Thiết lập action của Form là tên của trang 2 Điều khiển - Sử dụng điều khiển TextField, Button - Các TextField Điểm trung bình, Kết quả, Xếp loại học lực không cho phép nhập dữ liệu và chỉnh sửa Yêu cầu chức năng: STT Đối tƣợng Yêu cầu xử lí chức năng Ghi chú 1 Nút lệnh Khi chọn sẽ thực hiện lệnh xem kết quả: “Xem kết ĐTB = (HK1+HK2*2)/3. Xét kết quả: quả” - Đƣợc lên lớp: nếu ĐTB>=5 - Ở lại lớp: nếu ĐTB<5 Xếp loại học lực: - Giỏi: nếu ĐTB>=8 - Khá: nếu 6.5<=ĐTB<8 - Trung bình: nếu 5<=ĐTB<6.5 - Yếu: nếu ĐTB<5 17. Viết trang PHP xem kết quả thi Đại học. Thiêt kế Form điểm thi đại học: Yêu cầu thiết kế: STT Đối tƣợng Yêu cầu Ghi chú 1 Form - Đặt tên Form - Thiêt lập phƣơng thức cho Form là POST - Thiết lập action của Form là tên của trang 2 Điều khiển - Sử dụng điều khiển TextField, Button - Các TextField Tổng điểm, Kết quả thi không cho phép nhập dữ liệu và chỉnh sửa Yêu cầu chức năng: 144 STT Đối tƣợng Yêu cầu xử lí chức năng Ghi chú 1 Nút lệnh Khi chọn sẽ thực hiện lệnh xem kết quả: “Xem kết Tổng điểm = Toán + Lý + Hóa quả” Đỗ khi không có môn nào 0 điểm và tổng điểm >= điểm chuẩn, ngƣợc lại trƣợt 18. Tính cạnh huyền tam giác Thiết kế Form canh huyền tam giác vuông: Yêu cầu thiết kế: STT Đối tƣợng Yêu cầu Ghi chú 1 Form - Đặt tên Form - Thiêt lập phƣơng thức cho Form là POST - Thiết lập action của Form là tên của trang 2 Điều khiển - Sử dụng điều khiển TextField, Button - TextField Cạnh huyền không cho phép nhập dữ liệu và chỉnh sửa Yêu cầu chức năng: STT Đối tƣợng Yêu cầu xử lí chức năng Ghi chú 1 Nút lệnh Khi chọn sẽ thực hiện lệnh tính: “Tinh” Tính giá trị cạnh huyền theo công thức 19. Viết trang PHP Tìm số lớn nhất. Thiết kế Form tìm số lớn hơn Yêu cầu thiết kế: 145 STT Đối tƣợng Yêu cầu Ghi chú 1 Form - Đặt tên Form - Thiêt lập phƣơng thức cho Form là POST - Thiết lập action của Form là tên của trang 2 Điều khiển - Sử dụng điều khiển TextField, Button - TextField Số lớn hơn không cho phép nhập dữ liệu và chỉnh sửa. Yêu cầu chức năng: STT Đối tƣợng Yêu cầu xử lí chức năng Ghi chú 1 Nút lệnh Khi chọn sẽ thực hiện lệnh tính: “Tìm” Tìm số lớn hơn giữa 2 số và xuất kết quả ra TextField Số lớn hơn 20. Viết trang PHP Giải phƣơng trình bậc nhất. Thiêt kế Form giải phƣơng trình bậc nhât. Yêu cầu thiết kế: STT Đối tƣợng Yêu cầu Ghi chú 1 Form - Đặt tên Form - Thiêt lập phƣơng thức cho Form là POST - Thiết lập action của Form là tên của trang 2 Điều khiển - Sử dụng điều khiển TextField, Button - TextField Nghiệm không cho phép nhập dữ liệu và chỉnh sửa. Yêu cầu chức năng: STT Đối tƣợng Yêu cầu xử lí chức năng Ghi chú 1 Nút lệnh Khi chọn, thựhiện giải phƣơng trình bậc nhất “Giải phƣơng theo thuật toán sau: trinh” Nếu a=0: - nếu b=0 phƣơng trình có vô số nghiệm - b 0 phƣơng trình vô số nghiệm Nếu a 0: nghiệm phƣơng trình là –b/a 21. Viết trang PHP tính tiền karaoke theo thông tin sau: 146 Thiết kế Form tính tiền Karaoke Yêu cầu thiết kế: STT Đối tƣợng Yêu cầu Ghi chú 1 Form - Đặt tên Form - Thiêt lập phƣơng thức cho Form là POST - Thiết lập action của Form là tên của trang 2 Điều khiển - Sử dụng điều khiển TextField, Button - TextField Tiền thanh toán không cho phép nhập dữ liệu và chỉnh sửa. Yêu cầu chức năng: STT Đối tƣợng Yêu cầu xử lí chức năng Ghi chú 1 Nút lệnh Kiểm tra giờ kết thúc: Chỉ nhập “Tính tiền” - Nếu giờ kết thúc > giờ bắt đầu: Tính và giờ, không xuất kết quả tiền giờ đến điều khiển theo qui nhập phút cách tính tiền. Ngƣợc lại thông báo “Giờ kết thúc phải > giờ bắt đầu” 22. Nhận dạng tam giác Thiết kế Form nhận dạng tam giác 147 Yêu cầu thiết kế: STT Đối tƣợng Yêu cầu Ghi chú 1 Form - Đặt tên Form - Thiêt lập phƣơng thức cho Form là POST - Thiết lập action của Form là tên của trang 2 Điều khiển - Sử dụng điều khiển TextField, Button - TextField Loại tam giác không cho phép nhập dữ liệu và chỉnh sửa. Yêu cầu chức năng: STT Đối tƣợng Yêu cầu xử lí chức năng Ghi chú 1 Nút lệnh Khi chọn, thực hiện: “Nhận dạng” Kiểm tra 3 cạnh này có tạo thành 3 cạnh của một tam giác không. Nếu thỏa mãn: - Nhận dạng ra các loại tam giác đều, cân, vuông cân, vuông, và tam giác thƣờng rồi xuất kết quả vào TextField Loại tam giác. - Ngƣợc lại thì In “Không là tam giác” 1. Tạo trang đăng ký nhƣ sau: 148 Yêu cầu: - Ngƣời dùng nhập đủ thông tin trong form. - Khi nhấn vào nút đăng ký, sẽ chuyển qua trang xlDangky.php, + Show tất cả thông tin ngƣời dùng vừa nhập vào + Hiển thị câu thông báo: “Chúc mừng bạn đăng ký thành công, click vào đây để chuyển về trang chủ nếu hệ thống không tự chuyển” . + Sau 4 giây hệ thống sẻ tự chuyển về lại trang đăng ký. - Tạo trang link đăng nhập và form đăng nhập từ giao diện. Yêu cầu: + Khi ngƣời dùng đăng ký thành công, dùng biến thích hợp để lƣu lại email và password đăng ký. + Ở trang đăng nhập nếu ngƣời dùng đánh email và password không giống với thông tin vừa đăng ký thì hệ thống không cho đăng nhập. + Khi ngƣời dùng đánh đúng tài khoản đăng ký thì form đăng nhập sẻ mất đi và 149 hiển thị thông báo “Chúc mừng bạn đăng nhập thành công”. + Trên thanh menu bên trái. Chữ “Đăng nhập” chuyển thành “Đăng xuất” chữ “Đăng ký ” thành “Thông tin cá nhân”. + Thực hiện chức năng logout. + Thực hiện chức năng “Ghi nhớ thông tin” khi ngƣời dùng đăng ký thành công. 23. Tạo trang thông tin nhƣ sau: Yêu cầu: File ảnh phải đƣợc upload về server đồng thời hiển thị thông tin nhƣ bên dƣới. Kết quả sau khi nhấn Thuộc tính của tập tin 24. Xây dựng chƣơng trình đọc tất cả các tên file ảnh từ thƣ mục lên selectbox. Từ đó cho phép ngƣời dùng chọn tên file và xuất ra ảnh của tên file đó. 25. Thiết kế trang nhƣ sau: Kết quả sau khi nhấn Xem hình ảnh 26. Xây dựng 2 trang web nhƣ hình sau. Khi ngƣời dùng click vào nút HIỂN THỊ thì gửi tên, địa chỉ và số điện thoại sang trang HienThi.php để hiển thị. 150 Trang NhapThongTin.php Trang HienThi.php 27. Xây dựng 2 trang Web nhƣ hình sau. Khi ngƣời dùng click vào nút HIỂN THỊ thì gửi tên và sở thích sang trang KetQua.php để hiển thị. Trang NhapThongTin.php Trang KetQua.php 28. Xây dựng ba trang Web nhƣ hình sau. Khi click vào nút HIỂN THỊ, nếu ngƣời dùng không nhập đủ thông tin thì chuyển sang trang Loi.php, ngƣợc lại chuyển sang trang HienThi.php để hiển thị thông tin vừa nhập. NhapThongTin.php Loi.php HienThi.php 29. Xây dựng trang Web đếm số ngƣời đang Online trên Website nhƣ hình sau: SoNguoiOnline.php 30. Xây dựng trang Web đếm số ngƣời đã truy cập Website nhƣ hình sau: SoNguoiTruyCap.php 31. Tạo trang Web có giao diện nhƣ sau: 151 - Khi ngƣời dùng click vào nút “Đặt chỗ” thì hiển thị lại thông tin theo mẫu sau: 32. Tạo trang Web theo mẫu sau: Chú thích: Tên Tour gồm các mục sau: - Khi ngƣời dùng click vào nút “Đăng ký Tour” thì sẽ hiển thị lại các thông tin theo mẫu sau: 152 33. Tạo trang Web với giao diện theo mẫu sau: - Đƣa dữ liệu tự động vào các ô ngày, tháng năm. - Khi ngƣời dùng click vào nút “Tiếp tục” thì kiểm tra giá trị của các trƣờng trên form. Đƣa ra các thông báo lỗi tƣơng ứng. 34. Tạo trang Web có giao diện nhƣ sau: - Khi ngƣời dùng click vào nút “Đăng nhập” thì dùng các biến session để lƣu lại các giá trị và hiển thị kết quả ngay trong trang: 153 - Khi ngƣời dùng click vào “Click here” thì mở trang mới và hiển thị lại thông tin nhƣ sau: 35. Tạo trang Web có giao diện nhƣ sau: - Khi ngƣời dùng click vào nút “Xác nhận” thì sử dụng cookie để lƣu lại các thông tin và hiển thị ở bên dƣới nút “Xác nhận”: - Khi click vào “Click here” sẽ hiển thị lại các biến cookie. 36. Tạo trang “dangnhap.php” với giao diện nhƣ sau: 154 - Nếu Username = “admin”, password = “123” thì dùng biến session để lƣu lại các thông tin và điều hƣớng sang trang “dangnhapthanhcong.php”. - Trang “dangnhapthanhcong.php”: hiển thị dòng chữ “Xin chào, admin” và nút “Thoát” (để hủy session và quay về trang dangnhap.php). 37. Tạo trang Web có giao diện nhƣ sau: - Kiểm tra kiểu dữ liệu trong các trƣờng sao cho phù hợp, nếu không thì thông báo lỗi tƣơng ứng ở dƣới nút “Đặt hàng”. 38. Tạo trang Web với giao diện nhƣ sau: - Khi ngƣời dùng click vào nút “Gửi thông tin” thì hiển thị các thông tin trong phần “HỒ SƠ KHÁCH HÀNG”. 39. Tạo trang “dangky.php” với giao diện theo mẫu sau: 155 - Khi ngƣời dùng click vào nút “Gửi thông tin” thì sử dụng các biến session để lƣu lại các thông tin, sau đó điều hƣớng sang trang “thongtindangky.php”. - Trang “thongtindangky.php” sẽ hiển thị lại các thông tin vừa đăng ký. 40. Thiết kế trang qui đổi ngoại tệ - vàng Yêu cấu thiết kế: - Form: Đặt tên cho form; Thiết lập phƣơng thức của form là POST; action của form là tên của trang - Điều khiển: Sử dụng các điều khiển TextField, List/Menu, Radio Group, Button; Đô la Mỹ - USD, Đô la Úc – AUD, Yên Nhật – YPJ, Euro – EUR - Các loại vàng thuộc Rario Group: SJC, AAA, PNJ Yêu cầu chức năng: Trang doi_ngoai_te.php - Viết hàm function doi_tien($loai,$so_tien): để đổi từ ngoại tệ sang VNĐ - Viết hàm function doi_vang($loai, $so_luong): để đổi từ số lƣợng vàng sang VNĐ - Trong đó: tỷ giá của các ngoại tệ là 1 USD = 16177 VNĐ, 1 AUD = 14057 VNĐ, 1 YPJ = 136 VNĐ, 1 EUR = 22486 VNĐ 156 - Và đơn giá vàng là: 1 chỉ SJC = 1306000 VNĐ, 1 chỉ AAA = 1305000 VNĐ, 1 chỉ PNJ = 1302000 VNĐ Trang tong_hop.php Gọi dùng lại mã đã viết bên trang doi_ngoai_te.php Nút Quy đổi ngoại tệ/vàng - Gọi các hàm tƣơng ứng để tính thành tiền VNĐ của ngoại tệ và của số lƣợng vàng, đồng thời tính lại tỷ giá ngoại tệ và đơn giá vàng - Xuất các kết quả tính đƣợc vào các TextFiled tƣơng ứng 157
File đính kèm:
- giao_trinh_lap_trinh_ma_nguon_mo_phan_1.pdf