栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言实现单词小帮手

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言实现单词小帮手

本文题目要求: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;ii;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;jn      (直至输入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”)使其能够显示;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/62250.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号