重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本文题目要求:C语言实现单词小帮手,供大家参考,具体内容如下
为新化等地区用户提供了全套网页设计制作服务,及新化网站建设行业解决方案。主营业务为成都做网站、成都网站设计、新化网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
一、题目分析
实验内容:单词小助手,要求完成以下任务:
1.改写程序为良好程序风格(文档注释,函数注释,语句注释)。
2.将单词测试中的功能完善,可针对做错的单词重复记忆。
3.查询单词的功能添加英文词查询,中文查询的功能完善(考虑如何显示同样中文意义,不同的英文单词)
提高要求:
可将程序中的不足(如数据验证,排名功能)等根据自己的能力与理解完成。
实验目的:
1、明确结构化程序设计的基本结构。
2、通过对问题的分析,设计合理的结构化程序解决问题;
二、关键算法构造
三、程序实现
#include#include #include #define MAX_CHAR 20 // 最大字符 #define MAX_NUM 200 // 单词的最大个数 struct word //单词的结构体 { char en[MAX_CHAR]; // 英文形式 char ch[MAX_CHAR]; //中文形式 } s[MAX_NUM],r[MAX_NUM]; //单词数组 int num; //单词个数 int num1; //背错单词个数 int select=1;//select 为是否退出系统的标记 int d=0,c=0;//定义两个数,用于计算成绩 //帮助 void help() { printf("\n本系统主要实现英语单词学习的功能。用户可对词典文件中的单词进行预览,增删改查。"); printf("\n同时还可进行中英、英中测试。本系统还提供了测试成绩的显示功能。\n"); } //从文件中读取单词的信息 void readfile() { FILE *fp; int i=0; fp=fopen("data.txt","r"); if(!fp)//如果没有data.txt这个文件,则返回打开失败 { printf("\n打开文件data.txt失败!"); } while(fscanf(fp,"%s %s ",s[i].en,s[i].ch)==2)//当数据增加一时,数据的总数i增加一 { i++; } num=i; if(0==i) printf("\n文件为空,请选择词典维护增加词条!"); else printf("\n"); fclose(fp);//关闭文件 } //向文件中写入单词信息 void writefile() { FILE *fp; int i=0; fp=fopen("data.txt","w"); if(!fp)//如果没有data。txt这个文件,则返回打开失败 { printf("\n打开文件data.txt失败!"); } for(i=0;i i;j--)//运用冒泡排序 if(strcmp(s[j-1].en,s[j].en)>0)//strcmp(s1,s2) 判断两个字符串s1和s2是否相同,相同返回true ,不同返回false { strcpy(temp,s[j-1].en); strcpy(s[j-1].en,s[j].en); strcpy(s[j].en,temp); strcpy(temp,s[j-1].ch); strcpy(s[j-1].ch,s[j].ch); strcpy(s[j].ch,temp); } } } //添加单词信息 void add() { int i=num,j,flag=1; while(flag) { flag=0; printf("\n请输入单词的英文形式:"); scanf("%s",s[i].en); for(j=0;j\n (直至输入0~8的数字为止)\n"); for(m=0;;m++) { n=0; input=scanf("%d",&item); while((t=getchar())!='\n'&& t!=EOF) n++; if(input==1 && n==0) break; } printf("\n"); readfile(); switch(item) { case 0: maintain();break; case 1: show();break; case 2: zytest();break; case 3: yztest(); break; case 4: list();break; case 5: help();break; case 6: wrongwordfile();zyRetest();break; case 7: wrongwordfile();yzRetest();break; case 8: select =0;break; default: printf("请在0-8之间选择\n"); } } int main() { while(select) { menu(); system("pause");//暂停 system ("cls");//在每次执行完一次命令后刷新屏幕 } system("pause"); return 0; }
四、调试、测试及运行结果
1)单词预览
2)添加单词
3)单词修改
4)单词查询
5)单词背诵英中和中英
6)成绩查询
7)错词复习中英和英中
五、经验总结
1、复习了C语言对于文件的相关操作,如文件的输入与输出;并且复习了结构体的相关操作,这次建立了一个结构体的数组对单词进行增删改查;
2、这是我第一次建立一个完整的项目,这次的作业使我对完整的程序有了新的认识;
3、学习到了strcmp函数的相关操作;
Ps:strcmp是比较两个字符串的大小,两个字符串相同时返回0,第一个字符串大于第二个字符串时返回一个正值,否则返回负值.比较两个字符串的算法是:逐个比较两个串中对应的字符,字符大小按照ASCII码值确定,从左向右比较,如果遇到不同字符,所遇第一对不同字符的大小关系就确定了两个字符串的大小关系,如果未遇到不同字符而某个字符串首先结束,那么这个字符串是较小的,否则两个字符串相等。
4、学习到了有关system函数的 使用,这次作业中使用了system(“cls”)来对每次使用编号后清空屏幕,对需要显示的数据使用system(“pause”)使其能够显示;
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。