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

Đề tài: [Source ] Đề C tốt nghiệp đại học công nghiệp hà nội [hệ cao đẳng] + giải

  1. #1
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Mặc định [Source ] Đề C tốt nghiệp đại học công nghiệp hà nội [hệ cao đẳng] + giải

    Tình hình là hôm trước hướng dẫn 1 đứa e làm cái đề tốt nghiệp :

    Xây dựng chương trình thi trắc nghiệm trên C,
    yêu cầu có 3 chức năng chính :
    nhập câu hỏi vào đề thi
    làm bài thi
    hiện kết quả

    yêu cầu detail : (trích dẫn)
    + đề phát sinh ngẫu nhiên từ ngân hàng đề
    + các đáp án đều ở dạng thứ tự thời gian
    ví dụ :
    Các triều đại ở việt nam :
    a. bảo đại
    b. hùng vương
    c. lê lợi
    d. nhà lý
    nhập đáp án abcd là đúng //ví dụ thế

    hoặc xắp xếp theo thứ tự tăng dần của dữ liệu
    a. int
    b. long
    c. char
    d. double
    nhập đáp án đúng là cabd

    + tra cứu điểm thi theo tên học sinh


    Yêu cầu mở rộng :
    + tạo ra file bode.dat và thisinh.dat
    + có chức năng kiểm tra lỗi, sữa lỗi nếu xuất hiến ở file bode.dat (nó thể làm được chức năng này sẽ được ưu tiên về điểm)
    + Xử lý tốt việc nhập dữ liệu (nó thể làm được chức năng này sẽ được ưu tiên về điểm)
    + có khả năng tra cứu điểm theo tên

    code :
    PHP Code:
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <ctype.h>
    #include <time.h>

    //Cau truc du lieu
    typedef struct
    {
        
    int ngay,thang,nam;
    }
    date;
    typedef struct
    {
        
    char ma[8];
        
    char hoten[30];
        
    int ketqua;
        
    date ns;
    }
    thisinh;    
    typedef struct
    {
        
    char cauhoi[200];
        
    char a[80];
        
    char b[80];
        
    char c[80];
        
    char d[80];
        
    char dapan[5];
    }
    node;

    int dem// dem so luong cau hoi
    int sts// so luong thi sinh
    FILE *f;

    //**************************************cac phuong thuc nhap******************************\
    //Nhap vao 1 xau co do dai toi da la max
    void nhapchuoi(char *xau,int max)
    {
        
    char ch='a',i=0;
        while(
    ch!=13||i==0)
        {
            
    ch=getch();
            if (
    ch==8&&iprintf("\b \b"),i--;
            if (!(
    isalnum(ch)||strchr(" ?.\":`~!@#$\%^&*()",ch))||i>=max-1) continue;
            
    xau[i++]=ch;
            
    printf("%c",ch);
        }
        
    xau[i]=NULL;
        
    printf("\n");
    }

    //nhap vao 1 chuoi dap an : chi co the nhap a,b,c,d va ko nhap trung
    void nhapdapan(char *xau)
    {    
        
    char ch='a',i=0,temp[5]="abcd";
        while(!(
    ch==13&&i==4))
        {
            
    ch=tolower(getch());
            if (
    ch==8&&i
            {
                
    printf("\b \b");
                
    temp[xau[i-1]-'a']=xau[i-1];
                
    i--;
            }
            if (
    ch==' '||!strchr(temp,ch)||i>=4) continue;
            
    temp[ch-'a']=' ';
            
    xau[i++]=ch;
            
    printf("%c",ch);
        }
        
    xau[i]=NULL;
        
    printf("\n");
    }

    //kiem tra x co thuoc mang a kick thuoc n hay ko, 1 neu co, 0 neu sai
    int kiemtra(int *a,int n,int x)
    {
        for(
    int i=0;i<n;i++)
            if (
    a[i]==x) return 1;
        return 
    0;
    }

    //Xoa ki tu trong xau
    void xoakitu(char *xau,int vitri,int soluong)
    {
        if (
    vitri+soluong-1>strlen(xau)) xau[0]=NULL;
        else
        {
            while (
    xau[vitri+soluong]!=NULL)
            {
                
    xau[vitri]=xau[vitri+soluong];
                
    vitri++;
            }
            
    xau[vitri]=NULL;
        }
    }

    //Nhap ho ten
    void nhapht(char *xau,int max)
    {
        
    char ch='a',i=0;
        while(
    ch!=13||i==0)
        {
            
    ch=getch();
            if (
    ch==8&&iprintf("\b \b"),i--;
            if ((!(
    isalpha(ch)||ch==' '))||i>=max-1||(i&&ch==' '&&xau[i-1]==' ')||(i==0&&ch==' ')) continue;
            if (
    i==0||xau[i-1]==' 'ch=toupper(ch);
            
    xau[i++]=ch;
            
    printf("%c",ch);
        }
        if (
    xau[i-1]==' 'xau[i-1]=NULL;
            else 
    xau[i]=NULL;
        
    printf("\n");
    }

    //nhap ngay
    int nhapngay()
    {
        
    char ch='a',i=0,xau[3]="";
        while(
    ch!=13||i==0)
        {
            
    ch=getch();
            if (
    ch==8&&iprintf("\b \b"),i--;
            if ((!
    isdigit(ch))||i>1||(i==1&&xau[0]>'3')||(xau[0]=='3'&&i==1&&ch>'1')) continue;
            
    xau[i++]=ch;
            
    printf("%c",ch);
        }
        
    xau[i]=NULL;
        
    printf("\n");
        return 
    atoi(xau);
    }

    //nhap thang
    int nhapthang()
    {
        
    char ch='a',i=0,xau[3]="";
        while(
    ch!=13||i==0)
        {
            
    ch=getch();
            if (
    ch==8&&iprintf("\b \b"),i--;
            if ((!
    isdigit(ch))||i>1||(i==1&&(xau[0]>'1'||(xau[0]=='1'&&ch>'2')))||(i==0&&ch=='0')) continue;
            
    xau[i++]=ch;
            
    printf("%c",ch);
        }
        
    xau[i]=NULL;
        
    printf("\n");
        return 
    atoi(xau);
    }

    //nhap nam
    int nhapnam()
    {
        
    char ch='a',xau[5]="",i=0;
        while(
    ch!=0xD)
        {
            
    ch=getch();
            if (
    ch==8&&i
                switch(
    i)
                    {
                    case 
    2printf("\b\b  \b\b");i-=2;break;
                    case 
    3: if (xau[0]=='2')printf("\b\b\b   \b\b\b"),i-=3;
                            else 
    printf("\b \b"),i--;
                                break;
                    default:
    printf("\b \b");i--;
                    }
            if ((!
    isdigit(ch))||i>3) continue;
            if (
    i==0) switch(ch)
                    {
                        case 
    '1'xau[i++]='1';xau[i++]='9';printf("19");break;
                        case 
    '2'xau[i++]='2';xau[i++]='0';xau[i++]='0';printf("200");break;
                        default:continue;
                    }
            else
            {
                
    xau[i++]=ch;
                
    printf("%c",ch);
            }
        }
        
    xau[i]=0;printf("\n");
        return 
    atoi(xau);
    }

    //nhap so nguyen duong, sn la so chu so toi da co the nhap
    int nhapnguyen(int sn
    {
        
    char ch='a',i=0,xau[3];
        while(
    ch!=13||i==0)
        {
            
    ch=getch();
            if (
    ch==8&&iprintf("\b \b"),i--;
            if ((!
    isdigit(ch))||i>sn-1||(i==0&&ch=='0')) continue;
            
    xau[i++]=ch;
            
    printf("%c",ch);
        }
        
    xau[i]=NULL;
        
    printf("\n");
        return 
    atoi(xau);
    }






    //*****************************Cac phuong thuc tren cau truc du lieu***********************\
    //Nhap date
    date nhapdate()
    {
        
    date temp;
        
    printf("\nNhap vao ngay sinh   : ");
        
    temp.ngay=nhapngay();
        
    printf("Nhap vao thang sinh  : ");
        
    temp.thang=nhapthang();
        
    printf("Nhap vao nam sinh    : ");
        
    temp.nam=nhapnam();
        return 
    temp;
    }

    //Nhap thi sinh
    thisinh nhapts()
    {
        
    thisinh temp;
        
    char p[6];
        
    //phat sinh ma thi sinh
        
    temp.ma[0]=NULL;
        
    strcat(temp.ma,"TS");
        
    itoa(sts+1,p,10);
        
    strcat(temp.ma,p);
        
    printf(" - MSTS: %s",temp.ma);
        
    //nhap thong tin
        
    printf(" - Ho ten: ");
        
    nhapht(temp.hoten,30);
        
    printf(" - Ngay thang nam sinh : ");
        
    temp.ns=nhapdate();

        return 
    temp;
    }

    //Hien thi thong tin cau hoi trong node x , ko hien thi dap an
    void hiennode(node x)
    {
        
    printf("\%s",x.cauhoi);
        
    printf("\n    a, %s",x.a);
        
    printf("\n    b, %s",x.b);
        
    printf("\n    c, %s",x.c);
        
    printf("\n    d, %s\n",x.d);
    }






    //*****************************************Menu********************************************\
    //cac khoi tao ban dau
    void start()
    {
        
    f=fopen("bode.dat","rb");
        if (
    f==NULLf=fopen("bode.dat","ab");
        
    fseek(f,0,SEEK_END);
        
    dem=ftell(f)/sizeof(node);
        
    fclose(f);
        
    f=fopen("danhsach.dat","rb");
        if (
    f==NULL)
            
    f=fopen("danhsach.dat","ab");
        
    fseek(f,0,SEEK_END);
        
    sts=ftell(f)/sizeof(thisinh);
        
    fclose(f);
    }

    //menu nhap
    void nhap()
    {
        
    node de;
        
    char yn='y';
        
    f=fopen("bode.dat","ab");
        if (
    f==NULL)
        {
            
    printf("\n Loi mo file!");
            exit(
    1);
        }
        
    system("cls");
        
    printf("---BAT DAU NHAP CAU HOI---\n");
        do
        {    
            
    printf("\nNhap noi dung cau hoi thi thu %d :\n",dem+1);
            
    printf("Nhap cau hoi: ");nhapchuoi(de.cauhoi,200);
            
    printf("Nhap noi dung a: ");nhapchuoi(de.a,80);
            
    printf("Nhap noi dung b: ");nhapchuoi(de.b,80);
            
    printf("Nhap noi dung c: ");nhapchuoi(de.c,80);
            
    printf("Nhap noi dung d: ");nhapchuoi(de.d,80);
            
    printf("Nhap dap an: ");nhapdapan(de.dapan);
            
    fwrite(&de,sizeof(de),1,f);
            
    dem++;
            
    printf("Ban co muon nhap tiep khong? (Y/N)");
            
    yn=toupper(getch());
            while (
    yn!='Y'&&yn!='N'yn=toupper(getch());
        }
        while(
    toupper(yn)=='Y');
        
    fclose(f);
    }

    //thi
    int thi()
    {
        
    node x[10];
        
    thisinh ts;
        
    int m,n=dem,i,diem;
        
    int a[10],temp;
        
    char tdapan[5];        

        
    //Kiem tra xem co du 10 cau hoi trong bo de khong
        //Neu du thi cho nhap thi sinh
        
    f=fopen("bode.dat","rb");

        if (
    n<10
        {
            
    printf("\nChua du cau hoi de thi. An nut bat ki de tiep tuc");
            
    getch();
            return 
    0;        
        }
        
    //Lay 10 so ngau nhien de lay cau hoi ra tu bo de.
        
    srand(time(NULL));
        for(
    i=0;i<10;i++)
        {
            
    temp=rand()%n+1;   
            while (
    kiemtra(a,i,temp)) temp=rand()%n+1
            
    a[i]=temp;
        }

        
    //Luu cau hoi lay duoc vao mang x[i]
        
    for(i=0;i<10;i++)
        {
            
    fseek(f,sizeof(node)*(a[i]-1),SEEK_SET);
            
    fread(&x[i],sizeof(node),1,f);
        }
        
    fclose(f);
        
    diem=0;
        
    ts=nhapts();
        
    //Thuc hien bai thi    
        
    for(i=0;i<10;i++)
        {
            
    system("cls");
            
    printf("Cau hoi thu %d :",i+1);
            
    hiennode(x[i]);
            
    printf("\nDap an cua ban la: ");nhapdapan(tdapan);
            if (
    strcmp(x[i].dapan,tdapan)==0)
                
    diem++;        
        }
        
    //Luu diem thi sinh.
        
    ts.ketqua=diem;
        
    f=fopen("danhsach.dat","ab");
        
    fwrite(&ts,sizeof(ts),1,f);
        
    fclose(f);    
        
    sts++;
    }

    //hien ket qua thi cua cac thi sinh
    void hienketqua()
    {
        
    thisinh temp;
        
    int n=sts,i;
        if (
    n==0printf("Chua co thi sinh nao thi.");
        else
        {
            
    f=fopen("danhsach.dat","rb");
            
    printf("\nStt %-10s %-30s %-10s %10s","Ma TS","Ho va ten","Ngay sinh","Diem");
            for(
    i=0;i<sts;i++)
            {
                
    fread(&temp,sizeof(thisinh),1,f);
                
    //viet thong tin : ho ten , ngay sinh , diem
                
    printf("\n%-3d %-10s %-30s %d/%d/%d %14d",i+1,temp.ma,temp.hoten,temp.ns.ngay,temp.ns.thang,temp.ns.nam,temp.ketqua);
            }
            
    fclose(f);
        }
    }

    //tim kiem
    void timkiem()
    {
        
    thisinh temp;
        
    char maten[30];
        
    int n=sts,i;
        
    printf("Nhap vao ma hoac ten cua thi sinh can tim : ");
        
    nhapchuoi(maten,30);
        
    f=fopen("danhsach.dat","rb");
        for(
    i=0;i<sts;i++)
        {
            
    fread(&temp,sizeof(thisinh),1,f);
            if (
    strstr(temp.ma,maten)||strstr(temp.hoten,maten))
            {
                
    //viet thong tin : ho ten , ngay sinh , diem
            
    }
        }
        
    fclose(f);
    }

    void suacauhoi()
    {
        
    int n;
        
    printf("Nhap vao ma cau hoi muon sua : ");
        
    n=nhapnguyen(3); // co the cho so lon hon
        
    if (n==0printf("Khong co ma so 0");
        else if (
    n>demprintf("Ma so nay lon qua, chua co");
        else
        {
            
    node x;
            
    char yn;
            
    f=fopen("bode.dat","rb");
            
    fseek(f,sizeof(node)*(n-1),SEEK_SET);
            
    fread(&x,sizeof(node),1,f);
            
    fclose(f);
            
    hiennode(x);
            
    printf("Ban co muon sua cau hoi thi nay ko ? (Y/N)");
            
    yn=toupper(getch());
            while (
    yn!='Y'&&yn!='N'yn=toupper(getch());
            if (
    yn=='Y')
            {
                
    FILE *p;
                
    node temp;
                
    printf("\nNhap lai noi dung cau hoi thi thu %d :\n",n);
                
    printf("Nhap cau hoi: ");nhapchuoi(x.cauhoi,200);
                
    printf("Nhap noi dung a: ");nhapchuoi(x.a,80);
                
    printf("Nhap noi dung b: ");nhapchuoi(x.b,80);
                
    printf("Nhap noi dung c: ");nhapchuoi(x.c,80);
                
    printf("Nhap noi dung d: ");nhapchuoi(x.d,80);
                
    printf("Nhap dap an: ");nhapdapan(x.dapan);
                        
                
    unlink("obode.dat");
                
    rename("bode.dat","obode.dat");
                
    f=fopen("obode.dat","rb");
                
    p=fopen("bode.dat","wb");

                for(
    int i=0;i<dem;i++)
                {
                    if (
    i==n-1fwrite(&x,sizeof(node),1,p);
                    else
                    {
                        
    fread(&temp,sizeof(node),1,f);
                        
    fwrite(&temp,sizeof(node),1,p);
                    }
                }
                
    fclose(f);
                
    fclose(p);
            }
        }
    }




    //**************************************Test************************************************\
    //Test file bode.dat
    //hien thi noi dung chua trong file bode.dat
    void showall()
    {
        
    //*********************test bode.dat****************************
        
    node temp;
        
    int i;

        
    //test so luong cau hoi
        
    f=fopen("bode.dat","rb");
        
    printf("So luong cau hoi trong file bode.dat : %d",dem);

        
    //test noi dung tung cau hoi
        
    fseek(f,0,SEEK_SET);
        for(
    i=0;i<dem;i++)
            {
                
    printf("cau hoi thu %d :\n",i+1);
                
    fread(&temp,sizeof(node),1,f);
                
    hiennode(temp);
            }
        
    fclose(f);
    }

    //kiem tra 1 chuoi co bi loi ko : neu chuoi ko co NULL hoac co cac ki tuc khac cac ki tu cho phep nhap thi la bi loi
    int testchuoi(char *x,int max)
    {
        
    int i;
        for(
    i=0;i<max&&x[i]!=NULL;i++)
            if (!(
    isalnum(x[i])||strchr(" ?.\":`~!@#$\%^&*()",x[i]))) return 0;
        return 
    i<max;
    }

    //kiem tra 1 node co bi loi~ hay ko. tra ve 1 neu ok, 0 neu loi
    int testnode(node x)
    {
        
    //******kiem tra chuoi dap an*****
        
    char temp[5],i,j;
        
    //copy dap an vao temp
        
    for(i=0;i<4;i++)
            
    temp[i]=x.dapan[i];
        
    temp[i]=NULL;
        for(
    i=0;i<3;i++)    //xap xep lai temp
            
    for(j=i+1;j<4;j++)
                if (
    temp[i]>temp[j]) temp[i]^=temp[j]^=temp[i]^=temp[j];
        if (
    strcmp(temp,"abcd")) return 0;                                   //neu sau khi xap xep temp ko phai la abcd thi tra ve 0
        
    return testchuoi(x.cauhoi,200)&&testchuoi(x.a,80)&&testchuoi(x.b,80)&&testchuoi(x.c,80)&&testchuoi(x.d,80);
    }

    //kiem tra cac cau hoi co bi loi hay ko
    void testall()
    {
        
    node temp;
        
    int i,k=1;
        

        
    //test noi dung tung cau hoi
        
    f=fopen("bode.dat","rb");
        if (
    dem<10
        {
            
    printf("Loi thu %d : Chua du 10 cau hoi \n",k++);
        }
        for(
    i=0;i<dem;i++)
        {
            
    fread(&temp,sizeof(node),1,f);
            if (!
    testnode(temp)) printf("\nLoi thu %d : Cau hoi thu %d bi loi",k++,i+1);
        }
    }



    int main()
    {
        
    int so;
            
    start();
                for (;;)
                {
                    
    system("cls");
                    
    printf("PHAN MEM THI TRAC NGHIEM\n");
                    
    printf("\nBan muon lam gi? ");
                    
    printf("\n    1.Nhap de.");
                    
    printf("\n    2.Thi.");
                    
    printf("\n    3.Hien ket qua.");
                    
    printf("\n    4.Thoat.\n");
                    
    so=nhapnguyen(1);
                    
    system("cls");
                    switch(
    so)
                    {
                    case 
    1nhap();break;
                    case 
    2thi() ;break;
                    case 
    3hienketqua();break;
                    case 
    4: return 1;
                    case 
    6testall();break; // kiem tra cac cau hoi co bi loi hay ko (co ki tu la, dap an ko dung)
                    
    case 7timkiem();break;
                    case 
    8suacauhoi();break;
                    case 
    9showall();break;
                    }
                    
    printf("\nAn phim bat ki de tro ve menu chinh");
                    
    getch();
                }
                return 
    0;
        

    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  2. #2
    Ngày gia nhập
    09 2010
    Nơi ở
    Phan Thiết
    Bài viết
    4

    Mới bắt đầu học C++ mà thấy thế này choáng wa
    Phận Làm Trai Gõ Phím Bình Thiên Hạ
    Chí Anh Hùng Click Chuột Định Giang Sơn

    P/s:Khi tôi chết hãy chôn tôi ở nơi nào có wifi

  3. #3
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Trích dẫn Nguyên bản được gửi bởi bach_sau2009 Xem bài viết
    Mới bắt đầu học C++ mà thấy thế này choáng wa
    có thể tham khảo thêm chương trình C trên console (TC3.0 hoăc BC 3.01) tại đây
    PHP Code:
    http://forums.congdongcviet.com/attachment.php?attachmentid=2390&d=1270132134 
    khá đơn giản với 3500 dòng code
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  4. #4
    Ngày gia nhập
    02 2008
    Bài viết
    94

    không sợ code dài chỉ sợ đọc không hiểu .
    không sợ đề dài chỉ sợ không có thuật toán gải.
    không sợ thuật toán phức tạp, chỉ sợ không đủ "trình"
    Đừng Buồn Khi Ai Đó Nói Bạn Ngu Bởi Vì Ngu = Never Give Up

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

  1. học làm kem - học pha chế chuyên nghiệp đẳng cấp
    Gửi bởi daokimhoa trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 02-08-2013, 02:14 PM
  2. Chỉ cần tồt nghiệp lớp 12, btvh được tuyển thẳng vào học cao đẳng chính quy
    Gửi bởi nguyenrong trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 18-08-2012, 02:40 PM
  3. Trả lời: 0
    Bài viết cuối: 05-11-2011, 09:34 PM
  4. Bài tập C++ Bài tập ôn thi tốt nghiệp Cao đẳng Tin học&Hệ Hoàn chỉnh Đại học(sưu tầm)
    Gửi bởi minhngocit trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 11-08-2011, 02:19 AM
  5. Du học anh văn-cao đẳng Thụy Sỹ-New zealand kinh nghiệm du học? Đt :08.38484879
    Gửi bởi hongngoc01 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 04-08-2011, 09:55 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