Tải bản đầy đủ (.docx) (19 trang)

Bài toán quản lý hàng mỹ phẩm môn cấu trúc dữ liệu và giải thuật và code

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 (276.44 KB, 19 trang )

MỤC LỤC
1. XÁC ĐỊNH BÀI TOÁN................................................................................................2
2. XÁC ĐỊNH CTDL BIỂU DIỄN BÀI TOÁN................................................................2
3. XÁC ĐỊNH CÁC THUẬT TOÁN – CÁC CHỨC NĂNG...........................................2
4. LẬP TRÌNH – CÀI ĐẶT..............................................................................................3
5. KIỂM THỬ - LẬP BỘ TEST......................................................................................13
5.1. Chọn yêu cầu........................................................................................................13
5.2. Nhập thông tin mỹ phẩm......................................................................................14
5.3. Danh sách mỹ phẩm đã nhập................................................................................15
5.4. Tìm kiếm mỹ phẩm theo tên.................................................................................15
5.5. Sắp xếp danh sách mỹ phẩm theo giá bán giảm dần.............................................15
5.6. Tính tổng tiền các loại mỹ phẩm trong cửa hàng..................................................15
5.7. Hiển thị các loại mỹ phẩm số lượng lớn hơn 10...................................................16
5.8. Tìm mỹ phẩm có số lượng lớn nhất......................................................................16
5.9. Thêm nhân viên vào danh sách.............................................................................17
5.10.

Hiển thị danh sách nhân viên đã nhập...............................................................18

5.11.

Tìm kiếm nhân viên theo tên.............................................................................18

5.12.

Sắp xếp nhân viên theo tên................................................................................19

6. Kết luận hướng phát triển............................................................................................19

1



ĐỀ TÀI: Viết chương trình quản lý các đối tượng để thực hiện cho “Bài toán quản lý
hàng mỹ phẩm”
I. Nội dung:
* Các thao tác cần thực hiện
-

Nhập – In danh sách đối tượng;

-

Thêm, sửa, xố đối tượng

-

Tìm kiếm đối tượng

-

Sắp xếp đối tượng

-

Các yêu cầu tìm phần tử lớn nhất, nhỏ nhất

-

Các u cầu tính tổng, trung bình, đếm

-


Các yêu cầu thống kê theo điều kiện

1. XÁC ĐỊNH BÀI TOÁN

Đa phần các cửa hàng mỹ phẩm ở Việt Nam đều được mở ra tự phát, hoặc được
truyền lại từ đời này sang đời khác. Các chủ cửa hàng chủ yếu quản lý cửa hàng theo độ
nhạy và kinh nghiệm gia truyền được truyền lại mà thiếu kinh nghiệm quản lý khoa học và
chưa có chiến lược phát triển cụ thể. Chính vì vậy có chương trình quản lý cửa hàng mỹ
phẩm là quan trọng
2. XÁC ĐỊNH CTDL BIỂU DIỄN BÀI TỐN

-

Quản lý thơng tin sản phẩm

-

Quản lý thơng tin nhân viên

3. XÁC ĐỊNH CÁC THUẬT TOÁN – CÁC CHỨC NĂNG

Tổ chức lưu trữ bài toán bằng : Danh sách liên kết đơn.
Các thuật toán





Phương pháp Đổi chỗ trực tiếp (Interchange sort)

Phương pháp Nổi bọt (Bubble sort)
Phương pháp Chèn trực tiếp (Insertion sort)
Phương pháp Chọn trực tiếp (Selection sort)
Các chức năng chính như:

-

Tạo list
Tạo struct
Các hàm xử lý dữ liệu (thêm, sửa, xố, tìm kiếm…)
Các hàm xử lý khác
Chương trình khi chạy ban đầu xuất hiện danh sách lựa chọn chức năng:
Nhập thông tin mỹ phẩm

2


-

In danh sách mỹ phẩm đã nhập
Tìm kiếm mỹ phẩm theo tên
Sắp xếp theo đơn giá bán giảm dần
Tính tổng tiền mỹ phẩm
Hiển thị các mỹ phẩm có số lượng lớn hơn 10
Tìm kiếm mỹ phẩm có số lượng lớn nhất
Thêm nhân viên vào danh sách
Hiển thị danh sách nhân viên đã nhập
Tìm kiếm nhân viên theo tên
Sắp xếp danh sách nhân viên giảm dần
4. LẬP TRÌNH – CÀI ĐẶT

Tiến hành cài đặt bài tập, Liệt kê cấu trúc chương trình tổng quát và đưa ra một số
code xử lý chính
-

Tiến hành code

#include <stdio.h>
#include <string.h>
struct MyPham;
struct NhanVien;
void hienThiDSMyPham(struct MyPham* ds, int slsv);
void hienThiTenCot();
void hienThiDSNhanVien(struct NhanVien* ds, int slsv);
void hienThiTenCotNhanVien();

struct MyPham {
char MaMyPham[50];
char TenMyPham[50];
char Hang[50];
float DonGiaBan;
int SoLuongBan;
float ThanhTien;
};
//nhanvien
struct NhanVien{

3


char MaNhanVien[50];

char TenNhanVien[50];
};

struct MyPham nhapMyPham() {
struct MyPham MyPham;
printf("\nNhap Ma my pham: ");
scanf("%s", &MyPham.MaMyPham);
printf("\nNhap Ten my pham: ");
scanf("%s", &MyPham.TenMyPham);
printf("\nNhap hang: ");
scanf("%s", &MyPham.Hang);
printf("\nNhap Don gia Ban: ");
scanf("%f", &MyPham.DonGiaBan);
printf("\nNhap so luong: ");
scanf("%d", &MyPham.SoLuongBan);

return MyPham;
}
//nhanvien
struct NhanVien nhapNhanVien() {
struct NhanVien NhanVien;
printf("\nNhap Ma nhan vien: ");
scanf("%s", &NhanVien.MaNhanVien);
printf("\nNhap Ten nhan vien: ");
scanf("%s", &NhanVien.TenNhanVien);

return NhanVien;
}

4



void hienThiMyPham(struct MyPham sv){
printf("%-20s %-20s %-20s %-10.2f %-10d %-10.2f\n",
sv.MaMyPham, sv.TenMyPham, sv.Hang, sv.DonGiaBan, sv.SoLuongBan,
sv.DonGiaBan*sv.SoLuongBan);
}
// nhan vien
void hienThiNhanVien(struct NhanVien sv){
printf("%-20s %-20s \n",
sv.MaNhanVien, sv.TenNhanVien);
}

void hienThiDSMyPham(struct MyPham* ds, int slsv) {
hienThiTenCot();
int i;
for(i = 0; i < slsv; i++) {
hienThiMyPham(ds[i]);
}
printf("-----------------------------------------------------"
"----------------------------------------------------------------\n");
}
//dsnhanvien
void hienThiDSNhanVien(struct NhanVien* ds, int slsv) {
hienThiTenCotNhanVien();
int i;
for(i = 0; i < slsv; i++) {
hienThiNhanVien(ds[i]);
}
printf("-----------------------------------------------------"

"----------------------------------------------------------------\n");
}

5


void hienThiTenCot() {
printf("-----------------------------------------------------"
"----------------------------------------------------------------\n");
printf("%-20s %-20s %-20s %-10s %-10s %-10s \n",
"MaMyPham", "TenMyPham", "Hang", "DonGiaBan", "SoLuongBan",
"ThanhTien");
}

//hienthicotnhanvien
void hienThiTenCotNhanVien() {
printf("-----------------------------------------------------"
"----------------------------------------------------------------\n");
printf("%-20s %-20s \n",
"MaNhanVien", "TenNhanVien");
}

void timTheoTen(struct MyPham* ds, int slsv) {
char ten[20];
printf("Nhap ten My Pham can tim kiem: ");
scanf("%s", ten);
hienThiTenCot();
int i, timSV = 0;
for(i = 0; i < slsv; i++) {
if(strcmp(ten, ds[i].TenMyPham) == 0) {

hienThiMyPham(ds[i]);
timSV = 1;
}
}
if(timSV == 0) {

6


printf("Khong co My Pham %s trong danh sach!\n", ten);
}
}
// tìm kiem ten nhan vien
void timTheoTenNhanVien(struct NhanVien* ds, int slsv) {
char ten[20];
printf("Nhap ten Nhan Vien can tim kiem: ");
scanf("%s", ten);
hienThiTenCotNhanVien();
int i, timSV = 0;
for(i = 0; i < slsv; i++) {
if(strcmp(ten, ds[i].TenNhanVien) == 0) {
hienThiNhanVien(ds[i]);
timSV = 1;
}
}
if(timSV == 0) {
printf("Khong co nhan vien %s trong danh sach!\n", ten);
}
}


void sapXepTheoDonGia(struct MyPham* ds, int slsv) {
int i, j;
for(i = 0; i < slsv - 1; i++) {
for(j = i + 1; j < slsv; j ++) {
if(ds[i].DonGiaBan < ds[j].DonGiaBan) {
struct MyPham sv = ds[i];
ds[i] = ds[j];
ds[j] = sv;
}

7


}
}
}
//sap xep nhan vien theo ten
void sapXepNhanVienTheoTen(struct NhanVien* ds, int slsv) {
int i, j;
for(i = 0; i < slsv - 1; i++) {
for(j = i + 1; j < slsv; j ++) {
if(ds[i].TenNhanVien < ds[j].TenNhanVien) {
struct NhanVien sv = ds[i];
ds[i] = ds[j];
ds[j] = sv;
}
}
}
}


void TinhTongTienMyPham(struct MyPham* ds, int slsv) {
int i;
for(i = 0; i < slsv - 1; i++) {
ds[i].ThanhTien=ds[i].SoLuongBan*ds[i].DonGiaBan;
}
}

void MyPhamSLLonNhat( struct MyPham* sv, int slsv)
{
int index=1;
float max=0;
int i;

8


for(i=0;i{
if(sv[i].SoLuongBan>max)
{
max=sv[i].SoLuongBan;
index=i;
}
}
hienThiMyPham(sv[index]);
}

void MyPhamSLlonhon10( struct MyPham* sv, int slsv)
{
int index=1;

float max=0;
int i;
for(i=0;i{
if(sv[i].SoLuongBan>10)
{
hienThiMyPham(sv[i]);
}
}
}

int main() {

int i;

9


struct MyPham dssv[100];
struct NhanVien dsnv[100];
int slsv = 0;
int luaChon;

do {
printf("=============== MENU ===============");
printf("\n1. Them My Pham vao danh sach.");
printf("\n2. Hien thi danh sach My Pham da nhap.");
printf("\n3. Tim kiem My Pham theo ten.");
printf("\n4. Sap xep theo don gia ban giam dan.");
printf("\n5. Tinh tong tien My Pham.");

printf("\n6. Hien thi cac My Pham co so luong lon hon 10.");
printf("\n7. Tim My Pham co so luong lon nhat.");
printf("\n8. Them Nhan Vien Vao danh sach.");
printf("\n9. Hien thi danh sach nhan vien da nhap.");
printf("\n10. Tim kiem nhan vien theo ten.");
printf("\n11. Sap xep nhan vien theo ten.");
printf("\n0. Thoat chuong trinh.");
printf("\nBan chon ? ");

scanf("%d", &luaChon);
struct MyPham sv;
struct NhanVien nv;

switch(luaChon) {
case 0:
break;

case 1:

10


sv = nhapMyPham();
dssv[slsv++] = sv;
break;

case 2:
hienThiDSMyPham(dssv, slsv);
break;


case 3:
timTheoTen(dssv, slsv);
break;

case 4:
sapXepTheoDonGia(dssv, slsv);
printf("\nDanh sach My Pham sau khi sap xep theo don gia ban
giam dan:\n");
hienThiDSMyPham(dssv, slsv);
break;

case 5:
printf("-----------------------------------------------------"
"----------------------------------------------------------------\
n");
printf("%-20s %-20s %-20s %-10s %-10s %-10s \n",
"MaMyPham", "TenMyPham", "Hang", "DonGiaBan",
"SoLuongBan", "ThanhTien");
for(i = 0; i < slsv; i++) {
printf("%-20s %-20s %-20s %-10.2f %-10d %-10.2f\
n",
dssv[i].MaMyPham, dssv[i].TenMyPham,
dssv[i].Hang, dssv[i].DonGiaBan, dssv[i].SoLuongBan, dssv[i].SoLuongBan*
dssv[i].DonGiaBan);

11


}
break;


case 6:
MyPhamSLlonhon10(dssv, slsv);
break;
case 7:
MyPhamSLLonNhat(dssv, slsv);
break;

case 8:
nv = nhapNhanVien();
dsnv[slsv++] = nv;
break;

case 9:
hienThiDSNhanVien(dsnv, slsv);
break;

case 10:
timTheoTenNhanVien(dsnv, slsv);
break;
case 11:
sapXepNhanVienTheoTen(dsnv, slsv);
printf("\nDanh sach nhan vien sap xep ten tu z den a:\n");
hienThiDSNhanVien(dsnv, slsv);
break;

default:
printf("Sai chuc nang, vui long chon lai!\n");

12



break;
}

} while(luaChon);

return 0;
}

5. KIỂM THỬ - LẬP BỘ TEST

Thực hiện chạy với bộ dữ liệu mẫu (Input-Output) đã xác định ở phần 2.
Cho biết kết quả khi chạy từng chức năng tương ứng trên bộ dữ liệu Input đó
Chụp hình ảnh kết quả chương trình tương ứng
5.1. Chọn yêu cầu

13


5.2. Nhập thông tin mỹ phẩm

14


5.3. Danh sách mỹ phẩm đã nhập

5.4. Tìm kiếm mỹ phẩm theo tên

5.5. Sắp xếp danh sách mỹ phẩm theo giá bán giảm dần


5.6. Tính tổng tiền các loại mỹ phẩm trong cửa hàng

15


5.7. Hiển thị các loại mỹ phẩm số lượng lớn hơn 10

5.8. Tìm mỹ phẩm có số lượng lớn nhất

16


5.9.

Thêm nhân viên vào danh sách

17


5.10. Hiển thị danh sách nhân viên đã nhập

5.11. Tìm kiếm nhân viên theo tên

18


5.12. Sắp xếp nhân viên theo tên

6. Kết luận hướng phát triển


-

Hoàn thiện chức năng của phần mềm
Khắc phục các lỗi tồn tại của hệ thống
Ghi nhận thêm các yêu cầu khác của phần mềm

19



×