TỔNG QUAN Công ty TNHH TMA Solutions Bình Định VÀ NGHỀ
Giới thiệu về công ty TNHH TMA Bình Định
TMA Solutions là công ty phần mềm và dịch vụ CNTT hàng đầu tại Việt Nam, được thành lập vào năm 1997 Với trụ sở chính tại thành phố Hồ Chí Minh và nhiều văn phòng trên toàn quốc cũng như quốc tế, TMA hiện có hơn 2.500 nhân viên, khẳng định vị thế tiên phong trong ngành công nghệ.
TMA Bình Định, một chi nhánh của TMA Solutions, tọa lạc tại thành phố Quy Nhơn, tỉnh Bình Định, là một trung tâm phát triển phần mềm năng động và nhiệt huyết.
TMA Bình Định chuyên phát triển phần mềm và cung cấp dịch vụ công nghệ thông tin chất lượng cao cho khách hàng trong và ngoài nước Đội ngũ kỹ sư của công ty có tay nghề cao và kinh nghiệm phong phú, sở hữu chuyên môn đa dạng trong các lĩnh vực như phát triển ứng dụng di động, phân tích dữ liệu, hệ thống thông tin doanh nghiệp, trí tuệ nhân tạo, và nhiều công nghệ khác.
TMA Bình Định cam kết mang lại giá trị gia tăng cho khách hàng thông qua sự chuyên nghiệp, sáng tạo và chất lượng dịch vụ Công ty đã xây dựng được uy tín vững chắc trong ngành CNTT, nhận được nhiều giải thưởng và chứng chỉ uy tín trong suốt quá trình hoạt động.
TMA Bình Định không chỉ chú trọng vào phát triển phần mềm mà còn cam kết tạo ra các giải pháp công nghệ thông tin sáng tạo, nhằm nâng cao hiệu suất kinh doanh và khả năng cạnh tranh cho khách hàng trên thị trường.
TMA Bình Định đóng vai trò quan trọng trong việc phát triển ngành công nghệ thông tin tại khu vực Bình Định, đồng thời nâng cao chất lượng cuộc sống và tạo ra nhiều cơ hội việc làm cho cộng đồng.
1.1.2 Tầm nhìn, sứ mệnh a Tầm nhìn
Chúng tôi hướng tới việc trở thành công ty công nghệ thông tin hàng đầu trong khu vực, cung cấp giá trị đột phá và tạo ra sự khác biệt cho khách hàng Sứ mệnh của chúng tôi là mang đến các giải pháp công nghệ thông tin sáng tạo và hiệu quả.
TMA Bình Định cam kết cung cấp giải pháp công nghệ thông tin chất lượng cao và sáng tạo, nhằm tối ưu hóa hiệu quả kinh doanh cho khách hàng Công ty luôn lắng nghe và hiểu nhu cầu của khách hàng để tạo ra giá trị gia tăng và lợi thế cạnh tranh Bên cạnh đó, TMA Bình Định chú trọng phát triển nhân viên, hỗ trợ họ trong việc phát triển bản thân và đạt thành công trong sự nghiệp, đồng thời góp phần vào sự phát triển bền vững của cộng đồng thông qua tạo cơ hội việc làm, đào tạo nguồn nhân lực và tham gia các hoạt động xã hội.
Trong suốt những năm qua, TMA Bình Định đã vượt qua nhiều thách thức và khẳng định được năng lực làm việc cũng như cam kết chất lượng phục vụ khách hàng Để đạt được những thành công này, TMA luôn duy trì và phát triển bền vững.
Tổng quan về nghề Back-end Developer
1.2.1 Mô tả công việc về một Back-end Developer
Back-end developers là những chuyên gia phát triển phần mềm tập trung vào việc xây dựng các thành phần và hệ thống phía sau của ứng dụng web hoặc phần mềm Công việc của họ thường bao gồm phát triển, duy trì và tối ưu hóa cơ sở dữ liệu, xử lý logic ứng dụng, cũng như đảm bảo hiệu suất và bảo mật cho hệ thống.
Các lập trình viên back-end đóng vai trò quan trọng trong thiết kế và phát triển hệ thống ứng dụng, bao gồm việc xây dựng cấu trúc dữ liệu, lựa chọn cơ sở dữ liệu phù hợp, quyết định công nghệ sử dụng và phát triển logic xử lý.
Back-end developers are responsible for writing code that manages the application's logic and functionality They create Application Programming Interfaces (APIs) to facilitate communication between the front-end and back-end, handling user requests and returning the appropriate responses.
Các nhà phát triển back-end quản lý cơ sở dữ liệu để lưu trữ và truy xuất thông tin hiệu quả Họ thiết kế và triển khai cấu trúc cơ sở dữ liệu, tạo và quản lý các bảng, chỉnh sửa dữ liệu, cũng như tối ưu hóa truy vấn nhằm đảm bảo hiệu suất tối ưu cho hệ thống.
Các lập trình viên back-end đóng vai trò quan trọng trong việc bảo mật hệ thống thông qua việc xác thực người dùng, quản lý phiên đăng nhập và mã hóa dữ liệu Họ cũng thực hiện các biện pháp bảo mật khác nhằm ngăn chặn các cuộc tấn công, đảm bảo an toàn cho thông tin và dữ liệu của người dùng.
Các lập trình viên back-end thực hiện kiểm thử và gỡ lỗi để đảm bảo tính ổn định và chính xác của hệ thống Họ áp dụng các công cụ và phương pháp kiểm thử phần mềm nhằm phát hiện và khắc phục lỗi hiệu quả.
Back-end developers đóng vai trò quan trọng trong việc tối ưu hóa hiệu suất hệ thống thông qua việc cải thiện tốc độ xử lý, giảm tải cho máy chủ, tối ưu hóa truy vấn cơ sở dữ liệu và áp dụng bộ nhớ đệm (caching) nhằm tăng tốc độ hoạt động của ứng dụng.
1.2.2 Các kỹ năng cần có của một lập trình viên back-end developers ?
Kỹ năng lập trình là yếu tố quan trọng trong phát triển back-end, bao gồm thành thạo một hoặc nhiều ngôn ngữ phổ biến như Java, C#, Python, Ruby, PHP, Node.js hoặc Golang Việc nắm vững cú pháp, viết mã sạch và xử lý logic phức tạp là những yêu cầu thiết yếu để đảm bảo hiệu quả trong công việc.
Understanding and having experience with back-end frameworks such as Spring for Java, NET Framework for C#, Django for Python, Ruby on Rails, and Laravel for PHP is essential Proficiency in supporting libraries and tools like Express.js, Flask, or ASP.NET Core is also advantageous.
Hiểu biết về cơ sở dữ liệu là rất quan trọng trong việc quản lý và xử lý thông tin Người dùng cần nắm vững các hệ quản trị cơ sở dữ liệu phổ biến như MySQL, PostgreSQL, MongoDB và SQL Server để có thể áp dụng hiệu quả trong công việc.
Có khả năng thiết kế cơ sở dữ liệu, tối ưu truy vấn và xử lý lỗi là cần thiết
Understanding web services and APIs is essential, particularly knowledge of RESTful and SOAP architectures It is important to know how to build and utilize APIs for effective communication between front-end and back-end components.
Có kiến thức về JSON, XML và các công cụ như Postman để kiểm tra và gỡ lỗi API
Bảo mật thông tin là một lĩnh vực quan trọng, bao gồm việc hiểu rõ các phương pháp bảo vệ dữ liệu, xác thực người dùng và quản lý phiên đăng nhập Người dùng cần trang bị kiến thức để xử lý và ngăn chặn các cuộc tấn công phổ biến như XSS, CSRF và SQL injection, nhằm đảm bảo an toàn cho hệ thống và thông tin cá nhân.
Kiến thức về hệ thống và mạng bao gồm hiểu biết cơ bản về kiến trúc hệ thống, quản lý máy chủ, cấu hình mạng và triển khai ứng dụng Ngoài ra, cần nắm vững các giao thức mạng quan trọng như TCP/IP, HTTP, HTTPS và DNS để đảm bảo hoạt động hiệu quả của hệ thống.
Kiến thức về kiểm thử và gỡ lỗi là rất quan trọng trong phát triển phần mềm Người làm việc trong lĩnh vực này cần hiểu rõ các phương pháp kiểm thử phần mềm và có khả năng khắc phục lỗi hiệu quả Họ cũng cần thành thạo trong việc sử dụng các công cụ như debuggers, loggers và các công cụ kiểm thử tự động để nâng cao chất lượng sản phẩm.
1.2.3 Cơ hội nghề nghiệp và mực lương
Thị trường IT tại Việt Nam đang phát triển mạnh mẽ, tạo ra nhiều cơ hội nghề nghiệp cho lập trình viên back-end Các công ty công nghệ, doanh nghiệp khởi nghiệp và tổ chức lớn đang tìm kiếm những chuyên gia có kỹ năng chuyên môn Lĩnh vực phát triển phần mềm, thương mại điện tử, fintech và giải pháp công nghệ thông tin cho doanh nghiệp đều đang mở rộng, mang đến nhiều lựa chọn nghề nghiệp hấp dẫn cho những ai theo đuổi ngành IT.
CƠ SỞ LÝ THUYẾT
Java
Java là ngôn ngữ lập trình và môi trường phát triển phần mềm, được phát triển bởi Sun Microsystems (nay thuộc Oracle Corporation) và ra mắt lần đầu vào năm 1995 Với tính năng đa nền tảng, Java cho phép lập trình viên viết mã một lần và chạy trên nhiều hệ điều hành khác nhau mà không cần chỉnh sửa, làm cho nó trở thành lựa chọn phổ biến cho phát triển ứng dụng di động, máy tính cá nhân, máy chủ và nhiều hệ thống khác.
2.1.2 Tại sao nên học Java?
Java là ngôn ngữ lập trình đa nền tảng, cho phép phát triển ứng dụng một lần và chạy trên nhiều hệ điều hành và thiết bị khác nhau Điều này đặc biệt hữu ích trong việc xây dựng ứng dụng di động cho các hệ điều hành như Android.
Java là một trong những ngôn ngữ lập trình phổ biến nhất trong ngành công nghệ thông tin, mang lại nhiều cơ hội việc làm cho những ai có kiến thức về nó Đặc biệt, lĩnh vực phát triển phần mềm và ứng dụng di động đang cần nhiều lập trình viên thành thạo Java.
Java là ngôn ngữ lập trình mạnh mẽ và đáng tin cậy, nổi bật với mô hình bảo mật cao Nó được sử dụng phổ biến trong các ứng dụng yêu cầu tính bảo mật nghiêm ngặt, đặc biệt là trong các hệ thống tài chính và ngân hàng.
Java có một cộng đồng lập trình viên lớn và năng động, giúp bạn dễ dàng tìm kiếm tài liệu, hướng dẫn và sự hỗ trợ phong phú khi cần thiết.
Java là ngôn ngữ lập trình hướng đối tượng, hỗ trợ người dùng trong việc tổ chức và quản lý mã nguồn một cách có cấu trúc, dễ dàng bảo trì và phát triển.
Java có phạm vi ứng dụng rộng rãi, cho phép phát triển các loại ứng dụng như máy tính cá nhân, web, di động, máy chủ và nhiều ứng dụng khác.
Kỹ năng Java vững chắc mở ra nhiều cơ hội thăng tiến trong sự nghiệp, cho phép bạn tiếp cận các vị trí phát triển phần mềm cao cấp.
2.1.3 Các khái niệm và cấu trúc cơ bản của Java
Cú pháp và cấu trúc cơ bản của Java có thể chia thành một số phần quan trọng như sau:
Chương trình Java đơn giản: Định nghĩa lớp, phương thức `main` và cấu trúc cơ bản để thực hiện chương trình Java đầu tiên
Trong Java, biến là công cụ lưu trữ dữ liệu và mỗi biến đều có một kiểu dữ liệu cụ thể như số nguyên, số thực hoặc chuỗi Các kiểu dữ liệu cơ bản trong Java bao gồm int (số nguyên), double (số thực), char (ký tự) và boolean (luận lý).
Câu lệnh điều kiện và vòng lặp là hai khái niệm quan trọng trong lập trình Câu lệnh if-else cho phép thực hiện các điều kiện khác nhau, trong khi cấu trúc vòng lặp như for và while giúp lặp lại các dòng mã nhiều lần Việc sử dụng hiệu quả các câu lệnh này giúp tối ưu hóa quy trình lập trình và cải thiện hiệu suất của ứng dụng.
Hàm (Phương thức): Là một tập các câu lệnh được nhóm lại với nhau để thực hiện một hành động cụ thể
Mảng : Mảng là một tập hợp các phần tử có cùng kiểu dữ liệu Các phần tử trong mảng được truy cập thông qua chỉ số
Lớp và Đối tượng: Lớp là một mô hình để tạo đối tượng, mỗi đối tượng là một thực thể có thuộc tính và phương thức
Xử lý Ngoại lệ: Xử lý ngoại lệ (Exception) là cách để xử lý các tình huống không mong muốn xảy ra trong quá trình thực thi chương trình
Giao diện (Interface) xác định các phương thức mà các lớp khác nhau cần triển khai, trong khi kế thừa cho phép lớp con (subclass) tái sử dụng các thuộc tính và phương thức từ lớp cha (superclass).
Java OOP
Lập trình hướng đối tượng (OOP) là phương pháp phát triển ứng dụng dựa trên các khái niệm thực tế, trong đó mọi thứ được xem như các "đối tượng" với thuộc tính và hành vi riêng OOP áp dụng các khái niệm như lớp, đối tượng, kế thừa, đa hình và giao diện để tạo ra cấu trúc chương trình rõ ràng, dễ bảo trì và tái sử dụng Java, một ngôn ngữ lập trình phổ biến, được thiết kế dựa trên OOP, giúp xây dựng ứng dụng một cách hiệu quả và có tổ chức.
2.2.2 các khái niệm cơ bản trong OOP?
Lớp (Class) là một mô hình hoặc bản thiết kế dùng để tạo ra các đối tượng cụ thể, bao gồm các thuộc tính (properties) và phương thức (methods) liên quan đến đối tượng mà nó đại diện.
Đối tượng (Object): Là một thực thể cụ thể được tạo ra từ lớp, bao gồm dữ liệu (thuộc tính) và hành vi (phương thức) liên quan đến lớp
Kế thừa (Inheritance) cho phép lớp con (subclass) nhận các thuộc tính và phương thức từ lớp cha (superclass), giúp tái sử dụng mã nguồn hiệu quả và xây dựng các mô hình phân cấp rõ ràng.
Đa hình (Polymorphism): Cho phép sử dụng cùng một tên hoặc phương thức trong các lớp khác nhau, nhưng có thể hoạt động khác nhau dựa trên ngữ cảnh
Giao diện là một tập hợp các phương thức mà các lớp con cần phải triển khai, giúp xác định một hợp đồng chung cho các lớp.
Thuộc tính (Properties) là dữ liệu lưu trữ trong một đối tượng, trong khi phương thức (Methods) là các hành vi mà đối tượng có khả năng thực hiện.
Hàm tạo (Constructor) là một phương thức đặc biệt được kích hoạt khi tạo ra một đối tượng mới từ lớp, thường dùng để khởi tạo các thuộc tính ban đầu của đối tượng.
Encapsulation (Đóng gói): Là nguyên tắc giới hạn quyền truy cập đến các thuộc tính và phương thức, ngăn ngừa truy cập trực tiếp từ bên ngoài lớp
Abstraction (Trừu tượng) là quá trình xây dựng các lớp và đối tượng trừu tượng, tập trung vào các thuộc tính và phương thức quan trọng, đồng thời ẩn đi các chi tiết không cần thiết.
Override (Ghi đè): Là việc lớp con cung cấp một triển khai mới cho một phương thức đã được định nghĩa trong lớp cha
2.2.3 Quản lý dữ liệu và bảo mật
Modifier truy cập private được sử dụng để giới hạn quyền truy cập vào các thành viên của lớp, bao gồm thuộc tính và phương thức Việc áp dụng từ khóa private ngăn chặn các lớp khác truy cập trực tiếp vào dữ liệu, đồng thời đảm bảo rằng mọi thay đổi dữ liệu chỉ được thực hiện thông qua các phương thức kiểm soát, giúp bảo vệ tính toàn vẹn của thông tin trong lập trình.
Encapsulation (Đóng gói) là một khái niệm quan trọng trong lập trình hướng đối tượng, đảm bảo rằng các thuộc tính của lớp được định nghĩa là private Điều này cho phép chỉ những phương thức public được cung cấp để truy cập và cập nhật dữ liệu, từ đó kiểm soát quyền truy cập và thay đổi dữ liệu một cách hiệu quả.
Phương thức getter và setter là công cụ quan trọng để truy cập và cập nhật dữ liệu từ các thuộc tính private trong lập trình Sử dụng getter giúp lấy thông tin một cách an toàn, trong khi setter cho phép kiểm soát việc cập nhật dữ liệu, từ đó đảm bảo tính toàn vẹn và bảo mật cho thông tin trong ứng dụng.
Private Access Modifier: Sử dụng private để giới hạn quyền truy cập từ các lớp khác và đảm bảo dữ liệu được bảo mật
Encapsulation (Đóng gói) là kỹ thuật lập trình quan trọng, trong đó các thuộc tính được định nghĩa là private để ngăn chặn truy cập trực tiếp từ bên ngoài lớp Thay vào đó, các phương thức public được cung cấp để cho phép truy cập và cập nhật dữ liệu một cách an toàn Điều này giúp kiểm soát dữ liệu hiệu quả và bảo vệ tính toàn vẹn của đối tượng trong lập trình.
Đối tượng không thể thay đổi (Immutable Objects) là các đối tượng mà sau khi được tạo ra, giá trị thuộc tính của chúng không thể thay đổi Việc sử dụng đối tượng không thay đổi giúp ngăn chặn những thay đổi không mong muốn từ bên ngoài, tăng cường tính ổn định và an toàn cho ứng dụng.
Thực hành lập trình an toàn là rất quan trọng để bảo vệ ứng dụng khỏi các lỗ hổng bảo mật Các kỹ thuật như kiểm tra dữ liệu đầu vào, tránh sử dụng các thư viện cũ và không an toàn, cùng với việc xử lý ngoại lệ một cách thích hợp, là những biện pháp cần thiết để đảm bảo an toàn cho mã nguồn.
Xác thực và ủy quyền là hai yếu tố quan trọng trong các ứng dụng yêu cầu đăng nhập Quá trình xác thực người dùng giúp đảm bảo danh tính của họ, trong khi kiểm tra quyền truy cập dựa trên vai trò đảm bảo rằng người dùng chỉ có thể truy cập vào những thông tin và chức năng mà họ được phép.
Encryption (Mã hóa): Sử dụng mã hóa dữ liệu nhạy cảm để bảo vệ chúng khỏi việc truy cập trái phép
Ghi nhật ký và kiểm tra là quá trình ghi lại các sự kiện quan trọng trong ứng dụng, giúp theo dõi và kiểm tra hoạt động của hệ thống một cách hiệu quả.
2.2.4 Mở rộng và tương tác với OOP
Java Spring
Java Spring Core là thành phần thiết yếu trong Spring Framework, một nền tảng phát triển ứng dụng Java mạnh mẽ và linh hoạt Nó cung cấp cơ sở cho việc phát triển ứng dụng thông qua nguyên tắc Dependency Injection (DI) và Inversion of Control (IoC), giúp quản lý các thành phần và tạo sự liên kết giữa chúng một cách dễ dàng và linh hoạt.
Dưới đây là một số khía cạnh quan trọng của Spring Core:
Dependency Injection (DI) trong Spring Core cho phép bạn xác định các phụ thuộc giữa các thành phần (bean) trong tệp cấu hình Spring sẽ tự động quản lý và chèn các phụ thuộc này vào các thành phần cần thiết, giúp tối ưu hóa quá trình phát triển ứng dụng.
Inversion of Control (IoC) trong Spring cho phép đảo ngược quy trình kiểm soát và quản lý đối tượng Thay vì phải tạo đối tượng thông qua mã lệnh trực tiếp, Spring tự động tạo và quản lý các đối tượng, giúp giảm thiểu sự phụ thuộc và tăng tính linh hoạt cho ứng dụng.
Bean là một thực thể được quản lý bởi container IoC của Spring Bạn có thể định nghĩa các bean thông qua các tệp cấu hình XML hoặc sử dụng các annotation.
The ApplicationContext serves as a Spring IoC container that manages all beans and offers features such as Dependency Injection (DI), event handling, and lifecycle management.
Tệp Cấu hình (Configuration File): Spring Core cho phép bạn định nghĩa các bean và các tùy chọn cấu hình trong các tệp XML hoặc sử dụng các annotation
Annotation: Spring hỗ trợ việc sử dụng annotation để đánh dấu các bean, phụ thuộc và cấu hình, giúp giảm bớt sự phức tạp của việc sử dụng XML
Quản lý Vòng đời trong Spring Core cho phép bạn điều khiển các giai đoạn khác nhau của vòng đời bean, từ khởi tạo đến hủy bỏ, giúp thực hiện các hành động cần thiết tại mỗi giai đoạn.
Spring MVC (Model-View-Controller) là một thành phần quan trọng trong Spring Framework, cung cấp mô hình lập trình web cho các ứng dụng Java Nó phân chia logic ứng dụng thành ba phần chính: Mô hình (Model), Giao diện (View) và Điều khiển (Controller), giúp tạo ra các ứng dụng web có cấu trúc rõ ràng và dễ quản lý.
Dưới đây là một số khía cạnh quan trọng của Spring MVC:
Mô hình trong ứng dụng đại diện cho dữ liệu và logic, bao gồm các lớp POJO (Plain Old Java Object) để thể hiện dữ liệu và các lớp Service để xử lý logic kinh doanh.
The interface, or view, refers to the user interface of an application Spring MVC supports various view technologies, including JSP (JavaServer Pages), Thymeleaf, and FreeMarker, among others.
Điều khiển (Controller) đóng vai trò trung gian giữa Mô hình và Giao diện, xử lý yêu cầu từ người dùng, tương tác với Mô hình để truy xuất dữ liệu và thực hiện logic, sau đó lựa chọn Giao diện phù hợp để hiển thị kết quả.
DispatcherServlet là thành phần quan trọng trong Spring MVC, đóng vai trò trung tâm trong việc điều phối các yêu cầu đến các Controller tương ứng Nó không chỉ xử lý các yêu cầu mà còn tìm kiếm Controller phù hợp, thực thi các xử lý cần thiết và chọn giao diện để hiển thị kết quả.
RequestMapping: Annotation @RequestMapping (hoặc các annotation tương tự như @GetMapping, @PostMapping, v.v.) được sử dụng để ánh xạ các URL tới các phương thức xử lý của Controller
Spring MVC cho phép truyền dữ liệu từ giao diện đến controller thông qua các tham số của phương thức Annotation @ModelAttribute được sử dụng để chuyển dữ liệu từ giao diện vào mô hình, giúp quản lý và xử lý thông tin một cách hiệu quả.
Xử lý Form và Validation: Spring MVC cung cấp cơ chế để xử lý và validate dữ liệu được gửi từ Giao diện thông qua các form
ViewResolver: ViewResolver là một cơ chế giúp xác định giao diện phù hợp dựa trên tên Giao diện hoặc kiểu trả về từ Controller
Spring MVC là công cụ hữu ích giúp phát triển ứng dụng web Java một cách có tổ chức, dễ bảo trì và linh hoạt Đây là một thành phần quan trọng trong quá trình phát triển ứng dụng web với Spring Framework.
Spring Data, thuộc Spring Framework, cung cấp các dự án và tiện ích giúp tương tác với cơ sở dữ liệu một cách dễ dàng và hiệu quả Mục tiêu chính của Spring Data là đơn giản hóa quy trình truy vấn và làm việc với cơ sở dữ liệu, bất kể loại cơ sở dữ liệu nào được sử dụng.
Spring Data cung cấp nhiều dự án con hỗ trợ các cơ sở dữ liệu phổ biến như MongoDB, Redis, JDBC (cơ sở dữ liệu SQL), Cassandra, và Neo4j (cơ sở dữ liệu đồ thị) Mỗi dự án con giúp bạn tương tác hiệu quả với cơ sở dữ liệu cụ thể, giảm thiểu mã viết ra và nâng cao tính dễ đọc của mã nguồn.
Các tính năng chính của Spring Data bao gồm:
TRIỂN KHAI
Tổng quan về phần mềm
3.1.1 Giới thiệu về phần mềm
Website được phát triển với ngôn ngữ Java, sử dụng framework Spring Boot để tối ưu hóa hiệu suất Giao diện người dùng được thiết kế thông qua các template, trong khi dữ liệu được lưu trữ an toàn bằng phần mềm MySQL.
3.1.2 Các chức năng chính của phần mềm
Hiển thị danh mục sản phẩm
Xem sản phẩm theo danh mục
Xem chi tiết sản phảm
Thêm sản phẩm vào giỏ hàng
Thêm,chỉnh sửa,xóa danh mục sản phẩm
Thêm,chỉnh sửa,xóa sản phẩm
Quản lý tài khoản user
Phân tích hệ thống
3.2.1 Phân tích các nhóm chức năng
Website trong đề tài được chia ra 3 nhóm chức năng chính là chức năng khách,chức năng user hệ thống ,chức năng admin:
Nhóm chức năng chính Chi tiết chức năng chính
Xem danh mục sản phẩm
Xem chi tiết sản phẩm
User Đăng nhập ,đăng xuất
Xem danh mục sản phẩm
Xem thông tin các sản phẩm trong giỏ hàng
Xóa sản phẩm trong giở hàng
Tính toán tổng giá trị đơn hàng
Admin Xem tất cả user trên hệ thống
Xóa user khỏi hệ thống
Thêm,sửa,xóa danh mục sản phẩm vào hệ thống
Thêm sửa,xóa sản phẩm vào hệ thống
3.2.2 Thiết kế và mô tả ERD hệ thống
Mô hình ERD cho dự án với 5 bảng là customers,roles,categories,products,shopping cart
Thuộc tính Kiểu dử liệu NotNull Ghi chú customer_id BIGINT x Khóa chính address Varchar(255) first_name Varchar(255) last_name Varchar(255) password Varchar(255) x phone_number Varchar(255) username Varchar(255) x
Thuộc tính Kiểu dữ liệu NotNull Ghi chú role_id BIGINT x Khóa chính name Varchar(255) x customer_id BIGINT x Khóa ngoại
Thuộc tính bảng shopping_cart
The data model includes several key attributes: the `shopping_cart_id`, which is a BIGINT and serves as the primary key; `total_items`, an integer representing the total number of items; `total_price`, a double indicating the overall cost; and `customer_id`, a BIGINT that acts as a foreign key linking to the customer Additionally, `product_id` is another BIGINT that functions as a foreign key, connecting to the specific products within the shopping cart.
The article outlines the attributes of a data model, specifying that the product_id is a BIGINT and serves as the primary key It includes cost_price as a Double and current_quantity as an int, both marked as essential The description is a Varchar with a limit of 255 characters, while the image is stored as a MEDIUMBLOB The name is also a Varchar with a maximum of 255 characters, and category_id is a BIGINT designated as a foreign key.
Thuộc tính Kiểu dữ liệu NotNull Ghi chú category_id BIGINT x Khóa chính name Varchar(255) x
Triển khai phần mềm
3.3.1 Các công cụ hỗ trợ
Viết code bằng Intellij luôn là 1 trong những sự ưu tiên hàng đầu cho các lập trình viên java
Lưu trữ cơ sở dữ liệu với mysql
Lưu trữ source code trên github
3.3.2 Cấu trúc thư mục triển khai
Hình 5:Cấu trúc thư mục dự án
Thư mục configuration chứa các lớp cấu hình tùy chỉnh cho ứng dụng
Thư mục controller dùng để chứa các điều khiển
Thư mục dto thường được sử dụng để chứa các lớp DTO
Thư mục model để định nghĩa các bảng database
Thư mục repository chứa các interface Repository, có vai trò quan trọng trong việc quản lý truy vấn và tương tác với cơ sở dữ liệu thông qua Spring Data JPA.
Thư mục service thường được sử dụng để chứa các lớp dịch vụ
Thư mục resources là một phần quan trọng trong cấu trúc dự án ứng dụng của bạn, chứa các tài nguyên cần thiết như tệp cấu hình, tài liệu, hình ảnh, tệp dữ liệu cơ sở dữ liệu nhúng và nhiều loại tệp nguồn khác.
Thư mục static chứa các hình ảnh được upload lên từ website
Thư mục template chức các trang template
Tệp application.properties là tệp cấu hình chính của ứng dụng và kết nối với database
thư mục "test" được sử dụng để chứa các tệp và thư mục liên quan đến việc kiểm thử (testing) ứng dụng của bạn
Tệp "pom.xml" trong dự án Spring Boot đóng vai trò quan trọng trong việc quản lý phụ thuộc, cấu hình và quá trình build của dự án
3.3.3 Quy trình thực hiện đề tài a cài đặt các cấu hình thư viện cần dùng cho dự án Đầu tiên để bắt đầu dự án thì ta cần truy cập trang https://start.spring.io/ để tại file project cũng như các dependency cần thiết như bên dưới
Hình 6:Các dependency b.Tạo cấu hình kết nối MySQL
C.Tạo các packet d.Tạo models
Dưới dây là các model của dự án
Thư mục respository gồm các file như dưới dây
Nội dung file RoleRepository f.Tạo service
Thư mục service gồm các file dưới đây
Thư mục controller gồm các file dưới dây:
Thư mục global gồm các file :
Thư mục configuration gồm các file
Dự án sử dụng view là các template ,sau khi lấy data và cho render ở view thì dưới đây là các giao diện của website
Hình 7: giao diện trang admin
Giao diện trang admin/categories
Hình 8: Giao diện list categories trang admin
Giao diện trang admin/products
Hình 9: Giao diện list product trang admin
Giao diện trang admin/user
Hình 10: Giao diện list user trang admin
Hình 11: Giao diện trang shop
Giao diện trang view products
Hình 12: Giao diện view Products
Hình 13: Giao diện trang đăng nhập
Hình 14:Giao diện trang đăng ký
Hình 15:Giao diện trang giỏ hàng
CHƯƠNG 4 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 1.Kết quả đạt được sau khi kết thúc kỳ thực tập
Về phía báo cáo thực tập:
- Bao quát được kiến thức được đào tạo và tự hiểu của bản thân qua quá trình thực tập
- Áp dụng được những kiến thức được học trong thời gian thực tập
- Thành công tạo các chức năng cho 1 website bán hàng
-Nâng cao khả năng tự học, tiếp thu kiến thức một cách chủ động.
-Cải thiện kỹ năng giao tiếp, nâng cao hiểu biết của bản thân trong môi trường làm việc chuyên nghiệp của doanh nghiệp.
-Được training những kỹ năng cần thiết của một developer và một số kỹ năng mềm như: thuyết trình trong doanh nghiệp, bảo mật trong doanh nghiệp…
-Kỹ năng viết email, báo cáo, cũng như báo cáo trong các buổi daily meeting hàng ngày đều phát triển theo hướng tích cực hơn.
-Kỹ năng làm việc theo đội nhóm linh hoạt, phân chia công việc rõ ràng.
-Chủ động với công việc trong mọi hoàn cảnh.
2 Những điểm yếu cần phải khắc phục
-Khi có vấn đề trong công việc, chưa chủ động liên hệ sớm với mentor để tìm hướng giải quyết.
-Kĩ năng giao tiếng bằng tiếng anh còn hạn chế.
-Khả năng đọc hiểu tài liệu còn hạn chế
Sau quá trình học hỏi và thực tập tại doanh nghiệp, tôi đã có hướng đi rõ ràng hơn cho tương lai Những kiến thức tích lũy từ thực tập không chỉ giúp tôi định hình công việc mà còn giúp tôi nhận ra điểm mạnh và hạn chế của bản thân Từ đó, tôi sẽ nỗ lực củng cố và phát triển những kiến thức đã có để chuẩn bị tốt hơn cho sự nghiệp sau này.
Trong thời gian thực tập, tôi đã học được nhiều điều về lập trình viên backend Java, làm quen với các khái niệm và chức năng cơ bản của hệ thống backend Tuy nhiên, tôi nhận thấy kiến thức của mình vẫn chỉ ở mức căn bản và cần phát triển sâu hơn Tôi đặt mục tiêu nâng cao kỹ năng trong lĩnh vực này, học sâu về ngôn ngữ lập trình Java và các framework liên quan, cùng với việc tìm hiểu các chức năng nâng cao như quản lý dữ liệu, bảo mật, tối ưu hóa hiệu suất và tương tác với các dịch vụ khác Tôi hiểu rằng việc tự khám phá và tìm hiểu sâu về Java sẽ đóng vai trò quan trọng trong sự phát triển nghề nghiệp của mình, vì vậy tôi sẽ tận dụng tài liệu học trực tuyến, tham gia vào các dự án thực tế và áp dụng kiến thức mới vào công việc hàng ngày.