commit b7ee18969e20bdc64291a15fdf9a0e7769b52a1e Author: 18408000304@stu.hut.edu.cn <18408000304@stu.hut.edu.cn> Date: Tue Jan 8 21:28:45 2019 +0800 first commit diff --git a/c(2).cpp b/c(2).cpp new file mode 100644 index 0000000..bdfb16f --- /dev/null +++ b/c(2).cpp @@ -0,0 +1,467 @@ +#include +#include +#include +#include +#include + +void add(); +void finds(); +void clean(); +void menus(); +void delet(); +void modify(); + +FILE *fp; + +int num=0; + +struct word +{ + char en[100]; + char ch[100]; + char ex[100]; + +}s[200]; + +//清屏 +void clean() +{ + int choice; + system("cls"); + printf("\n") ; + menus(); + scanf("%d",&choice); + printf("\n") ; + switch(choice) + { + case 1: + add();break; + case 2: + finds();break; + case 3: + clean();break; + case 4: + delet();break; + case 5: + modify();break; + case 0: + break; + + } +} + +//创建文件并打开文件 +void add() +{ + + int a,b,c,choice; + char next='1'; + char word[100]; + FILE *fp; + char en[20];//要存入的单词 + char ch[10]; + char ex[20]; + if((fp=fopen("f4.txt","a+"))==NULL)//创建并打开文件,和防止文件打开失败。 + { + printf("cann't open file"); + exit(0); + } + fseek(fp,0,SEEK_END);//定位到文件末尾 + while(next=='1') + { + printf("\n请输入单词的英文:"); + scanf("%s",en); + strcpy(s[num].en,en); + a=fprintf(fp,"%s\t",s[num].en); + + printf("\n请输入单词的释义:"); + scanf("%s",ch); + strcpy(s[num].ch,ch); + b=fprintf(fp,"%s\t",s[num].ch); + + printf("\n请输入单词的例句:"); + getchar() ; + gets(ex); + strcpy(s[num].ex,ex); + c=fprintf(fp,"%s\n",s[num].ex); + + if(a&&b&&c) + { + printf("\n输入成功\n"); + num++; + printf("%d",num); + } + else + printf("\n输入失败\n"); + printf("\nWould you like to enter more items(Yes--1/No--除1以外的任意键)\n"); + printf("\n返回主菜单按'#'号键") ; + fflush(stdin);//清空输入缓冲区 + next=getch(); + } + if(next=='#') + { + printf("\n") ; + menus(); + scanf("%d",&choice); + printf("\n") ; + switch(choice) + { + case 1: + add();break; + case 2: + finds();break; + case 3: + clean();break; + case 4: + delet();break; + case 5: + modify();break; + case 0: + break; + + } + } + + if(fclose(fp))//关闭文件并防止文件关闭失败。 + { + printf("cann't close file"); + exit(0); + } +} + +//查找单词 +void finds() +{ + rewind(fp); + int i,l,choice,flag=0; + char find='2'; + char n,y; + char w[100]; + if((fp=fopen("f4.txt","r"))==NULL)//打开文件,和防止文件打开失败。 + { + printf("cann't open file"); + exit(0); + } + + while(find=='2') + { + y='y'; + printf("\n请输入需要查找的单词:"); + while(y=='y') + { + char i=getch(); + if(i==27) + return ;/*27为ESC*/ + else + { + if(i==8&&flag>0)/*8为BS*/ + { + w[--flag]='\0'; + system("cls"); + printf("ESC:返回\n\nBackSpace:删除\n\n请输入要查的词:"); + puts(w); + printf("\n"); + } + else + { + w[flag]=i; + system("cls"); + printf("ESC:返回\n\nBackSpace:删除\n\n请输入要查的词:"); + puts(w); + printf("\n"); + flag++; + } + for(l=0;l<=10;l++) + { + fscanf(fp,"%s\t%s\t%s\n",s[l].en,s[l].ch,s[l].ex); + if(w[0]!='\0') + { + if(strncmp(s[l].en,w,flag)==0) + printf("单词:%s\n",s[l].en); + if(strcmp(s[l].en,w)==0) + { + printf("\n英文形式 中文形式 例句 "); + printf("\n %-12s%8s%12s\n",s[l].en,s[l].ch,s[l].ex); + printf("\nq是否继续查找单词 y---是的/n---不是的\n"); + y=getch(); + } + } + } + } + } + + printf("\nWould you like to enter more items(Yes--2/No--除2以外的任意键)\n"); + printf("\n返回主菜单按'#'号键") ; + fflush(stdin);//清空输入缓冲区 + find=getch(); + } + if(find=='#') + { + printf("\n") ; + menus(); + scanf("%d",&choice); + printf("\n") ; + switch(choice) + { + case 1: + add();break; + case 2: + finds();break; + case 3: + clean();break; + case 4: + delet();break; + case 5: + modify();break; + case 0: + break; + + } + } + if(fclose(fp))//关闭文 件并防止文件关闭失败。 + { + printf("cann't close file"); + exit(0); + } +} + +//删除单词信息 +void delet() +{ + int choice ; + FILE *fp; + FILE *fp1; + char set[20]; + int j,d,h,g,u=0; + int sum=0; + char delets='4'; + if((fp=fopen("f4.txt","a+"))==NULL)//创建并打开文件,和防止文件打开失败。 + { + printf("cann't open f4 file"); + exit(0); + } + if((fp1=fopen("linshi.txt","a+"))==NULL)//创建并打开文件,和防止文件打开失败。 + { + printf("cann't open linshi file"); + exit(0); + } + while(delets=='4') + { + printf("\n请输入要删除的单词:\n"); + scanf("%s",set); + for(j=0;j<=10;j++)//先找到该单词形式对应的序号 + { + fscanf(fp,"%s\t%s\t%s\n",s[j].en,s[j].ch,s[j].ex); + if(strcmp(s[j].en,set)!=0) + { + fprintf(fp1,"%s\t",s[j].en); + d=sizeof(s[j].en); + fprintf(fp1,"%s\t",s[j].ch); + h=sizeof(s[j].ch); + fprintf(fp1,"%s\n",s[j].ex); + g=sizeof(s[j].ex); + u=d+g+h; + sum=sum+u; + } + else + { + rewind(fp); + fseek(fp,sum,0); + } + } + if(fclose(fp))//关闭文件并防止文件关闭失败。 + { + printf("cann't close f4 file"); + exit(0); + } + if(fclose(fp1))//关闭文件并防止文件关闭失败。 + { + printf("cann't close linshi file"); + exit(0); + } + remove("f4.txt"); + rename("linshi.txt","f4.txt"); + printf("\n删除成功\n"); + printf("\n继续删除按‘4’,返回菜单按‘#’,退出按任意键\n\n"); + delets=getch(); + } + if(delets=='#') + { + printf("\n") ; + menus(); + scanf("%d",&choice); + printf("\n") ; + switch(choice) + { + case 1: + add();break; + case 2: + finds();break; + case 3: + clean();break; + case 4: + delet();break; + case 5: + modify();break; + case 0: + break; + + } + } +} + +//修改单词信息 +void modify() +{ + int choice; + int o,g=1,j=0;//chooses代表选项标识,g代表是否找到单词 + char choose='5'; + + char x[100]; //查找错误单词 + char y[100]; //正确英文形式 + char z[100]; //正确中文形式 + char l[100]; //正确例句 + + FILE *fp; + FILE *fw; + + while(choose=='5') + { + + if((fp=fopen("f4.txt","a+"))==NULL)//创建并打开文件,和防止文件打开失败。 + { + printf("cann't open f4 file"); + exit(0); + } + if((fw=fopen("linshi.txt","a+"))==NULL)//创建并打开文件,和防止文件打开失败。 + { + printf("cann't open linshi file"); + exit(0); + } + + printf("\n请输入你要修改的单词英文形式:"); + scanf("%s",x); + + fseek(fp,0,SEEK_SET); + + for(o=0;o<10;o++)//先找到该英文形式对应的序号 + { + fscanf(fp,"%s\t%s\t%s\t",s[o].en,s[o].ch,s[o].ex); + if(strcmp(s[o].en,x)!=0) + { + fprintf(fw,"%s\t%s\t%s\n",s[o].en,s[o].ch,s[o].ex); + + } + else + { + printf("\n请输入单词正确的英文形式:"); + scanf("%s",y); + + printf("\n请输入此单词正确的中文形式:"); + scanf("%s",z); + + printf("\n请输入此单词正确的例句:"); + getchar(); + gets(l); + + j=fprintf(fw,"%s\t%s\t%s\n",y,z,l); + } + + } + + if(fclose(fp))//关闭文件并防止文件关闭失败。 + { + printf("cann't close f4 file"); + exit(0); + } + if(fclose(fw))//关闭文件并防止文件关闭失败。 + { + printf("cann't close linshi file"); + exit(0); + } + if(j) + printf("\n修改成功!\n"); + else + { + printf("\n修改不成功!\n"); + printf("\n没有这个单词!\n"); + } + + remove("f4.txt"); + rename("linshi.txt","f4.txt"); + + printf("\n继续修改请选‘5 ’,返回菜单请选‘# ’:"); + choose=getch(); + + } + if(choose=='#') + { + printf("\n") ; + menus(); + scanf("%d",&choice); + printf("\n") ; + switch(choice) + { + case 1: + add();break; + case 2: + finds();break; + case 3: + clean();break; + case 4: + delet();break; + case 5: + modify();break; + case 0: + break; + + } + } +} + +//系统菜单 +void menus() +{ + printf("\n"); + printf(" *********************************************************\n"); + printf(" # #\n"); + printf(" # 请选择系统功能选项 #\n"); + printf(" # #\n"); + printf(" *********************************************************\n"); + printf(" # #\n"); + printf(" # 0.退出 1.输入单词 #\n"); + printf(" # #\n"); + printf(" # 2.查找单词 3.清屏 #\n"); + printf(" # #\n"); + printf(" # 4.删除单词 5.修改单词 #\n"); + printf(" # #\n"); + printf(" *********************************************************\n"); + printf("\n"); +} + +int main() +{ + int choice; + printf("\n") ; + menus(); + scanf("%d",&choice); + printf("\n") ; + switch(choice) + { + case 1: + add();break; + case 2: + finds();break; + case 3: + clean();break; + case 4: + delet();break; + case 5: + modify();break; + case 0: + break; + + } + return 0; +} + diff --git a/c(2).exe b/c(2).exe new file mode 100644 index 0000000..e0d2dbd Binary files /dev/null and b/c(2).exe differ