Mã:
#include <stdio.h>#include <conio.h>#include <stdlib.h>#include <string.h> typedef struct tagSINHVIEN { int Msv; char Hoten[35]; int ngay, thang, nam; float Toan; float Van; float TK;}SINHVIEN, *PSINHVIEN; typedef struct tagNODE { SINHVIEN Data; tagNODE* Next;}NODE, *PNODE; typedef struct tagLIST { NODE* Dau; NODE* Cuoi;}LISTSV, *PLIST; //Khoi tao NODENODE* KhoitaoNode(){ NODE* x = (NODE*)malloc(sizeof(NODE)); if(x == NULL) { printf("
Bo nho khong du "); return 0; } x->Next = NULL; return x;} //Khoi tao danh sach LISTSVvoid KhoitaoList(LISTSV* x){ x->Dau = NULL; x->Cuoi=NULL;} //Nhap thong tin sinh vienvoid Nhap (LISTSV* ds,NODE* x){ char tg[25]; int a, d, m, y; float t, c; NODE* p = NULL; do { printf("
Nhap ma Sinh vien: "); scanf("%d", &a); p = ds->Dau; while(p != NULL) { if(p->Data.Msv == a) { printf("
Nhap ma Sinh vien bi trung vui long nhap lai"); a = 1; } p = p->Next; } }while(a == 1); x->Data.Msv = a; fflush(stdin); printf("Nhap ten Sinh Vien: "); gets(tg); strcpy(x->Data.Hoten,tg); fflush(stdin); do { printf("Nhap Ngay Sinh: "); scanf("%d", &d); fflush(stdin); }while(d > 31 || d < 1); x->Data.ngay = d; do { printf("Nhap Thang Sinh: "); scanf("%d", &m); fflush(stdin); }while(m > 12 || m < 1); x->Data.thang = m; do { printf("Nhap Nam Sinh: "); scanf("%d", &y); fflush(stdin); }while(y > 9999 || y < 1000); x->Data.nam = y; fflush(stdin); do { printf("Nhap Diem Toan: "); scanf("%f", &c); }while(c < 0 || c > 10); x->Data.Toan = c; fflush(stdin); do { printf("Nhap Diem Van: "); scanf("%f", &t); }while(c < 0 || c > 10); x->Data.Van = t; x->Data.TK = (x->Data.Toan + x->Data.Van)/2; fflush(stdin); x->Next = NULL;} //in sinh vienvoid InSV(NODE* p){ printf("
Ma Sinh vien: %d ",p->Data.Msv); printf("\tTen Sinh vien: %s ",p->Data.Hoten); printf("
Ngay/ Thang/ Nam sinh: %5d/%5d/%5d ", p->Data.ngay, p->Data.thang, p->Data.nam); printf("
Diem Toan: %.2f ", p->Data.Toan); printf("\tDiem Van: %.2f ", p->Data.Van); printf("\tDiem tong ket: %.2f
", p->Data.TK);} // in danh sach SINHVIENvoid InDanhSach(LISTSV x){ NODE *p; p = x.Dau; while(p != NULL) { InSV(p); p = p->Next; }} //Them mot NODE vao Cuoi danh sachvoid ThemCuoi(LISTSV* x, NODE* t){ if(x->Dau == NULL) { x->Dau = t; } else { x->Cuoi->Next = t; } x->Cuoi = t;} // Them mot sinh vien vao cuoi danh sachint NhapSV(LISTSV* x){ NODE* a = KhoitaoNode(); Nhap(x,a); ThemCuoi(x,a); return 0;} //Tim kiem theo Ma sinh vienvoid TimKiem(LISTSV x , int n){ NODE *p; p = x.Dau; while(p != NULL) { if(p->Data.Msv == n) { InSV(p); } p = p->Next; }} //Xoa 1 Sinh Vien bat ki Theo ma Sinh Vienint XoaSV(LISTSV *x , int n){ NODE *p = x->Dau; NODE *q = NULL; while(p != NULL) { if(p->Data.Msv == n) break; q = p; p = p->Next; } if(p == NULL) return 0; if(q != NULL) { x->Dau = q; q->Next = p->Next; free(p); } else { x->Dau = p->Next; if(x->Dau == NULL) { x->Cuoi = NULL; } } return 1;} //Giai phong bo nhovoid giaiphong(LISTSV *x){ NODE *p = x->Dau; NODE *a; while( p->Next != NULL) { a = p; p = p->Next; free(a); }} //In cac Sinh Vien xep Loai Gioivoid inSVGioi(LISTSV x){ NODE *p; p = x.Dau; while(p != NULL) { if(p->Data.TK >= 8) { InSV(p); } p = p->Next; }} //In cac Sinh Vien xep Loai Khavoid inSVKha(LISTSV x){ NODE *p; p = x.Dau; while(p != NULL) { if(p->Data.TK < 8 && p->Data.TK >= 7) { InSV(p); } p = p->Next; }} //Liet ke so SINHVIEN bi thi Lai void inSVThilai(LISTSV x){ NODE *p; p = x.Dau; while(p != NULL) { if(p->Data.Toan < 5 || p->Data.Van < 5) { InSV(p); } p = p->Next; }} //Dem so SINHVIEN Hoc Laivoid SVHocLai(LISTSV x){ NODE *p; int n = 0; p = x.Dau; while(p != NULL) { if(p->Data.Toan < 5 && p->Data.Van < 5) { n++; } p = p->Next; } printf("
So Cac sinh vien Phai Hoc Lai : %d
", n);} // Liet ke Sinh vien Sinh vao thang 10void inSV10(LISTSV x){ NODE *p; p = x.Dau; while(p != NULL) { if(p->Data.thang == 10) { printf("
Cac sinh vien sinh vao thang 10 :"); InSV(p); } p = p->Next; }} //Ham Tao Danh Sach Tuy chonint Menu(){ int a; int Ma; LISTSV x; KhoitaoList(&x); do { printf("
Ban chon 1,2,3,4,5"); printf("
Nhap so can chon roi bam enter"); printf("
1 - Nhap danh sach Sinh Vien"); printf("
2 - Liet ke danh sach Sinh Vien"); printf("
3 - Tim kiem Sinh vien theo ma Hang"); printf("
4 - Liet ke danh sach Sinh Vien dat loai gioi"); printf("
5 - Liet ke danh sach Sinh Vien dat loai Kha"); printf("
6 - Liet ke danh sach Sinh Vien Phai thi lai"); printf("
7 - Tong So Sinh Vien Phai Hoc lai"); printf("
8 - Liet ke cac sinh vien sinh vao thang 10:"); printf("
9 - Xoa Sinh Vien theo Ma Sinh Vien"); printf("
0 - Thoat
"); scanf("%d",&a); switch(a) { case 1: { int n; printf("
Nhap so luong Sinh vien : "); scanf("%d",&n); for(int i = 1; i <= n ;i++) { printf("
Nhap Don vi Sinh vien thu: %d
",i); NhapSV(&x); } break; } case 2: { InDanhSach(x); break; } case 3: { fflush(stdin); printf("
Nhap Ma Sinh Vien can tim:"); scanf("%d",&Ma); TimKiem(x ,Ma); break; } case 4: { inSVGioi(x); break; } case 5: { inSVKha(x); break; } case 6: { inSVThilai(x); break; } case 7: { SVHocLai(x); break; } case 8: { inSV10(x); break; } case 9: { fflush(stdin); printf("
Nhap Ma Sinh Vien Xoa:"); scanf("%d",&Ma); fflush(stdin); XoaSV(&x ,Ma); break; } case 0: { break; } default: printf("
Ban chon sai vui long chon lai!"); } }while(a != 0); giaiphong(&x); return 1;}int main(){ clrscr(); Menu(); clrscr(); return 0;}
Pallet nhựa Long An đã trở thành một trong những lựa chọn phổ biến cho nhu cầu vận chuyển và lưu trữ hàng hóa trong nhiều ngành công nghiệp. Với đặc tính nhẹ nhàng, chắc chắn và dễ vận chuyển, các...
Thanh lý pallet nhựa Long An giá rẻ