Từ 1 tới 8 trên tổng số 8 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 viết bằng C ( đã chạy tất cả các chức năng). Nhưng em chưa biết nhiều về C++.Nếu em muốn chuyển sang C++ thì phải thay đổi những j`????? Và sự khác nhau của chúng ???? Thanks mọi người :-??

    Code:
    #include<stdio.h>
    #include<dos.h>
    #include<conio.h>
    #include<string.h>
    #include<ctype.h>
    #include<fstream.h>
    #include<stdlib.h>
    #include<iostream.h>
    struct Date
    {
    int ngay;
    int thang;
    int nam;
    };
    
    struct quequan
    {
    char tinh[20];
    char huyen[20];
    char xa[20];
    };
    struct hoten
    {
    char ho[20];
    char tendem[20];
    char ten[20];
    };
    
    struct sinh_vien
    {
    hoten ht;
    Date ns;
    quequan qq;
    float diem_tb;
    char ma_so[5];
    char lop[20];
    };
    
    struct
    {
    char tenlop[30];
    sinh_vien thanhvien;
    int nam,nu;
    int nienkhoa,tong;
    char danhhieu[20];
    }lop;
    
    /*-----------------------------------------------*/
    
    FILE *f;
    int n;
    void khoi_tao(sinh_vien a[]);
    void them_sv(sinh_vien a[]);
    void in_danh_sach(sinh_vien a[],int n);
    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_kiem(sinh_vien a[]);
    void tim_que(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();
    printf("\n Chuong trinh quan ly sinh vien ");
    printf("\n *-------------------------------------------*");
    printf("\n\n\n Nhan vao 1 trong nhung phim sau de chon chuc nang : ");
    printf("\n\n 1: Them mot sinh vien vao danh sach");
    printf("\n 2: In danh sach sinh vien");
    printf("\n 3: Loai mot sinh vien khoi danh sach");
    printf("\n 4: Thay doi thong tin mot sinh vien");
    printf("\n 5: Sap xep sinh vien theo ten");
    printf("\n 6: Sap xep sinh vien theo ngay sinh");
    printf("\n 7: Sap xep sinh vien theo diem trung binh");
    printf("\n 8: Sap xep sinh vien theo ma so");
    printf("\n 9: Tim kiem sinh vien theo Ten");
    printf("\n A: Tim kiem sinh vien theo Que");
    printf("\n 0: Thoat");
    fflush(stdin);
    ch=getch();
    switch(ch)
    {
    case '1': them_sv(a); break;
    case '2': in_danh_sach(a,n); 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;
    
    if(f==NULL)
    f=fopen("file_ghi","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);
    printf("ÚÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄ ÂÄÄÄÄÄÄÄ¿");
    y++;
    gotoxy(1,y); printf("³Stt");
    gotoxy(6,y); printf("³ Ho va Ten");
    gotoxy(34,y); printf("³ Ngay sinh");
    gotoxy(46,y); printf("³ Que quan");
    gotoxy(62,y); printf("³Diem tb");
    gotoxy(72,y); printf("³ Ma so ³");
    printf("ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ ÅÄÄÄÄÄÄÄ´");
    y++;
    for(i=1;i<=n;i++)
    {
    // chuan(a[i].ho);
    // chuan(a[i].ten);
    y++;
    gotoxy(1,y); printf("³ %d",i);
    gotoxy(6,y); printf("³ %s %s",a[i].ht.ho,a[i].ht.ten);
    gotoxy(34,y); printf("³%2d:%2d:%d",a[i].ns.ngay,a[i].ns.thang,a[i].ns.nam);
    gotoxy(46,y); printf("³ %s",a[i].qq.tinh);
    gotoxy(62,y); printf("³");
    if(a[i].diem_tb>=0)
    {
    gotoxy(63,y); printf("%0.2f",a[i].diem_tb);
    }
    gotoxy(72,y); printf("³ %s ³",a[i].ma_so);
    if(y>23)
    {
    if(i==n)
    printf("ÀÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄ ÁÄÄÄÄÄÄÙ");
    getch();
    clrscr();
    y=0;
    }
    }
    if(y!=0)
    {
    printf("ÀÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄ ÁÄÄÄÄÄÄÄÙ");
    getch();
    }
    }
    /*-------------------------------------------------*/
    void them_sv(sinh_vien a[])
    {
    clrscr();
    char s[30];
    float tb;
    int i,j,d,c;
    printf("\n Ho va Ten:"); fflush(stdin); gets(s);
    if(s!='\')
    {
    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]='\';
    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]='\';
    printf("\n Ngay thang nam sinh:"); scanf("%d%d%d",&i,&j,&d);
    a[n].ns.ngay=i;
    a[n].ns.thang=j;
    a[n].ns.nam=d;
    printf("\n Que quan:");
    printf("Tinh : ");fflush(stdin); gets(s);strcpy(a[n].qq.tinh,s);
    printf("Huyen : ");fflush(stdin); gets(s);strcpy(a[n].qq.huyen,s);
    printf("Xa : ");fflush(stdin); gets(s);strcpy(a[n].qq.xa,s);
    printf("\n Diem trung binh:"); scanf("%f",&tb);
    a[n].diem_tb=tb;
    printf("\n Ma so sinh vien:"); fflush(stdin); gets(a[n].ma_so);
    }
    
    }
    
    /*-------------------------------------------*/
    
    void loai_sv(sinh_vien a[])
    {
    clrscr();
    int k,i;
    char ch='n';
    printf("\n So thu tu cua sinh vien can xoa:");
    scanf("%d",&k);
    if(k<1||k>n)
    printf("\n Khong tim thay sinh vien thu %d trong danh sach",k);
    else
    {
    printf("\n Sinh vien thu %d la: %s %s",k,a[k].ht.ho,a[k].ht.ten);
    printf("\n Sinh ngay %d %d %d",a[k].ns.ngay,a[k].ns.thang,a[k].ns.nam);
    printf("\n Que quan:");
    printf("\n Tinh: %s",a[k].qq.tinh);
    printf("\n\t Huyen : %s",a[k].qq.huyen);
    printf("\n\t Xa: %s",a[k].qq.xa);
    if(a[k].diem_tb>=0)
    printf("\n Diem trung binh: %0.2f",a[k].diem_tb);
    printf("\n Ma so sinh vien: %s",a[k].ma_so);
    printf("\n 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--;
    printf("\n Da xoa sinh vien thu %d khoi danh sach",k);
    }
    getch();
    }
    
    /*----------------------------------------------*/
    
    void sua_chua(sinh_vien a[])
    {
    clrscr();
    int k,i;
    char ch='n';
    printf("\n So thu tu cua sinh vien can thay doi:");
    scanf("%d",&k);
    if(k<1||k>n)
    printf("\n Khong tim thay sinh vien thu %d trong danh sach",k);
    else
    {
    printf("\n Sinh vien thu %d la: %s %s",k,a[k].ht.ho,a[k].ht.ten);
    printf("\n Sinh ngay %d %d %d",a[k].ns.ngay,a[k].ns.thang,a[k].ns.nam);
    printf("\n Que quan: ");
    printf("\n Tinh: %s",a[k].qq.tinh);
    printf("\n Huyen: %s",a[k].qq.huyen);
    printf("\n Xa: %s",a[k].qq.xa);
    if(a[k].diem_tb>=0)
    printf("\n Diem trung binh: %0.2f",a[k].diem_tb);
    printf("\n Ma so sinh vien: %s",a[k].ma_so);
    printf("\n 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--;
    printf("\n 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;
    }
    }
    in_danh_sach(a,n);
    getch();
    }
    
    /*----------------------------------------------*/
    
    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;
    }
    in_danh_sach(a,n);
    getch();
    }
    
    /*-----------------------------------------------*/
    
    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;
    }
    in_danh_sach(a,n);
    getch();
    }
    
    /*-------------------------------------------------*/
    
    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;
    }
    in_danh_sach(a,n);
    getch();
    }
    
    /*--------------------------------------------------*/
    
    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]='\';
    strcat(s2,a[i].ht.ten);
    k=strcmp(s1,s2);
    if(k==0) break;
    }
    k=i;
    if(k>n)
    printf("\n Khong tim thay sinh vien tren");
    else
    {
    printf("\n Do la sinh vien thu %d",k);
    printf("\n Ho va ten: %s %s",a[k].ht.ho,a[k].ht.ten);
    printf("\n Sinh ngay %d %d %d",a[k].ns.ngay,a[k].ns.thang,a[k].ns.nam);
    printf("\n 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)
    printf("\n Diem trung binh: %0.2f",a[k].diem_tb);
    printf("\n Ma so sinh vien: %s",a[k].ma_so);
    }
    
    getch();
    }
    
    /*-----------------------------------------------*/
    
    void tim_que(sinh_vien a[])
    {
    int i,k;
    char s1[27],s2[27];
    printf("\n 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]='\';
    strcpy(s2,a[i].qq.tinh);
    k=strcmp(s1,s2);
    if(k==0) break;
    }
    k=i;
    if(k>n)
    printf("\n Khong tim thay");
    else
    {
    printf("\n Do la sinh vien thu %d",k);
    printf("\n Ho va ten: %s %s",a[k].ht.ho,a[k].ht.ten);
    printf("\n Sinh ngay %d %d %d",a[k].ns.ngay,a[k].ns.thang,a[k].ns.nam);
    printf("\n 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)
    printf("\n Diem trung binh: %0.2f",a[k].diem_tb);
    printf("\n Ma so sinh vien: %s",a[k].ma_so);
    }
    
    getch();
    
    }
    
    /*----------------------------------------------*/
    
    void que(sinh_vien a[])
    {
    char s1[30];
    char s2[30];
    printf("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;
    printf("\n\n\n Are you sure save this changes... ? (y/n):");
    fflush(stdin); ch=getch();
    if(ch=='y'||ch=='Y')
    {
    
    for(i=1;i<=n;i++)
    fwrite(&a[i],sizeof(sinh_vien),1,f);
    
    fclose(f);
    }
    }
    <Xài thẻ CODE plz>
    Đã được chỉnh sửa lần cuối bởi Xcross87 : 20-05-2007 lúc 02:57 PM. Lý do: <Xài thẻ CODE plz>

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

    Nhìn là muốn xỉu luôn ? mình nghĩ TKM nên học qua C++ đã , nếu học qua rồi thì tự khắc sẽ biết chuyển thế nào thôi ?
    Tóm lại như bác Nguyễn Tuân nói là Học OOP là làm được tất !

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

    tìm tài liệu C++ mà đọc. Cậu đưa một đống code như thế thì ai mà đọc nổi, eo kinh thế
    Việt Nam quang vinh muôn năm!!!!!!!!!!!!

  4. #4
    No Avatar
    tonykevin master793 Khách

    em mới đọc qua C++ thì biết là từ C-->>C++ ví dụ như: printf->cout<<; scanf->cin>>; và khai báo các lớp struct-->> class và private ??? (Cái này em chưa hiểu khi nào thì dùng class và private ???). Các anh có thể lấy struct bài trên viết bằng class và private làm ví dụ dc ko??? ( có giải thích thì càng tốt ạ )

  5. #5
    Ngày gia nhập
    05 2007
    Nơi ở
    HCMC
    Bài viết
    60

    Chắc bạn cũng biết C++ khác ANSI-C đâu phải ở cái chỗ count, class, hay private. Đó sự thay đổi tư duy lập trình từ hướng chức năng sang hướng đối tượng, tức là nhìn cái gì cũng ra đối tượng cả. Ví dụ, nhìn vô chương trình của bạn tôi thấy ngay nó có ít nhất 2 lớp: sinh viên và lớp học, thế thì định nghĩa:

    Code:
    //các kiểu struct như Date, quequan, hoten giữ lại
    
    class SinhVien
    {
    private: //các thuộc tính của sinh viên (lấy lại của bạn)
    hoten ht;
    Date ns;
    quequan qq;
    float diem_tb;
    char ma_so[5];
    char lop[20];
    
    public: //các phương thức của lớp sinh viên (ví dụ thôi)
    hoten LayHoTen();
    float LayDiem();
    void DiHoc();
    void DiChoi();
    void DiAnNhau();
    }
    
    class LopHoc
    {
    private:  //thuộc tính của lớp "Lớp học" (lấy lại của bạn, có sửa đổi)
    char tenlop[30];
    int nam,nu;
    int nienkhoa,tong;
    char danhhieu[20];
    SinhVien *sv;      //một danh sách các SV
    unsigned soluong;  //số lượng SV trong lớp
    
    public:    //các phương thức của lớp (ví dụ)
    void InDS();   //in danh sách SV
    unsigned TimSV(char *ten);   //tìm SV trong lớp theo tên
    ...
    }
    sau đó bạn viết nội dung cho các phương thức trên, ví dụ:
    void LopHoc::InDS()
    {
    ... đoạn code in ds SV...
    }

    Đó là 1 ví dụ nhỏ về chuyển đổi từ ANSI-C sang C++. Bạn thử xem.

    <Xài thẻ CODE plz>
    Đã được chỉnh sửa lần cuối bởi Xcross87 : 20-05-2007 lúc 02:58 PM. Lý do: <Xài thẻ CODE plz>

  6. #6
    No Avatar
    tonykevin master793 Khách

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

    Bài này khi em chạy bằng TC++ thì ko có lỗi j`. Nhưng khi chạy bằng VC++ thì báo có 4 lỗi là : textmode ; c80 ; clrscr ; gotoxy với cùng 1 lỗi là : undeclared identifier ???? Mọi người có thể nói cho em đây là lỗi j` trong VC++ ???? Thanks mọi người. :-??

  7. #7
    No Avatar
    tonykevin master793 Khách

    thanks anh sonhn. ngoài ra khi chuyển sang class và private hay public có phải thay đổi các thuật toán trong chương trình ko ??? hay chỉ thay đổi mỗi struct ???

  8. #8
    Ngày gia nhập
    05 2007
    Nơi ở
    HCMC
    Bài viết
    60

    Trích dẫn Nguyên bản được gửi bởi tonykevin master793 Xem bài viết
    thanks anh sonhn. ngoài ra khi chuyển sang class và private hay public có phải thay đổi các thuật toán trong chương trình ko ??? hay chỉ thay đổi mỗi struct ???
    Hoàn toàn không. Bạn chỉ thay đổi vị trí của các thuật toán ấy mà thôi.

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