Hiện nay, có nhiều ngôn ngữ lập trình để các lập trình viên có thể chọn lựa. Đối với các lập trình viên mới vào nghề, việc chọn một ngôn ngữ có thể gặp khó khăn. Có nhiều ngôn ngữ đang phát triển, nhưng không phổ biến và khó để tự học một cách thông thường. Trong số đó, Ruby là một ngôn ngữ rất hay mà các lập trình viên mới có thể thử. Ruby là một mã nguồn mở, một ngôn ngữ lập trình hướng đối tượng thuần túy, nghĩa là, mỗi giá trị bao gồm: số, giá trị true và false,... đều là một đối tượng
ĐÁNH GIÁ, NHẬN XÉT CỦA GIÁO VIÊN Tp.HCM Ngày……tháng……năm……… GV Phản Biện (Ký Tên) SV thực hiện: Hoàng Việt Anh – Nguyễn Phong Trương NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Tp.HCM Ngày……tháng……năm……… GV Phản Biện (Ký Tên) SV thực hiện: Hoàng Việt Anh – Nguyễn Phong Trương LỜI CẢM ƠN Trong suốt q trình thực đề tài, chúng em ln nhận quan tâm giúp đỡ đóng góp nhiệt tình q thầy trường Đại học Cơng nghiệp Thành phố Hồ Chí Minh, khoa Cơng nghệ thơng tin Trước hết, xin chân thành cám ơn đến quý thầy cô trường Đại học Công nghiệp Tp HCM, khoa CNTT tận tình dạy bảo tơi suốt thời gian học tập trường Tiếp đó, chúng em xin cám ơn đến Nguyễn Minh Nghị, project manger công ty LARION, khơng quản khó nhọc cơng sức, truyền đạt số kinh nghiệm cần thiết Chúng xin gửi lời biết ơn sâu sắc đến giáo viên hướng dẫn Từ Thị Xuân Hiền dành nhiều thời gian tâm huyết hướng dẫn nghiên cứu giúp chúng em hoàn thành đồ án tốt nghiệp Mặc dù chúng em có nhiều cố gắng hồn thiện đồ án với tất tâm huyết đam mê, nhiên khơng thể tránh khỏi thiếu sót, mong nhận đóng góp quý báu quý thầy bạn SV thực hiện: Hồng Việt Anh – Nguyễn Phong Trương MỤC LỤC ĐÁNH GIÁ, NHẬN XÉT CỦA GIÁO VIÊN NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN LỜI CẢM ƠN CHƯƠNG I: TỔNG QUAN VỀ RUBY ON RAILS FRAMEWORK .5 I Ngôn ngữ Ruby Lịch sử phát triển Ruby gì? Ruby làm gì? So sánh số ngôn ngữ lập trình khác .6 Ruby IDE editor hỗ trợ .7 II Rails Framework 10 Lịch sử phát triển 10 Ruby on Rails gì? 10 Các tính Ruby on Rails .11 Kiến trúc MVC 12 Các thành phần Rails .13 Tạo project Rails 14 CHƯƠNG II: CHƯƠNG TRÌNH DEMO 20 I Phân Tích Cơ Sở Dữ Liệu .20 1.Mơ Hình ERD 20 2.Cơ Sở Dữ Liệu Quan Hệ 21 3.Mơ Hình Vật Lý 21 Diễn Giải Cơ Sở Dữ Liệu 22 II Demo Ruby On Rails .24 CHƯƠNG III:KẾT LUẬN .27 DANH MỤC TÀI LIỆU THAM KHẢO 28 SV thực hiện: Hoàng Việt Anh – Nguyễn Phong Trương CHƯƠNG I: TỔNG QUAN VỀ RUBY ON RAILS FRAMEWORK I Ngôn ngữ Ruby Lịch sử phát triển Ruby tạo Yukihiro Matsumoto (hay gọi Matz),người Nhật Bản, vào ngày 24 tháng 2, 1993 đưa thức vào năm 1995 Ruby chịu nhiều ảnh hưởng từ Perl, hồn tất ngơn ngữ này, Matz đùa với người bạn nên đặt tên nghe cho giống thứ đá quý (Perl lúc đầu đặt tên Pearl - ngọc trai) Và bạn anh gợi ý tên Ruby Sau Matz bất ngờ phát Pearl viên đá quý tượng trưng cho người sinh tháng 6, Ruby tượng trưng cho người sinh tháng Anh cho tên Ruby phù hợp Ruby kế thừa phát triển nhiều đặc tính từ Perl Hiện phiên ổn định Ruby 1.9.2 Ruby gì? Hiện nay, có nhiều ngơn ngữ lập trình để lập trình viên chọn lựa Đối với lập trình viên vào nghề, việc chọn ngơn ngữ gặp khó khăn Có nhiều ngơn ngữ phát triển, khơng phổ biến khó để tự học cách thơng thường Trong số đó, Ruby ngơn ngữ hay mà lập trình viên thử Ruby mã nguồn mở, ngơn ngữ lập trình hướng đối tượng túy, nghĩa là, giá trị bao gồm: số, giá trị true false, đối tượng Ruby thiết kế tập trung vào tính đơn giản hiệu suất Ruby lấy cảm hứng từ Lisp, Perl, Smalltalk Mặc dù ngôn ngữ hướng đối tượng Ruby sử dụng kiểu lập trình thủ tục(procedure) chức năng(functional) Ruby làm gì? Ruby tạo nên nét đặc biệt ngơn ngữ lập trình Những nét là: SV thực hiện: Hồng Việt Anh – Nguyễn Phong Trương Sức mạnh: kết hợp hoàn hảo sức mạnh hướng đối tượng túy ngôn ngữ hướng đối tượng với sức diễn đạt tiện lợi ngôn ngữ kịch bản(Script) Perl Chương trình Ruby nhỏ gọn, dễ đọc Tính đơn giản : Cú pháp nghĩa trực quan dễ đọc (clean) Và khơng có “những trường hợp đặc biệt” mà ta cần phải ghi nhớ Như instance, số nguyên (integer), hay lớp (classes), vừa đủ giống vối ngôn ngữ khác Mỗi ta học bản, dễ dàng để đốn trước cách làm Tính vơ hình:Ruby giải phóng người lập trình khỏi cực nhọc việc nhồi nhét trình biên dịch (complier) Ruby ln nằm ‘vùng kiểm sốt’ ,do ta tập trung giải lỗi tay Sẵn có: Ruby nguồn mở nên sử dụng cách tự người dùng hay người phát triển Không giống nhiều ngôn ngữ khác, Ruby không giới hạn bạn vấn đề HĐH pháp lý Ruby chạy Unix hay Linux , Microsoft Windows,… So sánh số ngôn ngữ lập trình khác 4.1 Ruby với Java Điểm giống nhau: Giống Java, Ruby có: Bộ nhớ quản lý thông qua thu dọn rác (garbage collector) Đối tượng chủ đạo Đều có method public, private, protected Điểm khác nhau: Không giống Java, Ruby: Không cần biên dịch code, ta chạy trực tiếp Sử dụng từ khóa “end” sau định nghĩa đó, ví dụ class, thay đặt dấu ngoặc quanh khối lệnh Sử dụng “require” thay “import” Java Tất biến thành viên private Từ bên ngồi, ta truy xuất thứ qua method Mọi thứ đối tượng, bao gồm số, ví dụ 3.14 Tên biến nhãn, không kiểu kèm với Contructor ln ln có tên “initialize” thay có tên class SV thực hiện: Hoàng Việt Anh – Nguyễn Phong Trương == equals() xử lý khác Ruby Sử dụng == ta muốn kiểm tra tương đương Ruby (với Java equal()) Sử dụng equal?() ta muốn biết hai đối tượng có hay hông (với Java ==) 4.2 Ruby với C++ Điểm giống nhau: Giống C++, Ruby cũng: Đều có method public, private, protected Cú pháp kế thừa (inheritance) có ký tự (nhưng với Ruby “ cd Web_RubyOnRails Sau thực thi ví dụ bạn thấy sau: Web_RubyOnRails> Bây ta bắt đầu tạo ứng dụng đơn giản với rails đặt tên demo Web_RubyOnRails> rails new demo Sau chạy câu lệnh hình bên create Rakefile : : : create tmp/pids create vendor/plugins create vendor/plugins/.gitkeep SV thực hiện: Hoàng Việt Anh – Nguyễn Phong Trương 17 Web_RubyOnRails> Bước ta trỏ tới thư mục có tên demo vừa tạo Web_RubyOnRails> cd demo demo> ls -p app/config.ru doc/lib/ public/ README test/ vendor/config/ db/Gemfile log/ Rakefile script/ tmp/ Bước tạo kết nối tới sever demo> rails server => Booting WEBrick => Rails 3.0.5 application starting on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server [2010-11-14 10:53:35] INFO WEBrick 1.3.1 [2010-11-14 10:53:35] INFO ruby 1.8.7 (2010-08-16) [i686-darwin9.8.0] [2010-11-14 10:53:40] INFO WEBrick::HTTPServer#start: pid=6044 port=3000 Sau tạo xong cài đặt kết nối bạn vào thư mục sau: Web_RubyOnRails ->demo bạn thấy cấu trúc sau: Sau ta vào view/say tạo tập tin có tên hello.html.erb viết dòng chào Hello from Rails Để chạy file hello.html.irb bạn mở trình duyệt web gõ địa vào : SV thực hiện: Hoàng Việt Anh – Nguyễn Phong Trương 18 url: http://localhost:3000/say/hello Bạn thấy sau : Vậy ta dễ dàng tạo ứng dụng web viết Ruby on Rails SV thực hiện: Hoàng Việt Anh – Nguyễn Phong Trương 19 CHƯƠNG II: CHƯƠNG TRÌNH DEMO I Phân Tích Cơ Sở Dữ Liệu 1.Mơ Hình ERD SV thực hiện: Hồng Việt Anh – Nguyễn Phong Trương 20 2.Cơ Sở Dữ Liệu Quan Hệ Từ mơ hình lược đồ csdl quan hệ: GIANGVIEN(MAGV, TenGV,Email,DiaChi,SDT,GioiTinh) LOP(MALOP, TENLOP,MoTa) MONHOC(MAMH, TenMH, MoTa) GIANGDAY(MAGV, MALOP, MAMH, NGAYBD) SINHVIEN(MASV, TenSV,Email,DiaChi,GioiTinh,NgaySinh) DANGKY(MASV, MAMH) 3.Mơ Hình Vật Lý SV thực hiện: Hoàng Việt Anh – Nguyễn Phong Trương 21 Diễn Giải Cơ Sở Dữ Liệu Bảng Giảng Viên: Lưu trữ thơng tin giảng viên STT Thuộc Tính Kiểu Dữ Liệu MaGV int TenGV Email DiaChi GioiTinh SDT vachar(100) varchar(100) varchar(150) nvachar(10) vachar(13) Diễn Giải MGV (khóa chính) để phân biệt ràng buộc với Giang Viên khác, tạo ràng buộc với bảng khác Tên giảng viên Dùng để liên lạc Thông tin địa giảng viên Thơng tin giới tính Số điện thoại giảng viên Bảng Sinh Viên: Lưu trữ thông tin sinh viên STT Thuộc Tính Kiểu Dữ Liệu MaSV int TenSV Email DiaChi GioiTinh SDT vachar(100) varchar(100) varchar(150) nvachar(10) vachar(13) Diễn Giải MaSV (khóa chính) để phân biệt ràng buộc với Sinh Viên khác, tạo ràng buộc với bảng khác Tên giảng viên Dùng để liên lạc Thông tin địa sinh viên Thơng tin giới tính Số điện thoại sinh viên Bảng Lớp học: Lưu trữ thông tin lớp học STT Thuộc Tính Kiểu Dữ Liệu MaLH int TenLopHoc MoTa vachar(100) varchar(100) Diễn Giải MLH (khóa chính) để phân biệt ràng buộc với Lớp học khác, tạo ràng buộc với bảng khác Tên lớp học Mô tả chi tiết thông tin lớp học Bảng Mơn học: Lưu trữ thơng tin mơn học STT Thuộc Tính Kiểu Dữ Liệu MaMH int TenMonHoc MoTa vachar(100) varchar(100) Diễn Giải MLH (khóa chính) để phân biệt ràng buộc với mơn học khác, tạo ràng buộc với bảng khác Tên lớp học Mô tả chi tiết thông tin môn học SV thực hiện: Hồng Việt Anh – Nguyễn Phong Trương 22 Bảng Đăng Ký: Lưu trữ thông tin đăng ký mơn học sinh viên STT Thuộc Tính Kiểu Dữ Liệu MaSV int MaMH int NgayDangKy datetime Diễn Giải MaSV(khóa phụ) để ràng buộc với bảng Sinh Viên MaMH (khóa phụ) để ràng buộc với bảng Môn Học Ngày sinh viên đăng ký môn học Bảng Dạy Học: Lưu trữ thông tin phân lớp dạy cho giảng viên STT Thuộc Tính Kiểu Dữ Liệu MaGV int MaLH vachar(100) MaMH varchar(100) NgayBatDau NgayKetThuc varchar(150) nvachar(10) Diễn Giải MaSV(khóa phụ) để ràng buộc với bảng Giảng Viên MaLH(khóa phụ) để ràng buộc với bảng Lớp Học MaMH(khóa phụ) để ràng buộc với bảng Môn Học Ngày bắt đầu giảng dạy Ngày kết thúc giảng dạy II Giao diện demo Ruby On Rails Giao diện chương trình SV thực hiện: Hồng Việt Anh – Nguyễn Phong Trương 23 Giao diện quản lý học sinh Giao diện tạo sinh viên SV thực hiện: Hoàng Việt Anh – Nguyễn Phong Trương 24 Giao diện sửa thông tin sinh viên: Giao diện đăng ký mơn học SV thực hiện: Hồng Việt Anh – Nguyễn Phong Trương 25 Giao diện xem lớp môn học giáo viên phụ trách SV thực hiện: Hoàng Việt Anh – Nguyễn Phong Trương 26 CHƯƠNG III : KẾT LUẬN Nội dung chưa làm được: Phân cấp quyền admin theo chức nhiệm vụ Thiết kế vụng Chưa làm số chức sau Chưa hiển thị danh sách lớp học sinh viên dăng ký Chức tìm kiếm sinh viên … Xây dựng phần trợ giúp hướng dẫn sử dụng Kinh nghiệm thu được: Có hội để vận dụng kiến thức lý thuyết nhà trường áp dụng vào thực tiễn Củng cố kiến thức môn học: công cụ phần mềm, phân tích thiết kế hệ thống thơng tin, ngơn ngữ lập trình… Hiểu mơ hình MVC, ORM, lập trình hướng đối tượng với Ruby On Rails, xây dựng ứng dụng web với Rrails framework Hướng phát triển Đề tài phát triển theo hướng sau tương lai gần: Bổ sung hoàn thiện thêm giao diện người dùng: Thiết kế lập trình thêm số chức khác phục vụ, thu hút sinh viên đến với website Chẳng hạn, đưa thêm trang, chẳng hạn như: tin tức kiện, để sinh viên dễ dàng đăng ký môn học tới Bổ sung chức quản lý website: - Quản lý phân quyền Admin: cho phép quản lý phân quyền admin theo nhiệm vụ chức riêng - Báo cáo thống kê: phát triển hoàn thiện thêm chức báo cáo số lượng học sinh đăng ký, thu chi, thống kê doanh số - Bình luận đánh giá mơn học: giúp sinh viên bình luận đánh giá mơn học SV thực hiện: Hồng Việt Anh – Nguyễn Phong Trương 27 DANH MỤC TÀI LIỆU THAM KHẢO [1] Christian Hellsten Jarkko Laine, Apress Beginning Ruby on Rails Ecommerce from novice to professional 2006 [2] Sam Ruby , Dave Thomas David Heinemeier Hansson, Agile Web Development with Rails 4th Edition [3] Robert Feldt,Lyle Johnson Michael Newmann, Ruby Developer ‘s Guide SV thực hiện: Hoàng Việt Anh – Nguyễn Phong Trương 28 ... website Thật sự, lý Ruby on Rails làm trang web dễ dàng Các tính Ruby on Rails Ruby on Rails bao gồm tính giúp tăng hiệu suất làm việc Sau số tính nó: Kiến trúc MVC: Ruby on Rails dựa kiến trúc... gồm Action Cotroller, Action View, Controller Dispatch 5.1.1 Action Controller Là thành phần quản lý controller ứng dụng Rails Framework Action Controller xử lý yêu cầu đến từ ứng dụng Rails, ... 10 Ruby on Rails gì? 10 Các tính Ruby on Rails .11 Kiến trúc MVC 12 Các thành phần Rails .13 Tạo project Rails 14 CHƯƠNG II: CHƯƠNG TRÌNH DEMO