1. Trang chủ
  2. » Luận Văn - Báo Cáo

XÂY DỰNG WEBSITE QUẢN lý GIA PHẢ

92 112 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 92
Dung lượng 6,6 MB

Nội dung

Ở các gia đ nh gia phả đư c xem như là một cái g đó rất thiêng liêng và quý báu, v nó ghi lại thông tin, lịch sử của toàn bộ gia tộc qua các thời kỳ, thế hệ trong họ, nhưng thường gia ph

Trang 1

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

KHOA CÔNG NGHỆ PHẦN MỀM

KHOÁ LUẬN TỐT NGHIỆP

XÂY DỰNG WEBSITE QUẢN LÝ GIA PHẢ

Giảng viên hướng dẫn : TS Vũ Đức Lung

Sinh viên thực hiện: Trần Đức Anh Tuấn 06520541

Phan Lâm Hoàng Việt 06520568 Lớp : Công nghệ phần mềm

Khoá : 01

TP Hồ Chí Minh, 06 tháng 01 năm 2012

Trang 2

LỜI MỞ ĐẦU

Việt Nam là một nước có nền văn hoá đậm đà bản sắc dân tộc,có truyền thống yêu nước nồng nàn, uống nước nhớ nguồn Cội nguồn dân tộc là cái nôi, bản sắc của một đất nước, còn gia phả là cái nôi của các dòng họ, là nơi lưu giữ những giá trị tinh thần rất thiêng liêng Việc lưu giữ và phổ biến cho các thành viên trong một dòng họ là việc rất cần thiết và ý nghĩa, nó giúp cho người trong dòng họ biết rõ về tổ tiên của họ, lịch sử văn hoá sinh hoạt của dòng họ

Những thông tin này thông thường đư c các thành viên trong gia phả tham khảo, tra cứu ở những vị tr có th trong một t nh thành, trong nước và thậm ch là t các nước khác trên thế giới Ch nh v vậy h nh thức quản lý hiệu quả nhất là phải thông qua một website và việc nghiên cứu đ có th thiết kế một website về gia phả với tốc độ xử lý nhanh và một giao diện đ p , đơn giản nhưng bắt mắt với người d ng và thân thiện d sử d ng là rất cần thiết

Hiện nay có rất nhiều website về gia phả, nhưng chúng phần lớn đư c xây dựng tự phát, vẫn còn những hạn chế nhất định về tốc độ xử lý c ng như giao diện V thế, cần thiết phải có những nghiên cứu về cấu trúc, dữ liệu, và các phương pháp hi n thị, quản lý, t m kiếm về gia phả trước khi muốn có một website với giao diện và các chức năng như mong muốn

Trang 3

LỜI CẢM ƠN

Chúng em xin gửi lời cảm ơn sâu sắc đến khoa Công Nghệ Phần Mềm, thầy V Đức Lung đã giúp đỡ chúng em hoàn thành luận án này Khoa Công Nghệ Phần Mềm đã cung cấp cho chúng em các kiến thức nền tảng và chuyên sâu, giúp chúng em dễ dàng phát tri n trên con đường sự nghiệp và tương lai của m nh Chúng em xin cảm ơn các giảng viên của khoa Công Nghệ Phàn Mềm nói riêng và các giảng viên của trường nói chung đã cung cấp cho chúng

em các kiến thức hữu ch và quý báu trên con đường học tập và tương lai

Đối với thầy V Đức Lung, thầy đã tận t nh giúp đỡ chúng em hoàn thành tốt luận văn này, thầy đã động viên và ủng hộ chúng em giúp chúng em

vư t qua các khó khăn trong suốt quá tr nh

Nhóm em c ng xin gửi lời tri ân sâu sắc đến gia đ nh, bạn bè những người luôn bên cạnh động viên, chia sẻ lúc khó khăn đ nhóm có đư c kết quả như ngày hôm nay

Tp Hồ Ch Minh, 06 tháng 01 năm 2012

Nhóm sinh viên thực hiện Phan Lâm Hoàng Việt Trần Đức Anh Tuấn

Trang 4

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

Trang 5

NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

Trang 6

MỤC LỤC Chương 1: Tổng quan đề tài 1

1.1 Lý Do Chọn Đề Tài 1

1.2 Mục Tiêu Đề Tài 2

1.3 Đối Tượng Và Phạm Vi Nghiên Cứu 2

1.4 Phương Pháp Thực Hiện 2

1.5 Các Đề Tài Hay Ứng Dụng Tương Tự 2

Chương 2: Cơ Sở Lý Thuyết 4

2.1 Kiến Thức Về Gia Phả 4

2.1.1 Cấu Trúc Một Gia Phả 5

2.1.2 Cấu Trúc Dữ Liệu Cho Phả Đồ 5

2.2 Phần Lưu Cache 8

2.3 Tìm hiểu về Google Visualization: Organizational Chart 8

2.3.1 Cấu trúc dữ liệu của Org Chart 9

2.3.2 Các thuộc t nh của Org Chart 10

2.3.3 Tuỳ chọn cấu h nh Org Chart 10

2.3.4 Các phương thức của Org Chart 11

2.3.5 Các sự kiện của Org Chart 11

2.3.6 T m hi u về Datatable và các phương thức cơ bản của nó 12

2.4 Tìm Hiểu CodeIgniter 18

2.4.1 Giới Thiệu 18

2.4.2 Ưu Đi m 19

2.4.3 Khuyết Đi m 19

2.4.4 Cài đặt 20

2.4.5 Mô hình Model-View-Controller 20

2.4.6 CodeIgniter URL 25

2.4.7 Các thư viện 25

Chương 3: Phân tích yêu cầu Website 26

3.1 Yêu cầu chức năng 26

3.2 Yêu cầu phi chức năng 29

3.2.1 Tổng quan các yêu cầu phi chức năng 29

3.2.2 Chi tiết các yêu cầu 30

3.3 Mô hình hóa yêu cầu 32

3.3.1 Cấu trúc Tác nhân (Actors) 32

3.3.2 Cấu trúc use case 33

3.3.3 Sơ đồ tuần tự các use case (sequence diagram) 34

Chương 4: Phân Tích Thiết Kế Hệ Thống Website 38

4.1 Mô hình ERD 38

4.1.1 Mô tả các thực th 38

4.1.2 Danh sách các bảng trong csdl 41

4.1.3 Mô tả các bảng dữ liệu 42

4.2 Mô hình ER 45

4.2.1 Ràng buộc miền giá trị 45

4.2.2 Ràng buộc liên bộ 46

4.2.3 Ràng buộc liên thuộc t nh 47

4.3 Mô hình DFD 48

Trang 7

4.3.1 Sơ đồ dòng dữ liệu 48

4.3.2 Mô Tả Ô Xử Lý 57

4.4 Sơ đồ giao diện Website 66

4.4.1 Sơ đồ Website ph a quản trị 66

4.4.2 Sơ đồ Website ph a người d ng 67

Chương 5: Cài đặt và thử nghiệm Website 69

5.1 Môi trường phát triển 69

5.2 Cài đặt 69

5.3 Thử nghiệm 71

Chương 6: Đánh giá và kết luận 80

6.1 Đánh giá kết quả đạt được 80

6.2 Ưu điểm của đề tài 80

6.3 Hạn chế của đề tài 80

6.4 Hướng phát triển của đề tài 80

Trang 8

DANH MỤC CÁC BẢNG, SƠ ĐỒ, HÌNH Các Bảng

Bảng 2-1: Các thuộc t nh của Org Chart 10

Bảng 2-2: Tuỳ chọn cấu h nh Org Chart 10

Bảng 2-3: Các phương thức của Org Chart 11

Bảng 2-4: Các sự kiện của Org Chart 11

Bảng 2-5: Các phương thức của Datatable 13

Bảng 2-6: Các thư viện của CodeIgniter 25

Bảng 3-1: Chức năng người quản lý 27

Bảng 3-2: Chức năng người d ng 27

Bảng 3-3: Các yêu cầu phi chức năng 29

Bảng 4-1: Thực th Users 39

Bảng 4-2: Thực th gia phả 39

Bảng 4-3: Thực th danh sách gia phả 40

Bảng 4-4: Thực th cache 40

Bảng 4-5: Thực th liên hệ 40

Bảng 4-6: Thực th file 40

Bảng 4-7: Thực th admin 41

Bảng 4-8: Thực th thông tin chung 41

Bảng 4-9: Danh sách các bảng trong csdl 41

Bảng 4-10: Table users 42

Bảng 4-11: Table cache 42

Bảng 4-12: Table ds_giapha 42

Bảng 4-13: Table tb[i] 43

Bảng 4-14: Table file 43

Bảng 4-15: Table admin 44

Bảng 4-16: Table lienhe 44

Bảng 4-17: Table thontinchung 44

Bảng 4-18: Bảng tầm ảnh hưởng miền giá trị R1 45

Bảng 4-19: Bảng tầm ảnh hưởng miền giá trị R2 46

Bảng 4-20: Bảng tầm ảnh hưởng liên bộ R1 46

Bảng 4-21: Bảng tầm ảnh hưởng liên bộ R2 46

Bảng 4-22: Bảng tầm ảnh hưởng liên bộ R3 46

Bảng 4-23: Bảng tầm ảnh hưởgn liên bộ R4 47

Bảng 4-24: Bảng tầm ảnh hưởng liên bộ R5 47

Bảng 4-25: Bảng tầm ảnh hưởng liên bộ R6 47

Bảng 4-26: Bảng tầm ảnh hưởng liên thuộc t nh R1 47

Bảng 4-27: Quản lý gia phả 57

Bảng 4-28: Cập nhật thông tin 57

Bảng 4-29: T m kiếm thông tin 57

Bảng 4-30: Thêm thành viên 57

Bảng 4-31: Thêm dòng họ 58

Bảng 4-32: Lưu Cache 58

Bảng 4-33: Ki m tra thông tin user 58

Bảng 4-34: Thêm user 58

Trang 9

Bảng 4-35: Thêm thông tin chung 58

Bảng 4-36: Them thông tin phả ký 59

Bảng 4-37: Thêm thông tin tộc ước 59

Bảng 4-38: Thêm thông tin thuỷ tổ 59

Bảng 4-39: Thêm thông tin hương hoả 59

Bảng 4-40: Ki m tra thông tin thành viên 60

Bảng 4-41: Cập nhật thành viên 60

Bảng 4-42: Ki m tra thông tin dòng họ 60

Bảng 4-43: Cập nhật dòng họ 61

Bảng 4-44: Ki m tra thông tin chung 61

Bảng 4-45: Cập nhật thông tin chung 61

Bảng 4-46: Ki m tra thông tin phả ký 61

Bảng 4-47: Cập nhật phả ký 62

Bảng 4-48: Ki m tra thông tin tộc ước 62

Bảng 4-49: Cập nhật tộc ước 62

Bảng 4-50: Ki m tra thông tin thuỷ tổ 63

Bảng 4-51: Cập nhật thuỷ tổ 63

Bảng 4-52: Ki m tra thông tin hương hoả 63

Bảng 4-53: Cập nhật hương hoả 63

Bảng 4-54: Ki m tra thông tin thành viên 64

Bảng 4-55: Xuất thông tin thành viên 64

Bảng 4-56: Ki m tra thông tin dòng họ 64

Bảng 4-57: Xuất thông tin dòng họ 65

Bảng 5-1: Đánh giá các chức năng website 78

Các Sơ Đồ Sơ đồ 2-1: Dòng chảy dữ liệu bên trong CI 23

Sơ đồ 3-1: Cấu trúc tác nhân (actor) 32

Sơ đồ 3-2: Cấu trúc use case các chức năng ch nh của website 33

Sơ đồ 3-3: Use case đăng nhập 34

Sơ đồ 3-4: Use case đăng xuất 34

Sơ đồ 3-5: Sequence diagram thêm gia phả 35

Sơ đồ 3-6: Sequence diagram ch nh sửa gia phả 35

Sơ đồ 3-7: Sequence diagram xoá gia phả 36

Sơ đồ 3-8: Sequence diagram xóa user (ch dành cho người quản trị ) 36

Sơ đồ 3-9: Sequence diagram t m kiếm gia phả 37

Sơ đồ 3-10: Sequence diagram đăng ký tài khoản 37

Sơ đồ 4-1: Mô hình ERD 38

Sơ đồ 4-2: Mô hình ER 45

Sơ đồ 4-3: Sơ đồ ngữ cảnh 48

Sơ đồ 4-4: Dòng dữ liệu cấp 1 48

Sơ đồ 4-5: Cập nhật thông tin 49

Sơ đồ 4-6: Quản lý user 49

Sơ đồ 4-7: T m kiếm thông tin 50

Sơ đồ 4-8: Thêm thành viên 50

Sơ đồ 4-9: Thêm dòng họ 51

Trang 10

Sơ đồ 4-10: Thêm thông tin gia phả 52

Sơ đồ 4-11: Thêm thông tin chung gia phả 53

Sơ đồ 4-12: Thêm thông tin phả ký 53

Sơ đồ 4-13: Thêm thông tin tộc ước 54

Sơ đồ 4-14: Thêm thông tin thuỷ tổ 54

Sơ đồ 4-15: Thêm tông tin hương hoả 55

Sơ đồ 4-16: Lưu Cache 55

Sơ đồ 4-17: T m kiếm thành viên 56

Sơ đồ 4-18: T m kiếm dòng họ 56

Sơ đồ 4-19: Ph a quản trị 66

Sơ đồ 4-20: Ph a người d ng 67

Sơ đồ 4-21: Chi tiết ga phả 68

Các Hình Ảnh Hình 2-1: Treeview dạng cây thư m c 7

Hình 2-2: Phả đồ theo chiều ngang 8

Hình 2-3: Organization Chart 9

Hình 2-4: Mô hình MVC 21

Hình 2-5: Cấu trúc CodeIgniter 22

Hình 5-1: Tạo cơ sở dữ liệu 69

Hình 5-2: Import cơ sở dữ liệu 70

Hình 5-3: Cấu h nh cơ sở dữ liệu 70

Hình 5-4: Trang chủ 71

Hình 5-5: Trang kho gia phả 72

Hình 5-6: Trang quản lý gia phả 73

Hình 5-7: Phả đồ nằm dọc 74

Hình 5-8: Phả đồ nằm ngang 74

Hình 5-9: Menu quản lý thành viên 75

Hình 5-10: Chi tiết thành viên 75

Hình 5-11: Thêm thành viên 76

Hình 5-12: Ch nh sửa thành viên 76

Hình 5-13: Giao diện đăng nhập admin 77

Hình 5-14: Giao diện quản lý trong admin 77

Các từ viết tắt

Trang 11

Chương 1: Tổng quan đề tài

1.1 Lý Do Chọn Đề Tài

Gia phả là bản ghi chép tên họ, tuổi tác, vai trò và công đức của cha m , ông bà, tiên tổ trong thời đại mà họ đã sinh ra và lớn lên của một gia đ nh hay một dòng họ Gia phả có th đư c coi như một bản sử ký của một gia đ nh hay một dòng họ Gia phả có khi gọi là Phổ ký, có khi là Phổ truyền

Ở Việt Nam, t c làm gia phả phát tri n mạnh ở hai miền Bắc và Trung, miền Nam rất t gia đ nh làm gia phả ở đấy còn đư c gọi là "gia phổ" và biến thái thành "tông chi" tức tờ "tông chi tông đồ" Ở các gia đ nh gia phả đư c xem như là một cái g đó rất thiêng liêng và quý báu, v nó ghi lại thông tin, lịch sử của toàn bộ gia tộc qua các thời kỳ, thế hệ trong họ, nhưng thường gia phả xưa ch có một bản gốc truyền t đời này sang đời kia, cho nên rất khó truyền đạt hết thông tin nội dung của họ tộc cho toàn th con cháu đời sau biết Đ nhiều người có th biết rõ về lich sử của dòng họ m nh, thông tin về ông, bà tổ tiên và con cháu đ nắm thông tin và biết rõ mối quan hệ của m nh với những người trong c ng họ tộc Ngày nay công nghệ thông tin phát tri n rất nhanh, việc sử d ng mạng internet là rất phổ biến, cho nên việc đưa thông tin của t ng họ tộc lên một trang web đ mọi người có th xem và nắm bắt thông tin là một việc hết sức cần thiết và ý nghĩa, đó là lý do thứ nhất của đề tài

Gia phả là gia bảo,là tài sản không ch của riêng dòng tộc mà còn của quốc gia Trong thời loạn lạc, thân lo không nổi huống chi là gia phả Ngày nay, chúng ta đang ở thời b nh trị, ổn định Thiết nghĩ việc làm trước hết là phải khôi ph c truyền thống văn hoá lâu đời đã bị xâm hóa ngiêm trọng sau những thời thăng trầm của đất nước Giữ g n và phát huy gia phả là gữi lấy cho con cháu đời sau một mảng văn hóa độc đáo gắn liền với đạo hiếu.Ngày nay, không t gia đ nh vẫn còn giữ đư c những cuốn gia phả t xa xưa Song việc dựng lại gia phả dòng họ trước đây và viết tiếp về thế hệ m nh cho con cháu lưu lại của nhiều gia đ nh, dòng họ đang gặp không t khó khăn Chưa nói đến việc con cháu của các dòng tộc sinh sống rải rác khắp mọi miền đất nước, c ng như ở nước ngoài, nên việc xây dựng gia phả dòng tộc bằng những phương pháp cổ đi n như viết sách là không mấy khả thi và ch nh xác nữa C ng như những người con trong dòng tộc có th bị thất lạc hoặc quên đi những mối quan hệ trong dòng tộc, ngày dỗ ông bà… Đây là lý do thứ hai

Trong cuộc sống hiện nay , có rất nhiều người m nh gặp c ng họ với

m nh, có th c ng quê quán nhưng m nh không biết rõ có mối quan hệ với họ như thế nào, có th là anh em họ, con cháu , chú bác Đ có th t m kiếm và xác thực các mối quan hệ đó có liên quan như thế nào chúng ta cần phải xây dựng một hệ thống lưu trữ và xử lý thông tin của gia phả các dòng họ, đ chúng ta có th lên tra cứu thông tin nguồn gốc của m nh, t m mối quan hệ với những người m nh cần muốn biết như thế nào, đây c ng ch nh là lý do cuối cùng

V các l do trên, chúng em đã chọn đề tài Xây Dựng Hệ Thống Website Gia Phả Việt Nam trên nền tảng web

Với tâm huyết muốn bảo tồn và phát huy gia phả của các dòng họ ở Việt Nam, chúng tôi đã làm Website quản lý Gia Phả này với m c đ ch sau:

Trang 12

 Xây dựng một nơi lưu trữ các gia phả của các dòng họ ở Việt Nam

 T ng dòng họ c ng ghi lại gia phả của dòng họ m nh vào c ng một nơi trên mạng toàn cầu(Internet) T ng người sẽ góp t ng mảng gia phả của dòng họ m nh, kết quả chúng ta sẽ có một kho gia phả Đó là một tài sản tinh thần không nhỏ cho người Việt Nam chúng ta

 Những dòng họ, những người con ở xa, nếu bị thất lạc thông tin

về gia tộc có th dễ dàng t m lại

1.2 Mục Tiêu Đề Tài

 M c tiêu đầu tiền là có th đem thông tin t người d ng đ tạo ra 1 gia phả và lưu trữ trên mạng đ mọi người có th truy cập đ xem và cập nhật thông tin về dòng họ của m nh

 M c tiêu thứ hai là có th xử lý kỹ thuật đ hỗ tr người d ng nhập thông tin gia phả và t m kiếm thông tin Hệ thống website phải có khả năng lưu trữ và xử lý thông tin đư c nhiều dòng họ, và thời gian đ xứ

lý ph c v cho các m c đ ch như nhập liệu thông tin, lưu trữ thông tin,

xử lý ch nh sửa, t m kiếm trong họ tộc phải đủ nhanh

1.3 Đối Tượng Và Phạm Vi Nghiên Cứu

Đối tư ng nghiên cứu ở đây là các thông tin gia phả, phả đồ của các họ tộc Phạm vi nghiên cứu ch thực hiện trên các gia phả ở Việt Nam, bao gồm 3 miền Bắc, Trung, Nam Trong đó dữ liệu thử nghiệm đư c lấy t một số dòng

họ có thật ngoài đời và một số gia phả t các trang web gia phả khác Chúng ta

ch đưa vào thử nghiệm ở một khoảng số đời nhất định với thông tin khoảng

10 trang

1.4 Phương Pháp Thực Hiện

Phương pháp thực hiện là đầu tiên t m hi u về các thông tin gia phả, về các công tr nh có liên quan, về các lý thuyết liên quan Sau đó t m hi u các kỹ thuật quản lý gia phả, phân tích các nhu cầu người d ng đ t đó dẫn đến phân

t ch thiết kế chương tr nh thử nghiệm Cuối c ng thử nghiệm chương tr nh thiết kế với các chức năng mong đ i và đánh giá kết quả đ đi đến kết luận

1.5 Các Đề Tài Hay Ứng Dụng Tương Tự

Ngày xưa, người ta lưu giữ các gia phả họ tộc dưới dạng các cuộn giấy Ngày nay, các gia phả đư c lưu giữ dưới dạng quy n sách chứa thông tin của các thành viên trong dòng họ Việc lưu giữ dưới dạng cuộn giấy và sách sẽ khó

mà phổ biến cho mọi người trong tộc biết đư c và không linh động khi mỗi người ở những nơi khác nhau Cho nên việc đem thông tin gia phả đ lưu trên mạng đ có th phổ biến cho các thành viên của dòng họ, họ có th d dàng năm bắt thông tin của họ tộc m nh

Đ quản lý các gia phả họ tộc trên các website, ta cần đưa các thông tin

về dòng họ, thông tin thành viên và các thông tin thêm khác về dòng họ lưu trữ dưới dạng cơ sở dữ liệu trên server Khi cần th ta có th truy xuất lấy, cập nhật hoặc t m kiếm các thông tin

Trang 13

Hiện nay có rất nhiều trang web về gia phả, nhưng thường là các trang gia phả của riêng các họ tộc tự xây dựng riêng cho dòng họ, và có một số t các trang có khả năng quản lý và lưu trữ nhiều gia phả v d như 2 trang web phahe.vn, vietnamgiapha.com Hai trang web này có lẽ hiện thời là nổi bật nhất trong việc quản lý hệ thống các gia phả, tuy nhiên những trang này vẫn có những đi m mạnh yếu khác nhau:

 Site vietnamgiapha.com: thì phần vẽ phả đồ chưa đ p lắm và chưa có phần phả đồ theo chiều ngang, giao diện chưa đư c bắt mắt và giao diện ch nh bố c c rối rắm

 Site phahe.vn: giao diện khá đ p bắt mắt, phần phả đồ theo chiều dọc

đ p và có tuỳ biến đư c, nhưng vẫn thiếu phả đồ chiều ngang, đặc biệt

xử lý rất chậm, thời gian đáp ứng đối với phả đồ với số lư ng người lớn thường rất lâu và hay bị lỗi limit time out

V thế ở website của ta, chúng ta sẽ tập trung vào phần giao diện cho phả đồ, phần quan trọng và th hiện tổng quan gia phả, và phần tốc độ xử lý Chúng ta

sẽ t m cách cải thiện tốc độ chương tr nh và t m cách vẽ phả đồ 1 cách trực quan và đ p

Trang 14

Chương 2: Cơ Sở Lý Thuyết

2.1 Kiến Thức Về Gia Phả

2.1.1 Nguồn Gốc Của Gia Phả

Gia phả là bản ghi chép tên họ, tuổi tác, vai trò và công đức của cha m , ông bà, tiên tổ trong thời đại mà họ đã sinh ra và lớn lên của một gia đ nh hay một dòng họ Gia phả có th đư c coi như một bản sử ký của một gia đ nh hay một dòng họ Gia phả có khi gọi là Phổ ký, có khi là Phổ truyền Các nhà Tông thất (dòng dõi vua quan), có khi gọi gia phả của vương triều m nh hay gia tộc m nh bằng t ngữ trân trọng hơn: Ngọc phả, Thế phả

Tại các nước phương đông t lâu đã chịu ảnh hưởng của văn hoá của Đạo( Khổng Tử ) , các thế hệ sau trong dòng họ hay vương triều phải giữ đạo Trung đạo Hiếu Việc xây dựng và lưu truyền gia phả đư c xem là một cách ghi nhớ công ơn tổ tiên, gây dựng lòng tự hào trong dòng tộc.Ở Tây phương, người ta

có tập t c làm cây phả hệ, tương tự như Tông đồ của người Hoa hay người Việt Một Tông đồ, một Gia phả, một Phả ký, một Phổ truyền d đơn sơ hay súc t ch c ng đều trở nên những tài liệu quý báu cho nhả xã hội học, sử học về sau Nó còn có th hữu d ng cho những nghiên cứu về tâm lý, về di truyền học, y học, huyết học Môn học nghiên cứu về gia phả là gia phả học

Tại Việt Nam, gia phả sơ giản ghi chép tên cúng cơm, ngày giỗ và địa

đi m an táng của ông cha Theo các nhà sử học phỏng đoán th gia phả đã xuất hiện t thời Sĩ Nhiếp làm thái thú ở huyện Giao Ch ( thời H ng Vương), hoặc gần hơn tức là t thời Lý Nam Đế (khoảng nǎm 476-545) Nhưng phải đến thời nhà Lý, Nhà Trần mới xuất hiện những cuốn tộc phả, thế phả (ghi cả thế thứ, tông t ch toàn họ), phả ký (ghi lại hành trạng, sự nghiệp của tổ tiên) Mới đầu gia phả xuất hiện ch trong Hoàng tộc c ng giới quan lại, nhà Lý có Hoàng Triều Ngọc Điệp - năm 1026; nhà Trần có Hoàng Tông Ngọc Điệp, nhà Lê có Hoàng Lê Ngọc Phả C ng với sự xuất hiện các gia phả của Hoàng tộc là gia phả của các danh gia, quan lại và cứ thế lan rộng, phổ biến ghi chép gia phả trong nhân dân Trước đây, gia phả chủ yếu đư c ghi chép bằng chữ Hán-Nôm, nhưng số người giỏi không nhiều, qua nhiều năm chiến tranh, nhiều bộ, cuốn gia phả của nhiều dòng họ c ng mất dần

T c làm gia phả phát tri n mạnh ở hai miền Bắc và Trung, miền Nam rất t gia đ nh làm gia phả ở đấy còn đư c gọi là "gia phổ" và biến thành "tông chi" tức tờ "tông chi tông đồ" Trong gia phả, người đứng đầu ngành trưởng (trưởng họ, trưởng tộc) có bổn phận ghi hết những chi tiết về thân th ch và dòng dõi; những người con khác sao lại bản gia phả ch nh đó Các gia đ nh giữ

g n kỹ lưỡng và truyền t đời cha tới đời con "Họ" theo nghĩa gốc có liên hệ với nhà và dưới chế độ phong kiến, nối kết con người với đất ruộng: một mái nhà, một gia đ nh, một họ Họ và tên của một người định vị tr của cá nhân người đó trong xã hội, xác định cá th trong một toàn th

Trang 15

2.1.1 Cấu Trúc Một Gia Phả

Gia phả đư c coi là hoàn ch nh trước hết phải là một gia phả đư c ghi chép rõ ràng, chữ nghĩa chân phương, có nội dung cơ bản như sau:

1 Thông tin rõ ràng về người sao l c (biên soạn)

2 Nêu nguồn gốc xuất xứ của gia tộc, là phả ký hay là gia sử

3 Ghi Thuỷ Tổ của dòng họ

4 Ghi t ng phả hệ phát sinh t Thuỷ Tổ cho đến các đời con cháu sau này Có phần phả đồ, là cách vẽ như một cây, t ng gia đ nh là t ng nhánh, t gốc đến ngọn cho dễ theo dõi t ng đời Đối với tiền nhân có các m c sau đây:

 Tên: Gồm tên huý, tên tự, thuỵ hiệu và tên gọi thông thường Thuộc đời thứ mấy? Con trai thứ mấy của ai?

 Ngày tháng năm sinh (mất), giờ (nếu nhớ) Mộ nguyên táng, cải táng, di táng tại đâu? Thời gian nào?

 Học hành, thi cử, đậu đạt, chức v , địa vị lúc sinh thời và truy phong sau khi mất

 V : chánh thất, kế thất, thứ thất Họ tên, con thứ mấy của ai? Quê ở đâu? Các m c ngày, tháng, năm sinh, ngày, tháng, năm mất, tuổi thọ, mộ, đều ghi t ng người như trên Nếu có thi đậu hoặc có chức tước, địa vị, đư c ban thưởng riêng th ghi thêm

 Con: Ghi theo thứ tự năm sinh, nếu nhiều v th ghi rõ con bà nào? Con gái th cước chú kỹ: con gái thứ mấy, đã lấy chồng th ghi tên họ chồng, năm sinh, con ông bà nào, quê quán, đậu đạt, chức tước? Sinh con mấy trai mấy gái, tên g ? (Con gái có cước chú còn con trai không cần v có m c riêng t ng người thuộc đời sau)

 Những gương sáng, những t nh cách, hành trạng đặc biệt, hoặc những công đức đối với làng xã, họ hàng, xóm giềng Những lời dạy bảo con cháu đời sau (di huấn), những lời di chúc

 Ngoài những m c ghi trên, gia phả nhiều họ còn lưu lại nhiều sự

t ch đặc biệt của các vị tiên tổ, những đôi câu đối, những áng văn hay, những bài thuốc gia truyền đó là những tài sản quý giá mà chúng ta đ thất truyền, chưa biết khai thác

5 Tiếp theo, là tộc ước Đây là những quy định-quy ước trong tộc họ, đặt

ra nhằm ổn định tộc họ, có công thưởng, có tội phạt, tất nhiên là phải

ph h p với luật pháp chung

6 Với một tộc họ lớn, có th có nhiều tông nhánh, chi phái Phần này sẽ ghi những thông tin chi phái, ai là bắt đâu chi, chi hiện ở đâu, nhà thờ chi

7 Những thông tin khác về tài sản hương hỏa, bản đồ các khu mộ tiền nhân

2.1.2 Cấu Trúc Dữ Liệu Cho Phả Đồ

Đối với website gia phả th phân khúc vẽ phả đồ là khó và quan trọng nhất Phả đồ là một mô h nh cây gia phả đư c vẽ ra t các thông tin t ng người trong họ tộc Phả đồ c ng ch nh là cái quan trọng của gia phả, nh n vào phả đồ người ta có th nh n tổng quan về 1 dòng họ

Trang 16

Ở đây dữ liệu các thành viên không đư c lưu trữ trên 1 table duy nhất

mà là nhiều table Mỗi dòng họ khi đư c tạo ra th sẽ có đư c 1 table riêng đ lưu thông tin các người trong 1 dòng họ V ở đây khi vẽ cây gia phả theo chiều dọc chúng ta d ng giải thuật dựa trên đệ quy, nên nếu ch d ng 1 bảng lưu thành viên cho tất cả các dòng họ th thuật toán khi chạy sẽ rất chậm (dữ liệu có th lên tới hàng chuc ngàn records ), v thế chúng ta nên tách ra thành

t ng table riêng biệt cho mỗi dòng họ, mỗi dòng họ thường số thành viên tối

đa là dưới 1000 người, nên giải thuật đệ quy áp d ng ở trường h p này là khả thi và nhanh

Cấu trúc dữ liệu của một thành viên bao gồm các trường id, cha_id, level và các trường thông tin thêm khác Dựa vào trường id và cha_id đ xác định mối quan hệ cha con trong phả đồ, 1 id ch có 1 cha_id , 1 cha_id th có

th thuộc nhiều record khác, trường level d ng đ xác định đời thứ mấy của người đó đ d dàng truy xuất và xử lý các thao tác khác

Đối với phần phả đồ chúng ta có 2 dạng phả đồ: 1 dạng phả đồ theo chiều dọc giống như cây thư m c, và 1 dạng phả đồ thiều chiều ngang bao gồm nhiều ô vuông, mỗi ô vuông là 1 người

Đ vẽ phả đồ theo chiều dọc chúng ta sử d ng plugin treeview trong thư

viện jquery : $('container').treeview( ) Dữ liệu đầu vào của treeview plugin

là dưới dạng mô h nh DOM phân cấp, giống như tập h p lồng nhau (Nested List Model) Do đó đ vẽ ra cây gia phả theo chiều dọc chúng ta phải chuy n

dữ liệu lưu trữ thành dữ liệu dưới dạng của treeview, mà đ tạo ra dữ liệu phân cấp lồng nhau chúng ta phải d ng đến thuật toán đệ quy đ tạo ra dữ liệu cần thiết

Cấu trúc dữ liệu dạng treeview đầu vào như sau:

<li><span>Nguyễn Văn Anh</span>

Cấu trúc dạng danh sách trong html, gồm các thẻ <li> và <ul>

Giải thuật đệ quy như sau:

Về phần phả đồ theo chiều ngang th ta d ng api vẽ bi u đồ của google có tên

là Organization Chart Đối với api này dữ liệu đầu vào của nó dưới dạng datatable chuẩn của google Datatable gồm các cột( colum ) và hàng (rows), cột đ tên các trường và hàng là các thực th Org Chart của google nhận dữ

Trang 17

liệu đầu vào là 1 datatbale bao gồm 3 cột: cột id, cột cha_id, và cột tooltip( chúng ta không d ng đến)

Ta phải tạo các cột trước:

data.addColumn('string', 'Name');

data.addColumn('string', 'Manager');

data.addColumn('string', 'ToolTip');

Đ tạo các hàng ta d ng hàm data.addRow( ['Bob', 'Jim', 'Bob Sponge'] );

Với data là dạng datatable của google Ở mỗi cột ta có 2 giá trị value và giá trị format value đ th hiện giá trị id và tên th hiện

V d :

Đ trả về dữ liệu dạng datatable theo dạng của google ta xử lý dữ liệu lấy t server và xữ lý chuỗi chuy n sang dạng đúng của datatable Dữ liệu trả về có dạng:

[

[{v:'Mike', f:'Mike<div style="color:red;

font-style:italic">President</div>'}, '', 'The President'],

[{v:'Jim', f:'Jim<div style="color:red;

font-style:italic">Vice President</div>'}, 'Mike', 'VP'],

Trang 18

Hình 2-2: Phả đồ theo chiều ngang

2.2 Phần Lưu Cache

Trong các bảng của chương tr nh có 1 bảng tên là cache Bảng này d ng

đ lưu trữ các chuỗi chứa thông tin của t ng dòng họ đư c xử lý theo dạng dữ liệu đầu vào của treeview và api google org chart

Việc sử d ng lưu trữ dữ liệu đã dựng sẵn góp phần làm tăng tốc độ chương

tr nh Người d ng khi truy xuất dữ liệu của phả đồ th công việc xử lý đ ra dữ liệu ph h p , không cần thực hiện mà ch việc đọc lên t bảng cache

2.3 Tìm hiểu về Google Visualization: Organizational Chart

Google có các project phát tri n các tool như các API đ vẽ các dạng

bi u đồ, các dạng bi u đồ rất đa dạng và phong phú bao gồm các dạng chart:

Trang 19

[{v:'Mike', f:'Mike<div style="color:red;

font-style:italic">President</div>'}, '', 'The President'],

[{v:'Jim', f:'Jim<div style="color:red;

font-style:italic">Vice President</div>'}, 'Mike', 'VP'],

chart.draw(data, {allowHtml:true});

}

</script>

2.3.1 Cấu trúc dữ liệu của Org Chart

Là 1 bảng với 3 trường cột, mà mỗi hàng đại diện cho 1 node trong bi u đồ orgchart:

 cột 0: là id của node Nó phải là duy nhất trong các nodes, có th chứa các ký tự, bao gồm khoảng trắng Nó sẽ hiện lên trên node Bạn có th

Trang 20

thiết lập ki u th hiện trên node nhưng giá trị của node vẫn là giá trị của

Mỗi node có th có 1 node cha hoặc không có, và có th có nhiều node con

2.3.2 Các thuộc tính của Org Chart

Bảng 2-1: Các thuộc t nh của Org Chart

Tên thuộc

tính

slectedStyle Datatable row Thiết lập style bên trong cho 1 node khi đư c

chọn select Bạn phải thiết lập

allowHtml=true và phải trước hàm draw( ),

nó sẽ overide lên tuỳ chọn c trước

V d : myDataTable.setRowProperty(2,

'selectedStyle', color:#00FF00');

'background-style Datatable row Thiết lập stye bên trong cho các node Bạn

phải thiêt lập trước hàm vẽ draw( )

V d sau sẽ override màu của node:

'border: 1px solid green');

2.3.3 Tuỳ chọn cấu hình Org Chart

Bảng 2-2: Tuỳ chọn cấu h nh Org Chart

allowCollapse boolean false Doubleclick sẽ xoá đi node đó

và các node con của nó

allowHtml boolean false Nếu giá trị là true, tên tron

node có chứa thẻ Html sẽ đư c

Tên class gán cho các node

Đế thao tác CSS trên các tên class này

selectedNodeClass string Tên class

mặc định

Tên class gán cho node đư c chọn Thao tác CSS cho các node nay thông qua tên class

Trang 21

slectionColor string '#d6e9f8' Màu nền của node đư c chọn Size string 'medium' Các size 'small', medium',

'large'

2.3.4 Các phương thức của Org Chart

Bảng 2-3: Các phương thức của Org Chart

collapse(row, collapsed) None Huỷ hoặc mở rộng một node.Với

các tham số:

+row: ch số hàng

+collapsed: true hoặc false

draw(data, options) None Vẽ bi u đồ org chart

getChildrenIndexes(row) Mảng số

number

Trả về 1 mảng ch số của các node con

hàng

2.3.5 Các sự kiện của Org Chart

Bảng 2-4: Các sự kiện của Org Chart

allowCollapse đư c gán

là true và người d ng doubleclick lên 1 node

+collapsed: 1 giá trị true false cho huỷ hoặc mở rộng 1 node

+row: ch số hàng (t nh

t 0) onmouseover Khi người d ng rê chuột

t o) của node đư c out

cho các hàm bên ngoài gọi.Nếu muốn gắn với

None

Trang 22

chart, và gọi sau khi draw, bạn nên thiết lập 1 listener cho sự kiện trước khi gọi hàm draw,

và gọi phương thức sau khi sự kiện xảy ra

2.3.6 Tìm hiểu về Datatable và các phương thức cơ bản của nó

Lớp Datatable th hiện 1 bảng các giá trị 2 chiều độc lập Đ tạo 1 bảng copy và ch đọc t 1 DataTable, chúng ta cần d ng đến DataView.Mỗi cột trong DataTable đư c gán 1 ki u dữ liệu , với nhiều thuộc t nh tuỳ chọn bao gồm ID,label và chuỗi pattern.Bạn có th gán các thuộc t nh tuỳ chọn (cặp name/value) đối với bất kỳ ô, hàng, cột hoặc cả table

Hàm khởi tạo: DataTable(opt_data, opt_version)

+tham số opt_data:

Dữ liệu đư c sử d ng đ khởi tạo cho table Dữ liệu có th là dạng JSON bằng cách gọi DataTable.toJSON( ) ở trên table, hoặc một đối tư ng javascript chứa dữ liệu đư c d ng cho khời tạo table Nếu tham số này không

có, một dữ liệu mới rỗng sẽ đư c đưa vào table

ở mỗi cột phải c ng ki u dữ liệu Mỗi cột có một mô tả bao gồm ki u

dữ liệu của no, 1 tên cho cột đó, và 1 ID Mỗi cell trong table giữ 1 giá trị Các cells có th có giá trị null, hoặc giá trị bởi giá trị cột đó

 Đ thêm 1 data rows sau khi gọi hàm khởi tạo, ta có th gọi hàm addRow( ) cho 1 hàng hoặc addRows( ) cho nhiều hàng Ta c ng có th gọi hàm addColumn( ) Có các phương xoá bỏ các hàng và cột, nhưng nên dùng DataView

 Nếu chúng ta thay đổi giá trị trog DataTable sau khi nó đưa dữ lệu qua hàm draw( ), thay đổi sẽ không xảy ra ngay Chúng ta phải gọi lại hàm draw( ) đ có tác d ng

V d :

Tạo 1 bảng DataTable với literal string:

var dt = new google.visualization.DataTable(

{

cols: [{id: 'task', label: 'Task', type: 'string'},

{id: 'hours', label: 'Hours per Day', type:

'number'}],

rows: [{c:[{v: 'Work'}, {v: 11}]},

{c:[{v: 'Eat'}, {v: 2}]},

{c:[{v: 'Commute'}, {v: 2}]},

Trang 23

{c:[{v: 'Watch TV'}, {v:2}]}, {c:[{v: 'Sleep'}, {v:7, f:'7.000'}]}

] },

0.6 )

Tạo 1 bảng DataTable với dữ liệu trống rỗng, sau đó thêm vào dữ liệu:

var data = new google.visualization.DataTable();

data.addColumn('string', 'Task');

data.addColumn('number', 'Hours per Day');

data.addRows([

['Work', 11], ['Eat', 2], ['Commute', 2], ['Watch TV', 2], ['Sleep', {v:7, f:'7.000'}]

Number Thêm 1 cột vào data table, và trả về ch

số của cột Tất cả các cells của cột mới

đư c gán giá trị null Hàm này có 2 chú ý:

Ki u thứ nhất:

+type: ki u dữ liệu của cột.Có th là 'string' 'number' 'boolean' 'date' 'datetime 'timeofday'

+opt_label: Chuỗi tên của cột, nếu không

đư c gán sẽ có giá trị rỗng +Opt_id: chuỗi duy nhất Giá trị rỗng mặc định

Ki u thứ hai:

+type: ki u dữ liệu cột +label: tên cột ki u chuỗi +id: ID của cột

+role: vai trò của cột +pattern: là một số hay ki u ngày đư c

th hiện bên trong cột addRow(opt_cellArray) Number Thêm một hàng vào bảng data, trả về ch

số của hàng mới +Opt_cellArray: một đối tư ng row, tho dạng Javascript notation xác định dữ liệu cho hàng mới Nếu tham số này không

có, sẽ thêm 1 hàng rỗng cuối bảng Tham

số này là mảng các giá trị cell: nếu ta ch muốn ch rõ giá trị của cell, hãy đưa ra

Trang 24

giá trị cell Nếu muốn ch định dạng giá trị định dạng và thuộc t nh cho cell, ta phải d ng đối tư ng cell Chúng ta có t

d ng chung giá trị và đối tư ng cell trên

c ng phương thức D ng null hay mảng rỗng cho 1 ô rỗng

addRows(numorArray) Number Thêm nhiều hàng vào bảng, giá trị trả về

là ch số c a hàng cuối Có th tạo những hàng rỗng

numOrArray: sô hoặc mảng +Number: ch định có bao nhiêu row

đư c thêm vào +Array: một mảng đối tư ng row d ng đ thiết lạp giá trị cho các hàng

là copy tất cả dữ liệu ngoại tr thuộc t nh của cell,table và cột Nghĩa là các thuộc

t nh không nguyên thuỷ đư c copy theo tham chiếu, thuộc t nh nguyên thuỷ sẽ copy theo giá trị

getColumnId(columnIndex) String Trả về giá trị ID của cột theo ch số cột getColumnLabel(columnIndex) String Trả về tên của cột

getColumnPattern(columnIndex) String Trả về dạng định dạng giá trị của cột

+columnIndex là 1 số >=0 và nhỏ hơn số

lư ng cột ( getNumberOfColumns( ) ) getColumnProperty(columnIndex) Object Trả về 1 map các thuộc t nh của cột Các

thuộc t nh đối tư ng trả về bới tham chiếu

columnIndex: số ch số cột đ lấy thuộc tính

getColumnProperty(columnIndex,

name)

Auto Trả về gia trị tên thuộc t nh hoạc null nếu

không có thuộc tinh gán cho cột Giá trị trả về khác nhau dựa vào thuộc t n +columnIndex: 1 số >=0 và nhỏ hơn số

lư ng cột +name: tên thuộc t nh dạng chuỗi getColumnRange( columnIndex) Object Trả về giá trị nhỏ và lớn nhất trong các

cột Có 2 thuộc t nh min max trả về Nếu không có giá trị th min và max = null columnIndex: 1 số >=0 và nhỏ hơn số

lư ng cột getColumnRole(columnIndex) String Trả về role của cột

getCoumnType(columnIndex) String Trả về ki u dữ liệu của cột

columnIndex: 1 số >=0 và nhỏ hơn số

lư ng cột

Trang 25

Giá trị trả về : 'string' 'number ' 'boolean' 'date' 'datetime' 'timeofday'

numbers

Trả về các ch số các hàng mà tr ng với giá trị filter Các ch số theo thứ tự tăng Output của hàm này có th d ng cho input của hàm DataView.setRows( ) đ thay đổi các hàng

Filters: 1 mảng đối tư ng mô t3 các cell

có giá trị h p với.Một ch số hàngđư c trả về nếu nó h p với các filters Mỗi filter là 1 đối tư ng với 1 số thuộc t nh của cột

getFrmattedValue(owIndex,

columnIndex)

String Trả về giá trị theo ki u định dạng của ô

với ch số hàng và cột rowIndex, ColumnIndex: 1 số >=0 và nhở hơn số hàng, số cột

getNumberOfColumns( ) Number Trả về số lư ng cột của bảng

gerNumberOfRows( ) Number Trả về số lương hàng của bảng

getProperties(rowIndex,

coumnIndex)

Object Trả về 1 map các thuộc t nh của ô ch

định Chú ý các thuộc t nh đối tư ng trả

về theo ki u tham số, thay đổi giá trị chúng th sẽ tha đổi giá trị chúng trong DataTable

+rowIndex: ch số hàng của cell +columnIndex: ch số cột c a cell getProperty(rowIndex,

columnIndex,name)

Auto Trả về giá trị tên thuộc t nh hoặc null nếu

không có thuộc tinh nào đư c thiết lập cho cell Ki u trả về dựa trên thuộc t nh +rowIndex, columnIndex: 1 số >=0 và nhỏ hơn số lư ng hàng,cột

+name: tên thuộc t nh dạng chuỗi getRowProperties(rowIndex) Object Trả về 1 map các thuộc t nh của hàng

Chú ý ki u trả về dạng tham chiếu sẽ thay đổi cả trong DataTable

rowIndex: ch số hàng đ lấy thuộc t nh getRowproperty(rowIndex, name) Auto Trả về giá trị tên thuộc t nh hoặc null nếu

không có thuộc tinh nào đư c thiết lập cho cell Ki u trả về dựa trên thuộc t nh +rowIndex: 1 số >=0 và nhỏ hơn số hàng +name: chuỗi tên thuộc t nh

getSortedRows(sortColumns) Mảng

Numbers

Trả về 1 bảng sắp xếp table mà không thay đổi thứ tự dữ liệu bên dưới Muốn

Trang 26

thay đổi thứ tự bên dưới th gọi hàm sort( ) Ta có th ch định sắp xếp theo nhiều cách dựa trên tham số sortColumn:

+1 số: sắp xếp dựa trên cột có ch số +1 đối tư ng: chứa ch số cột sắp xếp và

có tuỳ chọn tăng hay giảm +mảng số: sắp xếp theo mảng số +mảng đối tư ng: sắp xếp theo mảng đối

tư ng

Gá trị trả về là 1 mảng số,mỗi số là ch số của hàng Output có th d ng cho input của DataView.setRows( )

getTableProperties Object Trả về 1 map các thuộc t nh của tabe getTableProperty(name) Auto Trả về 1 già trị thuộc t nh hoặc nul nếu

thuộc t nh chưa đư c thiết lập cho table Name: tên thuộc t nh

getValue(rowIndex, columnIndex) Object Trả về giá trị của cell

rowIndex, columnIndex: 1 số >=0 và nhỏ hơn số hàng, số cột

Giá trị trả về dựa trên giá trị của cột insertColumn(columnIndex,

type[,label [, id] ] )

None Thêm 1 cột vào bảng ở vị tr của ch số

Các cột nếu có ở ph a sau sẽ đư c dời lên

vị tr cao hơn +columnIndex: 1 số phải là ch số mới +type: ki u dữ liệu của cột 'string 'number' 'boolean' 'date' 'datetime' 'timeofday'

+label: tên của cột +id: chuỗi duy nhất của cột insertRows(rowIndex,

numberorArray)

None Chèn thêm 1 số hàng vào vị tr của hàng

ch định +rowIndex: ch số hàng nơi sẽ chèn vào Các hàng chèn có ch số bắt đầu t ch số xác định

+numberorArray: là 1 số mới hoặc rỗng các hàngđư c thêm

removeColumn(columnIndex) None Xoá đi cột tại vị tr xác định

columnIndex: phải là 1 số với giá trị ch

số cột có giá trị removeColumns(columnIndex,

numberOfColumns)

None Xoá 1 số cột t vị tr cột xác định

+numberOfColums: số cột xoá +columnIndex: 1 số có giá tri removeRow(rowIndex) None Xoá 1 hàng tại vị tr xác định

+rowIndex: 1 số có giá trị removeRows(rowIndex,

numberOfRows)

None Xoá 1 số hàng băt đầu t ch số xác định

+numberOfRows: số cột bị xoá

Trang 27

+rowIndex: ch số vị tr có giá trị setCell(rowIndex,

ColumnIndex[,value [,

formattedValue [, properties] ] ] )

None Thiết lập giá trị thuộc t nh và giá trị định

dạng cho 1 cell rowIndex,columnIndex: 1 số >=0 và nhỏ hơn số hàng, số cột

value: giá trị gán cho cell Đ tránh giá trị

bị overwrite, gán tham số là undefined, xoá giá trị này th đ là null.Ki u dữ liệu tuỳ thuộc vào cột

formattedValue: 1 chuỗi giá trị định dạng Đ tránh giá trị bị overwrite, gán tham

số là undefined, đ giá trị rỗng th đ là chuỗi rỗng

properties: một đối tư ng với các thuộc

t nh thêm cho cell Đ tránh giá trị bị overwrite, gán tham số là undefined, xoá giá trị này th đ là null

properties)

None Thiết lập nhiều thuộc t nh cột

+columnIndex: 1 số >=0 và nhỏ hơn số

lư ng cột +properties: là 1 đối tư ng map (name/value) với các thuộc t nh thêm cho cột Nếu giá trị null đư c ch định th tất các các thuộc t nh thêm của cột sẽ bị xoá setColumnProperty(colunIndex,

name, value)

None Thiết lập 1 thuộc t nh đơn

+columnIndex: 1 số >=0 và nhỏ hơn số

lư ng cột +name: tên chuỗi thuộc t nh +value: giá trị đư c gán cho tên thuộc

t nh của cột xác định setFormattedValue

(rowIndex,columnIndex,

formattedValue)

None Thiết lập giá trị định dang cho cell

+rowIndex, columnIndex: 1 số >=0 và nhỏ hơn số lư ng hàng, số lư ng cột +formattedValue: 1 chuỗi giá trị định dạng, đ xoá th đ là null, đinh dạng rỗng th đ chuỗi rỗng

setProperty(rowIndex, name) None Thiế lập thuộc t nh cell

+rowIndex, columnIndex: 1 số >=0 và nhỏ hơn số lư ng h2ng, số lư ng cột +name: tên chuỗi thuộc t nh

+value: giá trị gán cho cell setProperties(rowIndex,

columnIndex, Properties)

None Thiết lập nhiều thuộc t nh cho cell

+rowIndex, columnIndex: 1 số >=0 và

Trang 28

nhỏ hơn số lư ng h2ng, số lư ng cột +properties là 1 đối tư ng map (name/value) với các thuộc t nh thêm cho cell Nếu null đư c gán tất cả các thuôc

t nh thêm sẽ bị xoá setRowProperty(rowIndex, name,

value)

None Thiết lập thuộc t nh cho 1 hàng

+rowIndex: 1 số>=0 và nhỏ hơn số lư ng hàng

+name: tên thuộc t nh +value: giá trị gá cho tên thuộc t nh setRowProperties(rowIndex,

properties)

None Thiết lập nhiều thuộc t nh cho hàng

+rowIndex: 1 số >=0 và nhỏ hơn số

lư ng hàng +properties: 1 đối tư ng map(name/value) với các thuộc t nh thêm vào Nếu giá trị null các thuộc t nh thêm vào sẽ bị xoá

setTableProperty(name, value) None Thiết lập giá trị thuộc t nh cho bàng

DataTable +name: tên thuộc t nh +value: giá trị thuộc t nh setTableProperties(properties) None Thiết lập nhiều thuộc t nh cho bảng

DataTable +properties: 1 đối tư ng map(name/value) với các thuộc t nh thêm vào Nếu giá trị null các thuộc t nh thêm vào sẽ bị xoá

setValue(rowIndex, columnIndex,

value)

None Thiết lập giá trị cho cell Hàm này sẽ xoá

các định dạng và thuộc t nh của cell +rowIndex, columnIndex: số>=0 và nhỏ hơn số lư ng hàng, số lư ng cột

Value: giá trị gán cho cell,giá trị trả về dựa trên giá trị cột

sort(sortColumns) None Sắp xếp các hàng theo cột ch định

DataTable đư c thay đổi bởi hàm này Hàm này không trả về dữ liệu sắp xếp

đưa qua hàm khởi tạo DataTable

2.4 Tìm Hiểu CodeIgniter

2.4.1 Giới Thiệu

CodeIgniter là một nền tảng ứng d ng web nguồn mở đư c viết bằng ngôn ngữ PHP bởi Rick Ellis (CEO của EllisLab, Inc) Phiên bản đầu tiên đư c phát hành ngày 28.02.2006, phiên bản hiện tại: 2.1.0 Ý tưởng xây dựng CodeIgniter đư c dựa trên Ruby on Rails, một nền tảng ứng d ng

Trang 29

web đư c viết bằng ngôn ngữ Ruby Hiện tại, CodeIgniter đang đư c phát tri n bởi ExpressionEngine Development Team thuộc llisLab, Inc

Website của chúng ta sẽ xây dựng dựa trên Framework CodeIgniter này

d ng mô h nh này trong thiết kế, giúp tách biệt các tập tin giao diện với các tập tin xử lý dữ liệu, nâng cao khả năng quản lý và dễ bảo tr

 Nhỏ gọn: Gói cài đặt ch 404KB (không bao gồm phần User Guide) So với các PHP framework khác như CakePHP (1.3MB), Symfony (5.08MB) hay Zend Framework (5.66MB)…k ch thước của CodeIgniter giúp giảm thi u đáng k không gian lưu trữ

 Tốc độ nhanh: CodeIgniter đư c đánh giá là PHP framework có tốc độ nhanh nhất hiện nay Bằng cơ chế lưu nội dung vào bộ đệm (cache), ki m tra bộ đệm trước khi tiến hành thực hiện yêu cầu, CodeIgniter giảm số lần truy cập và xử lý dữ liệu, t đó tối ưu hóa tốc

độ tải trang

 Miễn ph : CodeIgniter đư c phát hành dưới giấy phép Apache/BSD mở rộng, cho phép người d ng tự do thay đổi, phát tri n và phân phối mã nguồn

 Hỗ tr Search Engine Optimization: Cấu trúc URL của CodeIgniter rất thân thiện với các robot t m kiếm

 Hệ thống thư viện phong phú: CodeIgniter cung cấp các thư viện ph c

v cho những tác v thường gặp nhất trong lập tr nh web, chẳng hạn như truy cập cơ sở dữ liệu, gửi email, ki m tra dữ liệu, quản lý session,

xử lý ảnh…đến những chức năng nâng cao như XML-RPC, mã hóa, bảo mật…

 Bảo mật hệ thống: Cơ chế ki m tra dữ liệu chặt chẽ, ngăn ng a XSS và SQL Injection của CodeIgniter giúp giảm thi u các nguy cơ bảo mật cho hệ thống

 Chưa hỗ tr AJAX: AJAX (Asynchronous JavaScript and XML) đ~ trở thành một phần không th thiếu trong bất kỳ ứng d ng Web 2.0 nào AJAX giúp n}ng cao t nh tương tác giữa người d ng và hệ thống, giúp cho người d ng có cảm giác như đang sử d ng ứng d ng desktop v các thao tác đều diễn ra “tức thời” Hiện tại, CodeIgniter vẫn chưa có thư

Trang 30

viện dựng sẵn nào đ hỗ tr xây dựng ứng d ng AJAX Lập tr nh viên phải sử d ng các thư viện bên ngoài, như jQuery, Script.aculo.us, Prototype hay Mootools…

 Chưa hỗ tr một số module thông d ng: So sánh với framework khác, CodeIgniter không có các module thực thi một số tác v thường gặp trong quá tr nh xây dựng ứng d ng web như Chứng thực người d ng (User Authorization), Trình phân t ch RSS (RSS Parser) hay Tr nh xử

lý PDF…

 Chưa hỗ tr Event-Driven Programming: Event-Driven Programming (EDP) là một nguyên lý lập tr nh, trong đó các luồng xử lý của hệ thống sẽ dựa vào các sự kiện, chẳng hạn như click chuột, gõ bàn

ph m…Đây không phải là một khuyết đi m to lớn của CodeIgniter

v hiện tại, ch có một số t framework hỗ tr EDP, bao gồm Prado, QPHP và Yii

2.4.4 Cài đặt

Yêu cầu hệ thống: CodeIgniter có th hoạt động trên nhiều hệ điều hành

và server, yêu cầu có cài đặt PHP phiên bản 4.x hoặc cao hơn; hệ quản trị cơ

sở dữ liệu: MySQL (4.1+), MySQLi, Mircrosoft SQL Server, Postgres, Oracle, SQLite, và ODBC

3 Nếu ứng d ng có tương tác với cơ sở dữ liệu, thiết lập các giá trị cần thiết trong tập tin application/config/database.php

4 Upload tất cả thư m c và tập tin của CodeIgniter lên server

2.4.5 Mô hình Model-View-Controller

Model-View-Control (MVC) là một kiến trúc phần mềm, hiện đang

đư c xem là một mẫu thiết kế trong công nghệ phần mềm Mô h nh MVC tách biệt phần xử lý dữ liệu ra khỏi phần giao diện, cho phép phát tri n, ki m tra và bảo tr các thành phần một cách độc lập

Trang 31

Hình 2-4: Mô hình MVC

Model : th hiện các cấu trúc dữ liệu Các lớp thuộc thành phần

Model thường thực hiện các tác v như truy vấn, thêm, xóa, cập nhật

dữ liệu Khi dữ liệu trong Model thay đổi, thành phần View sẽ đư c cập nhật lại

View : là thành phần th hiện dữ liệu trong Model thành các giao diện

tương tác với người sử d ng Một Model có th có nhiều View t y thuộc vào các m c đ ch khác nhau

Controller : đóng vai trò trung gian giữa Model và View Thông tin

người d ng t View đư c gửi cho Controller xử lý, sau đó Controller tương tác với Model đ lấy dữ liệu đư c yêu cầu, sau c ng Controller trả dữ liệu này về cho View

Mô h nh MVC thường đư c sử d ng trong các ứng d ng web, v thành phần View (mã HTML/XHTML) đư c sinh ra t các ngôn ngữ lập tr nh web Thành phần Controller sẽ nhận các dữ liệu GET/POST, xử lý những dữ liệu này, sau

đó chuy n sang Model xử lý.Model sẽ trả dữ liệu về ph a Controller, sau đó Controller sinh mã HTML/XHTML đ th hiện trên View

Trang 32

2.4.5.1 Cấu Trúc CodeIgniter

Hình 2-5: Cấu trúc CodeIgniter

(Nguồn: http://codeigniter.com/user_guide/)

Tập tin index.php đư c xem như controller đầu vào, tiếp nhận các yêu cầu t

ph a client và chuy n các yêu cầu này cho hệ thống xử lý

Thư m c system bao gồm phần lõi của CodeIgniter Chúng bao gồm các thư viện xây dựng sẵn, các tập tin ngôn ngữ, ghi chú về hệ thống Trong số đó, các thư m c sau khá quan trọng:

 Thư m c application: Dành cho lập tr nh viên, các tập tin đư c lập tr nh cho ứng d ng sẽ lưu trong thư m c này

 Thư m c cache: Bộ đệm của hệ thống, chứa các trang đã đư c xử lý trước đó

 Thư m c helpers: Chứa các hàm hỗ tr cho lập tr nh viên khi viết ứng

d ng

 Thư m c libraries: Chứa các thư viện dựng sẵn của CodeIgniter

Đối với lập tr nh viên, các tập tin của ứng d ng sẽ đư c lưu trong thư m c

system/application Trong đó:

 Thư m c config: Chứa các tập tin cấu h nh hệ thống

 Thư m c controllers: chứa các lớp controller

 Thư m c errors: chứa các tập tin lỗi

 Thư m c helpers: chứa các hàm tiện ch do người d ng định nghĩa

 Thư m c hooks: chứa các tập tin đ mở rộng mã nguồn CodeIgniter

Trang 33

 Thư m c language: chứa các tập tin ngôn ngữ

 Thư m c libraries: chứa các thư viện cho người d ng d ng định nghĩa

 Thư m c models: chứa các lớp model

 Thư m c views: chứa các lớp view

2.4.5.2 Dòng Chảy Dữ Liệu Trong CodeIgniter

Sơ đồ 2-1: Dòng chảy dữ liệu bên trong CI

4 Security: Dữ liệu trước khi đư c chuy n đến các Controller sẽ đư c lọc đ phòng chống XXS hoặc SQL Injection

5 Application Controller: Controller xử lý dữ liệu nhận đư c bằng cách gọi đến các Models, Libraries, Helpers, Plugins…có liên quan

6 View: Dữ liệu đư c chuy n qua View đ hi n thị cho người d ng Nếu chức năng caching đư c bật, dữ liệu sẽ đư c lưu trong cache cho những lần yêu cầu tiếp theo

2.4.5.3 Model

 Model là những lớp đư c xây dựng nhằm thực hiện việc trao đổi thông tin với cơ sở dữ liệu Một lớp Model có th thực hiện các tác v truy vấn, thêm, xóa, cập nhật dữ liệu Trong CodeIgniter, việc khai báo các lớp model dành cho một thực th nào đó là không cần thiết, v trong controller của thực th đó, ta có th gọi đến thư viện database đ thực hiện các thao tác với cơ sở dữ liệu Tuy nhiên, đ tiện cho việc quản lý, xây dựng lớp model cho một thực th đư c khuyến kh ch

 Model là class đư c tạo ra đ làm việc với database V d : model chứa các hàm đ insert, update, xóa, lấy dữ liệu

Trang 34

Một lớp model chuẩn trong CodeIgniter có cấu trúc như sau:

class Blogmodel extends CI_Model {

tiếp mà phải thông qua controller $this->load->view('view_name',

d ng trong tập tin view Dưới đây là nội dung mẫu của tập tin

$data['title'] = "My Real Title";

$data['heading'] = "My Real Heading";

Trang 35

2.4.5.5 Controller

 Controller là những lớp đóng vai trò trung gian giữa view và model Controller nhận các yêu cầu t ph a người d ng, ki m tra chúng trước khi chuy n qua cho model Sau khi model xử lý yêu cầu và trả dữ liệu

về, controller chuy n sang view đ hi n thị dữ liệu cho người d ng

 Một controller là một class và đư c gọi trên url Bên trong mỗi controller, bạn định nghĩa các hàm d ng đ thực hiện một chức năng nào đó

 Trong CodeIgniter, các lớp controller đư c gán vào segment thứ nhất trong URI Segment thứ hai trong URI sẽ gọi đến phương thức tương ứng trong controller Các giá trị của các segment còn lại trong URI

ch nh là các tham số truyền vào cho phương thứ này CodeIgniter quy định một phương thức đặc biệt, index( ) Phương thức này có th xem như đầu vào của controller, sẽ đư c tự động gọi trong trường h p segment thứ hai của URI bị bỏ trống

Một lớp controller chuẩn trong CodeIgniter có mẫu:

domain.com/index.php/controller/method/param/…

Trong đó:

 Segment controller là tên của lớp controller đư c gọi

 Segment method là tên của phương thức trong lớp controller ở trên

 Segment param là các đối số của phương thức đó

2.4.7 Các thƣ viện

Bảng 2-6: Các thư viện của CodeIgniter

Benchmarking Hỗ tr đánh giá hiệu năng hệ thống

Trang 36

thương mại điện tử

Database Hỗ tr thao tác trên cơ sở dữ liệu

Encryption Hỗ tr mã hoá và giải mã thông tin

File Uploading Hỗ tr upload file lên server

Form Validation Ki m tra dữ liệu nhập t người d ng

Image Manipulation Hỗ tr xử lý ảnh

Input and Security Xử lý dữ liệu đầu vào và Bảo Mật

Trackback Cho phép và nhận thông tin trackback

Template Parser Cho phép xây dựng và xử lý mã giả trong các

view

Unit Testing Hỗ tr unit testing

User Agent Cho phép xác định thông tin t nh duyệt của

người d ng, thiết bị di động hay các robot t m kiếm trên site

tự xây dựng một XML-RPC cho hệ thống Zip Encoding Cho phép tạo tập tin Zip

Chương 3: Phân tích yêu cầu Website

Sau khi nghiên cứu các website gia phả có sẵn và các nhu cầu người

d ng khi truy cập vào các trang web này th nhận thấy cần có các chức năng

như sau:

Trang 37

Bảng 3-1: Chức năng người quản lý

a) Chức năng người dùng vãng lai

1 Xem gia phả nằm ngang, nằm dọc (phả đồ, phả ký, thủy tổ, tộc 1

ước, hương hỏa)

2 Xem gia phả trong vòng 5 đời

3 Xem chi tiết thành viên trong một gia phả

4 T m kiếm gia phả

5 T m kiếm thành viên gia phả

6 Đăng k làm thành viên

7 Liên hệ

b)Chức năng người dùng là thành viên

8 Xem gia phả nằm ngang, nằm dọc (phả đồ, phả ký, thủy tổ, tộc

ước, hương hỏa)

9 Xem gia phả trong vòng 5 đời

10 Xem chi tiết thành viên trong một gia phả

11 Ch nh sửa thông tin phả ký trong gia phả của user sở hữu

12 Ch nh sửa thông tin thủy tổ trong gia phả của user sở hữu

13 Ch nh sửa thông tin tộc ước trong gia phả của user sở hữu

14 Ch nh sửa thông tin hương hỏa trong gia phả của user sở hữu

Trang 38

3.1.1.1 Người quản lí website

 Quản lý User:

Người quản l có th tạo mới một user hoặc xóa một user Thông tin user bao gồm: họ tên, tên đăng nhập, mật khẩu, email, địa ch , số điện thoại, ngày đăng ký,…

o Điều kiện: người quản lý đăng nhập thành công vào hệ thống

 Quản lý kho gia phả của website:

Người quản l có th xem gia phả, xóa gia phả và c ng có th tạo gia phả như những user b nh thường (một gia phả bao gồm: tên gia phả, chi tiết các thành viên trong gia phả, quê quán, phả ký, tộc ước, thủy tổ, hương hỏa, người tạo gia phả, ngày tạo, )

 T m kiếm gia phả: Người quản l có th t m kiếm gia phả, hay thành viên gia phả nếu muốn

3.1.1.2 Người dùng vãng lai

 Xem gia phả trong website: xem gia phả nằm ngang, nằm dọc, xem gia phả trong vòng 5 đời, xem thông tin chi tiết của các thành viên trong gia phả, xem các thông tin liên quan của một gia phả như phả ký, thủy tổ, tộc ước, hương hỏa

 T m kiếm gia phả: Người dùng vãng lai có th t m kiếm gia phả, hay thành viên gia phả

 Có th liên hệ với ban quản trị website

 Đăng k làm thành viên của website

15 Thêm thành viên trong gia phả của user sở hữu

16 Xóa thành viên trong gia phả của user sở hữu

17 Sửa thành viên trong gia phả của user sở hữu

18 T m kiếm gia phả

19 T m kiếm thành viên gia phả

20 Tạo mới gia phả

21 Xóa gia phả của user sở hữu

22 Ch nh sửa thông tin tài khoản

23 Upload hình, video

24 Gửi email thông báo đám giỗ

25 Liên hệ

Trang 39

3.1.1.3 Người dùng là thành viên

 Xem gia phả trong website: xem gia phả nằm ngang, nằm dọc, xem gia phả trong vòng 5 đời, xem thông tin chi tiết của các thành viên trong gia phả, xem các thông tin liên quan của một gia phả như phả ký, thủy tổ, tộc ước, hương hỏa

 Thành viên có th tạo mới gia phả hoặc xóa gia phả do m nh tạo

o Điều kiện: người quản lý đăng nhập thành công vào hệ thống

 Thành viên có th sửa gia phả do m nh tạo: thêm thành viên trong gia phả, xóa thành viên, sửa thông tin thành viên, ch nh sửa các thông tin liên quan đến gia phả như phả ký, thủy tổ, tộc ước, hương hỏa

o Điều kiện: người quản lý đăng nhập thành công vào hệ thống

 T m kiếm gia phả: thành viên có th t m kiếm gia phả, hay t m thành viên trong một gia phả

 Ch nh sửa thông tin cá nhân: họ tên, địa ch , số điên thoại, đổi mật khẩu…

o Điều kiện: người quản lý đăng nhập thành công vào hệ thống

 Upload h nh cá nhân, h nh của gia phả, gửi email thông báo đám giỗ

o Điều kiện: người quản lý đăng nhập thành công vào hệ thống

 Liên hệ với ban quản trị website

3.2 Yêu cầu phi chức năng

3.2.1 Tổng quan các yêu cầu phi chức năng

Bảng 3-3: Các yêu cầu phi chức năng

1 Yêu cầu về tính sử dụng

Giao diện website thân thiện với người d ng

Các chức năng tiện d ng cho người d ng

2 Yêu cầu về công nghệ và các ràng buộc

Công nghệ

Mở rộng trong tương lai

3 Yêu cầu về giao tiếp

Giao tiếp với người d ng

Giao tiếp với phần cứng

Trang 40

4 Các yêu cầu tài liệu cho người dùng

Tài liệu hướng dẫn cài đặt website gia phả

Tài liệu hướng dẫn sử d ng website gia phả

3.2.2 Chi tiết các yêu cầu

3.2.2.1 Yêu cầu về tính sử dụng

 Giao diện website thân thiện với người d ng

o Giao diện gọn gàng, phân chia rõ t ng m c, t ng thành phần

o Th hiện chi tiết thông tin các gia phả một cách trực quan nhất

 Các chức năng tiện d ng cho người d ng

o Không đ t nh trạng quá nhiều chức năng làm rắc rối người d ng và phức tạp giao diện

o Không đ t nh trạng quá nhiều bước khiến người d ng mất thời gian trong thao tác

3.2.2.2 Yêu cầu về công nghệ và các ràng buộc

Chương tr nh đáp ứng đư c các yêu cầu sau:

 Công nghệ

o Ứng d ng đư c phát tri n trên nền công nghệ Website mã nguồn mở

sử d ng Php, Mysql, Javascript, Html, css… kết h p framework CodeIgniter

o Các phần mềm cần sử d ng là công c lập tr nh PHP, MySql, Google Visualization API - Org Chart

 Mở rộng trong tương lai

o Ứng d ng đư c thiết kế theo hướng có khả năng phát tri n những tính năng mới trong tương lai hoặc t ch h p vào một hệ thống các ứng d ng khác dễ dàng

3.2.2.3 Yêu cầu về giao tiếp

 Giao tiếp với người d ng

o Giao diện chương tr nh hi n thị ngôn ngữ tiếng việt

 Giao tiếp với phần cứng

Chương tr nh chạy trên máy với cấu h nh tối thi u:

o PC Pentium IV

o RAM 512MB

Ngày đăng: 23/12/2018, 06:12

TỪ KHÓA LIÊN QUAN

w