Trong hệ thống bán hàng đơn lẻ hay to lớn đều đặt ra yêu cầu về tính toán lợi nhuận cho mỗi thao tác giao dịch. Để quản lý được điều đó cần phải có một danh sách cũng như một công cụ để lưu lại các dữ liệu giao dịch.
Trang 2M C L C ỤC LỤC ỤC LỤC
L I M Đ U ỜNG ĐẠI HỌC BÁCH KHOA Ở ĐẦU ẦU 1
I Gi i thi u ới thiệu ệu 2
II Phân tích bài toán 3
1 D li u vàoữ liệu vào ệu vào 3
2 D li u raữ liệu vào ệu vào 3
III Thi t k c u trúc d li u ết kế cấu trúc dữ liệu ết kế cấu trúc dữ liệu ấu trúc dữ liệu ữ liệu ệu 4
IV Các gi i thu t và tính đ ph c t p ải thuật và tính độ phức tạp ật và tính độ phức tạp ộ phức tạp ức tạp ạp 6
1 Đ c d li u t file đ a và structọc dữ liệu từ file đưa và struct ữ liệu vào ệu vào ừ file đưa và struct ưa và struct 6
2 Ghi d li u vào fileữ liệu vào ệu vào 7
3 Hàm nh p sập số ố 8
4 Hi n th danh sáchển thị danh sách ị danh sách 9
5 B sung danh sáchổ sung danh sách 9
6 Th ng kêố 12
7 S p x pắp xếp ếp 13
8 Tìm ki mếp 15
9 Xóa 16
V K t qu ch ết kế cấu trúc dữ liệu ải thuật và tính độ phức tạp ương trinh ng trinh 19
1 Menu chính: 19
2 Hi n th danh sách các hàng nh pển thị danh sách ị danh sách ập số 19
3 Thêm thông tin hàng nh pập số 20
4 Th ng kê thành ti n hàng nh p theo các ngày trong thángố ền hàng nhập theo các ngày trong tháng ập số 21
5 S p s p hàng nh p theo các tiêu chí đắp xếp ếp ập số ưa và structợc chọnc ch nọc dữ liệu từ file đưa và struct 22
6 Tìm ki m và hi n th hàng nh pếp ển thị danh sách ị danh sách ập số 23
7 Xóa hàng nh p:ập số 24
VI K t Lu n ết kế cấu trúc dữ liệu ật và tính độ phức tạp : 25
Ph L c: ụ Lục: ụ Lục: 25
Trang 3L I M Đ U ỜNG ĐẠI HỌC BÁCH KHOA Ở ĐẦU ẦU
Gi i thu t và l p trình là h c ph n r t quan tr ng cũng nh không thập số ập số ọc dữ liệu từ file đưa và struct ần rất quan trọng cũng như không thể ất quan trọng cũng như không thể ọc dữ liệu từ file đưa và struct ưa và struct ển thị danh sáchthi u đ i v i ngếp ố ới người lập trình Môn học này được xem như nền tản cơ bản của ưa và structời lập trình Môn học này được xem như nền tản cơ bản của ập sối l p trình Môn h c này đọc dữ liệu từ file đưa và struct ưa và structợc chọnc xem nh n n t n c b n c aưa và struct ền hàng nhập theo các ngày trong tháng ơ bản của ủa
l p trình máy tính Nó là cái n n và là c s v ng ch c đ gi i quy t các bài toánập số ền hàng nhập theo các ngày trong tháng ơ bản của ở vững chắc để giải quyết các bài toán ữ liệu vào ắp xếp ển thị danh sách ếptrong l p trình, đ ng th i cung c p cho chúng ta hi u bi t v các gi i thu t tácập số ồng thời cung cấp cho chúng ta hiểu biết về các giải thuật tác ời lập trình Môn học này được xem như nền tản cơ bản của ất quan trọng cũng như không thể ển thị danh sách ếp ền hàng nhập theo các ngày trong tháng ập số
đ ng lên d li u, cũng nh cách t ch c d li u đ gi i quy t các bài toán saoữ liệu vào ệu vào ưa và struct ổ sung danh sách ức dữ liệu để giải quyết các bài toán sao ữ liệu vào ệu vào ển thị danh sách ếpcho hi u qu và t i u nh t.ệu vào ố ưa và struct ất quan trọng cũng như không thể
Sau hai h c ph n lý thuy t và th c hành, chúng em nghiên c u và th cọc dữ liệu từ file đưa và struct ần rất quan trọng cũng như không thể ếp ực hành, chúng em nghiên cứu và thực ức dữ liệu để giải quyết các bài toán sao ực hành, chúng em nghiên cứu và thực
hi n đ án này nh là m t cách đ c ng c và m r ng ki n th c Thông qua quáệu vào ồng thời cung cấp cho chúng ta hiểu biết về các giải thuật tác ưa và struct ển thị danh sách ủa ố ở vững chắc để giải quyết các bài toán ếp ức dữ liệu để giải quyết các bài toán saotrình th c hi n đ án, chúng em đã n m b t đực hành, chúng em nghiên cứu và thực ệu vào ồng thời cung cấp cho chúng ta hiểu biết về các giải thuật tác ắp xếp ắp xếp ưa và structợc chọnc nh ng kỹ thu t quan tr ngữ liệu vào ập số ọc dữ liệu từ file đưa và struct
c a vi c xây d ng c u trúc d li u và cách xây d ng m t thu t toán sao cho t iủa ệu vào ực hành, chúng em nghiên cứu và thực ất quan trọng cũng như không thể ữ liệu vào ệu vào ực hành, chúng em nghiên cứu và thực ập số ố
u nhât
ưa và struct
Bài toán “Qu n lý hàng nh p trong m t tháng” mà chúng em nghiên c uập số ức dữ liệu để giải quyết các bài toán sao
và trình bày trong báo cáo sau đây là m t trong nh ng ví d ữ liệu vào ụ
Chúng em chân thành c m n cô Đ Th Tuy t Hoa đã giúp đ chúng emơ bản của ỗ Thị Tuyết Hoa đã giúp đỡ chúng em ị danh sách ếp ỡ chúng em
th c hi n đ án này Và chúng em cũng r t mong s góp ý, giúp đ t cô đ bàiực hành, chúng em nghiên cứu và thực ệu vào ồng thời cung cấp cho chúng ta hiểu biết về các giải thuật tác ất quan trọng cũng như không thể ực hành, chúng em nghiên cứu và thực ỡ chúng em ừ file đưa và struct ển thị danh sáchlàm chúng em đưa và structợc chọnc hoàn thi n h n ệu vào ơ bản của
Nhóm sinh viên
Lê Trưa và structời lập trình Môn học này được xem như nền tản cơ bản củang Lâm
Tr n Văn Thanhần rất quan trọng cũng như không thể
Trang 4I Gi i thi u ới thiệu ệu
Trong h th ng bán hàng đ n l hay to l n đ u đ t ra yêu c u v tính toán l iệu vào ố ơ bản của ẻ hay to lớn đều đặt ra yêu cầu về tính toán lợi ới người lập trình Môn học này được xem như nền tản cơ bản của ền hàng nhập theo các ngày trong tháng ặt ra yêu cầu về tính toán lợi ần rất quan trọng cũng như không thể ền hàng nhập theo các ngày trong tháng ợc chọnnhu n cho m i thao tác giao d ch Đ qu n lý đập số ỗ Thị Tuyết Hoa đã giúp đỡ chúng em ị danh sách ển thị danh sách ưa và structợc chọnc đi u đó c n ph i có m tền hàng nhập theo các ngày trong tháng ần rất quan trọng cũng như không thểdanh sách cũng nh m t công c đ l u l i các d li u giao d ch ưa và struct ụ ển thị danh sách ưa và struct ại các dữ liệu giao dịch ữ liệu vào ệu vào ị danh sách
N u s lếp ố ưa và structợc chọnng hàng hóa b n nh p v không nhi u, ch ng lo i cũng không quáại các dữ liệu giao dịch ập số ền hàng nhập theo các ngày trong tháng ền hàng nhập theo các ngày trong tháng ủa ại các dữ liệu giao dịch
đa d ng, quy mô kinh doanh l i nh thì v n đại các dữ liệu giao dịch ại các dữ liệu giao dịch ỏ thì vấn đề ất quan trọng cũng như không thể ền hàng nhập theo các ngày trong tháng qu n lý hàng nh ải thuật và tính độ phức tạp ật và tính độ phức tạpp không quá
ph c t p Nh ng n u ngức dữ liệu để giải quyết các bài toán sao ại các dữ liệu giao dịch ưa và struct ếp ưa và structợc chọn ại các dữ liệu giao dịch c l i, b n ph i nh p hàng trăm lô hàng v m i tháng,ại các dữ liệu giao dịch ập số ền hàng nhập theo các ngày trong tháng ỗ Thị Tuyết Hoa đã giúp đỡ chúng em
th m chí là t ng tu n, thì nh p kho th nào đ đ m b o hàng hóa đ s lập số ừ file đưa và struct ần rất quan trọng cũng như không thể ập số ếp ển thị danh sách ủa ố ưa và structợc chọnng,
đ t chu n ch t lại các dữ liệu giao dịch " ất quan trọng cũng như không thể ưa và structợc chọnng, và qu n lý toàn b chúng theo cách thông thưa và structời lập trình Môn học này được xem như nền tản cơ bản củang thìkhông ph i là d ễ
Chính vì v y, chập số ưa và structơ bản củang trình qu n lý hàng nh p trong m t tháng đáp ng đập số ức dữ liệu để giải quyết các bài toán sao ưa và structợc chọnc
ph n nào các nhu c u, khó khăn đ ra ần rất quan trọng cũng như không thể ần rất quan trọng cũng như không thể ền hàng nhập theo các ngày trong tháng
Sau đây là các thông tin c a ch ủa chương trình: ương trinh ng trình:
Thông tin phi u nh p kho hàng g m: mã hàng, tên hàng, đ n v tính, ngàyếp ập số ồng thời cung cấp cho chúng ta hiểu biết về các giải thuật tác ơ bản của ị danh sách
nh p, s lập số ố ưa và structợc chọnng, đ n giá, ơ bản của thành ti nền hàng nhập theo các ngày trong tháng
Trong đó tính thành ti n (TT) = s lền hàng nhập theo các ngày trong tháng ố ưa và structợc chọnng*đ n giá và đơ bản của ưa và structợc chọnc gi m theo qui ưa và structới người lập trình Môn học này được xem như nền tản cơ bản củac:
Giảm={10 %nếu 50<số lượng≤100 15 % nếu số lượng>100
0 nếu số lượng≤50
Ch ương trinh ng trình th c hi n các ch c năng sau: ực hiện các chức năng sau: ệu ức tạp
In danh sách các thông tin c a t t c các đ i tủa ất quan trọng cũng như không thể ố ưa và structợc chọnng
B sung thêm 1 đ i tổ sung danh sách ố ưa và structợc chọnng vào danh sách
Tìm ki m m u tin theo các tiêu chí khác nhau và hi n th m u tin đó ếp ẫu tin theo các tiêu chí khác nhau và hiển thị mẫu tin đó ển thị danh sách ị danh sách ẫu tin theo các tiêu chí khác nhau và hiển thị mẫu tin đó
S p x p theo th t tăng d n/ gi m d n ắp xếp ếp ức dữ liệu để giải quyết các bài toán sao ực hành, chúng em nghiên cứu và thực ần rất quan trọng cũng như không thể ần rất quan trọng cũng như không thể
Trang 5 Chèn m u tin ẫu tin theo các tiêu chí khác nhau và hiển thị mẫu tin đó
Xóa 1 m u tin ẫu tin theo các tiêu chí khác nhau và hiển thị mẫu tin đó
In ra b ng th ng kê theo t ng ngày trong tháng g m các c t: ngày nh p,ố ừ file đưa và struct ồng thời cung cấp cho chúng ta hiểu biết về các giải thuật tác ập số
t ng s ti n ổ sung danh sách ố ền hàng nhập theo các ngày trong tháng
Xóa các m t ặt ra yêu cầu về tính toán lợi hàng theo thông tin cho trước
1 D li u vào ữ liệu ệu
Thông tin hàng nh p bao g m các trập số ồng thời cung cấp cho chúng ta hiểu biết về các giải thuật tác ưa và structời lập trình Môn học này được xem như nền tản cơ bản củang:
Tên tr ường ng Ki u d li u ểu dữ liệu ữ liệu ệu
Đ n v hàngơ bản của ị danh sách char[40]
S lố ưa và structợc chọnng Int
Thành ti nền hàng nhập theo các ngày trong tháng Int
B ng 1: ải thuật và tính độ phức tạp Thông tin hàng nh p và ki u d li uập số ển thị danh sách ữ liệu vào ệu vào
D li u này đữ liệu vào ệu vào ưa và structợc chọn ất quan trọng cũng như không thể ừ file đưa và structc l y t file HangNhap.txt
2 D li u ra ữ liệu ệu
D li u có th l u l i vào file txt n u mu n ữ liệu vào ệu vào ển thị danh sách ưa và struct ại các dữ liệu giao dịch ếp ố
Các thông tin theo yêu c u bài toán: ần rất quan trọng cũng như không thể
0 In danh sách các thông tin của tất cả các đối tượng
1 Bổ sung thêm 1 đối tượng vào danh sách, chèn mẫu tin sao cho mảng vẫn đượcsắp theo thứ tự
2 In ra bảng thống kê theo từng ngày trong tháng gồm các cột: ngày nhập, tổng sốtiền
3 Sắp xếp theo thứ tự tăng dần/ giảm dần
Trang 64 Tìm kiếm mẫu tin theo các tiêu chí khác nhau và hiển thị mẫu tin đó
5 Xóa 1 mẫu tin
6 Thoát chương trình
III Thi t k c u trúc d li u ết kế cấu trúc dữ liệu ết kế cấu trúc dữ liệu ấu trúc dữ liệu ữ liệu ệu
Các trưa và structời lập trình Môn học này được xem như nền tản cơ bản củang m u tin đẫu tin theo các tiêu chí khác nhau và hiển thị mẫu tin đó ưa và structợc chọnc li t kê và phân bi t vào các bi n thành viên c aệu vào ệu vào ếp ủastruct HangNhap, m i bi n tỗ Thị Tuyết Hoa đã giúp đỡ chúng em ếp ưa và structơ bản củang ng v i các d li u riêng phù h v i đ c tr ngức dữ liệu để giải quyết các bài toán sao ới người lập trình Môn học này được xem như nền tản cơ bản của ữ liệu vào ệu vào ợc chọn ới người lập trình Môn học này được xem như nền tản cơ bản của ặt ra yêu cầu về tính toán lợi ưa và struct
t ng bi n ừ file đưa và struct ếp
C u trúc d li u hàng nh p trong m t tháng: ất quan trọng cũng như không thể ữ liệu vào ệu vào ập số
Đ n v hàngơ bản của ị danh sách donVi char[40]
S lố ưa và structợc chọnng soLuong Int
Thành ti nền hàng nhập theo các ngày trong tháng thanhTien Int
Th c hi n khai báo: ực hành, chúng em nghiên cứu và thực ệu vào
typedef char MaHang[7];
typedef char Ten[50];
typedef char DonVi[40];
typedef int Ngay;
typedef int SoLuong;
typedef int DonGia;
typedef int ThanhTien;
Trang 7typedef struct HangNhap
đưa và structợc chọn ưa và structc l u tr ngay sau ph n t th i-1 gi ng nh m t m ngữ liệu vào ần rất quan trọng cũng như không thể ử được lưu trữ k ức dữ liệu để giải quyết các bài toán sao ố ưa và struct )
Khai báo m ng danh sách v i s danh sách t i đa là MAXLIST = 100:ới người lập trình Môn học này được xem như nền tản cơ bản của ố ố
#define MAXLIST
HN A[MAXLIST];
Các bi n liên quan khác: ếp
int n; // là bi n ch a n i dung là s ph n t th c trong danh sách hàng nh pếp ức dữ liệu để giải quyết các bài toán sao ố ần rất quan trọng cũng như không thể ử được lưu trữ k ực hành, chúng em nghiên cứu và thực ập số
int ct; // Bi n đi u khi n các m c th c hi n chếp ền hàng nhập theo các ngày trong tháng ển thị danh sách ụ ực hành, chúng em nghiên cứu và thực ệu vào ưa và structơ bản củang trình (hi n th , th ng kê,ển thị danh sách ị danh sách ố
tìm ki m,vv )ếp
Trang 8IV Các gi i thu t và tính đ ph c t p ải thuật và tính độ phức tạp ật và tính độ phức tạp ộ phức tạp ức tạp ạp
1 Đ c d li u t file đ a và struct ọc dữ liệu từ file đưa và struct ữ liệu ệu ừ file đưa và struct ư
File HangNhap.txt là file l u tr d li u trong quá trình th c thi và s d ngưa và struct ữ liệu vào ữ liệu vào ệu vào ực hành, chúng em nghiên cứu và thực ử được lưu trữ k ụ.lâu dài Nó cũng nh là m t c s d li u đ n gi n ưa và struct ơ bản của ở vững chắc để giải quyết các bài toán ữ liệu vào ệu vào ơ bản của
Hàm đ c file: ọc dữ liệu từ file đưa và struct
- Input: D li u trong file “HangNhap.txt” ữ liệu vào ệu vào
- Output: D li u đã đữ liệu vào ệu vào ưa và structợc chọnc gia công trong struct và giá tr n các m u tin hàngị danh sách ẫu tin theo các tiêu chí khác nhau và hiển thị mẫu tin đó
nh p ập số
- Cài đ t: ặt:
void read(HN A[], int &n){
char strHang[150]; // mảng lưu 1 dòng chuỗi khi đọc
fgets(strHang, 100, f); // đọc 1 dòng đưa vào strHang
// tách chuỗi ra từng phần đưa vào các thành viên struct
Trang 9N u không k các hàm x lý xâu c a th vi n “string.h” thì đ ph c t pếp ển thị danh sách ử được lưu trữ k ủa ưa và struct ệu vào ức dữ liệu để giải quyết các bài toán sao ại các dữ liệu giao dịch
c a gi i thu t đ c d li u là s hàng: O(n)ủa ập số ọc dữ liệu từ file đưa và struct ữ liệu vào ệu vào ố
2 Ghi d li u vào file ữ liệu ệu
Các d li u trong struct hi n hành đữ liệu vào ệu vào ệu vào ưa và structợc chọn ưa và structc l u vào trong file “HangNhap.txt”
- Input: danh sách hàng nh p sau khi th c hi n các thao tác nh nh p, bập số ực hành, chúng em nghiên cứu và thực ệu vào ưa và struct ập số ổ sung danh sáchsung, xóa
- Output: l u l i các thay đ i v a th hi n vào file “HangNhap.txt”.ưa và struct ại các dữ liệu giao dịch ổ sung danh sách ừ file đưa và struct ực hành, chúng em nghiên cứu và thực ệu vào
- Cài đ t: ặt:
void write(HN A[], int n){
int i;
FILE *f = fopen("HangNhap.txt", "w"); // mo file de ghi
if (f == NULL) thongBaoKhongLoadFile(); // neu file khong ton tai// Ghi du lieu vao file
fprintf(f, "%3s%15s%10s%10s%10s%10s%10s", "ID","TenHang", "DonVi", "NgayNhap", "SoLuong", "DonGia", "ThanhTien");
for (i = 0; i < n; i++) fprintf(f, "\n%3s%15s%10s%10d%10d%10d%10d", A[i].maHang, A[i].ten, A[i].donVi, A[i].ngayNhap, A[i].soLuong, A[i].donGia, A[i].thanhTien);
fclose(f); // Dong file
Trang 10- Tính đ ph c t p: ộ phức tạp ức tạp ạp
Thu t toán ghi file ch đ n gi n là ghi n dòng t ngăn x p vào file và có đập số ỉ đơn giản là ghi n dòng từ ngăn xếp vào file và có độ ơ bản của ừ file đưa và struct ếp
ph c t p là: O(n)ức dữ liệu để giải quyết các bài toán sao ại các dữ liệu giao dịch
3 Hàm nh p s ật và tính độ phức tạp ố
Đ ki m tra xem d li u nh p vào có ph i là s , ho c r ng hay không vàển thị danh sách ển thị danh sách ữ liệu vào ệu vào ập số ố ặt ra yêu cầu về tính toán lợi ỗ Thị Tuyết Hoa đã giúp đỡ chúng em
tr v s ền hàng nhập theo các ngày trong tháng ố
- Ph m vi áp d ng trong đ tài: ạp ụ Lục: ề tài: Nh p d li u t bàn phím cho các bi nập số ữ liệu vào ệu vào ừ file đưa và struct ếpthành viên: ngayNhap, soLuong, donGia,
- Input: Chu i ký tỗ Thị Tuyết Hoa đã giúp đỡ chúng em ực hành, chúng em nghiên cứu và thực
Trang 11Đ ph c t p s l n so sánh, tùy vào đ dài xâu nh p vào V i xâu nh p vàoức dữ liệu để giải quyết các bài toán sao ại các dữ liệu giao dịch ố ần rất quan trọng cũng như không thể ập số ới người lập trình Môn học này được xem như nền tản cơ bản của ập số
có đ lài len(xâu) = n thì đ ph c t p là O(n)ức dữ liệu để giải quyết các bài toán sao ại các dữ liệu giao dịch
4 Hi n th danh sách ểu dữ liệu ị danh sách
Hàm hi n th thông tin c a t t c hàng nh p hi n t i trong tháng.ển thị danh sách ị danh sách ủa ất quan trọng cũng như không thể ập số ệu vào ại các dữ liệu giao dịch
- Input: Danh sách hàng nh p hi n t i bao g m: tên hàng, đ n v tính, ngàyập số ệu vào ại các dữ liệu giao dịch ồng thời cung cấp cho chúng ta hiểu biết về các giải thuật tác ơ bản của ị danh sách
nh p, s lập số ố ưa và structợc chọnng, thành ti n Danh sách đền hàng nhập theo các ngày trong tháng ưa và structợc chọnc l u tr trong fileưa và struct ữ liệu vào
Đ ph c t p c a thu t toán trên là s l n in ra d li u, s l n in ra là: n+1 ức dữ liệu để giải quyết các bài toán sao ại các dữ liệu giao dịch ủa ập số ố ần rất quan trọng cũng như không thể ữ liệu vào ệu vào ố ần rất quan trọng cũng như không thể
Đ ph c t p: O(n) ức dữ liệu để giải quyết các bài toán sao ại các dữ liệu giao dịch
Trang 125 B sung danh sách ổ sung danh sách
Hàm b sung thêm m t đ i tổ sung danh sách ố ưa và structợc chọnng hàng nh p vào danh sách.ập số
- Input: Danh sách hàng nh p hi n t i trong tháng và thông tin v hàngập số ệu vào ại các dữ liệu giao dịch ền hàng nhập theo các ngày trong tháng
nh p c n thêm vào danh sách.ập số ần rất quan trọng cũng như không thể
- Output: Danh sách hàng nh p trong tháng đã đập số ưa và structợc chọnc b sung thêm đ iổ sung danh sách ố
}
// Nhap don vi hang
while(1) {
Trang 13if(temp>0 && temp<31){
A[n].ngayNhap = temp; break;
Trang 14Đ ph c t p c a hàm insertGUI(HN A[],int &n) là t ng đ ph c t p c a cáức dữ liệu để giải quyết các bài toán sao ại các dữ liệu giao dịch ủa ổ sung danh sách ức dữ liệu để giải quyết các bài toán sao ại các dữ liệu giao dịch ủa
l n nh p vào bi n thành viên struct và hàm write(A,n) ần rất quan trọng cũng như không thể ập số ếp
N u tính t t c các l n nh p đ u đúng d li u thì đ ph c t p c a m iếp ất quan trọng cũng như không thể ần rất quan trọng cũng như không thể ập số ền hàng nhập theo các ngày trong tháng ữ liệu vào ệu vào ức dữ liệu để giải quyết các bài toán sao ại các dữ liệu giao dịch ủa ỗ Thị Tuyết Hoa đã giúp đỡ chúng em
l n nh p là n (tr các l n nh p th ng các xâu maHang, ten, donVi là 1), đần rất quan trọng cũng như không thể ập số ừ file đưa và struct ần rất quan trọng cũng như không thể ập số ẳng các xâu maHang, ten, donVi là 1), độ
ph c t p hàm write(A,n) là n ức dữ liệu để giải quyết các bài toán sao ại các dữ liệu giao dịch
V y đ ph c t p là: 3 + 5n => O(n) ập số ức dữ liệu để giải quyết các bài toán sao ại các dữ liệu giao dịch
6 Th ng kê ố
Hàm th ng kê và hi n th ra màn hình thông tin v ngày nh p và t ng chiố ển thị danh sách ị danh sách ền hàng nhập theo các ngày trong tháng ập số ổ sung danh sách
c a ngày đó trong tháng ủa
- Input: Danh sách hàng nh p trong tháng.ập số
- Output: Danh sách g m ngày nh p và t ng chi c ngày đó.ồng thời cung cấp cho chúng ta hiểu biết về các giải thuật tác ập số ổ sung danh sách
Trang 15A[j + 1] = temp;
}}
}
- Tính đ ph c t p: ộ phức tạp ức tạp ạp
Đ ph c t p c a hàm thongKe(HN A[], int n) là t ng đ ph c t p c aức dữ liệu để giải quyết các bài toán sao ại các dữ liệu giao dịch ủa ổ sung danh sách ức dữ liệu để giải quyết các bài toán sao ại các dữ liệu giao dịch ủathu t toán s p x p n i b t và thu t toán th ng kê thành ti n ập số ắp xếp ếp ổ sung danh sách ọc dữ liệu từ file đưa và struct ập số ố ền hàng nhập theo các ngày trong tháng
S p x p n i b t: V i m i i = 1,2,3, ,n-1 ta c n i phép so sánh Do đó s l nắp xếp ếp ổ sung danh sách ọc dữ liệu từ file đưa và struct ới người lập trình Môn học này được xem như nền tản cơ bản của ỗ Thị Tuyết Hoa đã giúp đỡ chúng em ần rất quan trọng cũng như không thể ố ần rất quan trọng cũng như không thể
so sánh và đ i ch trong gi i thu t là: ổ sung danh sách ổ sung danh sách ập số
1+2+3+…+(n−2)+( n−1)= (n−1) n
2
Do đó đ ph c t p c a gi i thu t s p x p n i b t là: O(nức dữ liệu để giải quyết các bài toán sao ại các dữ liệu giao dịch ủa ập số ắp xếp ếp ổ sung danh sách ọc dữ liệu từ file đưa và struct 2)
Thu t toán th ng kê hàng nh p nh vào d li u đã x p s n nên có đập số ố ập số ời lập trình Môn học này được xem như nền tản cơ bản của ữ liệu vào ệu vào ếp ẵn nên có độ
ph c t p là s l n so sánh và tính t ng c a t t c các m t hàng: O(n)ức dữ liệu để giải quyết các bài toán sao ại các dữ liệu giao dịch ố ần rất quan trọng cũng như không thể ổ sung danh sách ủa ất quan trọng cũng như không thể ặt ra yêu cầu về tính toán lợi
T đó ta tính đừ file đưa và struct ưa và structợc chọnc đ ph c t p c a hàm ức dữ liệu để giải quyết các bài toán sao ại các dữ liệu giao dịch ủa thongKe(HN A[], int n) là:
O(n2) + O(n) ~ O(n2)
7 S p x p ắp xếp ết kế cấu trúc dữ liệu
Hàm s p x p s d ng danh sách hàng nh p hi n có, th c hi n quá trìnhắp xếp ếp ử được lưu trữ k ụ ập số ệu vào ực hành, chúng em nghiên cứu và thực ệu vào
s p x p và xu t ra m t danh sách m i đ tránh làm thay đ i d li u hi n có.ắp xếp ếp ất quan trọng cũng như không thể ới người lập trình Môn học này được xem như nền tản cơ bản của ển thị danh sách ổ sung danh sách ữ liệu vào ệu vào ệu vàoDanh sách m i đới người lập trình Môn học này được xem như nền tản cơ bản của ưa và structợc chọn ắp xếpc s p x p hi n th ra màn hình Hàm đếp ển thị danh sách ị danh sách ưa và structợc chọnc cài đ t s p x pặt ra yêu cầu về tính toán lợi ắp xếp ếp
Trang 16d li u theo nhi u tiêu chí có trong c u trúc d li u hàng nh p, bao g m: Mãữ liệu vào ệu vào ền hàng nhập theo các ngày trong tháng ất quan trọng cũng như không thể ữ liệu vào ệu vào ập số ồng thời cung cấp cho chúng ta hiểu biết về các giải thuật táchàng, Tên hàng, Đ n v , Ngày nh p, S lơ bản của ị danh sách ập số ố ưa và structợc chọnng, Đ n giá, Thành ti n.ơ bản của ền hàng nhập theo các ngày trong tháng
- Input: Danh sách hàng nh p hi n t i trong tháng.ập số ệu vào ại các dữ liệu giao dịch
- Output: Danh sách hàng nh p đã đập số ưa và structợc chọn ắp xếpc s p x p theo tiêu chí đ nh trếp ị danh sách ưa và structới người lập trình Môn học này được xem như nền tản cơ bản củac.Sau đây là hàm s p x p tăng d n, gi m d n theo Mã hàng Các hàm khácắp xếp ếp ần rất quan trọng cũng như không thể ần rất quan trọng cũng như không thể
tưa và structơ bản củang t hàm này, ch thay đ i tham s truy n vào và cách th c so sánh choực hành, chúng em nghiên cứu và thực ỉ đơn giản là ghi n dòng từ ngăn xếp vào file và có độ ổ sung danh sách ố ền hàng nhập theo các ngày trong tháng ức dữ liệu để giải quyết các bài toán saocác ki u d li u vào.ển thị danh sách ữ liệu vào ệu vào
- Cài đ t: ặt:
S p x p Mã hàng theo th t tăng d n: ắp xếp ết kế cấu trúc dữ liệu ức tạp ực hiện các chức năng sau: ần:
void sortTang_maHang(HN A[], int &n){
}
S p x p mã hàng theo th t gi m d n: ắp xếp ết kế cấu trúc dữ liệu ức tạp ực hiện các chức năng sau: ải thuật và tính độ phức tạp ần:
void sortGiam_maHang(HN A[], int &n){
int i, j;
HN temp;
for (i = 1; i < n; i++)for (j = 0; j < n - i; j++){
if (layMaHang(A[j].maHang) < layMaHang(A[j + 1].maHang)) {
temp = A[j];
Trang 17A[j] = A[j + 1];
A[j + 1] = temp;
}}
}Các hàm s p x p c a đ tài s d ng thu t toán s p x p n i b t ắp xếp ếp ủa ền hàng nhập theo các ngày trong tháng ử được lưu trữ k ụ ập số ắp xếp ếp ổ sung danh sách ọc dữ liệu từ file đưa và struct
V i m i i = 1,2,3, ,n-1 ta c n i phép so sánh Do đó s l n so sánh và đ i ới người lập trình Môn học này được xem như nền tản cơ bản của ỗ Thị Tuyết Hoa đã giúp đỡ chúng em ần rất quan trọng cũng như không thể ố ần rất quan trọng cũng như không thể ổ sung danh sách
ch trong gi i thu t là: ổ sung danh sách ập số
- Output: Thông tin trong hàng nh p tìm ki m đập số ếp ưa và structợc chọnc
Các hàm tìm ki m theo nhi u tiêu chí khác nhau có trong c u trúc d li uếp ền hàng nhập theo các ngày trong tháng ất quan trọng cũng như không thể ữ liệu vào ệu vàohàng nh p bao g m: Mã hàng, Tên hàng, Đ n v , Ngày nh p, S lập số ồng thời cung cấp cho chúng ta hiểu biết về các giải thuật tác ơ bản của ị danh sách ập số ố ưa và structợc chọnng, Đ nơ bản củagiá, Thành ti n.ền hàng nhập theo các ngày trong tháng
Trang 18for (int i = 0; i < n; i++) {
if (strcmp(A[i].ten, text) == 0) {showLine(A,i,dem); // in ra dòng hàng nhập tìm được
dem++;
}}
- Input: Danh sách hàng nh p hi n t iập số ệu vào ại các dữ liệu giao dịch
- Output: Danh sách hàng nh p đã đập số ưa và structợc chọnc xóa m t hàng theo yêu c u nh pặt ra yêu cầu về tính toán lợi ần rất quan trọng cũng như không thể ập sốvào
Trang 19&&((soLuong_temp == -1) ? 1: (A[i].soLuong == soLuong_temp))
&&((donGia_temp == -1) ? 1: (A[i].donGia == donGia_temp))
&&((thanhTien_temp == -1) ? 1: (A[i].thanhTien ==
thanhTien_temp))
)
&& i < n) {
Trang 20i++;
}write(A,n);
Gi i thu t xóa và ghi d li u có đ ph c t p là O(n)ập số ữ liệu vào ệu vào ức dữ liệu để giải quyết các bài toán sao ại các dữ liệu giao dịch
V y đ ph c t p c a gi i thu t xóa là O(n)ập số ức dữ liệu để giải quyết các bài toán sao ại các dữ liệu giao dịch ủa ập số
V K t qu ch ết kế cấu trúc dữ liệu ải thuật và tính độ phức tạp ương trinh ng trinh
1 Menu chính:
Ch a các m c đi u khi n qu n lý hàng nh pức dữ liệu để giải quyết các bài toán sao ụ ền hàng nhập theo các ngày trong tháng ển thị danh sách ập số
Đi u khi n b ng các phím ền hàng nhập theo các ngày trong tháng ển thị danh sách ằng thuật toán tìm kiếm này là số lần so sánh giữa thông ↓ ↑ và ch n b ng phím ENTERọc dữ liệu từ file đưa và struct ằng thuật toán tìm kiếm này là số lần so sánh giữa thông
Trang 212 Hi n th danh sách các hàng nh p ểu dữ liệu ị danh sách ật và tính độ phức tạp
Hi n th các trang lân c n b ng phím ển thị danh sách ị danh sách ập số ằng thuật toán tìm kiếm này là số lần so sánh giữa thông ↓ ↑
Nh n phím INSERT đ thêm thông tin ESC đ thoát ất quan trọng cũng như không thể ển thị danh sách ển thị danh sách
3 Thêm thông tin hàng nh p ật và tính độ phức tạp
Nh p các thông tin tập số ưa và structơ bản củang ng các vùng, n u nh p không đúng d li u ức dữ liệu để giải quyết các bài toán sao ếp ập số ữ liệu vào ệu vào
sẽ có thông báo và yêu c u nh p l i vùng đó ần rất quan trọng cũng như không thể ập số ại các dữ liệu giao dịch
Trang 234 Th ng kê thành ti n hàng nh p theo các ngày trong tháng ố ề tài: ật và tính độ phức tạp
5 S p s p hàng nh p theo các tiêu chí đ ắp xếp ết kế cấu trúc dữ liệu ật và tính độ phức tạp ược chọn c ch n ọc dữ liệu từ file đưa và struct
Trang 246 Tìm ki m và hi n th hàng nh n ết kế cấu trúc dữ liệu ểu dữ liệu ị danh sách ật và tính độ phức tạp
Trong menu “TIEU CHI TIM KIEM”, s d ng ↑ ↓ ENTER đ ch n m cử được lưu trữ k ụ ển thị danh sách ọc dữ liệu từ file đưa và struct ụ
Nh n phím Tap đ chuy n sang “THONG TIN CAN TIM”ất quan trọng cũng như không thể ển thị danh sách ển thị danh sách
Trang 257 Xóa hàng nh p: ật và tính độ phức tạp
Trang 26Nh p các thông tin c n xóa, chập số ần rất quan trọng cũng như không thể ưa và structơ bản củang trình sẽ xóa t t c các m u tin th a ất quan trọng cũng như không thể ẫu tin theo các tiêu chí khác nhau và hiển thị mẫu tin đó ỏ thì vấn đề
t t c các đi u ki n Thông tin nào không c n xét thì đ tr ng ất quan trọng cũng như không thể ền hàng nhập theo các ngày trong tháng ệu vào ần rất quan trọng cũng như không thể ển thị danh sách ố
Trang 27VI K t Lu n: ết kế cấu trúc dữ liệu ật và tính độ phức tạp
Đồ án đã giúp em hiểu rõ hơn về tầm quan trọng của phân tích thiết kế giải thuật trongquá trình xây dựng chương trình Qua đó, thấy được những giải pháp tối ưu cho vấn đề mình đặt ra về việc chọn cấu trúc dữ liệu và thuật toán phù hợp với từng mục đích đề tài
Đồ án đã trình bày rõ các vấn đề về giải thuật trong bài toán giản lý hàng nhập trong một tháng Đó là công việc hiển thị, bổ sung, sắp xếp, thống kê, xóa các mẫu tin của hàng nhập Tất cả được thực hiện rõ các chỉ tiêu về độ phức tạp cũng như tính đa dạng của bài toán Theo đó thì mỗi hàm tương ứng với mỗi giải thuật riêng, mỗi độ phức tạp riêng
Giao diện chương trình được bố trí trưc quan, dễ hiểu Sát cận với các thao tác điều khiển ứng dụng hằng ngày Mang lại sự gần gũi giữa sự tương tác của người với chương trình thực hiện
Tuy đã cố gắng nhưng do code giao diện không sử dụng API nên vẫn còn nhiều hạn chế về load giao diện
Trang 29typedef char MaHang[7];
typedef char Ten[15];
typedef char DonVi[10];
typedef int Ngay;
typedef int SoLuong;
typedef int DonGia;
typedef int ThanhTien;
typedef struct HangNhap{
Trang 30char menuChinh_1[4][50] = { " HIEN THI DANH SACH ", " BO SUNG DANH SACH ", " THONG KE ", " SAP XEP " };
char menuChinh_2[3][50] = { " TIM KIEM ", " XOA ", " THOAT " };
char menuSapXep_1[4][50] = { " MA HANG ", " TEN HANG ", " DON VI ", " NGAY NHAP " };
char menuSapXep_2[3][50] = { " SO LUONG ", " DON GIA ", " THANH TIEN " };
char menuTieuChi[7][18] = {" MA HANG "," TEN HANG "," DON VI "," NGAY NHAP "," SO LUONG "," DON GIA "," THANH TIEN "};
void gotoxy(int x, int y){
Trang 32* Input: Mang cau truc hang nhap
* Output: file da duoc luu du lieu cua mang cau truc
*/
void write(HN A[], int n){
int i;
FILE *f = fopen("HangNhap.txt", "w"); // mo file de ghi
if (f == NULL) thongBaoKhongLoadFile(); // neu file khong ton tai
// Ghi du lieu vao file
fprintf(f, "%3s%15s%10s%10s%10s%10s%10s", "ID","TenHang",
"DonVi", "NgayNhap", "SoLuong", "DonGia", "ThanhTien");
for (i = 0; i < n; i++) fprintf(f, "\n%3s%15s%10s%10d%10d%10d%10d", A[i].maHang, A[i].ten, A[i].donVi, A[i].ngayNhap, A[i].soLuong, A[i].donGia, A[i].thanhTien);
fclose(f); // Dong file
Trang 33A[i].ngayNhap = atoi(strtok(NULL, " "));A[i].soLuong = atoi(strtok(NULL, " "));
A[i].donGia = atoi(strtok(NULL, " "));
A[i].thanhTien = atof(strtok(NULL, " "));i++;
Trang 34gotoxy(43,13); printf("GIAM");sttTang = false;
}else {
setColor(11,12);
gotoxy(36,13); printf("TANG");setColor(11,6);
gotoxy(43,13); printf("GIAM");sttTang = true;
}break;
gotoxy(43,13); printf("GIAM");sttTang = false;
}else {
setColor(11,12);
gotoxy(36,13); printf("TANG");setColor(11,6);
Trang 35gotoxy(43,13); printf("GIAM");sttTang = true;
}break;
}}
Trang 36A[j] = A[j + 1];
A[j + 1] = temp;
}}
}
//Sap xep theo Ten
void sortGiam_ten(HN A[], int &n){
}
//Sap xep theo donVi
void sortGiam_donVi(HN A[], int &n){
printf("Sap xep theo don vi:\n");
Trang 37}
//Sap xep theo ngayNhap
void sortGiam_ngayNhap(HN A[], int &n){
printf("Sap xep theo ngay nhap: \n");
}
//Sap xep theo soLuong
void sortGiam_soLuong(HN A[], int &n){
printf("Sap xep theo so luong: \n");
Trang 38}
//Sap xep theo don gia
void sortGiam_donGia(HN A[], int &n){
printf("Sap xep theo don gia: \n");
}
// Sap xep theo ThanhTien
void sortGiam_thanhTien(HN A[], int &n){
}
Trang 39void sortTang_maHang(HN A[], int &n){
}
//Sap xep theo Ten
void sortTang_ten(HN A[], int &n){
}
//Sap xep theo donVi
void sortTang_donVi(HN A[], int &n){
int i, j;
Trang 40//Sap xep theo ngayNhap
void sortTang_ngayNhap(HN A[], int &n){
}
//Sap xep theo soLuong
void sortTang_soLuong(HN A[], int &n){
int i, j;
HN temp;
for (i = 1; i < n; i++)
for (j = 0; j < n - i; j++){