Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Chương trình quản lý sinh viên

  1. #1
    No Avatar
    tonykevin master793 Khách

    Smile Chương trình quản lý sinh viên

    Bài này em đã làm xong (viết bằng C++) nhưng có 1 vài chức năng chưa chạy được. Ấn F9 thì thông báo ko có lỗi gì nhưng chỉ có mấy mục 0,1,2,3,4,9,A là chạy được. Ngoài ra lúc in ra cũng ko ra ký tự bình thường mà ra toàn là %x,%y...Các anh có thể kiểm tra hộ em xem đó là lỗi gì ko ?

    /* Chuong trinh quan ly sinh vien */

    #include<stdio.h>
    #include"dos.h"
    #include<conio.h>
    #include<string.h> //#include"t.h"
    #include<ctype.h>
    #include<iostream.h>

    char file_name[25]="sv.dat";
    typedef struct Date
    {
    int ngay;
    int thang;
    int nam;
    };
    typedef struct quequan
    {
    char tinh[20];
    char huyen[20];
    char xa[20];
    };
    typedef struct hoten
    {
    char ho[20];
    char tendem[20];
    char ten[20];
    };

    typedef struct sinh_vien
    {
    hoten ht;
    Date ns;
    quequan qq;
    float diem_tb;
    char ma_so[5];
    char lop[20]; //moi them vao
    };
    typedef struct
    {
    char tenlop[30];
    sinh_vien thanhvien; // long cau truc sinh vien vao vao cau truc lop
    int nam,nu; //so dinh vien nam, nu
    int nienkhoa,tong;
    char danhhieu[20];
    }lop;
    FILE *f;
    int n;
    void khoi_tao(sinh_vien a[]);
    void in_danh_sach(sinh_vien a[],int n);
    void them_sv(sinh_vien a[]);
    void loai_sv(sinh_vien a[]);
    void sua_chua(sinh_vien a[]);
    void sx_ten(sinh_vien a[]);
    void sx_ns(sinh_vien a[]);
    void sx_tb(sinh_vien a[]);
    void sx_ma_so(sinh_vien a[]);
    void tim_que(sinh_vien a[]);
    void tim_diem(sinh_vien a[]);
    void tim_danhhieu(sinh_vien a[]);
    void tim_ns(sinh_vien a[]);
    void tim_kiem(sinh_vien a[]);
    void ghi(sinh_vien a[],int n); // void chuan(void);
    void main()
    {textmode(C80);
    sinh_vien a[150];
    char ch='a';
    clrscr();
    khoi_tao(a);
    while(ch!='0')
    {
    clrscr();
    cout<< " \n Sinh vien thuc hien: Hoang Quoc Viet " ;
    cout<< " \n Chuong trinh quan ly sinh vien ";
    cout<< " \n ****************************************";
    cout<< " \n 1: In danh sach sinh vien ";
    cout<< " \n 2: Them mot sinh vien vao danh sach ";
    cout<< " \n 3: Loai mot sinh vien khoi danh sach ";
    cout<< " \n 4: Thay doi thong tin mot sinh vien ";
    cout<< " \n 5: Sap xep sinh vien theo ten ";
    cout<< " \n 6: Sap xep sinh vien theo ngay sinh ";
    cout<< " \n 7: Sap xep sinh vien theo diem trung binh ";
    cout<< " \n 8: Sap xep sinh vien theo ma so ";
    cout<< " \n 9: Tim kiem sinh vien theo Ten ";
    cout<< " \n A: Tim kiem sinh vien theo Que ";
    cout<< " \n B: Tim kiem sinh vien theo Diem ";
    cout<< " \n C: Tim kiem sinh vien theo Danh hieu ";
    cout<< " \n D: Tim kiem sinh vien theo Ngay sinh ";
    cout<< " \n 0: Thoat ";
    fflush(stdin);
    ch=getch();
    switch(ch)
    {
    case '1': in_danh_sach(a,n); break;
    case '2': them_sv(a); break;
    case '3': loai_sv(a); break;
    case '4': sua_chua(a); break;
    case '5': sx_ten(a); break;
    case '6': sx_ns(a); break;
    case '7': sx_tb(a); break;
    case '8': sx_ma_so(a); break;
    case '9': tim_kiem(a); break;
    case 'a': tim_que(a);break;
    case '0': ghi(a,n); break;
    };
    }
    }
    void khoi_tao(sinh_vien a[])
    {
    n=0;
    sinh_vien sv;
    f=fopen("d:\\sv.dat","ab");
    if(f==NULL)
    f=fopen("file_name","ab");
    else
    while(fread(&sv,sizeof(sinh_vien),1,f)>0)
    {
    n++;
    a[n]=sv;
    }
    fclose(f);
    }
    void in_danh_sach(sinh_vien a[], int n)
    {
    int i,y=1;
    clrscr();
    fflush(stdin);
    cout<< " ÚÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄ";
    y++;
    gotoxy(1,y); cout<< "³Stt ";
    gotoxy(6,y); cout<< "³ Ho va Ten";
    gotoxy(34,y); cout<< "³ Ngay sinh";
    gotoxy(46,y); cout<< "³ Que quan";
    gotoxy(62,y); cout<< "³Diem tb";
    gotoxy(72,y); cout<< "³ Ma so ³";
    cout<< "ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ?ÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄ ?ÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄ ?ÄÄÄÄ´";
    y++;
    for(i=1;i<=n;i++)
    {
    // chuan(a[i].ho);
    // chuan(a[i].ten);
    y++;
    gotoxy(1,y); cout<< "³ %d",i;
    gotoxy(6,y); cout<< "³ %s %s",a[i].ht.ho,a[i].ht.ten;
    gotoxy(34,y); cout<< "³%2d:%2d:%d",a[i].ns.ngay,a[i].ns.thang,a[i].ns.nam;
    gotoxy(46,y); cout<< "³ %s",a[i].qq.tinh;
    gotoxy(62,y); cout<< "³";
    if(a[i].diem_tb>=0)
    {
    gotoxy(63,y); cout<< "%0.2f",a[i].diem_tb;
    }
    gotoxy(72,y); cout<< "³ %s ³",a[i].ma_so;
    if(y>23)
    {
    if(i==n)
    cout<< "ÀÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ?ÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄ ?ÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÁÄÄ ?ÄÄÄÙ";
    getch();
    clrscr();
    y=0;
    }
    }
    if(y!=0)
    {
    cout<< "ÀÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ?ÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄ ?ÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÁÄÄ ?ÄÄÄÄÙ";
    getch();
    }
    }
    void them_sv(sinh_vien a[])
    {
    clrscr();
    char s[30];
    float tb;
    int i,j,d,c;
    cout<< " Ho va Ten:"; fflush(stdin); gets(s);
    if(s!='\0')
    {
    n++;
    c=strlen(s)-1;
    while(s[c]==' '&&c>0) c--;
    d=c;
    while(s[d]!=' '&&d>0) d--;
    j=0;
    for(i=d+1;i<=c;i++)
    {
    a[n].ht.ten[j]=s[i];
    j++;
    }
    a[n].ht.ten[j]='\0';
    c=d;
    while(s[c]==' '&&c>0) c--;
    d=0;
    while(s[d]==' '&&d<c) d++;
    j=0;
    for(i=d;i<=c;i++)
    {
    a[n].ht.ho[j]=s[i];
    j++;
    }
    a[n].ht.ho[j]='\0';
    cout<< " Ngay thang nam sinh:";
    cin>>"%d%d%d",&i,&j,&d;
    a[n].ns.ngay=i;
    a[n].ns.thang=j;
    a[n].ns.nam=d;
    cout<< " Que quan:";
    cout<< " Tinh : "; fflush(stdin);
    gets(s);strcpy(a[n].qq.tinh,s);
    cout<< " Huyen : "; fflush(stdin);
    gets(s);strcpy(a[n].qq.huyen,s);
    cout<< "Xa : "; fflush(stdin);
    gets(s);strcpy(a[n].qq.xa,s);

    cout<< " Diem trung binh:";
    cin>>"%f",&tb;
    a[n].diem_tb=tb;
    cout<< " Ma so sinh vien:"; fflush(stdin);
    gets(a[n].ma_so);
    }
    }
    void loai_sv(sinh_vien a[])
    {
    clrscr();
    int k,i;
    char ch='n';
    cout<< " So thu tu cua sinh vien can xoa:";
    scanf("%d",&k);
    if(k<1||k>n)
    cout<< " Khong tim thay sinh vien thu %d trong danh sach",k;
    else
    {
    cout<< " Sinh vien thu %d la: %s %s",k,a[k].ht.ho,a[k].ht.ten;
    cout<< " Sinh ngay %d %d %d",a[k].ns.ngay,a[k].ns.thang,a[k].ns.nam;
    cout<< " Que quan:";
    cout<< " Tinh: %s",a[k].qq.tinh;
    cout<< " Huyen : %s",a[k].qq.huyen;
    cout<< " Xa: %s",a[k].qq.xa;
    if(a[k].diem_tb>=0)
    cout<< " Diem trung binh: %0.2f",a[k].diem_tb;
    cout<< " Ma so sinh vien: %s",a[k].ma_so;
    cout<< " Ban co chac la xoa sinh vien nay khong (y/n)";
    fflush(stdin); ch=getche();
    }
    if(ch=='y'||ch=='Y')
    {
    for(i=k;i<n;i++)
    a[i]=a[i+1];
    n--;
    cout<< " Da xoa sinh vien thu %d khoi danh sach",k;
    }
    getch();
    }
    void sua_chua(sinh_vien a[])
    {
    clrscr();
    int k,i;
    char ch='n';
    cout<< " So thu tu cua sinh vien can thay doi:";
    cin>>"%d",&k;
    if(k<1||k>n)
    cout<< " Khong tim thay sinh vien thu %d trong danh sach",k;
    else
    {
    cout<< " Sinh vien thu %d la: %s %s",k,a[k].ht.ho,a[k].ht.ten;
    cout<< " Sinh ngay %d %d %d",a[k].ns.ngay,a[k].ns.thang,a[k].ns.nam;
    cout<< " Que quan: ";
    cout<< " Tinh: %s",a[k].qq.tinh;
    cout<< " Huyen: %s",a[k].qq.huyen;
    cout<< " Xa: %s",a[k].qq.xa;
    if(a[k].diem_tb>=0)
    cout<< " Diem trung binh: %0.2f",a[k].diem_tb;
    cout<< " Ma so sinh vien: %s",a[k].ma_so;
    cout<< " Ban co chac la can phai thay doi khong (y/n)";
    fflush(stdin); ch=getche();
    }
    if(ch=='y'||ch=='Y')
    {
    them_sv(a);
    a[k]=a[n];
    n--;
    cout<< " Sinh vien thu %d da duoc thay doi",k;
    }
    getch();
    }
    void sx_ten(sinh_vien a[])
    {
    int i,j,h,t;
    sinh_vien tg;
    for(i=1;i<n;i++)
    for(j=i+1;j<=n;j++)
    {
    t=strcmpi(a[i].ht.ten,a[j].ht.ten);
    h=strcmpi(a[i].ht.ho,a[j].ht.ho);
    if(t>0||(t==0&&h>0))
    {
    tg=a[i]; a[i]=a[j]; a[j]=tg;
    }
    }
    }
    void sx_ns(sinh_vien a[])
    {
    int i,j;
    sinh_vien tg;
    for(i=1;i<n;i++)
    for(j=i+1;j<=n;j++)
    if(a[i].ns.nam>a[j].ns.nam||(a[i].ns.nam==a[j].ns.nam&&(a[i].ns.thang>
    a[j].ns.thang||(a[i].ns.thang==a[j].ns.thang&&a[i].ns.ngay>a[j].ns.ngay))))
    {
    tg=a[i]; a[i]=a[j]; a[j]=tg;
    }
    }
    void sx_tb(sinh_vien a[])
    {
    int i,j;
    sinh_vien tg;
    for(i=1;i<n;i++)
    for(j=i+1;j<=n;j++)
    if(a[i].diem_tb>a[j].diem_tb)
    {
    tg=a[i]; a[i]=a[j]; a[j]=tg;
    }
    }
    void sx_ma_so(sinh_vien a[])
    {
    int i,j,k;
    sinh_vien tg;
    for(i=1;i<n;i++)
    for(j=i+1;j<=n;j++)
    if(strcmp(a[i].ma_so,a[j].ma_so)>0)
    {
    tg=a[i]; a[i]=a[j]; a[j]=tg;
    }
    }
    void tim_kiem(sinh_vien a[])
    {
    clrscr();
    int i,k;
    char s1[27],s2[27];
    printf("\n Ho va ten sinh vien can tim:");
    fflush(stdin); gets(s1);
    for(i=1;i<=n;i++)
    {
    strcpy(s2,a[i].ht.ho);
    k=strlen(s2);
    s2[k]=' ';
    s2[k+1]='\0';
    strcat(s2,a[i].ht.ten);
    k=strcmpi(s1,s2);
    if(k==0) break;
    }
    k=i;
    if(k>n)
    cout<< " Khong tim thay";
    else
    {
    cout<< " Do la sinh vien thu %d",k;
    cout<< " Ho va ten: %s %s",a[k].ht.ho,a[k].ht.ten;
    cout<< " Sinh ngay %d %d %d",a[k].ns.ngay,a[k].ns.thang,a[k].ns.nam;
    cout<< " Que quan: Tinh %s - Huyen %s - Xa %s",a[k].qq.tinh,a[k].qq.huyen,a[k].qq.xa;
    if(a[k].diem_tb>=0)
    cout<< " Diem trung binh: %0.2f",a[k].diem_tb;
    cout<< " Ma so sinh vien: %s",a[k].ma_so;
    }
    getch();
    }
    void tim_que(sinh_vien a[])
    {
    int i,k;
    char s1[27],s2[27];
    cout<< " Tinh cua nhung sinh vien can tim:";
    fflush(stdin); gets(s1);
    for(i=1;i<=n;i++)
    {
    strcpy(s2,a[i].qq.tinh);
    k=strlen(s2);
    s2[k]=' ';
    s2[k+1]='\0';
    strcat(s2,a[i].qq.tinh);
    k=strcmpi(s1,s2);
    if(k==0) break;
    }
    k=i;
    if(k>n)
    cout<< " Khong tim thay";
    else
    {
    cout<< " Do la sinh vien thu %d",k;
    cout<< " Ho va ten: %s %s",a[k].ht.ho,a[k].ht.ten;
    }
    getch();

    }
    void que(sinh_vien a[])
    {
    char s1[30];
    char s2[30];
    cout<< " Nhap que cua nhung sinh vien can tim : ";
    fflush(stdin);gets(s1);
    for(int i=1;i<=n;i++)
    {
    strcpy(s2,a[i].qq.tinh);
    }

    }
    void ghi(sinh_vien a[],int n)
    {
    int i;
    char ch;
    cout<< " Ban co muon luu lai cac thay doi khong (y/n):";
    fflush(stdin); ch=getch();
    if(ch=='y'||ch=='Y')
    {
    f=fopen("sv.dat","ab");
    for(i=1;i<=n;i++)
    fwrite(&a[i],sizeof(sinh_vien),1,f);
    cout<< " Hum ..";
    delay(500);
    fclose(f);
    }
    }
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  2. #2
    No Avatar
    tiachopxanh291 Khách

    cout của bác nhầm rùi mà. bác chuyển cout và cin thành kiểu printf và scanf là ok đó

  3. #3
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    cout<< " Ho va ten: %s %s",a[k].ht.ho,a[k].ht.ten;
    Đại khái 1 dòng là thấy có chuyện rồi ! Trong C++ bác phải viết lại như thế này :
    cout<< " Ho va Ten:" <<a[k].ht.ho<<a[k].ht.ten ;

    Còn không thì như tia chớp xanh nói cậu phải chuyển lại thành printf và scanf .

  4. #4
    No Avatar
    tonykevin master793 Khách

    thanks evẻybody . Nhưng mình vẫn chưa chạy dc mục 5,6,7,8 - phần thuật toán sắp xếp ấy. Bạn nào có thể chỉ cho mình đó là lỗi ji` ko ? thanks

  5. #5
    No Avatar
    tonykevin master793 Khách

    hình như mình bị sai ở chỗ là: trong C++ phải khai báo hàm public và private ????? còn bài trên đây mới chỉ là thay cin và cout thui . mọi người cho ý kiến nhé. thanks

  6. #6
    Ngày gia nhập
    03 2007
    Bài viết
    6

    Mặc định Chương trình quản lý sinh viên

    Bạn phải thêm dấu{}giữa 2 vòng for thì mục 5 6 7 8 sẽ chạy đúng.

  7. #7
    Ngày gia nhập
    03 2007
    Bài viết
    15

    Trích dẫn Nguyên bản được gửi bởi tonykevin master793 Xem bài viết

    void sx_ns(sinh_vien a[])
    {

    Code:
    void sx_tb(sinh_vien a[]) 
    { 
    int i,j; 
    sinh_vien tg; 
    for(i=1;i<n;i++) 
    for(j=i+1;j<=n;j++) 
    if(a[i].diem_tb>a[j].diem_tb) 
    { 
    tg=a[i]; a[i]=a[j]; a[j]=tg; 
    } 
    }
    Bạn sửa dòng tg=a[i]; a[i]=a[j]; a[j]=tg; thành :
    Code:
    tg = a[i].diem_tb;
    a[i].diem_tb = a[j].diem_tb;
    a[j].diem_tb = tg;
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.
    ...Every step that I take is another mistake to you...I'm sorry mom..

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