1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo môn thiết kế wed Đề tài quản lý xe Ô tô

21 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Quản lý xe Ô tô
Tác giả Cao Vũ Minh Quang, Mai Phương Nam, Nguyễn Văn Bắc, Nguyễn Trung Hiếu
Người hướng dẫn Thầy Nguyễn Hữu Luân, Thầy Lại Mạnh Dũng
Trường học Trường Đại học Giao thông Vận tải
Chuyên ngành Thiết kế wed
Thể loại Báo cáo môn
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 21
Dung lượng 85,8 KB

Nội dung

Trong chương trình sử dụng mảng struct struct vatlieu để lưu trữ cái phần tử nhập vào, sau khi nhập vào các phần tử vật liệu xong thì chương trình có các chức năng sau có thể chọn để xử

Trang 1

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI

KHOA CÔNG NGHỆ THÔNG

QUẢN LÝ XE Ô TÔ

Giảng viên hướng dẫn:

Thầy Nguyễn Hữu Luân-Thầy Lại Mạnh Dũng

Trang 2

Lớp: CNTT1 – K64

Hà Nội - 2024

MỤC LỤC NỘI

LUẬN 10

Trang 3

NỘI DUNG

********************

I Giới thiệu đề tài

Với một lượng vật liệu xây dựng lớn, sinh ra nhu cầu quản lý những vật liệu

được đặt ra, nên chương trình quản lý xây dựng được tạo ra

II. Phân tích

Chương trình sử dụng ngôn ngữ C là nền tảng xây dựng Trong chương trình sử

dụng mảng struct (struct vatlieu) để lưu trữ cái phần tử nhập vào, sau khi nhập vào các

phần tử vật liệu xong thì chương trình có các chức năng sau có thể chọn để xử lý:

Tạo và thêm một vật liệu mới vào danh sách:

Cho phép người dung nhập thông tin về vật liệu: Id của vật liệu, Tên vật

liệu (50 kí tự), giá cả của vật liệu

In ra danh sách:

In ra danh sách tất cả các vật liệu đã nhập và lưu trong mảng, bao gồm

file có sẵn

Trang 4

Tìm kiếm vật liệu:

Cho phép người dùng tìm kiếm vật liệu theo một trong hai phương thức:

tìm theo Id hoặc tìm vật liệu có giá dưới một giá trị nhất định (mặc định là 1.000.000)

Đếm và sắp xếp vật liệu:

Cho phép người dùng đếm số lượng của một vật liệu và chức năng sắp

sếp vật liệu theo giá từ nhỏ tới lớn

Tính tổng số tiền toàn bộ:

Lựa chọn cho phép tính tổng số tiền đã nhập trong chương trình

Xoá và cập nhật lại một vật liệu theo Id:

Lựa chọn cho phép xoá một vật liệu được nhập sẵn theo Id Lựa chọn

còn lại cho phép cập nhật lại tên, số lượng và giá tiền của một vật liệu theo Id

Trang 5

Lưu và thoát khỏi chương trình:

Sau khi chọn thì sẽ lưu những thông tin đã nhập cho vật liệu thành một

file khác để lần sau khởi động chương trình thì sẽ hiển thị thông tin vật liệu đã

lưu

III Thiết kế

Để hoàn thiện những chức năng trên các thành viên đã sử dụng nhiều hàm để ghép lại

thành một chương trình hoàn chỉnh Bắt đầu bằng khai báo thư viện sử dụng và mảng

Trang 6

vatlieu* taoVatLieu(int id, char* ten, int so_luong, float gia): Đây là hàm để

tạo một vật liệu mới với các thông số như ID, tên, số lượng và giá

vat_lieu_moi->id = id:

strcpy(vat_lieu_moi->ten, ten):

vat_lieu_moi->so_luong = so_luong:

vat_lieu_moi->gia = gia:

vat_lieu_moi->next = NULL: Thiết lập next của vật liệu mới là “NULL”, vì

khi tạo mới, nó chưa được liên kết với các vật liệu khác

return vat_lieu_moi: Trả về con trỏ tới vật liệu mới được tạo.

Hàm thêm vật liệu vào danh sách:

void themVatLieu(vatlieu** dau, int id, char* ten, int so_luong, float gia):

Hàm này nhận đầu vào là một con trỏ đến con trỏ vatlieu (dau) và các thông tin về

vật liệu cần thêm

*vatlieu vat_lieu_moi = taoVatLieu(id, ten, so_luong, gia)**: Gọi hàm

taoVatLieu để tạo một vật liệu mới với các thông số được truyền vào

*vat_lieu_moi->next = dau: Liên kết vật liệu mới với vật liệu đầu tiên

Trang 7

*dau = vat_lieu_moi: Cập nhật đầu danh sách (dau) để trỏ đến vật liệu mới

được thêm vào

Hàm hiển thị danh sách vật liệu:

*void hienThiVatLieu(vatlieu dau)**: Hàm này nhận đầu vào là con trỏ đến

vật liệu đầu danh sách (dau) và in ra tất cả các vật liệu trong danh sách

printf("\n%-10s%-20s%-10s%-10s\n", "ID", "Tên", "Số lượng", "Giá"): while (hien_tai != NULL): Vòng lặp để duyệt qua các vật liệu trong danh sách

Tiếp theo là hàm tìm kiếm vật liệu theo Id:

con trỏ đến vật liệu đầu danh sách (dau) và ID của vật liệu cần tìm

vatlieu hien_tai = dau*

Trang 8

while (hien_tai != NULL)

if (hien_tai->id == id)

return hien_tai: Trả về con trỏ tới vật liệu hiện tại.

hien_tai = hien_tai->next: Di chuyển hien_tai sang vật liệu kế tiếp trong danh

sách

return NULL: Nếu không tìm thấy vật liệu có ID tương ứng trong danh sách,

hàm sẽ trả về NULL

Hàm xóa vật liệu khỏi danh sách:

void xoaVatLieu(vatlieu **dau, int id): Hàm này nhận đầu vào là con trỏ đến

con trỏ “dau” (con trỏ đầu danh sách) và ID của vật liệu cần xóa

vatlieu hien_tai = dau: Khởi tạo con trỏ hien_tai để duyệt qua danh sách từ

đầu

vatlieu truoc_do = NULL*: Khởi tạo con trỏ truoc_do để lưu vị trí của vật liệu

ngay trước vật liệu cần xóa

if (hien_tai != NULL && hien_tai->id == id): Kiểm tra nếu vật liệu cần xóa

là vật liệu đầu tiên trong danh sách

*dau = hien_tai->next: Cập nhật đầu danh sách để bỏ qua vật liệu đầu tiên free(hien_tai): Giải phóng bộ nhớ của vật liệu đầu tiên.

Trang 9

return: Kết thúc hàm sau khi xóa vật liệu.

while (hien_tai != NULL && hien_tai->id != id): Duyệt danh sách để tìm vật

if (hien_tai == NULL) return: Nếu không tìm thấy vật liệu cần xóa (đã duyệt

hết danh sách mà không có vật liệu nào có ID là id)

truoc_do->next = hien_tai->next: Gắn kết vật liệu trước vật liệu cần xóa

(truoc_do->next) với vật liệu sau vật liệu cần xóa (hien_tai->next)

free(hien_tai): Giải phóng bộ nhớ của vật liệu cần xóa sau khi đã xóa nó khỏi

danh sách

Hàm nhập thông tin vật liệu từ bàn phím:

void nhapVatLieu(vatlieu **dau): Hàm này nhận đầu vào là con trỏ đến con

trỏ “dau” (con trỏ đầu danh sách) để thêm vật liệu mới vào danh sách

int id

Trang 10

themVatLieu(dau, id, ten, so_luong, gia): Gọi hàm themVatLieu để thêm vật

liệu mới vào danh sách “dau” với các thông tin đã nhập từ người dùng

Trang 11

Hàm sắp xếp danh sách liên kết theo giá của mỗi nút vatlieu:

void sapxep(vatlieu** dau)

if (*dau == NULL) return

//Nếu danh sách rỗng (*dau == NULL), hàm trả về ngay lập tức

vatlieu* hien_tai

vatlieu* tiep_theo

int td

//hien_tai trỏ tới nút hiện tại, tiep_theo trỏ tới nút kế tiếp, và td là một cờ báo

hiệu nếu có sự hoán đổi xảy ra

do

td = 0

hien_tai = *dau

//Vòng lặp do-while tiếp tục cho đến khi không còn sự hoán đổi nào xảy ra (td == 0)

while (hien_tai->next != NULL)

tiep_theo = hien_tai->next

if (hien_tai->gia > tiep_theo->gia)

float temp_gia = hien_tai->gia

Trang 13

hien_tai = hien_tai->next //Cập nhật hien_tai để tiếp tục kiểm

tra nút tiếp theo

vatlieu* vat_lieu = timVatLieuTheoID(dau, id): hàm timVatLieuTheoID để

tìm kiếm vật liệu có mã ID tương ứng

Trang 14

scanf("%d", &(vat_lieu->so_luong))

printf("Nhap gia moi (hien tai: %.2f): ", vat_lieu->gia)

scanf("%f", &(vat_lieu->gia))

printf("Thong tin vat lieu da duoc cap nhat!\n")

Hàm demvatlieu đếm tổng số vật liệu trong danh sách liên kết

int demvatlieu(vatlieu* dau)

int d = 0

vatlieu* hien_tai = dau

while (hien_tai != NULL)

float tong_gia_tri = 0 //đặt tổng giá trị bằng 0

while (hien_tai != NULL) //thực hiện chức năng vòng lặp tính tổng với

điều kiện khác NULL

Trang 15

Tong_gia_tri +=

Trang 16

hien_tai->so_luong * hien_tai->gia //hàm toán tích nhân số lượng

while( if() ) // hàm thực hiện chức năng vòng lặp để hiện thị vật liệu dưới

1000000 điều kiện giá dưới 1000000

Hàm lưu các vật liệu thành 1 file để lưu trữ dữ liệu:

void luuVaoFile(vatlieu* dau)

FILE *file = fopen(FILENAME, "wb") //mở file có tên “ ”

(mặc định là FILENAME) chế độ gho nhị phân Nếu không có file thì tạo mới

if (file == NULL)

perror("Không the mo file")

return;

Trang 17

vatlieu* hien_tai = dau

while (hien_tai != NULL) //duyệt từ phần phần của danh sách

fwrite(hien_tai, sizeof(vatlieu), 1, file) //ghi dữ liệu vào file, ghi dữ

liệu kích thước (sizeof())

//Nếu không thể mở file, hiển thị thông báo lỗi và kết thúc chương trình

vatlieu temp //khai báo biến temp

while (fread(&temp, sizeof(vatlieu), 1, f)) //đọc dữ liệu kích thước

sizeof() vào biếntemp

Trang 18

themVatLieu(dau, temp.id, temp.ten, temp.so_luong, temp.gia) //sẽ

sử dụng các giá trị id, ten, so_luong, và gia từ temp để tạo và thêm một nút mới

vào danh sách liên kết

fclose(f) //Đóng file

Hàm main: Thực hiện toàn bộ các hàm trên với vòng lặp while:

while (1)

//printf("\n Quan ly vat lieu xay dung -\n");

printf("\n1 Them vat lieu\n");

printf("2 Hien thi danh sach vat lieu\n");

printf("3 Tim vat lieu theo ID\n");

printf("4 Sap xep vat lieu theo gia\n");

printf("5 Tim vat lieu co gia duoi 1000000\n");

printf("6 dem so vat lieu trong kho\n");

printf("7 Tinh tong so gia tri kho\n");

printf("8 Xoa vat lieu theo ID\n");

Trang 19

printf("9 cap nhat lai vat lieu\n");

printf("10 Save and exit\n");

printf("Nhap lua chon cua ban: ");

scanf("%d", &lua_chon); while (1)

switch (lua_chon) { } //sử dụng cấu trúc switch để thực hiện từng lựa

chọn

IV Phân công công việc

Cả nhóm cùng suy nghĩ để dựng ý tưởng ban đầu về chương trình

Các thành viên phân chia các hàm thực hiện từng chức năng khác nhau rồi ghép

lại thành 1 chương trình

Thời gian rảnh nhóm trao đổi và bắt đầu phần viết code Đồng thời cách

thành viên sẽ dử dụng các công cụ sẵn(như internet, có để phát triển và hoàn

thiện yêu cầu được giao

Người viết báo cáo: Cao Vũ Minh Quang

Trang 20

V Phương pháp thực hiện

- Hoạt động và trao đổi kiến thức, tài liệu qua tin nhắn

- Tham khảo các hướng dẫn code trên mạng

VI Chấm điểm thành viên

Cao Vũ Minh Quang 231220875 9

Nhóm trưởng, làm báo

cáo, hỗ trợ

Lê Văn Linh 231230822 8.5 Làm chương trìnhNguyễn Văn Bắc 231230717 9.5 Làm chương trìnhMai Phương Nam 232030323 8.5 Làm chương trìnhNguyễn Trung Hiếu 231230777 8.5 Làm chương trình

KẾT LUẬN

********************

Trang 21

Nhóm đã hoàn thành đầy đủ phần công việc được giao Chương trình vẫn còn

nhiều thiếu sót nhưng nó đã đáp ứng Khi chạy chương trình đôi khi vẫn gặp lỗi

hiển thị Nhóm đã hoàn thành đầy đủ phần công việc được giao

Bài tập này đã giúp nâng cao kĩ năng và trình độ của từng cá nhân các thành viên

về môn lập trình

Ngày đăng: 09/11/2024, 12:07

w