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

Bài tập lớn Kỹ thuật lập trình Phần mềm mô phỏng siêu thi

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 (2.07 MB, 28 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA KHOA HỌC - KỸ THUẬT MÁY TÍNH

Kỹ thuật lập trình (CO1011)
Nhóm: 05 - Lớp L01 - Báo cáo Bài tập lớn

Thiết kế hệ thống bán hàng và
Mô phỏng siêu thị với C++

GVHD:
SV thực hiện:

Lê Thành Sách
Nguyễn Đức Dũng
Trần Công Lực – 1511917
Lê Tân Ri – 1512772
Văn Tiến Đức – 1510824
Ngyễn Thành Phương – 1512591
Nguyễn Trần Lê Minh – 1512003
Trần Thị Trúc Phương – 1512606

Tp. Hồ Chí Minh, Tháng 06/2016


Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học và Kỹ Thuật Máy Tính

Mục lục
1 Lập
1.1


1.2
1.3

nhóm và tiêu chí
Các thành viên . .
Mục tiêu . . . . . .
Tiêu chí đánh giá .

đánh giá
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2 Kế hoạch thực hiện
2.1 Tiến độ công việc . . . . .
2.2 Phân công nghiệm vụ . .
2.2.1 Admin menu . . .
2.2.2 Manager menu . .
2.2.3 Guest menu . . . .
2.2.4 Cơ sở dữ liệu chính
2.2.5 Bài báo cáo . . . .

3
3
3
3

.
.
.

.
.
.
.

4
4
4
4
5
5
5
5

3 Giải quyết bài toán
3.1 Phân tích vấn đề . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Thiết kế hệ thống và ý tưởng thực hiện . . . . . . . . . . . . . . . . . . . . . . .
3.3 Các công việc cần làm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5
5
6
7

4 Lưu đồ và mã giả
4.1 Lưu đồ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Mã giả . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9
9

11

5 Code chương trình

14

6 Thành quả làm việc

26

7 Kết luận

27

8 Tham khảo

27

.
.
.
.
.
.
.

.
.
.
.

.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.

.
.
.
.
.

.
.
.
.
.
.
.

Bài tập lớn môn Kỹ thuật lập trình - Niên khóa 2015-2016

.
.
.
.
.
.
.

.
.
.
.
.
.

.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.

.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.


.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.

.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

Trang 1/27


Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học và Kỹ Thuật Máy Tính

LỜI NÓI ĐẦU
Ngày nay, với sự bùng nổ của công nghệ thông tin. Mọi công việc đều được mã hóa trên máy
tính đễ dễ quản lý, đặc biệt là các hệ thống lớn. Họ cần một công cụ để quản lý, lưu trữ và xử
lí một cách khoa học.

Những cách thức thực hiện cổ xưa không còn tác dụng và tối ưu với thời đại hiện nay. Thay
vào đó con người đã tạo ra được các phần mềm để dễ dàng truy cập để quản lí, chỉnh sửa và
tìm kiếm thông tin. Dù là tiệm ăn, quán internet, cửa hàng tiện lợi, hệ thống ngân hàng hay hệ
thống siêu thị, . . . với quy mô vừa và nhỏ đều sử dụng công nghệ để công việc trở nên dễ dàng
hơn.
Với đề tài bài tập lớn môn kỹ thuật lập trình lần này. Chúng em lần đầu tiên được thực hiện
một dự án khá lớn và làm quen với công việc viết chương trình bằng ngôn ngữ C++, với lượng
kiến thức sử dụng trong đề tài khá lớn để giải quyết các vấn đề. Đó chính là thiết kế nên được
một hệ thống quản lý bán hàng online cơ bản cho một cửa hàng.
Với sự ứng dụng nhiều trong thực tế và để cũng cố kiến thức, đề tài này làm chúng em cảm
thấy hứng thú hơn với môn học. Chúng em chân thành cảm ơn các thầy đặc biệt là thầy Lê
Thành Sách và thầy Nguyễn Đức Dũng đã trực tiếp hướng dẫn, giải đáp những thắc mắc và
truyền kiến thức quý báu giúp chúng em thực hiện được bài tập lớn này.

Bài tập lớn môn Kỹ thuật lập trình - Niên khóa 2015-2016

Trang 2/27


Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học và Kỹ Thuật Máy Tính

1

Lập nhóm và tiêu chí đánh giá

1.1

Các thành viên
Họ và tên thành viên

Trần Công Lực
Lê Tân Ri
Văn Tiến Đức
Nguyễn Thành Phương
Nguyễn Trần Lê Minh
Trần Thị Trúc Phương

1.2

MSSV
1511917
1512772
1510824
1512591
1512003
1512606

Mục tiêu

- Hoàn thành tốt bài tập lớn với kết quả điểm giỏi
- Nắm được cách sử dụng phần mềm Visual Studio để viết code C++
- Tăng khả năng làm việc nhóm và giải quyết bài toán
- Nâng cao kỹ năng code và áp dụng kiến thức đã học vào thực tiễn

1.3

Tiêu chí đánh giá

Phương
4-Xuất sắc

diện

3-Tốt

Thái
độ làm
việc

Không bao giờ
công khai chỉ trích
các dự án hoặc
công việc của người
khác. Luôn có một
thái độ tích cực về
nhiệm vụ.

Hiếm khi công khai
chỉ trích các dự án
hoặc công việc của
người khác. Thường
có một thái độ tích
cực về nhiệm vụ.

Mức
độ
cống
hiến

Thường xuyên cung
cấp các ý tưởng hữu

ích khi tham gia
nhóm và thảo luận
trong lớp. Nỗ lực
đóng góp nhiều cho
nhóm.

Thường xuyên cung
cấp các ý tưởng hữu
ích khi tham gia
nhóm và thảo luận
trong lớp. Thành
viên có nhiều cố
gắng trong nhóm.

Trách
nhiệm

nhân

Sẵn sàng chấp nhận
và thực hiện tốt vai
trò cá nhân trong
nhóm

Chấp nhận và đáp
ứng vai trò cá nhân
trong nhóm

Bài tập lớn môn Kỹ thuật lập trình - Niên khóa 2015-2016


2-Bình thường
Thỉnh thoảng công
khai chỉ trích các
dự án hoặc công
việc của người
khác. Thường có
một thái độ tích
cực về nhiệm vụ.
Đôi khi cung cấp
các ý tưởng hữu ích
khi tham gia vào
nhóm và thảo luận
trong lớp. Thỏa
mãn những yêu cầu
tối thiểu của nhóm
đặt ra.
Góp phần vào việc
nhóm. Tuy nhiên,
thỉnh thoảng phải
thông qua nhắc
nhở.

1-Tệ
Thường công khai
chỉ trích các dự án
hoặc công việc của
người khác. Thường
có thái độ tiêu cực
về nhiệm vụ.
Hiếm khi cung cấp

các ý tưởng hữu ích
khi tham gia nhóm
và thảo luận trong
lớp. Thường từ chối
góp ý.
Thực hiện nhiệm
vụ được giao chỉ
khi phải nhắc nhở
nhiều lần.

Trang 3/27


Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học và Kỹ Thuật Máy Tính

Phương
4-Xuất sắc
diện

3-Tốt

2-Bình thường

1-Tệ
Không cố gắng
giải quyết vấn đề
hay giúp đỡ các
thành viên khác
giải quyết vấn đề.

Ỷ lại vào các thành
viên khác.
Hiếm khi thực
hiện đúng thời hạn
nhiệm vụ được
giao. Quá 5 lần
không có mặt đúng
giờ trong các buổi
họp nhóm và thảo
luận trên lớp

Giải
quyết
vấn đề

Tích cực tìm kiếm
và cho thấy các giải
pháp của vấn đề

Chọn lọc các giải
pháp được đề xuất
bởi các thành viên
khác

Không đề nghị hoặc
tinh chỉnh các giải
pháp, nhưng sẵn
sàng thử các giải
pháp được đề xuất
bởi các thành viên

khác.

Quản
lý thời
gian

Quản lý thời gian
tốt trong suốt quá
trình môn học, đảm
bảo mọi nhiệm vụ
được thực hiện
đúng thời gian
được giao. Thường
xuyên có mặt đúng
giờ trong các buổi
họp nhóm và thảo
luận trên lớp.

Thường quản lý
thời gian tốt trong
suốt quá trình môn
học, có thể trì hoãn
vài lần nhiệm vụ
được giao. Thường
xuyên có mặt đúng
giờ trong các buổi
họp nhóm và thảo
luận trên lớp.

Có xu hướng trì

hoãn, nhưng vẫn
bàn giao nhiệm
vụ đúng thời hạn.
Không có mặt đúng
giờ từ 3-5 lần trong
các buổi họp nhóm
và thảo luận trên
lớp

2

Kế hoạch thực hiện

2.1

Tiến độ công việc

Công việc
Phân tích yêu cầu đề bài, phác
họa thiết kế
Phân công nhiệm vụ cụ thể.
Giúp các thành viên hình dung
sơ lược công việc
Tham khảo các nguồn tài liệu.
Bắt đầu thực hiện công việc
được giao của từng thành viên
Chạy demo các đoạn code
Công tác chỉnh sửa và bổ sung
Công tác viết báo cáo và hoàn
thiện code lần cuối


2.2

Thời gian - Địa điểm - Phương thức

Thành viên

Tối 8-11h: 8/5/2016. Phòng tự học A19

Đầy đủ

Tối 8-11h: 9/5/2016. Phòng tự học A19

Đầy đủ

Tối 8-10h30: 2 4 6 Các ngày từ
11/5/2016-23/5/2016. Phòng tự học
A19
Tối 8-11h:25/5/2016. Quán nước AG4
Các tối từ 1/6 – 6/6/2016. Phương thức
trao đổi online
7/6-10/6/2016: Phương thức trao đổi
online

Đầy đủ
Đầy đủ
Đầy đủ
Đầy đủ

Phân công nghiệm vụ


2.2.1

Admin menu
Công việc:

Chịu trách nhiệm:

Thiết lập menu các chức năng cho Admin. Bao gồm khởi tạo và cấp phát quyền
cho tài khoản, xóa tài khoản, chỉnh sửa tài khoản, vô hiệu hóa tài khoản.
Văn Tiến Đức - Lê Tân Ri

Bài tập lớn môn Kỹ thuật lập trình - Niên khóa 2015-2016

Trang 4/27


Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học và Kỹ Thuật Máy Tính

2.2.2

Manager menu
Công việc:

Chịu trách nhiệm:

2.2.3

Guest menu

Công việc:

Chịu trách nhiệm:

2.2.4

Thiết lập menu chức năng cho khách hàng. Bao gồm tìm kiếm và xem thông tin
hàng hóa đang có trong kho, cập nhật, chỉnh sửa giỏ hàng và đặt mua hàng hóa.
Trần Công Lực - Nguyễn Trần Lê Minh

Cơ sở dữ liệu chính

Công việc:
Chịu trách nhiệm:

2.2.5

Thiết lập menu các chức năng cho nhân viên quản lý hàng hóa. Bao gồm nhập,
chỉnh sửa, tìm kiếm, xóa thông tin hàng hóa. Thống kê số lượng hàng hóa và
tổng giá trị tài sản có trong kho hàng.
Trần Công Lực - Trần Thị Trúc Phương

Thiết lập các hàm để tìm kiếm, chuyển đổi, lưu trữ cơ sở dữ liệu chính
Nguyễn Thành Phương

Bài báo cáo

- Công việc: Viết báo cáo. Vẽ sơ đồ khối (flow chart). Viết mã giả
- Sơ đồ khối và mã giả: Lê Tân Ri
- Viết báo cáo bằng word: Trần Thị Trúc Phương, Trần Công Lực, Lê Tân Ri

- Code lại bài báo cáo bằng Latex: Trần Công Lực
Trên đây là phân công chịu trách nhiệm chính từng phần của các thành viên trong nhóm,
tuy nhiên trong quá trình thực hiện bài tập vẫn có sự linh động giữa các phần giữa các
thành viên để đảm bảo hoàn thành tiến độ.

3

Giải quyết bài toán

3.1

Phân tích vấn đề

Thiết kế chương trình hệ thống quản lý hàng hóa online cơ bản cho một cửa hàng. Được
thiết kế với 3 loại người dùng trên hệ thống này: Bao gồm người quản trị, người quản lý cửa
hàng (Store Manager) và khách (người dùng không cần đăng nhập vào hệ thống). Tùy thuộc vào
loại người dùng mà chương trình sẽ cung cấp các chức năng khác nhau. Chương trình sẽ đọc/lưu
thông tin về các mặt hàng và thông tin người dùng từ cơ sở dữ liệu dưới file. Dưới đây là những
yêu cầu cơ bản:
1. Yêu cầu chung:
• Hiển thị được menu tùy chọn (Khách hàng - Quản trị viên - Nhân viên).
• Ứng với mỗi tài khoản sẽ hiển thị được danh sách menu có chức năng khác nhau

Bài tập lớn môn Kỹ thuật lập trình - Niên khóa 2015-2016

Trang 5/27


Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học và Kỹ Thuật Máy Tính


• Thực hiện được khả năng di chuyển giữa các menu một cách linh hoạt.
• Thực hiện được chức năng ứng dụng giúp người dùng tương tác và thực hiện tác vụ
2. Đối với quản trị viên và nhân viên:
• Hiện được cửa sổ đăng nhập cho Admin (Mật khẫu mã hóa dưới dạng "***".
• Yêu cầu nhập lại khi nhập sai mật khẩu
• Hiện được các menu chức năng của Admin
• Thực hiện đúng được việc tạo và cấp phát tài khoản, chỉnh sửa thông tin tài khoản,
xóa và vô hiệu hóa tài khoản.
3. Đối với nhân viên quản lý kho hàng:
• Sau khi được cấp phát tài khoản hoặc đăng nhập bằng tài khoản mặc định. Phải hiện
ra danh sách menu đúng với chức năng của nhân viên quản lý kho hàng
• Chạy dúng phần 1. Nhập thông tin hàng hóa. Có tùy chọn để quay lại màn hình
chính.
• Mã mặt hàng để phân biệt giữa các hàng hóa, nếu nhập bị trùng phải kiểm tra điều
kiên trùng mã mặt hàng vầ thông báo người dùng nhập lại.
• Chạy dúng phần 2. Chỉnh sửa thông tin hàng hóa.Có tùy chọn để quay lại màn hình
chính.
• Chạy dúng phần 3. Xóa hàng hóa. Có tùy chọn để quay lại màn hình chính.
• Chạy đúng phần 4.Thống kê số lượng hàng hóa và tải sản có trong kho. Có đặc tùy
chọn quay lại màn hình chính.
• Ở màn hình chính, có tùy chọn để quay lại màn hình đăng nhập.
4. Đối với khách hàng:
• Hiện ra được menu chức năng dành riêng cho khách hàng.
• Chạy đúng phần 1. Tìm kiếm thông tin hàng hóa, xem tất cả thông tin hàng hóa có
trong kho.
• Chạy đúng phần 2. Xem lại những mặt hàng đã chọn trong giỏ hàng. Chỉnh sửa, thêm
bớt và thay đổi số lượng mong muốn.
• Chạy đúng phần 3.Đến việc thanh toán giỏ hàng. Hiện ra tổng giá tiền phải trả với
đơn hàng đã chọn.

• Mỗi chứng năng có tùy chọn để quay lại màn hình chính của khách hàng.
• Có tùy chọn để quay lại màn mình ban đầu.

3.2

Thiết kế hệ thống và ý tưởng thực hiện

- Thiết lập 4 kiểu dữ liệu có cấu trúc, bao gồm account ,user, product và roles.
- Sử dụng vecto để chứa thông tin. Có 2 vecto được tạo đó là vecto accounts_list có kiểu
dữ liệu là account và vecto product_list có kiểu dữ liệu là product. Mỗi thông tin nhập
vào sẽ được phân loại và lưu trữ vào vecto tương ứng.
- Tạo nhiều hàm nhỏ thực hiện mỗi chứng năng riêng. Sau đó gọi lại và ghép theo trật tự
nhất định để tạo thành một hàm lớn hơn.
Bài tập lớn môn Kỹ thuật lập trình - Niên khóa 2015-2016

Trang 6/27


Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học và Kỹ Thuật Máy Tính

3.3

Các công việc cần làm

- Thực hiện vấn đề bằng cách tinh chế dần từng bước, thực hiện chi tiết hóa một giải pháp
bằng một chuỗi các hành động cho đến khi đạt được mô tả giải thuật tương tự với yêu cầu
của trường trình.
• Function 1: Thiết lập hàm khởi đầu chương trình, hiện ra menu cho người dùng tùy chọn
• Function 2: Xử lí tùy chọn menu của người dùng gồm Guest hay Staff hoặc là tùy chọn kết

thúc chương trình
• Function 3: Thiết lập hàm tạo tài khoản. Trong hàm này bao gồm các hàm con hỗ trợ
(Xóa màn hình và hiện ra tiêu đề của menu, khai báo 2 biến cục bộ kiểu account, roles
sau đó truy xuất các vùng tin và gọi các hàm thành phần được khởi tạo trước đó để nhập
và gán cho biến cục bộ.
Các hàm thành phần cin_username(accounts_list), cin_password(), cin_f ullname(),
cin_sex(), cin_ID() , cin_phone(), cin_role() lần lượt có chức năng là nhập tên tài
khoản, nhập password, nhập họ và tên, chọn giới tính, nhập chứng minh nhân dân, nhập
số điện thoại, chọn chức năng muốn cấp phát cho tài khoản.
• Function 4: Thiết lập hàm chỉnh sửa thông tin tài khoản. Phầm này bao gồm các hàm
con hỗ trợ (Hàm check_pos(user, accounts_list) xác định vị trí của tài khoản cần kiểm
tra trong accounts_list, hàm preview(accounts_list) xem lại tất cả thông tin tài khoảng
tại vị trí cần chỉnh sửa và hàm tùy chọn cin_choice()).
Ứng với mỗi lựa chọn xác định được thông tin nào cần chỉnh sửa. Truy xuất đến
thông tin đó tại vị trí tài khoản đã được xác định và gọi lại hàm nhập thông tin.
• Function 5: Thiết lập hàm xóa tài khoản delete_account(). Tương tự sử dụng lại hàm
check_pos(user, accounts_list) xác định vị trí tài khoản muốn xóa. Dùng tiếp hàm có sẵn
trong thư viện vector erase() để xóa tài khoảng tại vị trí cụ thể trong accounts_list.
• Function 6: Thiết lập hàm nhập thông tin hàng hóa create_product(vector < product >
&product_list). Trong hàm này bao gồm các hàm con hỗ trợ (clear_scr() Xóa
màn hình và hiện ra tiêu đề của menu, khai báo biến cục bộ có kiểu là product,
cin_N ameP roduct(), cin_CommodityCode(), cin_P roductCode(), cin_Company(),
cin_dayM anuf acture(),
cin_monthM anuf acture(),
cin_yearM anuf acture(),
cin_dayExpire(), cin_monthExpire(), cin_yearExpire(), cin_numberP roduct(),
cin_P rice().
Truy xuất đến các vùng tin thông qua biến cục bộ và gọi các hàm thành phần để
nhập thông tin hàng hóa. Sau khi nhập xong, gọi hàm cin_choice() để nhập tùy chọn và
đẩy thông tin vừa nhập vào vector product_list() .

• Function 7: Thiết lập hàm chỉnh sửa thông tin hàng hóa edit_product(vector <
product > &product_list). Trong hàm này bao gồm các hàm con hỗ trợ ( Hàm
preview_product_new() xuất tất cả thông tin hàng hóa có trong kho dưới dạng bảng,
hàm preview_product() xuất thông tin 1 hàng hóa dưới dạng danh sách.

Bài tập lớn môn Kỹ thuật lập trình - Niên khóa 2015-2016

Trang 7/27


Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học và Kỹ Thuật Máy Tính

Nhìn vào bảng danh sách hàng hóa, dùng hàm cin_choice_new() để tùy chọn
hàng hóa muốn chỉnh sửa. Ứng với mỗi hàng hóa, nhân viên được phép chọn 1 hoặc nhiều
trường để chỉnh sửa và gọi các hàm con hỗ trợ nhập dữ liệu đã nhắc đến ở F unction 6
• Function 8: Thiết lập hàm xóa hàng hóa delete_product(), ý tưởng thực hiện hàm này
tương tự như delete_account(). Sử dụng lại những hàm con hỗ trợ đã thực hiện.
• Function 9: Thiết lập hàm thống kê tổng số lượng hàng hóa và tổng giá trị tài sản hiện có
trong kho statistics_product(). Truy xuất đến các vùng tin giá mặt hàng P rice và vùng
tin số lượng hàng hóa của mỗi mặt hàng numberP roduct trong vector product_list() để
tính tổng giá trị tài sản hiện có trong kho.
• Function 10: Thiết lập các hàm dành cho khách hàng, bao gồm hàm tìm kiếm hàng hóa
f ind_product(), hàm xóa hàng hóa trong giỏ hàng delete_item(). Ngoài ra phải tạo thêm
một vector để chứa thông tin hàng hóa mà khách hàng đã chọn mua vector < product >
item_list, hàm cho khách hàng mua hàng hóa buy().
- Ngoài những hàm chính được nêu trên cần phải làm, trong trương trình còn có nhiều hàm
khác như hàm chuyển từ kiểu dữ liệu string sang int, hàm tô màu text, ... để chuẩn hóa
dòng nhập, mã hóa mật khẩu, lưu thông tin vào tệp, xử lý lỗi khi người dùng thực hiện
tác vụ...


Bài tập lớn môn Kỹ thuật lập trình - Niên khóa 2015-2016

Trang 8/27


Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học và Kỹ Thuật Máy Tính

4
4.1

Lưu đồ và mã giả
Lưu đồ

Bài tập lớn môn Kỹ thuật lập trình - Niên khóa 2015-2016

Trang 9/27


Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học và Kỹ Thuật Máy Tính

Bài tập lớn môn Kỹ thuật lập trình - Niên khóa 2015-2016

Trang 10/27


Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học và Kỹ Thuật Máy Tính


4.2

Mã giả

Dưới đây là mã giả cho những hàm chính trong chương trình, những hàm con chi tiết chỉ
nêu gọn chức năng của mỗi hàm.
//Hàm main
Khai báo kiểu struct account chứa thông tin về tài khoản.
Khai báo kiểu struc product chứa thông tin về hàng hoá.
Khởi tạo vector <account> accounts_list
Khởi tạo vector product_list
Gọi hàm read_account(accounts_list) và read_product(product_list)
// Đọc thông tin từ file account.txt và product.txt.
Tạo biến choice (Kiểu enum Choice) để lưu lựa chọn.
Vòng lặp vô tận:

Bài tập lớn môn Kỹ thuật lập trình - Niên khóa 2015-2016

Trang 11/27


Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học và Kỹ Thuật Máy Tính

If choice=one gọi hàm guest(product_list), đi đến khu vực dành cho khách hàng
If chocie=two:
Tạo biến struct có kiểu là users để lưu tên tài khoản và mật khẩu mà người
dùng nhập vào.
Kiểm tra xem tài khoản và mật khẩu mà người dùng nhập vào có trùng với tài

khoản nào lưu trong dữ liệu hay không, lặp lại việc nhập tài khoản và mật khẩu cho
đến khi tìm trùng khớp với một tài khoản được lưu trong dữ liệu.
Lấy thông tin về chức vụ của tài khoản (account.pos)
If account.pos=”sysadmin” Then gọi hàm sysadmin();
Đi đến khu dành cho admin quản lí tài khoản
If account.pos=”staff” Then gọi hàm staff();
Đi đến khu dành cho store manager quảng lí về hàng hoá.
Else Thông báo dòng nhập không hợp lệ, mời nhập lại.
Lặp lại chương trình cho đến khi choice=exit thì thoát khỏi vòng lặp.
Gọi hàm write_account(accounts_list); //Ghi dữ liệu ra file account.txt.
Gọi hàm write_product(product_list); //Ghi dữ liệu ra file product.txt.
//Kết thúc hàm main
//Hàm guest()
Khởi tạo vector item_list //Chứa đơn hàng
Gọi hàm guest_menu() //Hiển thị tùy chọn cho khách hàng
Choice choice;
//Khai báo biến choice kiểu Choice lưu lựa chọn
Vòng lặp vô tận:
If choice = one Then Gọi hàm find_product(); //Tìm kiểm hàng hóa và chọn mua
If choice = two Then Goi hàm view_cart(); //Xem giỏ hàng và chỉnh sửa
If choice = three Then Gọi hàm buy(); // Mua hàng (Checkout)
Ngược lại, thông báo dòng nhập lỗi, mời nhập lại
Nếu choice = exit thì thoát khõi vòng lặp
//Kết thúc hàm guest()
//Hàm find_product()
Gọi hàm find_menu(); //Hiển thị chức năng tìm và chọn mua
Choice = choice; //Khai báo biến choice kiểu Choice
Vòng lặp vô tận:
If choice = one Else Gọi hàm view_prolist();
If choice = two Else Gọi hàm có chức năng lọc (Chưa hoàn tất)

Else Thông báo dòng nhập lỗi, mời nhập lại
Nếu choice = exit thì thoát khõi vòng lặp
//Kết thúc hàm find_product()
//Các hàm hỗ trợ cho guest()
void view_cart_total(vector item_list); //Danh sách hàng hóa
void edit_menu(); //Hiển thị chức năng chỉnh sửa giỏ hàng
void view_cart(); //Thực hiện chọn hàng muốn mua
int view_choice_item();
//Hiển thị ds hàng hóa, chọn hàng cần thao tác
void adjust_amount(); //Chỉnh sửa số lượng muốn mua
void delete_item(); //Xóa mặt hàng đã chọn
void buy(); //Tiến hành mua hàng (Nếu khách hàng chọn yes)

Bài tập lớn môn Kỹ thuật lập trình - Niên khóa 2015-2016

Trang 12/27


Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học và Kỹ Thuật Máy Tính

long cin_number(); //Nhập vào số và kiểm tra lỗi của dòng nhập
//Hàm sysadmin()
Gọi hàm list_account(); //Hiển thị tùy chọn cho admin
Choice = choice; //Khai báo biến choice
Vòng lặp vô tận:
If choice = one Then Gọi hàm create_account();
If choice = two Then Gọi hàm edit_account();
If choice = three Then Gọi hàm delete_acccout();
Else Thông báo dòng nhập lỗi, mời nhập lại

Nếu choice = exit thì thoát khõi vòng lặp
//Kết thúc hàm sysadmin()
//Các hàm hỗ trợ cho sysadmin()
string cin_fullname();
//Hàm nhập họ tên
string cin_username(vector <account> accounts_list); //Nhập users
string cin_password(); //Nhập password
string cin_ID();
//Nhấp số CMND
string cin_sex();
//Nhập giới tính
string cin_phone();
//Nhập số điện thoại
roles cin_role();
//Nhập quyền của tài khoản
void preview(account acc); //Hiển thị ds thông tin vừa tạo
void list_account();
//Hiển thị tùy chọn cho admin
Choice cin_choice(); //Hàm nhập lựa chọn
void create_account(vector <account> &accounts_list);
void delete_account(vector <account> &accounts_list, string pos);
void edit_account(vector <account> &accounts_list);
//Hàm staff()
Choice = choice;
//Khai báo biến choice
Gọi hàm list_staff();
Vòng lặp vô tận:
If choice = one Then gọi hàm create_product ();
If choice = two Then gọi hàm edit_product();
If choice = three Then gọi hàm delete_product();

If choice = four Then gọi hàm statistics_product();
Else Thông báo dòng nhập lỗi, mời nhập lại
Nếu choice = exit Thì thoát khõi vòng lặp
//Kết thúc hàm staff()
// Các hàm hỗ trợ cho staff()
void create_product(vector &product_list);
void edit_product(vector &product_list);
void delete_product(vector &product_list);
void preview_product_new(product pro, int i); // Dạng bảng
void preview_product(product pro); //Dạng danh sách
void statistics_product(vector &product_list);
void list_product(); //Hiển thị chức năng ở phần edit hàng hóa
int cin_choice_new(); //Hàm nhập lựa chọn, kiểm tra lỗi dòng nhập

Bài tập lớn môn Kỹ thuật lập trình - Niên khóa 2015-2016

Trang 13/27


Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học và Kỹ Thuật Máy Tính

string
string
string
string
//Nhập
string
string
string

//Nhập
string
string
string
string
double

cin_NameProduct(vector product_list);
cin_CommodityCode(vector product_list); //Mã mặt hàng
cin_ProductCode(vector product_list); //Mã hàng hoá
cin_Company(); //Công ty, nhà sản xuất
ngày, tháng, năm sản xuất
cin_dayManufacture();
cin_monthManufacture();
cin_yearManufacture();
ngày, tháng, năm hết hạn sử dụng
cin_dayExpire();
cin_monthExpire();
cin_yearExpire();
cin_numberProduct(); //Nhập số lượng hàng hóa
cin_Price();
//Nhập đơn giá

//Hàm hỗ trợ cho phần login
//Nhập tài khoản và mật khẩu thực thi vào hệ thống
user cin_gateway(vector <account> accounts_list);
//Kiểm tra user và pass có trùng khớp với dữ liệu hay không
int check_gateway(user users, vector <account> accounts_list);
string cin_pass();
//Hàm nhập password

string cin_user();
//Hàm nhập user
//Kiểm tra và trả về vị trí của acc trong vector
int check_pos(string users, vector <account> accounts_list);
//Kiểm tra và trả về vị trí của tên hàng hóa trong vector
int check_pos_name(string namepro, vector product_list);
//Kiểm tra và trả về vị trí của mã hàng hóa trong vector
int check_pos_code(string procode, vector product_list);

void
long
void
void
void
void

5

//Các hàm khác
clear_scr(string sys); //Xóa màn hình, ghi tiêu đề là chuỗi sys
str_int(string str)l //Chuyển kiểu dữ liệu string sang long
read_account(vector <account> &accounts_list); Đọc file account.txt
write_account(vector <account> accounts_list); Ghi file account.txt
read_product(vector &product_list); Đọc file product.txt
write_product(vector product_list); Ghi file product.txt

Code chương trình
// Hàm tùy chọn giành cho khách hàng
void guest_menu() {
clear_scr("GUEST SECTION");

cout << setw(21) << "1. Find an item" << endl;
cout << setw(26) << "2. Review your cart." << endl;
cout << setw(19) << "3. Go to buy." << endl;
cout << setw(30) << "Type Exit to say goodbye" << endl;

Bài tập lớn môn Kỹ thuật lập trình - Niên khóa 2015-2016

Trang 14/27


Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học và Kỹ Thuật Máy Tính

}
//Hàm xử lí tùy chọn cho khách hàng
void guest(vector &product_list) {
vector item_list;
guest_menu();
Choice choice = cin_choice();
while (choice != Exit) {
switch (choice) {
case one: {
clear_scr(" CHOOSE YOUR ITEM");
find_product(product_list, item_list);
guest_menu();
choice = cin_choice();
break;
}
case two: {
view_cart(product_list, item_list);

guest_menu();
choice = cin_choice();
break;
}
case three: {
clear_scr(" YOUR ORDER");
buy(product_list, item_list);
guest_menu();
choice = cin_choice();
break;
}
default: {
hConsoleColor(12);
cout << setw(39) << "Invalid input, please try again: " << endl;
hConsoleColor(15);
choice = cin_choice();
break;
}
}
}
}
//Hàm hiển thị tùy chọn giành cho admin
void list_account() {
clear_scr("SYSTEM ADMINSTRATOR");
cout << setw(28) << right << "What do you want to? \n";
cout << setw(29) << "1. Create an account. \n";
cout << setw(37) << "2. Edit accounts information. \n";
cout << setw(29) << "3. Delete an account. \n";

Bài tập lớn môn Kỹ thuật lập trình - Niên khóa 2015-2016


Trang 15/27


Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học và Kỹ Thuật Máy Tính

cout << setw(34) << "Exit to the login panel. \n \n";
}
//Hàm tạo tài khoản
void create_account(vector <account> &accounts_list) {
clear_scr("CREATE ACCOUNT");
//Fill in information
account acc;
cout << setw(47) << "Please fill in the information bellow: \n \n";
acc.name = cin_username(accounts_list);
acc.pass = cin_password();
acc.fullname = cin_fullname();
acc.sex = cin_sex();
acc.ID = cin_ID();
acc.dial = cin_phone();
roles role;
role = cin_role();
acc.role = role.role;
acc.fullrole = role.fullrole;
clear_scr("CREATE ACCOUNT");
//Preview information
cout << setw(49) << "Hear is the account you have just create: \n";
preview(acc);
cout << setw(45) << "Is it OK? Continue or Recreate (yes/no)? \n";

Choice choice;
choice = cin_choice();
if (choice == yes) {
accounts_list.push_back(acc);
write_account(accounts_list);
clear_scr("CREATE ACCOUNT");
}
else
create_account(accounts_list);
}
//Hàm chỉnh sửa tài khoản
void edit_account(vector <account> &accounts_list) {
cout << setw(48) << "Please enter the accout you want to edit.\n";
string user;
user = cin_user();
int pos = check_pos(user, accounts_list);
while (pos == -1) {
clear_scr("EDIT ACCOUNT");
cout << setw(52) << "Account not be found, Try another one.\n";
user = cin_user();
pos = check_pos(user, accounts_list);
}
clear_scr("EDIT ACCOUNT");

Bài tập lớn môn Kỹ thuật lập trình - Niên khóa 2015-2016

Trang 16/27


Trường Đại Học Bách Khoa Tp.Hồ Chí Minh

Khoa Khoa Học và Kỹ Thuật Máy Tính

cout << setw(59) << "Here is the detail of the account you want to edit: \n";
preview(accounts_list[pos]);
cout << setw(39) << "Type back to go to Previous Page\n";
cout << setw(39) << "Which field do you want to edit?\n";
Choice choice = cin_choice();
while (choice != back) {
switch (choice) {
case one: {
accounts_list[pos].fullname = cin_fullname();
clear_scr("EDIT ACCOUNT");
preview(accounts_list[pos]);
cout << setw(39) << "Type back to go to Previous Page\n";
choice = cin_choice();
break;
}
case two: {
accounts_list[pos].name = cin_username(accounts_list);
clear_scr("EDIT ACCOUNT");
preview(accounts_list[pos]);
cout << setw(39) << "Type back to go to Previous Page\n";
choice = cin_choice();
break;
}
case three: {
accounts_list[pos].pass = cin_password();
clear_scr("EDIT ACCOUNT");
preview(accounts_list[pos]);
cout << setw(39) << "Type back to go to Previous Page\n";

choice = cin_choice();
break;
}
case four: {
accounts_list[pos].ID = cin_ID();
clear_scr("EDIT ACCOUNT");
preview(accounts_list[pos]);
cout << setw(39) << "Type back to go to Previous Page\n";
choice = cin_choice();
break;
}
case five: {
accounts_list[pos].sex = cin_sex();
clear_scr("EDIT ACCOUNT");
preview(accounts_list[pos]);
cout << setw(39) << "Type back to go to Previous Page\n";
choice = cin_choice();
break;
}

Bài tập lớn môn Kỹ thuật lập trình - Niên khóa 2015-2016

Trang 17/27


Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học và Kỹ Thuật Máy Tính

case six: {
accounts_list[pos].dial = cin_phone();

clear_scr("EDIT ACCOUNT");
preview(accounts_list[pos]);
cout << setw(39) << "Type back to go to Previous Page\n";
choice = cin_choice();
break;
}
case seven: {
roles role;
role = cin_role();
accounts_list[pos].role = role.role;
accounts_list[pos].fullrole = role.fullrole;
clear_scr("EDIT ACCOUNT");
preview(accounts_list[pos]);
cout << setw(39) << "Type back to go to Previous Page\n";
choice = cin_choice();
break;
}
default: {
hConsoleColor(12);
cout << setw(43) << right << "Command not found, please try again." << endl;
hConsoleColor(15);
choice = cin_choice();
break;
}
}
}
write_account(accounts_list);
}
//Hàm xóa và vô hiệu hóa tài khoản
void delete_account(vector <account> &accounts_list, string pos1) {

cout << setw(49) << "Please enter the accout you want to delete.\n";
string user = cin_user();
int pos = check_pos(user, accounts_list);
//Don’t allow to delete current sysad user and Check whether account existed or not
while (pos == -1 || user == pos1) {
if (pos == -1) {
clear_scr("DELETE ACCOUNT");
hConsoleColor(12);
cout << setw(52) << "Account not be found, Try another one.\n";
hConsoleColor(15);
user = cin_user();
pos = check_pos(user, accounts_list);
}
if (user == pos1){
clear_scr("DELETE ACCOUNT");

Bài tập lớn môn Kỹ thuật lập trình - Niên khóa 2015-2016

Trang 18/27


Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học và Kỹ Thuật Máy Tính

hConsoleColor(12);
cout << setw(52) << "Can not delete current user. Try another one.\n";
hConsoleColor(15);
user = cin_user();
pos = check_pos(user, accounts_list);
}

}
//Do defd
clear_scr("DELETE ACCOUNT");
preview(accounts_list[pos]);
cout << setw(48) << "Are you sure to delete this account?(Yes/No)\n";
cout << setw(5) << " ";
Choice choice;
choice = cin_choice();
if (choice == yes) {
accounts_list.erase(accounts_list.begin() + pos);
write_account(accounts_list);
}
system("cls");
}
//Hàm tạo và nhập thông tin hàng hóa
void create_product(vector &product_list) {
clear_scr("
CREATE PRODUCT");
//Fill in information
product pro;
cout << setw(57) << "Please fill in the information of product bellow: \n \n";
pro.NameProduct = cin_NameProduct(product_list);
pro.CommodityCode = cin_CommodityCode(product_list);
pro.ProductCode = cin_ProductCode(product_list);
pro.Company = cin_Company();
pro.dayManu = cin_dayManufacture();
pro.monthManu = cin_monthManufacture();
pro.yearManu = cin_yearManufacture();
pro.dayExpire = cin_dayExpire();
pro.monthExpire = cin_monthExpire();

pro.yearExpire = cin_yearExpire();
pro.numberProduct = cin_numberProduct();
pro.Price = cin_Price();
clear_scr("
PRODUCT");
//Preview information of product
cout << setw(49) << "Here is the product you have just enter: \n";
preview_product(pro);
cout << setw(47) << "Are you sure? Continue or Repair(Yes/No)? \n";

Bài tập lớn môn Kỹ thuật lập trình - Niên khóa 2015-2016

Trang 19/27


Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học và Kỹ Thuật Máy Tính

cin.ignore(1, ’\n’);
Choice choice;
choice = cin_choice();
if (choice == yes) {
product_list.push_back(pro);
clear_scr("CREATE PRODUCT");
write_product(product_list);
}
else {
clear_scr("EDIT ACCOUNT");
create_product(product_list);
}

}
//Hàm chỉnh sửa thông tin hàng hóa
void edit_product(vector &product_list) {
// Xuat danh sach hang hoa
int size = product_list.size(), select, choose;
list_product();
for (int i = 0; i < size; i++) {
preview_product_new(product_list[i], i + 1);
cout << "-----------------------------------------------------------------------------------------------------------------------------------------------------" << endl;
}
cout << setw(52) << right << "Select the order of product you want to edit! " << endl;
do {
select = cin_choice_new();
if (select <= 0 || select > size) {
hConsoleColor(12);
cout << setw(40) << right << "Command not found, please try again:" << endl;
hConsoleColor(15);
}
} while (select <= 0 || select > size);
clear_scr("
PRODUCT INFORMATION");
preview_product(product_list[select - 1]);
cout << setw(14) << right << "0. EXIT " << endl;
cout << setw(39) << right << "Which field do you want to edit?\n";
choose = cin_choice_new();
while (choose != 0) {
if (choose == 1) {
product_list[select - 1].NameProduct = cin_NameProduct(product_list);
clear_scr("
EDIT PRODUCT");

preview_product(product_list[select - 1]);
cout << setw(14) << right << "0. EXIT " << endl;
cout << setw(39) << right << "Which field do you want to edit?\n";
choose = cin_choice_new();
system("cls");
}

Bài tập lớn môn Kỹ thuật lập trình - Niên khóa 2015-2016

Trang 20/27


Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học và Kỹ Thuật Máy Tính

else if (choose == 2) {
clear_scr("
EDIT PRODUCT");
preview_product(product_list[select - 1]);
product_list[select - 1].CommodityCode = cin_CommodityCode(product_list);
clear_scr("
EDIT PRODUCT");
preview_product(product_list[select - 1]);
cout << setw(14) << right << "0. EXIT " << endl;
cout << setw(39) << right << "Which field do you want to edit?\n";
choose = cin_choice_new();
system("cls");
}
else if (choose == 3) {
clear_scr("

EDIT PRODUCT");
preview_product(product_list[select - 1]);
product_list[select - 1].ProductCode = cin_ProductCode(product_list);
clear_scr("
EDIT PRODUCT");
preview_product(product_list[select - 1]);
cout << setw(14) << right << "0. EXIT " << endl;
cout << setw(39) << right << "Which field do you want to edit?\n";
choose = cin_choice_new();
system("cls");
}
else if (choose == 4) {
clear_scr("
EDIT PRODUCT");
preview_product(product_list[select - 1]);
product_list[select - 1].Company = cin_Company();
clear_scr("
EDIT PRODUCT");
preview_product(product_list[select - 1]);
cout << setw(14) << right << "0. EXIT " << endl;
cout << setw(39) << right << "Which field do you want to edit?\n";
choose = cin_choice_new();
system("cls");
}
else if (choose == 5) {
clear_scr("
EDIT PRODUCT");
preview_product(product_list[select - 1]);
product_list[select - 1].dayManu = cin_dayManufacture();
product_list[select - 1].monthManu = cin_monthManufacture();

product_list[select - 1].yearManu = cin_yearManufacture();
clear_scr("
EDIT PRODUCT");
preview_product(product_list[select - 1]);
cout << setw(14) << right << "0. EXIT " << endl;
cout << setw(39) << right << "Which field do you want to edit?\n";
choose = cin_choice_new();
system("cls");
}
else if (choose == 6) {
clear_scr("
EDIT PRODUCT");

Bài tập lớn môn Kỹ thuật lập trình - Niên khóa 2015-2016

Trang 21/27


Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học và Kỹ Thuật Máy Tính

preview_product(product_list[select - 1]);
product_list[select - 1].dayExpire = cin_dayExpire();
product_list[select - 1].monthExpire = cin_monthExpire();
product_list[select - 1].yearExpire = cin_yearExpire();
clear_scr("
EDIT PRODUCT");
preview_product(product_list[select - 1]);
cout << setw(14) << right << "0. EXIT " << endl;
cout << setw(39) << right << "Which field do you want to edit?\n";

choose = cin_choice_new();
system("cls");
}
else if (choose == 7) {
clear_scr("
EDIT PRODUCT");
preview_product(product_list[select - 1]);
product_list[select - 1].numberProduct = cin_numberProduct();
clear_scr("
EDIT PRODUCT");
preview_product(product_list[select - 1]);
cout << setw(14) << right << "0. EXIT " << endl;
cout << setw(39) << right << "Which field do you want to edit?\n";
choose = cin_choice_new();
system("cls");
}
else if (choose == 8) {
clear_scr("
EDIT PRODUCT");
preview_product(product_list[select - 1]);
product_list[select - 1].Price = cin_Price();
clear_scr("
EDIT PRODUCT");
preview_product(product_list[select - 1]);
cout << setw(14) << right << "0. EXIT " << endl;
cout << setw(39) << right << "Which field do you want to edit?\n";
choose = cin_choice_new();
system("cls");
}
else if (choose < 0 || choose > 8) {

hConsoleColor(12);
cout << "Invalid input, please check again! " << endl;
hConsoleColor(15);
choose = cin_choice_new();
}
}
write_product(product_list);
system("cls");
}
//Hàm xóa thông tin hàng hóa
void delete_product(vector &product_list) {
int size = product_list.size(), select, choose;
list_product();
for (int i = 0; i < size; i++) {

Bài tập lớn môn Kỹ thuật lập trình - Niên khóa 2015-2016

Trang 22/27


Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học và Kỹ Thuật Máy Tính

preview_product_new(product_list[i], i + 1);
cout << "-----------------------------------------------------------------------------------------------------------------------------------------------------" << endl;
}
cout << setw(54) << right << "Select the order of product you want to delete! " << endl;
do {
select = cin_choice_new();
if (select <= 0 || select > size) {

hConsoleColor(12);
cout << setw(40) << right << "Command not found, please try again:" << endl;
hConsoleColor(15);
}
} while (select <= 0 || select > size);
clear_scr("
PRODUCT INFORMATION");
preview_product(product_list[select - 1]);
cout << setw(51) << "Are you sure to delete this product?(Yes/No)\n";
cout << setw(5) << " ";
Choice choice;
choice = cin_choice();
if (choice == yes) {
product_list.erase(product_list.begin() + select - 1);
write_product(product_list);
clear_scr("
STORE MANAGER");
}
}
//Hàm thống kê tổng số lượng và tổng giá trị tài sản có trong kho
void statistics_product(vector &product_list){
string str;
double sum_money = 0;
int size = product_list.size(), soluong, exit;
for (int i = 0; i < size; i++){
soluong = str_int(product_list[i].numberProduct);
sum_money = product_list[i].Price * soluong + sum_money;
}
do{
cout << "\t" << "____________________________________

________________________" << endl;
cout << "\t" << "|" << setw(34) << right << "STATISTICS"
<< setw(25) << right << "|" << endl;
cout << "\t" << "-----------------------------------------------------------" << endl;
cout << "\t" << "|" << setw(23) << right << "Quantity of goods" << setw(6)
<< "|" << setw(21) << right << "Total assets"
<< setw(9) << right << "|" << endl;
cout << "\t" << "-----------------------------------------------------------" << endl;
cout << "\t" << "|" << setw(28) << left << size << "|" << setw(29)
<< left << fixed << setprecision(2) << sum_money << "|" << endl;

Bài tập lớn môn Kỹ thuật lập trình - Niên khóa 2015-2016

Trang 23/27


Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học và Kỹ Thuật Máy Tính

cout << "\t" << "-----------------------------------------------------------" << endl;
cout << "\t" << "0. Go to Previous Page! \n";
bool cancel; //Bien co de thoat khoi 2 vong lap do while
do{
cancel = false;
int i;
cout << "\t" << "Your choice: ";
fflush(stdin);
getline(cin, str);
//Kiem tra tinh dung cua dong nhap
for (i = 0; i < str.length(); i++){

string check;
check = str[i];
if (str_int(check) == -858993460 || str_int(str) != 0){
hConsoleColor(12);
cout << "
Enter invalid. Please check again! " << endl;
hConsoleColor(15);
cancel = true;
i = str.length();
}
}
} while (cancel);
//Kiem tra hoan tat, chuoi nhap vao dam bao toan la so
exit = str_int(str);
} while (exit != 0);
system("cls");
}
//Hàm xử lí tùy chọn cho admin
void sysadmin(vector <account> &accounts_list, string pos) {
Choice choice;
list_account();
choice = cin_choice();
while (choice != Exit) {
switch (choice) {
case one: {
clear_scr("CREATE ACCOUNT");
create_account(accounts_list);
list_account();
choice = cin_choice();
break;

}
case two: {
clear_scr("EDIT ACCOUNT");
edit_account(accounts_list);
list_account();
choice = cin_choice();

Bài tập lớn môn Kỹ thuật lập trình - Niên khóa 2015-2016

Trang 24/27


×