Tải bản đầy đủ (.pdf) (83 trang)

Xây dựng hệ thống phần mềm quản lý bãi gửi xe

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.8 MB, 83 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>Xây dựng hệ thống phần mềm quản lý bãi gửi xe</b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>Danh mục thuật ngữ ... xiv</b>

<b>Chương 1 Giới thiệu đề tài ... 1</b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

2.3.2 Đặc tả use case Thêm nhân viên gác chắn ... 18

2.3.3 Đặc tả Use Case Cập nhật nhân viên gác chắn ... 20

2.3.4 Đặc tả Use Case Quẹt thẻ... 21

2.4 Yêu cầu phi chức năng... 22

2.4.1 Tính khả chuyển ... 22

2.4.2 Tính dễ dùng ... 23

2.4.3 Yêu cầu về giao diện người dùng ... 23

2.4.4 Yêu cầu về hiệu năng ... 23

2.4.5 Yêu cầu về bảo mật ... 23

3.2.6 Google Cloud Vision API ... 30

<b>Chương 4 Phát triển và triển khai ứng dụng ... 32</b>

4.1 Thiết kế kiến trúc ... 32

4.1.1 Lựa chọn kiến trúc phần mềm ... 32

4.1.2 Thiết kế tổng quan ... 34

4.1.3 Thiết kế chi tiết gói ... 35

4.2 Thiết kế chi tiết ... 37

4.2.1 Thiết kế giao diện ... 37

4.2.2 Thiết kế lớp ... 38

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

4.2.3 Thiết kế cơ sở dữ liệu ... 42

5.2 Tương thích tốt với nhiều loại camera ... 59

5.3 Bảo mật dữ liệu nhạy cảm... 60

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>Hình 2.1 Biểu đồ Use Case tổng quan hệ thống ... 5</b>

<b>Hình 2.2 Biều đồ Use Case phân rã cho chức năng “Quản lí Cơng ti” ... 6</b>

<b>Hình 2.3 Biểu đồ Use Case phân rã cho chức năng “Quản lí nhân viên gác chắn” ... 7</b>

<b>Hình 2.4 Biểu đồ Use Case phân rã cho chức năng “Quản lí hợp đồng” ... 7</b>

<b>Hình 2.5 Biểu đồ Use Case phân rã cho chức năng “Quản lí trạm gác” ... 8</b>

<b>Hình 2.6 Biểu đồ Use Case phân rã cho chức năng “Thống kê” ... 9</b>

<b>Hình 2.7 Bảng phân cấp vai trị ... 11</b>

<b>Hình 2.8 Quy trình nghiệp vụ Đăng nhập ... 12</b>

<b>Hình 2.9 Quy trình nghiệp vụ Quẹt thẻ ... 13</b>

<b>Hình 2.10 Quy trình nghiệp vụ Quản lí cơng ti ... 14</b>

<b>Hình 3.1 Giao diện của một chương trình Scene Builder ... 25</b>

<b>Hình 3.2 Mơ tả cấu trúc của một chuỗi băm Bcrypt... 29</b>

<b>Hình 4.1 Mơ hình kiến trúc JavaFX ... 32</b>

<b>Hình 4.2 Mơ hình kiến trúc MVC ... 33</b>

<b>Hình 4.3 Biểu đồ gói cho chương trình ... 34</b>

<b>Hình 4.4 Biểu đồ gói chi tiết cho gói giao diện cho Quản trị viên ... 35</b>

<b>Hình 4.5 Chi tiết cho gói Nhân viên gác chắn ... 36</b>

<b>Hình 4.6 Khung giao diện đặc trưng của phần mềm ... 38</b>

<b>Hình 4.7 Luồng hoạt động Đăng nhập ... 39</b>

<b>Hình 4.8 Luồng hoạt động xem nhân viên gác chắn ... 40</b>

<b>Hình 4.9 Luồng hoạt động Thêm nhân viên gác chắn ... 41</b>

<b>Danh mục hình vẽ </b>

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>Hình 4.10 Biểu đồ thực thể liên kết cho chương trình... 42</b>

<b>Hình 4.11 Thiết kế chi tiết cho CSDL ... 43</b>

<b>Hình 4.12 Giao diện trung tâm điều khiển của QTV cấp cao ... 49</b>

<b>Hình 4.13 Giao diện xem danh sách Cơng ti ... 49</b>

<b>Hình 4.14 Giao diện xem danh sách Quản trị viên ... 50</b>

<b>Hình 4.15 Giao diện thêm Quản trị viên ... 50</b>

<b>Hình 4.16 Giao diện bảng điều khiển trung tâm của Quản trị viên ... 51</b>

<b>Hình 4.17 Giao diện xem thơng tin Nhân viên gác chắn ... 51</b>

<b>Hình 4.18 Giao diện xem chi tiết Nhân viên gác chắn ... 52</b>

<b>Hình 4.19 Giao diện trung tâm điều khiển của Nhân viên gác chắn ... 52</b>

<b>Hình 5.1 Cấu trúc triển khai Singleton ... 58</b>

<b>Hình 5.2 Tự động nhận dạng camera được gắn trong hệ thống. ... 59</b>

<b>Hình 5.3 Bản mã của bản rõ abc12345 ... 63</b>

<b>Hình 5.4 Băm 2 lần liên tiếp của bản rõ abc12345 ... 63</b>

<b>Hình 5.5 Kết quả so khớp với bản rõ abc12345 và một bản rõ lạ ... 63</b>

<b>Hình 5.6 Dữ liệu bản mã lưu trong CSDL của trường password ... 64</b>

<b>Hình 5.7 Thống kê tại giao diện điều khiển trung tâm của Quản trị viên cấp cao ... 65</b>

<b>Hình 5.8 Thống kê tại giao diện điều khiển trung tâm của Quản trị viên ... 65</b>

<b>Hình 5.9 Tra sốt dữ liệu thẻ và quản lí vào/ra ... 66</b>

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<b>Bảng 2.1 Danh sách các Use Case ... 14</b>

<b>Bảng 2.2 Đặc tả Use Case Tìm kiếm ... 17</b>

<b>Bảng 2.3 Mơ tả trường dữ liệu Tìm kiếm ... 18</b>

<b>Bảng 2.4 Đặc tả Use Case Thêm nhân viên gác chắn ... 18</b>

<b>Bảng 2.5 Bảng Dữ liệu đầu vào của Thêm Nhân viên gác chắn ... 19</b>

<b>Bảng 2.6 Đặc tả Use Case Cập nhật nhân viên gác chắn ... 20</b>

<b>Bảng 4.1 Mơ tả các thực thể trong chương trình ... 42</b>

<b>Bảng 4.2 Đặc tả cơ sở dữ liệu ... 43</b>

<b>Bảng 4.3 Danh sách thư viện và công cụ sử dụng ... 47</b>

<b>Bảng 4.4 Thống kê thông tin ứng dụng ... 48</b>

<b>Bảng 4.5 Bảng thống kê kiểm thử tương thích ... 53</b>

<b>Bảng 4.6 Kiểm thử cho chức năng Thêm nhân viên gác chắn ... 53</b>

<b>Bảng 4.7 Kiểm thử cho chức năng Thêm công ti ... 56</b>

<b>Bảng 5.1 So sánh thời gian thực hiện thuật toán khi salt bằng các giá trị tương ứng ... 62</b>

<b>Danh mục bảng </b>

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>API Application Programming Interface </b>

<b>JDBC </b>

Java Dabase Connectivity

Java API được sử dụng để kết nối và thực hiện truy vấn với

<b>CNTT </b> Công nghệ thông tin

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>CPU </b>

Central Processing Unit Bộ xử lí trung tâm

<b>GPU </b>

Graphics Processing Unit

Bộ xử lí các tác vụ liên quan đến đồ hoạ

<b>RDBMS </b>

Relational Database Management System Hệ thống quản trị cơ sở dữ liệu quan hệ

<b>SQL </b>

Structured Query Language

Ngôn ngữ truy vấn mang tính cấu trúc

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

Khố chính của bảng trong cơ sở dữ liệu

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

Một cửa sổ chương trình JavaFX

<b>Scene Graph </b> Cấu trúc phân cảnh

<b>Node </b> Đối tượng trực quan của một cấu trúc phân cảnh

Một công nghệ sử dụng trường điện từ để tự động nhận dạng và theo dõi các thẻ hỗ trợ công nghệ này được gắn vào đối tượng

<b>Barrier </b> Rào/Gác chắn

<b>Surveillance Camera Thiết bị ghi hình nhằm mục đích theo dõi, giám sát. </b>

<b>Desktop </b> Thiết bị máy tính để bàn

<b>Danh mục thuật ngữ </b>

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

<b>Website </b> <sup>Một tập hợp trang web, thường chỉ nằm trong một tên miền </sup>

hoặc tên miền phụ trên World Wide Web của Internet

<b>Admin </b> Quản trị viên

<b>Superior Admin </b> Quản trị viên cấp cao

<b>Staff </b> Nhân viên gác chắn

<b>Tăng tốc phần cứng khả dụng </b>

Một chức năng của phần mềm cho phép tận dụng triệt để tài nguyên của CPU và GPU hoặc sử dụng GPU song hành.

<b>Maven </b>

Apache maven là một chương trình quản lý dự án cho phép các developers có thể quản lý về version, các dependencies ( các thư viện sử dụng trong dự án ) , quản lý build, tự động download javadoc & source, …

<b>Maven dependency </b> Bộ các thư viện được định nghĩa trong XML của Maven

<b>Webcam </b> <sup>Thiết bị ghi lại hình ảnh, đoạn phim hoặc bắt sự kiện chuyển </sup>động

<b>Frameworks </b>

Khung phần mềm

Trong lập trình máy tính, là một sự trừu tượng trong đó mã phổ biến cung cấp chức năng chung có thể được ghi đè một cách chọn lọc hoặc chuyên biệt bởi mã người dùng cung cấp

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<b>1.1 Đặt vấn đề </b>

Trên thực tế, khi lượng phương tiện càng nhiều, nhu cầu về việc bảo quản, lưu trữ cơ giới từ đó ngày càng lớn. Mặt khác, hệ thống bãi gửi xe hiện nay còn tương đối thiếu tiện lợi cho chưa áp dụng hạ tầng hệ thống số, hệ thống chốt gác mà chỉ soát vé bằng cảm quan. Việc này tuy có thể đơn giản hố và chi phí luôn ở mức thấp nhất, nhưng gây mệt mỏi cho người gác Barrier do phải so sánh bằng mắt liên quan đến sự so khớp giữa biển số xe.

Trong các mơ hình bãi gửi xe hiện đại, nổi bật lên là hệ thống bán tự động và hệ thống tự động. Hệ thống gửi xe bán tự động là hệ thống có người gác chỉ có mục đích giám sát, kiểm tra hệ thống hoạt động chính xác khơng, còn lại hệ thống tự vận hành. Hệ thống gửi xe tự động là hệ thống không cần người giám sát, phương tiện vào tự động được nhận dạng và xác minh bởi hệ thống nhưng yêu cầu độ chính xác cao.

Hiện nay, các kĩ sư phần mềm đang nghiên cứu và hướng dẫn bãi gửi xe hoàn toàn tự động như tự động nhận dạng biển số, tự động nhận dạng loại phương tiện, tự động nhận dạng chủ phương tiện, hệ thống thanh tốn phí khơng dừng v.v. Hệ thống này tương đối lớn và phức tạp nên ở Việt Nam chưa nhiều hệ thống làm được như vậy.

Để giải quyết vấn đề này, em đã nghiên cứu và phát triển “Hệ thống quản lí bãi gửi xe”. Hệ thống này không chỉ so sánh về tính chính xác của phương tiện cơ giới vào ra mà cịn quản lí nhân sự trong một bãi gửi xe của một cơng ti đăng kí sử dụng phần mềm gửi xe.

<b>1.2 Mục tiêu và phạm vi đề tài </b>

“Phần mềm quản lí bãi gửi xe” nhằm mang đến sự tiện lợi và tối ưu chi phí cho doanh nghiệp vừa và nhỏ đăng kí gửi xe. Do đó để giải quyết được vấn đề đã nêu ở mục 1.1, em đã xây dựng ứng dụng quản lí bãi gửi xe bán tự động nhằm: (i) cung cấp một hệ thống gửi xe thuận tiện cho người sử dụng, (ii) bảo mật dữ liệu nhạy cảm, (iii) thống kê và tra soát linh hoạt, (iv) nhận dạng biển số và tra soát tự động. Với hệ thống này, nhân viên gác chắn sẽ vô cùng thuận lợi trong việc quản lí và tra sốt xe vào/ra.

<b>Chương 1 Giới thiệu đề tài </b>

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

Ngoài ra, hệ thống cũng là một hệ thống quản lí nhân viên đơn giản, thống kê và tích hợp nhận dạng biển số tự động. Với những giải pháp trên, hệ thống đã khắc phục được nhược điểm của những bãi gửi xe truyền thống, những bãi gửi xe “giấy mực”. Dựa trên những tính năng này, doanh nghiệp có thể dễ dàng nắm được thực trạng gửi xe để đưa ra các giải pháp phù hợp để cải tạo khuôn viên cơng ti hoặc cải tạo vị trí gửi xe phù hợp.

Do thời gian và khả năng có hạn, phần mềm quản lí bãi gửi xe được xây dựng theo kiểu bán tự động chứ chưa hoàn toàn tự động với các chức năng cơ bản như nhóm chức năng quản lí nhân viên, nhóm chức năng quản lí bãi gửi xe. Do việc nhận dạng biển số xe có độ chính xác chưa cao nên vẫn cần NVGC trực tiếp kiểm tra, phòng khi hệ thống nhận dạng sai.

<b>1.3 Định hướng giải pháp </b>

Do sản phẩm được viết trên nền Desktop và khơng có yếu tố nền Web, nên sản phẩm sử muốn sử dụng được cần cài đặt trên một PC. Do đó em lựa chọn ngôn ngữ (i) Java, kết hợp thiết kế giao diện bằng (ii) JavaFX. Để có thể làm được điều này, em cần tìm hiểu kĩ lưỡng về Java Core, OOP, Java JDBC, JavaFX, v.v. Chi tiết công nghệ sử dụng sẽ được em trình bày trong Chương 3.

Việc lập ra một ứng dụng Quản lí bãi gửi xe theo em là vơ cùng phức tạp, tuy nhiên vì thời gian có hạn, em đã giới hạn lại và chỉ thực hiện các chức năng quan trọng như quản lí nhân viên (đơn giản), quản lí bãi gửi xe.

Để giải quyết vấn đề tạo lập một ứng dụng quản lí bãi gửi xe, em cần tìm hiểu nghiệp vụ về bãi gửi xe, sau đó áp dụng nghiệp vụ này vào bài làm của mình. Chi tiết em xin được trình bày trong Chương 2.

Để có thể quản lí người dùng, em đã phân vai trị làm ba nhóm: Nhóm 1 – đội ngũ phát triển phần mềm, nhóm 2 – doanh nghiệp đăng kí sử dụng phần mềm, nhóm 3 – khách hàng gửi xe. Do thời gian có hạn, em chưa thiết kế được tính năng cho khách hàng mà chỉ tập trung vào tính năng cho nhóm người dùng 1 và 2.

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

Ngồi ra, phần mềm cịn có chức năng nhận dạng kí tự quang học thơng qua Google Cloud Vision API.

<b>1.4 Bố cục đồ án </b>

Em xin trình bày về bố cục các phần còn lại như sau:

Chương 2 trình bày khảo sát hiện trạng các phần mềm quản lí bãi gửi xe hiện nay, thực trạng và tính cần thiết của phần mềm quản lí bãi gửi xe . Phân tích yêu cầu và đưa ra các chức năng chính của ứng dụng.

Chương 3 giới thiệu về các công nghệ được sử dụng để xây dựng ứng dụng, điểm nổi bật của cơng nghệ đó, lý do lựa chọn cơng nghệ đó để xây dựng ứng dụng quản lí bãi gửi xe.

Chương 4 trình bày về cách thức triển khai và phát triển ứng dụng. Các nội dung chính được thực hiện trong chương này bao gồm (i) thiết kế kiến trúc, (ii) thiết kế chi tiết, (iii) xây dựng ứng dụng. Trong phần thiết kế kiến trúc trình bày về kiến trúc phần mềm đã lựa chọn, thiết kế tổng quan ứng dụng. Phần thiết kế chi tiết bao gồm thiết kế giao diện, thiết kế lớp, cơ sở dữ liệu của ứng dụng. Phần xây dựng ứng dụng đưa ra các kết quả đạt được của ĐATN.

Chương 5 trình bày về các giải pháp và đóng góp nổi bật. Trong chương này nêu ra các đóng góp nổi bật mà ĐATN mang lại. Các đóng góp này bao gồm đóng góp của ĐATN khi áp dụng vào thực tế, giải quyết được các hạn chế của các ứng dụng quản lí bãi gửi xe hiện tại.

Chương 6 trình bày về các kết quả đạt được, đưa ra kết luận và định hướng phát triển cho phần mềm trong tương lai.

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

Trong chương này, em sẽ trình bày khảo sát các hệ thống Quản lí bãi gửi xe có trên thực tế. Từ đó em đưa ra tổng quan chức năng và đặc tả chi tiết của một số chức năng chính của hệ thống Quản lí bãi gửi xe này.

<b>2.1 Khảo sát hiện trạng </b>

Theo thống kê về Thực trạng các bãi đỗ xe thông minh các thành phố lớn Việt Nam ngày 12/07/2020 thì nhu cầu của người dân về gửi xe ngày càng tăng mà các bãi đỗ xe chỉ đáp ứng được 8-10%. Việc ứng dụng bãi gửi xe hiện đại, thông minh cũng chưa được nhiều gây nên tình trạng tắc nghẽn giao thông đặc biệt là các thành phố lớn như Hà Nội và tp.Hồ Chí Minh<small>1</small>.

Thời gian qua, tình hình tội phạm trộm cắp tài sản trong tỉnh có chiều hướng gia tăng. Nhiều đối tượng sẵn sàng chống trả, tấn công bị hại nếu bị phát hiện. Trong đó, lợi dụng sự sơ hở của chủ nhân, các đối tượng trộm nhắm nhiều đến xe máy - một loại tài sản được sử dụng phổ biến, có giá trị và dễ tiêu thụ trên thị trường.<small>2</small>

Ngoài ra, các đối tượng cịn đến những nơi có tập trung đông xe đậu như: cơ quan, doanh nghiệp, nơi vui chơi công cộng, quán xá cặp các tuyến lộ hay kể cả nơi có tổ chức đám tiệc… Thường những nơi này những người trơng coi đơi khi khó có thể kiểm soát được hết nên đối tượng sẽ dễ dàng lợi dụng, trà trộn vào chờ đợi thời cơ để bẻ khóa và lấy đi tài sản. Gần đây, một số đối tượng còn manh động đến mức, chúng theo dõi và ngang nhiên đi vào những nhà mà khơng hề có quen biết để thăm dị, nếu khơng có người trơng coi sẽ lấy đi những tài sản có giá trị, cịn nếu bị phát hiện sẽ giả vờ hỏi thăm đường hoặc vào nhầm nhà rồi bỏ đi.<small>3</small>

<b>Chương 2 Khảo sát và phân tích yêu cầu </b>

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

Hiện nay, đã có khá nhiều ứng dụng Quản lí bãi gửi xe đã có trên thị trường như eparking<small>4</small>, vinparking<sup>5</sup>, TPA<sup>6</sup>. Các ứng dụng này đều mang đến sự tiện lợi và dễ sử dụng cho người dùng. Do phạm vi của ĐATN, em xin được thực hiện lại phần nào các tiện ích của những phần mềm trên và phát triển những tính năng đặc biệt hơn cho người dùng.

<b>2.2 Tổng quan chức năng </b>

<b>2.2.1 Biểu đồ use case tổng quan </b>

<b>Hình 2.1 Biểu đồ Use Case tổng quan hệ thống </b>

<b>Phần mềm Quản lí bãi gửi xe gồm các thành phần và chức năng khác nhau. Trong Hình 2.1 </b>

nêu lên các tác nhân và các chức năng chính của hệ thống.

Các tác nhân chính: Quản trị viên cấp cao, Quản trị viên, Nhân viên gác chắn.

<small>4 lần cuối truy cập ngày 15/06/2021. </small>

<small>5 lần cuối truy cập ngày 15/06/2021. </small>

<small>6 lần cuối truy cập ngày 15/06/2021. </small>

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

1. Quản trị viên cấp cao là một người QTV do bản thân đội ngũ phát triển phần mềm điều phối và nắm giữ vai trị quản lí Quản trị viên (đại diện cho Cơng ti), quản lí Cơng ti, và quản lí Vai trị trong một cơng ti

2. Quản trị viên là một người QTV do QTV cấp cao tạo ra khi một doanh nghiệp đăng kí sử dụng phần mềm. QTV này có vai trị quản lí Nhân viên gác chắn, Quản lí Bãi gửi xe và thống kê.

3. Nhân viên gác chắn là một người trực tiếp quản lí và tổng hợp các vấn đề liên quan đến khách hàng. Nhân viên gác chắn do QTV của Cơng ti đăng kí sử dụng phần mềm tạo ra

<b>2.2.2 Biểu đồ use case phân rã </b>

Trong phần này em sẽ trình bày phân rã những Use Case quan trọng như Quản lí Cơng ti, Quản lí Nhân viên gác chắn, Quản lí Hợp đồng, Quản lí trạm gác.

<b>2.2.2.1 Biểu đồ Use Case phân rã “Quản lí Cơng ti” </b>

<b>Hình 2.2 Biều đồ Use Case phân rã cho chức năng “Quản lí Cơng ti” </b>

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

<b>2.2.2.2 Biểu đồ Use Case phân rã “Quản lí Nhân viên gác chắn” </b>

<b>Hình 2.3 Biểu đồ Use Case phân rã cho chức năng “Quản lí nhân viên gác chắn” Hình 2.3 mơ tả chức năng Quản lí nhân viên gác chắn với tác nhân chính là Quản trị viên. </b>

Tương tự như chức năng Quản lí Cơng ti, Quản trị viên – đại diện cho mỗi Cơng ti sẽ có đầy đủ các chức năng Quản lí nhân viên như Thêm, sửa, xố, cập nhật NVGC. Mỗi NVGC sẽ có một tài khoản, mật khẩu đăng nhập vào hệ thống.

<b>2.2.2.3 Biểu đồ Use Case phân rã “Quản lí Hợp đồng” </b>

<b>Hình 2.4 Biểu đồ Use Case phân rã cho chức năng “Quản lí hợp đồng” </b>

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

<b>Hình 2.4 mơ tả chức năng Quản lí hợp đồng với tác nhân chính là Nhân viên gác chắn. Đối </b>

với chức năng Quản lí hợp đồng, một hợp đồng tạo ra khơng thể xoá được mà vẫn lưu trữ trên hệ thống. Nếu hợp đồng có bất kì sự cố nào thì Khách hàng gửi xe chỉ có thể yêu cầu tạo một hợp đồng mới hoặc cập nhật lại số liệu hợp đồng.

<b>2.2.2.4 Biểu đồ Use Case phân rã “Quản lí trạm gác” </b>

<b>Hình 2.5 Biểu đồ Use Case phân rã cho chức năng “Quản lí trạm gác” </b>

<b>Hình 2.5 mơ tả chi tiết cho chức năng Quản lí trạm gác với tác nhân chính là Nhân viên gác </b>

chắn. Đây có lẽ là chức năng được sử dụng nhiều và thường xuyên nhất của chương trình. Khi NVGV đăng nhập ở máy tính ở trạm gác, hệ thống sẽ khởi động Camera an ninh, khởi động máy RFID. Mỗi thi thẻ được quét qua máy RFID, một chuỗi các bước liên tiếp được thực hiện như Máy đọc đọc thẻ, Hiển thị thơng tin thẻ, Tra sốt thẻ. Trong đó chức năng Tra soát thẻ tương đối phức tạp. Chức năng này sẽ được nói rõ ở phần Quy trình nghiệp vụ.

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

<b>2.2.2.5 Biểu đồ Use Case phân rã “Thống kê” </b>

<b>Hình 2.6 Biểu đồ Use Case phân rã cho chức năng “Thống kê” </b>

<b>Hình 2.6 mô tả chi tiết cho chức năng Thống kê với tác nhân chính là Quản trị viên. Đây là </b>

một chức năng tương đối quan trọng trong phần mềm Quản lí bãi gửi xe. Nó giúp Quản trị viên có một cái nhìn tổng quan nhất về hệ thống của mình.

hạn của các chức danh.

Mỗi nhân viên trong nhóm Đội ngũ phát triển phần mềm, Doanh nghiệp đăng kí sử dụng

<b>phần mềm (Hình 2.7) sẽ được cấp tài khoản bao gồm Username và Password để đăng nhập </b>

vào hệ thống. Với mỗi vai trò, hệ thống sẽ tự điều hướng đến các chức năng tương ứng với vai trị của người đó.

<b>Do tính chất doanh nghiệp vừa và nhỏ, Bãi gửi xe chỉ cho phép gửi xe có biển số trừ những xe quá khổ, quá tải. Khi khách hàng đến gửi xe theo tháng, NVGC sẽ nhập liệu hợp đồng trên hệ thống. Nếu khách hàng gửi xe theo ngày thì khơng cần hợp đồng, NVGC sẽ quét thẻ </b>

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

RFID vào máy quét và hệ thống sẽ ghi lại hình ảnh của biển số xe hoặc cả biển số xe và cả hình ảnh.

Phần mềm cho phép đọc và ghi lại hình ảnh từ 2 camera an ninh trong một thời điểm. Tuy nhiên trong Phần mềm em đang phát triển hiện có đọc từ một camera duy nhất.

Tùy theo loại xe và thời gian hợp đồng trông giữ mà chi phí trơng giữ xe là khác nhau.

• Đối với vé ngày, các phương tiện nhóm xe gắn máy, xe mô tô có giá chung là 10.000đ/lượt, xe nhóm ô tô có giá chung là 100.000đ/lượt. Khách hàng gửi vé ngày có thể gửi khơng giới hạn thời gian trong một ngày, tuy nhiên nếu gửi xe quá thời hạn sẽ bị phạt phí lấy muộn 5.000đ/giờ.

• Đối với vé tháng, xe gắn máy, xe mô tô phí trơng giữ hàng tháng là 120.000đ/tháng. Với ơ tơ con hoặc xe tải cỡ nhỏ, phí trơng giữ hàng tháng là 1.800.000đ/tháng. Nếu ký hợp đồng từ 3-5 năm thì giảm phí 10%. Nếu ký hợp đồng trơng trên 5 năm thì giảm phí 15%.

<b>Khách hàng gửi xe vé ngày cần điều khiển phương tiện vào đúng vùng đọc an ninh để đọc </b>

<b>chính xác biển số xe và hình ảnh phương tiện. Khách hàng gửi xe vé tháng sẽ có sẵn thẻ, </b>

khi gửi xe chỉ cần đưa thẻ vào máy đọc. Mỗi khách hàng có .

Khách hàng chấm dứt hợp đồng trông giữ xe khi đến hạn cần đến làm thủ tục, xuất trình hợp đồng trông giữ.

<b>Nếu khách hàng chấm dứt hợp đồng sớm hơn thời hạn, cần bồi thường theo quy định trừ </b>

trường hợp bất khả kháng.

<b>NVGC có thể thêm hợp đồng, sửa hợp đồng, xố hợp đồng. Ngồi ra, NVGC có thể tìm </b>

kiếm hợp đồng theo hoặc thống kê doanh thu của bãi xe.

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

<b>Hình 2.7 Bảng phân cấp vai trị </b>

<b>Hình 2.7 mơ tả phân cấp vai trị trong chương trình. Để thuận tiện, chúng ta gọi Đội ngũ </b>

phát triển phần mềm là nhóm 1, Doanh nghiệp đăng kí sử dụng phần mềm là nhóm 2, Khách hàng gửi xe là nhóm 3.

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

<b>2.2.3.1 Quy trình nghiệp vụ Đăng nhập </b>

<b>Hình 2.8 Quy trình nghiệp vụ Đăng nhập </b>

<b>Hình 2.8 mơ tả quy trình nghiệp vụ đăng nhập, tác nhân chính bao gồm người dùng (thuộc </b>

nhóm 1 và 2), các chức năng chính là Nhấn nút Đăng nhập, Kiểm tra hợp lệ, Tìm kiếm vai trị. Hệ thống sẽ tự điều hướng tương ứng với vai trò của người đăng nhập đến giao diện và chức năng cần thiết.

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

<b>2.2.3.2 Quy trình nghiệp vụ Quẹt thẻ </b>

<b>Hình 2.9 Quy trình nghiệp vụ Quẹt thẻ </b>

<b>Hình 2.9 mơ tả q trình Quẹt thẻ với tác nhân là nhân viên gác chắn, bao gồm các chức </b>

năng chính là Đọc thẻ, Tra sốt thẻ, Hiển thị thơng tin thẻ. Q trình phía sau hệ thống thực hiện các bước kiểm tra nghiêm ngặt để đảm bảo tính chính xác trong dữ liệu thẻ.

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

<b>2.2.3.3 Quy trình nghiệp vụ Quản lí cơng ti </b>

<b>Hình 2.10 Quy trình nghiệp vụ Quản lí cơng ti </b>

<b>Hình 2.10 mơ tả quy trình Quản lí cơng ti bao gồm các chức năng chính là Thêm công ti, </b>

Cập nhật Công ti, Xem chi tiết công ti, Xố Cơng ti. Tác nhân chính là Quản trị viên cấp cao, tác nhân ngoại lai là Doanh nghiệp đăng kí sử dụng phần mềm. Ở đây QTV cấp cao có thể quản lí cơng ti một cách đơn giản, thuận tiện với các chức năng cơ bản như thêm sửa xố, cập nhật cơng ti.

<b>2.3 Đặc tả chức năng </b>

<b>Bảng 2.1 liệt kê 12 chức năng của hệ thống. Do phạm vi cũng như độ phức tạp của chức </b>

năng, em chỉ đặc tả một số Use Case quan trọng bao gồm Tìm kiếm, Thêm Nhân viên gác

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

UC003 Quản lí quản trị viên

UC006

Quản lí nhân viên gác chắn

Quản lí quản trị viên UC014 Thêm Quản trị viên

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

Quản lí vai trò UC022 Xem vai trò

Quản lí nhân viên gác chắn

<b>UC027 Thêm NVGC UC028 Cập nhật NVGC </b>

<b>UC036 Quẹt thẻ </b>

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

<b>2.3.1 Đặc tả use case Tìm kiếm </b>

<b>Bảng 2.2 Đặc tả Use Case Tìm kiếm </b>

<b>Mã Use Case </b> UC013 <b>Tên Use Case </b> Tìm kiếm

<b>Tác nhân </b> Quản trị viên cấp cao, Quản trị viên, Nhân viên gác chắn

<b>Tiền điều kiện </b> Người dùng đã đăng nhập với vai trò của QTV cấp cao, QTV, NVGC

<b>Luồng sự kiện chính </b>

<b>STT Thực hiện bởi Hành động </b>

1

QTV cấp cao, QTV, NVGC

Nhập liệu trên trường Tìm kiếm (*)

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

<b>Hậu điều kiện </b> Không

(*) Dữ liệu đầu vào của Tìm kiếm gồm các trường dữ liệu sau

<b>Bảng 2.3 Mơ tả trường dữ liệu Tìm kiếm STT Trường dữ </b>

<b>2.3.2 Đặc tả use case Thêm nhân viên gác chắn </b>

<b>Bảng 2.4 Đặc tả Use Case Thêm nhân viên gác chắn </b>

<b>Mã Use Case </b> UC027 <b>Tên Use Case </b> Thêm NVGC

<b>Tác nhân </b> Quản trị viên

<b>Tiền điều kiện </b> Người dùng đã đăng nhập với vai trò của Quản trị viên

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">

3 Quản trị viên Nhập liệu (*)

4 Quản trị viên Nhấn nút thêm

5

Hệ thống Kiểm tra tính hợp lệ các trường dữ liệu

<b>Luồng sự kiện thay thế </b>

<b>Hậu điều kiện </b> Không

(*) Dữ liệu đầu vào của Thêm Nhân viên gác chắn gồm các trường dữ liệu sau

<b>Bảng 2.5 Bảng Dữ liệu đầu vào của Thêm Nhân viên gác chắn STT Trường </b>

<b>dữ liệu </b>

<b>Mô tả Bắt buộc? </b>

<b>Điều kiện hợp lệ </b>

4 tfAddress Trường địa chỉ Không Không 9E Chùa Bộc

</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">

5 tfUsername Trường tên tài khoản

6 pfPassword Trường mật khẩu

<b>2.3.3 Đặc tả Use Case Cập nhật nhân viên gác chắn </b>

<b>Bảng 2.6 Đặc tả Use Case Cập nhật nhân viên gác chắn </b>

<b>Mã Use Case </b> UC028 <b>Tên Use Case </b> Cập nhật NVGC

<b>Tác nhân </b> Quản trị viên

<b>Tiền điều kiện </b> Người dùng đã đăng nhập với vai trò của Quản trị viên

<b>Luồng sự kiện chính </b>

<b>STT Thực hiện bởi Hành động </b>

1

Quản trị viên Nháy đúp vào nhân viên gác chắn cần cập nhật

2 Quản trị viên Thực hiện thay đổi

3 Quản trị viên Nhập liệu (*)

4 Quản trị viên Nhấn nút thêm

Hệ thống Kiểm tra tính hợp lệ các trường

</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">

<b>Hậu điều kiện </b> Không

(*) Dữ liệu đầu vào của Cập nhật Nhân viên gác chắn gồm các trường dữ liệu giống phần đặc tả Use Case Thêm Nhân viên gác chắn

<b>2.3.4 Đặc tả Use Case Quẹt thẻ </b>

<b>Mã Use Case </b> UC036 <b>Tên Use Case </b> Quẹt thẻ

<b>Tác nhân </b> Nhân viên gác chắn

<b>Tiền điều kiện </b> Người dùng đã đăng nhập với vai trò của Nhân viên gác chắn và khởi động Camera

<b>Luồng sự kiện chính </b>

<b>STT Thực hiện bởi Hành động </b>

1 Nhân viên gác chắn Đưa thẻ vào máy quét RFID

2 Hệ thống Kiểm tra tình trạng thẻ

5 Hệ thống Ghi dữ liệu khách vãng lai

6 Hệ thống Ghi dữ liệu khách đã có hợp đồng

7 Hệ thống Hiển thị dữ liệu thông tin

8 Hệ thống Hiển thị dữ liệu hình ảnh

</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">

<b>Luồng sự kiện thay thế </b>

2b Hệ thống Nếu thẻ hợp lệ, chuyển đến bước 3

3a Hệ thống <sup>Nếu thẻ khách vãng lai, chuyển đến </sup>bước 4

3b Hệ thống <sup>Nếu thẻ khách có hợp đồng, chuyển </sup>đến bước 4

4a Hệ thống

Với yêu cầu vào/ra, nếu kết quả bước 3 là khách vãng lai, chuyển đến bước 5

4b Hệ thống

Với yêu cầu vào/ra, nếu kết quả bước 3 là khách có hợp đồng, chuyển đến bước 6

<b>Hậu điều kiện </b> Barrier mở ra khi thẻ hợp lệ

<b>2.4 Yêu cầu phi chức năng </b>

Ứng dụng có cơ chế phân quyền người dùng theo từng chức năng, vai trò đảm bảo từng người dùng chỉ được phép sử dụng các tính năng theo quyền hạn của mình. Ngồi ra, ứng

</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">

<b>2.4.2 Tính dễ dùng </b>

Phần mềm có giao diện đơn giản, dễ thao tác. Ngoài ra phần mềm cịn có những gợi ý, chú thích cho người dùng.

<b>2.4.3 Yêu cầu về giao diện người dùng </b>

Ứng dụng ln đặt yếu tố dễ dùng và có tính tương tác cao, đơn giản hóa các thao tác và gợi ý cho người dùng về các thành phần chức năng trên giao diện bằng cách sử dụng các icon, buttonv.v nhằm tăng khả năng tương tác với ứng dụng.

<b>2.4.4 Yêu cầu về hiệu năng </b>

Ứng dụng khởi động không quá 5s. Các yêu cầu về truy vấn không quá 2s.

<b>2.4.5 Yêu cầu về bảo mật </b>

• Xác thực: Các dịch vụ và chức năng sử dụng đúng mục đích, dữ liệu được lấy chính xác từ CSDL

• Phân quyền: Phần mềm tự động phân quyền và phân chức năng ngay tại thời điểm đăng nhập

• Bảo mật dữ liệu: dữ liệu nhạy cảm như mật khẩu được mã hoá nâng cao trong CSDL.

</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36">

<b>3.1 Frontend </b>

<b>3.1.1 JavaFX </b>

JavaFX là nền tảng để tạo và phân phối các ứng dụng dành cho máy tính để bàn cũng như các ứng dụng RIAs (Rich Internet Applications) có thể chạy trên nhiều thiết bị khác nhau. JavaFX được phát triển bởi kỹ sư Chris Oliver, ban đầu dự án được đặt tên là F3 (Form Follows Functions). Sau đó vào năm 2005 thì Sun Micro-Systems đã mua lại dự án F3 và đổi tên thành JavaFX. JavaFX dự định thay thế hoàn toàn Swing làm thư viện GUI chuẩn cho Java SE. JavaFX hỗ trợ cho các máy tính để bàn và trình duyệt web trên nền tảng Windows, Linux và macOS.

<i>Những ưu điểm nổi bật của ngôn ngữ lập trình JavaFX: </i>

• JavaFX là một thư viện Java bao gồm các lớp và các giao diện được viết bằng mã Java nguyên gốc.

• FXML là một ngôn ngữ khai báo dựa trên XML để xây dựng một giao diện người dùng trong ứng dụng JavaFX. Lập trình viên có thể sử dụng JavaFX Scene Builder để thiết kế giao diện đồ họa (GUI).

• JavaFX có thể được tùy biến giao diện thêm sinh động bằng cách sử dụng CSS. • JavaFX hỗ trợ đồ họa 2D và 3D cũng như hỗ trợ âm thanh và video.

• JavaFX cịn có WebView dựa trên trình duyệt WebKit, vì vậy bạn có thể nhúng các trang web hoặc các ứng dụng web bên trong JavaFX.<small>7</small>

<b>3.1.2 FXML </b>

<b>Chương 3 Công nghệ sử dụng </b>

</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37">

<b>3.1.3 Scene Builder </b>

JavaFX Scene Builder là một công cụ thiết kế trực quan cho phép người dùng nhanh chóng thiết kế giao diện người dùng của ứng dụng JavaFX, mà không cần phải viết code. Bạn có thể kéo và thả các thành phần giao diện người dùng đến một khu vực làm việc, thay đổi tính chất của chúng, áp dụng các style, và FXML cho Layout vừa được tạo ra tự động bên dưới. Kết quả có được là một tập tin FXML mà sau đó có thể được kết hợp với một dự án Java bằng cách liên kết các giao diện với logic của ứng dụng.<small>9</small>

<b>Hình 3.1 Giao diện của một chương trình Scene Builder </b>

Ngơn ngữ lập trình Java ban đầu được phát triển bởi Sun Microsystems do James Gosling khởi xướng và phát hành vào năm 1995. Phiên bản mới nhất của Java Standard Edition là Java SE 8. Với sự tiến bộ của Java và sự phổ biến rộng rãi của nó, nhiều cấu hình đã được

<small>9 truy cập lần cuối ngày 16/06/2021. </small>

<small>10 truy cập lần cuối ngày 16/06/2021. </small>

</div><span class="text_page_counter">Trang 38</span><div class="page_container" data-page="38">

xây dựng để phù hợp với nhiều loại nền tảng khác nhau. Ví dụ: J2EE cho các ứng dụng doanh nghiệp, J2ME cho các ứng dụng di động.

Các phiên bản J2 mới đã được đổi tên thành Java SE, Java EE và Java ME. Phương châm của java là "Write Once, Run Anywhere" - viết một lần chạy nhiều nơi, nghĩa là bạn chỉ cần viết một lần trên window chẳng hạn, sau đó vẫn chương trình đó bạn có thể chạy trên Linux, Android, các thiết bị J2ME...

<i>Ngôn ngữ lập trình java có các tính năng sau: </i>

• Hướng đối tượng - Trong Java, mọi thứ đều là một Object. Java có thể dễ dàng mở rộng và bảo trì vì nó được xây dựng dựa trên mơ hình Object.

• Nền tảng độc lập - Khơng giống nhiều ngơn ngữ lập trình khác bao gồm cả C và C ++, khi Java được biên dịch, nó không được biên dịch thành ngôn ngữ máy nền tảng cụ thể, thay vào mã byte - nền tảng độc lập. Mã byte này được thông dịch bởi máy ảo (JVM) trên nền tảng nào đó mà nó đang chạy.

• Đơn giản - Java được thiết kế để dễ học. Nếu bạn hiểu khái niệm cơ bản về OOP Java, sẽ rất dễ để trở thành master về java.

• Bảo mật - Với tính năng an tồn của Java, nó cho phép phát triển các hệ thống khơng có virut, giả mạo. Các kỹ thuật xác thực dựa trên mã hố khóa cơng khai.

• Kiến trúc - trung lập - Trình biên dịch Java tạo ra định dạng tệp đối tượng kiến trúc trung lập, làm cho mã biên dịch được thực thi trên nhiều bộ vi xử lý, với sự hiện diện của hệ điều hành Java.

• Portable - Là kiến trúc tập trung và khơng có khía cạnh thực hiện phụ thuộc của đặc tả này làm cho Java khả chuyển. Trình biên dịch trong Java được viết bằng ANSI C, đó là một tập con POSIX.

• Mạnh mẽ - Java làm nỗ lực để loại trừ các tình huống dễ bị lỗi bằng cách kiểm tra lỗi tại thời gian biên dịch và kiểm tra lỗi tại runtime.

• Đa luồng - Với tính năng đa luồng của Java có thể viết các chương trình có thể thực hiện nhiều tác vụ đồng thời. Tính năng thiết kế này cho phép các nhà phát triển xây

</div><span class="text_page_counter">Trang 39</span><div class="page_container" data-page="39">

tin tại runtime mà có thể được sử dụng để xác minh và giải quyết các truy cập vào các đối tượng tại runtime.

<b>3.2.2 Webcam Capture API </b>

Webcam Capture API là thư viện cho phép sử dụng webcam tích hợp hoặc bên ngồi trực tiếp từ Java. Nó được thiết kế để tóm tắt các tính năng máy ảnh thường được sử dụng và hỗ trợ nhiều frameworks capturing khác nhau.<small>11</small>

<i>Các tính năng của Webcam Capture API: </i>

• API đơn giản, an tồn cho luồng và dựa theo mơ hình non-blocking, • Khơng cần phần mềm bổ sung,

• Hỗ trợ nhiều nền tảng (Windows, Linux, Mac OS, v.v.) và nhiều kiến trúc khác nhau (32-bit, 64-bit, ARM),

• Nhận hình ảnh từ webcam PC tích hợp hoặc kết nối USB,

• Nhận hình ảnh từ camera IP / mạng (dưới dạng MJPEG hoặc JPEG), • Cung cấp sẵn sàng để sử dụng máy dị chuyển động,

• Tất cả các JAR bắt buộc có sẵn ở Maven Central,

• Cung cấp khả năng hiển thị hình ảnh dưới dạng luồng MJPEG,

• Có sẵn dưới dạng Maven dependency hoặc tệp nén ZIP độc lập (bao gồm tất cả các dependency),

• Swing thành phần để hiển thị nguồn cấp dữ liệu video từ máy ảnh, • Swing thành phần để chọn máy ảnh (thả xuống),

• Nhiều frameworks capturing được hỗ trợ: o OpenIMAJ;

o LTI CIVIL;

o Java Media Framework (JMF); o Freedom for Media trong Java (FMJ); o OpenCV thông qua JavaCV;

o VLC qua vlcj; o V4L qua v4l4j;

o GStreamer (chỉ 0.10.x) qua gstreamer-java; o FFmpeg;

o IP MJPEG Cameras;

<small>11 truy cập lần cuối ngày 16/06/2021 </small>

</div><span class="text_page_counter">Trang 40</span><div class="page_container" data-page="40">

<b>3.2.3 MySQL </b>

MySQL là một hệ thống quản lý cơ sở dữ liệu quan hệ mã nguồn mở (RDBMS) dựa trên ngơn ngữ truy vấn có cấu trúc (SQL) được phát triển, phân phối và hỗ trợ bởi tập đoàn Oracle. MySQL chạy trên hầu hết tất cả các nền tảng, bao gồm cả Linux , UNIX và Windows. MySQL thường được kết hợp với các ứng dụng web.<small>12</small>

SQL là ngôn ngữ phổ biến nhất để thêm, truy cập và quản lý nội dung trong cơ sở dữ liệu. Nó được chú ý nhất vì khả năng xử lý nhanh, độ tin cậy đã được chứng minh, dễ sử dụng và linh hoạt. MySQL là một phần thiết yếu của hầu hết mọi ứng dụng PHP mã nguồn mở. Các ví dụ điển hình cho các tập lệnh dựa trên PHP và MySQL là WordPress, Joomla, Magento và Drupal. MySQL đang trở nên phổ biến vì nhiều lý do tốt:

• MySQL được phát hành theo giấy phép nguồn mở. Vì vậy, bạn khơng phải trả tiền để sử dụng nó.

• MySQL là một chương trình rất mạnh theo đúng nghĩa của nó. Nó xử lý một tập hợp lớn các chức năng của các gói cơ sở dữ liệu mạnh mẽ và đắt tiền nhất.

• MySQL sử dụng một dạng chuẩn của ngôn ngữ dữ liệu SQL nổi tiếng.

• MySQL hoạt động trên nhiều hệ điều hành và với nhiều ngôn ngữ bao gồm PHP, PERL, C, C ++, JAVA, v.v.

• MySQL hoạt động rất nhanh và hoạt động tốt ngay cả với các tập dữ liệu lớn. • MySQL rất thân thiện với PHP, ngôn ngữ được đánh giá cao nhất để phát triển web. • MySQL hỗ trợ cơ sở dữ liệu lớn, lên tới 50 triệu hàng hoặc nhiều hơn trong một bảng. Giới hạn kích thước tệp mặc định cho một bảng là 4GB, nhưng bạn có thể tăng mức này (nếu hệ điều hành của bạn có thể xử lý nó) đến giới hạn lý thuyết là 8 triệu terabyte (TB).

• MySQL là tùy biến. Giấy phép GPL mã nguồn mở cho phép các lập trình viên sửa đổi phần mềm MySQL để phù hợp với môi trường cụ thể của riêng họ.

<b>3.2.4 Java Database Connectivity (JDBC) </b>

</div>

×