PHÂN TÍCH THIẾT KẾ HỆ THỐNG

Một phần của tài liệu XÂY DỰNG MODULE QUẢN LÝ CÔNG VĂN BẰNG NUKEVIET (Trang 27)

h. Kết thúc cài đặt

3.2.PHÂN TÍCH THIẾT KẾ HỆ THỐNG

3.2.1. Phân tích hệ thống

Hoạt động của khách

− Khi khách truy cập thành công vào chương trình thì khách có thể tìm kiếm thông tin về công văn, xem chi tiết công văn, và có thể tải file đính kèm..

Hoạt động của admin

− Soạn thảo công văn đi

− Nhập công văn đến

− Quản lí công văn đi, công văn mật đi

− Quản lí công văn đến, công văn mật đến

− Quản lí mức độ công văn

− Quản lí đối tượng

− Quản lí thể loại công văn

27

− Quản lí đơn vị ban hành

− Quản lí nơi nhận

− Quán lí nơi lưu trữ

3.2.2. Đặc tả cách sử dụng

Biểu đồ usecase tổng quát hệ thống

Hình 23: Biểu đồ usecase tổng quát.

Biểu đồ usecase người dùng

28

Hình 24: Biểu đồ usecase người dùng.

Mô tả : sau khi truy cập vào website khách có thể xem công văn, xem chi tiết công văn, tiềm kiếm công văn theo thể loại, đối tượng, đơn vị ban hành. Khách chỉ được những công văn mà admin đã cho phép.

Biểu đồ usecase admin

29

Hình 25: Biểu đồ usecase admin

Mô tả : sau khi đăng nhập thành công thì admin có thể đăng xuất, thực hiện các chức năng quản lí của mình ...

3.2.3 Mô hình khái niệm hệ thống

30

Hình 26: Mô hình khái niệm hệ thống

3.2.4. Biểu đồ hoạt động

 Biểu đồ hoạt động tổng quát

31

Hình 27: Biểu đồ hoạt động tổng quát

 Biểu đồ hoạt động của người dùng

32

Hình 28: Biểu đồ hoạt động của người dùng.

 Biểu đồ hoạt động của Admin

33

Hình 29: Biểu đồ hoạt động của Admin

3.3. HƯỚNG GIẢI QUYẾT3.3.1. Thiết kế cơ sở dữ liệu 3.3.1. Thiết kế cơ sở dữ liệu

Thiết kế cơ sở dữ liệu là 1 bước rất quan trọng trong tất cả các quá trình thực hiện các ứng dụng về web, lập trình …. Việc tổ chức cơ sở dữ liệu sẽ giúp chúng ta quản lí , truy xuất các thông tin cần thiết về các vấn đề cụ thể nào đó.

Với đề tài xây dựng module quản lý công văn trên nền nukeviet, việc thiết kế cơ sở dữ liệu gồm các bảng như sau :

Cấu trúc bảng ROWS (thông tin các loại công văn)

Tên trường Kiểu dữ liệu Chú thích

id mediumint (8) Mã công văn

ngaycvden int (20) Ngày công văn đến

soden varchar (20) Số đến

34

noiphathanh mediumtext Đơn vị phát hành

ngaythangbh int (20) Ngày tháng ban hành

ngaycapnhat int (20) Ngày cập nhật

sohieu varchar (50) Số và ký hiệu

trichyeu mediumtext Trích yếu

nguoiky mediumtext Người ký

noinhan mediumtext Nơi nhận

noiluutru varchar (50) Nơi lưu trữ

soluong int (20) Số lượng công văn

ghichu mediumtext Ghi chú

alias varchar(100) Liên kết tĩnh

chitiet mediumtext Nội dung công văn

idtheloai mediumint (8) Mã thể loại

idmat mediumint (8) Mã mức độ của công văn

madt varchar(50) Mã đối tượng

file varchar(225) Đường dẫn file đính kèm

type varchar(15) Loại file cho phép upload

hits int (20) Số lượt xem cổng văn

dows int (20) Số lượt tải file công văn

active int (1) Cho phép hiển thi hay

không hiển thị ngoài site

Cấu trúc bảng DOITUONG (Quản lý đối tượng)

Têntrường Kiểu dữ liệu Chú thích

madt varchar (50) Mã đối tượng

tendoituong varchar (255) Tên đối tượng

Cấu trúc bảng DONVI(Quản lý đơn vị ban hành)

Tên trường Kiểu dữ liệu Chú thích

madv varchar (50) Mã đơn vị

tendonvi varchar (255) Tên đơn vị

Cấu trúc bảng MUCDO( thông tin về mức độ công văn )

Tên trường Kiểu dữ liệu Chú thích

idmat mediumint (8) Mã mức độ

tenmucdo mediumtext Tên mức độ

Cấu trúc bảng NOILUU( Quản lý nơi lưu trữ công văn)

Tên trường Kiểu dữ liệu Chú thích

manoiluu varchar (50) Mã nơi lưu trữ

tennoiluu mediumtext Tên nơi lưu trữ

Cấu trúc bảng NOINHAN( Quản lý nơi nhận)

Tên trường Kiểu dữ liệu Chú thích

manoinhan varchar (50) Mã nơi nhận tennoinhan mediumtext Tên nơi nhận

35

Cấu trúc bảng THELOAI( Quản lý thể loại)

Tên trường Kiểu dữ liệu Chú thích

idtheloai mediumint (8) Mã thể loại tentheloai mediumtext Tên thể loại

3.3.2. Xây dựng module trên nền NukeViet

Cấu trúc cơ bản của 1 MODULE

Bao gồm các file và thư mục sau o admin.functions.php o version.php o funcs o funcs/main.php o admin o admin/admin.php o functions.php

Với nhiêu đó là ta đã có một module đơn giản (không có CSDL) có thể hoạt động rồi. Như vậy muốn viết một module đầu tiên ta tạo một thư mục có tên là tên của module trong thư mục modules. Sau đó lần lượt tạo các thư mục, file như trên vào thư mục vừa tạo.

Chức năng của các file như sau:

-- file version.php: file này có chức năng khai báo tiêu đề module, các funcs có block, tác giả module, thông tin phiên bản, cấu trúc thư mục trong thư mục uploads. -- File admin.functions.php: File này thường chứa các function, hằng dùng trong admin

-- File function.php: File này thường chứa các function, hằng dùng cho ngoài site -- admin/main.php: File này sẽ thể hiện nội dung của module phần admin -- funcs/main.php: FIle này sẽ thể hiện nội dung (trang chính) của module bên ngoài site.

Thứ tự khởi động một module như sau: Khi module được chạy thì tùy theo admin hay ngoài site mà file admin.functions.php hay file function.php được chạy trước sau đó là các file trong thư mục admin hay funcs được chạy tiếp theo mặc định sẽ là file main.php.

36

Ta thường thấy url trang web nukeviet (chưa bật rewrite) có dạng http://localhost/nukeviet1/nukeviet/index.php?language=vi&nv=teachpay

Trong đó lang chính là ngôn ngữ của site, nv là module đang chạy, op chính là funcs đang chạy (ở đây là listenone). Giá trị op này chính là tên của funsc trong thư mục funsc hay admin. Nếu trên url mà khuyết phần op= có nghĩa funcs main.php đang được chạy.

Đầu tiên tạo một thư mục (là tên module) trong thư mục modules rồi thêm vào đó các file và thư mục sau:

o admin.functions.php o version.php o funcs o funcs/main.php o admin o admin/main.php o functions.php

Nội dung file version.php

Dòng if ( ! defined( 'NV_ADMIN' ) or ! defined( 'NV_MAINFILE' )) die( 'Stop!!!' ); các bạn để nguyên ở mọi module.

Hình 30: Nội dung file version.php

"modfuncs" => "main": Tên các funcs trong thư mục funcs có block khi hoạt động bên ngoài site. Đối với các funcs không có block ví dụ như để xử lý AJAX, gửi email (popup) thì không cần khai báo. Các funcs được phân cách nhau bởi dấu ",".

"is_sysmod" => 0, : Có phảo module hệ thông hay không 0: không 1: có.

"virtual" => 1: Cho phép ảo hóa module không 0: không 1: có date,author,version: thông tin ngày , tác giả, phiên bản module.

uploads_dir: Khai báo cấu trúc thư mục trong thư mục uploads. Với khai báo như trên thì khi kích hoạt module hệ thông sẽ tạo một thư mục có tên là tên của module trong thư mục upload (biến $module_name được hiểu là tên module)

Nội dung file admin.functions.php

Hình 31: Code của file admin.functions.php

$allow_func = array('main'); : biến $allow_func là một mảng một chiều chứa các funcs rong thư mục admin cho phép chạy. Ở ví dụ này chỉ cho một funcs là main.php. Các funcs không được khai báo trong biến này khi chạy sẽ báo lỗi "Bạn không có quyền truy cập chức năng này."

define( 'NV_IS_FILE_ADMIN', true ) : dòng này sẽ khởi tạo một hằng dùng cho module. Các funcs như main.php sẽ kiểm tra giá trị hằng này nếu đúng sẽ chạy ngược lại sẽ báo lỗi "Stop!!!".

Nội dung file admin/main.php

38

Hình 32: Nội dung của file admin/main.php Biến $page_title là tiêu đề của funcs hiện tại.

Tất cả nội dung sẽ được lưu vào một biến $contents sau đó sẽ được xuất ra sau khi gọi file header.php.

Nội dung file funcs/main.php

Hình 33: Nội dung của file admin/main.php

Thao tác với cơ sở dữ liệu

Ta sẽ thêm file action.php làm nhiệm vụ thao tác với CSDL khi cài đặt cũng như xóa module. Bây giờ ta thêm một table trong CSDL để quản lí thông tin đơn vị ban hành (mã đơn vị, tên đơn vị). Tạo file action.php đặt cùng thư mục với file functions.php với nội dung như sau:

Hình 34: Nội dung của file action.php

Bây giờ ta vào phần quản lí module cài lại module sẽ thấy trong CSDL có thêm một table có tên là nv3_vi_congvan_donvi.

39

Chú thích nội dung file trên:

− $sql_drop_module[], $sql_create_module[] để chỉ việc xóa, tạo mới module.

− Biến $db_config['prefix'] là tiếp đầu tố của table

− $lang là ngôn ngữ của site

− $module_data thông thường được hiểu như tên của module. Nội dung bên trong dấu ngoặc kép là lệnh thao tác với CSDL không nhất thiết phải là xóa, thêm mà có thể chỉnh sửa, xóa trường, chèn dữ liệu...

− Biến $sql_create_module[] dạng ARRAY nên có thể thêm nhiều lệnh thao thác csdl (tạo nhiều bảng).

Ta đã tạo CSDL thành công bây giờ cần phải viết code để làm vi

ệc với nó. Bây giờ phần quản lí module ta cần có thêm một submenu để thêm đơn vị. Mở file admin.functions.php lên sửa lại như sau:

Hình 35: Nội dung của file admin.functions.php

Ta thấy bây giờ có thêm $submenu['add'] có nghĩa là ta đã khai báo một submenu trong admin, biến $allow_func thêm mới 'add' có nghĩa ta đã chấp nhận thêm một funcs mới có tên add (add.php). Bây giờ ta vào phần quản lí module sẽ thấy có thêm submenu "th" nhưng khi ấn vào sẽ hiện : “Lỗi truy cập 404”.

Lỗi 404: Trang web mà bạn đã cố gắng truy cập không tồn tại trên máy chủ của website." có nghĩa là chưa có file add.php. Ta thêm file add.php vào thư mục admin với nội dung như sau:

40

Hình 36: Nội dung của file add.php

Giải thích :

Đoạn này dùng để lấy dữ liệu khi submit form và được lưu dưới dạng mảng (array).

41

Đoạn này dùng để lưu dữ liệu vừa nhận được vào cơ sở dữ liệu

Kết nối với file ngôn ngữ

Tiếp theo ta sẽ làm việc với file lang (ngôn ngữ) để có thể mở rộng ra nhiều ngôn ngữ khác ngoài tiếng Việt. Tạo thư mục language ngang hàng với thư mục admin. Tạo file admin_vi.php và file vi.php nằm trong thư mục vừa tạo. Đây là fie ngôn ngữ tiếng việt, dùng trong admin thì bắt đầu bằng admin_ còn ngoài site thì tên file là tên của kí tự ngôn ngữ.

Nội dung file admin_vi.php như sau:

Hình 37: Nội dung của file admin_vi.php

Ta thấy có hai phần $lang_translator và $lang_module trong đó $lang_module là phần ngôn ngữ dùng cho module còn $lang_translator là thông tin tác giả, bản quyền, ngày dịch, ngôn ngữ dịch...

Để sử dụng file ngôn ngữ thì sau khi tạo đến bước trên ta cần mở tất cả các file trong thư mục admin lên, thay tất cả các dòng chữ bằng $lang_module tương ứng.

Tương tự cho bên ngoài site, cách viết nội dung của file vi.php cũng giống như cách viết của file admin_vi.php.

Kết nối với XTEMPLATE

Xtemplate thực chất là một lớp (class) được xây dựng sẵn và luôn được tích hợp trong nukeviet. Để sử dụng nó ta cần quan tâm đến 4 phần như sau.

− Gọi file tpl

− Lệnh $xtpl->assign

42

− Lệnh $xtpl->parse

− Lệnh $xtpl->text( 'main' )

Để gọi ra một file tpl ta dùng như sau:

Hình 38: cách gọi 1 file tpl

Ta thấy có hai phần phân cách nhau bởi dấu phảy. phần trước chính là tên của file tpl là phần sau là đường dẫn đến file tpl đó. Các giá trị hằng, biến NV_ROOTDIR, $module_info['template'], $module_file các bạn tham khảo trong file mainfile.php. Hệ thông sẽ gọi ra file tpl ở theme bạn đang dùng nếu không tồn tại file đó thì sẽ tiếp tục tìm đến file đó trong theme default, admin_default nếu không tồn tại thì sẽ báo lỗi.

Lệnh $xtpl->assign có chức năng gán giá trị cho biến trong xtpl. có thể là biến thông thường cũng có thể là mảng.

Lệnh $xtpl->parse, $xtpl->text( 'main' ) ta sẽ hiểu thông qua ví dụ cụ thể.

Nhắc đến xtpl ta không thể không nhắc đến file theme.php (ngang hàng với file action.php). File này chứa tất cả cấu trúc xtpl. Nhưng không bắt buộc phải có nó, xtpl ta có thể dùng bất kì nơi nào.

Cấu trúc xtpl thông thường sẽ gọi các file có đuôi là tpl nhưng không nhất thiết phải như thế, trong khi viết, để cho dễ dàng thao tác với chúng, ta có thể chuyển lại chúng thành html và dùng các trình soạn thảo HTML để làm việc, sau khi hoàn tất ta sẽ chuyển trở lại thành tpl.

 Nội dung của file main.tpl ( hiển thị bảng đơn vị ban hành ) Tạo thư mục và file như sau:

themes/admin_default/modules/congvan/main.tpl. Nội dung file main.tpl:

43

Hình 39: Nội dung file main.tpl

Cấu trúc file main.tpl không khác gì một file HTML. Cần chú ý đến thẻ <!-- BEGIN: main --> và <!-- END: main --> đây là dấu hiệu cho biết bắt đầu và kết thúc của lệnh $xtpl->parse('main'); đối với những lệnh $xtpl->parse tiếp theo đặt trong main thì ta sẽ sử dụng lệnh $xtpl->parse('main.loop');. Chúng đặt nối tiếp nhau bởi dấu ".". Để trả về nội dung HTML ta sử dụng lệnh $xtpl->text('main').

Lưu ý đối với những nội dung nằm ngoài <!-- BEGIN: main --> và <!-- END: main --> chúng sẽ được bỏ qua. Lợi dụng đặc tính này ta chuyển file tpl sang html và viết

44

tương tự như viết HTML sau khi viết xong ta sẽ cắt bỏ tất cả những phần ngoài hai thẻ này đi còn lại phần cần thiết.

Đối với lệnh $xtpl->assign mà giá trị là biết đơn thì trong tpl chỉ cần gọi ra bằng {ten_bien} còn nếu là mảng thì để tham chiếu đến phần tử ta dùng {ten_bien.phan_tu}.

3.4. THIẾT KẾ GIAO DIỆN QUẢN LÝ CÔNG VĂN3.4.1. Giao diện người dùng 3.4.1. Giao diện người dùng

Giao diện chính của chương trình sẽ hiển thị thông tin về thông tin các loại công văn, chức năng tìm kiếm công văn..

Khi truy cập vào website người dùng có thể xem các loại công văn mới nhất, xem chi tiết công văn, và có thể tìm kiếm công văn theo các tiêu chí: đối tượng, thể loại, đơn vị ban hành, sau đó người dùng có thể tải file đính kèm về.

Đây là giao diện khi người dùng truy cập vào website

Hình 40: Giao diện chính của chương trình

−Đối tượng: Cung cấp danh sách các đối tượng (Danh sách này được quản lý bởi quản người quản trị module). Ví dụ: Dùng cho sinh viên, Dùng cho Cán bộ giảng viên,…

− Thể loại: hiển thị thông tin các thể loại được tạo ra bởi admin.

− Đơn vị ban hành : hiển thị thông tin về các đơn vị của trường, được quản lý bởi admin

− Từ khóa: Từ khóa tìm kiếm khi người dùng nhập vào sẽ tìm kiếm thông tin công văn khớp với từ khóa mà người dùng đã nhập.

45

− BUTTON “Tìm kiếm” sẽ hiển thị thông tin công văn khi người dùng tìm kiếm thành công.

Khi click chọn “tìm kiếm” thì dữ liệu được hiển thị ra dưới dạng lưới tất cả các loại công văn tìm kiếm được.

Giao diện xem chi tiết công văn của người dùng

Hình 41: Giao diện xem chi tiết công văn của người dùng.

Tại đây người dùng có thể xem chi tiết công văn một cách rõ ràng, và có thể tải file công văn về máy.

3.4.2. Giao diện cho admin

a. Giao diện chính của hệ thống:

Hình 42: Giao diện chính của hệ thống.

Giao diện chính sẽ hiển các công văn đi và công văn đến mới nhất. Tại đây người quản trị có thể quản lý các loại công văn. Tìm kiếm công văn để xem và quản lý, giúp cho công tác lưu trữ văn thư một cách linh hoạt và nhanh chóng.

Cách sử dụng các chức năng trong giao diện chính của hệ thống quản lý công văn:

• Đầu tiên người dùng chọn loại công văn (công văn đi, công văn đến), và bấm nút hiển thị, hệ thống sẽ hiển thì các công văn đi hoặc công văn đến mà người quản trị đã chọn.

• Để xem công văn mật đi, công văn mật đến, người quản trị tiếp tục chọn mức độ của công văn, nếu mức độ là bình thường thì đó là công văn đi và đến, còn chọn mức độ mật, tuyệt mật, tối mật đó là các công văn mật đi, công văn mật đến. Tại đây người quản trị có thể quản lý tất cả các loại công văn này.

• Tra cứu công văn theo từ khóa thuộc chuyên mục nào đó (ngày ban hành, trích yếu, …). Người quản trị tiến hành nhập vào từ khóa cần tra cứu, chọn chuyên mục muốn tra cứu. Mục đích của chức năng này nhằm mục đích tìm kiếm công văn một cách chính xác và hiệu quả cao.

• Trong phần quản lý các loại công văn, có trường “hiển thị”, với 2 trạng thái là có và không. Người quản trị tiến hành cho phép hiển thị hay không cho phép hiển thị công văn

Một phần của tài liệu XÂY DỰNG MODULE QUẢN LÝ CÔNG VĂN BẰNG NUKEVIET (Trang 27)