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

Đề tài: Debug đoạn code quản lý sinh viên

  1. #1
    Ngày gia nhập
    11 2007
    Bài viết
    153

    Question Debug đoạn code quản lý sinh viên

    Hiz hiz mình code bài quản lý sinh viên có phần sử lý file mà không hiểu cái đoạn này sai ở đâu, khi ghi ra nó ghi toàn mã linh tinh rồi khi đọc lại cũng không đọc được chả hiểu sao bạn nào biết giúp mình coi lỗi ở đâu với!!Cụ thể là ở hàm SaveToDisk và hàm ReadFromDisk.
    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <string.h>
    4. typedef struct stDate
    5. {
    6.     int Ngay;
    7.     int Thang;
    8.     int Nam;
    9. }Date;
    10.  
    11. typedef struct stSinhVien
    12. {
    13.     int Ma;
    14.     char HoTen[30];
    15.     struct stDate NgaySinh;
    16.     //Date NgaySinh;
    17.     float Diem;
    18. }SinhVien;
    19.  
    20. int NhapDS(SinhVien A[])
    21. {
    22.     int i,n;
    23.     float Diem;
    24.     printf ("\n\nNhap so sinh vien lop ban : ");
    25.     scanf ("%d",&n);
    26.     for (i=0;i<n;i++)
    27.     {
    28.         printf ("\n\nThanh phan cua sinh vien thu %d la : ",i+1);
    29.         printf ("\n\nMa : ");
    30.         scanf ("%d",&A[i].Ma);
    31.         printf ("\n\nHo va ten : ");
    32.         fflush(stdin);
    33.         gets(A[i].HoTen);
    34.         printf ("\n\nNgay sinh : ");
    35.         scanf ("%d%d%d",&A[i].NgaySinh.Ngay,&A[i].NgaySinh.Thang,&A[i].NgaySinh.Nam);
    36.         printf ("\n\nDiem : ");
    37.         scanf ("%f",&Diem);
    38.         A[i].Diem=Diem;
    39.     }
    40.     return n;
    41. }
    42.  
    43. void HienDS(struct stSinhVien A[],int n)
    44. {
    45.     int i;
    46.     printf ("\n\nBang thong ke sinh vien : ");
    47.     printf ("\n|------------------------------------------------|");
    48.     printf ("\n| Ma |      Ho va ten       |  Ngay sinh |  Diem |");
    49.     printf ("\n|------------------------------------------------|");
    50.     for (i=0;i<n;i++)
    51.     {
    52.         printf ("\n| %02d | %20s | %02d/%02d/%04d | %5.2f |",A[i].Ma,A[i].HoTen,A[i].NgaySinh.Ngay,A[i].NgaySinh.Thang,A[i].NgaySinh.Nam,A[i].Diem);
    53.     }
    54.     printf ("\n|------------------------------------------------|");
    55. }
    56.  
    57. void sapxep(SinhVien A[],int n)
    58. {
    59. int i,j;
    60. SinhVien traodoi;
    61. printf("\n sap xep lai ho ten in ra la: ");
    62. printf ("\n\nBang thong ke sinh vien : ");
    63.     printf ("\n|------------------------------------------------|");
    64.     printf ("\n| Ma |      Ho va ten       |  Ngay sinh |  Diem |");
    65.     printf ("\n|------------------------------------------------|");
    66.     for(i=0;i<n-1;i++)
    67.     {
    68.      for(j=i+1;j<n;j++)
    69.      {
    70.       if(strcmp(A[i].HoTen,A[j].HoTen) >0 )
    71.       {
    72.       traodoi=A[i];
    73.       A[i]=A[j];
    74.       A[j]=traodoi;
    75.       }
    76.       }
    77.       }
    78.       for(i=0;i<n;i++)
    79.       {
    80.         printf ("\n| %02d | %20s | %02d/%02d/%04d | %5.2f |",A[i].Ma,A[i].HoTen,A[i].NgaySinh.Ngay,A[i].NgaySinh.Thang,A[i].NgaySinh.Nam,A[i].Diem);
    81.       }
    82.       printf ("\n|------------------------------------------------|");
    83.  
    84.  
    85.  
    86.  
    87. }
    88.  
    89. int SaveToDisk(SinhVien  A[], int n)
    90. {
    91.     char FileName[255];
    92.    FILE *fp;
    93.    int count,i;
    94.    int check;
    95.    printf("\nMoi ban nhap vao ten tep:");
    96.    fflush(stdin); gets(FileName);
    97.    fp = fopen(FileName, "w");
    98.    if(fp == NULL)
    99.    {
    100.     printf("\nKhong tao duoc file");
    101.       fclose(fp);
    102.       return 0;
    103.    }
    104.    for(i=0; i<n; i++)
    105.    {
    106.     count = fwrite(&A[i], sizeof(SinhVien), 1, fp);
    107.        check=ferror(fp);
    108.        if(check!=0)
    109.        {
    110.        printf("\n xay ra loi thao tac voi tep.");
    111.        fclose(fp);
    112.        return 0;
    113.        }
    114.       if(count == 0)
    115.       {
    116.     printf("\nLoi ghi tep");
    117.      fclose(fp);
    118.      return 0;
    119.       }
    120.    }
    121.    //count = fwrite(&A[0], sizeof(SinhVien) *n , 1, fp);
    122.    fclose(fp);
    123.   if(fclose(fp)==EOF)
    124.   {
    125.   printf("\n loi khong the dong tep");
    126.   return 0;
    127.   }
    128.    return 1;
    129. }
    130.  
    131. int ReadFormDisk(SinhVien A[])
    132. {
    133.    int count=0,i=0;
    134.    char FileName[255];
    135.    SinhVien Temp;
    136.    FILE *fp;
    137.    printf("\nMoi ban nhap vao ten tep:");
    138.    fflush(stdin); gets(FileName);
    139.    fflush(fp);
    140.    fp = fopen(FileName, "r");
    141.    if(fp == NULL)
    142.    {
    143.     printf("\nKhong doc duoc file");
    144.       fclose(fp);
    145.       return 0;
    146.    }
    147.    while(1)
    148.    {
    149.     count = fread( &Temp, sizeof(SinhVien), 1, fp);
    150.     if(count>0)
    151.     {
    152.         A[i] = Temp;
    153.      i++;
    154.     }
    155.     else   //ko doc duoc nua (da ket thuc tep)
    156.     {
    157.         break;
    158.     }
    159.    }
    160.    fclose(fp);
    161.    return i;
    162. }
    163.  
    164. void main()
    165. {
    166.     int n=0;
    167.     struct stSinhVien DSSV[30];
    168.     //SinhVien DSSV[30];
    169.     //char HOVATEN[30];
    170.     //char HOTEN;
    171.     int chon;
    172.     do
    173.     {
    174.         clrscr ();
    175.         printf ("\n\nChuong trinh lam viec voi Menu : ");
    176.         printf ("\n\n1 . Nhap danh sach sinh vien ");
    177.         printf ("\n\n2 . Hien thi danh sach sinh vien");
    178.         printf ("\n\n3 . Sap xep");
    179.         printf ("\n\n4 . Ghi ra tep");
    180.         printf ("\n\n5 . Doc thong tin tu tep");
    181.         printf ("\n\n6 . Thoat khoi chuong trinh");
    182.         printf ("\n\nChon danh muc ban muon : ");
    183.         scanf ("%d",&chon);
    184.         switch (chon)
    185.         {
    186.             case 1:
    187.                 printf ("\n\nBan chon muc 1");
    188.                 n=NhapDS(DSSV);
    189.             break;
    190.  
    191.             case 2:
    192.                 printf ("\n\nBan chon muc 2");
    193.                 if (n==0)
    194.                 {
    195.                     printf ("\n\nBan chua nhap danh sach sinh vien o muc 1");
    196.                 }
    197.                 else
    198.                 {
    199.                     HienDS(DSSV,n);
    200.                 }
    201.             break;
    202.  
    203.             case 3:
    204.                 printf ("\n\nBan chon muc 3");
    205.                 sapxep(DSSV,n);
    206.                 if (n==0)
    207.                 {
    208.                     printf ("\n\nBan chua nhap danh sach sinh vien o muc 1");
    209.                 }
    210.             break;
    211.  
    212.             case 4:
    213.                 printf ("\n\nBan chon muc 4");
    214.                 SaveToDisk(DSSV,n);
    215.             break;
    216.  
    217.             case 5:
    218.                 printf ("\n\nBan chon muc 5");
    219.                 n = ReadFormDisk(DSSV);
    220.             break;
    221.  
    222.             case 6:
    223.                 printf ("\n\nBan dang xuat ! Hen gap lai");
    224.             break;
    225.  
    226.             default:
    227.                 printf ("\n\nLua chon cua ban khong dung ! Moi ban xem lai Menu");
    228.         }
    229.         printf ("\n\nBan hay nhan phim bat ky de tiep tuc ");
    230.         getch ();
    231.     }while (chon!=6);
    232.  
    233. }

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

    Dài quá đọc mỏi mắt. Để mình chạy thử xem sao. Mà đọc qua thì thấy hình như bạn sinh viên năm nhất hả? Bạn có học ở BK không? Mình ở BK22. Source này có vẻ công phu đối với một newbie đây. Nếu chỉ để nộp bài thì không cần tốn kém thời gian như thế. OK?

  3. #3
    Ngày gia nhập
    11 2007
    Bài viết
    153

    à mình không học ở bách khoa he he bình thường mà, bài này tương đối dễ nhưng mình chưa học thông cái đoạn xử lý file text và binary nên không hiểu cách ghi và đọc cho lắm thôi còn các đoạn còn lại thì đơn giản ^^. Mình muốn học để hiêu rõ bài mà sao lại không cần tốn kém thời gian.

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

  1. Quản Lý Điểm Sinh Viên Code bằng C#
    Gửi bởi khoaimon trong diễn đàn Dự án & Source code C#, ASP.NET
    Trả lời: 9
    Bài viết cuối: 03-03-2014, 10:47 AM
  2. Code chương trình quản lý sinh viên C#
    Gửi bởi quocvanict trong diễn đàn Dự án & Source code C#, ASP.NET
    Trả lời: 5
    Bài viết cuối: 07-09-2012, 01:27 AM
  3. Bài tập C++ [HELP] code C++: quản lí sinh viên
    Gửi bởi anhtran0000 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 7
    Bài viết cuối: 13-11-2011, 10:07 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. Code quản lý sinh viên bằng danh sách lối vòng. Giúp mình thay đổi code kế thừa?
    Gửi bởi caocanha trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 6
    Bài viết cuối: 04-05-2009, 03:39 PM

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