1. Trang chủ
  2. » Luận Văn - Báo Cáo

bài tiểu luận 1 cấu trúc dữ liệu và giải thuật

16 4 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

Nội dung

Hàm này sẽ nhận danh sách sinh viên từ người dùng thông qua đối số `dssv` và cậpnhật `n` với số lượng sinh viên.... Hàm “TimSV”: Hàm này dùng để tìm một sinh viên trong danh sách dựa trê

Trang 1

TP.HCM, ngày 15 tháng 09 năm 2023

Bài tập tiểu luận - Phần 1

Tên tiêu đề trong báo cáo: Danh sách kể (mảng 1D)

Trang 2

Nội dung: Viết chương trình quản lý danh sách sinh viên bằng danh sách kế hoạch, bao gồm các nội dung sau:

1 Bảng phân công nội dung thực hiện cho phần này của từng thành viên (tối đa 3v/nhóm)

 Thông tin lưu trữ của các hàm:1 void Nhap1SV(SINHVIEN &sv)

Hàm này sẽ nhận thông tin của một sinh viên từ người dùng thông qua đối số `sv`.2 void NhapDSSV(SINHVIEN dssv[], int &n)

Mã số SV: 22712671 Họ tên: Tô Quang DũngTrang: 2Mã số SV: 22690071 Họ tên:Lê Văn Trọng TínLớp HP: DHKTPM18BTT

Mã số SV: 22713601Họ tên: Lê Hữu Phúc

Trang 3

Hàm này sẽ nhận danh sách sinh viên từ người dùng thông qua đối số `dssv` và cậpnhật `n` với số lượng sinh viên.

Trang 4

 #include <stdio.h> #include <string.h> struct ttsinhvien {

char MSSV[10], hoten[30]; int gioitinh; //1: nữ, 0: nam char diachi[50];

float dtb;

};typedef struct ttsinhvien SINHVIEN;

 Phần mã code đã cung cấp định nghĩa một cấu trúc `ttsinhvien` (thông tin sinh viên) và định danh nó lại bằng tên `SINHVIEN` Cấu trúc này chứa các thông tin cơ bản của một sinh viên như MSSV (Mã số sinh viên), họ tên, giới tính (1 cho nữ, 0 cho nam), địa chỉ và điểm trung bình.

Chương trình trên là một ứng dụng quản lý thông tin sinh viên Dữ liệu trong chương trình được mô tả bằng các thành phần sau:

1 Struct “ttsinhvien” (SINHVIEN): Định nghĩa một cấu trúc dữ liệu

“ttsinhvien” (SINHVIEN) để lưu trữ thông tin của một sinh viên Cấu trúc nàybao gồm các thành phần sau:

- char MSSV[10]: Mã số sinh viên, là một chuỗi ký tự có tối đa 10 ký tự - char hoten[30]: Họ tên của sinh viên, là một chuỗi ký tự có tối đa 30 ký tự - int gioitinh: Giới tính của sinh viên (1: nữ, 0: nam).

- char diachi[50]: Địa chỉ của sinh viên, là một chuỗi ký tự có tối đa 50 ký tự.

- float dtb: Điểm trung bình của sinh viên (kiểu số thực).struct ttsinhvien{

char MSSV[10], hoten[30];int gioitinh; //1: nữ, 0: namchar diachi[50];

float dtb;

};typedef struct ttsinhvien SINHVIEN;

Mã số SV: 22712671 Họ tên: Tô Quang DũngTrang: 4

Too long to read onyour phone? Save to

read later on yourcomputer

Save to a Studylist

Trang 5

2 Hàm “Nhap1SV”: Hàm này dùng để nhập thông tin của một sinh viên (biến

“SINHVIEN sv”) từ bàn phím.void Nhap1SV(SINHVIEN &sv){

printf("Nhap MSSV:");scanf("%s",&sv.MSSV);printf("Nhap ho ten:");scanf("%s",&sv.hoten);printf("Nhap gioi tinh:");scanf("%d",&sv.gioitinh);printf("Nhap dia chi:");scanf("%s",&sv.diachi);fflush(stdin);

printf("Nhap diem trung binh:");scanf("%f",&sv.dtb);}

3 Hàm “NhapDSSV”: Hàm này dùng để nhập danh sách sinh viên (mảng

“SINHVIEN dssv[]”) từ bàn phím Thông tin sinh viên được nhập vào từng phần tử của mảng.

void NhapDSSV(SINHVIEN dssv[], int &n){int i=0;

printf("\nSinh vien %d:",i+1);Nhap1SV(dssv[i]);

4 Hàm “Xuat1SV”: Hàm này dùng để xuất thông tin của một sinh viên ra

màn hình.

void Xuat1SV(SINHVIEN sv){printf("MSSV: %s", sv.MSSV);printf(" Ho ten: %s", sv.hoten);

printf(" Gioi tinh: %s", sv.gioitinh == 1 ? "Nu": "Nam");printf(" Dia chi: %s", sv.diachi);

printf(" Diem trung binh: %f", sv.dtb);}

Mã số SV: 22712671 Họ tên: Tô Quang DũngTrang: 5Mã số SV: 22690071 Họ tên:Lê Văn Trọng TínLớp HP: DHKTPM18BTT

Mã số SV: 22713601Họ tên: Lê Hữu Phúc

Trang 6

5 Hàm “XuatDSSV”: Hàm này dùng để xuất toàn bộ danh sách sinh viên ra

6 Hàm “TimSV”: Hàm này dùng để tìm một sinh viên trong danh sách dựa

trên mã số sinh viên (MSSV) Nếu tìm thấy, hàm trả về vị trí của sinh viên trong danh sách, ngược lại trả về -1.

int TimSV(SINHVIEN dssv[], int n, char maso[]){int i=0;

if(strcmp(dssv[i].MSSV,maso)==0)return i;}

return -1;}

7 Hàm “XoaSV”: Hàm này dùng để xóa một sinh viên khỏi danh sách dựa

trên mã số sinh viên (MSSV) Nếu sinh viên có MSSV tồn tại, thì hàm sẽ xóa sinh viên đó khỏi danh sách.

void XoaSV(SINHVIEN dssv[], int &n, char maso[]){int vitri= TimSV(dssv,n,maso);

printf("Xoa thanh cong");}

else printf("Khong ton tai sinh vien voi ma so %s!", maso);

Mã số SV: 22712671 Họ tên: Tô Quang DũngTrang: 6Mã số SV: 22690071 Họ tên:Lê Văn Trọng TínLớp HP: DHKTPM18BTT

Mã số SV: 22713601Họ tên: Lê Hữu Phúc

Trang 7

8 Hàm “Hoanvi”: Hàm này dùng để hoán đổi thông tin giữa hai sinh viên.

void Hoanvi(SINHVIEN &a, SINHVIEN &b){SINHVIEN temp;

9 Hàm “SapTheoDTB”: Hàm này dùng để sắp xếp danh sách sinh viên theo

thứ tự tăng dần của điểm trung bình (dtb).void SapTheoDTB(SINHVIEN dssv[], int n){

for(int i = 0;i<n-1;i++){for(int j = i+1;j<n;j++){

10 Hàm “SapTheoHoTen”: Hàm này dùng để sắp xếp danh sách sinh viên

theo thứ tự tăng dần của họ và tên.

void SapTheoHoTen(SINHVIEN dssv[], int n){for(int i = 0;i<n-1;i++){

for(int j = i+1;j<n;j++){

Mã số SV: 22712671 Họ tên: Tô Quang DũngTrang: 7Mã số SV: 22690071 Họ tên:Lê Văn Trọng TínLớp HP: DHKTPM18BTT

Mã số SV: 22713601Họ tên: Lê Hữu Phúc

Trang 8

11 Hàm “main”: Hàm chính của chương trình Trong hàm này, người dùng có

thể lựa chọn các chức năng như nhập danh sách sinh viên, xuất danh sách, xóasinh viên, sắp xếp danh sách, và thoát chương trình.

int main(int argc, char *argv[]){SINHVIEN sv;

SINHVIEN dssv[50];int n,chon;

char maso[10];do{

printf("\n1 Nhap danh sach sinh vien");printf("\n2 In ra danh sach sinh vien.");

printf("\n3 Xoa 1 sinh vien voi ma so x cho truoc khoi danh sach");

printf("\n4 Sap xep danh sach sinh vien theo thu tu tang dan cua diem trung binh");

printf("\n5 Sap xep danh sach sinh vien theo thu tu tang dan cua ho va ten ");

printf("\nNhap lua chon: ");scanf("%d",&chon);switch(chon){

case 1: {

printf("Nhap so luong sinh vien: ");scanf("%d",&n);NhapDSSV(dssv,n);break;

}case 2:{

case 3:{

printf("Nhap mssv can xoa: ");scanf("%s",&maso);XoaSV(dssv,n,maso);

case 4:{

Mã số SV: 22712671 Họ tên: Tô Quang DũngTrang: 8Mã số SV: 22690071 Họ tên:Lê Văn Trọng TínLớp HP: DHKTPM18BTT

Mã số SV: 22713601Họ tên: Lê Hữu Phúc

Trang 9

}case 5:{

}while(chon>0&&chon<6);return 0;

Dữ liệu chương trình bao gồm danh sách sinh viên được lưu trữ trong mảng “SINHVIEN dssv[50]”, số lượng sinh viên “n”, và các biến cục bộ khác dùng để tương tác với người dùng như “maso” (để nhập MSSV cần xóa) và “chon”(để chọn chức năng).

Mã chương trình có thể mở rộng bằng cách thêm các chức năng và tính năng quản lý thông tin sinh viên như lưu dữ liệu vào file, tìm kiếm theo điều kiện, hoặc cải thiện giao diện người dùng để dễ sử dụng hơn.

4 Các hàm cài đặt: Mô tả chức năng từng hàm gồm giải thuật và trình bày code tương ứng (Ghi chú có thông tin ngày viết: và người viết cho từng hàm, sinh viên chỉ cần chọn và mô tả 2 giải thuật xử lí bất kỳ trong toàn bộ chương trình)

 Hàm SapTheoDTB(SINHVIEN dssv[], int n) //Người viết: Lê Văn Trọng

Tín (13/09/2023)

void SapTheoDTB(SINHVIEN dssv[], int n){ for(int i = 0; i < n; i++){

for(int j = i+1; j < n; j++){ if(dssv[i].dtb > dssv[j].dtb){ Hoanvi(dssv[i], dssv[j]); }

Mã số SV: 22712671 Họ tên: Tô Quang DũngTrang: 9Mã số SV: 22690071 Họ tên:Lê Văn Trọng TínLớp HP: DHKTPM18BTT

Mã số SV: 22713601Họ tên: Lê Hữu Phúc

Trang 10

} }} Mô tả:

-Input: Một mảng `dssv` gồm `n` sinh viên (kiểu `SINHVIEN`) và số nguyên `n` cho biết số lượng sinh viên trong mảng.

- Output: Mảng `dssv` được sắp xếp tăng dần theo điểm trung bình (`dtb`) của các sinh viên.

Giải thuật:

1 Vòng lặp bên ngoài (`i`) duyệt qua từng sinh viên trong mảng.

2 Vòng lặp bên trong (`j`) duyệt qua các sinh viên từ vị trí `i+1` đến cuối mảng.3 So sánh điểm trung bình (`dtb`) của hai sinh viên `dssv[i]` và `dssv[j]`.

4 Nếu `dtb` của `dssv[i]` lớn hơn `dtb` của `dssv[j]`, thì hoán đổi vị trí của hai sinh viên này bằng cách gọi hàm `Hoanvi`.

printf("\nSinh vien %d:",i+1);

Mã số SV: 22712671 Họ tên: Tô Quang DũngTrang: 10Mã số SV: 22690071 Họ tên:Lê Văn Trọng TínLớp HP: DHKTPM18BTT

Mã số SV: 22713601Họ tên: Lê Hữu Phúc

Trang 11

}Mô tả:

- Input: Một mảng `dssv` gồm `n` sinh viên (kiểu `SINHVIEN`) và số nguyên `n` cho biết số lượng sinh viên trong mảng.

- Output: Thông tin của các sinh viên trong mảng được in ra màn hình.Giải thuật:

1 Vòng lặp `i` duyệt qua từng sinh viên trong mảng.

2 Dùng `printf` để in thông tin của sinh viên thứ `i` ra màn hình.3 Gọi hàm `Xuat1SV` để in thông tin của một sinh viên.Độ phức tạp:

- Độ phức tạp của hàm này chỉ chứa một vòng lặp duyệt qua từng sinh viên trong mảng.

5 Kết quả chạy chương trình Chụp màn hình và mô tả các kết quả chạy chương trình theo từng chức năng

- Sau khi chạy chương trình, người dùng sẽ được yêu cầu nhập các thông tin của sinh viên hoặc thực hiện các chức năng như in ra danh sách, xóa sinh viên, sắp xếp theo điểm trung bình, hoặc sắp xếp theo họ tên.

Mã số SV: 22712671 Họ tên: Tô Quang DũngTrang: 11Mã số SV: 22690071 Họ tên:Lê Văn Trọng TínLớp HP: DHKTPM18BTT

Mã số SV: 22713601Họ tên: Lê Hữu Phúc

Trang 12

1.Nhập danh sách sinh viên: cho phép người dùng nhập vào danh sách từng sinh viên gồm các thông tin như: MSSV, họ tên, giới tính, địa chỉ, điểm trung bình.

2 In ra danh sách sinh viên: thực hiện in ra danh sách các sinh viên gồm có các thông tin như: MSSV, họ tên, giới tính, địa chỉ, điểm trung bình.

Mã số SV: 22712671 Họ tên: Tô Quang DũngTrang: 12Mã số SV: 22690071 Họ tên:Lê Văn Trọng TínLớp HP: DHKTPM18BTT

Mã số SV: 22713601Họ tên: Lê Hữu Phúc

Trang 13

3 Xóa 1 sinh viên với mã số x cho trước khỏi danh sách: cho phép người dùng xóa một sinh viên ra khỏi danh sách với mã sinh viên được nhập từ màn hình.Nếu xóa được sẽ hiện”Xoa thanh cong” ,nếu không có mã sinh viên xóa không được sẽ hiện “ Không tồn tại sinh viên với mã số”.

4 Sắp xếp danh sách sinh viên theo thứ tự tăng dần của điểm trung bình từ bé đến lớn

5 Sắp xếp danh sách sinh viên theo thứ tự tăng dần của họ và tên:

Mã số SV: 22712671 Họ tên: Tô Quang DũngTrang: 13Mã số SV: 22690071 Họ tên:Lê Văn Trọng TínLớp HP: DHKTPM18BTT

Mã số SV: 22713601Họ tên: Lê Hữu Phúc

Trang 14

Danh sách sinh viên sẽ được sắp xếp dựa trên họ và tên của mỗi sinh viên theo thứ tự bảng chữ cái.

6 Kết luận Đánh giá chương trình, những mở rộng.

 Kết luận:

Chương trình quản lý thông tin sinh viên được thiết kế để thực hiện các thao tác cơ bản như thêm, xóa, sửa, tìm kiếm và sắp xếp dữ liệu đã cơ bản hoàn thiện và thực hiện tốt các chức năng các yêu cầu của đề bài

 Đánh giá chương trình:

1 Hoàn thiện cơ bản: Chương trình hoàn thiện một số chức năng cơ bản như nhập, xuất, xóa, và sắp xếp danh sách sinh viên Điều này tạo ra một ứng dụng quản lý sinh viên cơ bản.

2 Sử dụng cấu trúc dữ liệu: sử dụng cấu trúc `SINHVIEN` để tổ chức thông tin củasinh viên.

Mã số SV: 22712671 Họ tên: Tô Quang DũngTrang: 14Mã số SV: 22690071 Họ tên:Lê Văn Trọng TínLớp HP: DHKTPM18BTT

Mã số SV: 22713601Họ tên: Lê Hữu Phúc

Trang 15

3 Menu tương tác: thêm một menu cho người dùng để lựa chọn chức năng cần thựchiện Điều này làm cho chương trình dễ sử dụng hơn.

 Những mở rộng:

1 Kiểm tra nhập dữ liệu: Trong hàm `Nhap1SV`, xem xét kiểm tra đầu vào người dùng để đảm bảo tính hợp lệ của dữ liệu được nhập Ví dụ, có thể kiểm tra xem MSSV có đúng định dạng hay không.

2 Thống kê: có thể mở rộng chương trình để tính toán và hiển thị các thống kê về danh sách sinh viên như điểm trung bình cao nhất, thấp nhất, trung bình, số lượng nam và nữ.

3 Lưu trữ dữ liệu: dữ liệu sinh viên được lưu trong bộ nhớ khi chương trình đang chạy Có thể thêm tính năng lưu và nạp dữ liệu từ một tệp tin để dữ liệu không bị mất sau khi chương trình kết thúc.

4 Xử lý ngoại lệ: xử lý ngoại lệ cho các tình huống đặc biệt như trường hợp không tìm thấy sinh viên cần xóa.

5 Thêm chức năng tìm kiếm nâng cao: có thể mở rộng chức năng tìm kiếm để cho phép tìm kiếm dựa trên nhiều tiêu chí khác nhau, chẳng hạn như điểm trung bình hoặc địa chỉ.

6 Đa nền tảng: nếu muốn chương trình có thể chạy trên nhiều hệ điều hành khác nhau, có thể xem xét sử dụng các thư viện đa nền tảng cho giao diện dòng lệnh.

Mã số SV: 22712671 Họ tên: Tô Quang DũngTrang: 15Mã số SV: 22690071 Họ tên:Lê Văn Trọng TínLớp HP: DHKTPM18BTT

Mã số SV: 22713601Họ tên: Lê Hữu Phúc

Ngày đăng: 24/05/2024, 10:18

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w