还在为背单词烦恼吗,c/c++帮你搞定单词难题(单词背诵器)

2 篇文章 0 订阅

\\提示:此文件应先在D盘创建一个单词本输入要记的单词:方便简单快捷

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
void menu();
void beidanci();
void words();
void lookcw(); 
void search();
void movecc(); 
void beidancicw();
int k=1;
int main()
{int w=0;
    while(k!=0)
{    
    menu();
}
    system("pause");
    return 0;    
}
void words()
{    int i=0;
    typedef struct stu
    {    int j;
        char yw[20];
        char zw[20];
    }dcb;
    dcb dcb_[1000];    
    FILE *fp;
    fp=fopen("D:\\仿真单词本\\dancibenqb.txt","r");
    if(!fp)
    {
        printf("打开失败!");
        exit(1);
    }
    fscanf(fp,"%d%s%s",&dcb_[i].j,dcb_[i].yw,dcb_[i].zw);
    while(!feof(fp))
    {
        i++;
        fscanf(fp,"%d%s%s",&dcb_[i].j,dcb_[i].yw,dcb_[i].zw);
    }
    fclose(fp);
    dcb_[i+1].j=0;
    i=0;
    printf("单词本的信息如下\n");
    while((dcb_[i].j)!=0)
    {
        printf("%d %s %s\n",dcb_[i].j,dcb_[i].yw,dcb_[i].zw);
        i++;
    }
    system("pause");    
}
void beidanci()
{
        typedef struct stu
    {    int j;
        char yw[20];
        char zw[20];
    }dcb;
    dcb dcb_[1000];
    typedef struct ct
    {
        int c;
        char Cyw[20];
        char Czw[20];
    }ctb;
    ctb ctb_[1000];
        FILE *fp;
        int i=0,count=0,q=0;
        int w=1,count1;
        char zwsr[20];
    fp=fopen("D:\\仿真单词本\\dancibenqb.txt","r");    
    fscanf(fp,"%d%s%s",&dcb_[i].j,dcb_[i].yw,dcb_[i].zw);
    while(!feof(fp))
    {
        i++;
        fscanf(fp,"%d%s%s",&dcb_[i].j,dcb_[i].yw,dcb_[i].zw);
    }
    fclose(fp);
    fp=fopen("D:\\仿真单词本\\dancibencw.txt","r");    
    fscanf(fp,"%d%s%s",&ctb_[q].c,ctb_[q].Cyw,ctb_[q].Czw);
    while(!feof(fp))
    {
        q++;
        fscanf(fp,"%d%s%s",&ctb_[q].c,ctb_[q].Cyw,ctb_[q].Czw);
    }
    count1=q;
    fclose(fp);
    dcb_[i+1].j=0;
    int m=0;
    printf("单词本的信息如下\n");
    while((dcb_[m].j)!=0)
    {
        printf("%d %s %s\n",dcb_[m].j,dcb_[m].yw,dcb_[m].zw);
        m++;
    }
    count=m;
    int n;
    int sjs[50]={0};//随机数 
    srand(time(NULL));
    printf("请选择背单词的模式:\n\n1:   出现英语背诵翻译  \n2:   出现汉字默写英语\n");
    int num,p=0;
    scanf("%d",&num);
    if(num==1)
    {
    printf("请输入背单词的数量"); 
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        sjs[i]=rand()%count+1;
    }
    int c=0;
    int zw=0;
    for(int i1=0;i1<n;i1++)
    {
        printf("%s\n",dcb_[sjs[i1]].zw);
        scanf("%s",zwsr);
        if(strcmp(zwsr,dcb_[sjs[i1]].yw)!=0)
        {  
            printf("背诵错误,已计入错题本!\n");        
            fp=fopen("D:\\仿真单词本\\dancibencw.txt","a+");
            if(!fp)
            {
                printf("打开失败");
                exit(1); 
            }
 
    else 
        {
        fprintf(fp,"%d %s %s\n",count1+1,dcb_[sjs[i1]].yw,dcb_[sjs[i1]].zw);
        count1++;
    }
    fclose(fp);
            
    }
        else
        {
            printf("回答正确"); 
        }
        
    }
    }
    if(num==2)
    {
    printf("请输入背单词的数量"); 
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        sjs[i]=rand()%count+1;
    }
    for(int i1=0;i1<n;i1++)
    {
        printf("%s\n",dcb_[sjs[i1]].yw);
        scanf("%s",zwsr);
        if(strcmp(zwsr,dcb_[sjs[i1]].zw)!=0)
        {
            printf("背诵错误,已计入错题本!\n");
            ctb_[w].c=dcb_[sjs[i1]].j;
            fp=fopen("D:\\仿真单词本\\dancibencw.txt","a+");
            if(!fp)
            {
                printf("打开失败");
                exit(1); 
            }
            else 
                {
                fprintf(fp,"%d %s %s\n",count1+1,dcb_[sjs[i1]].yw,dcb_[sjs[i1]].zw);
                count1++; 
             }
                
        }
        else
        {
            printf("回答正确"); 
        }
        
    }    
    }
    
}
void lookcw()
{
        typedef struct ct
    {
        int c;
        char Cyw[20];
        char Czw[20];
    }ctb;
    ctb ctb_[1000];
    int i=0;
    FILE*fp;
    fp=fopen("D:\\仿真单词本\\dancibencw.txt","r");
    if(!fp)
    {
        printf("打开失败!!!"); 
        exit(1); 
    };
    fscanf(fp,"%d%s%s",&ctb_[i].c,ctb_[i].Cyw,ctb_[i].Czw);
    while(!feof(fp))
    {
        i++;
        fscanf(fp,"%d %s %s",&ctb_[i].c,ctb_[i].Cyw,ctb_[i].Czw);
    }
    fclose(fp);
    ctb_[i].c=0;
    i=0;
    printf("错题如下\n");
    while(ctb_[i].c!=0)
    {
        printf("%d %s %s\n",ctb_[i].c,ctb_[i].Cyw,ctb_[i].Czw);
        i++;
    }
     
    
}
void search()
{   int i=0;
    typedef struct stu
    {    int j;
        char yw[20];
        char zw[20];
    }dcb;
    dcb dcb_[1000];
    FILE *fp;
    fp=fopen("D:\\仿真单词本\\dancibenqb.txt","r");
    if(!fp)
    {
        printf("打开失败!");
        exit(1);
    };
    fscanf(fp,"%d%s%s",&dcb_[i].j,dcb_[i].yw,dcb_[i].zw);
    while(!feof(fp))
    {
        i++;
        fscanf(fp,"%d%s%s",&dcb_[i].j,dcb_[i].yw,dcb_[i].zw);
    }
    int count=i;
    int se;
    int m=0; 
    char srdc[20];
    printf("请选择:\n1 查英文\n2 查汉语\n") ;
    scanf("%d",&se);
    if(se==1)
    {
    printf("请输入要查询的中文:"); 
    scanf("%s",srdc);
    while(strcmp(dcb_[m].zw,srdc)!=0&&m<count)
    m++;
    if(m<count)
    printf("\n 该单词中文意思为:%s",dcb_[m].yw);
    else
    printf("抱歉,未找到该单词");
    }
    if(se==2)
    {
    printf("请输入要查询的英文:");
    scanf("%s",srdc);
    while(strcmp(dcb_[m].yw,srdc)!=0&&m<count)
    m++;
    if(m<count)
    printf("\n 该单词意思为:%s",dcb_[m].zw);
    else
    printf("抱歉,未找到该单词");
    }
    
}
void movecc()
{    
    char del[100];
    typedef struct ct
    {
        int c;
        char Cyw[20];
        char Czw[20];
    }ctb;
    ctb ctb_[1000];
    int i=0,num;
    int se=0;
    FILE*fp,*fp1;
    fp=fopen("D:\\仿真单词本\\dancibencw.txt","r+");
    fp1=fopen("D:\\仿真单词本\\dancibencw1.txt","w+");
    if(!fp)
    {
        printf("打开失败!!!"); 
        exit(1); 
    };
    if(!fp1)
    {
        printf("打开失败!!!"); 
        exit(1); 
    };
    fscanf(fp,"%d%s%s",&ctb_[i].c,ctb_[i].Cyw,ctb_[i].Czw);
    while(!feof(fp))
    {
        i++;
        fscanf(fp,"%d%s%s",&ctb_[i].c,ctb_[i].Cyw,ctb_[i].Czw);
    }
    fclose(fp);
    int count=i;
    printf("请输入要删除的单词");
    scanf("%s",del);
    for(i=0;i<count+1;i++)
    {
        if(!strcmp(del,ctb_[i].Czw))
        {
            printf("删除成功");
            se=i;
            num=1; 
            break;
        }
        if(!strcmp(del,ctb_[i].Cyw))
        {
        printf("删除成功");
        se=i;
        num=1;
        break;
        }    
        if(num==1)
        { 
        printf("删除失败");
        return ;
        } 
    }
    ctb_[count].c=0    ;
    strcpy(ctb_[count+1].Czw,"###");
    strcpy(ctb_[count+1].Cyw,"###");
    for(i=se;i<count;i++)
    {
        ctb_[i]=ctb_[i+1];
    }
    int m=0; 
    printf("输出当前错词表\n"); 
    while(ctb_[m].c!=0)
    {
        fprintf(fp1,"%d %s %s\n",m+1,ctb_[m].Cyw,ctb_[m].Czw);
        printf("%d %s %s\n",m+1,ctb_[m].Cyw,ctb_[m].Czw);
        m++;
    };
    if(remove("D:\\仿真单词本\\dancibencw.txt")!=0)
    printf("删除失败!!!"); 
    fclose(fp1);
    rename("D:\\仿真单词本\\dancibencw1.txt","D:\\仿真单词本\\dancibencw.txt");
     
    
    
    
}
void beidancicw()
{
    typedef struct ct
    {
        int c;
        char Cyw[20];
        char Czw[20];
    }ctb;
    ctb ctb_[1000];
    FILE *fp;
    int sjs[50]={0};
    char sr[20];
    int q=0,n; 
    fp=fopen("D:\\仿真单词本\\dancibencw.txt","r");    
    fscanf(fp,"%d%s%s",&ctb_[q].c,ctb_[q].Cyw,ctb_[q].Czw);
    while(!feof(fp))
    {
        q++;
        fscanf(fp,"%d%s%s",&ctb_[q].c,ctb_[q].Cyw,ctb_[q].Czw);
    }
    int count1=q;
    fclose(fp);
    printf("请输入背单词的数量"); 
    scanf("%d",&n);
    srand(time(NULL));
    for(int i=0;i<n;i++)
    {
        sjs[i]=rand()%count1+1;
    }
    
        for(int i1=0;i1<n;i1++)
    {
        printf("%s\n",ctb_[sjs[i1]].Czw);
        scanf("%s",sr);
        if(strcmp(sr,ctb_[sjs[i1]].Cyw)!=0)
        {  
            printf("背诵错误\n");    
    }        
    
        else
        {
            printf("回答正确\n"); 
        }
    }
        
}
void menu()
{
        printf(" \n\n                    ");
    printf("                         仿真单词本                \n");
    printf("\t*************************************************************************************************\n");
    printf("  请输入您要选择的内容:\n");
    printf("                                       0:退出程序     \n ");
    printf("                                      1:查找模式     \n ");
    printf("                                      2:全文背诵模式     \n ");
    printf("                                      3:错词背诵模式     \n ");
    printf("                                      4:查看全部单词     \n ");
    printf("                                      5:查看全部错词         \n ");
    printf("                                      6: 移除一个错词             \n");
    printf("\n");
    
    printf("\t**********************************************************************************************\n");
    int num;
    scanf("%d",&num);
    switch(num)
    {
        case 0:k=0;break;
        case 1:search();break;
        case 2:beidanci();break; 
        case 3:beidancicw();break;
        case 4:words();break;
        case 5:lookcw();break;
        case 6:movecc();break;
        default:
        printf("请在0--8之间选择");
        
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值