1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

28 665 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 28
Dung lượng 2,07 MB

Nội dung

Khi đã mua tài liệu, liên hệ congluc19297gmail.com để nhận Source code C++ Bài tập lớn viết code mô phỏng phần mềm quản lý và bán hàng online cho một cửa hàng, siệu thị. Có 3 loại người dùng trên hệ thống này người quản trị, người quản lý cửa hàng (store manager) phải đăng nhập tài khoản và mật khẩu vào hệ thống và khách (không cần đăng nhập). Admin menu cung cấp các chức năng gồm có: tạo tài khoản mới, xoá tài khoản, vô hiệu và kích hoạt lại tài khoản, reset password cho một tài khoản. Manager menu cung cấp các tính năng: Thêm, sửa, xoá mặt hàng. Làm các thống kê về dữ liệu trong kho: số lượng mặt hàng của mỗi item, v.v. Do yêu cầu hiện tại giới hạn nên sinh viên không cần làm đầy đủ các tính năng về thống kê nhưng cơ bản phải đưa ra được các thông tin gồm: tổng số mặt hàng trong kho, tổng giá trị ước lượng của các mặt hàng đang có trong kho. Tìm kiếm một mặt hàng trong kho để cập nhật thông tin. Guest menu cung cấp các tính năng gồm: Tìm mặt hàng trong kho. Cập nhật giỏ hàng. Đặt mua (checkout)

Trang 1

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

Trang 2

Mục lục

1.1 Các thành viên 3

1.2 Mục tiêu 3

1.3 Tiêu chí đánh giá 3

2 Kế hoạch thực hiện 4 2.1 Tiến độ công việc 4

2.2 Phân công nghiệm vụ 4

2.2.1 Admin menu 4

2.2.2 Manager menu 5

2.2.3 Guest menu 5

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

2.2.5 Bài báo cáo 5

3 Giải quyết bài toán 5 3.1 Phân tích vấn đề 5

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

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

4 Lưu đồ và mã giả 9 4.1 Lưu đồ 9

4.2 Mã giả 11

Trang 3

LỜI NÓI ĐẦUNgà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áytí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 Thayvà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ànghơ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ệnmộ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ượngkiế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 đượcmộ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ảmthấ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

Trang 4

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 MSSVTrần Công Lực 1511917

Văn Tiến Đức 1510824Nguyễn Thành Phương 1512591Nguyễn Trần Lê Minh 1512003Trần Thị Trúc Phương 1512606

1.2 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

có một thái độ tíchcực về nhiệm vụ

Thỉnh thoảng côngkhai chỉ trích các

dự án hoặc côngviệc của ngườikhác Thường cómột thái độ tíchcực về nhiệm vụ

Thường công khaichỉ trích các dự ánhoặc công việc củangười khác Thường

Đôi khi cung cấpcác ý tưởng hữu íchkhi tham gia vàonhóm và thảo luậntrong lớp Thỏamãn những yêu cầutối thiểu của nhómđặt ra

Hiếm khi cung cấpcác ý tưởng hữu íchkhi tham gia nhóm

và thảo luận tronglớp Thường từ chốigóp ý

Góp phần vào việcnhóm Tuy nhiên,thỉnh thoảng phảithông qua nhắcnhở

Thực hiện nhiệm

vụ được giao chỉkhi phải nhắc nhởnhiều lần

Trang 5

Không đề nghị hoặctinh chỉnh các giảipháp, nhưng sẵnsàng thử các giảipháp được đề xuấtbởi các thành viênkhác.

Không cố gắnggiải quyết vấn đềhay giúp đỡ cácthành viên khácgiải quyết vấn đề

Ỷ lại vào các thànhviên khác

Quản

lý thời

gian

Quản lý thời gian

tốt trong suốt quá

Có xu hướng trìhoãn, nhưng vẫnbàn giao nhiệm

vụ đúng thời hạn

Không có mặt đúnggiờ từ 3-5 lần trongcác buổi họp nhóm

và thảo luận trênlớp

Hiếm khi thựchiện đúng thời hạnnhiệm vụ đượcgiao Quá 5 lầnkhông có mặt đúnggiờ trong các buổihọp nhóm và thảoluậ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 Thời gian - Địa điểm - Phương thức Thành viên

Phân tích yêu cầu đề bài, phác

họa thiết kế Tối 8-11h: 8/5/2016 Phòng tự học A19 Đầy đủ

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

Tối 8-11h: 9/5/2016 Phòng tự học A19 Đầy đủ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

Tối 8-10h30: 2 4 6 Các ngày từ11/5/2016-23/5/2016 Phòng tự họcA19

Đầy đủChạy demo các đoạn code Tối 8-11h:25/5/2016 Quán nước AG4 Đầy đủ

Công tác chỉnh sửa và bổ sung Các tối từ 1/6 – 6/6/2016 Phương thức

Công tác viết báo cáo và hoàn

thiện code lần cuối

7/6-10/6/2016: Phương thức trao đổi

2.2 Phân công nghiệm vụ

2.2.1 Admin menu

Công việc: 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.Chịu trách nhiệm: Văn Tiến Đức - Lê Tân Ri

Trang 6

2.2.2 Manager menu

Công việc: 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

Chịu trách nhiệm: Trần Công Lực - Trần Thị Trúc Phương

2.2.3 Guest menu

Công việc: 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.Chịu trách nhiệm: Trần Công Lực - Nguyễn Trần Lê Minh

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

Công việc: 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

Chịu trách nhiệm: Nguyễn Thành Phương

2.2.5 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

Trang 7

• 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ìnhchí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ềukiê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ìnhchí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ùychọ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êmbớ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ồmaccount,user,productvàroles

- Sử dụng vecto để chứa thông tin Có 2 vecto được tạo đó là vectoaccounts_listcó 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ậpvà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

Trang 8

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ápbằ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ầucủ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ếtthú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, rolessau đó 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àikhoả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àmcon hỗ trợ (Hàm check_pos(user, accounts_list) xác định vị trí của tài khoản cần kiểmtra trongaccounts_list, hàmpreview(accounts_list)xem lại tất cả thông tin tài khoảngtạ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 đếnthô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àmcheck_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ẵntrong thư viện vectorerase()để xóa tài khoảng tại vị trí cụ thể trongaccounts_list

• Function 6: Thiết lập hàm nhập thông tin hàng hóacreate_product(vector < product >

&product_list) Trong hàm này bao gồm các hàm con hỗ trợ (clear_scr() Xóamà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àmcin_choice()để nhập tùy chọn vàđẩy thông tin vừa nhập vào vectorproduct_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àmpreview_product_new() xuất tất cả thông tin hàng hóa có trong kho dưới dạng bảng,hàmpreview_product()xuất thông tin 1 hàng hóa dưới dạng danh sách

Trang 9

Nhìn vào bảng danh sách hàng hóa, dùng hàm cin_choice_new() để tùy chọnhà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ềutrườ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àytươ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 khostatistics_product() Truy xuất đến các vùng tin giá mặt hàngP rice và vùngtin số lượng hàng hóa của mỗi mặt hàngnumberP 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àngdelete_item() Ngoài ra phải tạo thêmmột vector để chứa thông tin hàng hóa mà khách hàng đã chọn muavector < product >item_list, hàm cho khách hàng mua hàng hóabuy()

- 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àmkhác như hàm chuyển từ kiểu dữ liệu string sangint, hàm tô màu text, để chuẩn hóadò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ệntác vụ

Trang 10

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

4.1 Lưu đồ

Trang 12

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> 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:

Trang 13

If choice=one gọi hàm guest(product_list), đi đến khu vực dành cho khách hàng

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 <product> 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 <product> 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)

Trang 14

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_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> &product_list);

void edit_product(vector <product> &product_list);

void delete_product(vector <product> &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> &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

Ngày đăng: 11/06/2016, 16:49

TỪ KHÓA LIÊN QUAN

w