#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之间选择");
}
}