C语言-在线词典项目
功能:基于Linux操作系统,网络编程和数据库实现在线词典功能,客户端可以注册,登入,查询历史信息等操作,服务器基于TCP,多进程实现多客户端的并发访问,并使用sqlite3数据库实现对用户信息的管理。 1.注册:若用户名已经注册过,重新注册 2.登录:用户名或密码错误需重新登录 3.查询:输入要查的单词,#键结束查询 4.历史:可以查询当前用户历史查找过的单词 5.退出:退出英英在线词典
客户端
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define N 20
#define SIZE 256
#define R 1
#define L 2
#define H 3
#define Q 4
typedef struct
{
int type;
char name[N];
char data[SIZE];
}MSG;
//用户注册
void do_register(int sockfd,MSG *pbuf)
{
pbuf->type = R;
printf("用户名:");
scanf("%s",pbuf->name);
printf("密 码:\033[8;33m");
scanf("%s",pbuf->data);
send(sockfd,pbuf,sizeof(MSG),0);
recv(sockfd,pbuf,sizeof(MSG),0);
printf("\033[0m %s\n",pbuf->data);
sleep(1);
}
//用户登录
int do_login(int sockfd,MSG *pbuf)
{
pbuf->type = L;
printf("用户名:");
scanf("%s",pbuf->name);
printf("密 码:\033[8;33m");
scanf("%s",pbuf->data);
send(sockfd,pbuf,sizeof(MSG),0);
recv(sockfd,pbuf,sizeof(MSG),0);
if(pbuf->type == 8)
{
printf("\033[0m %s\n",pbuf->data);
sleep(1);
return 1;
}
else
{
printf("\033[0m %s\n",pbuf->data);
return 0;
}
}
//查找单词
void do_query(int sockfd,MSG *pbuf)
{
pbuf->type = Q;
printf("请输入你要查询的单词(#结束):");
while(1)
{
scanf("%s",pbuf->data);
getchar();
if(strcmp(pbuf->data,"#")==0)
break;
send(sockfd,pbuf,sizeof(MSG),0);
recv(sockfd,pbuf,sizeof(MSG),0);
printf("╭( ′• o •′ )╭☞就是这个意思:%s\n",pbuf->data);
sleep(1);
printf("请输入你要查询的单词:");
}
}
//查询历史单词
void do_history(int sockfd,MSG *pbuf)
{
pbuf->type = H;
send(sockfd,pbuf,sizeof(MSG),0);
while(1)
{
recv(sockfd,pbuf,sizeof(MSG),0);
if(pbuf->data[0] == '0') //历史单词全部接受完成
break;
printf("%s\n",pbuf->data);
}
sleep(0.2);
}
//二级菜单
void menu_2(int sockfd,MSG *pbuf)
{
while(1)
{
printf("\033[1;33m*******
|