网络单词查询
功能
注册: 名称 密码 (重复输入显示已注册)
登陆: 输入密码错误显示错误,重新输入
登录
查询单词:输入要查询的单词 会显示出翻译意思 (输入错误, 重新输入)
查询历史:查询出时间以及查询的单词
退出
项目要求
TCP搭建 实现多对1 服务器端使用IO多路复用 数据库
client
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <unistd.h>
#define N 32
#define R 1 // 用户登记表
#define L 2 // 用户登陆
#define Q 3 // 用户查询
#define H 4 // 用户历史
// 定义通信双方的信息结构体
typedef struct msg
{
int type;
char name[N];
char data[256];
}MSG;
int do_register(int sockfd, MSG *msg); //注册
int do_login(int sockfd, MSG *msg); //登陆
int do_login_select(int sockfd, MSG *msg); //登陆选项
int do_query(int sockfd, MSG *msg); //查询
int do_history(int sockfd, MSG *msg); //历史
int main(int argc, const char *argv[])
{
int sockfd;
int n;
MSG msg;
if(argc < 3)
{
printf(" 服务器设置的ip 端口号\n");
return -1;
}
//创建TCP socket
if((sockfd = socket(AF_INET, SOCK_STREAM,0)) < 0)
{
perror("socket error!");
return -1;
}
printf("socket创建成功\n");
//设置对方指定端口及IP地址
struct sockaddr_in server;
memset(&server,0, sizeof(server));
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr(argv[1]);
server.sin_port = htons(atoi(argv[2])); //端口
//请求连接至指定IP端口的服务器
if(connect(sockfd, (struct sockaddr *)&server, sizeof(server)) < 0)
{
perror("connect error!");
return -1;
}
printf("连接成功\n");
//
int tcp_com(int sockfd)
{
char buf[256] = {'\0'};
while(1)
{
memset(buf,'\0',sizeof(buf));
fgets(buf,sizeof(buf),stdin);
send(sockfd,buf,strlen(buf),0); //tcp socket中提供的发送
if(strncmp(buf,"quit",4)==0)
{
return -1;
}
}
}
char buf[100]={};
while(1)
{
printf("**********************************\n");
printf("*1---------------------------注册*\n");
printf("*2---------------------------登陆*\n");
printf("*3---------------------------退出*\n");
printf("**********************************\n");
printf("***********请输入选项*************\n");
//如果输入的不是数字
if(1 != scanf("%d",&n))
{
printf("请输入数字选项\n");
getchar();
}
switch(n)
{
case 1://注册
do_register(sockfd, &msg);
break;
case 2://登陆
if(do_login(sockfd, &msg) == 1)
{
if(do_login_select(sockfd, &msg) == 1) //登陆选项
puts("用户注销");
else
puts("未知错误");
}
break;
case 3://退出
close(sockfd);
return 0;
break;
default:
printf("请输入:1 2 3\n");
}
}
return 0;
}
//注册
int do_register(int sockfd, MSG *msg)
{
msg->type = R;
printf("请输入注册名:\n");
scanf("%s", msg->name);
getchar();
printf("请输入密码:\n");
scanf("%s", msg->data);
getchar();
//参数1 客户端对应的套接字
//参数2 指向发送的信息所在的缓冲区
//参数3 缓冲区的大小
//参数4 0
if(send(sockfd, msg, sizeof(MSG),0) < 0)
{
printf("fail to send.\n");
return -1;
}
if(recv(sockfd, msg, sizeof(MSG), 0) < 0)
{
printf("fail to recv.\n");
return -1;
}
printf("%s\n", msg->data);
return 0;
}
//登陆
int do_login(int sockfd, MSG *msg)
{
msg->type = L;
printf("请输入登陆名:\n");
scanf("%s", msg->name);
getchar();
printf("请输入登录密码:\n");
scanf("%s", msg->data);
getchar();
if(send(sockfd, msg, sizeof(MSG),0) < 0)
{
printf("fail to send.\n");
return -1;
}
if(recv(sockfd, msg, sizeof(MSG), 0) < 0)
{
printf("fail to recv.\n");
return -1;
}
if(strncmp(msg->data, "OK", 3) == 0)
{
printf("登陆成功!\n");
return 1;
}
else
{
printf("%s\n", msg->data);
}
return 0;
}
//登录选项
int do_login_select(int sockfd, MSG *msg)
{
int n = -1;
while(1)
{
printf("************************************\n");
printf("*1--------------------------查询单词\n");
printf("*2--------------------------查询历史\n");
printf("*3------------------------------退出\n");
printf("************************************\n");
printf("*************请输入选项*************\n");
if(1 != scanf("%d",&n))
{
printf("请输入数字选项\n");
getchar();
}
switch(n)
{
case 1:
do_query(sockfd, msg);
break;
case 2:
do_history(sockfd, msg);
break;
case 3:
return 1;
break;
default :
printf("请输入:1 2 3\n");
}
}
return 0;
}
//查询
int do_query(int sockfd, MSG *msg)
{
msg->type = Q;
while(1)
{
printf("----------------------------------------\n");
printf("请输入要查询的单词(输入\"#\"返回上一级):\n");
printf("----------------------------------------\n");
puts("");
scanf("%s", msg->data);
getchar();
//客户端输入#号,返回到上一级菜单
if(strncmp(msg->data, "#", 1) == 0)
break;
//将要查询的单词发送给服务器
if(send(sockfd,msg, sizeof(MSG), 0) < 0)
{
printf("fail to send.\n");
return -1;
}
// 等待接受服务器传递回来的单词的信息
if(recv(sockfd, msg,sizeof(MSG), 0) < 0)
{
printf("fail to recv.\n");
return -1;
}
printf("%s\n", msg->data);
}
return 0;
}
//历史
int do_history(int sockfd, MSG *msg)
{
msg->type = H;
send(sockfd, msg, sizeof(MSG), 0);
// 接收服务器传递回来的历史记录信息
while(1)
{
recv(sockfd, msg, sizeof(MSG), 0);
if(msg->data[0] == '\0')
break;
//输出历史记录信息
printf("%s\n", msg->data);
}
return 0;
}
server
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <unistd.h>
#include <sqlite3.h>
#include <signal.h>
#include <time.h>
#include <sys/wait.h>
#include <errno.h>
#include <unistd.h>
#define N 32
#define R 1 // 登记表
#define L 2 // 登陆
#define Q 3 // 查询
#define H 4 // 历史
#define KU "my.db"
// 定义通信双方的信息结构体
typedef struct {
int type;
char name[N];
char data[256];
}MSG;
int do_client(int acceptfd, sqlite3 *db);//登陆
void do_register(int acceptfd, MSG *msg, sqlite3 *db);//注册
int do_login(int acceptfd, MSG *msg, sqlite3 *db);//登陆
int do_query(int acceptfd, MSG *msg, sqlite3 *db);//查询
int do_history(int acceptfd, MSG *msg, sqlite3 *db);//查询历史
int history_callback(void* arg,int f_num,char** f_value,char** f_name);//查询历史结果
int do_searchword(int acceptfd, MSG *msg, char word[]);//打开文件查词
int get_date(char *date);//获得日期
void sig_child_handle(int signo)
{
if(SIGCHLD == signo)
waitpid(-1, NULL, WNOHANG);
}
//主函数
int main(int argc, const char *argv[])
{
int sockfd;
int n;
MSG msg;
sqlite3 *db;
int acceptfd;
pid_t pid;
char *errmsg;
if(argc < 3)
{
printf(" 服务器ip 端口号\n");
return -1;
}
//打开数据库
if(sqlite3_open(KU, &db) != SQLITE_OK)
{
printf("%s\n", sqlite3_errmsg(db));
return -1;
}
else
printf("数据库打开成功\n");
if(sqlite3_exec(db,
"create table if not exists usr(name text primary key,pass text);",
//primary key主关键字只能有一个
NULL, NULL, &errmsg) != SQLITE_OK)
{
printf("%s\n", errmsg);
}
else
printf("用户数据库创建成功\n");
if(sqlite3_exec(db,
"create table if not exists record(name text ,data text,word text);",
NULL, NULL, &errmsg) != SQLITE_OK)
{
printf("%s\n", errmsg);
}
else
printf("历史记录启动成功\n");
//创建TCP socket
if((sockfd = socket(AF_INET, SOCK_STREAM,0)) < 0)
{
perror("socket error");
return -1;
}
//设置自己的指定端口及IP地址
struct sockaddr_in server;
memset(&server,'\0',sizeof(server));
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr(argv[1]);
server.sin_port = htons(atoi(argv[2]));
//绑定自己的IP地址和端口号
if(bind(sockfd, (struct sockaddr *)&server, sizeof(server)) < 0)
{
perror("bind error");
return -1;
}
// 套接字 监听是否有人连接
if(listen(sockfd, 5) < 0)
{
perror("listen");
return -1;
}
int tcp_com(int newfd)
{
char buf[256] = {'\0'};
while(1){
memset(buf,'\0',sizeof(buf));
recv(newfd,buf,sizeof(buf),0);//tcpsocke中提供专门接受的函数
if(strncmp(buf,"quit",4)==0)
{
return -1;
}
printf("buf=%s\n",buf);
}
return 0;
}
/*
//处理僵尸进程
signal(SIGCHLD,sig_child_handle);
while(1)
{
if((acceptfd = accept(sockfd, NULL, NULL)) < 0)
{
perror("accept error");
return -1;
}
if((pid = fork()) < 0)
{
perror("fork erroe");
return -1;
}
else if(pid == 0) // 子进程
{
//处理客户端具体的消息
close(sockfd);
do_client(acceptfd, db);
}
else // 父亲进程,用来接受客户端的请求的
{
close(acceptfd);
}
} */
return 0;
}
//登陆
int do_client(int acceptfd, sqlite3 *db)
{
MSG msg;
while(recv(acceptfd, &msg, sizeof(msg), 0) > 0)
{
printf("type:%d\n", msg.type);
switch(msg.type)
{
case R://注册
do_register(acceptfd, &msg, db);
break;
case L://登陆
do_login(acceptfd, &msg, db);
break;
case Q://查询
do_query(acceptfd, &msg, db);
break;
case H://历史
do_history(acceptfd, &msg, db);
break;
default:
printf("客户端输入错误\n");
}
}
printf("客户端退出\n");
close(acceptfd);
exit(0);
return 0;
}
//2注册
void do_register(int acceptfd, MSG *msg, sqlite3 *db)
{
char * errmsg;
char sql[500];
int ret =-1;
sprintf(sql, "insert into usr values('%s', %s);", msg->name, msg->data);
printf("注册信息已经保存至用户数据库\n");
printf("%s\n", sql);
puts("");
if(sqlite3_exec(db,sql, NULL, NULL, &errmsg) != SQLITE_OK)
{
printf("%s\n", errmsg);
strcpy(msg->data, "用户名已经存在!");
}
else
{
printf("客户端注册成功!\n");
strcpy(msg->data, "注册成功!");
}
do{
ret = send(acceptfd,msg,sizeof(MSG),0);
}while(ret <0 && EINTR==errno);
if(ret < 0)
{
perror("send error");
return ;
}
return ;
}
//3登陆
int do_login(int acceptfd, MSG *msg , sqlite3 *db)
{
char sql[500] = {};
char *errmsg;
int nrow;
int ncloumn;
char **resultp;
sprintf(sql, "select * from usr where name = '%s' and pass = '%s';", msg->name, msg->data);
printf("客户端登陆信息:\n");
printf("%s\n", sql);
puts("");
if(sqlite3_get_table(db, sql, &resultp, &nrow, &ncloumn, &errmsg)!= SQLITE_OK)
{
printf("%s\n", errmsg);
return -1;
}
else
printf("客户端登陆成功!\n");
// 查询成功,数据库中拥有此用户
if(nrow == 1)
{
strcpy(msg->data, "OK");//OK为进入查询单词的关键字
send(acceptfd, msg, sizeof(MSG), 0);
return 1;
}
if(nrow == 0) // 密码或者用户名错误
{
strcpy(msg->data,"用户名或密码错误!");
send(acceptfd, msg, sizeof(MSG), 0);
}
return 0;
}
//3查询
int do_query(int acceptfd, MSG *msg , sqlite3 *db)
{
char word[64];
int found = 0;
char date[128] = {};
char sql[500] = {};
char *errmsg;
//拿出msg结构体中,要查询的单词
strcpy(word, msg->data);
found = do_searchword(acceptfd, msg, word);
printf("查询一个单词完毕\n");
// 表示找到了单词,那么此时应该将 用户名,时间,单词,插入到历史记录表中去。
if(found == 1)
{
//需要获取系统时间
get_date(date);
sprintf(sql, "insert into record values('%s','%s','%s')",msg->name,date, word);
if(sqlite3_exec(db, sql, NULL, NULL, &errmsg) != SQLITE_OK)
{
printf("%s\n", errmsg);
return -1;
}
else
{
printf("历史查询已经记录\n");
}
}
else //表示没有找到
strcpy(msg->data, "没有找到这个单词!");
// 将查询的结果,发送给客户端
send(acceptfd, msg, sizeof(MSG), 0);
return 0;
}
//3.1打开文件查词
int do_searchword(int acceptfd, MSG *msg, char word[])
{
FILE * fp;
int len = 0;
char temp[512] = {};
int result;
char *p;
//打开存储单词的文件
if((fp = fopen("dict.txt", "r")) == NULL)
{
perror("fopen error");
strcpy(msg->data, "单词表未打开");
send(acceptfd, msg, sizeof(MSG), 0);
return -1;
}
//打印出,客户端要查询的单词
len = strlen(word);
printf("%s , len = %d\n", word, len);
//读文件,来查询单词
while(fgets(temp,512, fp) != NULL)
{
//比较文件读到的单词前len位
// abandon ab
result = strncmp(temp,word,len);
if(result < 0)
continue;
//如果客户端输入的与查询到的一样
//进一步判断避免出现查询到多个结果
//例如查询abandon,结果出现abandonment这样结果
if(result > 0 || ((result == 0) && (temp[len]!=' ')))
break;
//如果执行到这里说明
// 找到了要查询的单词
// 接下来就是要把单词后面的解释发送出去
p = temp + len; // abandon v.akdsf dafsjkj
//让指针移动到解释的开头位置
while(*p == ' ')
p++;
//将解释填入到消息结构体中
strcpy(msg->data, p);
printf("查询的单词:%s\n", msg->data);
// 注释拷贝完毕之后,应该关闭文件
fclose(fp);
return 1;
}
fclose(fp);
return 0;
}
//3.2获得日期
int get_date(char *date)
{
time_t t;
struct tm *tp;
time(&t);
//进行时间格式转换
tp = localtime(&t);
sprintf(date, "%d-%d-%d %d:%d:%d", tp->tm_year + 1900, tp->tm_mon+1, tp->tm_mday,
tp->tm_hour, tp->tm_min , tp->tm_sec);
printf("get date:%s\n", date);
return 0;
}
//4.查询历史
int do_history(int acceptfd, MSG *msg, sqlite3 *db)
{
char sql[128] = {};
char *errmsg;
sprintf(sql, "select * from record where name = '%s'", msg->name);
//查询数据库
if(sqlite3_exec(db, sql, history_callback,(void *)&acceptfd, &errmsg)!= SQLITE_OK)
printf("%s\n", errmsg);
else
printf("历史查询完成!\n");
// 所有的记录查询发送完毕之后,给客户端发出一个结束信息
msg->data[0] = '\0';
send(acceptfd, msg, sizeof(MSG), 0);
return 0;
}
//4.1历史结果--回调函数
// 得到查询结果,并且需要将历史记录发送给客户端
int history_callback(void* arg,int f_num,char** f_value,char** f_name)
{
// record , name , date , word
int acceptfd;
MSG msg;
acceptfd = *((int *)arg);
sprintf(msg.data, "%s , %s", f_value[1], f_value[2]);
send(acceptfd, &msg, sizeof(MSG), 0);
return 0;
}
dict.txt
abandonment n.放弃
abbreviation n.缩写
abeyance n.缓办,中止
abide v.遵守
ability n.能力
able adj.有能力的,能干的
abnormal adj.反常的,变态的
aboard adv.船(车)上
abolish v.废除,取消
abolition n.废除,取消
abortion n.流产
abortive adj.无效果的,失败的
about prep.关于,大约
above prep.在...之上,高于
above-mentioned adj.上述的
abreast adv.并肩,并列
abridge v.省略,摘要
abroad adv.国外,海外
abrogate v.取消,废除
abrogation n.取消,废除
abrupt adj.突然的,生硬的
abruptly adv.突然地
absence n.缺席,缺乏
absent adj.缺席的,不存在
absent-minded adj.心不在焉的
absolute adj.完全的,绝对的
absolutely adv.绝对,完全
absorb v.吸收,专心于
absorption n.吸收,专注
abstract adj.抽象的,难懂的
abstraction n.抽象,提取
absurd adj.荒唐的
absurdity n.荒唐(事)
abundance n.丰富,大量
abundant adj.丰富的,充裕的
abuse v.滥用,谩骂
abasement n.滥用
academic adj.学院的,学术的
academy n.学院,研究院
accede v.同意
accelerate v.加速,加快
acceleration v.加速,促进
accent n.腔调 v.重读
accept v.接受,同意
acceptable adj.可接受的,合意的
acceptance n.接受,承兑
access n.接近,入口
accessible adj.可接近的
accessory n.附件,装饰品
accident n.事故,意外之事
accidental adj.意外的,偶然的
accidentally adv.偶尔,附带
accommodate v.提供便利,拆借
accommodation n.便利,通融
accompaniment n.伴侣,伴奏
accompany v.伴随,伴奏
accomplish v.完成,达到
accomplishment n.成就
accord v.符合,协调
accordance n.按照,与...一致
according adj.按照,据...说
accordingly adj.相应地,从而
account n.账目 v.说明
accountant n.会计(师)
accounting n.会计学
accrue v.产生,发生
accrued adj.增值的,应计的
accumulate v.积累,积蓄
accumulation n.积累
accumulative adj.积累的
accuracy n.准确(性)
accurate adj.准确的,精密的
accurately adj.准确地
accusation n.控告
accuse v.告发,指责
accustom v.使...习惯于
ache v.觉得疼 n.疼痛
aching adj.疼痛的
achieve v.完成,实现
achievement n.完成,成就
acid n.酸
acknowledge v.承认,鸣谢
acknowledgment n.承认,鸣谢,回执
acquaint n.使熟悉,相识
acquaintance n.熟悉人,相识
acquaintant adj.熟悉的
acquire v.求得,获得
acquisition n.获得
acre n.英亩
acrobat n.杂技演员
acrobatics n.杂技
across prep.横越 adv.横穿
act n.行为,法令 v.表演
action n.行为,行动
activate v.使活跃,开动
active adj.活跃的,积极的
actively adv.积极地,活跃地
activity n.活动
actor n.男演员
actress n.女演员
actual adj.现实的,实际的
actuality n.实际
actually adv.实际上,居然
acute adj.剧烈的,敏锐的
a.d. (缩)公元
ad n.(缩)广告
adapt v.使适应,改编
adaptation n.适应
add v.增添,加,补充
addition n.增加,附加物
additional adj.增加的,附加的
additive adj.附加的 n.添加剂
address n.地址 v.致词
adequate adj.足够的,恰当的
adequately adv.恰当地
adhere v.粘附,坚持
adhesive n.粘合剂
adjacent adj.邻近的
adjective n.形容词
adjoin v.毗连
adjust v.调整,修整
adjustable adj.可调整的
adjustment n.调整
administer v.管理
administration n.行政管理,管理机关
administrative adj.行政管理的
admirable adj.可钦佩的
admiration n.羡慕,钦佩
admire v.钦佩,赞美
admission n.准入,承认
admit v.承认,接纳
admittedly adv.明白地
adolescence n.青春期
adolescent adj.青春期的
adopt v.采用,采纳
adoption n.采用
adore v.崇拜,敬慕
adorn v.装饰,佩带
adornment n.装饰(品)
adult n.成年人 adj.成年的
advance n.,v.前进
advanced adj.先进的,发达的
advantage n.优点,优势
advantageous adj.有利的,有用的
adventure n.冒险,惊险活动
adventurous adj.冒险的
adverb n.副词
adverbial adj.副词的
adversary adj.敌手,对手
adverse v.逆的,相反的
adversity n.逆境,不幸
advertise v.登广告,推销
advertising adj.广告的
advertisement n.广告
advice n.忠告,意见
advisable adj.适当的,可行的
advise v.劝告,通知
adviser n.顾问
advocate v.拥护,提倡
aerial adj.天空的,航空的
aeroplane n.飞机
affair n.事件,事情
affect v.影响,改变
affection n.友爱,爱慕
affectionate adj.充满感情的
affiliate n.分号(公司)
affirm v.断言,肯定
affirmation n.确定,确认
affirmative adj.肯定的
afford v.买得起,经受得起
affordable adj.买得起的
afloat adj.航行中的
aforesaid adj.上述的
afraid adj.害怕的,恐怕
africa n.非洲
african adj.非洲的 n.非洲人
after prep.在...后
afternoon n.下午
afterward adv.后来
again adv.再,又
against prep.反对,对着
age n.年龄,时代
agency n.代理,代理处
agent n.代理人,试剂
aggravate v.加重,恶化
aggravation n.加重,恶化
aggregate v.,n.,adj.合计(的)
aggregation n.总计,集合
aggression n.侵略
aggressive adj.侵略的,进取的
aggressor n.侵略者
agitate v.鼓动
agitation n.鼓动,不安
ago adv....以前
agonize v.使痛苦
agony n.苦恼,痛苦
agree v.同意,一致认为
agreeable adj.惬意的,易相处的
agreeably adv.欣然,依照
agreed adj.商定的
agreement n.一致,协议
agricultural adj.农业的
agriculture n.农业
ahead adv.在...前
aid n.,v.援助,救护
aids n.(缩)艾滋病
ailment n.疾病
aim n.目的 v.旨在,指向
aimless adj.无目的的
air n.空气,气派
aircraft n.航空器
airline n.航线,航空公司
airliner n.定期航班
airmail n.航空邮件
airplane n.飞机
airport n.机场
airway n.航线
aisle n.过道,走廊
ajar adv.半开的
alarm n.惊慌,警报
alarming adj.警告的
alas int.唉,哎呀
album n.相册,地图册
alcohol n.酒精
alcoholic adj.含酒精的
alcoholism n.嗜酒者,酒鬼
ale n.淡啤酒
alert adj.警惕的,灵活的
algebra n.代数
alien adj.异国的,异样的
alienate v.疏远,转让,挪用
alienation n.异化
alignment n.对准,准线
alike adj.相象的
alive adj.活着的,有生命的
all adj.所有的 n.一切
allergic adj.过敏的,变态的
allergy n.反感,过敏
alliance n.联合,同盟
allied adj.同盟的
allocate v.分配
allocation n.分配
allot v.分配,配给
allotment n.分配,份额
allow v.允许,许可
allowance n.补助,津贴
alloy n.合金
ally n.同盟者 v.结盟
almost adv.几乎,差不多
alone adj.单独的,仅仅
along prep.沿着 adv.一起
alongside prep.在...旁边
aloud adv.大声地
alphabet n.字母表
also adv.也
alter v.改变,变动
alternate v.轮流,交替
alternation n.改变,变更
alternative n.,v.两者取一
although conj.虽然
altitude n.高度
altogether adv.全部地,总共
aluminum n.铝
always adv.总是,始终
a.m. (缩)上午
amateur adj.业余的
amaze v.使惊叹
amazement n.惊奇,诧异
ambassador n.大使
ambient adj.周围的,包围着的
ambiguity n.歧义性,意义不明处
ambiguous adj.模棱两可的
ambition n.抱负,野心
ambitious adj.雄心勃勃的
ambulance n.救护车
amend v.修改,更正
amendment n.修改(通知书)
amends n.赔偿
america n.美国,美洲
american adj.美国的 n.美国人
amiable adj.和蔼的,亲切的
amicable adj.友好的,和睦的
amid prep.在...之间
ammunition n.弹药
among prep.在...之中
amount n.数量,总数 v.合计
ampere n.【电】安培
ample adj.宽大的,充裕的
amplification n.放大
amplifier n.放大器,扩音机
amplify v.详述,放大
amuse v.逗乐,给娱乐
amusement n.娱乐,乐趣
analogue n.模拟,类似物
analogy n.类似,类推
analysis n.分析,分解
analytical adj.分析的,解析的
analyze v.分析,分解
ancestor n.祖先,祖宗
anchor n.锚 v.停泊
ancient adj.古老的,古代的
and conj.和,与,而
anecdote n.轶事,轶闻
angel n.天命,安琪儿
anger n.生气,愤怒
angle n.角,角度
angry adj.生气的,愤怒的
angular adj.角状的
animal n.动物
animate v.使有活力,激活
animation n.生气,生机
ankle n.踝,踝骨
annex n.附录,附件
anniversary n.周年纪念日
announce v.宣布,通报
announcement n.通知
announcer n.播音员
annoy v.烦扰,使生气
annoyance n.烦恼,麻烦事
annual adj.每年的,年度的
annually adv.每年,年年
another pron.,prep.另一个
answer n.答案 v.答复
ant n.蚂蚁
antagonism n.对立,敌对
antagonist n.对手,敌手
antarctic adj.南极的
antibiotic adj.抗菌的
antecedent n.触角,天线
anticipate v.期望,预料
anticipation n.期望,预料
antique adj.古老的 n.古玩
antonym n.反义词
antonymous adj.反义的
anxiety n.焦虑,担心
anxious adj.焦急的,切盼的
anxiously adv.焦急地,急切地
any adj.任何,一些
anybody pron.任何人
anyhow adv.无论如何
anyone pron.无论谁
anything pron.无论什么
anyway adv.不管怎样
anywhere adv.无论何地
apart adv.分离,隔开
apartment n.套房,公寓
ape n.猿猴
apologize v.道歉
apology n.道歉
apparatus n.仪器,设备
apparent adj.明显的,表面上的
apparently adj.显然,似乎
appeal v.,n.呼吁,上诉
appealing adj.有吸引力的
appear v.出现,好象
appearance n.出现,外表
appendix n.附录,盲肠
appetite n.食欲,欲望
applaud v.称赞,拍手喝彩
applause n.喝彩,欢呼
apple n.苹果
appliance n.用具,器械
applicable adj.生动的,适用的
applicant n.申请人
application n.申请,应用
apply v.应用,申请
appoint v.任命,约定
appointment n.任命,约会
appreciable adj.可看到的
appreciably adv.相当大地
appreciate v.欣赏,感激
appreciation n.欣赏,感激
appreciative adj.感激的
apprentice n.学校
apprize v.通知
approach v.接近 n.途径
appropriate adj.恰当的 v.拨给
approval n.同意,批准
approve v.赞成,批准
approximate adj.,v.近似,约略
approximately adv.近乎,大约
approximation n.近似值
april n.四月
apt adj.恰当的,易于..的
aptitude n.才智,天资
arab n.阿拉伯
arabian n.阿拉伯人,阿拉伯语
arabic adj.阿拉伯的
arbitrary adj.专横的,任意的
arbitrate v.仲裁
arbitration n.仲裁
arbitrator n.仲裁员
arc n.弧
arch n.拱门,弓形
archaeologist n.考古学家
archaeology n.考古学
architect n.建筑师
architecture n.建筑学
arctic adj.北极的
ardent adj.热心的,强烈的
arduous adj.艰巨的,努力的
area n.地区,面积,领域
arena n.竞技场
argue v.争论,辩论
argument n.争论,论点
arise v.起来,出现
aristocracy n.贵族阶层
aristocrat n.贵族
aristocratic adj.贵族的
arithmetic n.算术
arm n.手臂,扶手 v.武装
arms n.武器
armchair n.手扶椅
armour n.盔甲,装甲
army n.军队,陆军
around adv.在周围,大约
arouse v.唤醒,唤起
arrange v.整理,安排
arrangement n.安排,计划
array v.装扮,排列
arrear n.欠款
arrest v.逮捕,吸引
arrival n.到达,到货
arrive v.到达,达到
arrogance n.傲慢
arrogant adj.傲慢的
arrogantly adv.傲慢地
arrow n.箭,箭头
art n.艺术,技艺
article n.文章,物品,冠词
artificial adj.人造的,假的
artist n.艺术家
artistic n.艺术的
as adv.一样 prep.作为
ascend v.登,上升
ascertain v.查明,弄清
ascribe v.归于
asean n.(缩)东盟
ash n.灰,灰烬
ashamed adj.惭愧的,羞耻的
ashore adv.在岸上,上岸
ashtray n.烟灰缸
asia n.亚洲
asian adj.亚洲的 n.亚洲人
aside adv.在旁边,搁在一边
ask v.问,要求,邀请
asleep adj.睡着的
aspect n.容貌,方面
aspirin n.阿斯匹林
ass n.驴,愚蠢的人
assassinate v.暗杀
assassination n.暗杀
assassinator n.暗杀者
assault v.袭击,攻击
assemble v.集合,装配
assembly n.集合,装配
assert v.断言,宣称
assertion n.断言
assess v.评定,估价
assessment n.估值,评价
assign v.分配,指定
assignment n.任务,作业
assist v.协助
assistance n.协助,辅助
assistant n.助手
associate v.联想 adv.副的
associated adj.联合的
association n.协会,合营
associative adj.联想的
assorted adj.各种各样的
assortment n.花色品种
assume v.假定,担任
assumption n.假定,假装
assurance n.自信,保证
assure v.使..放心,向..保证
assured adj.感到放心的
astonish v.使惊讶
astonishment n.惊讶
astound v.使惊讶
astray adv.(信件)遗失、误传
astronaut n.宇宙飞行员
astronomer n.天文学家
astronomical adj.天文学的
astronomy n.天文学
at prep.在,处于,以
athlete n.田径运动员
athletic adj.田径的
atlantic n.,adj.大西洋(的)
atlas n.地图集
atmosphere n.大气,气氛
atmospheric adj.大气的,空气的
atom n.原子,微粒
atomic adj.原子的,原子能的
attach v.附着于,依恋
attachment n.依附,附件,爱慕
attack v.,n.进攻,侵袭
attain v.赢得,到达
attempt v.,n.尝试,企图
attend v.出席,照顾
attendance n.出勤(率),出席
attendant n.随从,服务员
attention n.注意,关心
attentive adj.注意的,关心的
attentively adv.关心地
attic n.阁楼
attitude n.态度,看法
attorney n.辩护律师
attract v.吸引,引力
attraction adj.有吸引力的
attributable adj.归于...的
attribute v.属于 n.属性
attribution n.属于
attributive adj.定语的,属性的
auction n.拍卖
audience n.听众,观众
auditorium n.礼堂
august n.八月
aunt n.伯(婶、姨、姑)母
aural adj.听觉的,耳的
auspice n.赞助,主办
australia n.澳大利亚
australian adj.澳大利亚的
author n.作者,创造者
authority n.权力,权威
authorization n.授权
authorize v.授权,批准
autobiography n.自传
automate v.自动化
automatic adj.自动的
automation n.自动化
automobile n.汽车
autonomous adj.自治的
autonomy n.自治
autumn n.秋天
auxiliary adj.辅助的,补助的
avail v.帮助,有用 n.效用
availability n.可用性,可供货
available adj.可得到的
avenge v.报复
avenue n.林荫道,途径
average adj.平均的 n.平均数
averagely adv.平均
aviation n.航空
avoid v.避免,逃避
await v.等候,等待
awake v.醒来,醒悟 adj.醒的
awaken adj.醒着的
award v.授予 n.奖,奖品
aware adj.知道的,意识到的
away adv.去,远离,在远处
awe n.威惧
awesome adj.可怕的
awful adj.令人畏惧的
awfully adv.可怕地,非常
awkward adj.笨拙的,不熟练的
awkwardly adv.笨拙地
awkwardness n.笨拙
ax n.斧子
axial adj.轴的,轴向的
axis n.轴,轴线,轴心
axle n.(轮)轴
baby n.婴儿,年龄最小的人
baby-sit v.(替人)看护小孩
baby-sitter n.看护小孩的人
bachelor n.单身汉,学士
back n.背 adj.背后的
backbone n.脊梁骨
backdate v.回溯
background n.背景,经历
backing n.倒退,支持物
backlog n.未交付的订货
backward adv.向后,逆
backwardness n.落后(状态)
bacon n.咸肉,熏肉
bacterium n.细菌
bad adj.坏的,低劣的
badge n.徽章
badly adv.坏,非常,严重地
badminton n.羽毛球
baffle v.困扰,难倒
bag n.袋子,提包
baggage n.行李
baggy adj.袋状的
bait n.饵,诱饵
bake v.烤,烘
baker n.面包师
bakery n.面包店
balance n.平衡,天平,余额
balcony n.阳台
bald adj.秃的
ball n.球,球状物,舞会
ballet n.芭蕾舞
balloon n.气球
ballooning n.热气球飞行运动
ball-point pen n.圆珠笔
ballroom n.舞厅
bamboo n.竹
bamboo-shoot n.竹笋
banana n.香蕉
band n.乐队,带子 v.联合
bandage n.绷带
bandit n.盗匪,歹徒
bang n.,v.砰的一响
bank n.岸,银行
banker n.银行家
banking n.银行业务、金融业
bankrupt n.,v.,adj.破产
banner n.旗帜,横幅
banquet n.宴会
bar n.棒,杆,酒吧
barber n.理发师
bare adj.裸的,直率的
barely adv.赤裸裸地
bargain n.交易,便宜货
barge n.驳船
bark n.狗吠,树皮 v.吠
barn n.谷仓,牲口棚
barometer n.晴雨表,标记
baron n.男爵
baroness n.男爵夫人,女男爵
barrel n.桶,枪(炮)管
barren adj.不育的,贫瘠的
barrier n.障碍,壁垒
barter n.易货贸易
base n.基础,基地 v.基于
baseball n.棒球
basement n.地下室,地窖
basic adj.基本的,基础的
basically adv.基本上,主要地
basin n.盆,盆地
basis n.基础,根据
basket n.篮子,筐
basketball n.篮球
bat n.球拍,蝙蝠 v.击打
bath n.洗澡,浴室
bathe v.洗澡,冲洗
bathroom n.浴室,洗手间
batter v.打击
battery n.电池
battle n.战斗,战役
bay n.海湾,湾
bazaar n.集市
b.c. (缩)公元前
be v.是,存在
beach n.海滩,湖滨
bead n.有孔小珠
beak n.鸟嘴
beam n.梁,射线 v.发光
bean n.豆子
bear v.负担,忍受,生育
bearing n.举止,意义,轴承
bearish adj.熊市的
beast n.野兽,牲畜
beat v.打,击败 n.击打
beautiful adj.美丽的,绝妙的
beauty n.美,美女
because conj.因为,由于
become v.变成
bed n.床,河床,苗圃
bedroom n.卧室
bee n.蜜蜂
beef n.牛肉
beer n.啤酒
beetle n.甲虫
before prep.在...前面
beforehand adv.事先,预先
beg v.乞讨,恳求
beggar n.乞丐
begin v.开始,着手进行
beginner n.初学者
beginning n.开端,起点
behalf n.代表
behave v.行为,举动
behavior n.行为,举止
behind prep.在...后面
behindhand adj.落后,事后
being n.生物,存在
belief n.信仰,信心
believe v.相信,认为
bell n.钟,铃
belly n.肚子
belong v.属于
beloved adj.敬爱的 n.爱人
below adj.,prep.在...下面
belt n.带,腰带
bench n.长凳,工作台
bend v.弯曲,俯身 n.拐弯
beneath prep.在...之下
beneficial adj.有益的,有利的
beneficiary n.受益者
benefit n.益处,利益
benevolence n.慈悲,捐助
benevolent adj.乐善好施的
bent adj.弯曲的
berry n.浆果
beside prep.在...之旁
besides adj.而且 prep...之外
best adj.最好的
best-seller n.畅销书(货)
best-selling adj.畅销的
bestow v.赠给,授予
bet n.,v.打赌
betray v.背叛,泄露
betrayal n.背叛,暴露
better adj.更好的 adv.较好
better-off adj.经济情况较好的
between prep.在两者之间
beverage n.饮料
beware v.当心
bewilder v.迷惑,茫然
beyond prep.在...那边,超出
bias n.偏好
bible n.圣经
bicycle n.自行车
bid n.,v.报价,投标
bidding n.投标
big adj.大的,重大的
bike n.自行车
bill n.帐单,议案,钞票
billion n.十亿
bind v.捆绑,约束
binding n.装订
biographer n.传记记者
biography n.传记
biologist n.生物学家
biology n.生物学
bird n.鸟
birth n.出生,创始
birthday n.生日,诞辰
birthplace n.出生地
biscuit n.饼干
bishop n.主教
bit n.小片,一点
bite n.,v.咬,叮 n.一口
bitter adj.苦的,痛苦的
bitterly adv.惨痛地,辛酸地
bitterness n.苦味,苦难
b/l n.(缩)提单
black adj.黑的 n.黑色
blackboard n.黑板
blacksmith n.铁匠
blade n.刀刃,叶片
blame v.责备 n.过失
blank adj.空白的 n.空格
blanket n.毛毯
blast n.阵风 v.爆炸
blaze n.火光,光亮
bleach v.漂白,变白
bleed v.出血,流血
blend v.混合,掺混
bless v.保佑,祝福
blessing n.祝福
blind adj.瞎的 v.使失明
blink adj.眨眼,闪烁
block n.大块,街区,障碍物
blockage n.封锁
blond adj.金发的
blood n.血,血统
bloody adj.流血的,残忍的
bloom n.花 v.开花
blossom n.(果树的)花
blot n.污迹
blouse n.女衫
blow v.吹,吹掉,刮风
blue adj.蓝色的,忧郁的
blunder n.大错
blunt adj.钝的,生硬的
blush v.脸红,害臊
blushy adj.害羞的
board n.木板,伙食,董事会
boarding n.伙食
boast v.夸口,以...而自豪
boat n.小船,艇
body n.身体,尸体,团体
bodyguard n.保镖
boil v.沸腾,煮沸
boiler n.锅炉
boiling adj.沸腾的
bold adj.大胆的
boldness n.胆略
bolt n.螺检,插销 v.闩门
bomb n.炸弹 v.轰炸
bomber n.轰炸机
bona fide adj.真诚的,无欺的
bond n.束缚,联结,债券
bonded adj.保税的
bone n.骨,骨骼
bony adj.骨头的
bonus n.红利
book n.书 v.预订(票)
booking adj.定货
booklet n.小册子
bookcase n.书橱
bookshelf n.书架
bookstore n.书店
boom v.隆隆响,兴旺,繁荣
booming adj.兴旺的,繁荣的
boost v.抬高,促进
boot n.靴子
booth n.货摊,电话亭
border n.国界,边境
bore v.烦扰,使厌烦,钻孔
boring adj.讨厌的
born adj.出生的,天生的
borrow v.借,借用
borrowings n.借款
bosom n.胸,胸怀
boss n.上司,老板
bossy adj.好发号施令的
both pron.,adj.双方,两
bother v.打扰,麻烦 n.麻烦
bottle n.瓶子
bottle-neck n.影响...的环节
bottom n.底部,末尾
bottom-line n.末行数字,结果
bough n.大树枝
bounce v.跳起 n.跳跃
bound v.缚,以...为界
boundary n.界线,边界
bourgeois n.资产阶级分子
bow v.鞠躬,服从 n.弓
bowl n.碗,钵
bowling n.保龄球
box n.箱,盒 v.拳击
boxer n.拳击运动员
boxing n.拳击
boxing-day n.节礼日
boy n.男孩,小伙子
boycott v.,n.抵制
brace n.支撑 v.激励
bracket n.括号
brag v.吹嘘,夸口
brain n.脑子,头脑,智能
brake n. 制动器 v.刹车
branch n.树枝,分支,分部
brand n.牌子,商标
brandy n.白兰地
brass n.黄铜
brave adj.勇敢的 v.冒着
bravely adv.勇敢地
bravery n.勇敢
brazil n.巴西
brazilian adj.,n.巴西的(人)
breach n.违反(契约)
bread n.面包,生计
bread-earner n.挣钱养家的人
breadth n.宽度,大量
break n.打破,破坏 n.裂口
breakage n.裂口
breakdown n.故障,衰竭
breakthrough n.突破
breakfast n.早饭
breast n.乳房,胸脯
breath n.呼吸,气息
breathe v.呼吸
breed v.繁殖,饲养 n.品种
breeze n.微风
bribe v.贿赂
bribery v.贿赂
brick n.砖
bride n.新娘
bridegroom n.新郎
bridge n.桥梁,桥牌
bridle n.约束 v.抑制
brief adj.简短的
briefing n.简要情况
briefly adv.简单地,简短地
bright adj.明亮的,鲜明的
brighten v.使发光
brightness n.光辉,明亮
brilliance n.辉煌,光彩
brilliant v.辉煌的,杰出的
brim n.边,边缘
bring v.拿来,带来
brink n.边缘
brisk adj.敏捷的,活跃的
bristle n.鬃毛
britain n.不列颠,英国
british adj.英国的,英属的
brittle adj.易碎的,脆的
broad adj.宽的,辽阔的
broadcast v.,n.广播
broadcasting n.广播节目
broaden v.加宽,扩大
brochure n.产品介绍手册
broken adj.破碎的,毁坏了的
broker n.经纪人
bronze n.青铜
brood n.一窝
brook n.小河,溪流
broom n.扫帚
brother n.兄弟,同胞
brotherhood n.兄弟情谊
brother-in-law n.姻兄(弟)
brow n.眉毛,额
brown n.,adj.褐色(的)
bruise n.青肿 v.打伤
brush n.刷子,画笔 v.刷
brutal adj.野蛮的
brute n.禽兽,畜生
bubble n.气泡
bucket n.水桶
bud n.芽,蓓蕾
buddhism n.佛教
buddhist n.佛教徒
budget n.预算
buffalo n.水牛,野牛
buffet n.冷餐
bug n.臭虫,虫子
bugle n.喇叭
build v.建造,建设
builder n.建筑工人,建设者
building n.建筑物,大楼
bulb n.球形物,灯泡
bulk n.体积,大半
bulky adj.庞大的,笨重的
bull n.公牛
bullet n.子弹
bulletin n.公报
bullion n.金块,金条
bullish adj.行情看涨的
bump v.碰,颠簸 n.碰撞
bumpy adj.颠簸不平的
bunch n.一束
bundle n.,v.捆,包
burden n.担子,负担
burdensome adj.沉重的
bureau n.局,司,办公室
bureaucracy n.官僚主义
bureaucratic adj.官僚主义的
burglar n.夜盗,窃贼
burglary n.盗窃
burial n.埋葬
burn v.烧,燃烧,烧伤
burner n.喷灯
burnt adj.烧焦的,烧坏的
burst v.,n.爆炸,破裂
bury v.掩埋,安葬
bus n.公共汽车
bush n.灌木
bushel n.蒲式耳(重量单位)
business n.行业,买卖,商号
businesslike adj.事务式的
busy adj.忙碌的,热闹的
but prep.但是,除了
butcher n.屠夫 v.屠宰
butchery n.肉食店
butt n.根端 v.顶撞
butter n.黄油
butterfly n.蝴蝶
button n.钮扣,按钮
buy v.买,购买
buyer n.购买者
buzz v.嗡嗡叫 n.嗡嗡声
by prep.在...旁边,按照
bygone n.已往的,过时的
bypass n.旁道,分路
by-product n.副产品
cab n.出租汽车
cabbage n.卷心菜;圆白菜
cabin n.小屋,船舱
cabinet n.橱柜,内阁
cable n.电缆,海底电报
cafe n.咖啡馆
cafeteria n.自助餐厅
cage n.笼子,鸟笼
cake n.糕,饼
calculate v.计算,估计
calculation n.计算(结果)
calculus n.微积分
calendar n.日历
calf n.小牛,腿肚子
calibration n.刻度,核定
call v.叫,称为,打电话
calm adj.宁静的,镇静的
calmly adv.平静地,沉着地
calorie n.热卡,卡路里
camel n.骆驼
camera n.照相机
camp n.帐篷,野营 n.宿营
campaign n.战役,运动
camping n.野营
campus n.校园
can v.aux.能,会,可以
canada n.加拿大
canadian adj.,n.加拿大的(人)
canal n.运河,渠道
canary n.金丝雀
cancel v.删除,取消
cancellation n.删除,取消
cancer n.癌
candid adj.坦白的,直率的
candidate n.候选人
candle n.蜡烛
candy n.糖果
cane n.手杖,(藤、竹的)茎
canned adj.罐装的
cannon n.大炮
canoe n.独木舟,游艇
canon n.规范,准则
canteen n.食堂
canvas n.帆布,画布
canvass v.游说
cap n.帽子,盖子 v.覆盖
capability n.才能,能力
capable adj.有能力的
capacity n.容量,容积,资格
cape n.披肩,岬,海角
capita n.人
capital n.首都,资本
capital-intensive adj.资本密集型的
capitalism n.资本主义
capitalist adj.资本主义的
capitalization n.资本化
capitalize v.大写,资本化
captain n.队长,船长,上尉
caption n.标题
captive adj.被俘虏的 n.俘虏
capture v.,n.俘获,捉拿
car n.小汽车
caravan n.车队,大蓬车
carbon n.碳,复写纸
card n.卡片,纸牌,名片
cardboard n.硬纸板
cardinal adj.主要的
care n.注意,小心 v.关心
career n.职业,生涯
careful adj.小心的,仔细的
careless adj.粗心的,不关心的
carelessness n.粗心
cargo n.货物
carol n.颂歌
carpenter n.木匠
carpet n.地毯
carriage n.马车,(火车)车厢
carrier n.运载工具,媒介
carrot n.胡萝卜
carry v.搬运,携带
cart n.手推车
carton n.纸箱
cartoon n.漫画,动画片
cartridge n.弹仓
carve v.雕刻,切
carving n.雕塑
case n.事实,案例,箱子
cash n.现金 v.兑现
cashier n.出纳
cassette n.小盒,磁盘盒
cast v.掷,投射,铸造
castle n.城堡
casual adj.偶然的,随便的
casualty n.伤亡
cat n.猫
catalog n.(商品)目录
catastrophe n.灾难
catalyst n.催化剂
catch v.捕获,染病 n.捉
category n.种类,范畴
cater v.提供
cathedral n.大教堂
catholic adj.天主教的
cattle n.牛(总称)
cause n.原因,理由,事业
caution n.谨慎,告诫
cautious adj.谨慎的,当心的
cavalry n.骑兵,马术
cave n.洞穴,山洞
cavern n.酒馆
cavity n.坑,孔穴
cease v.停止,平息
ceiling n.天花板
celebrate v.庆祝
celebration n.庆祝仪式
celery n.芹菜
cell n.细胞,牢房,电池
cellar n.地窖,地下室
cement n.水泥
cemetery n.墓场
censor v.审查
censorship n.审查
cent n.分币
centigrade adj.摄氏的
centimeter n.厘米
central adj.中心的,中央的
center n.中心 v.集中
century n.世纪
cereal n.谷物
ceremonial adj.仪式的
ceremony n.仪式,典礼,礼节
certain adj.确信的,一定的
certainly adv.一定,当然,行
certainty n.确实,必然的事
certificate n.证书,执照
certification n.证明
certify v.证明
chain n.链条,一系列,锁链
chair n.椅子
chairman n.主席,董事长
chairperson n.主席(无性别之分)
chairwoman n.女主席,女董事长
chalk n.白垩,粉笔
challenge n.,v.挑战,质问
challenging adj.具有挑战性的
chamber n.房间
champion n.优胜者,冠军
championship n.锦标(赛)
chance n.机会,可能性
change n.变化,零钱 v.改变
changeable adj.变化的
channel n.沟渠,途径,频道
chaos n.混乱
chap n.伙计
chapter n.章,节
character n.性格,角色,特牲
characteristic n.特征,特性
characteristical adj....特征的
characterize v.具有...特征
charcoal n.木炭
charge v.收费,冲向,控告
charity n.施舍,仁慈
charm n.魅力 v.迷惑
charming adj.迷人的
chart n.图表 v.制定计划
charter n.特许证,宪章
chase v.追逐,驱除
chat v.聊天
chatter v.喋喋不休,啁啾
cheap adj.便宜的,可鄙的
cheat v.欺骗,作弊 n.骗子
cheating n.欺骗行为
check v.检验,核对 n.支票
check-out n.结帐,离店时限
check-up n.核对,检查
cheek n.颊,脸
cheeky adj.胖乎乎的
cheer n.喝彩 v.向...喝彩
cheerful adj.快活的
cheese n.干酪,奶酪
chemical adj.化学的
chemist n.化学家,药剂师
chemistry n.化学
cheque n.支票
cherish v.珍爱,怀有
cherry n.樱