Xây dựng chương trình quản lý hàng hóa gồm có các thuộc tính

17 1.4K 7
Xây dựng chương trình quản lý hàng hóa gồm có các thuộc tính

Đ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

Trong khoa học máy tính, cấu trúc dữ liệu là cách lưu dữ liệu trong máy tính sao cho nó có thể sử dụng được một cách hiệu quả. Cấu trúc dữ liệu được triển khai bằng các kiểu dữ liệu, các tham chiếu và các phép toán trên đó được cung cấp bởi một ngôn ngữ lập trình. Để giải quyết bài toán ta có thế nhiều thuật toán khác nhau, giải thuật ra đời. giải thuật là các câu lệnh chặt chẽ, rõ rang xác định một trình tự các thao tác trên một đối tượng nào đó. Khi đã xác định được cấu trúc dữ liệu thích hợ, người lập trình sẽ bắt đầu tiến hành xây dựng giải thuật tương ứng theo yêu cầu của đề bài đặt ra trên cơ sở của cấu trúc dữ liệu đã được chọn. để giải quyết một vấn đề có thể có nhiều phương pháp do vậy sự lựa chọn phương pháp phù hợp là rất quan trọng.

Lời Mở Đầu Trong khoa học máy tính, cấu trúc dữ liệu là cách lưu dữ liệu trong máy tính sao cho nó có thể sử dụng được một cách hiệu quả. Cấu trúc dữ liệu được triển khai bằng các kiểu dữ liệu, các tham chiếu và các phép toán trên đó được cung cấp bởi một ngôn ngữ lập trình. Để giải quyết bài toán ta có thế nhiều thuật toán khác nhau, giải thuật ra đời. giải thuật là các câu lệnh chặt chẽ, rõ rang xác định một trình tự các thao tác trên một đối tượng nào đó. Khi đã xác định được cấu trúc dữ liệu thích hợ, người lập trình sẽ bắt đầu tiến hành xây dựng giải thuật tương ứng theo yêu cầu của đề bài đặt ra trên cơ sở của cấu trúc dữ liệu đã được chọn. để giải quyết một vấn đề có thể có nhiều phương pháp do vậy sự lựa chọn phương pháp phù hợp là rất quan trọng. Giải thuật phản ánh các phép xử lý còn đối tượng xử lý của giải thuật lại là dữ liệu, chính dữ liệu chứa đựng các thông tin để giải thuật. để xác định được giải thuật phù hợp cần thiết phải biết nó tác động đến loại dữ liệu nào. Như vậy, giải thuật và cấu trúc dữ liệu có mối quan hệ mật thiết với nhau được thể hiện qua công thức: Như vậy, khi đã có cấu trúc dữ liệu mà chưa tìm ra giải thuật thì không thể có chương trình và ngược lại không thể có thuật giải khi chưa có cấu trúc dữ liệu. một chương trình máy tính chỉ có thể được hoàn thiện khi có đầy đủ cả cấu trúc dữ liệu để lưu trữ dữ liệu và giải thuật để xử lý dữ liệu theo yêu cầu bài toán đặt ra. Chúng em cám ơn thầy Trương Công Đoàn đã giúp chúng em hoàn thiện bài tập, tìm hiểu và hiểu biết hơn về bộ môn này. 1 | P a g e B á o C á o B T L M ô n C ấ u t r ú c & g i ả i t h u ậ t d ữ l i ệ u Cấu trúc dữ liệu + Giải thuật = Chương trình MENU CHÍNH VÀO CHƯƠNG TRÌNH THOÁT NHẬP DANH SÁCH HHTÌM KIẾM SẢN PHẨMSẮP XẾP HH THEO ĐƠN GIÁ THỐNG KÊ SẢN PHẨM THEO ĐƠN GIÁ TÌM TÊN GẦN ĐÚNG HH I.GIỚI THIỆU PHÂN TÍCH ĐỀ TÀI 1. Đề bài : - Xây dựng chương trình quản lý hàng hóa gồm có các thuộc tính: tên hàng, số lượng, đơn giá, ngày sản xuất. Sử dụng mảng cấu trúc để lưu trữ: • Thêm các thuật toán như: tìm kiếm tuần tự để tìm 1 sản phẩm trong danh sách hàng hóa • Thêm thuật toán sắp xếp nổi bọt để sắp xếp hàng hóa theo đơn giá • Các yêu cầu khác như: lưu danh sách hàng hóa vào file text • Xác định menu cho chương trình để người dùng sử dụng • Xác định thêm các chức năng khác như: thống kê theo đơn giá • Xác định chức năng tìm kiếm theo tên hàng( cho phép người dùng nhập gần đúng tên hàng có thể tìm được) 2. Xác định dữ liệu cần lưu trữ trong đề tài - Yêu cầu: Liệt kê các thành phần dữ liệu cần quản lý, chỉ rõ kiểu tương ứng và đưa ra một bộ giá trị mẫu. Các thành phần dữ liệu cần quản lý.  char tensp[20];  int soluong;  int dongia;  char ngaysx[10]; Bộ giá trị mẫu Tensp: Samsung s4. Soluong: 100. Dongia: 15 000 000. Ngaysx: 12/12/2013 3. Xác định chức năng cần thực hiện - Yêu cầu: Liệt kê các chức năng cần thực hiện và vẽ thành sơ đồ khối 2 | P a g e B á o C á o B T L M ô n C ấ u t r ú c & g i ả i t h u ậ t d ữ l i ệ u 4. Thiết kế menu - Yêu cầu: Chương trình bao gồm các menu gì? BANG MENU CHUC NANG 1.Nhap danh sach hang hoa. 2.Tim san pham trong danh sach. 3.Sap xep hang hoa theo don gia. 4.Thong ke san pham theo don gia 5.Cho phep tim ten hang gan dung. De thoat chuong trinh xin moi nhap 0: II. PHÂN TÍCH CHƯƠNG TRÌNH 1.Các thư viện cần khai báo <stdio.h> : Thư viện chứa các hàm vào/ ra chuẩn (standard input/output). Gồm các hàm printf(), scanf(), getc(), putc(), gets(), puts(), fflush(), fopen(), fclose(), fread(), fwrite(), getchar(), putchar(), getw(), putw()… - Khai báo : #include <stdio.h> 3 | P a g e B á o C á o B T L M ô n C ấ u t r ú c & g i ả i t h u ậ t d ữ l i ệ u <conio.h> : Thư viện chứa các hàm vào ra trong chế độ DOS (DOS console). Gồm các hàm clrscr(), getch(), getche(), getpass(), cgets(), cputs(), putch(), clreol(),… - Khai báo : #include <conio.h> <string.h>: Để điều chỉnh nhiều loại dãy kí tự. - Khai báo : #include <string.h> <stdlib.h> : Dùng để xúc tiến nhiều phép toán, bao gồm sự chuyển đổi, các số giả ngầu nhiên, cấp phát vùng nhớ, kiểm soát quá trình, môi trường, tín hiệu, tìm kiếm, và xếp thứ tự - Khai báo : #include <stdlib.h> 2.Khai báo mảng cấu trúc sử dụng trong chương trình. Khai báo kiểu cấu trúc là struct với tên cấu trúc là QL struct QL Cấu trúc thông tin hàng hóa: Tên hàng hóa: kiểu char, tối đa 20 ký tự Số lượng: kiểu int Đơn giá: kiểu int Ngày sản xuất: kiểu char, tối đa 10 ký tự char tensp[20]; int soluong; int dongia; char ngaysx[10]; 3.Các giải thuật về sắp xếp Yêu cầu: Trình bày thuật toán sắp xếp được sử dụng để cài đặt trong bài (nếu có). Thuật toán gồm có: ý tưởng, các bước, cài đặt, ví dụ minh họa tương ứng Sử dụng thuật toán nổi bọt để sắp xếp hàng hóa tang dần theo đơn giá - Ý tưởng : Duyệt nhiều lần từ cuối lên đầu dãy, tiến hành đổi chỗ 2 phần tử liên tiếp nếu chúng ngược thứ tự. Đến một bước nào đó, khi không có phép đổi chỗ nào xảy ra thì toàn bộ dãy đã được sắp xếp. - Mô tả và các bước :  Đầu vào : n-số phần tử mảng. a[]- mảng chứa các phần tử cần sắp xếp.  Đầu ra : a[] – mảng đã được sắp xếp  Các bước thuật toán : B1.i=0 B2.j=n-1 4 | P a g e B á o C á o B T L M ô n C ấ u t r ú c & g i ả i t h u ậ t d ữ l i ệ u Trong khi j>I thực hiện : + Nếu a[j]<a[j-1] thì hoán đổi 2 phần tử + j=j-1 B3.i=i+1 Nếu i>n-1 = > hết dãy và dừng thuật toán. Ngược lại lặp lại bước 2. - Cài đặt : code của hàm. void BubbleSort(QL a[],int n) { int i,j; QL tg; for(i=0;i<n-1;i++) for(j=n-1;j>i;j ) if(a[j].dongia<a[i].dongia) { tg=a[j]; a[j]=a[j-1]; a[j-1]=tg; } } - Ví dụ minh họa tương ứng : 4.Các giải thuật về tìm kiếm. Yêu cầu: Trình bày thuật toán tìm kiếm được sử dụng để cài đặt trong bài (nếu có). Thuật toán gồm có: ý tưởng, các bước, cài đặt, ví dụ minh họa tương ứng Sử dụng thuật toán tìm kiếm tuần tự để tìm kiếm sản phẩm cần tìm theo tên của sản phẩm. 5 | P a g e B á o C á o B T L M ô n C ấ u t r ú c & g i ả i t h u ậ t d ữ l i ệ u - Ý tưởng : Dùng thuật toán tìm kiếm để tìm kiếm một phần tử cho trước trong một danh sách bằng cách duyệt lần lượt từng phần tử của danh sách đó cho đến lúc tìm thấy giá trị mong muốn hay đã duyêt qua toàn bộ danh sách. - Các bước thực hiện: Bước 1: Cần phải tạo một mảng kiểu kí tự để lưu trữ thông tin Tên sản phẩm cần tìm do người dùng nhập vào sau đó tạo lên yêu cầu nhập vào Tên sản phẩm cần tìm: k=0; char namesp[20]; printf("\nXin moi nha ten san pham can tim:"); Dùng hàm Search đưa vào một chuỗi có tên “namesp” tối đa gồm 20 ký tự. Bước 2 : Tạo vòng lặp - Dùng lệnh “for(int i=0;i<n;i++)” để tìm kiếm lặp đi lặp lại, duyệt từ đầu đến hết danh sách. Dùng lệnh “strcmp” để so sánh duyệt tìm tất cả các ký tự từ trái qua phải. Nếu như: “tên sản phẩm=namesp” thì in ra thông tin sản phẩm cần. Nếu duyệt đến cuối danh sách mà ko thấy thì sẽ ra khỏi vòng lặp, báo không tìm thấy sau đó thoát ra khỏi hàm - Cài đặt: code của hàm. int Search(QL a[],int n,int k) { k=0; char namesp[20]; printf("\nXin moi nhap ten san pham can tim:"); fflush(stdin); gets(namesp); system("cls"); for(int i=0;i<n;i++) { if(strcmp(a[i].tensp,namesp)==0) { printf("thong tin san pham can tim la :\n\n "); tieude(); xuatsp(a[i],k); } } 6 | P a g e B á o C á o B T L M ô n C ấ u t r ú c & g i ả i t h u ậ t d ữ l i ệ u - Kết quả minh họa : 5.Hàm nhập xuất dữ liệu a) Nhập dữ liệu: Để lưu các thông tin của nhiều sản phẩm cần phải sử dụng một mảng một chiều kiểu dữ liệu là cấu trúc quản lý sản phẩm.Và yêu cầu từ người dùng khai báo số phần tử cần thêm vào void nhapds(QL a[],int &n) { printf("\nNHAP SO LUONG SAN PHAM : "); fflush(stdin); scanf("%d",&n); for(int i=0; i<n; i++) { printf("\nNhap thong tin san pham thu: %d \n",i+1); nhapsp(a[i]); } } 7 | P a g e B á o C á o B T L M ô n C ấ u t r ú c & g i ả i t h u ậ t d ữ l i ệ u Sau đó sử dụng vòng lặp “for(int i=0; i<n; i++)” để thực hiện n bước nhập cho n phần tử Bước nhập phần tử gồm: tên hàng hóa, số lượng, đơn giá, ngày sản xuất được thực hiện theo hàm sau: void nhapsp(QL &p) { printf(" +) Nhap ten san pham : "); fflush(stdin); gets(p.tensp); printf(" +) Nhap so luong : "); fflush(stdin);scanf("%d",&p.soluong); printf("\n +) Nhap don gia : "); fflush(stdin); scanf("%d",&p.dongia); printf("\n +) Nhap ngay san xuat : "); fflush(stdin); gets(p.ngaysx); } b) Xuất dữ liệu: • Xây dựng hàm để hiện thị tiêu đề của các sản phẩm void tieude() { 8 | P a g e B á o C á o B T L M ô n C ấ u t r ú c & g i ả i t h u ậ t d ữ l i ệ u printf(" STT | Ten san pham | So luong | Don gia | Ngay san xuat\n"); printf(" \n"); } • Xây dựng hàm xuất từng sản phẩm một. void xuatsp(QL p,int &k) { k++; printf("%-10d%-20s%-15d%-15d%-15s\n",k,p.tensp,p.soluong, p.dongia,p.ngaysx); } • Xây dựng hàm xuất cả danh sách sản phẩm. void xuatds(QL a[],int n,int k) { k=0; tieude(); for (int i=0;i<n;i++) xuatsp(a[i],k); } - Hình ảnh minh họa : 9 | P a g e B á o C á o B T L M ô n C ấ u t r ú c & g i ả i t h u ậ t d ữ l i ệ u 6. Các hàm khác. a. Ghi danh sách mặt hàng vào tệp void ghitep (QL a[], int &n) { FILE *f; f=fopen("danh sach san pham.txt","w+b"); if(f==NULL) { printf("Loi mo tep !"); getch(); return; } for(int i=0;i<n;i++) fwrite(&a[i],sizeof(a[i]),1,f); fclose(f); } b. Đọc danh sách mặt hàng từ tệp void doctep (QL a[], int &n) { FILE *f; f=fopen("danh sach san pham.txt","r+b"); if(f==NULL) { printf("Loi mo tep!"); getch(); return; } int i=0; while(fread(&a[i],sizeof(a[i]),1,f)!=0) i++; n=i; fclose(f); } c. Xây dựng menu cho người dùng sử dụng • Đưa ra bản menu chức năng để cho người sử dụng chọn các chức năng của chương trình đã được xây dựng. • Code void menu() 10 | P a g e B á o C á o B T L M ô n C ấ u t r ú c & g i ả i t h u ậ t d ữ l i ệ u [...]... trùng với tên sản phẩm có trong bài thì đưa ra kết quả chi tiết của sản phẩm đó dùng lệnh “if(strstr(a[i].tensp,s2)!=NULL)” 13 | P a g e B á o C á o B T L M ô n C ấ u t r ú c & g i ả i t h u ậ t d ữ l i ệ u Và ngược lại đưa ra kết quả là không tìm thấy 7 Chương trình chính • Chức năng : - Gọi và thực hiện các hàm chức năng khi người sử dụng nhập yêu cầu chức năng • Code chương trình chính main() { int... printf("\n"); x=1; } } if(x==1) printf("\n -\n"); x=0; for(int j=i+1;j . putch(), clreol(),… - Khai báo : #include <conio.h > <string.h > : Để điều chỉnh nhiều loại dãy kí tự. - Khai báo : #include <string.h > <stdlib.h > : Dùng để xúc tiến nhiều. môi trường, tín hiệu, tìm kiếm, và xếp thứ tự - Khai báo : #include <stdlib.h > 2.Khai báo mảng cấu trúc sử dụng trong chương trình. Khai báo kiểu cấu trúc là struct với tên cấu trúc là QL struct. putchar(), getw(), putw()… - Khai báo : #include <stdio.h > 3 | P a g e B á o C á o B T L M ô n C ấ u t r ú c & g i ả i t h u ậ t d ữ l i ệ u <conio.h > : Thư viện chứa các hàm vào

Ngày đăng: 14/07/2014, 23:04

Từ khóa liên quan

Mục lục

  • I.GIỚI THIỆU PHÂN TÍCH ĐỀ TÀI

    • 1. Đề bài :

    • 2. Xác định dữ liệu cần lưu trữ trong đề tài

    • 3. Xác định chức năng cần thực hiện

    • 4. Thiết kế menu

    • II. PHÂN TÍCH CHƯƠNG TRÌNH

      • 1. Các thư viện cần khai báo

      • 2. Khai báo mảng cấu trúc sử dụng trong chương trình.

        • 3. Các giải thuật về sắp xếp

        • 4. Các giải thuật về tìm kiếm.

        • 5. Hàm nhập xuất dữ liệu

          • a) Nhập dữ liệu:

          • b) Xuất dữ liệu:

          • 6. Các hàm khác.

            • a. Ghi danh sách mặt hàng vào tệp

            • b. Đọc danh sách mặt hàng từ tệp

            • c. Xây dựng menu cho người dùng sử dụng

            • d. Thống kê theo đơn giá

            • e. Xây dựng chức năng tìm kiếm gần đúng theo tên hàng

            • 7. Chương trình chính

Tài liệu cùng người dùng

Tài liệu liên quan