1. Trang chủ
  2. » Công Nghệ Thông Tin

đồ án giải thuật và lậptrình

25 423 1

Đ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

Thông tin cơ bản

Định dạng
Số trang 25
Dung lượng 269,69 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

ĐỀ TÀI Quản lý vật tư.Thực hiện các yêu cầu liên quan đến bài toán quản lý vật tư: Xây dựng chương trình quản lý đọc dữ liệu từ file văn bản có lưu trữ khoảng 10-20 mẫu tin và lưu vào

Trang 1

LỜI NÓI ĐẦU

Cấu trúc dữ liệu và Phân tích, thiết kế giải thuật là hai học phần rất quan trọng đối với ngườilập trình Học phần này được xem như nền tảng của lập trình máy tính Nó là cơ sở vũngchắc để giải quyết nhiều bài toán, đồng thời cung cấp cho chúng ta hiểu biết về các giảithuật tác động lên dữ liệu, cũng như cách tổ chức dữ liệu hiệu quả để tối ưu bàitoán

Sau khi học xong học phần lí thuyết, nhóm chúng em đã nghiên cứu và thực hiện đồ án nàynhư là một cách để củng cố và mở rộng kiến thức Thông qua quá trình thực hiện đồ án,chúng em đã nắm bắt được những kỹ thuật quan trọng của việc xây dựng cấu trúc dữ liệu vàphân tích, thiết kế giải thuật sao cho tối ưu nhất

Bài toán “Quản lý vật tư” mà nhóm chúng em nghiên cứu và trình bày trong báo cáo sau

Trang 2

ĐỀ TÀI Quản lý vật tư.

Thực hiện các yêu cầu liên quan đến bài toán quản lý vật tư: Xây

dựng chương trình quản lý đọc dữ liệu từ file văn bản có lưu trữ

khoảng 10-20 mẫu tin và lưu vào mảng một chiều sau đó thực hiện

các chức năng sau:

1) In danh sách các thông tin của tất cả các đối tượng 

2) Bổ sung thêm 1 đối tượng vào danh sách 

3) Tìm kiếm mẫ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 

4) Chèn mẫu tin sao cho mảng vẫn được sắp theo thứ tự 

5) Xóa 1 mẫu tin

Quản lý vật tư:

 Thông tin vật tư cần quản lý gồm: mã vật tư, tên vật tư, loại vật tư, đơn vị tính,

ngày nhập (ngày, tháng, năm), nhà sản xuất, số lượng, đơn giá, thành tiền Bổ

sung các chức năng sau: 

 Xóa các vật tư có có số lượng lớn hơn 100 

 Tính thành tiền (TT) = số lượng * đơn giá và được giảm theo qui ước: 

In ra bảng thống kê theo loại vật tư gồm các cột: loại vật tư, số lượng,

tổng tiền Quản lý vật tư

Đồ án Giải thuật và lập trình

SVTH: Ngô Trường Phạm Quang - 12T2, Nguyễn Thị Xuân Huệ - 12T2 2

Trang 3

MỤC LỤC

LỜI NÓI ĐẦU 1

ĐỀ TÀI 2

MỤC LỤC ……… 3

I GIỚI THIỆU ĐỀ TÀI……….…………4

1 Lý do chọn đề tài……….……4

2 Mục tiêu của đề tài……… ……….……….4

3 Phạm vi nghiên cứu……….………4

4 Phương pháp nghiên cứu……….………4

II CẤU TRÚC DỮ LIỆU……….……… 4

1 Danh sách đặc……… ………4

1.1 Ưu điểm và nhược điểm của danh sách đặc………… ……….………….4

1.2 Ứng dụng của danh sách đặc……….……….……….5

1.3 Các thao tác cơ bản trên danh sách đặc……….……… 5

1.4 Mô hình………5

III THỰC HIỆN ĐỀ TÀI……….…… ………6

1 Mô tả đề tài……….………… 6

2 Phương hướng giải quyết và ứng dụng……….……… ……… 6

3 Phan tích thiết kế chương trình……….………7

3.1 Dữ liệu vào ……….………7

3.2 Dữ liệu ra……… ….…….……… 7

4 Các chức năng của chương trình……… 8

4.1 Liệt kê danh sách vật tư………… ……….……

……….8

4.2 Tìm kiếm vật tư.………9

I.

Đồ án Giải thuật và lập trình

SVTH: Ngô Trường Phạm Quang - 12T2, Nguyễn Thị Xuân Huệ - 12T2 3

Trang 4

II. GIỚI THIỆU ĐỀ TÀI.

1

Lí do chọn đề tài :

Công nghệ thông tin là một trong những ngành phát triển vượt bậc trong những năm gầnđây Ngày nay với sự phát triển nhanh chóng của xã hội thì công nghệ thông tin được ứngdụng rộng rãi ở hầu hết tất cả các lĩnh vực và ngày càng đóng vai trò quan trọng, trở thànhmột phần thiết yếu trong đời sống hằng ngày Công nghệ thông tin là một ngành đòi hỏi ởngười học một nền tảng kiến thức vững chắc, sự tư duy logic cao, hiểu biết sâu rộng trênnhiều lĩnh vực Với chúng em hiện đang là những sinh viên công nghệ thông tin cần phải có

sự đầu tư, không ngừng học hỏi để nâng cao kiến thức Do đó để củng cố lại kiến thức đã

học, đề tài mà em chọn để thực hiện đồ án là: Bài toán Quản lí vật tư bằng danh sách

đặc.

Quản lý vật tư là một đề tài không còn mới mẻ với các bài toán quản lý Việc đưa tin học

vào ứng dụng để quản lý là rất hữu ích, vì chúng ta bỏ ra rất ít thời gian mà lại thu được hiệuquả cao, rất chính xác và tiện lợi nhanh chóng

2 Mục tiêu của đề tài:

- Củng cố lại kiến thức đã học về cấu trúc dữ liệu nói chung và danh sách đặc nói riêng

- Rèn luyện kĩ năng lập trình trên ngôn ngữ C

- Ứng dụng lý thuyết đã học giải quyết bài toán ứng dụng cụ thể

-3

Phạm vi nghiên cứu :

- Lí thuyết về danh sách đặc

- Bài toán quản lí vật tư

4 Phương pháp nghiên cứu:

-Nghiên cứu giáo trình Cấu trúc dữ liệu và giải thuật

-Tham khảo các tài liệu liên quan trên Internet

II CẤU TRÚC DỮ LIỆU.

1 Danh sách đăc:

- Dùng 1 mảng để lưu trữ liên tiếp các phần tử, bắt đầu từ vị trí đầu tiên

- Ta ước lượng số phần tử tối đa của danh sách(Trong đề tài yêu cầu lưu trữ khoảng 10 -20 mẫu tin vào mảng một chiều)

- Lưu trữ độ dài hiện tại của danh sách

1.1. Ưu điểm và nhược điểm của danh sách đặc:

Do các phần tử được lưu trữ liên tiếp nhau trong bộ nhớ, do vậy danh sách đặc cócác ưunhược điểm sau đây:

Ưu điểm:

- Mật độ sử dụng bộ nhớ của danh sách đặc là tối ưu tuyệt đối (100%)

- Việc truy xuất và tìm kiếm các phần tử của danh sách đặc là dễ dàng vì cácphầntử đứng liền nhau nên chúng ta chỉ cần sử dụng chỉ số để định vị vị trí cácphần tửtrong danh sách (định vị địa chỉ các phần tử)

Trang 5

và thao tác khá nhiều trong quá trình lập trình trên nhiều ngôn ngữ lập trình khác nhau.

1.3. Các thao tác cơ bản trên danh sách đặc:

a. Khởi tạo danh sách (Initialize)

b. Tạo mới danh sách/ Nhập danh sách

c. Thêm một phần tử vào danh sách

d. Tìm kiếm một phần tử trong danh sách

e. Loại bỏ bớt một phần tử ra khỏi danh sách

f. Cập nhật giá trị cho một phần tử trong danh sách

g. Sắp xếp thứ tự các phần tử trong danh sách

h. Tách một danh sách thành nhiều danh sách

i. Nhập nhiều danh sách thành một danh sách

j. Sao chép một danh sách

k. Hủy danh sách

1.4 Mô hình:

Trang 6

III THỰC HIỆN ĐỀ TÀI.

1 Mô tả đề tài:

Vật tư là bộ phận cơ bản trong toàn bộ tư liệu sản xuất của xã hội, bao gồm nguyên liệu,vật liệu, nhiên liệu, năng lượng và thiết bị máy móc

Có thể phân loại vật tư theo các ngành nghề kinh doanh, sản xuất như sau:

- Vật tư nông nghiệp

Để giải quyết bài toán quản lý vật tư, có nhiều giải pháp khác nhau đã được đưa ra và ứngdụng trong thực tế như:

- Quản lý thông qua sổ sách

- Quản lý thông qua phần mềm đa mục đích (Microsoft Excel, Microsoft Access,…)

- Quản lý thông qua phần mềm đơn mục đích (Các phần mềm chuyên quản lý vật tư)

Với mỗi phương pháp lại có nhiều hướng tiếp xúc và giải quyết vấn đề tối ưu khác nhau.Tuy nhiên, trong thời đại Công nghệ thông tin phát triển hiện nay, việc quản lý một cửahàng vật tư nói riêng hay cửa hàng buôn bán nói chung đã trở nên đơn giản hơn rất nhiềuvới những phần mềm quản lý hữu hiệu và tiện lợi

2 Phương hướng giải quyết và ứng dụng.

Với mục đích tạo một phần mềm quản lý vật tư đơn giản nhưng vẫn cung cấp đầy đủ các chức năng cơ bản của một phần mềm quản lý, nhóm chúng em đã nghiên cứu yêu cầu bài toán đặt ra một cách kỹ lưỡng, khảo sát thực tế các giải pháp quản lý, các cửa hàng vật

tư hiện có,… và đã chọn hướng tiếp cận cụ thể vào bài toán quản lý vật tư của một cửa hàngvật tư nông nghiệp Để quản lý các loại vật tư khác, giải pháp của chúng em đưa ra vẫn giải quyết ổn thỏa các yêu cầu, chỉ cần chỉnh sửa lại mã nguồn hiển thị sao cho phù hợp với yêu cầumới

Trang 7

3 Phân tích thiết kế chương trình.

4 Các chức năng của chương trình.

Khi người dùng lựa chọn các chức năng theo số thứ tự, giao diện phần mềm sẽ thay đổitùy theo lựa chọn được nhập vào và thực hiện các chức năng tương ứng Dưới đây nhómchúng em chỉ trình bày một số chức năng cơ bản của phần mềm, những chức năng khác vàchức năng tương tự sẽ được thể hiện khi sử dụng chương trình

Trang 8

4.1 Liệt kê danh sách vật tư.

- Duyệt danh sách vật tư trong file

- In thông tin vật tư ra màn hình

Trang 9

4.2 Tìm kiếm vật tư.

- Dữ liệu vào: mã vật tư nhập từ bàn phím

- Dữ liệu ra: Thông tin vật tư theo mã vật tư đã nhập

-Thuật toán: duyệt danh sách đặc chứa tất cả thông tin vật tư, đến khi tìm thấy mã vật tưgiống với mã vật tư đã nhập vào thì lấy dữ liệu của vật tư tìm được thêm vào danh sáchtìm kiếm rồi in danh sách tìm kiếm được ra màn hình

Nếu không tìm thấy, hiển thị thông báo “Không tìm thấy”

4.3 Xóa vật tư.

- Dữ liệu vào: mã vật tư

- Dữ liệu ra: Hiển thị lại danh sách vật tư sau khi đã xóa vật tư vừa nhập

- Thuật toán: Tìm kiếm vị trí của mã vật tư vừa nhập trong danh sách vật tư, sau đó xóa vật tư tại vị trí đó của danh sách Thông báo thành công nếu đã xóa vật tư

Trang 10

hoặc báo không thành công nếu có lỗi Hiển thị danh sách vật tư sau khi xóa vật tư vừa nhập.

4.4 Xóa vật tư có số lượng > 100.

- Dữ liệu vào: danh sách vật tư được lấy từ file

- Dữ liệu ra: danh sách vật tư còn lại sau khi xóa các vật tư có số lượng lớn hơn 100

- Thuật toán: Duyệt danh sách vật tư, nếu gặp các vật tư có số lượng lớn hơn 100 thì xóa vật

tư tại vị trí đó Hiển thị danh sách vật tư sau khi đã xóa

Thông báo xóa không thành công nếu không có vật tư có số lượng lớn hơn 100

Trang 11

4.5 Thêm vật tư.

- Dữ liệu vào: thông tin của vật tư cần chèn vào được nhập từ bàn phím

- Dữ liệu ra: danh sách vật tư sau khi chèn

- Thuật toán: sắp xếp lại danh sách vật tư trước khi chèn Duyệt danh sách vật tư, so sánh giá trị mã vật tư vừa nhập với các mã vật tư trong danh sách, tìm ra vị trí cần chèn Hiển thị lại danh sách vật tư sau khi đã chèn

4.6 Tính thành tiền cho vật tư.

- Dữ liệu vào: Danh sách vật tư

- Dữ liệu ra: Danh sách vật tư với cột thành tiền đã được tính toán như sau:

Thành tiền = Số lượng * Đơn giá Thành tiền được giảm theo quy ước

- Giảm 25% nếu Số lượng >200

- Giảm 10% nếu 100 < Số lượng <= 200

- Giảm 0% nếu Số lượng <=100

- Thuật toán: Duyệt danh sách vật tư, tính giá trị thành tiền cho mỗi vật tư theo quy ước trên

Trang 12

4.7 Lưu thay đổi vào file.

- Dữ liệu vào: danh sách vật tư say khi được chỉnh sửa

- Dữ liệu ra: file chứa thông tin các vật tư sau khi được thực hiện các thay đổi bằng chương trình

- Thuật toán: Duyệt từng phần tử của danh sách vật tư, ghi mỗi phần tử thành một dòng riêng trong file xuất ra

Hiển thị thông báo lưu file thành công

4.8 Sắp xếp theo mã vật tư.

- Dữ liệu vào: danh sách vật tư được lấy từ file

- Dữ liệu ra: danh sách vật tư đã được sắp xếp

- Thuật toán: duyệt danh sách vật tư, dùng giải thuật nổi bọt để sắp xếp các phần tử vật tư theo mã vật tư tăng dần

Trang 13

Thuật toánTìm kiếmSắp xếp Tính toán và hiển thị

4.9 Thống kê theo loại vật tư.

- Dữ liệu vào: danh sách vật tư được lấy từ file

- Dữ liệu ra: bảng thống kê số lượng và tổng tiền theo loại vật tư

- Thuật toán: Gọi hàm tình thành tiền Tạo một mảng dùng để chứa tất cả các tên loại vật tư,duyệt mảng vừa tạo để xóa các phần tử trùng lặp ta được mảng chứa các tên loại vật tư phânbiệt Duyệt mảng vật tư được lấy từ file, kiểm tra phân theo từng loại vật tư để tính toán tổng số lượng và tổng thành tiền

5 Đánh giá độ phức tạp của thuật toán.

a Các thuật toán sử dụng trong bài:

Các thuật toán trong bài chủ yếu xoay quanh các vấn đề tìm kiếm và sắp xếp danh sáchcác vật tư trong mảng một chiều Chính vì vậy, thao tác duyệt mảng tuần tự theo vòng lặpfor, duyệt qua n phần tử vật tư hiện có được sử dụng nhiều nhất Bên cạnh đó còn có cácthao tác khác nhỏ khác như phép so sánh, phép cộng, trừ, nhân, chia, thao tác hoán đổi vị trícủa các mẫu tin có trong danh sách,

Để đánh giá độ phức tạp của thuật toán sử dụng trong đồ án, nhóm chúng em sẽ chia các thuật toán thành các nhóm có những tính chất chung để tiện trong việc đánh giá và đưa ra kết quả Việc đánh giá các thuật toán này được dựa trên phương pháp lý thuyết để đảm bảo tính đúng đắn khách quan của bài toán đặt ra

b Thuật toán sắp xếp

Để thực hiện các yêu cầu của bài toán về sắp xếp tăng dần và giảm dần theo nhiều tiêuchí, nhóm chúng em đã quyết định lựa chọn thuật toán sắp xếp Sắp xếp nổi bọt (tiếngAnh: bubble sort) là một thuật toán sắp xếp đơn giản, với thao tác cơ bản là so sánh hai

phần tử kề nhau, nếu chúng chưa đứng đúng thứ tự thì đổi chỗ (swap) Có thể tiến hành từ

trên xuống (bên trái sang) hoặc từ dưới lên (bên phải sang) Sắp xếp nổi bọt còn có tên

là sắp xếp bằng so sánh trực tiếp Nó sử dụng phép so sánh các phần tử nên là một giải

Trang 14

thuật sắp xếp kiểu so sánh.

Ta chọn phép so sánh hai phần tử làm câu lệnh đặc trưng Tại mỗi vòng lặp for thứ i, ta phảithực hiện phép so sánh i lần Do đó tổng các phép so sánh là:

(n – 1) + (n – 2) + … + 2 + 1 = n(n-1)/2Như vậy độ phức tạp của thuật toán là O(n2)

Với việc lựa chọn 8 tiêu chí để sắp xếp: Mã vật tư, Tên vật tư, Loại vật tư, Ngày nhập, Nhà sản xuất, Số lượng, Đơn giá, Thành tiền và hai kiểu sắp xếp là tăng dần hoặc giảm dần, các thuật toán sắp xếp đều đã được tối ưu và giải quyết yêu cầu bài toán đặt ra một cách hiệu quả nhất

c Thuật toán tìm kiếm

Tìm kiếm luôn là một vấn đề thường trực xảy ra đối với người sử dụng phần mềmquản lý, bởi đơn giản các công việc quản lý luôn đòi hỏi việc truy xuất, tìm kiếm và khaithác dữ liệu đang có để phục vụ cho công việc của mình

Để đáp ứng các yêu cầu bài toán đặt ra một cách cơ bản nhất và phù hợp với cấu trúc dữ liệuđược lựa chọn là danh sách đặc, thuật toán tìm kiếm trong đồ án lần này được nhóm chúng

em lựa chọn là thao tác quét qua lần lượt tất cả các phần tử trong danh sách vật tư hiện tại,

so sánh và chọn lựa ra phần tử thỏa mãn yêu cầu tìm kiếm thông qua các phép so sánh =, >,

>=, <, <=

Bên cạnh đó, thuật toán tìm kiếm cũng được ứng dụng trong yêu cầu xóa các mẫu tin trong danh sách có sẵn bằng việc thay vì xuất ra kết quả tìm kiếm thì chúng ta sẽ xóa các mẫu tin đó đi.Vì thuật toán chỉ đơn giản là duyệt qua lần lượt tất cả các phần tử trong một danh sách đặc

nên trong trường hợp xấu nhất, độ phức tạp của thuật toán sẽ là O(n) = n, trường hợp trung bình thì độ phức tạp sẽ là O(n) = n/2 Trường hợp tốt nhất là O(n) = 1.

Bên cạnh đó, bên trong hàm tìm kiếm còn có các phép toán cơ bản như tăng/giảm, gán, sao chép hoặc hiển thị lên màn hình Các phép toán này sẽ được đề cập trong phần đánh giá tiếptheo

d Thuật toán liên quan đến tính toán và hiển thị

Các yêu cầu liên quan đến tính toán và hiển thị trong bài toán quản lý là những yêucầu khách quan đặt ra nhằm giao tiếp với người dùng, cho phép người dùng thao tác thống

kê và tính toán dữ liệu

Với yêu cầu tính thành tiền, giải thuật chú yếu liên quan đến phép nhân – một phép toán cóảnh hưởng đến tốc độ giải quyết bài toán Nếu trường hợp xấu nhất là tất cả các vật tư có số

lượng lớn hơn 100, số phép nhân được thực hiện sẽ là 2n phép nhân Do đó độ phức tạp của thuật toán sẽ là O(n) = n.

Với yêu cầu hiển thị, bài toán đặt ra cũng là quét qua toàn bộ phần tử trong mảng theo vònglặp for và hiển thị lên màn hình Tương tự với bài toán tìm kiếm, độ phức tạp của thuật toán

Trang 15

là O(n) = n.

* Đánh giá kết quả:

Phần mềm đã giải quyết phần lớn những yêu cầu cơ bản của bài toán đặt ra Các kếtquả thực hiện đều thỏa mãn những tiêu chí ban đầu của bài toán, bên cạnh đó còn phát triểnthêm một số tính năng bổ sung nhằm hoàn thiện bài toán

Tốc độ thực thi bài toán nhanh do lượng dữ liệu không nhiều Nếu số lượng mẫu tin tăng lênthì sẽ ảnh hưởng đến tốc độ nhưng không đáng kể, do giao diện đồ họa đơn giản và tối ưu các thuật toán, cấu trúc dữ liệu sử dụng trong bài

KẾT LUẬN

Qua quá trình nghiên cứu và tìm hiểu đề tài đồ án, nhóm chúng em đã có

thêm nhiều kiến thức lý thuyết và thực tiễn về bài toán quản lý nói chung và

bài toán quản lý vật tư nói riêng Những bài toán quản lý luôn đòi hỏi người

lập trình phải phân tích bài toán cụ thể, thiết kế hệ thông tối ưu để đảm bảo

giải quyết đầy đủ các yêu cầu, tránh tình trạng thiếu sót chức năng cũng như

vấn đề lỗi trong quá trình sử dụng

Bài toán quản lý vật tư đã được chúng em giải quyết khá đầy đủ các chức

năng cơ bản và bổ sung thêm các chức năng khác nhằm tối ưu hệ thống, đem

lại một phần mềm cơ bản đáp ứng đầy đủ yêu cầu của người sử dụng Các cấu

trúc dữ liệu và thuật toán đã được phân tích và lựa chọn kỹ lưỡng nhằm đem

lại hiệu quả xử lý và tài nguyên bộ nhớ

PHỤ LỤC

Ngày đăng: 04/06/2017, 15:53

TỪ KHÓA LIÊN QUAN

w