Lập trình và giải thuật
Thuật toán
Mô hình thuật toán sinh là một công cụ mạnh mẽ được sử dụng để giải quyết các lớp bài toán khác nhau, bao gồm bài toán liệt kê, bài toán đếm và bài toán tối ưu Ngoài ra, mô hình này cũng có thể được áp dụng để giải quyết bài toán tồn tại, với điều kiện là phải thỏa mãn hai tiêu chí quan trọng.
Điều kiện đầu tiên để giải quyết bài toán là phải xác định được thứ tự trên tập các cấu hình cần liệt kê Điều này có nghĩa là chúng ta cần biết cấu hình đầu tiên và cấu hình cuối cùng của bài toán, từ đó mới có thể xây dựng được thứ tự logic và hợp lý cho các cấu hình còn lại.
• Điều kiện 2: Từ một cấu hình chưa phải cuối cùng, ta xây dựng được thuật toán sinh ra cấu hình đứng ngay sau nó.
Mô hình thuật toán sinh được chia thành hai bước chính: bước khởi tạo và bước lặp Tại bước khởi tạo, cấu hình đầu tiên của bài toán được thiết lập dựa trên giả thiết của bài toán Tiếp theo, bước lặp được thực hiện cho đến khi đạt được cấu hình cuối cùng, với điều kiện lặp luôn tồn tại theo giả thiết của bài toán Trong thân vòng lặp, hai chỉ thị quan trọng cần thực hiện là đưa ra cấu hình hiện tại và sinh ra cấu hình kế tiếp, tùy thuộc vào yêu cầu cụ thể của mỗi bài toán.
;
Bước 2 (Bước lặp): while () do
;
; endwhile;
Thuật toán sinh mã Gray (Gray code) là một phương pháp mã hóa dãy nhị phân hiệu quả, giúp các số liên tiếp chỉ khác nhau đúng một bit Phương pháp này được ứng dụng rộng rãi trong thiết kế các mạch số học và logic, mang lại nhiều lợi ích trong việc tối ưu hóa quá trình mã hóa và giải mã.
Các bước để sinh mã Gray như sau:
1 Xác định số bit của mã Gray cần sinh là n.
2 Tạo ra dãy bit ban đầu là dãy nhị phân đơn giản (0, 1).
3 Lặp lại các bước sau cho đến khi tất cả các mã Gray được sinh ra: a) Sao chép dãy bit ban đầu, và dãy bit đảo ngược gray n-1 vào một bộ nhớ tạm thời. b) Với nửa dãy bit đầu vừa sao chép ta thêm “0” vào đầu chuỗi, ngược lại nửa sau thêm
Ví dụ, để sinh ra các mã Gray với độ dài 3 bit, ta có thể thực hiện như sau:
1 Xác định số bit của mã Gray cần sinh: 3.
2 Tạo ra dãy bit ban đầu là (0, 1).
3 Lặp lại các bước sau cho đến khi tất cả các mã Gray được sinh ra: a Gray với n = 1: 0 1 b Gray với n = 2: ”0”0
“1”00 Kết thúc ta được dãy mã gray với n = 3: 000, 001, 011, 010, 110, 111, 101, 100
1.1.2 Thuật toán quy hoạch động:
Phương pháp qui hoạch động dùng để giải lớp các bài toán thỏa mãn những điều kiện sau:
Bài toán lớn có thể được phân rã thành nhiều bài toán con, và sự phối hợp lời giải của các bài toán con này sẽ cho ta lời giải của bài toán lớn Các bài toán con có lời giải đơn giản đóng vai trò là cơ sở của qui hoạch động, và công thức phối hợp nghiệm của chúng để có nghiệm của bài toán lớn được gọi là công thức truy hồi của qui hoạch động.
Qui hoạch động đòi hỏi phải có đủ không gian vật lý để lưu trữ lời giải của các bài toán con, thường được biểu diễn dưới dạng bảng phương án Việc lưu trữ này là cần thiết vì qui hoạch động giải quyết tất cả các bài toán con và sau đó phối hợp các lời giải để tìm ra lời giải tối ưu Nếu không có đủ không gian để lưu trữ, quá trình phối hợp giữa các bài toán con sẽ không thể thực hiện được.
Quá trình giải quyết bài toán lớn cần phải được thực hiện sau hữu hạn bước dựa trên bảng phương án của quy hoạch động, bắt đầu từ việc giải quyết các bài toán cơ sở (bài toán con) và từ đó tìm ra lời giải cho bài toán lớn.
Giải thuật
1.2.1 DSA06001 - Sắp xếp xen kẽ
Sắp xếp mảng theo thứ tự giảm dần hoặc tăng dần.
In ra các phần tử của mảng theo dạng lớn nhất, nhỏ nhất, lớn thứ hai, nhỏ thứ hai, …
Ta lần lượt in phần tử lớn nhất và nhỏ nhất của mảng rồi tăng hoặc giảm index tương ứng để in các phần tử tiếp theo
Với mỗi bước, ta cập nhật index cho phần tử tiếp theo mà ta sẽ in cho đến khi duyệt hết các phần tử của mảng.
1.2.2 DSA06002 - Sắp xếp theo giá trị tuyệt đối
Tạo một mảng B[] với n phần tử, mỗi phần tử của mảng B[] sẽ chứa cặp giá trị (|X - A[i]|, A[i]).
Sắp xếp mảng B[] theo thứ tự tăng dần theo phần tử đầu tiên của mỗi cặp giá trị (tức là theo trị tuyệt đối của |X - A[i]|).
In ra các phần tử của mảng đã được sắp xếp theo thứ tự trên.
1.2.3 DSA06003 - Đổi chỗ ít nhất
Để tìm số phép đổi chỗ ít nhất giữa các phần tử của mảng để mảng được sắp xếp, giải thuật Selection Sort có thể được áp dụng để sắp xếp mảng đồng thời đếm số phép đổi chỗ được thực hiện, từ đó cung cấp giải pháp tối ưu cho việc sắp xếp mảng.
Duyệt qua từng phần tử trong mảng và tìm phần tử nhỏ nhất trong đoạn từ phần tử đang xét đến cuối mảng;
Nếu phần tử nhỏ nhất khác với phần tử hiện tại, ta đổi chỗ hai phần tử này và tăng biến đếm số phép đổi chỗ lên 1;
Sau khi sắp xếp xong ta được giá trị số lần đổi chỗ được lưu ở biến đếm.
1.2.4 DSA06005 - Hợp và giao của hai dãy số 2
Đối với mảng hợp (Union): ta sử dụng kỹ thuật merge sort để trộn hai mảng và loại bỏ các phần tử trùng nhau.
Đối với mảng giao, chúng ta sử dụng hai con trỏ i và j để duyệt qua hai mảng A[] và B[] Khi A[i] nhỏ hơn B[j], con trỏ i sẽ được tăng lên, ngược lại, con trỏ j sẽ được tăng lên Trong trường hợp A[i] bằng B[j], phần tử đó sẽ được thêm vào mảng giao và cả hai con trỏ i và j sẽ được tăng lên.
1.2.5 DSA06007 - Sắp xếp dãy con liên tục
Sử dụng hai con trỏ lặp qua mảng Ta bắt đầu bằng cách đặt con trỏ bên trái ở đầu mảng và con trỏ bên phải ở cuối mảng;
Ta di chuyển con trỏ bên trái sang phải cho đến khi phần tử thứ i không nằm ở đúng vị trí;
Tương tự, ta di chuyển con trỏ bên phải sang trái cho đến khi phần tử thứ j không nằm ở đúng vị trí;
Sau đó, ta tìm giá trị lớn nhất và nhỏ nhất trong đoạn [i+1 j-1] và lưu lại vị trí của chúng là l và r;
Cuối cùng, chúng ta di chuyển con trỏ bên trái sang phải cho đến khi tìm thấy vị trí "l" sao cho giá trị tại đó lớn hơn giá trị tối thiểu (min) và di chuyển con trỏ bên phải sang trái cho đến khi tìm thấy vị trí "r" sao cho giá trị tại đó nhỏ hơn giá trị tối đa (max).
Kết quả là dãy con liên tục A[l+1 r-1].
1.2.6 DSA06009 - Cặp số tổng bằng K
Tạo một biến để đếm số cặp phần tử của mảng có tổng bằng K.
Dùng hai vòng lặp lồng nhau để duyệt qua từng cặp phần tử của mảng.
Kiểm tra nếu tổng của cặp phần tử đang xét bằng k thì tăng biến lên 1.
In ra giá trị của biến.
1.2.7 DSA06010 - Sắp xếp chữ số Để giải quyết bài toán này, ta có thể làm như sau:
Tạo một mảng có 10 phần tử với giá trị các phần tử bằng 0;
Để tính toán giá trị của j cho từng phần tử trong mảng đầu vào, ta sử dụng vòng lặp while để chia dư cho đến khi phần tử đó bằng 0 Trong quá trình lặp, nếu phần tử chia dư cho j có giá trị bằng 1, ta gán giá trị đó bằng 1 và tiếp tục lặp lại quá trình cho đến khi phần tử đó bằng 0.
Sử dụng lần lượt đến hết các phần tử trong mảng đầu vào ta được 1 mảng gồm các ký tự số được đánh dấu từ 0 đến 9 là 1;
Sau đó ta in ra các phần tử trong mảng a[] với điều kiện a[i]=1, ta đã được yêu cầu của bài toán.
- Sử dụng 2 biến chạy để tính tổng 2 phần tử rồi lưu tổng trị tuyệt đối của 2 phần tử vào;
- Sau khi chạy hết vòng ta sẽ được lấy được tổng 2 số có giá trị trị tuyệt đối gần 0 nhất.
1.2.9 DSA06012 - Phần tử lớn nhất
Để giải quyết bài toán này, ta có thể sử dụng thuật toán Heap Sort để sắp xếp mảng theo thứ tự giảm dần
Sau đó, lấy ra k phần tử đầu tiên của mảng đã sắp xếp là k phần tử lớn nhất của mảng ban đầu.
1.2.10 DSA06013 - Số lần xuất hiện
Sử dụng 1 biến đếm gắn bằng 0 đếm số lần xuất hiện của số K ngay khi nhập vào.
Ngay khi gặp phần tử nhập vào của mảng có giá trị bằng k thì biến đếm tự động tăng lên 1 đơn vị.
Sau khi nhập xong mảng thì ta sẽ thu được số lần xuất hiện của k trong mảng đó.
Nếu giá trị của biến đếm bằng 0 thì ta cho in ra “-1”, ngược lại ta in ra giá trị của biến đếm.
1.2.11 DSA06014 - Tổng cặp số nguyên tố Để giải bài toán này sử dụng sàng nguyên tố, ta có thể thực hiện các bước sau:
Khởi tạo một mảng check có kích thước N+1 và tất cả các phần tử đều là True.
Duyệt qua từng số nguyên i từ 2 đến căn bậc hai của N Nếu check[i] là True, ta sẽ đánh dấu các bội số của i (kể từ i^2) trong check[] là False.
Tạo một danh sách các số nguyên tố là các phần tử có giá trị True trong mảng check.
Duyệt qua từng cặp số nguyên tố trong danh sách mà có tổng bằng N.
Nếu tìm thấy cặp số nguyên tố có tổng bằng N, trả về cặp số đó Nếu không tìm thấy, trả về -1.
Giải thuật Merge Sort là một giải thuật sắp xếp đệ quy Thuật toán hoạt động bằng cách:
Bước 2: Khai báo mảng và các biến left, right, mid;
Bước 3: Thực hiện hợp nhất:
Nếu left>right: return; mid=(left+right)/2;
Merge(array, left, mid, right)
1.2.13 DSA06016 - Tích lớn nhất, nhỏ nhất
Sắp xếp 2 mảng từ nhỏ đến lớn.
Để bắt đầu, chúng ta sẽ lấy phần tử cuối cùng trong mảng đầu tiên, đây cũng là phần tử có giá trị lớn nhất, đồng thời lấy phần tử đầu tiên trong mảng thứ hai, là phần tử có giá trị nhỏ nhất.
Sử dụng 1 biến là tích 2 giá trị vừa lấy được ở trên.
Sau đó in ra màn hình.
Khởi tạo mảng C[] với kích thước bằng tổng kích thước 2 mảng A[] và B[].
Sử dụng 2 biến con trỏ i và j để lần lượt duyệt qua 2 mảng A[] và B[] Ban đầu, i và j được khởi tạo bằng 0.
Quá trình so sánh và gán giá trị được thực hiện theo nguyên tắc sau: phần tử thứ i của mảng A[] được so sánh với phần tử thứ j của mảng B[] Nếu A[i] nhỏ hơn hoặc bằng B[j], giá trị của A[i] sẽ được gán vào mảng C[] và giá trị của i sẽ được tăng lên 1 Ngược lại, giá trị của B[j] sẽ được gán vào mảng C[] và giá trị của j sẽ được tăng lên 1, giúp tạo ra một mảng mới C[] có thứ tự tăng dần.
Lặp lại bước 3 cho đến khi đã duyệt qua hết cả 2 mảng A[] và B[].
Nếu một trong 2 mảng A[] hoặc B[] vẫn còn phần tử chưa được duyệt, thì lặp lại bước 3 để đưa các phần tử này vào mảng C[].
1.2.15 DSA06018 - Bổ sung phần tử
Sử dụng một mảng đánh dấu để đếm số lượng các phần tử trong khoảng [L, R].
Đầu tiên, ta duyệt qua mảng A để tìm L và R
Sau đó, ta tạo một mảng đánh dấu với độ dài bằng R-L+1, và đánh dấu các phần tử trong mảng A trên mảng đánh dấu này
Cuối cùng, ta đếm số lượng phần tử trong khoảng [L, R] bị thiếu và trả về kết quả.
Bài toán này có thể giải quyết bằng cách sử dụng thuật toán tìm kiếm nhị phân Vì mảng
A đã được sắp xếp, ta có thể áp dụng thuật toán này để tìm kiếm X trong mảng A. Thuật toán tìm kiếm nhị phân hoạt động như sau:
So sánh X với phần tử giữa của mảng A
Nếu X lớn hơn phần tử giữa này, tiếp tục tìm kiếm trong nửa phía bên phải của mảng.
Nếu X nhỏ hơn phần tử giữa này, tiếp tục tìm kiếm trong nửa phía bên trái của mảng
Nếu X bằng phần tử giữa này, ta trả về 1
Nếu mảng đã được tìm kiếm đến khi chỉ còn 1 phần tử mà không bằng X, ta trả về -1.
1.2.17 DSA06021 - Tìm kiếm trong dãy sắp xếp vòng Để giải quyết bài toán này với độ phức tạp O(log n), ta có thể sử dụng thuật toán tìm kiếm nhị phân để tìm vị trí của phần tử trong mảng Tuy nhiên, vì mảng là mảng sắp xếp vòng, nên ta không thể dùng cách thông thường để áp dụng thuật toán tìm kiếm nhị phân. Thay vào đó, ta có thể sử dụng phương pháp chia để trị để tìm vị trí Cụ thể:
Chia mảng thành hai phần riêng biệt là phần đầu và phần cuối Phần đầu bao gồm đoạn có giá trị tăng dần, trong khi phần cuối cũng có giá trị tăng dần nhưng với giá trị nhỏ hơn so với phần đầu.
Để xác định vị trí của phần tử x trong mảng A, ta sử dụng thuật toán tìm kiếm nhị phân trên từng phần của mảng.
Đầu tiên, ta sẽ tìm giá trị trung bình của mảng, lấy giá trị này làm điểm chính giữa để chia mảng thành hai phần.
Sau đó, ta sử dụng thuật toán tìm kiếm nhị phân để tìm vị trí của phần tử x trong phần đầu và phần cuối của mảng.
Nếu phần tử x không có trong phần đầu, ta tiếp tục tìm trong phần cuối của mảng.
Nếu phần tử x không có trong phần cuối, ta tiếp tục tìm trong phần đầu của mảng.
Nếu phần tử x không có trong mảng, ta trả về -1.
1.2.18 DSA06022 - Số nhỏ nhất và nhỏ thứ hai Để giải bài toán này, ta có thể thực hiện theo các bước sau:
Đưa ra 2 biến đại diện cho số nhỏ nhất và số nhỏ thứ hai, ban đầu gán chúng bằng vô cùng.
Duyệt qua từng phần tử của mảng A[].
Nếu phần tử đó nhỏ hơn số nhỏ nhất, số nhỏ nhất sẽ được cập nhật thành phần tử đó và số nhỏ thứ hai sẽ trở thành số nhỏ nhất ban đầu, vì tại thời điểm này, chúng ta vẫn chưa tìm thấy số nhỏ thứ hai nào khác.
Nếu phần tử đó không nhỏ hơn số nhỏ nhất nhưng lại nhỏ hơn số nhỏ thứ hai, thì số nhỏ thứ hai sẽ trở thành phần tử đó.
Thuật toán sẽ trả về số nhỏ nhất và số nhỏ thứ hai nếu có, nếu không có số nhỏ thứ hai, kết quả sẽ là -1 Độ phức tạp thời gian của thuật toán này là O(n), với n là số phần tử của mảng A[].
1.2.19 DSA06023 - Sắp xếp đổi chỗ trực tiếp
Khởi tạo giá trị min_idx tại vị trí 0;
Duyệt lần lượt phần tử trong mảng, nếu giá trị phần tử nào nhỏ hơn min_idx thì đổi chỗ;
Sau đó, tăng vị trí min_idx đến phần tử tiếp theo;
Lặp lại cho đến khi mảng được sắp xếp.
Khởi tạo giá trị min_idx tại vị trí 0;
Duyệt qua mảng để tìm phần tử nhỏ nhất trong mảng;
Khi duyệt nếu tìm thấy phần tử nào nhỏ hơn min_idx thì hoán đổi cả 2 giá trị;
Sau đó, tăng min_idx trỏ đến phần tử tiếp theo;
Lặp lại cho đến khi mảng được sắp xếp.
Lặp từ vị trí 1 đến vị trí n-1 trên mảng.
So sánh phần tử hiện tại (khóa) với người tiền nhiệm của nó.
Nếu phần tử chính nhỏ hơn phần tử tiền nhiệm của nó, hãy so sánh nó với các yếu tố trước đó
Di chuyển các phần tử lớn hơn lên một vị trí để tạo không gian cho phần tử được hoán đổi.
1.2.22 DSA06026 - Sắp xếp nổi bọt
Khởi tạo giá trị min_idx tại vị trí 0;
Quá trình sắp xếp bắt đầu bằng việc so sánh giá trị tại chỉ số min_idx với giá trị tại vị trí min_idx + 1 Nếu giá trị tại min_idx nhỏ hơn giá trị tại min_idx + 1, hai giá trị này sẽ được đổi chỗ để đảm bảo thứ tự tăng dần.
Lặp lại cho đến khi mảng được sắp xếp.
Cơ sở dữ liệu quản lý sinh viên
Khảo sát và phân tích bài toán
2.1.1 Lý do chọn đề tài:
Việc ứng dụng công nghệ thông tin trong công tác quản lý đang trở thành nhu cầu cấp thiết và cấp bách trong thời đại hiện nay Đặc biệt, trong lĩnh vực quản lý sinh viên, việc điều chỉnh và bổ sung thông tin thường gặp nhiều khó khăn và hạn chế Việc tìm kiếm thông tin thủ công cũng tốn nhiều thời gian và có mức độ chính xác thấp, do đó, việc sử dụng máy tính trong công tác quản lý sinh viên là yếu tố cần thiết để nâng cao chất lượng và hiệu quả công việc.
Nhằm hỗ trợ tối đa việc quản lý, nhóm chúng em đã thống nhất tìm hiểu và nghiên cứu xây dựng phần mềm quản lý sinh viên Phần mềm này giúp việc thao tác tra cứu, báo cáo thống kê diễn ra nhanh chóng với độ chính xác cao và thao tác đơn giản, đáp ứng nhu cầu quản lý hiện đại.
Hệ thống quản lý điểm sinh viên bao gồm 3 bộ phận, hoạt động có mối liên hệ chặt chẽ nhau:
Bộ phận quản lý đào tạo: Cập nhật môn học, xây dựng chương trình đạo tạo.
Bộ phận quản lý sinh viên đóng vai trò quan trọng trong việc quản lý hồ sơ sinh viên xuyên suốt quá trình học tập tại trường Bộ phận này thực hiện các công việc liên quan đến sinh viên, bao gồm cập nhật thông tin sinh viên khóa mới, quản lý danh sách ngành học và khóa học, cũng như thực hiện các thủ tục chuyển lớp, tách lớp, dừng học và thôi học Ngoài ra, bộ phận này còn lưu trữ hồ sơ của sinh viên đã tốt nghiệp vào hệ thống máy tính Để hỗ trợ công việc, bộ phận này sử dụng phần mềm "Hồ sơ sinh viên" (HSSV) trên máy tính, cho phép cập nhật, thêm, xóa và sửa thông tin của sinh viên một cách hiệu quả.
Ban Khảo Thí có nhiệm vụ cập nhật điểm từng môn học và học kỳ khi kết thúc, bao gồm cả việc kiểm tra và cập nhật điểm rèn luyện của sinh viên Đồng thời, bộ phận này tính toán điểm trung bình học tập của mỗi kỳ và mỗi năm học, sau đó thống kê toàn bộ kết quả học tập của sinh viên theo từng học kỳ và toàn khóa học Dựa trên các quy định của phòng đào tạo và điểm trung bình chung của sinh viên, ban khảo thí cũng thống kê và báo cáo danh sách sinh viên thi lại, học lại, thôi học, học bổng và chuyển kết quả cho cán bộ khác và sinh viên Để hỗ trợ công việc, bộ phận này sử dụng hệ chương trình nhập điểm để cập nhật và in phiếu điểm cho từng lớp và từng sinh viên.
Người có nhu cầu sử dụng phần mềm quản lý sinh viên.
Quy trình hoạt động của các mềm quản lý sinh viên thông thường.
Hệ thống theo dõi quá trình học tập của sinh viên giúp phòng đào tạo giám sát và đánh giá kết quả học tập một cách nhanh chóng và chính xác Quá trình nhập điểm và in điểm cũng được đảm bảo không sai sót, giảm thiểu công sức và giấy tờ, sổ sách lưu trữ Nhờ đó, quá trình học tập của sinh viên từ khi nhập học đến khi ra trường được quản lý chặt chẽ và hiệu quả.
Hệ thống không chỉ giúp cập nhật điểm của từng sinh viên mà còn cho phép tra cứu một số thông tin cần thiết khác về sinh viên, bao gồm ngày sinh, quê quán và chỗ ở hiện tại, giúp việc quản lý và theo dõi trở nên dễ dàng và chính xác hơn.
Hệ thống lưu trữ, xử lý kết quả học tập của sinh viên theo quy chế của trường, giúp kiểm soát thống kê việc khen thưởng, xét học bổng, xét lưu ban, thi lại, học lại một cách nhanh chóng và chính xác Thông qua công tác quản lý này, nhà trường có thể xây dựng hồ sơ cụ thể về kết quả học tập và rèn luyện của sinh viên khi ra trường, đảm bảo tính minh bạch và chính xác trong quản lý kết quả học tập.
Phân tích và thiết kế hệ thống bằng UML;
Tìm hiểu cách thức quản lý thông tin sinh viên, giảng viên và kế hoạch đào tạo.
Để xây dựng chương trình hiệu quả, việc tìm hiểu các công cụ cần thiết là rất quan trọng Sử dụng Visual Studio là một lựa chọn phổ biến để thiết kế giao diện và xây dựng phần mềm, giúp bạn tạo ra sản phẩm có tính tương tác cao và dễ sử dụng Bên cạnh đó, việc sử dụng SSMS (SQL Server Management Studio) để thiết kế cơ sở dữ liệu cho hệ thống cũng là một bước quan trọng, giúp bạn quản lý và lưu trữ dữ liệu một cách khoa học và an toàn.
2.1.6 Ý nghĩa lý luận và thực tiễn của đề tài.
Đề tài sẽ mang lại ý nghĩa to lớn về mặt lý luận thực tiễn;
Chương trình cùng với giải thích chi tiết sẽ trở thành tài liệu học tập và tham khảo lý tưởng, giúp sinh viên dễ dàng hiểu và áp dụng kiến thức về kiến trúc hướng dịch vụ trong quá trình nghiên cứu của mình.
Là một sản phẩm mang tính ứng dụng phục vụ việc quản lý thông tin sinh viên trong nhà trường;
Là công cụ giúp nhà trường quản lý giảng viên, sinh viên và tìm kiếm thông tin một cách dễ dàng.
Thiết kế chương trình
2.2.1 Sơ đồ chức năng hệ thống:
Hình 1 Sơ đồ chức năng của hệ thống.
2.2.2.1 Sơ đồ UC dạng tổng quát:
Hình 2 Biều đồ UC tổng quát
2.2.2.2 Danh sách các tác nhân và mô tả:
Bàng 1 Thiết kế hệ thống
Tác nhân Mô tả tác nhân Ghi chú
Người quản lý hệ thống (admin) có quyền truy cập và chỉnh sửa thông tin trên toàn hệ thống thông qua hệ thống "quản lý sinh viên" Với chức năng này, người quản lý có thể cập nhật thông tin chi tiết về sinh viên và giảng viên, bao gồm họ tên, ngày sinh, quê quán, ngành học, lớp học, điểm và các thông tin khác liên quan.
Người dùng có quyền tự chỉnh sửa và cập nhật các thông tin cá nhân của mình, bao gồm họ tên, ngày sinh, quê quán, ngành học, lớp học và các thông tin khác Đồng thời, người dùng cũng có thể dễ dàng truy cập và xem thời khóa biểu, danh sách thi và các thông tin liên quan khác.
2.2.2.3 Danh sách các Use Case và mô tả:
Bàng 2 Danh sách UseCase và mô tả.
ID Tên use case Chức năng
UC1 Đăng nhập Đăng nhập vào hệ thống quản lý sinh viên
UC2 Đổi mật khẩu Cấp lại mật khẩu khi người dùng quên mật khẩu.
UC3 Quản lý thông tin Thêm sinh viên, cập nhật và sửa các thông tin của sinh viên, giảng viên.
UC4 Xem thời khóa biểu Cho phép giảng viên xem thời khóa biểu
UC5 Quản lý điểm Cho phép giảng viên quản lý điểm qua thao tác nhập điểm, sửa điểm của các sinh viên.
UC6 Quản lý môn học Cho phép giảng viên xem, thêm, xóa môn học và sửa môn học của sinh viên.
UC7 Xuất điểm Cho phép người dùng thống kê điểm và xuất điểm ra file excel.
UC8 Xuất thời khóa biểu Cho phép người dùng xuất thời khoá biểu ra file excel để dễ dàng lưu trữ và sử dụng.
UC9 Xuất lịch thi Cho phép người dùng xuất lịch thi ra file excel
2.2.3.1 Đặc tả UC1 - Đăng nhập:
Bảng 3 Đặc tả Use Case - Đăng nhập
Mô tả Mô tả hoạt động đăng nhập vào hệ thống của tác nhân
Diều kiện tiên quyết Hệ thống đã được khởi động sẵn sàng, tác nhân đã được đăng ký tài khoản trước đó.
Dòng sự kiến chính 1 Tác nhân khởi động chương trình
2 Hệ thống hiển thị và yêu cầu nhập thông tin
3 Tác nhân nhập thông tin cần thiết, chọn nút đăng nhập
4 Hệ thống kiểm tra thông tin
Dòng sự kiện phụ Tác nhân nhập sai mật khẩu
Hệ thống báo lỗi và yêu cầu đăng nhập lại
Tác nhân lặp lại bước 3 Điều kiện cuối Không có
2.2.3.2 Đặc tả UC2 - Đổi mật khẩu:
Bảng 4 Đặc tả use case - Đổi mật khẩu
Tên use case Đổi mật khẩu
Tác nhân Admin, giảng viên, sinh viên
Để đổi lại mật khẩu đăng nhập vào hệ thống, cần đảm bảo hệ thống đã được khởi động sẵn và có tác nhân đổi mật khẩu hợp lệ Điều kiện tiên quyết này là bước đầu tiên quan trọng để thực hiện quá trình đổi mật khẩu thành công.
Dòng sự kiện chính 1 Tác nhân khưởi động giao diện chương trình.
2 Hệ thống hiển thị và yêu cầu đăng nhập
3 Tác nhân chọn “đổi mật khẩu”
4 Hệ thống yêu cầu cập nhật thông tin xác thực
5 Hệ thống yêu cầu nhập lại mật khẩu
6 Tác nhân xác nhận đổi mật khẩu, hệ thống lưu lại mật khẩu vào database.
Dòng sự kiện phụ Tác nhân nhập sai mật khẩu
Hệ thống yêu cầu nhập lại thông tin xác thực
Tác nhân lặp lại bước 4
Hệ thống yêu cầu nhập mật khẩu mới và xác nhận lại.
Tác nhân nhập mật khẩu lần 2 không khớp
Tác nhân thực hiện lại bước 5 Điều kiện cuối Không có
2.2.3.3 Đặc tả UC3 - Cập nhật thông tin:
Bảng 5 Đặc tả Use Case - Cập nhật thông tin
Tên UC Cập nhật thông tin
Tác nhân Giảng viên, Admin
Mô tả Mô tả hoạt động cập nhật thông tin sinh viên vào hệ thống quản lý
Diều kiện tiên quyết Hệ thống đã được khởi động sẵn sàng, tác nhân đã được đăng ký tài khoản trước đó và đã đăng nhập thành công.
Dòng sự kiến chính 1 Tác nhân khởi động giao diện chương trình
2 Tác nhân chọn 1 trong các thao tác: thêm, xóa, sửa.
3 Tác nhân nhập các thông tin cần thiết của sinh viên để tiến hành thêm hoặc sửa thông tin sinh viên.
4 Tác nhân chọn vào sinh viên cần xóa và chọn thao tác xóa để xóa thông tin sinh viên đó.
5 Hệ thống tiến hành cập nhật dữ liệu vừa mới được chỉnh sửa vào database.
Dòng sự kiện phụ Tác nhân để trống 1 hoặc nhiều thông tin của sinh viên.
Hệ thống báo lỗi và yêu cầu điền đầy đủ thông tin
Tác nhân lặp lại bước 3 Điều kiện cuối Không có
2.2.3.4 Đặc tả UC4 - Xem thời khóa biểu:
Bảng 6 Đặc tả use case - Xem thời khóa biểu
Tên use case Xem thời khóa biểu
Để xem thời khóa biểu của giảng viên, hệ thống cần được khởi động sẵn và người dùng phải đăng ký tài khoản cũng như đăng nhập thành công vào hệ thống.
Dòng sự kiện chính 1 Tác nhân khởi động giao diện chương trình.
2 Tác nhân chọn vào tính năng xem thời khóa biểu
3 Hệ thống đưa ra lựa chọn thời khóa biểu theo học kỳ và tuần.
4 Tác nhân lựa chọn 1 trong 2 hình thức xem thời khóa biểu
5 Hệ thống hiện thị thời khóa biểu theo lựa chọn của giảng viên.
Dòng sự kiện phụ Không có Điều kiện cuối Không có
2.2.3.5 Đặc tả UC5 - Quản lý điểm:
Bảng 7 Đặc tả use case - Quản lý điểm
Tên use case Quản lý điểm
Tác nhân Giảng viên, Admin
Để xem và chỉnh sửa điểm của giảng viên, cần đảm bảo hệ thống đã được khởi động sẵn và người dùng đã đăng ký tài khoản cũng như đăng nhập thành công vào hệ thống.
Dòng sự kiện chính 1 Tác nhân khởi động giao diện chương trình
2 Tác nhân chọn vào tính năng quản lý điểm
3 Hệ thống đưa ra lựa chọn các danh sách điểm và thao tác: thêm, sửa, xóa điểm của sinh viên.
4 Tác nhân lựa chọn danh sách điểm cần thao tác và thực hiện các thao tác quản lý
5 Hệ thống cập nhật các thay đổi vào database sau khi tác nhân hoàn thành thao tác.
Dòng sự kiện phụ Không có Điều kiện cuối Không có
2.2.3.6 Đặc tả UC6 - Quản lý môn học:
Bảng 8 Đặc tả use case - Quản lý môn học
Tên use case Quản lý môn học
Tác nhân Giảng viên, admin
Để thực hiện hoạt động xem và chỉnh sửa môn học, giảng viên cần đảm bảo hệ thống đã được khởi động sẵn, đồng thời phải đăng ký tài khoản và đăng nhập thành công.
Dòng sự kiện chính 1 Tác nhân khởi động giao diện chương trình
2 Tác nhân chọn vào tính năng quản lý môn học
3 Hệ thống hiển thị danh sách các môn học
4 Tác nhân lựa chọn danh sách môn học cần chỉnh sửa
5 Tác nhân tiến hành thao tác thêm môn học, xóa hoặc chỉnh sửa môn học
6 Hệ thống cập nhật các thay đổi vào database.
Dòng sự kiện phụ Không có Điều kiện cuối Không có
2.2.3.7 Đặc tả UC7 - Tra cứu điểm:
Bảng 9 Đặc tả use case - Tra cứu điểm
Tên use case Tra cứu điểm
Tác nhân Giảng viên, admin
Để xuất danh sách điểm ra thành file excel, cần đảm bảo hệ thống đã được khởi động sẵn và người dùng đã đăng ký tài khoản cũng như đăng nhập thành công vào hệ thống.
Dòng sự kiện chính 1 Tác nhân khởi động giao diện chương trình
2 Tác nhân chọn vào tính năng tra cứu điểm
3 Hệ thống hiển thị các ô nhập thông tin
4 Tác nhân nhập thông tin
5 Hệ thống tiến hành xuất điểm theo thông tin tác nhân nhập ra màn hình
Dòng sự kiện phụ Không có Điều kiện cuối Không có
2.2.3.8 Đặc tả UC8 - Xuất thời khóa biểu:
Bảng 10 Đặc tả use case - Xuất thời khóa biẻu
Tên use case Xuất thời khóa biểu
Tác nhân Giảng viên, admin
Để xuất thời khóa biểu ra thành file excel, cần đáp ứng điều kiện tiên quyết là hệ thống đã được khởi động sẵn, tác nhân phải đăng ký tài khoản và đã đăng nhập thành công vào hệ thống.
Dòng sự kiện chính 6 Tác nhân khởi động giao diện chương trình
7 Tác nhân chọn vào tính năng xuất thời khóa biểu
8 Hệ thống đưa ra các định dạng xuất
9 Tác nhân lựa chọn định dạng xuất
10 Hệ thống tiến hành xuất thời khóa biểu ra file excel Dòng sự kiện phụ Không có Điều kiện cuối Không có
2.2.3.9 Đặc tả UC9 - Xuất lịch thi:
Bảng 11 Đặc tả use case - Xuất lịch thi
Tên use case Xuất lịch thi
Tác nhân Giảng viên, admin
Để xuất danh sách điểm ra thành file Excel, cần thực hiện theo các bước sau Điều kiện tiên quyết là hệ thống phải được khởi động sẵn, tác nhân đã được đăng ký tài khoản và đã đăng nhập thành công vào hệ thống.
Dòng sự kiện chính 1 Tác nhân khởi động giao diện chương trình
2 Tác nhân chọn vào tính năng xem lịch thi
3 Hệ thống hiển thị các ô nhập thông tin
4 Tác nhân nhập thông tin
5 Hệ thống tiến hành xuất lịch thi theo thông tin tác nhân nhập ra màn hình
Dòng sự kiện phụ Không có Điều kiện cuối Không có
Thiết kế cơ sở dữ liệu Quản lý sinh viên
Hình 5 Sơ đồ quan hệ
2.3.1 Bảng cơ sở dữ liệu
Máy tính và điều khiển
Ảo hóa
3.1.1 Giới thiệu Ảo hóa là công nghệ mà bạn có thể sử dụng để tạo các dạng trình bày ảo của máy chủ, kho lưu trữ, mạng và nhiều máy vật lý khác Phần mềm ảo mô phỏng các chức năng của phần cứng vật lý để chạy đồng thời nhiều máy ảo trên một máy vật lý duy nhất Các doanh nghiệp ứng dụng công nghệ ảo hóa để sử dụng hiệu quả tài nguyên phần cứng của họ và thu về lợi nhuận trên vốn đầu tư lớn hơn Công nghệ này cũng hỗ trợ nhiều dịch vụ điện toán đám mây giúp các tổ chức quản lý cơ sở hạ tầng hiệu quả hơn.
Bằng cách áp dụng công nghệ ảo hóa, bạn có thể tương tác với các tài nguyên phần cứng một cách linh hoạt hơn Việc sử dụng máy chủ vật lý thường đi kèm với những hạn chế như tiêu thụ điện năng, chiếm dụng không gian lưu trữ và yêu cầu bảo trì thường xuyên Ngoài ra, khoảng cách tiếp cận thực tế và thiết kế mạng cũng có thể trở thành rào cản khi muốn truy cập máy chủ vật lý Tuy nhiên, ảo hóa giúp loại bỏ những giới hạn này bằng cách chuyển đổi chức năng của phần cứng vật lý thành phần mềm, cho phép bạn quản lý, bảo trì và sử dụng cơ sở hạ tầng phần cứng như một ứng dụng trên web.
3.1.2 Một số loại ảo hóa
Công nghệ ảo hóa cho phép bạn tận dụng các chức năng của nhiều loại cơ sở hạ tầng vật lý khác nhau và tận hưởng tất cả lợi ích của môi trường ảo hóa Ảo hóa máy chủ là quy trình phân vùng một máy chủ vật lý thành nhiều máy chủ ảo, giúp sử dụng tài nguyên máy chủ và triển khai dịch vụ CNTT hiệu quả về chi phí Ngoài ra, ảo hóa kho lưu trữ kết hợp các chức năng của thiết bị lưu trữ vật lý như NAS và SAN, cho phép bạn gộp phần cứng lưu trữ vào trung tâm dữ liệu và tạo ra một đơn vị lưu trữ ảo lớn có thể được chỉ định và kiểm soát bằng phần mềm quản lý Điều này giúp quản trị viên CNTT hợp lý hóa các hoạt động lưu trữ, chẳng hạn như lưu trữ, sao lưu và phục hồi.
Mọi mạng máy tính đều có các yếu tố phần cứng cơ bản như bộ chuyển mạch, bộ định tuyến và tường lửa Đối với các tổ chức có nhiều văn phòng tại các vị trí địa lý khác nhau, việc kết hợp nhiều công nghệ mạng khác nhau là cần thiết để xây dựng mạng doanh nghiệp hiệu quả Quá trình ảo hóa mạng cho phép kết hợp tất cả tài nguyên mạng này, tập trung hóa các tác vụ quản trị và giúp các quản trị viên dễ dàng điều chỉnh, kiểm soát mà không cần tiếp xúc trực tiếp với các thành phần vật lý, từ đó đơn giản hóa quá trình quản lý mạng.
Các tổ chức hiện đại thường thu thập dữ liệu từ nhiều nguồn và lưu trữ chúng ở các định dạng khác nhau, đồng thời phân tán dữ liệu tại các địa điểm như cơ sở hạ tầng đám mây và trung tâm dữ liệu tại chỗ Để giải quyết thách thức này, hoạt động ảo hóa dữ liệu tạo ra một lớp phần mềm trung gian, cho phép các công cụ ảo hóa dữ liệu xử lý yêu cầu dữ liệu từ ứng dụng và trả về kết quả ở định dạng phù hợp Bằng cách áp dụng giải pháp ảo hóa dữ liệu, các tổ chức có thể tăng cường độ linh hoạt trong quá trình tích hợp dữ liệu và hỗ trợ phân tích dữ liệu liên chức năng một cách hiệu quả hơn.
Hoạt động ảo hóa ứng dụng cho phép chạy các chức năng của ứng dụng trên hệ điều hành khác với hệ điều hành gốc ban đầu Điều này giúp người dùng có thể tận dụng các ứng dụng yêu thích trên nhiều nền tảng khác nhau mà không cần thay đổi cấu hình máy tính Ví dụ, người dùng có thể chạy ứng dụng Microsoft Windows trên máy tính Linux một cách dễ dàng và hiệu quả.
Hầu hết các tổ chức đều có nhân viên không chuyên về kỹ thuật sử dụng hệ điều hành máy tính để chạy các ứng dụng doanh nghiệp phổ biến Việc ảo hóa máy tính cho phép chạy nhiều hệ điều hành khác nhau trên máy ảo, giúp đội ngũ truy cập từ xa một cách dễ dàng Loại hình ảo hóa này mang lại hiệu quả quản lý máy tính cao, đảm bảo bảo mật và tiết kiệm chi phí phần cứng máy tính, đồng thời giúp các tổ chức tối ưu hóa hoạt động công nghệ thông tin của mình.
3.1.3 Hoạt động của ảo hóa Ảo hóa sử dụng phần mềm chuyên dụng gọi là phần mềm giám sát máy ảo để tạo ra một số phiên bản đám mây hoặc máy ảo trên một máy tính vật lý.
Các phiên bản đám mây hoặc máy ảo cho phép người dùng tạo ra một hoặc nhiều máy ảo trên máy tính của mình sau khi cài đặt phần mềm ảo hóa Máy ảo hoạt động như một máy chủ điển hình, với hệ điều hành riêng, cấu hình và ứng dụng đã cài đặt, cũng như tài nguyên điện toán như CPU, RAM và kho lưu trữ Người dùng có thể truy cập máy ảo giống như các ứng dụng khác trên máy tính, và cấu hình, cập nhật hệ điều hành máy khách và ứng dụng mà không ảnh hưởng tới hệ điều hành của máy chủ.
Phần mềm giám sát máy ảo là lớp phần mềm trung gian giữa các máy ảo và phần cứng cơ sở hoặc hệ điều hành của máy chủ, đóng vai trò điều phối quyền truy cập vào môi trường vật lý Khi cài đặt trên máy vật lý, phần mềm này cho phép một số máy ảo có quyền truy cập vào phần tài nguyên vật lý của riêng chúng, tạo điều kiện cho việc quản lý và sử dụng hiệu quả tài nguyên máy tính.
Khi máy ảo yêu cầu tài nguyên điện toán như năng lực xử lý của máy tính, phần mềm giám sát máy ảo sẽ nhận và chuyển yêu cầu đó đến phần cứng cơ sở Phần cứng cơ sở sau đó sẽ thực hiện tác vụ và cung cấp kết quả cho phần mềm giám sát máy ảo, từ đó đáp ứng nhu cầu của máy ảo.
Sau đây là hai loại phần mềm giám sát máy ảo chính:
Phần mềm giám sát máy ảo loại 1, còn được gọi là phần mềm giám sát máy ảo bare metal, hoạt động trực tiếp trên phần cứng của máy tính, mang lại hiệu suất cao nhờ tương tác trực tiếp với các tài nguyên vật lý.
Phần mềm giám sát máy ảo loại 2 hoạt động như một ứng dụng trên phần cứng của máy tính, chạy đồng thời với hệ điều hành hiện có Điều này cho phép người dùng chạy nhiều hệ điều hành trên một máy duy nhất, mang lại sự linh hoạt và tiện lợi trong việc quản lý và sử dụng các hệ thống khác nhau.
3.1.4 Lợi ích của ảo hóa Ảo hóa mang lại một số lợi ích cho bất kỳ tổ chức nào:
Việc sử dụng tài nguyên hiệu quả là một trong những lợi ích chính của ảo hóa, giúp tối ưu hóa tài nguyên phần cứng tại trung tâm dữ liệu Thay vì chạy một máy chủ trên một hệ thống máy tính, bạn có thể tạo ra nhiều máy chủ ảo trên cùng một hệ thống, giúp giảm thiểu số lượng máy chủ vật lý cần thiết Điều này không chỉ giúp giải phóng không gian tại trung tâm dữ liệu mà còn tiết kiệm chi phí điện, máy phát điện và thiết bị làm mát, đồng thời cho phép bạn trả máy chủ về các nhóm theo yêu cầu.
Quản lý CNTT tự động cho phép chuyển đổi máy chủ vật lý sang dạng ảo, giúp quản trị viên dễ dàng quản lý chúng thông qua các công cụ phần mềm Các chương trình triển khai và cấu hình được tạo ra để xác định các mẫu máy ảo, cho phép sao chép cơ sở hạ tầng một cách lặp lại và nhất quán, đồng thời giảm thiểu cấu hình thủ công dễ xảy ra lỗi.
Máy chủ Dell PowerEdge R520
Máy chủ Dell PowerEdge là nền tảng thông minh và linh hoạt của giải pháp Công nghệ thông tin (CNTT), đáp ứng nhu cầu của doanh nghiệp ở mọi quy mô Với khả năng đảm bảo độ tin cậy, hiệu suất vượt bật và hiệu năng hàng đầu, Server Dell được xem như lựa chọn tối ưu nhất cho các tổ chức muốn tối ưu hóa hoạt động CNTT của mình.
Máy chủ Dell thế hệ thứ 12 (12G) là dòng máy chủ dễ tiếp cận, cung cấp năng lực xử lý nâng cao và chi phí hợp lý hơn Ngoài ra, Dell 12G còn sở hữu nhiều cải tiến đáng kể, bao gồm việc nâng cấp bộ vi xử lý, hỗ trợ bộ nhớ RAM và cung cấp các chuẩn ổ cứng đa dạng hiện có trên thị trường.
Giới thiệu Máy Chủ Dell Poweredge R520
Máy chủ Dell PowerEdge R520 là giải pháp lý tưởng cho các doanh nghiệp vừa và nhỏ, cung cấp sự cân bằng hoàn hảo giữa sức mạnh xử lý, khả năng lưu trữ và tính mở rộng Sản phẩm này được trang bị 2 bộ vi xử lý có độ tin cậy cao, đảm bảo hiệu suất ổn định và khả năng mở rộng linh hoạt Với việc ra mắt vào năm 2012, máy chủ Dell PowerEdge R520 đã trở thành lựa chọn hàng đầu cho các ứng dụng phổ biến trong doanh nghiệp, đáp ứng nhu cầu xử lý dữ liệu và lưu trữ một cách hiệu quả.
Máy chủ Dell thế hệ 12 mang đến hiệu suất tăng tối đa lên đến 40%, đặc biệt là dòng R520 với bộ xử lý Xeon E5, DDR4 và PCIe 3.0 cung cấp nhiều lõi hơn Điều này cho phép máy chủ đạt được hiệu năng cao hơn đáng kể đồng thời giảm mức tiêu thụ năng lượng xuống tới 30%, mang lại lợi ích kép cho người dùng.
Chính vì vậy, Dell R520 giúp doanh nghiệp tiết kiệm một khoản đáng kể khi được sử dụng cho trung tâm dữ liệu.
3.2.2 Bộ nhớ của máy chủ Dell R520
Máy chủ cung cấp tối đa 12 slot Ram DDR4 với mỗi CPU kiểm soát 6 khe Tương đương với 1 CPU hỗ trợ 192GB
Cùng với đó, R520 có thể hỗ trợ lên tới 384GB với 12 khe DIMM được cung cấp các mô-đun RDIMM 32GB ECC
Đồng thời, R520 sử dụng bộ xử lý Xeon E5-2600 v3 với mô-đun bộ nhớ tương ứng lên đến 2133MT/s
Với bộ xử lý Xeon E5-2600 v4 cho tốc độ truyền tải dữ liệu lên tới 2400MT/s
3.2.3 Khả năng mở rộng cao với Dell R520
Máy chủ Dell R520 được trang bị 5 khe cắm PCIe có kích thước nhỏ, tiêu chuẩn, bao gồm 3 khe PCIe 3.0 và 2 khe PCIe 2.0, giúp doanh nghiệp mở rộng hiệu suất một cách hiệu quả khi cần thiết.
Các khe cắm PCIe Gen 3.0 là một trong những cải tiến đáng kể, mang lại tốc độ truyền tải dữ liệu nhanh hơn gấp đôi so với thế hệ trước PCIe Gen 2.0, giúp nâng cao hiệu suất và trải nghiệm người dùng.
3.2.4 Trình điều khiển cho PowerEdge R520
3.2.4.1 Hệ điều hành hỗ trợ
Bảng 12 Danh sách hệ điều hành máy chủ R520 hỗ trợ
PowerEdge R520 có nhiều khả năng kết nối tới ổ đĩa, bao gồm:
8 khe cắm ổ đĩa 3.5" SAS, SATA hoặc Nearline SAS (bên trong) cho phép máy chủ lưu trữ lượng lớn dữ liệu trên các ổ đĩa 3.5".
Máy chủ của chúng tôi hỗ trợ các tùy chọn tủ mở rộng cắm nóng, cho phép người dùng mở rộng dễ dàng dung lượng lưu trữ của hệ thống thông qua các ổ đĩa SAS, SATA hoặc SSD tùy chọn, giúp tăng cường khả năng lưu trữ và đáp ứng nhu cầu ngày càng tăng của doanh nghiệp.
Bộ điều khiển RAID H310, H710, H710P hoặc PERC H810 (có thể được tích hợp sẵn hoặc lắp đặt riêng) đóng vai trò quan trọng trong việc giúp máy chủ tạo ra các mảng RAID, từ đó tăng cường tính sẵn sàng và hiệu suất của hệ thống lưu trữ, đảm bảo dữ liệu được bảo vệ và truy cập một cách nhanh chóng và ổn định.
Tổng thể, PowerEdge R520 sở hữu khả năng kết nối đa dạng với các loại ổ đĩa, giúp người dùng dễ dàng lựa chọn giải pháp lưu trữ phù hợp với nhu cầu cụ thể của mình, mang lại sự linh hoạt và tiện lợi trong việc quản lý dữ liệu.
Tủ đĩa NAS - Network Attached Storage
Tủ đĩa (NAS - Network-Attached Storage) là giải pháp lưu trữ dữ liệu độc lập, kết nối với mạng để phục vụ nhu cầu lưu trữ của nhiều người dùng Với khả năng tích hợp các ổ đĩa cứng, tủ đĩa cung cấp dung lượng lưu trữ lớn, giúp bảo quản an toàn các dữ liệu quan trọng như hình ảnh, âm nhạc, video và tài liệu.
Các chức năng của tủ đĩa bao gồm:
Tủ đĩa được thiết kế để lưu trữ dữ liệu của nhiều người dùng trên mạng, cung cấp khả năng lưu trữ lớn và dễ dàng truy cập dữ liệu từ bất kỳ nơi nào trên mạng, giúp tăng cường hiệu suất và tiện lợi cho người dùng.
Tủ đĩa cho phép người dùng truy cập và chia sẻ dữ liệu với nhau thông qua mạng, giúp tăng tính linh hoạt và hiệu quả trong làm việc Việc chia sẻ dữ liệu này mang lại nhiều lợi ích, bao gồm cả việc tăng cường sự hợp tác và trao đổi thông tin giữa các thành viên trong nhóm Nhờ đó, tủ đĩa trở thành một công cụ quan trọng trong việc hỗ trợ công việc nhóm và nâng cao hiệu suất làm việc.
Tủ đĩa thường được trang bị các tính năng sao lưu dữ liệu để bảo vệ dữ liệu quan trọng khỏi mất mát do sự cố hệ thống, giúp đảm bảo an toàn và bảo mật cho dữ liệu của người dùng.
Quản lý dữ liệu là một trong những tính năng quan trọng của tủ đĩa, giúp người dùng có thể quản lý, sắp xếp và tìm kiếm dữ liệu một cách dễ dàng và hiệu quả Tủ đĩa cung cấp các công cụ quản lý dữ liệu mạnh mẽ, cho phép người dùng tổ chức và truy cập dữ liệu một cách nhanh chóng và chính xác.
Một số tủ đĩa hiện đại cho phép người dùng truy cập dữ liệu từ xa thông qua internet, giúp việc truy cập và chia sẻ dữ liệu trở nên dễ dàng và tiện lợi hơn Tính năng này cho phép người dùng có thể truy cập dữ liệu của mình từ bất kỳ đâu, miễn là có kết nối internet, giúp tăng cường hiệu suất làm việc và cộng tác.
Tính bảo mật: Tủ đĩa cung cấp các tính năng bảo mật như quản lý người dùng và mật khẩu để đảm bảo an toàn cho dữ liệu.
Tủ đĩa là giải pháp lý tưởng cho việc quản lý và lưu trữ dữ liệu trên mạng, giúp người dùng dễ dàng truy cập, chia sẻ và bảo vệ dữ liệu quan trọng khỏi mất mát Với tủ đĩa, việc quản lý dữ liệu trở nên đơn giản và hiệu quả hơn, cho phép người dùng tập trung vào công việc quan trọng khác.
Kết nối Dell PowerEdge R520 với tủ đĩa NAS
Để kết nối một máy chủ với một tủ đĩa (hay còn gọi là NAS), bạn có thể thực hiện các bước sau:
Kết nối máy chủ và tủ đĩa với cùng một mạng LAN, ví dụ như kết nối với cùng một router hoặc switch.
Đảm bảo rằng máy chủ và tủ đĩa đang chạy cùng một giao thức mạng, ví dụ như TCP/IP.
Thực hiện cài đặt và cấu hình phần mềm NAS trên tủ đĩa, nó sẽ tạo ra một địa chỉ IP cho tủ đĩa trên mạng LAN.
Cấu hình quyền truy cập cho người dùng và máy chủ, bao gồm tên người dùng, mật khẩu và quyền truy cập vào tủ đĩa.
Trên máy chủ, truy cập vào tủ đĩa bằng địa chỉ IP mà bạn đã cấu hình trên tủ đĩa.
Khi truy cập vào tủ đĩa, bạn có thể dễ dàng xem và quản lý tất cả các dữ liệu được lưu trữ, bao gồm tài liệu, ảnh, video và các tệp âm thanh quan trọng.
Lưu ý rằng các bước cụ thể có thể khác nhau tùy thuộc vào thiết bị NAS cụ thể mà bạn đang sử dụng, vì vậy bạn nên tham khảo hướng dẫn của nhà sản xuất để có thông tin chi tiết và chính xác nhất.
Phần mềm Arduino IDE
Linh kiện Arduino là một trong những linh kiện điện tử được ưa chuộng sử dụng hiện nay Để có thể tận dụng tối đa khả năng của Arduino, người dùng cần một môi trường phần mềm chuyên dụng để phát triển và lập trình, đó chính là Arduino IDE - một công cụ không thể thiếu cho bất kỳ dự án Arduino nào.
Arduino IDE là một phần mềm mã nguồn mở chính thức của Arduino, giúp người dùng viết và biên dịch mã một cách dễ dàng cho các module Arduino Phần mềm này bao gồm cả phần cứng và phần mềm, với phần cứng là khoảng 300,000 board mạch được thiết kế sẵn tích hợp các cảm biến và linh kiện, và phần mềm cho phép người dùng sử dụng các cảm biến và linh kiện đó một cách linh hoạt phù hợp với mục đích sử dụng Nhờ đó, ngay cả những người không có kiến thức kỹ thuật cũng có thể sử dụng Arduino IDE để biên dịch mã một cách đơn giản và hiệu quả.
3.5.2 Lý do chọn phần mềm Arduino IDE
Phần mềm lập trình mã nguồn mở miễn phí
IDE trong Arduino IDE là phần mềm mã nguồn mở, cho phép người dùng tải về và sử dụng miễn phí mà không phải lo lắng về bản quyền Đặc biệt, người dùng có quyền tự do sửa đổi, cải tiến, phát triển và nâng cấp phần mềm này theo các nguyên tắc chung được nhà phát hành quy định, mà không cần xin phép Điều này tạo ra sự khác biệt lớn so với các phần mềm nguồn đóng, nơi người dùng bị hạn chế trong việc sửa đổi và phát triển.
Mặc dù là phần mềm mã nguồn mở, Arduino IDE vẫn đảm bảo khả năng bảo mật thông tin tuyệt vời Khi phát hiện lỗi, nhà phát hành sẽ nhanh chóng vá lỗi và cập nhật, giúp bảo vệ thông tin của người dùng khỏi bị mất hoặc rò rỉ ra bên ngoài.
Sử dụng ngôn ngữ lập trình C/C++
Arduino IDE sử dụng ngôn ngữ lập trình C/C++, một trong những ngôn ngữ lập trình phổ biến nhất trong giới lập trình Nhờ khả năng nhận dạng mọi đoạn code C/C++, Arduino IDE mang lại sự tiện lợi cho các lập trình viên trong việc thiết kế chương trình lập trình cho các bo mạch Arduino.
Hỗ trợ lập trình tốt cho bo mạch Arduino
Arduino cung cấp một module quản lý bo mạch cho phép người dùng lựa chọn và thay đổi bo mạch một cách dễ dàng thông qua Menu, đồng thời tự động cập nhật dữ liệu để đảm bảo sự thống nhất Ngoài ra, Arduino IDE còn giúp người dùng phát hiện và sửa lỗi trong code, tránh tình trạng bo mạch hoạt động với code lỗi quá lâu dẫn đến hư hỏng hoặc giảm tốc độ xử lý Hơn nữa, Arduino còn cung cấp một thư viện hỗ trợ phong phú để người dùng có thể tận dụng tối đa khả năng của bo mạch.
Với hơn 700 thư viện được tích hợp, Arduino IDE cung cấp một nguồn tài nguyên dồi dào cho các dự án của bạn, tất cả đều được viết và chia sẻ miễn phí bởi Arduino Software và cộng đồng Arduino Điều này cho phép bạn tận dụng những tài nguyên này mà không phải bỏ ra bất kỳ chi phí nào Đồng thời, giao diện đơn giản và dễ sử dụng của Arduino IDE giúp bạn dễ dàng tiếp cận và phát triển dự án của mình một cách hiệu quả.
Arduino IDE sở hữu giao diện đơn giản, dễ sử dụng, giúp người dùng thuận tiện hơn trong thao tác Giao diện này cung cấp một số tính năng thường được sử dụng, giúp người dùng dễ dàng tạo và chỉnh sửa mã code.
Nút kiểm tra chương trình (Verify): giúp dò lỗi phần code định truyền xuống bo mạch Arduino.
Nút tải đoạn code vào bo mạch Arduino (Upload): giúp nhập đoạn code vào bo mạch Arduino.
Vùng lập trình: người dùng sẽ viết chương trình tại khu vực này.
Thanh Menu: gồm những thẻ chức năng nằm trên cùng như File, Edit, Sketch, Tools, Help.
Hỗ trợ đa nền tảng như Windows, MacOS, Linus
Arduino IDE hoạt động mượt mà trên ba hệ điều hành phổ biến nhất là Windows, MacOS và Linux, cho phép người dùng truy cập phần mềm ở bất cứ đâu và bất cứ lúc nào Ngoài ra, tính năng truy cập đám mây cũng được tích hợp, cho phép các nhà lập trình lựa chọn tạo và lưu dự án trên đám mây hoặc xây dựng chương trình trên máy tính và dễ dàng upload lên bo mạch Arduino.
Khi người dùng viết mã và biên dịch trong môi trường phát triển tích hợp (IDE), hệ thống sẽ tự động tạo ra file Hex tương ứng File Hex là một dạng file thập phân Hexa mà Arduino có thể hiểu và gửi đến bo mạch thông qua cáp USB Mỗi bo mạch Arduino đều được tích hợp một bộ vi điều khiển, đóng vai trò nhận file Hex và chạy chương trình dựa trên mã được viết trước đó.
Lập trình các ứng dụng của ESP8266 NodeMCU - ESP8266-12E
3.6.1 Giới thiệu về ESP8266 NodeMCU
ESP8266 là một vi mạch đa năng trong gói QFN, tích hợp khả năng của cả bộ TCP/IP và bộ vi điều khiển, mang đến giải pháp Wifi tích hợp cao đáp ứng nhu cầu của các ứng dụng IoT, bao gồm chi phí thấp, sử dụng năng lượng hiệu quả, hiệu suất đáng tin cậy và thiết kế nhỏ gọn, lý tưởng cho các dự án yêu cầu kết nối không dây mạnh mẽ và hiệu suất cao.
ESP8266 có nhiều phiên bản khác nhau, mỗi phiên bản đều có những đặc điểm riêng biệt Tuy nhiên, NodeMCU ESP-12E hiện đang là phiên bản phổ biến nhất trong số đó, nhờ vào khả năng kết nối dễ dàng, lập trình đơn giản và sở hữu nhiều chân GPIO đa năng.
Hình 3 Các phiên bản ESP8266
3.6.1.3 Giới thiệu về ESP8266 NodeMCU (ESP8266-12E)
ESP8266 NodeMCU là một môi trường phát triển phần mềm và phần cứng mã nguồn mở mạnh mẽ, được xây dựng trên hệ thống trên chip (SoC) ESP8266 do Espressif Systems thiết kế và sản xuất Với sự tích hợp của các thành phần quan trọng như CPU, RAM, kết nối Internet thông qua Wifi, cùng hệ điều hành và SDK hiện đại, ESP8266 NodeMCU cung cấp một giải pháp toàn diện cho việc phát triển các dự án IoT và các ứng dụng đòi hỏi sự kết nối mạng.
Bộ mạch thu phát wifi ESP8266 NodeMCU là một lựa chọn phổ biến cho các thiết bị IoT và ứng dụng cần kết nối mạng wifi nhờ vào kích thước nhỏ gọn và giá cả phải chăng Với thiết kế compact, bộ mạch này cung cấp khả năng kết nối wifi mạnh mẽ và linh hoạt, giúp cho việc phát triển các dự án IoT trở nên dễ dàng hơn Sơ đồ chân của bộ mạch ESP8266 NodeMCU là một phần quan trọng giúp người dùng hiểu rõ cách kết nối và sử dụng bộ mạch này hiệu quả.
Các module ESP8266 được sử dụng rộng rãi nhất là ESP8266 NodeMCU Hình bên dưới cho thấy sơ đồ chân của Kit NodeMCU ESP8266-12E.
Hình 4 Sơ đồ chân của Kit NodeMCU ESP8266-12E b) Thông số kỹ thuật
Wifi: 2.4 GHz hỗ trợ chuẩn 802.11 b/g/n
Điện áp hoạt động: 5VDC thông qua cổng micro USB
Số chân I/O: 16 (Các chân đều có Interrupt/PWM/I2C/One-wire, trừ chân D0)
Số chân Analog Input: 1 ( điện áp vào tối đa 3.3V)
Giao tiếp: Cable Micro USB
Hỗ trợ bảo mật: WPA/WPA2
Tích hợp giao thức TCP/IP
Lập trình trên các ngôn ngữ: CC++, MicroPython, Lua
Tạo mẫu các thiết bị IoT
Các ứng dụng hoạt động bằng pin năng lượng thấp
Các dự án yêu cầu nhiều giao diện I/O với các chức năng Wifi và Bluetooth
3.6.2 Lập trình ESP8266 NodeMCU với Arduino IDE
3.6.2.1 Cài đặt board ESP8266 trên Arduino IDE
Sau khi cài đặt Arduino IDE, bạn cần tiếp tục thực hiện các bước quan trọng tiếp theo để cài đặt thư viện và chức năng nạp code cho Arduino IDE, đảm bảo môi trường lập trình được thiết lập đầy đủ và sẵn sàng cho việc phát triển dự án.
1 Mở cửa số Preferences từ Arduino IDE Vào File -> Preferences
2 Nhập http://arduino.esp8266.com/stable/package_esp8266com_index.json vào ô
“Additional Board Manager URLs” như được hiển thị trong hình bên dưới Sau đó,nhấp vào nút “OK”:
Lưu ý: Nếu bạn đã có URL của board ESP32, bạn có thể thêm các URL bằng dấu phẩy như sau:
https://dl.espressif.com/dl/package_esp32_index.json,
http://arduino.esp8266.com/stable/package_esp8266com_index.json
3 Tiếp theo vào Tools -> Board -> Boards Manager
Sau khi chương trình tìm kiếm hoàn thành, hãy kéo xuống dưới và nhấp vào ESP8266 by ESP8266 Community, sau đó chọn Install để bắt đầu quá trình cài đặt Chỉ cần chờ đợi vài giây, phần mềm sẽ tự động tải xuống và cài đặt thành công.
3.6.2.2 Kiểm tra cài đặt Để kiểm tra cài đặt tiện ích bổ sung ESP8266, hãy xem liệu chúng ta có thể làm cho đèn led nhấp nháy với module ESP8266-12E bằng ngôn ngữ lập trình Arduino hay không? a Chuẩn bị phần cứng
Dây cắm breadboard b Kết nối phần cứng c Nạp chương trình
Nếu bạn đang sử dụng board ESP8266 NodeMCU, việc nạp chương trình sẽ trở nên đơn giản hơn vì nó đã tích hợp sẵn bộ lập trình Khi cắm board vào máy tính, bạn chỉ cần chọn đúng board để lập trình cho ESP8266, quá trình này sẽ được thực hiện một cách nhanh chóng và dễ dàng.
Vào Tool -> Board -> NodeMCU (ESP-12E).
Bạn cũng cần chọn cổng COM tương ứng với module được kết nối.
Sau đó bạn copy đoạn chương trình sau vào Arduino IDE. int pin = 2; void setup() {
// Khởi tạo chân GPIO 2 là ngõ ra pinMode(pin, OUTPUT);
The loop function runs repeatedly, enabling the LED to blink indefinitely It sets the digital pin to HIGH, turning the LED on, and then implements a 1-second delay using the delay function Subsequently, the digital pin is set to LOW, switching the LED off, followed by another 1-second delay, creating a continuous blinking effect.
Bạn nhấp vào nút “Upload” trong
Arduino IDE và đợi vài giây cho đến khi bạn thấy thông báo “Done uploading.” ở góc dưới cùng bên trái.
Chọn chế độ nạp Arduino as ISP.
Esp8266 NodeMCU có thể sử dụng nhiều loại cảm biến khác nhau đi kèm với các chân vào/ra (GPIO) của nó, bao gồm:
Cảm biến nhiệt độ và độ ẩm: ví dụ DHT11 hoặc DHT22
Cảm biến ánh sáng: ví dụ BH1750
Cảm biến tiệm cận: ví dụ HC-SR04
Cảm biến máy bay giấy: ví dụ MPU-6050
Cảm biến Gas: ví dụ MQ-2 hoặc MQ-135
Cảm biến tốc độ gió: ví dụ anemometer
Cảm biến mưa: ví dụ FC-37
Cảm biến chuyển động: PIR
Tuy nhiên, việc sử dụng cảm biến cụ thể phụ thuộc vào nhu cầu và yêu cầu của ứng dụng cụ thể.
3.6.4 Các cơ cấu chấp hành
3.6.5 Timer và lập trình ngắt Timer với ESP8266 NodeMCU
Timer được sử dụng khi muốn một thiết bị hoạt động trong một thời gian xác định.
Hàm delay() chấp nhận một số int duy nhất làm đối số, đại diện cho thời gian tính bằng ms mà chương trình phải đợi cho đến khi chuyển sang dòng mã tiếp theo Ví dụ, khi gọi delay(1000), chương trình sẽ dừng trên dòng đó trong 1 giây Tuy nhiên, delay() là một chức năng chặn, ngăn chương trình thực hiện bất kỳ tác vụ nào khác cho đến khi tác vụ cụ thể đó được hoàn thành Do đó, nếu cần nhiều tác vụ xảy ra cùng một lúc, bạn không thể sử dụng Delay(), và đối với hầu hết các dự án, nên tránh sử dụng độ trễ và sử dụng bộ hẹn giờ thay thế.
Hàm milis() cung cấp khả năng trả về số mili giây đã trôi qua kể từ khi chương trình bắt đầu lần đầu tiên, cho phép tạo ra các dự án nhấp nháy thú vị Một ví dụ điển hình là sử dụng hàm milis() để bật đèn LED trong 1000ms, sau đó tắt đi, tạo ra hiệu ứng nhấp nháy ấn tượng Để thực hiện điều này, bạn cần khai báo các biến như ledPin, ledState, previousMillis và interval, sau đó thiết lập chế độ OUTPUT cho ledPin trong hàm setup().
} void loop() { unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; if (ledState == LOW) ledState = HIGH; else ledState = LOW; digitalWrite(ledPin, ledState); }
Ngắt là một tính năng rất hữu ích trong các chương trình vi điều khiển, giúp tự động hóa các quá trình và giải quyết các vấn đề liên quan đến thời gian thực.
Khi sử dụng ngắt, bạn không cần phải liên tục kiểm tra giá trị pin hiện tại, mà thay vào đó, một sự kiện sẽ được kích hoạt khi có sự thay đổi được phát hiện, và một hàm được gọi, được biết đến với chức năng là thói quen dịch vụ ngắt (ISR).
Khi ngắt xảy ra, bộ xử lý sẽ tạm dừng thực thi chương trình chính để chuyển sang thực thi một tác vụ khác, sau đó quay lại chương trình chính một cách liền mạch Quá trình này cho phép bộ xử lý xử lý nhiều tác vụ đồng thời và đảm bảo hiệu suất hệ thống được tối ưu hóa.
Hình 5 Chương trình thực thi ngắt
Để đặt ngắt trong Arduino IDE, bạn có thể sử dụng hàm attachInterrupt(), chấp nhận ba đối số chính: chân ngắt GPIO, tên của hàm sẽ được thực thi và chế độ Cú pháp của hàm này được thể hiện qua dòng lệnh attachInterrupt(digitalPinToInterrupt(GPIO), ISR, mode), trong đó mỗi thành phần đóng vai trò quan trọng trong việc xác định và xử lý ngắt một cách chính xác.