TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI TRUNG TÂM ĐÀO TẠO ELEARNING
TRƯƠNG DUY NHẤT - LỚP
TRƯƠNG DUY NHẤT - LỚP TRƯƠNG DUY NHẤT - LỚP
BAI TOAN QUAN LY CUA HANG
BAO CAO BAI TAP LON
MON: CAU TRUC DU LIEU VA GIAI THUAT
Giảng viên hướng dẫn:
Trang 2MỤC LỤC
I XÁC ĐỊNH BÀI TỐN s:22222221222211222122112211221112211110.212121 ke 2 2 XÁC ĐỊNH CTDL BIÊU DIỄN BÀI TỐN -5222:22222222122212221221 221.2 2 3 XÁC ĐỊNH CÁC THUẬT TỐN - CÁC CHỨC NĂNG :-2222c 2222222 2 4 LẬP TRÌNH - CÀI ĐẶTT 2: 2222222212222112221122211122112111211121121111 21121 c6 3 5 KIÊM THỬ - LẬP BỘ TEST -222:222222221122221221122111211122112211121 1c 15
"° 0.1 n5 ga 5 l5
5.2 Nhập thơng tin sinh viên và điểm - 5 E1 1 1111112121111 E1 11tr 15 5.3 Danh sach sinh viên đã nhập - 2 2C 2201122011323 1151 1153111511151 1 181111811 16 5.4 Sắp xếp sinh viên theo tên - 2s St E21 211112111111111 1111112121211 11tr 16 5.5 Sắp xếp danh sách sinh viên theo điểm giảm dân - 52 1S SE SE2112121E12xe2 17
5.6 Tìm kiếm sinh viên cĩ điểm trung bình lớn nhắt 2 2S +2 SESE2222EzEzEzzcez 17 5.7 Tim kiếm sinh viên cĩ điểm trung bình nhỏ nhất - 5-5 S 21821 £22222222 552 17
5.8 Tìm kiếm thơng tin sinh viên theo tên + s21 11211155 EE511112171E111 15111 xxe 18 5.0 Xố một sinh viên trong danh sách - 2 2 2221220112311 123 115111511111 551111 se 18 5.10 Đếm tổng số lượng sinh viên trong đanh sách - 2 2211 22152111112 22z22 18 5.11 Téng điểm 3 mơn của sinh Vidi cccccccccccccscssesessesscsessesessessvsesevsesevsevevsesseseres 19 5.12 Tìm sinh viên cĩ điểm mơn tốn cao nhất - 5: s s1 E1 EEEE1EE1111522222222xze 19 5.13 Tìm sinh viên cso điểm mơn tốn thấp nhát - 5 ST S111 EE5E521212171E12xe2 19 5.14 Ghi fđile danh sách sinh viên - - 2c 22 22221112251 131511 11113 1111112111111 1x12 20
Trang 3ĐỀ TÀI: Viết chương trình quản lý các đối tượng để thực hiện cho bài tốn “Quản lý cửa hàng” | Nội dung: * Chương trình thực hiện quản lý thơng tin sinh viên, điểm mơn học của sinh viên * Các chức năng cơ bản xây dựng: - Nhập - In danh sách đối tượng - Thêm, sửa, xố đối tượng - Tìm kiếm đối tượng - Sắp xếp đối tượng - Tìm phần tử lớn nhất, nhỏ nhất - Tính tổng, trung bình, đếm - Xuất file 1 XÁC ĐỊNH BÀI TỐN
Hiện nay chương trình quản lý điểm khơng cịn xa lạ gì với mỗi
người chúng ta Các thơng cần quản lý như: Họ tên sinh viên, Điểm các mơn học, điểm trung bình các mơn học
2 XÁC ĐỊNH CTDL BIỂU DIỄN BÀI TỐN
- Quản lý thơng tin sinh viên, điểm mơn học của sinh viên
3 XÁC ĐỊNH CÁC THUẬT TỐN - CÁC CHỨC NĂNG
Trang 45 Tìm kiếm sinh viên cĩ điểm trung bình lớn nhất 6 Tìm kiếm sinh viên cĩ điểm trung bình nhỏ nhất 7 Tìm kiếm sinh viên theo tên
§ Xố một sinh viên theo mã
9 Đếm số lương sinh viên trong danh sách
10 Tổng điểm ba mơn của sinh viên
11 Tìm sinh viên cĩ điểm mơn tốn cao nhất
12 Tìm kiếm sinh viên cĩ điểm mơn tốn thấp nhất 13 Ghi thơng tin sinh viên ra file 14 Thốt chương trình 4 LẬP TRÌNH - CÀI ĐẶT Tiến hành cài đặt bài tập, Liệt kê cấu trúc chương trình tổng quát và đưa ra một số code xử lý chính -_ Tiến hành code #include <stdio.h> #include <string.h> struct SinhVien; void hienThiDSSV(struct SinhVien*, int); void hienThiTenCot(); struct HoTen { char ho[20]; char dem[21]; char ten[20];
};
struct DiemMH {
Trang 5struct SinhVien { int ma; struct HoTen hoVaTen; int tuoi; char gioiTinh[10]; struct DiemMH diem; }; void nhapDiem(struct DiemMH* diem) { printf("Toan: "); scant("%f", &diem->toan); printf("Van: "); scant("%f", &diem->van); printf("Anh: "); scant("%f", &diem->anh);
diem->tbc = (diem->toan + diem->van + diem->anh) / 3;
void nhapHoTen(struct HoTen* ten) {
printf("Ho: "); scanf("%s", ten->ho); printf("Dem: "); getchar(); gets(ten->dem); printf("Ten: ");
Trang 6struct SinhVien nhapSV() { struct SinhVien sv; printf("Nhap ma: "); scanf(“%d”", &sv.ma); nhapHo Ten(&sv.hoVaTen);
printf("Tuoi: ");
scanf(“%d”", &sv.tuoi); printf("Gioi tỉnh: "); scanf("%s", sv.gioiTinh); nhapDiem(&sv.diem);
return sv;
void hienThiTTSV(struct SinhVien sv) {
printf("%-10d %-10s %-20s %-10s %-10d %-10s %-10.2f %-10.2f %-10.2f %-10.2f\n",
Sv.ma, sv.hoVaTen.ho, sv.hoVaTen.dem, sv.hoVaTen.ten, sv.tuoi,
Sv.giọTinh,
sv.diem.toan, sv.diem.van, sv.diem.anh, sv.diem.tbc);
void sapXepTheoTen(struct SinhVien* ds, int slsv) { int i, j;
for(i = 0; i < slsv- 1; i++) {
for(j = slsv-1;j >i; j ) {
if(strcmp(gs[j].hoVaTen.ten, ds[j-1].hoVaTen.ten) < 0) { struct SinhVien sv = ds[j];
đs[j] = ds[j - 1];
Trang 7void sapXepTheoDiem(struct SinhVien* ds, int slsv) {
int i, j;
for(i = 0; i < slsv - 1; i++) {
for( = slsV - 1;j > i;j ) {
Trang 8} hienThiTTSV(sv[index]); void DiemtbMin( struct SinhVien* sv, int slsv) { int index=1; float max=100; int i; for(i=0;i<slsv;i+~+) { if(sv[i].diem.tbc<max) { max=sv[i].diem.tbc; index=i;
} }
hienThiTTSV(sv[index]);
void DiemToanMax( struct SinhVien* sv, int slsv)
{
int index=1; float max=0; int i;
for(i=0;i<slsv;i+~+)
{
Trang 9{
max=sv[i].diem.toan; index=i;
} }
hienThiTTSV(sv[index]);
void DiemToanMin( struct SinhVien* sv, int slsv)
{
int index=1; float max=100; int i; for(i=0;i<slsv;i+~+) { if(sv[i].diem.toan<max) { max=sv[i].diem.toan; index=i; } }
hienThiTTSV(sv[index]);
void timTheoten(struct SinhVien* ds, int slsv) {
char ten[20]; printf("“Nhap ten: "); scanf("%s", ten);
Trang 10int i, timSV = 0;
for(i = 0; i < sIsv; i++) {
if(strcmp(ten, ds[i].hoVaTen.ten) == 0) { hienThiTTSV(dsl[i]);
timSV = 1;
}
if(timSV == 0) {
printf("Khong co sinh vien %s trong danh sach!\n", ten);
void XoaSV(struct SinhVien* sv, int slsv) { int Masvcanxoa; printf("\nNhap ma sinh vien can xoa:\n"); scanf("%d", &Masvcanxoa); for(int i=0;i<slsv;i+ +) { if(Masvcanxoa= =sv[i].ma) { Sv[i] = sv[i+1]; slIsv ;
} }
Trang 11void ghiFile(struct SinhVien* ds, int slsv) {
getchar(); char fName[26]; printf("Nhap ten file: "); gets(fName);
FILE* fOut = fopen(fName, "a"); int i;
for(i = 0; i < slsv; i++) { struct SinhVien sv = ds[i];
fprintf(fOut, "%-10d %-10s %-20s %-10s %-10d %-10s %- 10.2f %-10.2f %-10.2f %-10.2f\n",
Sv.ma, sv.hoVaTen.ho, sv.hoVaTen.dem, sv.hoVaTen.ten, sv.tuoi, sv.gioiTinh, sv.diem.toan, sv.diem.van, sv.diem.anh, sv.diem.tbc); } fclose(fOut); void docFile(struct SinhVien* ds, int* slsv) { FILE* fOut = fopen("SV.txt", "r"); int i = 0; if(fOut) {
for(;;) {
struct SinhVien sv;
fscanf(fOut, "%10d %10s %20[^\n] %10s %10d %10s %10f %10f %10f %100n",
&sv.ma, sv.hoVaTen.ho, sv.hoVaTen.dem, sv.hoVaTen.ten, &sv.tuoi, sv.gioiTinh,
Trang 12ds[i++] = sv;
if(feof(fOut)) { // thoat chuong trinh
break;
fclose(fOut); *s|SV =i;
void hienThiTenCot() { printf("
" \n");
printf("%-10s %-10s %-20s %-10s %-10s %-10s %-10s %-10s %- 10s %-10s\n",
"Ma Sv", "Ho", "Dem", "Ten", "Tuoi", "Gioi Tinh",
"Diem Toan", "Diem Van", "Diem Anh", "Diem TBC");
Trang 13
int main() {
struct SinhVien dssv[100]; int slsv = 0O;
int luaChon; docFile(dssv, &slsv);
printf("DANH SACH SINH VIEN HIEN THOI:\n"); hienThiDSSV(dssv, slsv);
int i:
printf("\n1 Them Sinh vien vao danh sach."); printf("\n2 Hien thi danh sach sinh vien.");
printf("\n3 Sap xep theo ten.");
printf("\n4 Sap xep theo diem giam dan.");
printf("\n5 Tim sinh vien co diem trung binh lon nhat."); printf("\n6 Tim sinh vien co diem trung binh nho nhat."); printf("\n7 Tim sinh vien theo ten.");
printf("\n8 Xoa mot sinh vien theo ma.");
printf("\n9 Dem tong so luong sinh vien.");
printf("\n10 Tong diem 3 mon cua sinh vien.");
printf("\n11 Tim sinh vien co diem mon toan cao nhat.");
printf("\n12 Tim sinh vien co diem mon toan thap nhat."); printf("\n13 Ghi thong tin sinh vien ra file.");
printf("\nO Thoat chuong trinh.");
printf("\nBan chon ? ");
Trang 14struct SinhVien sv; switch(luaChon) {
case 0: break;
case 1:
sv = nhapSV();
dssvi[slsv++] = sv; break;
case 2:
hienThiDSSV(dssv, slsv); break; case 3: sapXepTheoTen(dssv, slsV); printf("\nDanh sach sinh vien sau khi sap xep theo ten a-z:\n"); hienThiDSSV(dssv, slsv); break; case 4: sapxepTheoDiem(dssv, slsv); printf("\nDanh sach sinh vien sau khi sap xep theo diem giam dan:\n"); hienThiDSSV(dssv, slsv); break;
Trang 15DiemtbMax(dssv, slsv); break;
case 6:
DiemtbMin(dssv, slsv); break;
case 7:
timTheoTen(dssv, slsv); break;
case 8:
XoaSVi(dssv, slsv); hienThiDSSV(dssv, slsv-1); break;
case 9: 10d:\n",sIsv);
printf("\nTong so luong sinh vien da nhap la %-
break; case 10:
printt(" "
10s \n", "Gioi Tinh",
dssv[i].diem.anh;
\n"); printf("%-10s %-10s %-20s %-10s %-10s %-10s %-
"Ma SV", "Ho", "Dem", "Ten", "Tuoi",
"Tong diem 3 mon");
for(i = 0; i < slsv; i++) { float tb=0;
Trang 16printf(“%-10d %-10s %-20s %-10s %-10d %- 10s %-10.2f \n",
dssv[i].ma, dssv[i].hoVaTen.ho, dssv[i].hoVaTen.dem, dssv[i].hoVaTen.ten, dssv[i].tuoi, dssv[i].gioiTinh,tb); } break; case 11: DiemToanMax(dssv, slsv); break; case 12: DiemToanMin(dssv, slsv); break;
case 13:
ghiFile(dssv, slsv); break; default: printf("Sai chuc nang, vui long chon lai!\n"); break; } while(luaChon); return 0; }
5 KIEM THU - LAP BO TEST
Thực hiện chạy với bộ dữ liệu mẫu (Input-Output) đã xác định ở phần 2
Trang 17Chụp hình ảnh kết quả chương trình tương ứng
5.1 Chọn yêu cầu
EN HIEN THOI:
Trang 18s2 Nhập thơng tin sinh viên và điểm
laa Le Them Sinh vien
Hien thi danh
Sap xep theo ten
Sap xep theo d | li
Tim sinh vien co diem trung binh lon nhat Tim sinh vien co diem trung binh nho nhat Tim sinh vien theo ten
Xoa mot sinh vien theo ma Dem tong so luong sinh vien
19 Tong diem 3 mon cua sinh vien
11 Tim sinh vien diem mon toan cao nhat
12 Tim sinh vien em mon toan thap nhat
3 Ghi thong tin vie Ề
9 Thoat chuong tr
Ban chon ? 1 Nhap ma: 1
ho
tien
manh 23 tinh: nam
19
Them Sinh vien vao danh sach Hien thi danh h vien Sap xep theo ten Sap xep theo diem giam dan
Tim sinh vien co diem trung binh lon nhat Tim sinh vien co diem trung binh nho nhat Tim sinh vien theo ten
Xoa mot sinh vien th Dem tong so luong
Tong diem 3 Tim sỉ Tim Ghi thong tin si Thoat chuong trinh
on ? 2
em Toan bo CĨ ee
Xoa mot
Dem tong s
10 Tong diem 3 mon cu
nh vien co d 12 Tim si vien cod
13 Ghi thong tin sinh \
Thoat chuor
Trang 19e 8)›, = 5.5 Sắp xếp danh sách sinh viên theo điểm giảm d J3) ch thi danh sach sinh vien xep theo ten
giam dan
i m trung binh lon nhat
en co diem trung binh nho nhat
sinh vien theo ten mot sinh vien theo ma tong so luong sinh vien, Tong diem 3 mon cua sinh vien Tim sinh vien co diem mon toan cao nhat Tim sinh vien co diem mon toan thap nhat 3 Ghi thong tin sinh vien ra file
@ Thoat chuong trinh
Ban chon ? 4
anh sach sinh vien khi sap xep theo diem giam dan:
ioi Tỉnh tien E BE) pens)
Them Sinh vien vao danh sach Hien thi danh sach sinh vien
Sap xep theo ten xep theo diem giam dan
sinh vien co diem trung binh lon nhat
sinh vien theo ten
mot sinh vien theo m
tong so luong sinh \ -
1@ Tong diem 3 mon cua sinh vien
I1 Tim sinh vien co diem mon toan cao nhat
Tim sinh vien co diem mon toan thap nhat 3 Ghi thong tin sinh vien ra file
Thoat chuong trinh
1 Them Sinh vien vao danh sach 2 Hien thi danh sach sinh vien 3 Sap xep theo ten 4 Sap xep theo diem giam dan
5, Tim sinh n co diem trung bỉnh lon nhat
6 Tim sinh vien co diem trung binh nho nhat
Tim sinh a en
Xoa mot sinh vien theo ma
Dem tong so luong sinh vien Tong diem 3 on cua sinh vien
Tim sinh vien co diem mon toan cao nhat Tim sinh vien co diem mon toan thap nhat Ghi thong tỉn
@ Thoat chuong trinh
Ban c LẠ
Trang 205.8 _ Tìm kiếm thơng tin sinh viên theo tên
ay
Them Sinh vien vao danh Hien thi danh sach sinh v
Sap xep theo ten
xep theo diem giam dan
nh vien co diem trung binh lon nhat
sinh vien co diem trung binh nho nhat
sinh vien theo ten mot sinh vien theo tong so luong sinh vien Tong diem 3 mon cua sinh vien Tim sinh vien co diem mon toan cao nhat 2 Tim sinh vien co diem mon toan thap nhat 13 Ghi thong tin sinh vien ra fila CPLA Leal a 1),
Ban chon ? 7
Gioi Tinh Diem Toan Diem Van Diem Anh Diem TBC
oF 19.98 8.009 6.98 8.009 13110
Them Sinh vien vao danh sach Hien thi danh sach sinh vien Sap xep theo ten
xep theo diem giam dan
sinh vien co diem trung bỉnh lon nhat Sis) Mee Caden
mot sinh vien theo ma tong so luo!
1ơ Tong diem 3 mon cua sỉ c sinh n co dien mon toan cao nhat sinh so Pe ey n thap nhat
n sinh vien ra file
9 Thoat chuong trin Ban chon ? 8 Nhap ma sinh vien can xoa VW
Diem Anh Dien TBC 6.98 8.00 18.08 8.00
danh sach
ten
nh vien co diem trung binh lon nhat Palm co diem trung binh nho nhat
Sinh theo ten
Xoa mot vien theo Dem tong so luong sinh Tong em 3 mon cua
Trang 21Them Sinh
Hien thi danh
Sap xep theo ten
xep theo dien giam dan
sinh vien cơ diem trung binh lon nhat
DU No HN U la
en theo ten
n theo
an cao nhat n mon toan thap nhat pham a _ x aA 5.13 Tim sinh vie MENU Them Sinh vien vao danh IS hd chi
Sap xep theo te ep theo diem giam dan
ien co diem trung binh lon nhat Tim ien theo ten
Xoa mot sinh vien theo ma Dem tong luong sinh vie Tong diem 3 mon cua sinh
Tim sinh vien co diem mon toan cao nhat
Tim sinh vien co diem mon toan thap nhat
Ghi thong tin sinh vien ra file @ Thoat chuong trinh Ban chon ? 12 1 ho tien
ì sinh vi Tim sinh
Them Sinh vien vao dan
Hien thi danh sach 1
Sap xep theo ten
Sap xep theo diem giam dan Tim sinh vien co diem
vien
trung binh lon nhat
Tim sinh vien co diem trung binh nho nhat Tim sinh vien theo ten
Xoa mot sinh vien
Dem tong so luong
Tong diem mon c inh vien
Tim sinh vien co diem mon toan cao nhat Tim sinh vien co diem mon toan thap nhat
Ghi thong tin sinh vien ra fil
9 Thoat \uong trinh
Ban chon ? 13 Nhap ten file: