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

Xây dựng mần mềm quản lý bán hàng cho công ty TNHH đầu tư thương mại công nghệ mới

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

LỜI CẢM ƠN
Trong quá trình thực hiện đồ án tốt nghiệp em đã nhận được rất nhiều sự
chỉ bảo và giúp đỡ của các

cô giáo khoa công nghệ thông tin trường đại học

công nghệ thông tin và truyền thông – Đại học Thái Nguyên.
- Em xin chân thành cảm ơn sự giúp đỡ của các thầy, cô giáo khoa công
nghệ thông tin trường đại học công nghệ thông tin và truyền thông – Đại học
Thái Nguyên.
- Em xin cảm ơn các thầy giáo, cô giáo thuộc bộ môn khoa học máy tính
đã trang bị cho em những kiến thức chuyên ngành để em có thể hoàn thành đồ án
này.
- Đặc biệt em xin chân thành cảm ơn sự quan tâm, chỉ bảo tận tình của cô
giáo Th.s Dương Mai Thương đã trực tiếp hướng dẫn, giúp đỡ em hoàn thành đồ
án này.
Xin gửi lời cảm ơn đến Công ty TNHH TM&ĐT Công Nghệ Mới đã tạo
điều kiện thuận lợi và giúp đỡ tôi tìm hiểu thực tế để có được những thông tin thiết
thực nhất phục vụ cho quá trình thực hiện đồ án này.

i


LỜI CAM ĐOAN
Em xin cam đoan rằng:
Số liệu và kết quả nghiên cứu trong đồ án này là hoàn toàn trung thực và chưa
từng được sử dụng hoặc công bố trong bất kỳ công trình nào khác.
Mọi sự giúp đỡ cho việc thực hiện đồ án này đã được cám ơn và các thông
tin trích dẫn trong đồ án đều được ghi rõ nguồn gốc.
Thái nguyên, tháng 04 năm 2017
Sinh viên thực hiện


Phùng Xuân Bách

ii


MỤC LỤC

LỜI CẢM ƠN ..................................................................................................... i
LỜI CAM ĐOAN ............................................................................................... ii
MỤC LỤC ........................................................................................................ iii
DANH MỤC HÌNH ẢNH ...................................................................................v
LỜI NÓI ĐẦU ....................................................................................................1
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT.....................................................................2
1.1. Giới thiệu ..................................................................................................2
1.1.1. Tổng quan ...........................................................................................2
1.1.2. Những điểm nổi bật .............................................................................2
1.1.3. Những điểm hạn chế ...........................................................................3
1.1.4. Cài đặt .................................................................................................3
1.2. Tìm hiểu ....................................................................................................4
1.2.1. Mô hình Model-View-Controller.........................................................4
1.2.2. Cấu trúc CodeIgniter ...........................................................................5
1.2.3. Dòng chảy dữ liệu trong CodeIgniter...................................................6
1.2.4. CodeIgniter URL.................................................................................7
1.2.5. Model ..................................................................................................8
1.2.6. View ................................................................................................. 10
1.2.7. Controller .......................................................................................... 12
CHƯƠNG 2. KHẢO SÁT, PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG ............. 16
2.1. Khảo sát hệ thống .................................................................................... 16
2.1.1. Giới thiệu .......................................................................................... 16
2.1.2. Một số biểu mẫu. ............................................................................... 17

2.2. Phân tích hệ thống ................................................................................... 21
2.2.1. Tác nhân của hệ thống ( actor) .......................................................... 21
2.2.2. Usecase tổng quan ............................................................................. 22
2.2.3. Danh sách các usecase....................................................................... 22
2.2.4. Usecase cho từng chức năng cụ thể ................................................... 23

iii


2.2.5. Đặc tả một số usecase chính .............................................................. 27
2.2.6. Biểu đồ hoạt động. ............................................................................ 37
2.2.7. Biểu đồ tuần tự. ................................................................................. 40
2.2.8. Biểu đồ lớp........................................................................................ 46
2.2.9. Chi tiết cơ sở dữ liệu ......................................................................... 47
CHƯƠNG 3. XÂY DỰNG CHƯƠNG TRÌNH ................................................. 50
3.1. Giới thiệu chương trình ........................................................................... 50
3.2. Một số giao diện chính ............................................................................ 50
3.2.1. Giao diện đăng nhập hệ thống. .......................................................... 50
3.2.2. Giao diện trang chủ ........................................................................... 52
3.2.3. Giao diện trang cài đặt hệ thống. ....................................................... 52
3.2.4. Giao diện trang quản lý khách hàng................................................... 54
3.2.5. Giao diện trang Nhà cung cấp ........................................................... 55
3.2.6. Giao diện trang Hàng hóa .................................................................. 57
3.2.7. Giao diện trang đơn hàng .................................................................. 59
3.2.8. Giao diện trang nhập kho .................................................................. 61
KẾT LUẬN ...................................................................................................... 64
TÀI LIỆU THAM KHẢO ................................................................................. 65

iv



DANH MỤC HÌNH ẢNH
Hình 1.1: Minh họa mô hình MVC ......................................................................5
Hình 1.2: Cấu trúc CodeIgniter ............................................................................5
Hình 1.3: Sơ đồ thể hiện dòng chảy dữ liệu trong CodeIgniter .............................6
Hình 2.1: Tác nhân hệ thống .............................................................................. 21
Hình 2.2: Usecase tổng quan ............................................................................. 22
Hình 2.3: Usecase quản lý hệ thống ................................................................... 24
Hình 2.4: Usecase quản lý khách hàng............................................................... 24
Hình 2.5: Usecase quản lý nhà cung cấp ............................................................ 24
Hình 2.6: Usecase quản lý hàng hóa .................................................................. 25
Hình 2.7: Usecase quản lý đơn hàng ................................................................. 25
Hình 2.8: Usecase quản lý nhập hàng ............................................................... 26
Hình 2.9: Usecase tìm kiếm ............................................................................... 26
Hình 2.10: Usecase thống kê ............................................................................ 27
Hình 2.11: Biểu đồ hoạt động đăng nhập vào hệ thống. ..................................... 37
Hình 2.12: Biểu đồ hoạt động đăng xuất ra khỏi hệ thống. ................................. 37
Hình 2.13: Biểu đồ hoạt động đổi mật khẩu. ...................................................... 38
Hình 2.14: Biểu đồ hoạt động thêm thành viên vào hệ thống. ............................ 38
Hình 2.15: Biểu đồ hoạt động xóa thành viên. ................................................... 39
Hình 2.16: Biểu đồ hoạt động xem thông tin hàng hóa....................................... 39
Hình 2.17: Biểu đồ tuần tự đăng nhập................................................................ 40
Hình 2.18: Biểu đồ tuần tự thay đổi đổi thông tin .............................................. 40
Hình 2.19: Biểu đồ tuần tự thay đổi mật khẩu .................................................... 41
Hình 2.20: Biểu đồ tuần tự thêm mới hàng hóa .................................................. 41
Hình 2.21: Biểu đồ tuần tự cập nhật hàng hóa.................................................... 42
Hình 2.22: Biểu đồ tuần tự thêm mới khách hàng .............................................. 42
Hình 2.23: Biểu đồn tuần tự cập nhật khách hàng .............................................. 43
Hình 2.24: Biểu đồ tuần tự thêm mới nhà cung cấp ........................................... 43
Hình 2.25: Biểu đồ tuần tự cập nhật nhà cung cấp ............................................. 44

Hình 2.26: Biểu đồ tuần tự thêm người dùng đăng nhập .................................... 44

v


Hình 2.27: Biểu đồ tuần tự phiếu nhập kho. ....................................................... 45
Hình 2.28: Biểu đồ tuần tự tìm kiếm .................................................................. 45
Hình 2.29: Biểu đồ tuần tự thống kê. ................................................................. 46
Hình 2.30: Biểu đồ lớp ...................................................................................... 46
Hình 3.1: Giao diện đăng nhập .......................................................................... 50
Hình 3.2: Giao diện trang trủ ............................................................................. 52
Hình 3.3: Giao diện trang cài đặt hệ thống. ........................................................ 53
Hình 3.4: Thiết lập các chức năng và nhóm chức năng cho hệ thống. ................ 53
Hình 3.5: Giao diện trang quản lý khách hàng. .................................................. 54
Hình 3.6: Giao diện trang thêm mới vào hệ thống.............................................. 55
Hình 3.7: Giao diện trang thêm nhà cung cấp. ................................................... 56
Hình 3.8: Giao diện trang quản lý nhà cung cấp................................................. 56
Hình 3.9: Giao diện trang chi tiết nhà cung cấp. ................................................ 57
Hình 3.10: Giao diện trang quản lý hàng hóa ..................................................... 57
Hình 3.11: Giao diện trang thêm hàng hóa. ........................................................ 58
Hình 3.12: Giao diện trang chi tiết hàng hóa. ..................................................... 58
Hình 3.13: Giao diện trang quản lý đơn hàng..................................................... 59
Hình 3.14: Giao diện trang thêm mới đơn hàng. ................................................ 60
Hình 3.15: Giao diện trang chi tiết đơn hàng ..................................................... 60
Hình 3.16: Danh sách phiếu nhập ...................................................................... 61
Hình 3.17: Giao diện trang tạo phiếu nhập. ........................................................ 62
Hình 3.18: Chi tiết phiếu phiếu nhập ................................................................. 63

vi



LỜI NÓI ĐẦU
Trên thế giới cũng như ở Việt Nam, CNTT có ảnh hưởng rất mạnh mẽ đến sự
phát triển của đất nước và thế giới. CNTT đang phát triển với tốc độ khá mạnh mẽ và
được ứng dụng rất rộng rãi trong tất cả các lĩnh vực, đặc biệt là trong công tác quản lý.
Nó đóng góp một phần rất lớn làm đơn giản hoá cũng như rút ngắn thời gian công sức
và nâng cao hiệu quả làm việc của các nhà quản lý.
Ở nước ta công tác quản lý bán hàng thực sự là một bài toán khó mà nhiều
doanh nghiệp gặp phải. Các thông tin liên quan đến nhân viên là rất nhiều và việc
lưu trữ các thông tin này là rất khó khăn khi phải thực hiện bằng tay. Có rất nhiều
hạn chế, nhiều thiếu sót dễ mất các giấy tờ liên quan… đặc biệt là thời gian làm
sẽ rất lâu và tốn công sức.
Xuất phát từ thực tế đó, em đã chọn đề tài “Xây dựng mần mềm quản lý
bán hàng cho công ty TNHH đầu tư thương mại Công Nghệ Mới”. Đây là
một đề tài không còn mới song nó vẫn chưa phổ biến trong quá trình quản lý bán
hàng. Vì vậy, em nghiên cứu đề tài này với hy vọng sẽ góp phần giúp cho công
việc quản lý bán hàng trở nên dễ dàng hơn.
Em xin chân thành cảm ơn cô giáo Ths.Dương Mai Thương, người đã
hướng dẫn và giúp đỡ em trong quá trình thực hiện đề tài.
Mặc dù đã rất cố gắng để hoàn thành công việc, xong do thời gian có hạn trong
việc thu thập thông tin thực tế, phân tích hệ thống thông tin, tập hợp tài liệu in ấn và
lập trình, do đó chương trình của em còn nhiều thiếu sót cần được bổ sung.
Em rất mong được sự góp ý và chỉ bảo chân thành của cô giáo hướng dẫn
cùng toàn thể các thầy cô trong khoa để đề tài của em được hoàn thiện tốt hơn.
Em xin chân thành cảm ơn!
Thái nguyên, tháng 04 năm 2017
Sinh viên thực hiện
Phùng Xuân Bách

1



CHƯƠNG 1. CƠ SỞ LÝ THUYẾT
1.1. Giới thiệu
1.1.1. Tổng quan
CodeIgniter là một nền tảng ứng dụng web nguồn mở được viết bằng
ngôn ngữ PHP bởi Rick Ellis (CEO của EllisLab, Inc). Phiên bản đầu tiên được
phát hành ngày 28.02.2006, phiên bản hiện tại: 2.2.1 (phát hành ngày 1.2015). Ý
tưởng xây dựng CodeIgniter được dựa trên Ruby on Rails, một nền tảng ứng
dụng web được viết bằng ngôn ngữ Ruby. Hiện tại, CodeIgniter đang được phát
triển bởi ExpressionEngine Development Team thuộc EllisLab, Inc.
1.1.2. Những điểm nổi bật
Được thiết kế theo mô hình Model-View-Controller: Mô hình MVC giúp
tách thành phần hiển thị giao diện (presentation) và xử lý (business logic) của
một phần mềm thành những thành phần độc lập, từ đó giúp cho việc thiết kế, xử
lý và bảo trì mã nguồn dễ dàng, đồng thời tăng khả năng mở rộng của phần mềm.
CodeIgniter vận dụng mô hình này trong thiết kế, giúp tách biệt các tập tin giao
diện với các tập tin xử lý dữ liệu, nâng cao khả năng quản lý và dễ bảo trì.
Nhỏ gọn: Gói cài đặt chỉ 404KB (không bao gồm phần User Guide). So
với các PHP framework khác như CakePHP (1.3MB), Symfony (5.08MB) hay
Zend Framework (5.66MB)kích thước của CodeIgniter giúp giảm thiểu đ|ng
kể không gian lưu trữ.
Tốc độ nhanh: CodeIgniter được đánh giá là PHP framework có tốc độ
nhanh nhất hiện nay. Bằng cơ chế lưu nội dung vào bộ đệm (cache), kiểm tra bộ
đệm trước khi tiến hành thực hiện yêu cầu, CodeIgniter giảm số lần truy cập và
xử lý dữ liệu, từ đó tối ưu hóa tốc độ tải trang.
Miễn phí: CodeIgniter được phát hành dưới giấy phép Apache/BSD mở
rộng, cho phép người dùng tự do thay đổi, phát triển và phân phối mã nguồn.
Hỗ trợ Search Engine Optimization: Cấu trúc URL của CodeIgniter rất
thân thiện với các robot tìm kiếm.

Hệ thống thư viện phong phú: CodeIgniter cung cấp các thư viện phục vụ
cho những tác vụ thường gặp nhất trong lập trình web, chẳng hạn như truy cập cơ

2


sở dữ liệu, gửi email, kiểm tra dữ liệu, quản lý session, xử lý ảnhđến những
chức năng nâng cao như XML-RPC, mã hóa, bảo mật
Bảo mật hệ thống: Cơ chế kiểm tra dữ liệu chặt chẽ, ngăn ngừa XSS và
SQL Injection của CodeIgniter giúp giảm thiểu các nguy cơ bảo mật cho hệ
thống.
1.1.3. Những điểm hạn chế
Chưa hỗ trợ Object-Relational Mapping: Object Relational Mapping
(ORM) là một kỹ thuật lập trình, trong đó các bảng của cơ sở dữ liệu được ánh xạ
thành các đối tượng trong chương trình. Kỹ thuật này giúp cho việc thực hiện các
thao tác trong cơ sở dữ liệu (Create Read Update Delate - CRUD) dễ dàng, mã
nguồn ngắn gọn hơn. Hiện tại, CodeIgniter vẫn chưa hỗ trợ ORM.
Chưa hỗ trợ AJAX: AJAX (Asynchronous JavaScript and XML) đã trở
thành một phần không thể thiếu trong bất kỳ ứng dụng Web 2.0 nào. AJAX giúp
nâng cao tính tương tác giữa người dùng và hệ thống, giúp cho người dùng có
cảm giác như đang sử dụng ứng dụng desktop vì các thao tác đều diễn ra "tức
thời". Hiện tại, CodeIgniter vẫn chưa có thư viện dựng sẵn nào để hỗ trợ xây
dựng ứng dụng AJAX. Lập trình viên phải sử dụng

thư viện bên ngoài, như

jQuery, Script.aculo.us, Prototype hay Mootools
Chưa hỗ trợ một số module thông dụng: So sánh với framework khác,
CodeIgniter không có các module thực thi một số tác vụ thường gặp trong quá
trình xây dựng ứng dụng web như Chứng thực người dùng (User Authorization),

Trình phân tích RSS (RSS Parser) hay Trình xử lý PDF
Chưa hỗ trợ Event-Driven Programming: Event-Driven Programming
(EDP) là một nguyên lý lập trình, trong đó các luồng xử lý của hệ thống sẽ dựa
vào các sự kiện, chẳng hạn như click chuột, gõ bàn phímĐấy không phải là
một khuyết điểm to lớn của CodeIgniter vì hiện tại, chỉ có một số ít framework
hỗ trợ EDP, bao gồm Prado, QPHP và Yii.
1.1.4. Cài đặt
Yêu cầu hệ thống: CodeIgniter có thể hoạt động trên nhiều hệ điều hành
và server, yêu cầu có cài đặt PHP phiên bản 4.x hoặc cao hơn; hệ quản trị cơ sở

3


dữ liệu: MySQL (4.1+), MySQLi, Mircrosoft SQL Server, Postgres, Oracle,
SQLite, và ODBC.
Hướng dẫn cài đặt:
1. Download bộ nguồn CodeIgniter tại website />phiên bản hiện tại: 2.2.1.
2. Mở tập tin application/config/config.php bằng một chương trình soạn
thảo, thay đổi giá trị $config['base_url']. Đây là đường dẫn tuyệt đối đến thư mục
CodeIgniter trên server.
3. Nếu ứng dụng có tương tác với cơ sở dữ liệu, thiết lập các giá trị cần
thiết trong tập tin application/config/database.php.
4. Upload tất cả thư mục và tập tin của CodeIgniter lên server.
Để nâng cao tính bảo mật hệ thống, người dùng có thể đổi tên thư mục
system của CodeIgniter. Sau khi đổi tên, người dùng phải thay đổi giá trị biến
$system_folder trong tập tin index.php.
1.2. Tìm hiểu
1.2.1. Mô hình Model-View-Controller
Model-View-Control (MVC) là một kiến trúc phần mềm, hiện đang được
xem là một mẫu thiết kế trong công nghệ phần mềm. Mô hình MVC tách biệt

phần xử lý dữ liệu ra khỏi phần giao diện, cho phép phát triển, kiểm tra và bảo trì
các thành phần một cách độc lập.

4


Hình 1.1: Minh họa mô hình MVC
Theo đó:
- Model thể hiện các cấu trúc dữ liệu. Các lớp thuộc thành phần Model
thường thực hiện các tác vụ như truy vấn, thêm, xóa, cập nhật dữ liệu. Khi dữ
liệu trong Model thay đổi, thành phần View sẽ được cập nhật lại.
- View là thành phần thể hiện dữ liệu trong Model thành các giao diện
tương tác với người sử dụng. Một Model có thể có nhiều View tùy thuộc vào các
mục đích khác nhau.
- Controller đóng vai trò trung gian giữa Model và View. Thông tin người
dùng từ View được gửi cho Controller xử lý, sau đó Controller tương tác với
Model để lấy dữ liệu được yêu cầu, sau cùng Controller trả dữ liệu này về cho
View.
Mô hình MVC thường được sử dụng trong các ứng dụng web, vì thành
phần View (mã HTML/XHTML) được sinh ra từ các ngôn ngữ lập trình web.
Thành phần Controller sẽ nhận các dữ liệu GET/POST, xử lý những dữ liệu này,
sau đó chuyển sang Model xử lý.
Model sẽ trả dữ liệu về phía Controller, sau đó Controller sinh mã
HTML/XHTML để thể hiện trên View.
1.2.2. Cấu trúc CodeIgniter

Hình 1.2: Cấu trúc CodeIgniter
Tập tin index.php được xem như controller đầu vào, tiếp nhận các yêu cầu
từ phía client và chuyển các yêu cầu này cho hệ thống xử lý.
Thư mục system bao gồm phần lõi của CodeIgniter. Chúng bao gồm các

thư viện xây dựng sẵn, các tập tin ngôn ngữ, ghi chú về hệ thống. Trong số đó,
các thư mục sau khá quan trọng:
Thư mục application: Dành cho lập trình viên, các tập tin được lập trình
5


cho ứng dụng sẽ lưu trong thư mục này
 Thư mục config: Chứa các tập tin cấu hình hệ thống.
 Thư mục controllers: chứa các lớp controller.
 Thư mục errors: chứa các tập tin lỗi.
 Thư mục helpers: chứa các hàm tiện ích do người dùng định nghĩa.
 Thư mục hooks: chứa các tập tin để mở rộng mã nguồn CodeIgniter.
 Thư mục language: chứa các tập tin ngôn ngữ.
 Thư mục libraries: chứa các thư viện cho người dùng dùng định nghĩa.
 Thư mục models: chứa các lớp model.
 Thư mục views: chứa các lớp view.
Ta cũng có thể đổi tên của thư mục application thành tên tùy ý. Sau khi
đổi tên, cần thiết lập tên mới cho biến $application_folder trong tập tin
index.php. Ngoài ra, ta cũng có thể tạo nhiều ứng dụng trong cùng một bộ cài đặt
CodeIgniter bằng cách tạo ra các thư mục con bên trong system/application. Các
thư mục này có cùng cấu trúc giống như thư mục application gốc.
1.2.3. Dòng chảy dữ liệu trong CodeIgniter

Hình 1.3: Sơ đồ thể hiện dòng chảy dữ liệu trong CodeIgniter
1. Tập tin index.php đóng vai trò làm controller đầu vào, thiết lập các tài
nguyên cần thiết cho hệ thống.
2. Routing: Quá trình điều hướng giúp x|c định các yêu cầu và hướng xử
lý đối với chúng.
3. Caching: Nếu dữ liệu được yêu cầu đã được lưu trong bộ đệm,
CodeIgniter sẽ trả dữ liệu trong bộ đệm về phía client. Quá trình xử lý kết thúc.

4. Security: Dữ liệu trước khi được chuyển đến các Controller sẽ được lọc

6


để phòng chống XXS hoặc SQL Injection.
5. Application Controller: Controller xử lý dữ liệu nhận được bằng cách
gọi đến các Models, Libraries, Helpers, Pluginscó liên quan.
6. View: Dữ liệu được chuyển qua View để hiển thị cho người dùng. Nếu
chức năng caching được bật, dữ liệu sẽ được lưu trong cache cho những lần yêu
cầu tiếp theo.
Trong thực tế, đôi khi ta cần xen lẫn bước trong sơ đồ trên. Chẳng hạn,
trước khi một controller được gọi, ta có thể muốn lưu log xuống tập tin trong hệ
thống. CodeIgniter sử dụng cơ chế hook cho phép ta thực hiện việc này.
1.2.4. CodeIgniter URL
Theo mặc định, cấu trúc URL của CodeIgniter được thiết kế dựa vào các
segment thay cho kiểu query truyền thống. Cách tiếp cận này giúp URL trở nên
ngắn gọn, có ý nghĩa, dễ ghi nhớ và thân thiện với các bộ máy tìm kiếm. Một
URL trong CodeIgniter có dạng:
domain.com/index.php/controller/method/param/
Trong đó:
 Segment controller là tên của lớp controller được gọi.
 Segment method là tên của phương thức trong lớp controller ở trên.
 Segment param là các đối số của phương thức đó.
Như vậy, URI domain.com/index.php/product/view/1 sẽ mang ý nghĩa:
Gọi đến phương thức view() thuộc lớp Product với đối số truyền vào bằng 1.
Định tuyến URI (URI Routing)
Trong thực tế, URI domain.com/index.php/product/view/1 lại không thân
thiện với các bộ máy tìm kiếm bằng URI
domain.com/index.php/product/view/appple-ipad-1. CodeIgniter cho phép lập

trình viên có thể thay đổi cơ chế xử lý URL mặc định thông qua chức năng Định
hướng

URI

bằng

cách

thiết

lập

các

quy

luật

trong

tập

tin

application/config/routes.php. Tập tin này chứa mảng $route, với khóa là URI mới và
giá trị l{ URI cũ. Các quy luật được đọc theo thứ tự từ trên xuống, quy luật trước có
độ ưu tiên cao hơn quy luật sau. CodeIgniter cho phép sử dụng các ký tự đại diện

7



(wildcard) để thay thế. CodeIgniter đã quy định sẵn hai ký tự đại diện:
 :num tương ứng với các giá trị số.
 :any tương ứng với bất kỳ giá trị nào.
Ví dụ:
$route['product/view/(:num)'] = "product/view/$1";
Ý nghĩa: Gọi đến phương thức view() trong lớp Product với tham số
truyền vào là giá trị kiểu số.
$route['product/:any'] = "product/find_product";
Ý nghĩa: Tất cả các yêu cầu bắt đầu bằng product sẽ gọi đến hàm
find_product() của lớp Product.
Ta cũng có thể sử dụng biểu thức chính quy (Regular Expression) để thiết
lập các quy luật. Chẳng hạn:
$route['product/([a-z]+)/(\d+)'] = "$1/id_$2";
Thêm hậu tố vào URL
Các bộ máy tìm kiếm có xu hướng thân thiện hơn với các tập tin HTML.
Bằng cách thay đổi giá trị biến $config['url_suffix'] trong tập tin
system/application/config/config.php, ta có thể thêm hậu tố HTML hay bất cứ
hậu tố nào khác vào cho URL.
1.2.5. Model
Model là những lớp được xây dựng nhằm thực hiện việc trao đổi thông tin
với cơ sở dữ liệu. Một lớp Model có thể thực hiện các tác vụ truy vấn, thêm, xóa,
cập nhật dữ liệu. Trong CodeIgniter, việc khai báo các lớp model dành cho một
thực thể nào đó không cần thiết, vì trong controller của thực thể đó, ta có thể gọi
đến thư viện database để thực hiện các thao tác với cơ sở dữ liệu. Tuy nhiên, để
tiện cho việc quản lý, xây dựng lớp model cho một thực thể được khuyến khích.
Một lớp model chuẩn trong CodeIgniter có cấu trúc như sau:
class Example_model extends Model {
/**

* Hàm tạo
*/

8


function __contruct()
{
parrent::__contruct();
}

/**
* Mô tả hàm
* @param kiểu dữ liệu $param mô tả biến
*/
function exampleFunction($param)
{
// Do something here
}}
Khi khai báo một lớp model, ta cần tuân theo một số quy tắc:
 Tên lớp được viết hoa chữ đầu tiên, phần còn lại viết thường. Ví dụ:
User_model, Blog_model, Article_model
 Tên tập tin được đặt như tên lớp, và được đặt trong thư mục
application/models/. Các thư mục có thể được lưu lồng vào nhau để thuận tiện
cho việc quản lý. Vídụ :
application/models/user_model.php,
application/models/front_end/blog_model.php,
application/models/back_end/article_model.php
 Bắt buộc phải kế thừa từ lớp Model. Trong hàm tạo của lớp con, phải
gọi đến hàm tạo của lớp cha.

Để sử dụng model trong controller, ta sử dụng đoạn mã sau:
$this->load->model('model_name');
Trong đó, model_name là tên của lớp model. Nếu lớp model được lưu trong
một thư mục, ta cần ghi rõ đường dẫn đến thư mục đó. Ví dụ lớp Blog_model được
lưu trong thư mục application/models/front_end/blog_model.php. Để sử dụng lớp
này, ta sử dụng đoạn mã sau:

9


$this->load->model('front_end/blog_model');
Sau khi load lớp model, ta có thể sử dụng lớp này trong chương trình bằng
cách gọi
$this->model_name->method();
Để gán một tên khác cho lớp model khi sử dụng trong chương trình, ta có
thể truyền vào tham số thứ hai như sau:
$this->load->model('model_name', 'ModelName');
Khi đó, để sử dụng các phương thức của lớp model, ta gọi:
$this->ModelName->method();
1.2.6. View
View là những tập tin HTML được xây dựng nhằm thể hiện dữ liệu trong
model thành các giao diện tương tác với người dùng. View có thể là một trang
web hoàn chỉnh, hay chỉ là một phần của trang web (header, footer, sidebar).
Nội dung của tập tin view, ngoài mã HTML còn có thể chứa mã PHP. View
không bao giờ được gọi trực tiếp mà phải thông qua controller.
Để sử dụng view trong controller, ta sử dụng đoạn mã sau:
$this->load->view('view_name', $data);
Trong đó, view_name là tên của view, $data chứa các dữ liệu sẽ được hiển
thị trong view. Cũng giống như model, ta có thể lưu view trong các thư mục để
tiện cho việc quản lý. Khi sử dụng, chỉ cần khai báo đường dẫn tương đối đến thư

mục chứa view. Ví dụ tập tin header.tpl.php được lưu trong thư mục
application/views/front_end. Để hiển thị view này, ta sử dụng đoạn mã sau:
$this->load->view('front_end/header.tpl');
CodeIgniter cho phép sử dụng nhiều view trong cùng một phương thức
của controller.
Dữ liệu trong các view sẽ được kết hợp lại với nhau. Ví dụ:
class Example extends Controller {
function showExample()
{
// Loading multiple views

10


$this->load->view('header.tpl');
$this->load->view('content.tpl'); $this->load->view('sidebar.tpl');
$this->load->view('footer.tpl');
}
}
Để hiển thị dữ liệu trong model ra view, ta có thể truyền một mảng hoặc
đối tượng làm đối số thứ hai khi load view. Ví dụ:
$data = array(
'name' => 'Maxwell Smart',
'email' => '',
'age'

=> '33'

);
$this->load->view('employee_detail', $data);

Hoặc
$objEmployee = new Employee();
$this->load->view('employee_detail', $objEmployee);
Khi đó, các khóa của mảng hoặc các thuộc tính của đối tượng sẽ được
chuyển thành các biến để sử dụng trong tập tin view. Dưới đây là nội dung mẫu
của tập tin employee_detail.php:

Name: <?php echo $name ?>


Email: <?php echo $email ?>


Age: <?php echo $age ?>


Ta cũng có thể sử dụng các cấu trúc điều khiển (if, else, switchcase),
lặp (for, while, dowhile)bên trong view để hiển thị dữ liệu. Ví dụ sau sẽ
hiển thị danh sách các nhân viên:
// Employee Controller
$data['employeeList'] = $this->EmployeeModel->getAllEmployee();
$this->load->view('employee_list', $data);
Tập tin employee_list.php
<ol>

11


foreach( $employeeList as $objEmployee ) :
?>
<li>

Employee ID: <?php $objEmployee->employee_id ?>


Full-name: <?php $objEmployee->full_name ?>


D.O.B: <?php $objEmployee->dob ?>


Email: <?php $objEmployee->email ?>


</li>

endforeach;
?>
</ol>
CodeIgniter còn cho phép lập trình viên có thể lấy về nội dung của view
thay vì xuất trực tiếp trình duyệt, bằng cách truyền true làm đối số thứ ba khi tải
view.
$string = $this->load->view('myfile', '', true);
1.2.7. Controller
Controller là những lớp đóng vai trò trung gian giữa view và model.
Controller nhận các yêu cầu từ phía người dùng, kiểm tra chúng trước khi chuyển
qua cho model. Sau khi model xử lý yêu cầu và trả dữ liệu về, controller chuyển
sang view để hiển thị dữ liệu cho người dùng. Trong CodeIgniter, các lớp
controller được gán vào segment thứ nhất trong URI.
Một lớp controller chuẩn trong CodeIgniter có mẫu:
class Example extends Controller {
/**
* Hàm tạo
*/
function __contruct()
{
parrent::__contruct();

12


}
/**
* Mô tả hàm
* @param kiểu dữ liệu $param mô tả biến
*/

function method($param)
{
// Do something here
}
Khi khai báo một lớp controller, ta cần tuân theo một số quy tắc:
 Tên lớp được viết hoa chữ đầu tiên, phần còn lại viết thường. Ví dụ:
User, Blog, Article
 Tên tập tin được đặt như tên lớp, và được đặt trong thư mục
application/controllers/. Các thư mục có thể được lưu lồng v{o nhau để thuận
tiện cho việc quản lý. Ví dụ: application/controllers/user.php,
application/controllers/front_end/blog.php,
application/controllers/back_end/article.php
 Bắt buộc phải kế thừa từ lớp Controller. Trong hàm tạo của lớp con,
phải gọi đến hàm tạo của lớp cha.
Segment thứ hai trong URI sẽ gọi đến phương thức tương ứng trong
controller. Các giá trị của các segment còn lại trong URI chính là các tham số
truyền vào cho phương thứ này. CodeIgniter quy định một phương thức đặc biệt,
index(). Phương thức này có thể xem như đầu vào của controller, sẽ được tự
động gọi trong trường hợp segment thứ hai của URI bị bỏ trống.
Ví dụ:
class Blog extends Controller {
/**
* Hàm tạo
*/
function __contruct()

13


{

parrent::__contruct();
}

/**
* Hàm đầu vào
*/
function index()
{
echo 'Welcome to my blog';
}

/**
* Hiển thị nội dung bài viết
* @param int $entryId ID của bài viết
*/
function view($entryId)
{
// Code hiển thị nội dung bài viết
}
}
Khi truy xuất đến URI domain.com/index.php/blog, phương thức index()
được gọi, ta sẽ thấy chuỗi Welcome to my blog. Tiếp theo, truy xuất đến URI
domain.com/index.php/blog/view/1 sẽ hiển thị nội dung của bài viết có ID bằng
1.
Ngoài ra, CodeIgniter cho phép lập trình thay đổi cơ chế gọi phương thức
thông qua segment thứ hai bằng hàm _remap(). Hàm này sẽ được quyết định cụ
thể những phương thức nào sẽ được gọi tương ứng với từng segment.
function _remap($method)
{


14


if ($method == 'foo')
{
$this->bar();
}
else
{
$this->default_method();
}
}
Lưu ý: các phương thức private trong controller được bắt đầu bằng ký tự
gạch dưới (_), ví dụ: _remap(), _my_private_method()Các hàm này không thể
được gọi bằng egment thứ hai trong URI.

15


CHƯƠNG 2. KHẢO SÁT, PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
2.1. Khảo sát hệ thống
2.1.1. Giới thiệu
Tên công ty: Công ty TNHH đầu tư thương mại Công Nghệ Mới.
Địa chỉ: 179, Cách Mạng Tháng 8, Tổ 22, Phường Trưng Vương, Thành
Phố Thái Nguyên, Thái Nguyên
Điện thoại: 091 351 68 89

Fax: 02802 564678

Ngành Kinh doanh : Thiết bị viễn thông.

Công ty TNHH đầu tư thương mại Công Nghệ Mới được ra đời ngày
12/05/2008 tại thành phố Thái Nguyên.
Sau nhiều năm kinh doanh trong lĩnh vực điện thoại di động, Công ty có
đuợc mối quan hệ tốt với các đối tác là các nhà phân phối và các hãng danh tiếng
như Mobiado, Vertu, Nokia, Samsung, Motorola, Porsche Design, Sony
Ericsson, Samsung, HTC, LG, Acer, JBL...
Hiện trạng quản lý kinh doanh ở công ty
Hiện nay, Ngành quản lý kinh doanh nói chung và Công ty TNHH đầu tư
thương mại Công Nghệ Mới nói riêng, vấn đề áp dụng công nghệ tin học đang
được đặt lên hàng đầu nhằm hoàn chỉnh hoá hệ thống giao dịch và quản lý hàng
của công ty, nhằm tăng khả năng hoạt động, giảm bớt số lượng nhân viên quản
lý, đảm bảo độ chính xác và khả năng bảo mật, an toàn dữ liệu cao. Vì những lý
do đó cho nên việc thay thế và nâng cấp hệ thống quản lý kinh doanh mới đang là
vấn đề cấp bách cho ngành kinh doanh.
Qua tìm hiểu phương thức hoạt động của hệ thống quản lý ở trên, ta thấy
công việc hàng ngày của doanh nghiệp thông qua nhiều giai đoạn, khối lượng
công việc lớn xảy ra liên tục, đặc biệt là công việc nhập và xuất vật tư. Dữ liệu
luôn biến động và đòi hỏi tính chính xác cao.
Để quản lý tốt cần phải sử dụng nhiều biểu mẫu, sổ sách, việc lưu lại các
hồ sơ được lặp đi lặp lại và kiểm tra qua nhiều khâu sẽ tốn thời gian và nhân lực,
nhưng cũng khó tránh khỏi sai sót dữ liệu hoặc không hoàn toàn chính xác. Nếu
có sai xót thì việc tìm kiếm dữ liệu để khắc phục cũng sẽ rất khó khăn. Nếu

16


không giải quyết kịp thời, có thể dẫn đến việc nhầm lẫn dữ liệu, gây mất tài sản
chung cho siêu thị, cũng như không phục vụ tốt công tác chỉ đạo của quản lý
công ty.
Do vậy, việc đưa máy vi tính vào quản lý vật tư trong doanh nghiệp xây

dựng là nhu cầu cấp thiết nhằm khắc phục những nhược điểm nói trên của
phương pháp xử lý bằng tay, đồng thời nó có thể giúp việc xử lý chính xác và
nhanh gọn. Tuy nhiên, nếu chỉ sử dụng các máy tính đơn thì sẽ dẫn đến khuyết
điểm dữ liệu không được nhất quán, Do vậy cần đưa mạng máy tính vào để khắc
phục các yếu điểm nói trên.
Hệ thống trên nhìn chung có nhiều ưu điểm về tính đồng nhất, chạy nhanh,
kích thước dữ liệu nhỏ và không đòi hỏi cấu hình của máy tính cao, cái mà những
năm trước đây còn là vấn đề khó khăn cho ngành kinh tế. Nhưng hiện nay việc đầu tư
cơ sở vật chất cho hệ thống thông tin quản lý kinh doanh không còn là vấn đề khó
khăn hàng đầu nữa, mà vấn đề đặt ra là tính chính xác, nhanh, an toàn và độ bảo mật
cũng như khả năng quản lý toàn diện để tăng tính cạnh tranh và giảm bớt thời gian
kinh doanh đang là vấn đề mới cho mọi ngành quản lý.
Tuy có những tính năng và ưu điểm như đã trình bày ở trên nhưng nó
cũng còn nhiều hạn chế như chạy chậm khi khối lượng dữ liệu lớn, khả năng
quản lý khối lượng dữ liệu còn hạn chế, khả năng bảo mật chưa cao, giao diện
chưa thân thiện với người sử dụng.
Qua quá trình khảo sát và tìm hiểu thực tế quy trình quản lý kinh doanh ở
Công ty, tôi nắm được một số hiện trạng của Công ty như sau:
Công ty TNHH đầu tư thương mại Công Nghệ Mới chuyên kinh doanh
điện thoại di động, hàng công nghệ, linh kiện - phụ kiện điện thoại di động, sửa
chữa điện thoại di động.
2.1.2. Một số biểu mẫu.
a.Nhập kho
Để nhập vật tư, doanh nghiệp phải có một bộ phận nghiên cứu thị trường,
phải nắm bắt được nhu cầu thị hiếu của khách hàng, chất lượng và giá cả các loại

17


hàng hóa để từ đó đặt quan hệ mua hoàng hóa với nhà cung cấp những mặt hàng

mà doanh nghiệp cần.
Nguồn hàng được nhập thông qua đơn đặt hàng, đó là hợp đồng mua bán
giữa doanh nghiệp với nhà cung cấp
Các mặt hàng nhập về sẽ được kiểm tra xem có đúng số lượng, chất lượng
rồi phân loại vật tư và cho nhập vào kho. Các báo cáo liên quan đến việc nhập
vật tư được thể hiện qua phiếu nhập theo mẫu sau:

Công ty TNHH TM&ĐT Công Nghệ Mới
Địa chỉ: 179, Cách Mạng Tháng 8, Tổ 22, Phường Trưng Vương, Thành Phố
Thái Nguyên, Thái Nguyên
Điện thoại: 091 351 68 89

Fax: 02802 564678
PHIẾU NHẬP KHO
PN000153

Nhà cung cấp: Viettel
Ngày nhập: 15/10/2016 15:35:01
Người nhập: Hoàng Thị Anh
STT

Mã hàng

Tên hàng hóa

Đơn giá

SL

Thành tiền


Tổng tiền hàng:

0

Tiền thuế:

0

Tổng thanh toán:

0

Đã thanh toán:

0

Còn nợ:

0

Ghi chú: Đã kiểm tra đủ hàng.

18


Phiếu nhập kho Cho biết các thông tin liên quan đến phiếu nhập kho: thời
gian nhập, nhà cung cấp, các loại hàng hóa nhập nhập…

19



×