Đồ án: Hệ thống quản lý thi đua khen thưởng bằng Golang, Angular (ĐH Quảng Nam)

Tài liệu khóa luận tốt nghiệp về xây dựng hệ thống quản lý thi đua khen thưởng bằng Golang và Angular 6. Phân tích, thiết kế và triển khai chi tiết.

Trường đại học

Trường Đại học Quảng Nam

Người đăng

Ẩn danh

Thể loại

Khóa luận tốt nghiệp đại học
84
0
0

Phí lưu trữ

30 Point

Tóm tắt

I. Giới thiệu về Golang và Angular trong phát triển ứng dụng quản lý

GolangAngular là hai công nghệ hiện đại được sử dụng rộng rãi để xây dựng hệ thống quản lý hiệu quả. Golang, được phát triển bởi Google, là ngôn ngữ lập trình backend mạnh mẽ với khả năng xử lý đồng thời tuyệt vời. Angular, framework frontend của Google, cung cấp cấu trúc toàn diện cho việc phát triển giao diện người dùng động. Sự kết hợp giữa Golang backendAngular frontend tạo nên một kiến trúc ứng dụng hoàn chỉnh, cho phép xây dựng hệ thống quản lý thi đua với hiệu suất cao, bảo mật tốt và trải nghiệm người dùng mượt mà. Đây là giải pháp tối ưu cho các tổ chức muốn hiện đại hóa quy trình quản lý nhân sự và thi đua khen thưởng.

1.1. Tại sao chọn Golang cho backend

Golang nổi bật nhờ tốc độ xử lý nhanh, tiêu thụ tài nguyên ít và hỗ trợ concurrent programming tuyệt vời. Ngôn ngữ này dễ học, có cú pháp đơn giản nhưng mạnh mẽ. Golang phù hợp xây dựng API RESTful cho hệ thống quản lý, đặc biệt khi cần xử lý nhiều yêu cầu đồng thời từ người dùng khác nhau.

1.2. Ưu điểm của Angular cho frontend

Angular là framework hoàn chỉnh cung cấp các công cụ mạnh mẽ cho phát triển giao diện quản lý thi đua. Với data binding hai chiều, routing linh hoạt và component-based architecture, Angular cho phép tạo ứng dụng đơn trang (SPA) hiệu quả, giúp cải thiện trải nghiệm người dùng khi làm việc với hệ thống quản lý.

II. Kiến trúc hệ thống quản lý thi đua khen thưởng

Kiến trúc hệ thống quản lý thi đua được thiết kế theo mô hình client-server, nơi Golang xử lý logic backend phức tạp và Angular quản lý giao diện frontend thân thiện. Hệ thống bao gồm các thành phần chính như module xác thực người dùng, quản lý cán bộ, thiết lập hội đồng thi đuaquản lý danh hiệu khen thưởng. Cơ sở dữ liệu PostgreSQL lưu trữ toàn bộ dữ liệu, đảm bảo tính toàn vẹn và bảo mật. API RESTful được xây dựng bằng Golang để giao tiếp giữa frontend Angularbackend. Hệ thống này cho phép quản lý trị những khía cạnh của quá trình thi đua, từ đăng ký tham gia, tổ chức bầu chọn đến công bố kết quả.

2.1. Thành phần backend với Golang

Backend Golang cung cấp các API để xử lý quản lý cán bộ, hội đồng thi đua, bầu chọndanh hiệu khen thưởng. Sử dụng goroutine, Golang xử lý hàng ngàn yêu cầu đồng thời. Cấu trúc package rõ ràng, middleware bảo mật JWT, kết nối PostgreSQL qua ORM, giúp hệ thống ổn định, nhanh chóng.

2.2. Thành phần frontend với Angular

Frontend Angular gồm các component quản lý, dashboard, form nhập liệu. Data binding tự động cập nhật giao diện khi dữ liệu thay đổi. Routing cho phép điều hướng mượt mà giữa các trang. Http Service kết nối API Golang, giúp người dùng tương tác dễ dàng với hệ thống quản lý thi đua.

III. Các tính năng chính của hệ thống quản lý

Hệ thống quản lý thi đua được xây dựng bằng Golang và Angular bao gồm nhiều tính năng thiết yếu. Quản lý cán bộ cho phép cập nhật thông tin nhân sự toàn bộ tổ chức. Thành lập hội đồng thi đua giúp tạo các hội đồng với căn cứ pháp lý rõ ràng. Bầu chọn danh hiệu cho phép các thành viên hội đồng bình chọn trên giao diện Angular dễ sử dụng. Quản lý danh hiệu khen thưởng theo dõi các thành tích, danh hiệu được trao. In quyết định tự động sinh tài liệu từ dữ liệu hệ thống. Thông báo người dùng gửi cảnh báo khi có sự kiện quan trọng. Toàn bộ hoạt động được lưu lại để kiểm toán, báo cáophân tích dữ liệu.

3.1. Quản lý cán bộ và hội đồng

Quản lý cán bộ cho phép thêm, chỉnh sửa, xóa thông tin nhân viên. Thành lập hội đồng tạo các hội đồng bầu chọn với thành viên cụ thể. Giao diện Angular hiển thị danh sách hội đồng, cho phép quản trị viên phân công và quản lý từng hội đồng dễ dàng.

3.2. Bầu chọn và công bố kết quả

Hệ thống bầu chọn cho phép thành viên hội đồng tham gia bình chọn trực tuyến. Giao diện Angular cung cấp hộp kiểm, đánh giá trực quan. Backend Golang xử lý kết quả, tính toán điểm, công bố danh sách người trúng thưởng. Thông báo tự động gửi đến liên quan.

IV. Hướng phát triển và triển khai hệ thống

Để triển khai thành công hệ thống quản lý thi đua bằng Golang và Angular, cần thực hiện các bước chuẩn bị kỹ lưỡng. Đầu tiên, cài đặt GolangAngular CLI trên máy phát triển. Tiếp theo, xây dựng API backend với Golang, kiểm thử kỹ lưỡng các endpoint. Sau đó, phát triển giao diện Angular dựa trên API đã xây dựng. Chạy thử nghiệm toàn hệ thống trên máy tại chỗ. Cuối cùng, triển khai lên máy chủ sản xuất, cấu hình database PostgreSQL, thiết lập bảo mật SSL/TLS. Quá trình này đảm bảo hệ thống quản lý vận hành ổn định, an toàn, phục vụ hiệu quả cho tổ chức.

4.1. Chuẩn bị môi trường phát triển

Cài đặt Golang SDK, Node.js, Angular CLI trên máy. Thiết lập PostgreSQL local để phát triển. Clone mã nguồn GolangAngular từ repository. Cấu hình biến môi trường, database connection string. Chạy Golang serverAngular server trên cổng khác nhau để phát triển song song.

4.2. Triển khai hệ thống lên máy chủ sản xuất

Build Golang thành executable file, triển khai lên server Linux. Build Angular thành static files, lưu trên web server (Nginx/Apache). Cấu hình database PostgreSQL trên server riêng. Thiết lập SSL certificate cho HTTPS. Cài đặt monitoring, logging để theo dõi hiệu suất hệ thống quản lý trong hoạt động.

18/12/2025

Trích đoạn nội dung tài liệu

CHƯƠNG 1: TỔNG QUAN VỀ GOLANG VÀ ANGULAR 1. Tổng quan về GoLang 1. Giới thiệu GoLang Go là một ngôn ngữ lập trình được thiết kế dựa trên tư duy lập trình hệ thống. Go được phát triển bởi Robert Griesemer, Rob Pike và Ken Thompson tại Google vào năm 2007.

Điểm mạnh của Go là bộ thu gom rác và hỗ trợ lập trình đồng thời (tương tự như đa luồng – multithreading). Go là một ngôn ngữ lập trình đồng bộ, được biên dịch có cú pháp khá cơ bản như C/C++, Java, Pascal… Go được giới thiệu vào năm 2009 và được sử dụng hầu hết trong các sản phẩm của Google. Người ta thường sử dụng Go cho Backend Application hoặc hệ thống API nâng cao. Trong năm 2019 này, Go sẽ phát triển Go Module giúp cho việc triển khai dự án Go dễ dàng hơn, giảm sự phụ thuộc vào GoPath như trước đây.

Trang web chính thức của ngôn ngữ GoLang là http://golang. Ngôn ngữ GoLang có một hình thái và ngữ nghĩa lập trình riêng giúp nó đảm bảo hiệu suất làm việc mà vẫn mang lại những điều thú vị khi ta lập trình với nó. GoLang cũng cung cấp một bộ thư viện chuẩn khá toàn diện, nó cung cấp tất cả các package cốt lõi cần để xây dựng chương trình. Một số đặc điểm của GoLang Các đặc điểm nổi bật của GoLang có thể liệt kê ra gồm có: - Go là ngôn ngữ lập trình biên soạn (compiled language).

Phần mềm viết bởi Go cần được biên soạn sử dụng Go compile trước khi có thể chạy được. - Go có cú pháp tương tự như C. - Go là ngôn ngữ lập trình kiểu tĩnh (hay static type), các biến hoặc dữ liệu trong GoLang sẽ không thay đổi trong suốt chương trình. - GoLang hỗ trợ xử lí đa luồng multi-threadiing thông qua các khái niệm -4- GoRoutine và Channel.

- GoLang hỗ trợ tính năng quản lí bộ nhớ mạnh mẽ mà C không có. - GoLang sở hữu một bộ thư viện phong phú mà lập trình viên có thể tận dụng. Ngôn ngữ lập trình GoLang đã được ra mắt cộng đồng vào tháng 11/2019 và được sử dụng trong một số hệ thống của gã khổng lồ công nghệ Google. Ngoài ra GoLang cũng là ngôn ngữ được sử dụng để viết phần mềm nổi tiếng Docker.1: Các đặc điểm của GoLang 1.

Các tính năng cốt lõi của GoLang Các tính năng của GoLang có thể liệt kê ra như sau: -5- - Cross platform: Ngôn ngữ Go cũng biên dịch như Java, nhưng không như Java phải cần Java Virtual Machine để thực thi vì Java biên dịch ra Byte code. Go biên dịch ra mã máy (Machine code) nên có thể chạy ngay với hệ điều hành nó biên dịch mà không cần cài đặt gì thêm. Nghĩa là từ máy tính của mình có thể biên dịch ra các chương trình chạy được trên Mac, Windows, Linux sau khi biên dịch, chỉ cần 1 file duy nhất, copy đến hệ điều hành đích là chạy, rất đơn giản! Đây là tính năng ấn tượng nhất, bao gồm cả việc build rất nhanh. - Sử dụng nhiều Core: Ở những năm 90, một trong những thay đổi lớn nhất của phần cứng máy tính đó chính là việc bổ sung thêm các core.

Quad-cores và Octa- cores CPUs giúp nâng cao đáng kể hiệu năng xử lí. Tuy nhiên, các ngôn ngữ được tạo ra vào trước thời điểm đó chỉ chạy trên các máy tính đơn nhân, và chúng được xây dựng không phải chủ đích để chạy trên nhiều nhân của CPU. Nhưng Go thì khác, việc sinh sau đẻ muộn đã tạo ra lợi thế cho nó, phần cứng có thể mở rộng core, khiến cho Go trở thành ngôn ngữ có thể dễ dàng tương thích hơn. - Vấn đề tương tranh (Concurrency và Goroutine): Concurrency là tính năng chủ lực của ngôn ngữ lập trình Go để tận dụng năng lực xử lí của CPU.

Thông thường các ngôn ngữ lập trình khác phải phụ thuộc sự cấp phát tài nguyên của hệ thống điều hành để có thể chạy được concurrency, trong khi đó Go có thể chạy concurrency mà không phụ thuộc hệ điều hành. Khái niệm concurrency gần giống với thread, các tác vụ trong concurrency được gọi là goroutine. Trong Go thì việc giao tiếp giữa các goroutine khá đơn giản với channel (kênh), có thể truyền dữ liệu giữa các goroutine với nhau bằng bất cứ loại dữ liệu nào. Nhờ việc sử dụng bộ vi xử lí đa nhân, mỗi goroutine chỉ sử dụng 2KB bộ nhớ, như vậy chúng ta có thể tạo ra hàng triệu goroutine bất kỳ lúc nào.

Goroutine đem lại những lợi ích: + Sử dụng bộ nhớ một cách linh hoạt cho vùng nhớ stack, sẽ tự tăng vùng nhớ khi cần thiết. + Thời gian khởi động của goroutine nhanh hơn so với Thread. + Giao tiếp giữa các goroutine sử dụng channel cực an toàn. -6- + Goroutine và OS Thread không tồn tại song song nhau.

Mỗi goroutine có thể chạy đồng thời nhiều threads, chúng có thể ghép vào OS Threads. - Dễ dàng bảo trì: Cú pháp của Go cực kì đơn giản, không có những cú pháp quá phức tạp giống như các ngôn ngữ khác. Những người phát triển Go đến từ Google, nới có quy mô code-base lớn và hàng nghìn developers cùng làm việc. Vì vậy source code phải đơn giản để bất kì developers nào cũng có thể hiểu được và mỗi đoạn code đều hạn chế tối thiểu side-effect.

Điều đó làm cho code có thể bảo trì hoặc nâng cấp một cách dễ dàng và đơn giản hơn. - Bỏ qua nhiều đặc tính của lập trình OOP: Không có class mà mọi thứ đều được gói vào trong các package. Go chỉ có struct (cấu trúc). Không hỗ trợ kế thừa, không có constructor (hàm tạo), annotation (chú thích), generics (kiểu dữ liệu không định nghĩa trước) hay exceptions (xử lí ngoại lệ).

Chính vì vậy mà Go trở nên khác biệt so với phần còn lại. Nhìn theo mặt tích cực, nó khiến code trở nên sáng sủa, ngắn gọn và dễ hiểu hơn. Ưu điểm và nhược điểm của GoLang a) Ưu điểm: - Tốc độ thực thi nhanh nhờ biên dịch thẳng ra mã máy. - Linh hoạt: Trình compile biên dịch ra mã nhị phân và chạy được trên các nền tảng hệ điều hành khác nhau.

- Khả năng tương thích: Có thể liên kết với các thư viện bên ngoài hoặc thực hiện các lệnh gọi hệ thống. - Hỗ trợ: Go được cài đặt mặc định trong nhiều bản phát hành phổ biến của Linux cũng như nhận được sự hỗ trợ tương thích trên nhiều IDE (Visual studio code, Atom, Komodo IDE, GoLand). b) Nhược điểm: - Do kích thước nhỏ gọn nên một số tính năng trong lập trình OOP sẽ không có trong Go. - Kích thước chương trình sau khi đóng gói lớn: Code được biên dịch theo kiểu static theo mặc định.

Các này làm đơn giản hoá quá trình xây dựng và triển khai -7- nhưng dẫn đến chỉ một đoạn code đơn giản “Hello world!” lại nặng đến 1.5MB trên windows 64-bit. - Document page không được trau chuốt như những ngôn ngữ khác. - Quản lí lỗi trong GoLang đòi hỏi bạn phải thực hiện kiểm tra lỗi rõ ràng, có thể khiến cho việc xử lí lỗi trở nên khó khăn. Tuy nhiên nếu hiểu được các quản lí lỗi trong GoLang thì nó sẽ trở thành ưu điểm vì bạn sẽ có một ứng dụng về tổng thể là sạch hơn.

Cài đặt GoLang và yêu cầu hệ thống Cài đặt môi trường GoLang khá đơn giản, thông qua các bước như sau: - Bước 1: Cài đặt Go runtime Hình 1.2: Các bộ cài đặt của Go trên các nền tảng Truy cập vào website https://golang.org/dl và chạy file go<version>.msi (32-bit) hoặc go<version>.msi (64- bit), tuỳ vào hệ điều hành bạn đang sử dụng. Bộ cài này rất tiện lợi, nó sẽ tự động config hết mọi thứ cần thiết. - Bước 2: Cài đặt biến môi trường: Click chuột phải vào My computer chọn Properties, chọn tab Advanced và click nút Enviroment Variables. Tạo một biến mới tên là GoRoot với giá trị là C:\Go.

Sau đó chọn biến PATH có sẵn, thêm vào sau dấu chấm phẩy; cuối dòng đường dẫn sau: C:\Go\bin -8- Hình 1.3: Thiết lập biến môi trường cho Go - Bước 3: Chạy thử Vào terminal trên Linux/MacOS hoặc command line trên Windows và gõ lệnh sau: $go version. Nếu Go được cài đặt đầy đủ thì nội dung ouput sẽ giống như thế này: go version go1.4: Kiểm tra thiết lập môi trường Go - Bước 4: Viết chương trình đầu tiên với GoLang Hiện nay có rất nhiều IDE hỗ trợ cho lập trình Go, trong đó có thể kể đến như Visual Studio Code, Atom, LiteIDE, Wide… Một IDE nữa rất mạnh mẽ và được tạo ra nhằm cung cấp môi trường làm việc tốt nhất cho Go đó chính là GoLand – IDE trên nền tảng IntelliJ với tính năng hỗ trợ mã hoá, trình gỡ lỗi và thiết bị đầu cuối tích hợp. Ở đây em chọn GoLand làm IDE để lập trình GoLang. Giao diện startup của GoLand: -9- Hình 1.5: Giao diện Startup phần mềm GoLand Chọn New Project => sau đó chọn kiểu project là Go Module rồi thiết lập project name,các cấu hình khác ta có thể để mặc định, sau đó nhấn chọn Create.6: Tạo dự án GoLang Cấu trúc project của chương trình Go như hình bên.

Trong đó ta để ý đến Extenal Libraries. Đây chính là cơ chế quản lí package trong Go. Mỗi package chính là một project GoLang được viết sẵn cho những mục đính cụ thể và chúng ta có thể gọi ra để sử dụng khi cần. Nó giống như việc Add reference các thư viện dll trong lập trình C#.7: Cấu trúc dự án Go Để cài đặt thêm package, trong terminal của GoLand ta dùng lệnh go get <package-name>.

Hầu hết các package của Go đều nằm trên github. Ví dụ để cài package gorm (Database ORM cho Go), ta gõ như sau: Go get github.com/jinzhu/gorm Quá trình cài đặt diễn ra tự động, sau khi cài xong ta có thể sử dụng được các function có trong package này phục vụ cho mục đích làm việc cụ thể. Ta tiến hành tạo file main.go rồi gõ nội dung vào như sau: package main import ( "fmt" "net/http" ) func main() { fmt.ListenAndServe(":3000",nil) } func Hello(w http.Fprintf(w,"Hello World!") } - 11 - Mở terminal và gõ lệnh go build như sau: go build, sau đó dùng lệnh go run main.go để chạy chương trình: ta được kết quả là dòng chữ Hello GoLang. Mở trình duyệt lên và gõ địa chỉ localhost:3000, ta đã in ra được dòng chữ Hello world trên màn hình.8: Kết quả sau khi chạy thử chương trình 1.

Tổng quan về Angular 1. Lịch sử phát triển và các phiên bản của Angular Angular (hay còn được gọi là Angular 2+) là một nền tảng ứng dụng web sử dụng typescript do Angular Team của Google phát triển nên. Angular là một phiên bản viết lại hoàn chỉnh của AngularJS. Đây là một framework UI mạnh và mềm dẻo cho phép các lập trình viên xây dựng ứng dụng đa nền tảng, đặc biệt trên nền web.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ