Báo cáo bài tập lớn Cấu trúc dữ liệu và giải thuật – Quản lý thu thuế Báo cáo bài tập lớn Cấu trúc dữ liệu và giải thuật – Quản lý thu thuế Báo cáo bài tập lớn Cấu trúc dữ liệu và giải thuật – Quản lý thu thuế Báo cáo bài tập lớn Cấu trúc dữ liệu và giải thuật – Quản lý thu thuế Báo cáo bài tập lớn Cấu trúc dữ liệu và giải thuật – Quản lý thu thuế
Xác định bài toán
Bài toán Quản lý thuế giúp nhân viên nắm bắt thông tin khách hàng, mặt hàng và hóa đơn, từ đó nâng cao hiệu quả quản lý hoạt động cửa hàng Ngoài ra, nó còn hỗ trợ nhân viên cửa hàng sách trong việc sắp xếp và thống kê dữ liệu khách hàng một cách hiệu quả.
Đối tượng được quản lý của bài toán gồm
Người đóng thuế, phiếu thu
- Người đóng thuế: mã người đóng thuế, mã thuế, tên công ty, địa chỉ, diện tích, quy mô, người đứng đầu
Phiếu thu là tài liệu quan trọng trong quá trình thu nộp thuế, bao gồm các thông tin như mã phiếu thu, ngày lập, tháng, năm, số tiền cần nộp, số tiền giảm trừ, mã người nộp thuế và họ tên người đóng Số tiền cần đóng được tính bằng tổng tiền trừ đi số tiền giảm trừ.
Xác định thuật toán
Danh sách liên kết đơn
Để thực hiện các chức năng trên ta cần:
Khai báo cấu trúc dữ liệu
Khai báo cấu trúc một nút trong danh sách liên kết đơn
Khai báo danh sách liên kết đơn
Khởi tạo danh sách rỗng
Tạo nút mới với thành phần dữ liệu x
Quản lý thu thuế Hà
1.Nhập thông tin: mã người đóng thuế, mã thuế, tên công ty, địa chỉ, diện tích, quy mô, người đứng đầu
2.In danh sách người đóng thuế
3.Lưu DS người đóng thuế vào file
4.Đọc DS người đóng thuế từ file
5.Tìm kiếm người đóng thuế theo mã
6.Sắp xếp theo diện tích
7.Xoá người đóng thuế theo mã
9.Cho danh sách công ty có địa chỉ tại Hà
Để thực hiện việc nộp thuế, bạn cần nhập các thông tin sau: mã phiếu thu, ngày lập, tháng, năm, số tiền cần nộp, số tiền giảm trừ, mã người nộp thuế, và tổng tiền được tính bằng cách lấy số tiền cần nộp trừ đi tiền giảm trừ Cuối cùng, ghi rõ tên người lập phiếu.
Trong bài viết này, chúng ta sẽ tìm hiểu về cách quản lý phiếu thu trong hệ thống Đầu tiên, chúng ta sẽ xem xét cách tạo và lưu danh sách phiếu thu vào file Tiếp theo, chúng ta sẽ tìm hiểu cách đọc danh sách phiếu thu từ file để dễ dàng truy cập Ngoài ra, chúng ta cũng sẽ hướng dẫn cách tìm kiếm phiếu thu theo mã phiếu và cuối cùng là cách sắp xếp phiếu theo số tiền phải đóng theo thứ tự tăng dần.
Thuật toán bắt đầu bằng cách nhập vào một danh sách gồm n phần tử Sau đó, một vòng lặp được thực hiện từ i=1 đến n, trong đó nếu i nhỏ hơn hoặc bằng n, thuật toán sẽ thêm một phần tử mới vào danh sách Khi i vượt quá n, thuật toán sẽ dừng lại.
*Mô tả thuật toán: Duyệt từ đầu đến cuối danh sách Với mỗi lần duyệt, xuất ra màn hình thông tin của khách hàng
1.3 Tìm kiếm hóa đơn có mã x
•Bước 2: Lặp trong khi (p!=NULL) và (p->infor.ma != x) thì p = p -> Next;
•Bước 3: oNếu p != NULL thì p trỏ đến phần tử cần tìm oNgược lại thì không tìm thấy phần tử cần tìm
+ Mô tả thuật toán: Sử dụng 2 con trỏ p, q dể duyệt và so sánh với nhau
So sánh giá trị của phần tử p và q nếu không đúng trật tự thì hoán đổi giá trị của p và q cho nhau
Vd: Sắp xếp tăng dần, nếu p -> infor.tt > q -> infor.tt (p-> infor.tt , q -> infor.tt); q = q -> next; op = p -> next;
Danh sách liên kết đôi
Khởi tạo danh sách rỗng
Sai p->infor.tt > q->infor.tt Đúng q = q->next p = p->next
Kết thúc Hoandoi (p->infor.tt,q->infor.tt) q = p -> next
Tạo nút mới p với thành phần dữ liệu x
Duyệt từ i=1 đến in thì kết thúc.
+ Mô tả thuật toán: Duyệt từ đầu đến cuối danh sách Với mỗi lần duyệt, xuất ra màn hình thông tin của mỗi sản phẩm.
2.3 Xóa sản phẩm ở cuối danh sách
Kiểm tra danh sách không rỗng
Lưu phần tử cuối tạm thời vào p
Chuyển phần tử cuối tới phần tử bên trái
Kiểm tra lại danh sách
DQ.Tail = DQ.Tail -> prev DQ.Tail -
3.1.Nhập danh sách trên file
-Khởi tạo danh sách rỗng
-Duyệt từng i=1 cho đến khi i Xóa p
-Kiểm tra: nếu danh sách chỉ có 1 phần tử, khi xóa đi phần tử cuối không còn.
3.4.Đếm phần tử trong ngăn xếp
-Bước 1: khởi tạo biến đếm = 0
-Bước 2: Kiểm tra danh sách còn phần tử và duyệt từ phần tử đầu đến phần tử cuối của danh sách
Nếu p -> Info == k thì tăng biến đếm lên 1 In ra màn hình giá trị biến đếm
VD: Đếm số sách có giá nhỏ hơn x
- Bước 1: p= Q.Head; //p trỏ từ đầu danh sách
-Bước 2: Kiểm tra danh sách còn phần tử và nếu chưa tìm thấy phần tử thì lặp trong khi (p!=NULL) và (p->Info != k) thì p = p -> Next;
- Bước 3: Nếu p != NULL thì p trỏ đến phần tử cần tìm Ngược lại thì không tìm thấy phần tử cần tìm
3.6.Đếm phần tử trong ngăn xếp
-Bước 1: khởi tạo biến đếm = 0
-Bước 2: Kiểm tra danh sách còn phần tử và duyệt từ phần tử đầu đến phần tử cuối của danh sách
Nếu p -> Info == k thì tăng biến đếm lên 1 In ra màn hình giá trị biến đếm
VD: Đếm số sách có giá nhỏ hơn x
4.Hàng đợi: Để thực hiện các chức năng trên ta cần:
•Khai báo cấu trúc dữ liệu
•Khai báo cấu trúc một nút trong h àng đ ợi
•Kiểm tra hàng đợi rỗng
Nhập n danh sách và thông tin của từng khách hàng
Nhập n danh sách và thông tin của từng khách hàng
Cho i chạy từ i=1->n, nếu in thì kết thúc thuật toán.
Nhập n danh sách và thông tin của từng khách hàng
4.3Xoá bớt dữ liệu của danh sách
•Nếu Q.head==NULL thì kết thúc chương trình
•Nếu Q.head khác NULL ta gán p=Q.head; Q.Head=p->next Q.Head->prev=NULL.
4.4Tìm kiếm dữ liệu theo mã sách Mô tả thuật toán
Nếu p-> info masach==k thì in ra thông tin rồi kết thúc Nếu không thì p=p->next rồi lặp lại b2
Cài đặt chương trình
1 Danh sách liên kết đơn (Quản lý người nộp thuế)
#include using namespace std;
//===Quan Ly Nguoi Dong Thue(Danh sach lien ket don)== struct NGUOIDONGTHUE
{ int maNguoiDT; int maThue; char tenCongTy[100]; char diaChi[100]; float dienTich; char quyMo[20]; char nguoiDungDau[50];
//ds lk don struct Node
NGUOIDONGTHUE info; struct Node*next;
//khoi tao ds rong void KhoiTao(List &Q)
//tao nut chua thong tin can bo
Node *pNDT; pNDT=new Node; if(pNDT==NULL)
{ cout