Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: Hỏi một số vấn đề về bài tập quản lý sinh viên

  1. #1
    Ngày gia nhập
    10 2012
    Bài viết
    0

    Mặc định Hỏi một số vấn đề về bài tập quản lý sinh viên

    Như tiêu đề em có 1 bài tập về viết chương trình quản lý sinh viên. em có viết được 1 phần và có 1 số chỗ muốn anh chị giúp em hoàn thiện bài này luôn ạ
    code của em ntn
    Code:
    #include<stdio.h>
    #include<conio.h>
    #include <stdlib.h>
    #include <string.h>
    #define  MAX       100
    typedef struct
    {
        char stt[20];
        char mssv[20];
        char ten[50];
    	char lop[10];
    }sinh_vien;
    int t=1,i;
    // khai bao prototype
    void themsv(char *FileName); // them sinh vien moi
    void hienthids(char *FileName); // hien thi thong tin sinh vien
    void hienthilop(char *FileName);
    void timsv(char *FileName); // tim thong tin sinh vien qua ma sinh vien
    void thaydoitt(char *FileName); // thay doi thong tin sinh vien
    int lua_chon();
    
    void themsv(char *FileName)
    {
         FILE *f;
         char masosv[20];
         int n,i;
         sinh_vien sv;
         int checkms = 0;
         f=fopen(FileName,"a");
         printf("\nNhap so sinh vien can them: ");
         scanf("%d",&n);
         fflush(stdin);
         printf("\nNhap ma sinh vien: ");
         gets(masosv);
         f=fopen(FileName,"r");
         while (!feof(f) && checkms == 0)
         {
               fread(&sv,sizeof(sv),1,f);
               if (strcmp(sv.mssv,masosv)==0)
                  checkms = 1;
         }
         fclose(f);
         if (checkms == 1)
         {
             printf("Da co sinh vien nay co ma so nay roi!\n");
             printf("Xin hay nhap cho lai thao tac ^^ \n");
         }
         else
         {
         f=fopen(FileName,"a");           
         for (i=1;i<=n;i++)
         {
             printf("\nHay nhap thong tin cua sinh vien:\n");
             printf("\nSTT: %d\n",t);
             printf("\nMoi nhap ma sinh vien: ");
             gets(sv.mssv);
             printf("\nHo Va Ten Sinh Vien: ");
             gets(sv.ten);
             printf("\nLop: ");
             gets(sv.lop);
             t++;
             fwrite(&sv,sizeof(sv),1,f);
             fflush(stdin);
         }
         fclose(f);
         printf("\nDa them sinh vien thanh cong !\n");
         printf("Nhan phim bat ky de tiep tuc !!!\n");
         getch();
         }
    }
    
    void hienthids(char *FileName)
    {
         FILE *f;
         sinh_vien sv;
         f=fopen(FileName,"r");
         printf("\nSTT \t MSSV \t\t  Ho va ten \t  Lop \n");
         fread(&sv,sizeof(sv),1,f);
         while (!feof(f))
         {
               printf("\n%d\t %s\t  %s\t  %s\n",sv.mssv,sv.mssv,sv.ten,sv.lop);
               fread(&sv,sizeof(sv),1,f);
         }
         fclose(f);
         printf("Nhan phim bat ky de tiep tuc !!!\n");   
         getch();
    }
    
    void hienthilop(char *FileName)
    {
         char room[20];
         FILE *f;
         int found=0,max;
         sinh_vien sv;
         fflush(stdin);
         printf("Lop: ");
         gets(room);
         f=fopen(FileName,"r");
         while (!feof(f) && found == 0)
         {
               fread(&sv,sizeof(sv),1,f);
               if (strcmp(sv.lop,room)==0)
                  found = max;
         }
         fclose(f);
         if (found == max)
         {
               printf("\nSTT \t MSSV \t\t  Ho va ten \t  Lop \n");
               printf("\n%d\t %s\t  %s\t  %s\n",sv.stt,sv.mssv,sv.ten,sv.lop);
         }
         else
             printf("Khong tim thay lop: %s\n",sv.lop);
         printf("\nNhan phim bat ky de tiep tuc !!!\n");
         getch();     
    }
    
    void timsv(char *FileName)
    {
         char MS[20];
         FILE *f;
         int found=0;
         sinh_vien sv;
         fflush(stdin);
         printf("Nhap ma so sinh vien can tim: ");
         gets(MS);
         f=fopen(FileName,"r");
         while (!feof(f) && found == 0)
         {
               fread(&sv,sizeof(sv),1,f);
               if (strcmp(sv.mssv,MS)==0)
                  found = 1;
         }
         fclose(f);
         if (found == 1)
         {
               printf("\nSTT \t MSSV \t\t  Ho va ten \t  Lop \n");
               printf("\n%d\t %s\t  %s\t  %s\n",i,sv.mssv,sv.ten,sv.lop);
         }
         else
             printf("Khong tim thay sinh vien co ma sinh vien: %s\n",sv.mssv);
         printf("Nhan phim bat ky de tiep tuc !!!\n");
         getch();
    }
    
    void thaydoitt(char *FileName)
    {
         char masv[20];
         FILE *f;
         int change=0;
         sinh_vien sv;
         fflush(stdin); // xoa ky tu enter truoc khi vao dong moi
         printf("Nhap ma so sinh vien thay doi thong tin: ");
         gets(masv);
         f=fopen(FileName,"r");
         while (!feof(f) && change == 0)
         {
               fread(&sv,sizeof(sv),1,f);
               if (strcmp(sv.mssv,masv)==0)
                  change = 1;
         }
         fclose(f);
         if (change == 1)
         {
         f=fopen(FileName,"a+"); 
             printf("\nHo Va Ten Sinh Vien: ");
             gets(sv.ten);
             printf("\nLop sinh hoat moi: ");
             gets(sv.lop);
             fwrite(&sv,sizeof(sv),1,f);
             fflush(stdin);
         fclose(f);
         printf("\nSua thong tin thanh cong !\n");  
         }
         else
             printf("Khong tim thay sinh vien co ma sinh vien: %s\n",sv.mssv);
         printf("Nhan phim bat ky de tiep tuc !!!\n");
         getch();
    }
    
    int lua_chon()
    {
        int c;
        printf ("*------------------------------------------------*\n");
        printf ("*---------CHUONG TRINH QUAN LY SINH VIEN---------*\n");
        printf ("* Coder: Doan Van Kiem                           *\n");
        printf ("*------------Moi lua chon chuc nang--------------*\n");
        printf ("* 1.Them Sinh Vien.                              *\n");
        printf ("* 2.Hien thi danh sach Sinh Vien.                *\n");
        printf ("* 3.Hien thi danh sach Sinh Vien theo lop.       *\n");
        printf ("* 4.Tim thong tin cua sinh vien qua MSSV.        *\n");
        printf ("* 5.Thay doi thong tin cua sinh vien qua MSSV.   *\n");
        printf ("* 6.Sap xep danh sach Sinh Vien.                 *\n");
        printf ("* 7.Thoat.                                       *\n");
        printf ("*------------------------------------------------*\n");
        do
        {
            printf("\nHay cho lua chon cua ban (bang so) : ");
            scanf("%d",&c);
        }
            while(c<0||c>7);
            return c;
    }
    
    
    main()
    {
        int choice;
        for(;;) // vong lap vo han
        {
            choice=lua_chon();
            switch(choice)
            {
                case 1: 
                themsv("D:\\QLSV.txt");
                break;
                case 2:
                hienthids("D:\\QLSV.txt");
                break;
                case 3:
                hienthilop("D:\\QLSV.txt");
                break;
                case 4:
                timsv("D:\\QLSV.txt");
                break;
                case 5:
                thaydoitt("D:\\QLSV.txt");
                break;                 
                case 6:
                     printf("chuc nang dang hoan thien!");
                     break;
                case 7: 
                exit(0);
            }
        }
    }
    hiện tại em muốn làm sao cho nó hiên thị đúng số thứ tự của các sinh viên khi xem danh sách. Và Phần hiển thị danh sách sinh viên theo lớp thì nó chỉ hiện được 1 thông tin của 1 sinh viên thôi mặc dù em có viết thêm vài sinh viên cùng lớp nó cũng chỉ ra 1 người.
    Mong mọi người giúp em tí ạ.

  2. #2
    Ngày gia nhập
    11 2012
    Bài viết
    136

    Bạn làm một hàm tìm kiếm đi trùng với tên sinh viên cần tìm thì tương ứng với cấu trúc sinhvien đang có và một hàm hiển thị thông tin sinh viên tham số của hàm là sinh viên vừa tìm được, mình vừa xem qua bài của bạn thì mình thấy bài của bạn để sử dụng lại mã nguồn chắc không dùng được gì, ngoại trừ khai báo cấu trúc. Mình khuyên bạn nên xem lại xem sao, bài này bạn đọc ghi nhị phân nên chắc chắn dữ liệu nhập từ bàn phím, nếu là mình mình sẽ làm một hàm chuyên dùng để ghi ra file, một hàm chuyên dùng để đọc dữ liệu từ file, một hàm để nhập thông tin cho từng cấu trúc sinh viên, một hàm hiển thị thông tin riêng, tìm kiếm riêng, nhìn bài của bạn mình cảm giác ôm đồm nhiều quá vừa đọc vừa ghi. tưởng dễ dàng thao tác nhưng nhìn kỹ lại bạn sẽ thấy nó lằng nhằng. Mọi người có ý kiến gì xin chỉ giáo thêm .
    Giao lưu và học hỏi
    https://www.facebook.com/kimcy1992

  3. #3
    Ngày gia nhập
    10 2012
    Bài viết
    0

    bạn có thể chỉ sơ lại giúp mình đc không. mình cũng chỉ là newbie thui ak

Các đề tài tương tự

  1. Quản lí sinh viên bằng stack dùng danh sách liên kết. Làm sao để nhập nhiều sinh viên?
    Gửi bởi hoainamken trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 24-08-2011, 10:34 AM
  2. Bài tập quản lý sinh viên trong lập trình C#. Tìm kiếm sinh viên in ra cả danh sách?
    Gửi bởi anhduc12c5 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 24-08-2011, 08:32 AM
  3. Chương trình quản lí sinh viên viết trong visual c++ 2010. Lỗi không chạy khi in danh sách sinh viên theo năm
    Gửi bởi hikaru1015 trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 9
    Bài viết cuối: 03-06-2011, 09:31 AM
  4. Kỹ thuật C code bài tập về quản lý sinh viên. Không hiển thị đc tên với mã số sinh viên?
    Gửi bởi seudaudokt trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 06-09-2010, 12:18 AM
  5. Chương trình quản lý sinh viên viết bằng C. Làm sao tìm kiếm sinh viên theo tên và sắp xếp?
    Gửi bởi linhdong24 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 24-06-2009, 12:53 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn