电子词典——项目(文件编程、网络编程、sqlte3数据库)
基于文件IO、网络编程、sqlite3数据库——电子词典
一、电子词典主功能介绍
1.注册:客户端发起注册请求,服务器检测到请求后从用户数据库中遍历是否有该账号存在,若没有则直接注册;若存在该账号则注册失败;
2.登录:客户端发起登录请求,服务器检测到登录请求后从用户数据库中遍历用户名和密码是否匹配,匹配成功则登录成功;匹配失败则登录失败;
3.查单词:客户端发起查单词请求,服务器检测到请求后从单词数据库遍历是否存在,若存在则返回单词意思给客户端,并把单词及单词意思插入到历史记录数据库中;不存在则返回查找失败的信息;
4.历史记录:客户端发起历史记录查询请求,服务器检测到请求后从历史记录数据库中将所有信息返回给客户端
二、电子词典文件说明
![](/assets/blank.gif)
1.dict.txt——为单词表,程序运行前需要将单词表dict.txt中数据插入到 word.db单词数据库中。
2.word.db——为单词数据库,客户端查找单词时,服务器从word.db数据库中遍历该单词的信息,并回发给客户端。
3.user.db——为用户数据库,用于存放用户信息,注册时将用户信息存入user.db,登录时从user.db中遍历并判断用户名和密码是否匹配(注册时还须从user.db数据库中遍历注册的用户名是否存在)
4.history.db——为历史记录数据库,用于存放查询成功的单词信息,用户调用查询历史记录是服务器将所有信息回发给客户端
三、项目思路
服务器采用TCP多进程方式,可同时处理多个客户端。主进程处理客户端的连接,子进程处理服务器与客户端之间的通信。
定义一个结构体用于客户端与服务器之间的信息发送和接受。
typedef struct
{int type;char name[50];char data[256];
}MSG;
创建数据库前检查是否存在单词表,不存在则导入单词表。
判断是否存在所需的数据库,若不存在则创建数据库,创建数据库时将数据库中的表创建好,并将单词表数据导入到单词数据库中。
客户端发起注册请求时,服务器从用户数据库查询是否存在用户名,若没有则将用户信息插入到用户数据库中。若存在则返回给客户端用户已存在的信息,进行重新注册。
客户端发起登录请求时,服务器从用于数据库查找用户名,并判断密码是否正确,如两者都符合则登录成功,返回登录成功信息。若不符合则返回登录失败信息给客户端。
登录成功后用户可发起查询单词请求,服务器从客户端接受查询的单词信息,从单词数据库遍历符合的单词,将信息返回给客户端,并将查询的单词及解释插入到历史记录数据库中。
用户发起历史数据记录请求时,服务器将历史记录数据库的所有单词信息发送给客户端。
服务器返回成功的信息中tpye都为T,返回失败的信息中type都为F
客户端退出,服务器将退出的子进程资源回收
四、效果展示
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
五、代码
服务器搭建
(温馨提示:电子词典名纯属搞笑,请勿当真;因为本人没有这个能力
电子词典——项目(文件编程、网络编程、sqlte3数据库)相关推荐
- 电子词典的python3 结合网络编程项目实例源码
此次为第一版的python3 电子词典查询词汇,后期会继续跟进程序的交互以及优化 客户端: #2018.07.02 今天白天搞定# #客户端 服务端之间的连接依靠套接字socket 进程并发 # ...
- 入门Linux系统编程--网络编程
文章目录 一.网络编程 1.socket服务端代码实现(无连接客户端) 6.socket服务端代码实现(连接客户端) 7.socket客户端代码实现 8.实现双方聊天 9.多方消息收发 二.往期文章 ...
- java 编程原理_Java网络编程 -- 网络编程基础原理
Hello,今天记录下 Java网络编程 --> 网络编程基础原理. 一起学习,一起进步.继续沉淀,慢慢强大.希望这文章对您有帮助.若有写的不好的地方,欢迎评论给建议哈! 初写博客不久,我是杨展 ...
- 基于 Linux 的文件操作 网络编程的最后一环
Linux下万物皆文件 在了解了客户端和服务器的函数调用之后,我们只需要了解下文件操作就能编写出属于自己的客户端和服务器了,还能让他们进行通信. 这个内容其实是很简单的,所以博主就不再做过多的讲解 打 ...
- java 仿qq 传文件_java网络编程实现QQ发消息文件,图片等内容
前言:昨天我们已经初步学习了网络编程到底是怎么一回事儿,今天在此基础上继续学习网络编程,利用网络编程实现 QQ上的发送消息,群聊,私聊等功能. 首先我们来回顾一下昨天的两点基础知识: 1.建立服务器端 ...
- linux网络编程--网络编程的基本函数介绍与使用【转】
本文转载自:http://blog.csdn.net/yusiguyuan/article/details/17538499 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览 ...
- linux网络编程--网络编程的基本函数介绍与使用
我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠so ...
- 基于tcp和sqlite3数据库的电子词典项目
二十世界后半叶,伴随着社会的迅速发展与进步,以电子计算机为代表的现代科学技术获得了突飞猛进的发展并迅速和人们的日常生活结合在一起.计算机技术的发展和进步也使电子词典的诞生变得可能.虽然只有十来年的历史 ...
- socket网络编程——网络编程接口
网络编程接口 #include <sys/types.h> #include <sys/socket.h>/* socket()创建套接字,成功返回套接字的文件描述符,失败返回 ...
最新文章
- 除了Java,为什么我们要学Python?
- 【量化投资】策略五(聚宽)
- 解耦HTML、CSS和JavaScript
- 共享数据库、独立 Schema
- java获取文件编码_java如何获取文件编码格式
- cf鼠标宏数据大全_游戏鼠标中的跑车,贱驴125M游戏鼠标体验!
- 计算机基础知识试题和答案
- UI设计中关于按钮的那些事
- EXCEL中的定位条件(含快速删除空行,定位图片、文本框等对象)
- 如何使用 ELEMENTOR
- 科普:互联网的岗位职责和技能
- 51单片机---麻雀虽小,五脏俱全
- WiFi探针的原理与安全
- android六边形图片,android – 如何给图像的六边形形状
- 家用无线路由器哪个品牌好?程序员分享值得推荐的无线路由器
- 前端实现pdf文件的在线预览与下载
- 对于机器学习的几点理解
- C/S,B/S与P2P架构
- 传说中的王八蛋~~~
- 读《精通JavaScript+jQuery》笔记二
热门文章
- spring boot和spring cloud版本冲突解决方案
- hive初始化元数据的时候出现 Error:FUNCTION ‘NUCLEUS_ASCII‘ already exists解决方法
- Kera之父Python深度学习笔记(二)神经网络的数学基础
- 贪心算法 | 473火柴拼正方形 怎么用C++实现摆放火柴棍?
- php实现彩票走势图组选图用颜色区分
- php如何引入jquery文件路径问题,php引入文件_PHP 自动引入一个目录的所有 PHP 文件...
- 网络知识:IP地址的概念以及IPV4和IPV6的区别
- 电磁流量计在使用需要注意的问题
- 送一台2020最新款笔记本电脑
- Pandas系列教程:盛大开篇了!