LỜI MỞ ĐẦUNgày nay, ứng dụng công nghệ thông tin và việc tin học hóa được xem là một trongnhững yếu tố mang tính quyết định trong hoạt động của các chính phủ, tổ chức, cưng nhưcác công t
Trang 1KHOA CÔNG NGHỆ PHẦN MỀM
_
BÁO CÁO THỰC TẬP PHẦN MỀM QUẢN LÝ KHÁCH HÀNG - CRM
Công ty thực tập: Hanbiro VN
Người phụ trách: Anh Thái Thanh Phong Thực tập sinh: Nguyễn Tiến Đạt
Tp Hồ Chí Minh, tháng 12 năm 2022
Trang 2LỜI MỞ ĐẦU
Ngày nay, ứng dụng công nghệ thông tin và việc tin học hóa được xem là một trongnhững yếu tố mang tính quyết định trong hoạt động của các chính phủ, tổ chức, cưng nhưcác công ty, cửa hàng, nó đóng vai trò hết sức quan trọng có thể tạo ra những bước độtphá mạnh mẽ
Việc xây dựng các trang web để phục vụ cho các nhu cầu riêng của các tổ chức,công ty thậm chí các cá nhân, ngày nay, không lấy gì làm xa lạ Đối với lĩnh vực bánhàng cũng trở nên ngày càng cấp thiết Khách hàng ngày càng có nhiều nhu cầu mua sắm
và việc quản lý thủ công mất quá nhiều công sức và thời gian mà hiệu quả lại không cao
Vì vậy ứng dụng công nghệ vào lĩnh vực này ngày càng phổ biến Với một vài thao tácđơn giản, nhanh chóng, một người bất kì có thể dễ dàng quản lý mọi công việc của mìnhtrên mọi thiết bị
Sau ba năm học tập trên trường, do mong muốn có thêm kinh nghiệm thực tế,cũng như muốn được tham gia làm các dự án thực tế trong một môi trường chuyênnghiệp, em có dự định là sẽ thực tập trong hè Vì vậy, em quyết định chọn Hanbiro - mộtmôi trường lý tưởng, hiện đại, chuyên nghiệp - là nơi sẽ giúp em thực hiện được dự địnhnày
Trang 3LỜI CẢM ƠN
Trân trọng gửi lời cảm ơn Công ty Hanbiro Việt Nam đã tạo điều kiện cho em có
cơ hội được thực tập tại công ty
Chỉ trong một thời gian ngắn, nhưng nhờ sự chỉ dẫn nhiệt tình của nhóm trainer,nhóm thực tập chúng em đã tiếp thu được những kiến thức quan trọng để có thể làm đượcmột phần mềm quản lý thực tế Chân thành cảm ơn các anh chị trong nhóm trainer đã bỏ
ra nhiều thời gian, công sức để hướng dẫn chúng em hoàn thành đợt thực tập này
Đặc biệt cảm ơn anh Hoàng Minh Việt, đã training ReactJS, hướng dẫn, giúp đỡ
cho chúng em tận tình cả những khó khăn trong công việc, đến những khó khăn việc làm
quen với môi trường mới; cảm ơn anh Thái Thanh Phong, đã training AngularJS, hỗ trợ
chúng em rất nhiều về các vấn đề kỹ thuật debug, test API, cấu trúc lại source code trongquá trình làm phần mềm; chỉ dẫn chúng em về cách làm báo cáo, lên kế hoạch, quản lýsource code, những kỹ năng không thể thiếu khi làm việc nhóm trong thời gian qua
Cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ,tạo điều kiện em làm bài báo cáo này
Nguyễn Tiến ĐạtTPHCM, 12/2022
Trang 4NHẬN XÉT CỦA KHOA
Trang 5
Nội dung
CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP 71 GIỚI THIỆU CÔNG TY HANBIRO 7
2 SẢN PHẨM CÔNG TY 7
3 VĂN HÓA CÔNG TY 8
CHƯƠNG 2: NỘI DUNG THỰC TẬP 9
1 TÌM HIỂU CÔNG TY VÀ CÁC KỸ NĂNG CƠ BẢN TRONG CÔNG TY 9
2 NGHIÊN CỨU KỸ THUẬT 9
2.1 Các công cụ làm việc 9
2.2 Tìm hiểu về ReactJS và xem source code mẫu 16
2.3 Tìm hiểu về AngularJS và CodeIgniter để xây dựng các tính năng cơ bản 19
3 THỰC HIỆN PROJECT 22
4 LỊCH LÀM VIỆC 22
CHƯƠNG 3: CHI TIẾT VỀ DỰ ÁN QUẢN LÝ KHÁCH HÀNG CRM 24
1 GIỚI THIỆU VỀ LÝ DO THỰC HIỆN 24
2 THỰC HIỆN 24
3 KẾ HOẠCH 24
3.1 Nghiên cứu tài liệu AngularJS và CodeIgniter và MySQL 24
3.2 Xây dựng phần mềm quản lý khách hàng CRM 26
3.3 Xử lý lỗi Frontend, lỗi API 29
TÀI LIỆU THAM KHẢO 30
TỔNG KẾT 31
Trang 6DANH MỤC HÌNH ẢNH
Hình 1 Logo công ty 7
Hình 2 Giới thiệu về git 10
Hình 3 Cơ chế lưu trữ phiên bản của git 11
Hình 4 Gitflow 12
Hình 5 Phần mềm HanbiroTalk 13
Hình 6 Logo Visual Studio Code 13
Hình 7 Giao diện Visual Studio Code 14
Hình 8 Logo PostMan 15
Hình 9 Logo VertrigoServ 15
Hình 10 Logo React 16
Hình 11 Vòng đời trạng thái 17
Hình 12 Logo AngularJS 19
Hình 13 Logo CodeIgniter 21
Hình 14 Cấu trúc CodeIgniter 25
Hình 15 Giao diện VertrigoServ 25
Hình 16 Giao diện VetrigoServ 26
Hình 17 Giao diện quản lý 27
Hình 18 Chức năng thêm khách hàng 28
Hình 19 Chức năng chỉnh sửa khách hàng 28
Hình 20 Giao diện quản lý task 29
Trang 7CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP
Hình 1 Logo công ty
1 Giới thiệu công ty Hanbiro
Công ty TNHH Hanbiro được thành lập vào năm 1999 tại Hàn Quốc, là một trong những nhà cung cấp dịch vụ điều hành quản lý máy chủ tốt nhất Hàn Quốc
Thương hiệu Hanbiro lấy tên là từ ghép tiếng Hàn Quốc:
– Han (韓): Hàn Quốc, Hanbiro
Trang 8bắt kịp xu hướng quản lý hiện đại thời 4.0 mà bất kỳ Doanh nghiệp nào cũng muốn hướng đến.
- Trải qua nhiều năm, Groupware luôn được cải thiện và nâng cấp để phù hợp hơn với nhu cầu sử dụng ngày nay của mỗi thị trường như Hàn Quốc, Nhật Bản, Mỹ,
Indonesia và Việt Nam
- Bên cạnh Groupware, các giải pháp về Email doanh nghiệp, Quản lý khách hàng
CRM… cũng là những giải pháp nổi bật của công ty
3 Văn hóa công ty
- Thời gian làm việc từ thứ 2 đến thứ 6: 8h – 17h
- Thời gian nghỉ trưa từ 12h – 13h, mọi nhân viên có thể ăn trưa và ngủ trước khi bắt đầu công việc vào buổi chiều
- Trước khi kết thúc một ngày làm việc, phải làm Report Daily để báo cáo các nhiệm
vụ, công việc đã làm trong ngày
- Tại gia đình Hanbiro, các thành viên được hỗ trợ tối đa điều kiện để làm việc và nghỉ ngơi như công ty cung cấp các thiết bị làm việc (máy tính, PC, laptop, macbook, điện thoại…), trò chơi giải trí- ăn uống lúc giải lao Đặc biệt, công ty hỗ trợ mua nhà, mua xe… với chính sách cho vay chỉ với 0%/ tháng hay tặng phép du lịch bao chi phí lên đến 40 triệu mỗi chuyến…
CHƯƠNG 2: NỘI DUNG THỰC TẬP
Đợt thực tập với chủ đề “Phần mềm quản lý khách hàng CRM” nhằm mục đíchgiúp sinh viên thực tập được đào tạo toàn diện về các nghiệp vụ, chức năng của phần
Trang 9mềm quản lý, đồng thời rèn luyện những kỹ năng mềm như làm việc nhóm, thuyết trình,giao tiếp Tại công ty, sinh viên có cơ hội được học tập, khám phá và làm việc trong mộtmôi trường phát triển game chuyên nghiệp.
1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty
Thời gian: 1 ngày
Nội dung: Giới thiệu công ty, cách tổ chức công ty
Được nghe người phụ trách giới thiệu về công ty, quá trình thành lập và phát triển (như
đã nhắc ở trên), quy trình làm việc từ cao xuống thấp, cách thức tổ chức công ty, giới
thiệu về các nhóm đảm nhiệm chức năng khác Ngoài ra, thực tập sinh còn được giới
thiệu về cách thức làm việc trong công ty như thời gian đi làm, cách thức điểm danh
chấm công, các quy định cần phải tuân thủ, các sử dụng email trong công việc, phần mềmcông ty…
Kết quả: Hiểu thêm về công ty Hanbiro, quá trình thành lập và phát triển Có thêm các kỹ
năng về việc sử dụng email trong công việc, làm việc có kế hoạch, có kỷ luật, có trách nhiệm hơn
2 Nghiên cứu kỹ thuật
2.1 Các công cụ làm việc
Thời gian: 3 ngày
Nội dung: Tìm hiểu về các công cụ sẽ được sử dụng trong quá trình làm việc
Trong thời gian này, mentor đã hướng dẫn thực tập sinh tìm hiểu về các công cụ sẽgiúp ích cho công việc sau này Một số phền mềm trong số đó như:
Trang 102.1.1 Giới thiệu về Git
Hình 2 Giới thiệu về git
Git là tên gọi của một Hệ thống quản lý phiên bản phân tán (Distributed Version Control System – DVCS) là một trong những hệ thống quản lý phiên bản phân tán phổ
biến nhất hiện nay DVCS nghĩa là hệ thống giúp mỗi máy tính có thể lưu trữ nhiều phiên
bản khác nhau của một mã nguồn được nhân bản (clone) từ một kho chứa mã nguồn (repository), mỗi thay đổi vào mã nguồn trên máy tính sẽ có thể ủy thác (commit) rồi
đưa lên máy chủ nơi đặt kho chứa chính Và một máy tính khác (nếu họ có quyền truycập) cũng có thể clone lại mã nguồn từ kho chứa hoặc clone lại một tập hợp các thay đổi
mới nhất trên máy tính kia Trong Git, thư mục làm việc trên máy tính gọi là Working Tree.
Ngoài ra, có một cách hiểu khác về Git đơn giản hơn đó là nó sẽ giúp bạn lưu lạicác phiên bản của những lần thay đổi vào mã nguồn và có thể dễ dàng khôi phục lại dễdàng mà không cần copy lại mã nguồn rồi cất vào đâu đó Và một người khác có thể xemcác thay đổi của bạn ở từng phiên bản, họ cũng có thể đối chiếu các thay đổi của bạn rồigộp phiên bản của bạn vào phiên bản của họ Cuối cùng là tất cả có thể đưa các thay đổivào mã nguồn của mình lên một kho chứa mã nguồn
Trang 11Cơ chế lưu trữ phiên bản của Git là nó sẽ tạo ra một “ảnh chụp” (snapshot) trênmỗi tập tin và thư mục sau khi commit, từ đó nó có thể cho phép bạn tái sử dụng lại mộtảnh chụp nào đó mà bạn có thể hiểu đó là một phiên bản Đây cũng chính là lợi thế củaGit so với các DVCS khác khi nó không “lưu cứng” dữ liệu mà sẽ lưu với dạng snapshot.
Hình 3 Cơ chế lưu trữ phiên bản của git
- Master: là nhánh chính, run trên production
- Dev: là nhánh replica cho nhánh master cộng với các nhánh feature đang được pháttriển
- Feature: được tách từ nhánh dev, chức năng sau khi được phát triển sẽ được mergevào dev trước khi merge vào master
- GitFlow:
Trang 12Hình 4 Gitflow
2.1.2 Phần mềm GroupWare: phần mềm quản lý doanh nghiệp của chính công ty
- Quản lý các task hoặc công việc được giao
- Gửi mail cho công ty
- Hiển thị các thông tin chung về cá nhân và công ty
- Điểm danh và chấm công khi đi làm
- Quản lý công việc của từng nhóm
- Quản lý báo cáo (Daily Report)
Trang 132.1.3 HanbiroTalk
Hình 5 Phần mềm HanbiroTalk
- Công cụ để nhắn tin, giao tiếp giữa các thành viên trong công ty
- Là sản phẩm của công ty
2.1.4 Visual Studio Code: công cụ soạn thảo code
Hình 6 Logo Visual Studio Code
Trang 14- Visual Studio Code là sản phẩm của Microsoft, ra mắt vào tháng 4 năm 2015 ở hội
nghị Build Đặc điểm nổi bật là đơn giản, gọn nhẹ, dễ dàng cài đặt.
- Visual Studio Code có thể cài đặt được trên cả Windows, Linux và Mac OS và hỗ trợ
nhiều ngôn ngữ khác nhau
- Hình ảnh giao diện ban đầu của VSCode như sau:
Hình 7 Giao diện Visual Studio Code
Nhìn sang thanh sidebar ta thấy 4 biểu tượng, đầu tiên là hai tờ giấy xếp chồng lênnhau, đây là cây thư mục chứ những file mà chúng ta đang làm việc Hình chiếc kính lúp
hỗ trợ chức năng tìm kiếm Một điểm đặc biệt là Visual Studio Code được tính hợp luôngit, rất tiện cho việc quản lý code của chúng ta.
Biểu tượng thứ 4 là diệt con bọ, chính là chức năng hỗ trợ chúng ta fix bug Hìnhvuông cuối cùng là nơi cho phép chúng ta cài thêm các phần extensions mà Microsoft vàcộng đồng viết thêm cho chúng ta, hỗ trợ quá trình code
Trang 15Vertrigo là một phần mềm server ảo được dùng để xây dựng server trên máy tính
để biên dịch mã nguồn PHP Các nhà phát triển web PHP dùng Vertrigo để tạo một
server nhỏ trên máy tính cá nhân, biên dịch và chạy mã nguồn PHP trước khi public lên Hosting
Một số tính năng chính của Vertrigo như sau:
- Biên dịch mã PHP: Biên dịch các chương trình được viết bằng PHP và trả kết quả về
cho người dùng
- Quản lý MySQL: Cho phép thực hiện các thao tác trên MySQL như thêm / xóa / sửa.
- Cấu hình địa chỉ IP thông qua các file hệ thống
Trang 16- Tạo domain ảo trên máy tính cá nhân dễ dàng.
Thực hiện: Thực hành và sử dụng các phần mềm đã nêu trên.
Kết quả: Làm quen với các công cụ, đặc biệt là Gitbash và GroupWare.
2.2 Tìm hiểu về ReactJS và xem source code mẫu
Hình 10 Logo React
Thời gian: 5 ngày
Nội dung: Xem lại các tài liệu, các khái niệm liên quan đến ReactJS.
React.js là một thư viện Javascript đang nổi lên trong những năm gần đây với xu
hướng Single Page Application Trong khi những framework khác cố gắng hướng đến một
mô hình MVC hoàn thiện thì React nổi bật với sự đơn giản và dễ dàng phối hợp với
những thư viện Javascript khác Nếu như AngularJS là một Framework cho phép nhúngcode javasscript trong code html thông qua các attribute như ng-model, ng-repeat thì với
React là một library cho phép nhúng code html trong code javascript nhờ vào JSX, bạn có
thể dễ dàng lồng các đoạn HTML vào trong JS Tích hợp giữa javascript và HTML vàotrong JSX làm cho các component dễ hiểu hơn
Một vòng đời sẽ có trạng thái như sau:
Trang 17 Được gọi khi hiển thị component ra ngoài trình duyệt.
Sẽ return về nội dung mà bạn đã viết, có thể là một component hoặc null hoặc
là false (trong trường hợp không muốn render gì cả)
Được gọi sau khi đã hiển thị component ra ngoài trình duyệt, và hàm này đượcthực hiện một lần duy nhất
Trang 18 Hàm này được gọi để thông báo component đã tồn tại trên DOM, từ đó cácthao tác trên DOM có thể thực hiện bình thường với component này.
Đầu tiên khi component được gọi thì hàm hàm constructor() được gọi, sau đó đếncomponentWillMount(), tiếp theo là reder() ra ngoài và cuối cùng hàmcomponentDidMount được gọi khi đã render() xong
Được thực hiện ngay sau khi state và props thay đổi
sẽ trả về kết quả true or false Phương thức này sẽ xác định 1 component cóđược update hay không Mặc định giá trị này là true Nếu bạn không muốncomponent render lại sau khi update state hay props thì return giá trị thànhfalse
Được gọi khi chúng ta update state của component trước khi nó render lại
Bạn không thể gọi this.setState trong componentWillUpdate
Hàm render sẽ được gọi ngay sau hàm này
(từ phiên bản 16.3 thì hàm này không được khuyến khích dùng và sẽ bị loại bỏ
Trang 19Thực hiện:
- Đọc tài liệu hướng dẫn
- Xem source code mẫu và hiểu cách vận hành project của công ty
Kết quả:
- Nâng cao kỹ năng lập trình với các thư viện của ReactJS
- Có được những kiến thức quan trọng cho việc thiết kế phần mềm sau này
- Ngoài ra còn được biết thêm một số quy tắc trong việc viết code sao cho đúng chuẩn,
dễ đọc, dễ hiểu
2.3 Tìm hiểu về AngularJS và CodeIgniter để xây dựng các tính năng cơ bản
Hình 12 Logo AngularJS
Thời gian: 7 ngày
Nội dung: Đọc tài liệu hướng dẫn và tìm hiểu về AngularJS và Codeigniter
- Các khái niệm liên quan về AngularJS:
Đây là một mã nguồn mở, 1 framwork cho các ứng dụng web Được phát triển từ năm 2009, hiện tại được duy trì bởi google và đã ra mắt phiên bản 2.0
AngularJS là một framework có cấu trúc cho các ứng dụng web động Nó cho phépbạn sử dụng HTML như là ngôn ngữ mẫu và cho phép bạn mở rộng cú pháp của
Trang 20Hai tính năng cốt lõi: Data binding và Dependency injection của AngularJS loại bỏ phần lớn code mà bạn thường phải viết Nó xảy ra trong tất cả các trình duyệt, làm cho nó trở thành đối tác lý tưởng của bất kỳ công nghệ Server nào.
Bản chất của AngularJS là hoạt động dạng Single Page, sử dụng API để lấy data, cho nên bạn cần biết các kĩ thuật DHTML, AJAX
Đặc trưng của AngularJS:
Phát triển dự trên Javascript
Tạo các ứng dụng client-side theo mô hình MVC
Khả năng tương thích cao, tự động xử lý mã javascript để phù hợp vứi mỗi
trình duyệt
Mã nguồn mở, miễn phí hoàn toàn và được sủ dụng rộng rãi
Các tính năng cơ bản của AngularJS:
Scope: là đối tượng có nhiệm vụ giao tiếp giữa controller và view của ứng
dụng
Controller: xử lí dữ liệu cho đối tượng $scope, từ đây bên views sẽ sử dụng
các dữ liệu trong scope để hiển thị ra tương ứng
Data - binding: tự động đồng bộ dữ liệu giữa model và view
Service: là singleton object được khởi tạo 1 lần duy nhất cho mỗi ứng dụng,
cung cấp các phương thức lưu trữ dữ liệu có sẵn
($http, $httpBackend, $sce, $controller, $document, $compile, $parse, $rootElement, $rootScope, )
Filter: Lọc các tập con từ tập item trong các mảng và trả về các mảng mới.
Directive: dùng để tạo các thẻ HTML riêng phục vụ những mục đích riêng
AngularJS có những directive có sẵn như ngBind, ngModel…
Temple: một thành phần của view, hiển thị thông tin từ controller
Routing: chuyển đổi giữa các action trong controller, qua lại giữa các view.
MVC & MVVM: mô hình thiết kế để phân chia các ứng dụng thành nhiều
phần khác nhau (gọi là Model, View và Controller) mỗi phần có một nhiệm vụ