Information Technology VietNam

Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

4 posters

    Nhap xuat cau truc mang sinh vien (bai tap 4)

    ban_tuongky
    ban_tuongky
    Moderator
    Moderator


    Giới tính : Nam Bài gửi : 91
    Tổng Điểm : 198
    Điểm Thưởng : 0
    Bị Dụ Dỗ : 11/09/2009

    Nhap xuat cau truc mang sinh vien (bai tap 4) Empty Nhap xuat cau truc mang sinh vien (bai tap 4)

    Bài gửi by ban_tuongky 8/10/2009, 23:01

    Code:
    #include
    #include
    #include
    #define Max 50
    struct sinhvien
    {
        int masosv;
        int dtoan;
        int dly;
        int dhoa;
        char hoten[50];
    };
    void input(sinhvien,int);
    void output(sinhvien,int);
    void input(sinhvien ssv[],int n)
    {
        char tam[10];
        for(int i=0;i
        {
            printf("Nhap vao ma so sinh vien thu %d:",i+1);
            gets(tam);
            ssv[i].masosv=atoi(tam);
            gets(tam);
            printf("Nhap vao so diem cua mon toan %d:",i+1);
            gets(tam);
            ssv[i].dtoan=atoi(tam);
            printf("Nhap vao so diem cua mon ly %d:",i+1);
            gets(tam);
            ssv[i].dly=atoi(tam);
            printf("Nhap vao so diem cua mon hoa %d:",i+1);
            gets(tam);
            ssv[i].dhoa=atoi(tam);
            printf("Nhap vao ten sinh vien:");
            gets(ssv[i].hoten);
        }
    }
    void output(sinhvien ssv[],int n)
    {
        for(int i=0;i
        {
        printf("Ma so sinh vien %5d va ho ten cua sinh vien %s:"
        ,ssv[i].masosv,ssv[i].hoten);
        printf("\\n");
        printf("So diem mon toan: %5d",ssv[i].dtoan);
        printf("\\n");
        printf("So diem mon ly: %5d",ssv[i].dly);
        printf("\\n");
        printf("So diem mon hoa: %5d",ssv[i].dhoa);
        printf("\\n");
        }
    }
    main()
    {
        sinhvien ssv[Max];
        char tam[10];
        int i,n;
        printf("Nhap vao so sinh vien : " );
        gets(tam);
        n=atoi(tam);
        input(ssv,n);
        output(ssv,n);
        getch();
    }
    chuquangtu
    chuquangtu
    Advance Member
    Advance Member


    Giới tính : Nam Bài gửi : 50
    Tổng Điểm : 151
    Điểm Thưởng : 4
    Sinh Nhật : 29/12/1990 Bị Dụ Dỗ : 12/09/2009
    Tuổi : 33

    Nhap xuat cau truc mang sinh vien (bai tap 4) Empty Re: Nhap xuat cau truc mang sinh vien (bai tap 4)

    Bài gửi by chuquangtu 9/10/2009, 17:02

    ban_tuongky thân mến ! Bạn có thể tham khảo bài làm này nha ! Hé hé nếu có chỗ nào khúc mắc cứ reply lại
    Code:
    /* Bai tap 1_61 - Quan ly danh sach hoc sinh */
    #include <stdio.h>
    #include <string.h>
    #include <conio.h>
    #define MAX 100

    typedef struct hocsinh {
      char hoten[35];
      char mssv[7];
      float diemtoan, diemly, diemhoa;
    } HOCSINH;

    HOCSINH danhsach[MAX];
    int n = 0;
    char filename[] = "DANHSACH.DAT";

    main()
    {
      int done = 0, i;
      char hoten[35];
      float diem;

      do {
        printf("\nHo ten (trong de thoat) : ");
        gets(hoten);
        if (strlen(hoten) == 0)
          done = 1;
        else
        {
          strcpy(danhsach[n].hoten, hoten);
          printf("\nmssv : ");
          gets(danhsach[n].mssv);
          printf("\nDiem toan : ");
          scanf("%f", &diem);
          danhsach[n].diemtoan = diem;
          printf("\nDiem ly : ");
          scanf("%f", &diem);
          danhsach[n].diemly = diem;
          printf("\nDiem hoa : ");
          scanf("%f%*c", &diem);
          danhsach[n].diemhoa = diem;
          n++;
        }
      } while (!done);

      for (i=0; i<n; i++)
      {
        printf("\n+-----+------------------------------------+--------+------+------+------+");
        printf("\n| STT |        H O  V A  T E N          |  MSSV  | TOAN |  LY  |  HOA |");
        printf("\n+-----+------------------------------------+--------+------+------+------+");
        for (i=0; i<n; i++)
        {
          printf("\n| %3d | ", i+1);
          printf("%-35s| %-7s| %4.1f | %4.1f | %4.1f |", danhsach[i].hoten,danhsach[i].mssv,
                danhsach[i].diemtoan, danhsach[i].diemly, danhsach[i].diemhoa);
        }
        printf("\n+-----+------------------------------------+--------+------+------+------+");
      }
      getch();
    }
    ban_tuongky
    ban_tuongky
    Moderator
    Moderator


    Giới tính : Nam Bài gửi : 91
    Tổng Điểm : 198
    Điểm Thưởng : 0
    Bị Dụ Dỗ : 11/09/2009

    Nhap xuat cau truc mang sinh vien (bai tap 4) Empty Re: Nhap xuat cau truc mang sinh vien (bai tap 4)

    Bài gửi by ban_tuongky 10/10/2009, 07:57

    cam on ban nha "chuquangtu". Lam phien ban 1 ti dc ko?
    ban co the giup minh them 1 doan cot de xoa di 1 danh sach nhan vien nha, thanks
    Vy Thanh Định
    Vy Thanh Định
    Web Master
    Web Master


    Giới tính : Nam Bài gửi : 228
    Tổng Điểm : 544
    Điểm Thưởng : 16
    Sinh Nhật : 19/05/1990 Bị Dụ Dỗ : 11/09/2009
    Tuổi : 34

    Nhap xuat cau truc mang sinh vien (bai tap 4) Empty Re: Nhap xuat cau truc mang sinh vien (bai tap 4)

    Bài gửi by Vy Thanh Định 10/10/2009, 09:28

    Úi dào tới lượt Admin ra tay đây! Góp ý phát nha

    Code:
    #include
    #include
    #include
    #include
    #include

    #define MAX 100
    #define TOAN 0
    #define LY  1
    #define HOA  2

    struct sinhvien {
      char mslop[5];
      char hoten[35];
      float diem[3];
    } danhsach[MAX];
    int n = 0;

    void nhapmoi()
    {
      char mslop[5], tmp[3];
      int i;
      float diem[3];
      do {
        printf("\nCho biet ma so lop : ");fflush(stdin);
        gets(mslop);
        if (strlen(mslop))
        {
          strcpy(danhsach[n].mslop, mslop);fflush(stdin);
          printf("\nCho biet ho ten : ");
          gets(danhsach[n].hoten);
          printf("\nCho biet diem so : ");
          for (i=0; i<3; i++)
          {
            scanf("%f", &diem[i]);
            danhsach[n].diem[i] = diem[i];
          }
          gets(tmp);
          n++;
        }
      } while (strlen(mslop));
    }

    void timkiem()
    {
      char mslop[5];
      int i = 0, found = 0;
      printf("\nCho biet ma so lop : ");fflush(stdin);
      gets(mslop);
      if (strlen(mslop))
        while (i
          if (stricmp(danhsach[i].mslop, mslop) == 0)
          {
            printf("\nMa so lop : %s", danhsach[i].mslop);
            printf("\nHo va ten : %s", danhsach[i].hoten);
            printf("\nDiem Toan : %f", danhsach[i].diem[TOAN]);
            printf("\nDiem Ly  : %f", danhsach[i].diem[LY]);
            printf("\nDiem Hoa  : %f", danhsach[i].diem[HOA]);
            found = 1;
            break;
          }
          else
            i++;
      if (!found)
        printf("\nKhong tim thay!!!");
    }

    void xoa()
    {
      char mslop[5], traloi;
      int i = 0, j;
      printf("\nCho biet ma so lop : ");fflush(stdin);
      gets(mslop);
      if (strlen(mslop))
        while (i
          if (stricmp(danhsach[i].mslop, mslop) == 0)
          {
            printf("\nMa so lop : %s", danhsach[i].mslop);
            printf("\nHo va ten : %s", danhsach[i].hoten);
            printf("\nDiem Toan : %f", danhsach[i].diem[TOAN]);
            printf("\nDiem Ly  : %f", danhsach[i].diem[LY]);
            printf("\nDiem Hoa  : %f", danhsach[i].diem[HOA]);
            printf("\nCo muon xoa khong (C/K)? ");
            do {
              traloi = toupper(getch());
            } while (traloi != 'C' && traloi != 'K');
            putc(traloi, stdout);
            if (traloi == 'C')
            {
              n--;
              memcpy(&danhsach[i], &danhsach[i+1], sizeof(struct sinhvien) * (n-i));
              break;
            }
          }
          else
            i++;
    }

    void menu()
    {
      printf("\n***************");
      printf("\n* 1. Them    *");
      printf("\n* 2. Xoa      *");
      printf("\n* 3. Tim kiem *");
      printf("\n* 0. Thoat    *");
      printf("\n***************");
      printf("\nChon lua ? ");
    }

    void main()
    {
      char traloi;
      do {
        menu();
        do {
          traloi = getch();
        } while (traloi < '0' || traloi > '3');
        putc(traloi, stdout);
        switch (traloi)
        {
          case '1' : nhapmoi();
                      break;
          case '2' : xoa();
                      break;
          case '3' : timkiem();
                      break;
        }
      } while (traloi != '0');
    }

    Nếu muốn đẹp và xuất ra đc nhìu thứ thì bạn tham khảo tại topic này nha http://itvi.co.cc/forum-f7/topic-t57.htm Nhap xuat cau truc mang sinh vien (bai tap 4) 812421
    Vy Thanh Định
    Vy Thanh Định
    Web Master
    Web Master


    Giới tính : Nam Bài gửi : 228
    Tổng Điểm : 544
    Điểm Thưởng : 16
    Sinh Nhật : 19/05/1990 Bị Dụ Dỗ : 11/09/2009
    Tuổi : 34

    Nhap xuat cau truc mang sinh vien (bai tap 4) Empty Re: Nhap xuat cau truc mang sinh vien (bai tap 4)

    Bài gửi by Vy Thanh Định 16/10/2009, 21:40

    Bài này mới chỉnh sửa, còn phần xếp loại học lực chưa kịp làm thông cảm nhá

    Code:
    /*****************************************************************************
    * Chuong trinh C4-1: Chuong trinh quan ly danh sach sinh vien, cai dat bang  *
    *                            danh sach ke                                  *
    *****************************************************************************/

    #include <stdio.h>
    #include <conio.h>

    #define MAX 100
    #define TRUE 1
    #define FALSE 0

    typedef struct sinhvien
    {
      int mssv;
      char hoten[20];
      float DIEMTOAN, DIEMVAN, DIEMLY, dtb;
    };

    typedef struct list
    {
        int n;
        sinhvien a[MAX];
    };

    // tac vu initialize: khoi dong danh sach ke
    void initialize(list *p)
    {
        p->n = 0;
    }

    // Tac vu listsize: xac dinh so nut trong danh sach
    int listsize(list *p)
    {
        return(p->n);
    }

    // Tac vu empty: kiem tra danh sach co bi rong khong
    int empty(list *p)
    {
        return((p->n == 0) ? TRUE : FALSE);
    }

    // Tac vu full: kiem tra danh sach bi day khong
    int full(list *p)
    {
        return((p->n == MAX) ? TRUE : FALSE);
    }

    // Tac vu insert: chen nut co noi dung x vao vi tri pos
    void insert(list *p, int pos, sinhvien x)
    {
        int i;
        if(pos < 0 || pos > listsize(p))
        {
            printf("Vi tri chen khong phu hop.");
            return;
        }
        else
            if(full(p))
            {
                printf("Danh sach bi day.");
                return;
            }
            else
            {
                for(i = listsize(p)-1; i >= pos; i--)
                    p->a[i+1] = p->a[i];
                p->a[pos] = x;
                p->n++;
            }
    }

    // Tac vu remove: xoa nut tai vi tri pos trong danh sach
    sinhvien remove(list *p, int pos)
    {
        int i;
        sinhvien x;
        if(pos < 0 || pos >= listsize(p))
            printf("Vi tri xoa khong phu hop.");
        else
            if(empty(p))
                printf("Danh sach khong co sinh vien.");
            else
            {
                x = p->a[pos];
                for(i = pos; i <= listsize(p)-1; i++)
                    p->a[i] = p->a[i+1];
                p->n--;
                return(x);
            }
    }

    // Tac vu clearlist: xoa tat ca cac nut trong danh sach
    void clearlist(list *p)
    {
        p->n = 0;
    }

    // Tac vu replace: hieu chinh noi dung cua nut tai vi tri pos trong danh sach
    void replace(list *p, int pos, sinhvien x)
    {
        if(pos < 0 || pos >= listsize(p))
        {
            printf("Vi tri hieu chinh khong phu hop.");
            return;
        }
        else
            if(empty(p))
            {
                printf("Danh sach khong co sinh vien.");
                return;
            }
            else
                p->a[pos] = x;
    }

    // Tac vu traverse: duyet danh sach sinh vien
    void traverse(list *p)
    {
        int i;
        if(p->n == 0)
        {
            printf("\nDanh sach khong co sinh vien");
            return;
        }
        for(i = 0; i < p->n; i++)
            printf("\n|%3d|%8d|%20s|%6.0f|%6.0f|%6.0f|%6.1f|", i, p->a[i].mssv, p->a[i].hoten,
            p->a[i].DIEMTOAN,p->a[i].DIEMVAN,p->a[i].DIEMLY,p->a[i].dtb);       
            printf("\n+---+--------+--------------------+------+------+------+------+");
    }

    // Tac vu selectionsort: sap xep danh sach theo MSSV tang dan
    void selectionsort(list *p)
    {
        int i, j, vitrimin;
      sinhvien svmin;
        for(i = 0; i < p->n-1; i++)
        {
            svmin = p->a[i];
            vitrimin = i;
            for(j = i+1; j < p->n; j++)
                if(svmin.mssv > p->a[j].mssv)
                {
                    svmin = p->a[j];
                    vitrimin = j;
                }
            // hoan doi
            p->a[vitrimin] = p->a[i];
            p->a[i] = svmin;
        }
    }

    void sort(list *p)
    {
        int i, j, vitrimax;
        sinhvien tbmax;
        for(i = 0; i < p->n-1; i++)
        {
            tbmax = p->a[i];
            vitrimax = i;
            for(j = i+1; j < p->n; j++)
                if(tbmax.dtb < p->a[j].dtb)
                {
                    tbmax = p->a[j];
                    vitrimax = j;
                }
            // hoan doi
            p->a[vitrimax] = p->a[i];
            p->a[i] = tbmax;
        }
    }

    /* Tac vu linearsearch: tim kiem tuyen tinh, neu khong tim thay ham nay tra
        ve tri -1, neu tim thay ham nay tra ve vi tri tim thay            */
    int linearsearch(list *p, int mssv)
    {
        int vitri = 0;
        while(p->a[vitri].mssv != mssv && vitri < p->n)
            vitri++;
        if(vitri == p->n)            // khong tim thay
            return(-1);
        return(vitri);                          // tim thay
    }

    int search(list *p,float dtb)
    {
        int vitri = 0;
        while(p->a[vitri].dtb != dtb && vitri < p->n)
            vitri++;
        if(vitri == p->n)            // khong tim thay
            return(-1);
        return(vitri);                          // tim thay
    }

    void main()
    {
        struct list ds;
        sinhvien sv;
        int chucnang, vitri;
        char c;

    //    clrscr();
        initialize(&ds);

        do
        {
            // menu chinh cua chuong trinh
            printf("\n\nCHUONG TRINH QUAN LY DANH SACH SINH VIEN:\n");
            printf("Cac chuc nang cua chuong trinh:\n");
            printf("  1: Xem danh sach sinh vien\n");
            printf("  2: Them mot sinh vien vao danh sach\n");
            printf("  3: Xoa mot sinh vien trong danh sach\n");
            printf("  4: Hieu chinh sinh vien\n");
            printf("  5: Sap xep danh sach theo MSSV\n");
            printf("  6: Sap xep danh sach theo DTB\n");
            printf("  7: Tim kiem sinh vien theo MSSV\n");
            printf("  8: Tim kiem sinh vien theo DTB\n");
            printf("  9: Xoa toan bo danh sach\n");
            printf("  0: Ket thuc chuong trinh\n");
            printf("Chuc nang ban chon: ");
            scanf("%d", &chucnang);
            switch(chucnang)
            {
                case 1:
                {
                    printf("\nDanh sach sinh vien: ");
                    printf("\n+---+--------+--------------------+------+------+------+------+");
                    printf("\n|STT|  MSSV  |        HO TEN      | TOAN | VAN  |  LY  | DTB  |");
                    printf("\n+---+--------+--------------------+------+------+------+------+");
                    traverse(&ds);
                    break;
                }
                case 2:
                {
                    do{
                        printf("\nVi tri them (0, 1, 2, ...): ");
                        scanf("%d", &vitri);
                        printf("Ma so sinh vien: ");
                        scanf("%d", &sv.mssv);
                        printf("Ho ten sinh vien: ");fflush(stdin);
                        gets(sv.hoten);
                        printf("Diem toan: ");
                        scanf("%f", &sv.DIEMTOAN);
                        printf("Diem van: ");
                        scanf("%f", &sv.DIEMVAN);
                        printf("Diem ly: ");
                        scanf("%f", &sv.DIEMLY);
                        sv.dtb=(sv.DIEMTOAN+sv.DIEMVAN+sv.DIEMLY)/3.0;
                        insert(&ds, vitri, sv);
                        printf("Nhap them khong ?(c/k): ");
                    c = getche();
                    }while(c == 'c' || c == 'C');
                    break;
                }
                case 3:
                {
                    printf("Ma sinh vien can xoa: ");fflush(stdin);
                    scanf("%d", &sv.mssv);
                    vitri = linearsearch(&ds, sv.mssv);
                    if(vitri == -1)
                        printf("Khong co sinh vien co MSSV %d trong danh sach",sv.mssv);
                    else
                        remove(&ds, vitri);
                        printf("Da xoa sinh vien co MSSV %d",sv.mssv);
                    break;
                }
                case 4:
                {
                    printf("Ma sinh vien can sua: ");fflush(stdin);
                    scanf("%d", &sv.mssv);
                    vitri = linearsearch(&ds, sv.mssv);
                    if(vitri == -1)
                        printf("Khong co sinh vien co MSSV %d trong danh sach",sv.mssv);
                    else
                      printf("\nSTT:%d  MSSV:%d  HOTEN:%s", vitri,
                        ds.a[vitri].mssv, ds.a[vitri].hoten);
                    printf("\nMa so sv moi: ");
                    scanf("%d", &sv.mssv);
                    printf("Ho ten sv moi: ");fflush(stdin);
                    gets(sv.hoten);
                    printf("Diem toan: ");
                    scanf("%d", &sv.DIEMTOAN);
                    printf("Diem van: ");
                    scanf("%d", &sv.DIEMVAN);
                    printf("Diem ly: ");
                    scanf("%d", &sv.DIEMLY);
                    sv.dtb=(sv.DIEMTOAN+ sv.DIEMVAN+ sv.DIEMLY)/3.0;
                    replace(&ds, vitri, sv);
                    printf("Da sua xong sinh vien co ma so: %d!",sv.mssv);
                    break;
                }
                case 5:
                {
                    printf("Ban co chac khong (c/k): ");
                    c = getche();
                    if(c == 'c' || c == 'C')
                        selectionsort(&ds);
                    break;
                }
                case 6:
                {
                    printf("Ban co chac khong (c/k): ");
                    c = getche();
                    if(c == 'c' || c == 'C')
                        sort(&ds);
                    break;
                }
                case 7:
                {
                    printf("\nMa so sinh vien can tim: ");
                    scanf("%d", &sv.mssv);
                    vitri = linearsearch(&ds, sv.mssv);
                    if(vitri == -1)
                        printf("Khong co sinh vien co MSSV %d trong danh sach",sv.mssv);
                    else
                    {
                        printf("Tim thay tai vi tri %d trong danh sach", vitri);
                        printf("\n+--------+--------------------+------+------+------+------+");
                        printf("\n|  MSSV  |        HO TEN      | TOAN | VAN  |  LY  |  DTB |");
                        printf("\n+--------+--------------------+------+------+------+------+");
                        printf("\n|%8d|%20s|%6.0f|%6.0f|%6.0f|%6.1f|", ds.a[vitri].mssv, ds.a[vitri].hoten,ds.a[vitri].DIEMTOAN,ds.a[vitri].DIEMVAN,ds.a[vitri].DIEMLY,ds.a[vitri].dtb);       
                        printf("\n+--------+--------------------+------+------+------+------+");
                    }
                    break;
                }
                case 8:
                {
                    printf("\nDTB sinh vien can tim: ");
                    scanf("%f", &sv.dtb);
                    vitri = search(&ds, sv.dtb);
                    if(vitri == -1)
                        printf("Khong co sinh vien co DTB %d trong danh sach",sv.dtb);
                    else
                    {
                        printf("Tim thay tai vi tri %d trong danh sach", vitri);
                        printf("\n+--------+--------------------+------+------+------+------+");
                        printf("\n|  MSSV  |        HO TEN      | TOAN | VAN  |  LY  |  DTB |");
                        printf("\n+--------+--------------------+------+------+------+------+");
                        printf("\n|%8d|%20s|%6.0f|%6.0f|%6.0f|%6.1f|", ds.a[vitri].mssv, ds.a[vitri].hoten,ds.a[vitri].DIEMTOAN,ds.a[vitri].DIEMVAN,ds.a[vitri].DIEMLY,ds.a[vitri].dtb);       
                        printf("\n+--------+--------------------+------+------+------+------+");
                    }
                    break;
                }
                case 9:
                {
                    printf("Ban co chac khong (c/k): ");
                    c = getche();
                    if(c == 'c' || c == 'C')
                        clearlist(&ds);
                    break;
                }
            }
        } while(chucnang != 0);
    }
    avatar
    minhchi692002
    New Member
    New Member


    Giới tính : Nam Bài gửi : 9
    Tổng Điểm : 11
    Điểm Thưởng : 0
    Sinh Nhật : 13/09/1990 Bị Dụ Dỗ : 21/09/2009
    Tuổi : 34

    Nhap xuat cau truc mang sinh vien (bai tap 4) Empty Re: Nhap xuat cau truc mang sinh vien (bai tap 4)

    Bài gửi by minhchi692002 16/10/2009, 22:18

    hay qua di

    Sponsored content


    Nhap xuat cau truc mang sinh vien (bai tap 4) Empty Re: Nhap xuat cau truc mang sinh vien (bai tap 4)

    Bài gửi by Sponsored content


      Hôm nay: 25/11/2024, 13:42