GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang vii MSSV: 1111517 TÓM TẮT Ngày nay, với sự phát triển rộng rãi của công nghệ thông tin và internet thì việc quản lý, trao đổi
Trang 1KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
BỘ MÔN TIN HỌC ỨNG DỤNG
LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC
XÂY DỰNG WEBSITE QUẢN LÝ VIỆC THU TIỀN ĐIỆN PHƯỜNG AN HÒA,
TP CẦN THƠ
Nguyễn Hải Đăng (MSSV: 1111517) Thạc sĩ Lê Minh Lý
Khóa: 37
Cần Thơ, 2015
Trang 2KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
BỘ MÔN TIN HỌC ỨNG DỤNG
LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC
XÂY DỰNG WEBSITE QUẢN LÝ VIỆC THU TIỀN ĐIỆN PHƯỜNG AN HÒA,
TP CẦN THƠ
Nguyễn Hải Đăng (MSSV: 1111517) Thạc sĩ Lê Minh Lý
Khóa: 37
Cán bộ phản biện Thạc sĩ Vũ Duy Linh Thạc sĩ Lê Thị Diễm Luận văn được bảo vệ tại: Hội đồng chấm luận văn tốt nghiệp Bộ môn Tin học Ứng dụng Khoa Công nghệ thông tin và truyền thông, Trường Đại học Cần Thơ vào ngày
14 tháng 5 năm 2015
Mã số đề tài:
Có thể tìm hiểu luận văn tại:
- Trung tâm Học liệu, Trường Đại học Cần Thơ
- Website: http://www.lrc.ctu.edu.vn/
Cần Thơ, 2015
Trang 3GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang i MSSV: 1111517
LỜI CẢM ƠN
Xin gửi lời cảm ơn chân thành đến cô Lê Minh Lý, cán bộ đã hướng dẫn trong suốt quá trình thực hiện và hoàn thành đề tài, cảm ơn toàn bộ thầy, cô Bộ môn Tin học ứng dụng khoa Công nghệ thông tin và tuyền thông đã giảng dạy, chia sẻ nhiều kiến thức, kinh nghiệm quý báo trong quá trình chúng em học tập tại trường
Xin gởi lòng biết ơn sâu sắc đến cha mẹ, gia đình đã tạo mọi điều kiện về vật chất, tinh thần, động viên, khích lệ và hỗ trợ trong suốt thời gian qua
Xin được gởi lời cám ơn đến anh chị, bạn bè đã tận tình giúp đỡ trong suốt quá trình học và trong thời gian thực hiện đề tài
Mặc dù đã cố gắng trong quá trình thực hiện nhưng cũng không thể tránh khỏi những sai sót, rất mong được thầy (cô) hướng dẫn thêm
Xin chân thành cảm ơn!
Sinh viên thực hiện đề tài Nguyễn Hải Đăng
Trang 4GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang ii MSSV: 1111517
MỤC LỤC
LỜI CẢM ƠN i
MỤC LỤC ii
DANH MỤC HÌNH ẢNH iv
DANH MỤC BẢNG vi
TÓM TẮT vii
ABSTRACT viii
CHƯƠNG 1 1
TỔNG QUAN 1
1.1 ĐẶT VẤN ĐỀ 1
1.2 LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ 1
1.3 PHẠM VI ĐỀ TÀI 2
1.4 PHƯƠNG PHÁP NGHIÊN CỨU VÀ HƯỚNG GIẢI QUYẾT 2
CHƯƠNG 2 4
CƠ SỞ LÝ THUYẾT 4
2.1 NODE.JS 4
2.2 EXPRESS FRAMEWORK 9
2.3 EJS TEMPLATE(EMBEDDED JAVASCRIPT TEMPLATE) 10
2.4 AJAX – JQUERY 13
2.5 MYSQL VÀ PHPMYADMIN 14
CHƯƠNG 3 16
NỘI DUNG VÀ KẾT QUẢ NGUYÊN CỨU 16
3.1 TỔNG QUAN HỆ THỐNG 16
3.1.1 Mô tả bài toán 16
3.1.2 Phân tích và thiết kế mô hình 17
3.1.2.1 Sơ đồ nghiệp vụ chức năng BFD 17
3.1.2.2 Sơ đồ Use case 19
3.1.2.3 Sơ đồ kịch bản(scenario) 21
Trang 5GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang iii MSSV: 1111517
3.1.2.4 Sơ đồ lớp 23
3.1.2.5 Mô tả các ràng buộc toàn vẹn cơ sở dữ liệu 36
3.1.2.6 Sơ đồ tuần tự 38
3.1.2.7 Sơ đồ ER 43
3.1.2.8 Sơ đồ cơ sở dữ liệu quan hệ 44
3.2 GIAO DIỆN – CÀI ĐẶT 50
3.2.1 Giao diện khách hàng 50
3.2.1.1 Trang chủ 50
3.2.1.2 Trang nội dung tin tức 50
3.2.1.3 Trang thông tin giá điện 52
3.2.1.4 Trang thông tin khách hàng 52
3.2.1.5 Trang xem thông tin công tơ điện 53
3.2.1.6 Trang nhập chỉ số điện năng tiêu thụ 54
3.2.1.7 Trang xem hóa đơn 54
3.2.1.8 Bản in hóa đơn 56
3.2.2 Giao diện nhân viên 57
3.2.2.1 Trang quản lý nhân viên 57
3.2.2.2 Trang quản lý khách hàng 57
3.2.2.3 Trang quản lý công tơ điện 58
3.2.2.4 Trang nhập số liệu điện năng tiêu thụ 59
3.2.2.5 Trang xem thông tin hóa đơn 59
3.2.2.6 Trang lập báo cáo thống kê 60
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 61
1 KẾT QUẢ ĐẠT ĐƯỢC 61
2 HẠN CHẾ 61
3 HƯỚNG PHÁT TRIỂN 62
TÀI LIỆU THAM KHẢO 63
PHỤ LỤC 64
Trang 6GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang iv MSSV: 1111517
DANH MỤC HÌNH ẢNH
Hình 2.1 - Cửa sổ cài đặt mô-đun trên Windows 7
Hình 2.2 - Ứng dụng Hello World 8
Hình 2.3 - Ứng dụng Hello World với express framework 9
Hình 2.4 - Ứng dụng hello World với Embedded Javascript Template 12
Hình 3.1 Sơ đồ nghiệp vụ chức năng BFD 17
Hình 3.2 Sơ đồ nghiệp vụ chức năng BFD(tiếp theo) 18
Hình 3.3 - Sơ đồ use case – Khách hàng 19
Hình 3.4 - Sơ đồ use case – Nhân viên quản lý 20
Hình 3.5 - Sơ đồ use case – Nhân viên quản lý(tiếp theo) 20
Hình 3.6 - Lớp nhân viên 23
Hình 3.7 - Lớp phòng ban 24
Hình 3.8 - Lớp khách hàng 25
Hình 3.9 - Lớp mục đích sử dụng 26
Hình 3.10 - Lớp công tơ điện 27
Hình 3.11 - Lớp hóa đơn 28
Hình 3.12 - Lớp trạm biến áp 29
Hình 3.13 - Quan hệ nhân viên – phòng ban 30
Hình 3.14 - Quan hệ nhân viên – hóa đơn 30
Hình 3.15 - Quan hệ hóa đơn – công tơ điện 31
Hình 3.16 - Quan hệ công tơ điện – khách hàng 31
Hình 3.17 - Quan hệ công tơ điện –trạm biến áp 32
Hình 3.18 - Quan hệ công tơ điện – mục đích sử dụng 32
Hình 3.19 - Quan hệ mục đích sử dụng – nhóm mục đích sử dụng 32
Hình 3.20 - Quan hệ mục đích sử dụng – giá điện bậc thang 33
Hình 3.21 - Quan hệ hóa đơn – giá điện 33
Hình 3.22 - Quan hệ khách hàng – ý kiến phản hồi 34
Hình 3.23 - Quan hệ nhân viên – tin tức 34
Trang 7GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang v MSSV: 1111517
Hình 3.24 - Sơ đồ lớp 35
Hình 3.25 - Sơ đồ tuần tự - Đăng nhập khách hàng 38
Hình 3.26 - Sơ đồ tuần tự - Thêm công tơ điện mới 39
Hình 3.27 Sơ đồ tuần tự - Khách hàng nhập chỉ số tiêu thụ điện 40
Hình 3.28 - Sơ đồ tuần tự khách hàng thanh toán hóa đơn 41
Hình 3.29 - Sơ đồ tuần tự khách hàng tìm kiếm hóa đơn 42
Hình 3.30 – Sơ đồ ER 43
Hình 3.31 - Mô hình cơ sở dữ liệu quan hệ 44
Hình 3.32 - Trang chủ phần khách hàng 50
Hình 3.33 - Trang nội dung tin tức 51
Hình 3.34 - Trang hiển thị kết quả tìm kiếm 51
Hình 3.35 - Trang thông tin giá điện 52
Hình 3.36 - Trang thông tin khách hàng 52
Hình 3.37 - Trang xem thông tin các công tơ điện 53
Hình 3.38 - Trang nhập chỉ số điện năng tiêu thụ 54
Hình 3.39 - Trang xem hóa đơn 55
Hình 3.40 - Bản in hóa đơn 56
Hình 3.41 - Trang quản lý nhân viên 57
Hình 3.42 - Trang quản lý khách hàng 57
Hình 3.43 - Trang quản lý công tơ điện 58
Hình 3.44 - Trang nhập chỉ số điện năng tiêu thụ 59
Hình 3.44 - Trang xem thông tin hóa đơn 59
Hình 3.46 - Trang lập báo cáo thống kê 60
Trang 8GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang vi MSSV: 1111517
DANH MỤC BẢNG
Bảng 3.1 - Scenario cho use case đăng nhập nhân viên 21
Bảng 3.2 - Scenario cho use case thêm công tơ điện 22
Bảng 3.3 - Thuộc tính của lớp nhân viên 23
Bảng 3.4 - Phương thức của lớp nhân viên 23
Bảng 3.5 - Thuộc tính của lớp phòng ban 24
Bảng 3.6 - Phương thức của lớp phòng ban 24
Bảng 3.7 - Thuộc tính của lớp khách hàng 25
Bảng 3.8 - Phương thức của lớp khách hàng 25
Bảng 3.9 - Thuộc tính của lớp mục đích sử dụng 26
Bảng 3.10 - Phương thức của lớp mục đích sử dụng 26
Bảng 3.11 - Thuộc tính của lớp công tơ điện 27
Bảng 3.12 - Phương thức của lớp công tơ điện 27
Bảng 3.13 - Thuộc tính của lớp hóa đơn 28
Bảng 3.14 - Thuộc tính của lớp trạm biến áp 29
Bảng 3.15 - Phương thức của lớp trạm biến áp 29
Bảng 3.16 - Các ràng buộc toàn vẹn 36
Bảng 3.17 - Tầm ảnh hưởng với bối cảnh nhân viên 36
Bảng 3.18 - Tầm ảnh hưởng với bối cảnh khách hàng 37
Bảng 3.19 - Tầm ảnh hưởng với bối cảnh hóa đơn 37
Bảng 3.20 - Cơ sở dữ liệu bảng nhân viên 45
Bảng 3.21 - Cơ sở dữ liệu bảng nhóm mục đích sử dụng 45
Bảng 3.22 - Cơ sở dữ liệu bảng khách hàng 46
Bảng 3.23 - Cơ sở dữ liệu bảng mục đích sử dụng 46
Bảng 3.24 - Cơ sở dữ liệu bảng công tơ điện 47
Bảng 3.25 - Cơ sở dữ liệu bảng hóa đơn 48
Bảng 3.26 - Cơ sở dữ liệu bảng phân mức giá 49
Bảng 3.27 - Cơ sở dữ liệu bảng hóa đơn chi tiết 49
Trang 9GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng
MSCB: 2301 Trang vii MSSV: 1111517
TÓM TẮT
Ngày nay, với sự phát triển rộng rãi của công nghệ thông tin và internet thì việc
quản lý, trao đổi và xử lý các thông tin trở nên dễ dàng hơn, việc quản lý tiền điện, tính
tiền điện cũng được tự động hóa rất nhiều do đó có thể đảm bảo công việc được xử lý
nhanh chóng, khách hàng cung cấp chỉ số tiêu điện năng thụ và thanh toán hóa đơn trực
tuyến thông qua internet giúp sẽ rút ngắn được thời gian, đơn giản hóa công việc, đạt
hiểu quả cao trong công tác quản lý Từ đó, đề tài “Xây dựng website quản lý việc thu
tiền điện trên địa bàn Phường An Hòa, Thành Phố Cần Thơ” được thực hiện để đáp ứng
nhu cầu như hiện nay qua đó tìm hiểu và áp dụng các kiến thức, công nghệ mới tạo nên
hệ thống hoàn chỉnh, hoạt động tốt, ổn định và nhanh chóng, đảm bảo hoạt động được
các chức năng như sau:
Quản lý thông tin nhân viên, thông tin khách hàng
Quản lý thông tin công tơ điện của khách hàng đang sử dụng
Cập nhật thông tin giá điện, tăng, giảm giá điện, thuế
Cho phép khách hàng nhập số liệu điện năng tiêu thụ trực tiếp trên hệ thống,
xem, thanh toán và in hóa đơn Khách hàng có thể đăng ký sử dụng điện khi
có nhu cầu sử dụng
Lập báo cáo, thống kê lượng điện tiêu thụ và doanh thu hàng tháng
Nội dung bài báo cáo được cấu trúc như sau:
Chương 1: Tổng quan trình bày những vấn đề về hiện trạng, các vấn đề cần giải
quyết và các hướng để giải quyết yêu cầu của bài toán
Chương 2: Cơ sở lý thuyết tìm hiểu tổng quát về Node.js, một môi trường phát
triển các ứng dụng về internet và các thành phần liên quan như: express.js – framework
hỗ trợ phát triển ứng dụng web, EJS (Embed Javascript) template engine, ajax và
jquery… và hệ quản trị cơ sở dữ liệu MySQL
Chương 3: Cơ sở dữ liệu bao gồm hai phần: trình bày tổng quan về hệ thống và
thực hiện cài đặt hệ thống
Chương 4: Kết luận và hướng phát triển trình bày tổng kết các phần đã thực hiện
được và các phần chưa thực hiện được Đưa ra các định hướng phát triển hệ thống và
chỉnh sửa các phần chưa thực hiện được
Từ khóa: Node.js, Express.js, Javascript Server Side, EJS Template …
Trang 10GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng
MSCB: 2301 Trang viii MSSV: 1111517
ABSTRACT
Nowadays, thanks to the wide development of information technology and internet,
the information management, exchange, and processing become more and more
convenient The electricity management and charges are also automatized, so it ensures
that the work will be processed faster The electric indexes consumption supply and
online bill payment through the internet helping us to save time, simplify tasks, achieve
high efficiency in management The topic “Designing website for managing electric
charges collection on An Hoa Ward, Can Tho city” is carried out to meet current needs
Therefore, learning and applying new knowledge, technology create complete, run-well,
stable and fast system, which make sure to operate functions follow:
Manage employee information, customer information
Manage the customer's electricity meter information are using
Update electricity price increase, reduced electricity prices, taxes
Allow customers to enter data directly power consumption on the system,
view, payments and print invoice Customers can register to use electricity
when demand
Make reports, statistics power consumption and monthly revenue
The contents of the report is structured as follows:
Chapter 1: General presenting the issues of status, issues solved and directions in
order to solve the requirements of problems
Chapter 2: Theoretical Foundations learn the general of Node.js being a
developing environment for Internet applications and related components such as
express.js - framework supporting to develop web application, EJS (JavaScript Embed)
template engine, ajax and jquery and management system MySQL database
Chapter 3: Database having two parts: General presentation of the system and
performance of the system installation
Chapter 4: Conclusion and developing direction presenting the conclusion of the
parts having been done and unrealized Giving the orientation of system development
and correcting the parts unrealized
Keyword: Node.js, Express.js, Server Side JavaScript, EJS templates
Trang 11GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 1 MSSV: 1111517
CHƯƠNG 1 TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ
Công nghệ thông tin trong giai đoạn hiện nay có nhiều bước phát triển mạnh mẽ trong mọi lĩnh vực Việc ứng dụng các phần mềm hệ thống quản lý vào các cơ quan, tổ chức kinh tế, xã hội rất phổ biến để tối ưu hóa các công việc, nâng cao hiệu quả sản xuất, tiết kiệm được nhiều thời gian chi phí và công sức
Những năm trước đây khi công nghệ thông tin chưa được phát triển rộng rãi, việc tính tiền điện được thực hiện theo phương pháp thủ công, rất mất thời gian mà không
xử lý được các bài toán phức tạp, độ chính xác không cao, quá trình lưu trữ dữ liệu không được đảm bảo an toàn và khi thống kê lại gặp rất nhiều khó khăn
Nhưng với ngày nay, những công việc quản lý được tin học hóa rất nhiều, những công việc tính toán từ đơn giản đến phức tạp được thực hiện bằng một vài thao tác đơn giản, việc thống kê dữ liệu với số lượng lớn trong vài năm đến vài chục năm là việc dễ dàng, qua đó có thể đưa ra các chiến lược, phương hướng phát triển tốt nhất
Bên cạnh đó, ngày càng có nhiều người sử dụng internet với nhiều thiết bị khác nhau, việc xây dựng hệ thống phù hợp với các thiết bị cũng là phần quan trọng Hệ thống xây dựng phải đáp ứng được số lượng truy cập rất lớn mà không làm chậm quá trình xử
lý ảnh hưởng đến người sử dụng Nhưng với sự phát triển rộng rãi của công nghệ thông tin thì bài toán được giải quyết cũng không mấy khó khăn, tuy nhiên việc giải quyết nó như thế nào, áp dụng nó ra sau là việc cần phải xem xét kỹ lưỡng qua đó mới phát triển được bài toán đạt hiệu quả cao
Đề tài “Xây dựng chương trình quản lý việc thu tiền điện trên địa bàn phường An
Hòa, Thành Phố Cần Thơ” áp dụng công nghệ mới – Node.js được phát triển để giải
quyết vấn đề trên
1.2 LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ
Đã có những đề tài liên quan đến việc quản lý thu tiền điện trên, nhìn chung cũng giải quyết được các vấn đề về tính tiền, xuất hóa đơn, quản lý được các danh mục như nhân viên, khách hàng…
Đề tài: Xây dựng website quản lý tiền điện của sinh viên Dương Thị Ái Quyên và Mai Thị Bích Vân, Trường Cao Đẳng Công Nghệ - Đại Học Đà Nẵng và một số đề tài
Trang 12GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 2 MSSV: 1111517
quản lý thu tiền điện trên nền Windows Application khác với các chức năng quản lý công tơ điện, quản lý khách hàng, tính tiền điện, xuất hóa đơn
Với đề tài “Xây dựng chương trình quản lý việc thu tiền điện trên địa bàn phường
An Hòa, Thành Phố Cần Thơ” được mở rộng thêm một số chức năng cần thiết khác như
quản lý nhân viên, mục đích sử dụng với các mức giá bậc thang, tính tiền điện theo một hoặc nhiều mức giá, lập báo cáo thống kê và đặc biệt cho phép khách hàng nhập chỉ số tiêu thụ trực tuyến trên hệ thống website, xem, thanh toán và in hóa đơn, hoàn chỉnh các phần những đề tài đã có chưa được hoàn thiện
1.3 PHẠM VI ĐỀ TÀI
Đề tài thực hiện để giải quyết việc thu tiền điện, quản lý khách hàng, nhân viên trên địa bàn phường An Hòa, Thành Phố Cần Thơ Bên cạnh đó, đề tài còn có thể ứng dụng
và triển khai hoạt động trên các cơ sở khác nhằm tạo hiệu quả cho quá trình quản lý việc
thu tiền điện
1.4 PHƯƠNG PHÁP NGHIÊN CỨU VÀ HƯỚNG GIẢI QUYẾT
- Tìm hiểu và phân tích hệ thống thông tin
- Tìm hiểu về mô hình ứng dụng trên nền tảng web
- Tìm hiểu công nghệ Node.js, lập trình Javascript trên server
Trang 13GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 3 MSSV: 1111517
- Dùng phần mềm Zend Studio 10.5, cài đặt thêm một số plugin để hỗ trợ lập trình Node.js, kiểm tra lỗi
Về hệ quản trị cơ sở dữ liệu:
Sử dụng hệ quản trị cơ sở dữ liệu MySQL để lưu dữ liệu, nhập dữ liệu để thử nghiệm bằng PHPMyadmin
Hướng giải quyết:
Sau khi tìm hiểu đẩy đủ thông tin, nắm rõ cơ sở lý thuyết và các bước đã phân tích phần hệ thống, bắt đầu tiến hành cài đặt (lập trình) hệ thống theo các bước đã định ra để hoàn tất bài toán Hệ thống sẽ đáp ứng được tất cả nhu cầu của khách hàng, cung cấp đầy đủ thông tin đến khách hàng, xử lý nhanh chóng chỉ một vài thao tác đơn giản
Về phân tích hệ thống: Khảo sát thực tế để đưa ra các yêu cầu quản lý và các chức năng của hệ thống
Về thiết kế hệ thống: Thiết kế cơ sở dữ liệu, giao diện với người dùng, thiết kế các chương trình xử lý của hệ thống, viết báo cáo kết quả làm được
Thử nghiệm: Chạy thử hệ thống, chỉnh sửa các lỗi phát sinh và hoàn thiện hệ thống, viết tài liệu hướng dẫn sử dụng
Trang 14GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 4 MSSV: 1111517
CHƯƠNG 2
CƠ SỞ LÝ THUYẾT 2.1 NODE.JS
Node.js là gì?
Node.js là một hệ thống phần mềm chạy trên môi trường V8 Javascript runtime được thiết kế để viết các ứng dụng internet có tính mở rộng cao, đặc biệt là các máy chủ web Ứng dụng Node.js được viết bằng Javascript, có thể hoạt động trên các hệ điều hành phổ biến như OS X, Microsoft Windows, Linux và FreeBSD
Node.js được tạo bởi Ryan Dahl từ năm 2009, và phát triển dưới sự bảo trợ của công
ty điện toán đám mây Joyent
Node.js sử dụng Google V8 Javascript engine để thực thi mã lệnh, phần lớn các đun cơ bản của được viết bằng Javascript Node.js chứa một thư viện built-in cho phép các ứng dụng hoạt động như một máy chủ web mà không cần phần mềm như Nginx, Apache HTTP Server hoặc IIS
mô-Node.js cung cấp kiến trúc hướng sự kiện và non-blocking I/O (chế độ nhập/xuất không đồng bộ) API để tối ưu hóa thông lượng của ứng dụng Những công nghệ này thường được sử dụng cho các ứng dụng thời gian thực (real-time applications) như ứng dụng chat, mạng xã hội …
Node.js sử dụng kiến trúc mô-đun để đơn giản hóa việc tạo ra các ứng dụng phức tạp Mô-đun trong Node.js cũng giống như các thư viện trong C, C#, Java … Mỗi một mô-đun chứa một tập các hàm chức năng có liên quan đến một đối tượng của mô-đun
Ví dụ http là mô-đun chứa các hàm cụ thể liên quan đến thiết lập HTTP Node.js cung cấp một vài các mô-đun core kèm theo để hỗ trợ chúng ta truy cập files trên hệ thống, tạo các máy chủ HTTP, TCP/UDP, và các hàm tiện ích nhỏ hữu dụng khác
Node.js được sử dụng làm nền tảng server-side bởi các website và dịch vụ nổi tiếng như Groupon, SAP, LinkedIn, Microsoft, Yahoo!, Walmart, Rakuten và PayPal
Trang 15GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 5 MSSV: 1111517
Google V8 Javascript Engine
V8 là Javascript execution engine được xây dựng cho trình duyệt Google Chrome Được viết bằng C++, V8 biên dịch mã nguồn Javascript just-in-time thành mã máy thay
vì thông dịch nó trong thời gian thực
Node.js chứa libuv để xử lý sự kiện không đồng bộ V8 cung cấp run-time cho Javascript Libuv là một abstraction layer cho các chức năng của hệ thống mạng và tập tin hệ thống trên cả Windows và các hệ thống POSIX-baseb như Linux, Mac OS X và Unix
Các ưu điểm của Node.js:
- Đặc điểm nổi bậc của Node.js là nó có thể nhận và xử lý nhiều kết nối, có thể đến hàng trăm nghìn kết nối cùng lúc, chỉ với một single-thread Điều này giúp hệ thống tốn ít RAM và chạy nhanh nhất khi không cần phải tạo thraed mới cho mỗi truy vấn giống như PHP
- Node.js sử dụng kỹ thuật điều khiển theo sự kiện Ngoài ra tận dụng ưu điểm của cơ chế nhập xuất không đồng bộ của Javascript mà Node.js tận dụng tốt đa tài nguyên của server mà không tạo ra độ trễ
- Do REST/JSON APIs gọn nhẹ là điều khiến NodeJS trở nên tốt hơn Với
cơ chế event-driven, non-blocking I/O (Input/Output) và mô hình kết hợp với Javascript là sự lựa chọn tuyệt vời cho các dịch vụ Webs làm bằng JSON
- Cùng với sự ra đời của các thiết bị di động và HTML5 nên Node.js rất hiệu quả khi xây dựng những ứng dụng thời gian thực
Trong Node.js, tất cả các I/O được thực hiện theo cách không đồng bộ (asynchronous), kết hợp với vòng lặp dựa trên sự kiện đơn luồng, đưa ra một cách mới
để thực hiện các ứng dụng Web thời gian thực Node.js do đó có thể giữ nhiều kết nối
có hiệu lực mà không cần phải từ chối kết nối mới đến
Ứng dụng Node.js thường chạy đơn luồng trên một nhân của CPU, mặc dù thực hiện
đa luồng được hỗ trợ trên Node.js 0.10+ từ JXcore
Với cơ chế xử lý không đồng bộ của Node.js cũng tương tự như hay ajax, jquery (một phần Javascript trên client)
Đồng bộ (synchronous) không đồng bộ (asynchronous) là gì?
Với hình thức lập trình đồng bộ, giả sử một hàm phải thực hiện n công việc thì những công việc này được thực hiện một cách tuần tự từ công việc đầu, khi hoàn thành rồi lần lượt đến các công việc kế tiếp nó và kết thúc ở công việc cuối cùng Tuy nhiên, theo hình thức không đồng bộ thì n công việc này không thực hiện tuần tự từ đầu đến cuối, khoảng thời gian thực hiện hàm thì tất cả n công việc được thực hiện cùng lúc tùy
Trang 16GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 6 MSSV: 1111517
vào thời gian và độ phức tạp của những công việc mà không đảm bảo rằng công việc nào sẽ hoàn thành trước
Ví dụ đoạn mã dưới đây:
Dòng thứ nhất thực hiện câu truy vấn đến cơ sở dữ liệu và dòng thứ hai in ra màn hình dòng chữ Hello World
Với phương pháp lập trình bình thường, tức là các đoạn mã thực hiện theo đúng thứ
tự Giả sử dòng lệnh thứ nhất thực hiện truy vấn diễn ra rất chậm, có thể mất vài giây thì trình biên dịch (interpreter) Javascript của Node.js trước tiên phải chờ khi thao tác với cơ sở dữ liệu hoàn tất mới thực hiên câu lệnh thứ hai Nếu đoạn mã trên được viết bằng PHP thì cũng được thực hiên tương tự, nếu đoạn mã là một phần của một trang web thì thời gian chờ tải trang của người dùng có thể lên đến vài giây
Tuy nhiên, để tránh tình trạng này xảy ra, Javascript và Node.js đưa ra khái niệm dựa theo sự kiện (event-driven), gọi ngược không đồng bộ (asynchronous callback), bằng cách sử dụng vòng lặp sự kiện(event loop)
Cấu trúc mã lệnh được thay đổi lại như sau:
});
Ở đây, thay vì chờ đợi database.query() trực tiếp trả về kết quả, ta truyền vào nó một tham số, hay là một hàm tùy ý nào đó
Bây giờ thì Node.js đã có thể xử lý các truy vấn đến cơ sở dữ liệu một cách không đồng bộ, giả sử hàm database.query() được cung cấp sẳn bởi một thư viện chuyên
xử lý không đồng bộ (asynchronous library) thì đoạn mã được thực hiện như sau: nó sẽ thực hiện truy vấn đến cơ sở dữ liệu Nhưng thay vì chờ kết quả thực hiện truy vấn kết thúc, nó sẽ ghi nhớ rằng đến thời điểm nào đó khi truy vấn kết thúc và kết quả được trả
về nó sẽ thực hiện những gì được viết trong hàm vô danh (hàm được truyền như là một tham số cho database.query()) Ngay lúc này sẽ thực hiện câu lệnh in ra màn hình
khi có một sự kiện nào đó tác động đến ví dụ như thực hiện câu lệnh truy vấn có kết quả trả về
Cài đặt Node.js:
Trang 17GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 7 MSSV: 1111517
Tải gói cài đặt Node.js từ trang chủ nodejs.org, nền tảng Windows hoặc Linux và
tiến hành cài đặt như thông thường Mặc định các mô-đun phụ thuộc cơ bản như http
được tích hợp sẵn khi cài đặt Node.js, bên cạnh đó Node.js còn có thêm chưong trình quản lý thư viện các mô-đun NPM(Node Package Manager), sử dụng NPM để cài đặt,
gỡ bỏ cài đặt, cập nhật và quản lý các mô-đun cho Node.js
Thiết lập biến môi trường cho Node.js
Sau khi cài đặt Node.js xong, cần tiến hành thiết lập biến môi trường để sử dụng lệnh trên Commnd Prompt mà không cần phải trỏ đến thư mục cài đặt Node.js
Vào Control Panel > All Control Panel Items > System và chọn Change settings
Ở cửa sổ System Properties chọn tab Advanced và chọn Environment Variables
Ở phần System variables chọn Path và nhấn edit
Ở textbox Variable value thêm vào cuối dòng như sau: C:\Program Files\nodejs\;
(thư mục cài đặt Node.js)
Để cài đặt mô-đun phụ thuộc, trên cửa sổ Command Prompt của Windows hoặc, Terminal của Linux hoặc Command Line của Node.js tiến hành cài đặt bằng lệnh:
npm install node_modules
Việc cài đặt bằng lệnh không phụ thuộc vào nền tảng hệ điều hành đang sử dụng
Hình 2.1 - Cửa sổ cài đặt mô-đun trên Windows
Ví dụ:
Tạo một ứng dụng đơn giản với tập tin server.js có nội dung:
Trang 18GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 8 MSSV: 1111517
Lệnh require("http") để include mô-đun htttp
xử lý mỗi khi có yêu cầu đến từ client
Với lệnh:
response.writeHead(200,{
'Content-Type': 'text/plain'
});
200 là mã trạng thái thành công của http, tham số thứ hai là thông tin loại dữ liệu trả
về dạng văn bản thuần: text/plain
Server ghi 'Hello World!' đến client và lắng nghe ở công 8080
Sau khi đã cài Node.js và các mô-đun cần thiết, để thực thi trên Command Prompt
di chuyển đến thư mục chứa tập tin server.js và thực hiên lệnh:
node server.js
Kết quả thực hiện trên trình duyệt:
Hình 2.2 - Ứng dụng Hello World
Trang 19GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 9 MSSV: 1111517
2.2 EXPRESS FRAMEWORK
Express Framework hay Express.js là một framework tốt nhất theo mô hình MVC
(Model View Controller) được thiết kế để xây dựng cho các ứng dụng web Node.js
Express.js cung cấp rất nhiều tính năng mạnh mẽ trên nền tảng web và các ứng dụng di
động, hỗ trợ các phương thức HTTP và middleware(phần mềm trung gian) tạo ra một API(Application Programming Interface) rất mạnh mẽ và dễ dàng sử dụng
Cài đặt mô-đun express:
Từ dòng lệnh CMD của Windows hoặc Terminal của Linux, cài đặt Framework Express thông qua câu lệnh:
npm install express
Sau khi cài đặt, để sử dụng được các hàm của express, include mô-đun vào:
});
Kết quả chạy trên trình duyệt:
Hình 2.3 - Ứng dụng Hello World với express framework
Một số thuộc tính và phương thức cơ bản của Express.js:
- Thuộc tính
app.locals.title = ‘My app’;
app.locals.title // => My app
Trang 20GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 10 MSSV: 1111517
app.locals là một đối tượng của javascript, có phạm vi truy cập trong ứng dụng Khi
đã gán giá trị, nó tồn tại trong suốt quá trình thực thi ứng dụng Khác với res.locals chỉ tồn tại trong khoảng thời gian yêu cầu của client
- Phương thức
app.get(path, callback [, callback ])
Nhận phương thức GET từ client
app.post(path, callback [, callback ])
Nhận phương thức POST từ client
Ví dụ: res.json({name : ‘My name’});
2.3 EJS TEMPLATE(EMBEDDED JAVASCRIPT TEMPLATE)
Khi tạo một ứng dụng Node.js, cách dễ dàng và nhanh chóng là sử dụng một template engine để thiết kế, template engine là ngôn ngữ trình bày dữ liệu Có nhiều template engine hỗ trợ cho Node.js như: CoffeeKuo, EJS, Haml-js, Haml.js, Jade, JQTpl, Swig, Teml8…
Jade template mặc định được cài sẵn khi bắt đầu cài đặt Node.js Tuy nhiên ở phạm
vi đề tài này sẽ sử dụng EJS template
EJS là một thư viện Javascript, cú pháp sử dụng đơn giản và tương tự như ngôn ngữ lập trình web PHP, được sử dụng để xây dựng mã html từ dữ liệu có cấu trúc JSON Cài đặt mô-đun ejs với lệnh:
npm install ejs
Trang 21GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 11 MSSV: 1111517
Sau đó thêm dòng lệnh cấu hình vào:
Định nghĩa app.set('views', dirname) sẽ dò tìm các views hiển thị trong thư mục hiện tại dirname, và app.set('view engine','ejs') để cấu hình template engine là ejs
Khi client gửi yêu cầu để hiển thị một trang nào đó, server sẽ dò tìm các file view tương ứng, lúc này template engine sẽ lấy dữ liệu và chuyển đổi lại thành ngôn ngữ html trả về trình duyệt của người dùng để hiển thị
EJS được nhúng trực tiếp vào mã lệnh html, các mã lệnh EJS được viết trong cặp
thẻ EJS: ejs.open('<<'), và ejs.close('>>')
Giá trị của EJS được in với dấu (=): <%=title %>, nhưng với giá trị muốn in thành mã html để trả về trình duyệt phải được bắt đầu bằng dấu (-):
<%-‘<h1>Hello World</h1>’ %>,
Ví dụ:
Tạo tập tin server.js có nội dung:
Javascript Example'});
});
});
Trang 22GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 12 MSSV: 1111517
Và một tập tin ejs-example.ejs có nội dung:
Trang 23GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 13 MSSV: 1111517
2.4 AJAX – JQUERY
AJAX
AJAX, viết tắt từ Asynchronous JavaScript and XML (JavaScript và XML không đồng bộ) là một công nghệ cho phép làm tăng tốc độ ứng dụng web bằng kỹ thuật cắt nhỏ dữ liệu, chỉ hiển thị những gì cần thiết thay vì tải đi tải lại trang web
AJAX được viết bằng Javascript và chạy trên client, thông qua Javascript để cung cấp một công nghệ phía client-script để thực hiện ngầm các tác vụ giao tiếp với server, gửi yêu cầu đến server thực hiện, nhận thông tin trả về qua đó có thể cập nhật thông tin trang web nhanh chóng mà không cần phải tải lại trang web
Một số thư viện Javascript hỗ trợ như JQuery, Angular
Ví dụ để kiểm tra tên đăng nhập của một người dùng đăng ký vào hệ thống trang web, khi người dùng vừa nhập xong tên đăng nhập, ngay lập tức Javascript lấy thông tin vừa nhập vào và gửi ngầm lên server để kiểm tra tên đăng nhập có hợp lệ hay trùng trong cơ sở dữ liệu hay không và thông báo ngay đến người dùng để thay đổi mà không cần phải đợi nhập tất cả thông tin rồi gửi đến server kiểm tra
JQUERY
JQuery là một thư viện mới của Javascript được tạo bởi John Resig vào năm 2006, JQuery định nghĩa sẵn các phương thức giúp đơn giản hóa cách viết Javascript, tăng tốc
độ xử lý sự kiện trên các trang web, tương tác đến các phần tử html
Các tính năng được hỗ trợ từ JQuery:
Hướng tới các thành phần trong tài liệu html, thay đổi giao diện trang web
Tương tác với người dùng
Xử lý sự kiện
Hỗ trợ Ajax
Tạo hiệu ứng động cho những thay đổi của phần tử html
Lấy thông tin trả về từ server mà không cần tải lại trang web
Gọn nhẹ
Được hỗ trợ bởi hầu hết các trình duyệt hiện đại
Cập nhật và hỗ trợ các công nghệ web mới nhất (như HTML5 và CSS3) Tải thư viện từ trang chủ của JQuery https://jquery.com/ và nhúng tập tin javascript vào
<script type="text/javascript" src=
"jquery-1.11.2.js"></script>
Trang 24GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 14 MSSV: 1111517
2.5 MYSQL VÀ PHPMYADMIN
MYSQL
MySQL là hệ quản trị cơ sở dữ liệu mã nguồn mở phổ biến nhất thế giới, có tốc độ
xử lý nhanh, ổn định và dễ sử dụng, hoạt động trên nhiều hệ điều hành, cung cấp một hệ thống lớn các hàm tiện ích rất mạnh, tốc độ và tính bảo mật cao, MySQL thích hợp cho các ứng dụng có truy cập cơ sở dữ liệu trên internet
MySQL là một trong những ví dụ rất cơ bản về hệ quản trị cơ sở dữ liệu quan hệ sử dụng ngôn ngữ truy vấn có cấu trúc (SQL)
Một số đặc điểm nổi bậc của MySQL Server:
Linh hoạt: Sự linh hoạt về flatform là một đặc tính nổi bật của MySQL với các phiên bản đang được hỗ trợ của Linux, Unix, Windows, MySQL cho phép tùy biến hoàn toàn theo ý muốn, thêm vào các yêu cầu thích hợp cho database server
Thực thi cao: Các chuyên gia cơ sỡ dữ liệu có thể cấu hình máy chủ cơ sở dữ liệu MySQL đặc trưng cho các ứng dụng đặc thù thông qua kiến trúc storage-engine MySQL có thể đáp ứng khả năng xử lý những yêu cầu khắt khe nhất của từng hệ thống, MySQL còn đưa ra các “công cụ” cần thiết cho các hệ thống doanh nghiệp khó tính bằng tiện ích tải tốc độ cao, bộ nhớ cache và các cơ chế xử lý nâng cao khác
Hỗ trợ giao dịch: MySQL hỗ trợ giao dịch mạnh một cách tự động, thống nhất, độc lập và bền vững, ngoài ra khả năng giao dịch cũng được phân loại
và hỗ trợ giao dịch đa dạng mà người viết không gây trở ngại cho người đọc
và ngược lại Các dữ liệu được đảm bảo toàn vẹn trong suốt quá trình server
có hiệu lực và các mức giao dịch độc lập được chuyên môn hóa cao
Nơi tin cậy để lưu trữ web và dữ liệu: Do MySQL có engine xử lý tốc độ cao
và khả năng chèn dữ liệu nhanh, hỗ trợ tốt cho các chức năng chuyên dùng cho web nên MySQL là lựa chọn tốt nhất cho các ứng dụng web và các ứng dụng web doanh nghiệp
Bảo mật tốt: Tính năng bảo mật dữ liệu tuyệt đối vì đó chính là lợi ích quan trọng hàng đầu, và đó cũng là lý do mà các chuyên gia về cơ sỡ dữ liệu chọn dùng MySQL MySQL có các kỹ thuật mạnh trong việc xác nhận truy cập cơ
sở dữ liệu và chỉ có người dùng đã được xác nhận mới có thể truy cập vào server cơ sở dữ liệu Bên cạnh đó, tiện ích backup và recovery cho phép backup logic và recovery toàn bộ hoặc tại một thời điểm nào đó
Phát triển ứng dụng hỗn hợp: MySQL cung cấp hỗ trợ hỗn hợp cho bất kỳ sự phát triển ứng dụng nào nên MySQL được xem là cơ sở dữ liệu mã nguồn
Trang 25GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 15 MSSV: 1111517
mở phổ biến nhất thế giới Thư viện plugin có sẵn để nhúng vào cơ sở dữ liệu MySQL hỗ trợ trong bất kỳ ứng dụng nào MySQL còn cung cấp các bộ kết nối cho phép tất cả các form của ứng dụng ưu tiên sử dụng MySQL như một server quản lý dữ liệu
Dễ quản lý: Quá trình cài đặt MySQL diễn ra khá nhanh chóng trên Microsoft Windows, Linux, Macintosh hoặc Unix Sau khi cài đặt, các tính năng tự động mở rộng không gian, tự khởi động lại và cấu hình động được thiết lập sẵn sàng cho người quản trị cơ sở dữ liệu làm việc
Mã nguồn mở tự do và được hỗ trợ xuyên suốt
Chi phí thấp
Mục đích sử dụng cơ sở dữ liệu bao gồm các chức năng như: lưu trữ (storage), truy cập (accessibility), tổ chức (organization) và xử lý (manipulation)
PHPMYADMIN
phpMyAdmin là một công cụ mã nguồn mở miễn phí được viết bằng ngôn ngữ PHP
để xử lý quản trị của cơ sở dữ liệu MySQL thông qua một trình duyệt web Nó có thể thực hiện nhiều tác vụ như tạo, sửa đổi hoặc xóa bỏ cơ sở dữ liệu, bảng, các trường hoặc bản ghi; thực hiện báo cáo SQL; hoặc quản lý và cấp phép người dùng
Các chức năng của phpMyadmin:
Xem dữ liệu, xóa cơ sở dữ liệu, bảng, view, trường và các chỉ số
Tạo, sao chép, xóa, đổi tên và thay đổi cơ sở dữ liệu, các bảng các trường và chỉ số
Bảo trì Server, các cơ sở dữ liệu, các bảng
Thực hiện, thao tác và bookmark bất kỳ câu lệnh SQL hoặc một khối lệnh
Nạp những tập tin văn bảng vào các bảng, tạo và đọc nhiều bảng
Xuất dữ liệu ra nhiều kiểu đinh dạng CSV, XML, PDF, Open text, Excel…
Quản trị nhiều Server, quản lý người dùng và quyền người dùng
Sử dụng truy vấn bằng ví dụ, tạo các truy vấn phức tạp một cách tự động
Thực hiện nhớ dữ liệu với bất kỳ định dạng sử dụng với những chức năng được thiết lập trước như: dữ liệu dạng ảnh, liên kết
Hỗ trợ MySQLi
Bên cạnh đó phpMyadmin còn hỗ trợ hơn năm mươi ngôn ngữ khác nhau
Trang 26GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 16 MSSV: 1111517
CHƯƠNG 3 NỘI DUNG VÀ KẾT QUẢ NGUYÊN CỨU 3.1 TỔNG QUAN HỆ THỐNG
3.1.1 Mô tả bài toán
Để giải quyết bài toán được tối ưu, cần phải nhìn nhận tổng quát các vấn đề, thu thập đầy đủ thông tin cần thiết, phân tích tính logic của thông tin, dữ liệu, quá trình hoạt động của hệ thống đảm bảo rằng không có sai sót thông tin, thiếu thông tin Với việc quản lý thu tiền điện hệ thống đảm bảo được đầy đủ các thông tin sau:
Về nhân viên: mỗi nhân viên trong cơ quan đều được quản lý bởi mã nhân viên, họ tên, ngày sinh, giới tính, địa chỉ số điện thoại , bên cạnh đó mỗi nhân viên trực thuộc một phòng ban, có quyền riêng, chức năng riêng khi nhân viên thuộc các phòng ban khác nhau
Cơ quan có nhiều phòng ban, mỗi phòng có tên gọi khác nhau và có chức năng làm việc, quản lý khác nhau, mỗi phòng ban có ngày thành lập phòng ban đó
Mỗi khách hàng sử dụng điện bao gồm các thông tin mã số, họ tên khách hàng, địa chỉ, số điện thoại và một tài khoản đăng nhập vào hệ thống website Khách hàng có thể xem thông tin cá nhân, xem giá điện và chi tiết quá trình sử dụng điện hằng tháng của mình thông qua các hóa đơn, in hóa đơn
Khách hàng có một hay nhiều tài khoản ngân hàng, các tài khoản này được quản lý cho quá trình thanh toán hóa đơn trên website
Mỗi khách hàng có thể sử dụng từ một đến ba công tơ điện (tùy theo quy định của
cơ quan), có thể giống hoặc khác mục đích sử dụng
Công tơ điện có mỗi mã số riêng biệt, mỗi công tơ điện thuộc một trạm biến áp và một chỉ số cột điện, có mục đích sử dụng riêng, để dễ dàng thống kê theo các tiêu chí khác nhau, mỗi mục đích sử dụng có các đơn giá tính khác nhau
Đơn giá điện được tính theo các mức khác nhau tùy theo mục đích sử dụng, đơn giá
cố định hoặc được tính theo dạng bậc thang, dạng bậc thang tức là chỉ số tiêu thụ điện năng được phân theo nhiều cấp tính đơn giá khác nhau, chỉ số cấp bậc thang được cơ quan quy định và có thể thay đổi trong quá trình cung cấp điện cho khách hàng
Thông tin trạm biến áp bao gồm: mã trạm, tên trạm biến áp, địa chỉ (nơi đặt trạm),
có thể thêm ghi chú
Trang 27GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 17 MSSV: 1111517
Hằng tháng, yêu cầu khách hàng phải nhập số liệu điện năng tiêu thụ của những công tơ điện mà khách hàng đang sử dụng, lưu lại số liệu để xuất trình hóa đơn báo tiền điện, hóa đơn thanh toán tiền điện và để tính cho tháng tiếp theo Việc nhâp số liệu được thực hiện bằng hai cách, có thể do nhân viên cơ quan nhập hoặc do khách hàng nhập vào tương ứng với các công tơ điện đang sử dụng khi đăng truy cập vào hệ thống website
Số tiền thanh toán dựa vào chỉ số tiêu thụ điện năng của tháng đó, đơn giá sử dụng điện, thuế Chỉ số điện năng tiêu thụ được tính theo chỉ số hiện tại và chỉ số của tháng trước đó hay còn gọi là chỉ số đầu và chỉ số cuối
Hóa đơn bao gồm các thông tin mã hóa đơn, thông tin của cơ quan, khách hàng và thông tin điện năng tiêu thụ, số tiền phải thanh toán ứng với tháng đó
Khách hàng có thể thanh toán hóa đơn tiền điện trực tiếp cho nhân viên thu tiền điện, tại cơ quan và có thể thanh toán thông qua tài khoản ngân hàng của mình đã đăng
3.1.2 Phân tích và thiết kế mô hình
3.1.2.1 Sơ đồ nghiệp vụ chức năng BFD
Sơ đồ nghiệp vụ chức năng đối với khách hàng
Hình 3.1 Sơ đồ nghiệp vụ chức năng BFD
Trang 28GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 18 MSSV: 1111517
Sơ đồ nghiệp vụ chức năng đối với nhân viên quản lý
Hình 3.2 Sơ đồ nghiệp vụ chức năng BFD (tiếp theo)
Trang 29GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 19 MSSV: 1111517
3.1.2.2 Sơ đồ Use case
Sơ đồ use case cho khách hàng
Khi khách hàng sử dụng hệ thống gồm có các chức năng như: xem các bài đăng tin tức, xem giá điện, thuế Bên cạnh đó sau khi khách hàng đăng nhập khách hàng có thể xem thông tin cá nhân của mình, thông tin những công tơ điện đang sử dụng, nhập chỉ số tiêu thụ điện năng, xem và thanh toán hóa đơn, tìm kếm hóa đơn
Hình 3.3 - Sơ đồ use case – Khách hàng
Sơ đồ use case nhân viên quản lý
Đối với người quản lý bao gồm các chức năng như: quản lý nhân viên, quản lý khách hàng, quản lý công tơ điện, quản lý các bài đăng, cập nhật tramk biến áp, cập nhật giá điện, thuế, tìm kiếm nhân viên, tìm kiếm khách hàng, tìm kiếm và in hóa đơn…
Trang 30GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 20 MSSV: 1111517
Hình 3.4 - Sơ đồ use case – Nhân viên quản lý
Sơ đồ use case nhân viên quản lý(tiếp theo)
Hình 3.5 - Sơ đồ use case – Nhân viên quản lý (tiếp theo)
Trang 31GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 21 MSSV: 1111517
3.1.2.3 Sơ đồ kịch bản(scenario)
Sơ đồ kịch bản cho use case khách hàng đăng nhập
Tên use case Khách hàng đăng nhập
Tác nhân chính Khách hàng
Người chịu trách nhiệm Khách hàng
Tiền điều kiện
Đảm bảo tối thiểu
Đảm bảo thành công Khách hàng đăng nhập và sử dụng
được các chức năng của hệ thống Kích hoạt Khách hàng chọn chức năng đăng nhập
hệ thống Chuỗi sự kiện chính:
1 Hệ thống hiển thị trang đăng nhập và yêu cầu khách hàng nhập thông tin tên đăng nhập và mật khẩu vào
2 Khách hàng nhập thông tin và submit
3 Hệ thống kiểm tra thông tin nhập vào và xác nhận đăng nhập thành công
Ngoại lệ:
3 Hệ thống thông báo thông tin đăng nhập không đúng
3.1 Hệ thống yêu cầu khách hàng nhập lại thông tin
3.2 Khách hàng nhập lại thông tin và đăng nhập
Bảng 3.1 - Scenario cho use case đăng nhập nhân viên
Trang 32GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 22 MSSV: 1111517
Sơ đồ kịch bản cho use case thêm công tơ điện
Tên use case Thêm công tơ điện
Tác nhân chính Nhân viên
Người chịu trách nhiệm Nhân viên quản lý
Tiền điều kiện Nhân viên đã đăng nhập vào hệ thống Đảm bảo tối thiểu Hệ thống xóa bỏ các thông tin đã thêm
và quay lui lại bước trước Đảm bảo thành công Thông tin về công tơ điện, khách hàng
mới được thêm vào hệ cơ sở dữ liệu Kích hoạt Nhân viên chọn chức năng thêm công
tơ điện trên menu Chuỗi sự kiện chính:
4 Hệ thống hiển thị form thêm công tơ điện, form thêm khách hàng nếu là khách hàng mới và yêu cầu nhân viên nhập thông tin vào
5 Nhân viên nhập thông tin và kiểm tra
6 Hệ thống kiểm tra thông tin nhập vào và xác nhận hợp lệ
7 Hệ thống thêm thông tin công tơ điện, thông tin khách hàng nếu là khách hàng mới vào cơ sở dữ liệu
8 Hệ thống thông báo thành công
9 Nhân viên thoát khỏi chức năng thêm công tơ điện
Ngoại lệ:
3.a Hệ thống thông báo khách hàng đã tồn tại
3.a.1 Hệ thống yêu cầu có thêm công tơ điện cho khách hàng đã tồn tại hay không
3.a.2 Nhân viên chọn thêm, nhập thông tin công tơ điện và lưu lại
3.a.3 Hệ thống thêm và thông báo thành công
3.b Hệ thống thông báo thông tin khách hàng, công tơ điện mới không hợp lệ
3.b.1 Hệ thống yêu cầu nhân viên nhập lại thông tin
3.b.2 Nhân viên nhập lại thông tin
Bảng 3.2 - Scenario cho use case thêm công tơ điện
Trang 33GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 23 MSSV: 1111517
3.1.2.4 Sơ đồ lớp
Sau khi phân tích thông tin, các chức năng của hệ thống ta được các lớp sau đây:
Lớp nhân viên
Hình 3.6 - Lớp nhân viên
Diễn giải các thuộc tính và phương thức của lớp nhân viên
Thuộc tính Diễn giải
manv Mã số nhân viên hoten Họ tên nhân viên ngaysinh Ngày sinh
gioitinh Giới tính diachi Địa chỉ sodienthoai Số điện thoại email Địa chỉ email matkhau Mật khẩu đăng nhập hệ thống trangthai Trạng thái nhân viên
Bảng 3.3 - Thuộc tính của lớp nhân viên
Phương thức Diễn giải
themnv Thêm nhân viên mới suathongtinnv Sửa thông tin nhân viên xoanv Xóa nhân viên
dangnhap Đăng nhập hệ thống
Bảng 3.4 - Phương thức của lớp nhân viên
Trang 34GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 24 MSSV: 1111517
Lớp phòng ban
Hình 3.7 - Lớp phòng ban
Diễn giải các thuộc tính và phương thức của lớp phòng ban
Thuộc tính Diễn giải
maphongban Mã phòng ban tenphongban Tên phòng ban ghichu Ghi chú
ngaythanhlap Ngày thanh lập phòng ban
Bảng 3.5 - Thuộc tính của lớp phòng ban
Phương thức Diễn giải
themphongban Thêm phòng ban mới xoaphongban Xóa phòng ban get_ngaythanhlap Lấy thông tin ngày thành lập
Bảng 3.6 - Phương thức của lớp phòng ban
Trang 35GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 25 MSSV: 1111517
Lớp khách hàng
Hình 3.8 - Lớp khách hàng
Diễn giải các thuộc tính và phương thức của lớp khách hàng
Thuộc tính Diễn giải
makhachhang Mã khách hàng hotenkh Họ tên khách hàng gioitinh Giới tính
ngaysinh Ngày sinh diachi Địa chỉ sodienthoai Số điện thoại matkhau Mật khẩu trangthai Trạng thái
Bảng 3.7 - Thuộc tính của lớp khách hàng
Phương thức Diễn giải
themkh Thêm khách hàng suathongtinkh Sửa thông tin khách hàng xoakh Xóa khách hàng
xemthongtinkh Xem thông tin khách hàng thanhtoanhoadon Thanh toán hóa đơn
Bảng 3.8 - Phương thức của lớp khách hàng
Trang 36GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 26 MSSV: 1111517
Lớp mục đích sử dụng
Hình 3.9 - Lớp mục đích sử dụng
Diễn giải các thuộc tính và phương thức của thực mục đích sử dụng
Thuộc tính Diễn giải
mamucdich Mã mục đích sử dụng mucdich Tên mục đích sử dụng thue Mức thuế
giabacthang Giá bậc thang(có tính theo giá
bậc thang hay không)
Bảng 3.9 - Thuộc tính của lớp mục đích sử dụng
Phương thức Diễn giải
themmucdichsd Thêm mục đích sử dụng xoamucdichsd Xóa mục đích sử dụng get_dongia Trả về đơn giá của mục đích
sử dụng get_thue Trả về thuế của mục đích sử
dụng
Bảng 3.10 - Phương thức của lớp mục đích sử dụng
Trang 37GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 27 MSSV: 1111517
Lớp công tơ điện
Hình 3.10 - Lớp công tơ điện
Diễn giải các thuộc tính và phương thức của lớp công tơ điện
Thuộc tính Diễn giải
macongto Mã công tơ điện chisocot Chỉ số cột điện chisomoinhat Chỉ số mới nhất của công tơ
điện ngayghicscuoi Ngày ghi nhận chỉ số cuối
cùng của công tơ điện trangthai Trạng thái
Bảng 3.11 - Thuộc tính của lớp công tơ điện
Phương thức Diễn giải
themcongtodien Thêm công tơ điện suathongtincongto
dien
Sửa thông tin công tơ điện
xoacongtodien Xóa công tơ điện get_chisomoinhat Trả về chỉ số mới nhất của
công tơ điện
Bảng 3.12 - Phương thức của lớp công tơ điện
Trang 38GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 28 MSSV: 1111517
Lớp hóa đơn
Hình 3.11 - Lớp hóa đơn
Diễn giải các thuộc tính của lớp hóa đơn
Thuộc tính Diễn giải
mahoadon Mã hóa đơn tungay Ngày bắt đầu của kỳ thu denngay Ngày kết thúc của kỳ thu chisomoi Chỉ số mới
chisocu Chỉ số cũ chisothucthu Chỉ số thực thu thanhtoan Thanh toán trước thuế thue Mức thuế
thuthue Tiền thuế thanhtoan Tổng thanh toán sau thuế ngaylap Ngày lập hóa đơn
dathanhtoan Đã thanh toán (xác nhận hóa
đơn đã thanh toán hay chưa) ngaythanhtoan Ngày thanh toán hóa đơn
Bảng 3.13 - Thuộc tính của lớp hóa đơn
Trang 39GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 29 MSSV: 1111517
Lớp trạm biến áp
Hình 3.12 - Lớp trạm biến áp
Diễn giải các thuộc tính và phương thức của lớp trạm biến áp
Thuộc tính Diễn giải
matram Mã trạm biến áp tentram Tên trạm biến áp ghichu Ghi chú
Bảng 3.14 - Thuộc tính của lớp trạm biến áp
Phương thức Diễn giải
themtrambienap Thêm trạm biến áp suathongtintram Sửa thông tin trạm biến áp xoatrambienap Xóa tram biến áp
Bảng 3.15 - Phương thức của lớp trạm biến áp
Trang 40GVHD: Th.S Lê Minh Lý SV: Nguyễn Hải Đăng MSCB: 2301 Trang 30 MSSV: 1111517
Phân tích mối quan hệ giữa các lớp
Quan hệ nhanvien - phongban
Hình 3.13 - Quan hệ nhân viên – phòng ban
Diễn giải: Mỗi nhân viên chỉ thuộc một phòng ban, mỗi phòng ban có nhiều nhân viên
Quan hệ nhanvien - hoadon
Hình 3.14 - Quan hệ nhân viên – hóa đơn
Diễn giải: Nhân viên có thể lập nhiều hoặc không lập hóa đơn nào, mỗi hóa đơn chỉ được lập bởi một nhân viên