TRƯỜNG ĐẠI HỌC DUY TÂN
KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN CƠ SỞ
NGÀNH KHOA HỌC MÁY TÍNH
ĐỀ TÀI: QUẢN LÝ BÁN HÀNG
Giảng viên hướng dẫn: Ths. Nguyễn Quốc Long
Sinh viên thực hiện:
nguyễn văn thọ
Lớp:
K19TPM3
Mã sinh viên:
3175
Đà Nẵng, tháng 03/2015
GVHD: Ths. Nguyễn Quốc Long
QUẢN LÝ BÁN HÀNG
MỤC LỤC
PHẦN MỞ ĐẦU:
1. LÝ DO CHỌN ĐỀ TÀI
Hiện nay, công nghệ thông tin đang phát triển nhanh chóng và ngày càng được ứng dụng
rộng rãi vào cuộc sống của con người. Cũng như trên thế giới, Việt Nam là một nước đang
phát triển và công nghệ thông tin cũng đang phát triển nhanh chóng thì việc đầu tư cho công
cuộc phát triển, nghiên cứu và ứng dụng công nghệ thông tin là rất quan trọng.
Một trong số ứng dụng của công nghệ thông tin là vào lĩnh vực quản lý .Hiện nay, công
nghệ thông tin (CNTT) đang hiện diện và đóng vai trò quan trọng không thể thiếu trong quá
trình quản trị, điều hành các hoạt động sản xuất kinh doanh của mỗi cửa hàng. Sự phát triển và
ứng dụng của Internet đã làm thay đổi mô hình và cách thức hoạt động kinh doanh của cửa
hàng, việc chuyển dần các giao dịch truyền thống sang giao dịch điện tử đã ảnh hưởng đến vị
trí, vai trò và cả nhu cầu của các bên hữu quan ( sản phẩm,khách hàng,…) của cửa hàng
Vì vậy mà em chọn đề tài “Xây dựng chương trình quản lý bán hàng bằng ngôn ngữ C/C++”
làm đề tài nghiên cứu
2. MỤC TIÊU ĐỀ TÀI
Xây dựng một chương trình quản lý bán hàng bằng ngôn ngữ lập trình C/C++ đơn giản,
dễ sử dụng cho người quản lý.
Giải quyết các vấn đề: quản lý bán hàng trong một năm học, số tính chỉ đăng ký, số điểm
đạt được, môn học, nhập liệu, tìm kiếm và sửa thông tin…
3. PHẠM VI NGHIÊN CỨU
Nghiên cứu, phân tích và xây dựng hệ thống quản lý bán hàng.
4. PHƯƠNG PHÁP NGHIÊN CỨU
Ngô Thị Thu Uyên – K19TPM3
Page 2
GVHD: Ths. Nguyễn Quốc Long
QUẢN LÝ BÁN HÀNG
Thực hiện đề tài này, em đã ứng dụng các kiến thức đã học về lập trình, tham khảo một
số tài liệu về ngôn ngữ C/C++.
Tham khảo, nghiên cứu việc quản lý bán hàng trong cửa hàng để xây dựng phần mềm
thích hợp.
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1. GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH C/C++
Ngôn ngữ lập trình C do Brain W.Kernighan và Dennis Ritchie phát minh vào năm
1972 tại phòng thí nghiệm Bell Telephone với mục đích tạo ngôn ngữ để viết hệ điều hành
UNIX, nhưng do tính ưu việt cũng như tính mềm dẻo của nó, cho nên giới tin học nhanh chóng
chấp nhận như một ngôn ngữ nhà nghề.
Năm 1978, bản in đầu tiên được in thành sách, đó là cuốn “The C Programming
Language” do chính hai tác giả của ngôn ngữ biên soạn. Viện chuẩn quốc gia Mỹ ANSI
(American National Standard Institute) công bố chuẩn ngôn ngữ C vào năm 1983 với tên
“ANSI C”.
Ngôn ngữ C rất tiện dụng trong việc viết các phần mềm hệ thống (hệ điều hành, chương
trình dịch, soạn thảo văn bản, cơ sở dữ liệu, bản tính…)
Là ngôn ngữ có ít từ khoá, có cấu trúc modun, dễ thích nghi cho các hệ thống máy tính
khác nhau.
Cuối năm 1980, cũng tại phòng thí nghiệm Bell Telephone, Bjrane Stroustrup phát triển
ngôn ngữ C để tạo thành một phiên bản mới, phiên bản mới này có tên là C++. C++ thực hiện
được hết các khả năng của C, bao trùm lên C, ngoài ra còn bổ sung thêm nhiều khái niệm và
khả năng mới và mạnh mẽ hơn. Những bổ sung của C++ so với C chia thành hai nhóm sau:
• Nhóm một là các kiểu dữ liệu mới, các dòng dữ liệu mới, các hàm mới.. làm cho
ngôn ngữ mạnh mẽ hơn va dễ lập trình hơn.
• Nhóm hai là các khái niệm lớp, đối tượng va những khái niệm liên quan tạo cơ
sở cho lập trình hướng đối tượng và làm cho C++ trở thành ngôn ngữ lập trình
hướng đối tượng.
1.1 MỘT SỐ KIẾN THỨC CƠ BẢN VỀ C++
Ngô Thị Thu Uyên – K19TPM3
Page 3
GVHD: Ths. Nguyễn Quốc Long
QUẢN LÝ BÁN HÀNG
1.2.1
CÁC KIỂU DỮ LIỆU CƠ SỞ
1.2.1.1 KIỂU KÝ TỰ
Ký tự là một chữ cái, chữ số hoặc ký tự đặc biệt và được định nghĩa bằng từ khoá char.
Một ký tự chiếm 1 byte, biểu diễn 1 ký tự trong bảng mã ASCII (American Standard
Code for Information Interchangre) và nằm cặp nháy đơn.
Bảng mã của một số ký tự biễu diễn được:
Ký tự
Mã ASCII
Các ký tự điều khiển(enter, esc,tab…)
0..31
Space bar(‘ ‘)
32
!”#$%&…
33..47
0..9
48..57
A..Z
65..90
a..z
97..122
1.2.1.2 KIỂU SỐ NGUYÊN
Một số dữ liệu kiểu số nguyên:
Từ khoá
Số byte
Miền giá trị
int
2
-215 → 215 – 1 (-32768..32767)
short
2
-215 → 215 – 1
long
4
-231 → 231 – 1 (-2.1 tỷ..2.1 tỷ)
unsigned int
2
0 →216 – 1 (0..65535)
unsigned short
2
0 →216 – 1
unsigned long
2
1
→232 – 1 (0..4.2 tỷ)
1.2.1.3 KIỂU SỐ THỰC
Từ khoá
Số byte
Miền giá trị
Độ chính xác
Float
4
±2*10-38 → ±3.4*1038
7 chữ số
Double
8
±2.2*10-308 → ±8*10308
15 chữ số
Ngô Thị Thu Uyên – K19TPM3
Page 4
GVHD: Ths. Nguyễn Quốc Long
QUẢN LÝ BÁN HÀNG
Long double
10
±3.4*10-4932 → ±3.4*104932
Một số dữ liệu kiểu số thực:
1.2.2 CÁC CẤU TRÚC ĐIỀU KHIỂN
1.2.2.1 Cấu trúc rẽ nhánh
• Cấu trúc if
Cú pháp:
if(biểu thức)
[Lệnh 1];
else
•
Lệnh switch
Ngô Thị Thu Uyên – K19TPM3
Page 5
15 chữ số
GVHD: Ths. Nguyễn Quốc Long
QUẢN LÝ BÁN HÀNG
Cú pháp:
switch(biểu thức nguyên)
{
case hằng_1: [Lệnh 1];
case hằng_2: [Lệnh 2];
…
case hằng_n: [Lệnh n];
[default: lệnh n+1;
Ngô Thị Thu Uyên – K19TPM3
Page 6
GVHD: Ths. Nguyễn Quốc Long
QUẢN LÝ BÁN HÀNG
Các lệnh vòng lặp
1.2.2.2
•
Vòng lặp for
Cú pháp:
for([bt1]; [bt2]; [bt1])
[Lệnh];
Ngô Thị Thu Uyên – K19TPM3
Page 7
GVHD: Ths. Nguyễn Quốc Long
QUẢN LÝ BÁN HÀNG
•
Lệnh while
Cú pháp:
while(biểu thức)
[Lệnh];
Cú pháp:
•
Lệnh do..while
Ngô Thị Thu Uyên – K19TPM3
Page 8
GVHD: Ths. Nguyễn Quốc Long
QUẢN LÝ BÁN HÀNG
do{
[Lệnh];
}while(biểu thức)
Ngô Thị Thu Uyên – K19TPM3
Page 9
GVHD: Ths. Nguyễn Quốc Long
QUẢN LÝ BÁN HÀNG
1.2.3 HÀM
Cú pháp:
[kiểu trả về | void] < Tên hàm([danh_sách_tham_số_hình_thức])>
<{
[khai báo biến cục bộ]
[các câu lệnh]
[return giá_trị_trả_về;]
[các câu lệnh]
[return giá_trị_trả_về;]
} >
1.2.4 MẢNG
1.2.4.1 KHÁI NIỆM MẢNG
Mảng là một tập hợp hữu hạn các phần tử (biến) cùng kiểu dữu liệu liên tục trong bộ
nhớ và có chung một tên. Mỗi phần tử trong mảng được xác định qua chỉ số (vị trí trong mảng)
của nó.
Các phần tử của mảng nằm trong các ô nhớ liên tục nhau, địa chỉ thấp nhất của ô nhớ
tương ứng với phần tử thú nhất và địa chỉ cao nhất của ô nhớ tương ứng với phần tử cuối cùng.
Số phần tử của mảng được xác định ngay khi khai báo mảng. Mỗi phần tử của mảng được truy
cập trực tiếp thông qua tên mảng và chỉ số của nó.
Có nhiều loại mảng, mảng một chiều (vecto), mảng 2 chiều (ma trận), mảng nhiều
chiều.
1.2.4.2 MẢNG MỘT CHIỀU
• Khai báo:
Kiểu_dữ_liệu Tên _mảng[Số_phần_tử];
• Truy cập:
Tên_mảng[Chỉ_số];
Trong đó:
0 ≤ Chỉ_số ≤ Số_phần_tử -1
Chỉ_số có thể là hằng số, biến kiểu nguyên, biểu thức nguyên.
Ngô Thị Thu Uyên – K19TPM3
Page 10
GVHD: Ths. Nguyễn Quốc Long
QUẢN LÝ BÁN HÀNG
1.2.5 KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA STRUCT
struct kiểu_struct{
kiểu_đã_có_1: danh sách các trường cùng kểu;
kiểu_đã_có_2: danh sách các trường cùng kểu;
kiểu_đã_có_n: danh sách các trường cùng kểu;
};
1.2.6 KIỂU DỮ LIỆU TỆP (FILE)
• Khái niệm
Tệp là một tập hợp dữ liệu có liên quan với nhau được nhóm lại lưu trữ trên bộ nhớ
ngoài hoặc các thiết bị và tồn tại ngay cả khi chương trình kết thúc hoặc mất điện.
Có hai loại tệp: tệp văn bản và tệp nhị phân. Trong chương trình này sử dụng tệp nhị
phân.
Sử dụng thư viện fstream.
•
Tệp nhị phân
Tệp nhị phân là tệp mà các phần tử của nó chỉ biểu diễn một kiểu dữ liệu. Một tệp tin
dù được xây dựng bằng cách nào thì bản chất của nó cũng chỉ là dãy các byte (0..255) ghi tren
đĩa, với cách quan niệm này người ta gọi là tệp nhị phân.
Một số thao tác trên tệp:
+ Khai báo con trỏ file: fstream f;
+ Mở file để ghi: f.open(tên_tệp, ios::out | ios::binary);
Ghi file: f.write((char*) & x, sizeof(x));
+ Mở file để đọc: f.open(ten_tệp, ios::in | ios::binary);
+ Đóng file: f.close();
1.3
Mô tả bài toán bán hàng:
Trong cửa hàng sẽ có nhiều sản phẩm với đơn vị tính và đơn giá khác nhau, để tránh
nhầm lẫn chúng ta gán mã sản phẩm cho từng sản phẩm (mã sản phẩm không trùng
nhau). Khi khách hàng vào mua hàng cần có thông tin về tên khách hàng, địa chỉ loại
sản phẩm cần mua, số lượng mua. Từ đó tính hóa đơn, trong hóa đơn ta tính thành tiền
bằng việc dựa vào mã sản phẩm (khi nhập mã sản phẩm và số lượng chương trình sẽ tự
hiểu đơn giá và tính thành tiền bằng công thức đơn giá nhân với số lượng). Qua chương
trình có thể thực hiện thao tác tìm kiếm thông tin khách hàng theo mã khách hàng, tìm
kiếm thông tin sản phẩm theo mã sản phẩm, cũng như vậy xóa , thêm : sản phẩm hay
khách hàng thông qua mã của nó.
Ngô Thị Thu Uyên – K19TPM3
Page 11
GVHD: Ths. Nguyễn Quốc Long
QUẢN LÝ BÁN HÀNG
CHƯƠNG 2: PHÂN TÍCH XÂY DỰNG CHƯƠNG TRÌNH
2.1GIỚI THIỆU THUẬT TOÁN
Chương trình quản lý bán hàng quản lý các vấn đề:
+ Quản lý thông tin khách hàng và sản phẩm
+ Hóa Đơn bán hàng
Mỗi mục là một mảng struct quản lý các vấn đề cụ thể:
• Quản lý thông tin khách hàng:
• Mã khách hàng
• Họ và tên
• Địa chỉ
• Quản lý thông tin sản phẩm:
Mã sản phẩm
Tên sản phẩm
Số lượng
Đơn giá
Đơn vị tính
• Hóa Đơn
Nhập mã khách hàng
Nhập mã sản phẩm
Số lượng mua
Thành tiền
• Quản lý thông tin khách hàng thực hiện các công việc
Hỏi người dùng nhập thông tin từ file hay tạo mới file
Nhập thông tin khách hàng
In danh sách khách hàng
Tìm khách hàng (qua mã khách hàng)
Sửa thông tin, thêm ,xoá khách hàng nào đó
• Quản lý thông tin sản phẩm thực hiện các công việc
Hỏi người dùng nhập thông tin từ file hay tạo mới file
Nhập mã sản phẩm
Nhập tên sản phẩm
In danh sách sản phẩm
Nhập số lượng sản phẩm
Nhập đơn giá sản phẩm
Nhập đơn vị tính sản phẩm
Cập nhật sản phẩm mới
Tìm sản phẩm (qua mã sản phẩm)
Xóa sản phẩm (qua mã sản phẩm)
• Quản lý hóa đơn
Hỏi người dùng nhập thông tin từ file hay tạo mới file
In hóa đơn
2.2CÁC MODUL CHÍNH TRONG CHƯƠNG TRÌNH
Ngô Thị Thu Uyên – K19TPM3
Page 12
GVHD: Ths. Nguyễn Quốc Long
QUẢN LÝ BÁN HÀNG
2.2.1 SƠ ĐỒ TỔNG QUÁT
TẠO/ NHẬP FILE
QL KHÁCH HÀNG
QL SẢN PHẨM
QL HÓA ĐƠN
NHẬP KH
NHẬP SP
NHẬP HÓA
ĐƠN
THÊM KH
IN SP
IN HÓA ĐƠN
IN KH
XÓA SP
XÓA KH
THÊM SP
TÌM THEO MÃ
KH
TÌM THEO MÃ
SP
2.2 .2 CÁC THUẬT TOÁN
2.2.2.1 Hàm nhập dữ liệu từ file
B1: Tạo file mới
B2: Nhập tên file
B3: Nhập dữ liệu vào file
B4: Kết thúc
2.2.2.2 Hàm nhập khách hàng
B1: Khởi tạo gán cho i=0,n
B2: Kiểm tra i
B3: Nhập thông tin khách hàng
B4: Kết thúc
2.2.2.3 Hàm in thông tin khách hàng
Ngô Thị Thu Uyên – K19TPM3
Page 13
GVHD: Ths. Nguyễn Quốc Long
QUẢN LÝ BÁN HÀNG
B1: Khởi tạo gán cho i=0,n
B2: Kiểm tra i
B3: Nhập thông tin khách hàng
B4: Kết thúc
2.2.2.4 Hàm tìm kiếm khách hàng( theo mã khách hàng)
B1: Nhập mã khách hàng
B2: Khởi tạo gán cho i=0,n
B3: Kiểm tra i
B4: In thông tin khách hàng
B5: Kết thúc
2.2.2.5 Hàm nhập sản phẩm
B1: Khởi tạo gán cho i=0,n
B2: Kiểm tra i
B3: Nhập thông tin sản phẩm
B4: Kết thúc
2.2.2.6 Hàm tìm mã sản phẩm
B1: Nhập mã sản phẩm
B2: Khởi tạo gán cho i=0,n
B3: Kiểm tra i
B4: In thông tin sản phẩm
B5: Kết thúc
2.2.2.7 Hàm nhập hóa đơn
B1: Khởi tạo gán cho i=0,n
B2: Kiểm tra i
B3: Nhập thông hóa đơn
B4: Kết thúc
2.2.3
MỘT SỐ MODUL CHÍNH CỦA CHƯƠNG TRÌNH
2.2.3.1 Hàm tạo/ nhập dữ liệu từ file
Ngô Thị Thu Uyên – K19TPM3
Page 14
GVHD: Ths. Nguyễn Quốc Long
QUẢN LÝ BÁN HÀNG
2.2.3.2 Hàm nhập khách hàng:
Ngô Thị Thu Uyên – K19TPM3
Page 15
GVHD: Ths. Nguyễn Quốc Long
QUẢN LÝ BÁN HÀNG
2.2.3.3 Hàm in thông tin khách hàng
Ngô Thị Thu Uyên – K19TPM3
Page 16
GVHD: Ths. Nguyễn Quốc Long
QUẢN LÝ BÁN HÀNG
Ngô Thị Thu Uyên – K19TPM3
Page 17
GVHD: Ths. Nguyễn Quốc Long
QUẢN LÝ BÁN HÀNG
Ngô Thị Thu Uyên – K19TPM3
Page 18
GVHD: Ths. Nguyễn Quốc Long
QUẢN LÝ BÁN HÀNG
2.2.3.4 Hàm tìm kiếm khách hàng (theo mã khách hàng)
Ngô Thị Thu Uyên – K19TPM3
Page 19
GVHD: Ths. Nguyễn Quốc Long
QUẢN LÝ BÁN HÀNG
2.2.3.5 Hàm nhập sản phẩm
Ngô Thị Thu Uyên – K19TPM3
Page 20
GVHD: Ths. Nguyễn Quốc Long
QUẢN LÝ BÁN HÀNG
2.2.3.6 Hàm tìm mã sản phẩm:
Ngô Thị Thu Uyên – K19TPM3
Page 21
GVHD: Ths. Nguyễn Quốc Long
QUẢN LÝ BÁN HÀNG
2.2.3.7 Hàm nhập hóa đơn
Ngô Thị Thu Uyên – K19TPM3
Page 22
GVHD: Ths. Nguyễn Quốc Long
QUẢN LÝ BÁN HÀNG
CHƯƠNG 3: CÀI ĐẶT CHƯƠNG TRÌNH
3.1 TỔNG THỂ CHƯƠNG TRÌNH
Ngô Thị Thu Uyên – K19TPM3
Page 23
QUẢN LÝ BÁN HÀNG
3.1.1
GVHD: Ths. Nguyễn Quốc Long
Các hàm khai báo
Code
#include<iostream>
#include<stdio.h>
#include<conio.h>
#include<fstream>
#include<string.h>
#include<stdlib.h>
#include<iomanip>
#include<windows.h>
3.1.2
Hàm main
Code
{
KhachHang a[100];
SanPham b[100];
HoaDon c[100];
int soLuongKhachHang,soLuongKhachHangBoSung,soLuongKhachHangXoa;
int soSanPham,soSanPhamBoSung,soSanPhamXoa;
int soLuongHoaDon;
MeNu(soLuongKhachHang,a,soLuongKhachHangBoSung,soLuongKhachHangXoa,soSanPham,b,so
SanPhamBoSung,soSanPhamXoa,soLuongHoaDon,c);
}
3.1.3
Một số hàm chính
+ Nhập danh sách khách hàng:
Code
void NhapDanhSachKhachHang(int &soLuongKhachHang,KhachHang *a){
for(int i=0;i
{
do{
cout<<"\nNHAP MA KHACH HANG THU "<
Ngô Thị Thu Uyên – K19TPM3
Page 24
GVHD: Ths. Nguyễn Quốc Long
QUẢN LÝ BÁN HÀNG
fflush(stdin);gets(a[i].maKH);
if(KiemTraMaKhachHangTonTai(i,a)){
cout<<"\nMA KHACH HANG DA TON TAI\n";
}
}while(KiemTraMaKhachHangTonTai(i,a));
cout<<"\nNHAP TEN KHACH HANG THU "<
fflush(stdin);gets(a[i].tenKH);
cout<<"\nNHAP DIA CHI KHACH HANG THU "<
fflush(stdin);gets(a[i].diaChi);
}
}
+Nhập danh sách sản phẩm:
Code
void NhapDanhSachKhachHang(int &soLuongKhachHang,KhachHang *a)
{
for(int i=0;i
do{
cout<<"\nNHAP MA KHACH HANG THU "<
fflush(stdin);gets(a[i].maKH);
if(KiemTraMaKhachHangTonTai(i,a)){
cout<<"\nMA KHACH HANG DA TON TAI\n";
}
}while(KiemTraMaKhachHangTonTai(i,a));
cout<<"\nNHAP TEN KHACH HANG THU "<
fflush(stdin);gets(a[i].tenKH);
cout<<"\nNHAP DIA CHI KHACH HANG THU "<
fflush(stdin);gets(a[i].diaChi);
}
}
Ngô Thị Thu Uyên – K19TPM3
Page 25