c语言版的单词小助手
说明:
此次是在被人的基础上做的改动,加了些功能,本人并非原作者
改动如下:
1.将程序为了具有良好的程序风格(文档注释,函数注释,语句注释)。
2.对部分功能做了完善完善,针对做错的单词重复记忆,列出了 错词表这一栏,用户可以查看错词表重复记忆,也可以删除错词表中的某些单词。
3.完善了查询单词的功能,支持英文查询以及中文查询。中文查询时,具有相同中文含义的英文单词,也会一一列举出来。
4.增加排行榜功能。
源代码
//*********英语单词小助手***********
//作者:仅做出修改
//版本:v1.2
//创建时间:2018年九月
//************************************
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_CHAR 20 // 最大字符
#define MAX_NUM 200 // 单词的最大个数
struct word//单词的结构体
{
char en[MAX_CHAR]; // 英文形式
char ch[MAX_CHAR]; //中文形式
} s[MAX_NUM]; //单词数组
struct sco//用户的结构体
{
char id[MAX_CHAR]; // 英文形式
int sc; //中文形式
} user[MAX_CHAR]; //单词数组
struct word w[MAX_NUM];//定义一个错误单词的结构体数组
int m;
int num; //单词个数
int wnum;//记录错误单词的总数
int unum;//记录用户的个数
int select=1;//select 为是否退出系统的标记
int d=0,c=0;//声明全局变量,记录用户答对以及回答错误的单词个数,以便计算分数
//帮助查询函数
void help()
{
printf("\n本系统主要实现英语单词学习的功能。用户可对词典文件中的单词进行预览,增删改查。");
printf("\n同时还可进行中英、英中测试。本系统还提供了测试成绩的显示功能。");
printf("\n主要功能:。");
printf("\n1.词库维护:可以增加、删除、修改和中文查询单词,英文查询单词。");
printf("\n2.单词预览:将文件中的单词在屏幕上显示中英文词义。");
printf("\n3.单词背诵(中英):随机显示中文,用户需输入英文,正确得十分,错误扣十分。");
printf("\n4.单词背诵(英中):随机显示英文,用户需输入中文,正确可得十分,错误扣十分。");
printf("\n5.成绩查询:显示中英、英中单词检测的成绩与总成绩。");
printf("\n6.写错的词存入错词本,用户可以查看加强记忆,也可以将答错的词可以从单词本删除");
printf("\n同时还可进行中英、英中测试。本系统还提供了测试成绩的显示功能。");
printf("\n");
printf("\n");
}
//从单词库文件中读取单词的信息
void readfile()
{
FILE *fp;//声明文件
int i=0;//定义变量
fp=fopen("data.txt","r");//打开存放单词的·文件库
if(!fp)//如果文件不存在
{
printf("\n打开文件data.txt失败!");
}
while(fscanf(fp,"%s %s ",s[i].en,s[i].ch)==2)//读取下一个单词
{
i++;//计数器+1
}
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)//如果文件不存在
{
printf("\n打开文件data.txt失败!");
}
for(i=0;i<num;i++)//循环遍历写入单词
{
fprintf(fp,"\n%s %s ",s[i].en,s[i].ch);//fprintf(可以从一个文件流中格式化写入数据)
}
printf("\n");
fclose(fp);//关闭文件
}
//向用户文件写入用户信息的函数
void writeuserfile(){
FILE *fp;//声明文件
fp=fopen("rank.txt","user");//打开文件
if(fp)//如果文件不存在
{
fprintf(fp,"\n%s %d ",user[unum].id,user[unum].sc);//fprintf(可以从一个文件流中格式化写入数据)
printf("\n");
fclose(fp);//关闭文件
}
printf("\n打开文件data.txt失败!");
}
//读取错题库文件
void readwrongfile()
{
FILE *fp;//声明文件
int i=0;//定义变量
fp=fopen("wrongword.txt","r");//打开存放记错单词文件库
if(!fp)//如果文件不存在
{
printf("\n打开文件wrongword.txtt失败!");
}
while(fscanf(fp,"%s %s ",w[i].en,w[i].ch)==2)//读取下一个单词
{
i++;//计数器+1
}
wnum=i;//记录单词总数
if(0==i)
// printf("\n文件为空,棒棒哒,你还没有记错单词哟");
printf("\n");
else
printf("\n");
fclose(fp);//关闭文件
}
/