- 基于C++的网盘系统项目源码CSDN下载地址
- 基于C++的网盘系统项目源码GitHub下载地址
本项目基于C++开发,整个项目采用C/S架构,使用Sqlite3数据库存储用户信息,本地磁盘存储用户文件,使用Socket进行客户端和服务器之间的数据传输。完成了网盘中关于用户的几乎所有功能,包括:用户注册、用户登录、用户退出、查看在线好友、搜索好友、添加好友、刷新在线好友、删除好友、私聊、群聊等等;关于文件夹和文件的所有功能也几乎完成了,包括:创建文件夹、查看所有文件、删除文件夹、重命名文件夹、进入文件夹、返回上一级、上传文件、删除文件、下载文件、分享文件、移动文件等等。本项目的完成度非常高,包括了这么多功能,自然代码数也非常多,代码多不是问题,因为我写的非常详细,详细到每一步我都有解释,各位读者一定可以看懂。另外,为了方便读者学习,且本着开源精神,我已经将我写好的源码分享在上面了。此项目作为本科毕设或者写在简历上也不失为一个好的选择。此项目花费了我大量精力和时间,前前后后写了两个多月,希望读者可以收获满满,下面就开始学习吧!
- Windows 11
- Qt Creator 4.11.1 (Community)
- C++ 98
- Gcc 3.4.5
- CPU:Intel® Core™ i7-8750H CPU @ 2.20GHz 2.20 GHz
- RAM:24GB
- GPU:NVIDIA GeForce GTX 1060
-
当我们启动两个项目后,输入用户名和密码最后点击“注册”,发现提示我们注册成功了:

-
然后我们来到数据库查看数据,发现新的注册信息已经保存到数据库中了:

-
如果此时我们还是以同样的用户名去注册,就会提示我们注册失败,因为数据库中已经有同名的用户名了,而我们设置用户名字段唯一,所以注册会失败:

-
启动两个项目,当我们使用已经在数据库中存在的用户,并且此用户的“online”字段为0的时候,是可以成功登陆的:

-
当我们尝试使用数据库中不存在的用户登陆时,是不可以成功登录的:

-
启动两个项目,使用某一个用户登录,然后查询数据库,发现此用户的“online”字段为1,说明已经成功登陆了:

-
然后点击关闭按钮,模仿用户退出行为:

-
此时再来数据库查询,就发现对应用户的online字段已经变为了0,说明此用户已经成功退出了:

- 同时启动多个客户端,然后分别登陆进去,点击“显示在线用户”按钮,可以发现在线的用户的用户名已经成功显示了:

- 启动两个项目后,当我们搜索用户“abc”的时候,发现可以成功展示其用户名和状态:

-
打开两个客户端和一个服务器后,发现被加用户可以正常弹出窗口:

-
当我们点击“Yes”后,发现可以已经成功添加好友了,并且数据库中也已经保存了两个用户的好友关系:

- 分别启动服务器和客户端并登陆后,我们点击“刷新好友”按钮,发现此时可以将最新在线的好友列表显示出来了:

- 分别启动服务器和有好友关系的两个客户端,点击“删除好友”按钮后就可以成功删除两个用户之间的好友关系了,并且可以显示提示:

- 启动服务器和两个客户端进行测试,发现可以正常进行聊天消息的传递:

- 启动项目后,发现可以正常发送群聊信息:

- 可以成功在用户名同名的目录下新建文件夹

- 当我们点击“图书”界面的“刷新文件”,就可以显示此文件夹内所有的文件了:

- 当我们选中文件夹后点击“删除文件夹”后,就会弹出删除成功的提示,然后当我们点击“刷新文件”后,就会发现原来的被删除文件夹已经不存在了:

-
选中某个待重命名的文件,然后输入重命名后的文件名称:

-
当我们点击“刷新文件”后,可以发现已经成功重命名文件了:

- 当我们双击某个文件夹的时候就可以进入到此文件夹:

- 当我们点击“返回”的时候,可以从子目录返回到主目录:

-
选中本地某个文件进行上传:

-
可以发现,文件已经成功上传了:

-
我们可以选中某个文件,然后点击“删除文件”:

-
当我们再次“刷新文件”后,就会发现选中的文件已经被我们删除了:

-
选中服务器的某个文件进行下载:

-
可以发现,已经下载成功了:

-
首先启动一个服务端和两个客户端,在两个客户端上点击“刷新好友”,要先刷新好友,才能对好友进行分享文件的操作:

-
然后将“rose”用户下的“hello”文件夹进行分享:

-
选择“lucy”后,点击“确定”:

-
此时两个客户端都有相应的提示了,我们只需要点击接收端的“Yes”:

-
然后点击“lucy”用户客户端的“刷新文件”,可以看到“rose”用户的“hello”文件夹及其文件夹中的内容已经成功拷贝到“lucy”用户的文件目录中了:

-
首先选择要移动的文件,然后点击“移动文件”:

-
然后选择要移动文件的目标目录后,点击“目标目录”:

-
当我们进入移动文件的目标目录查看后,发现文件已经移动到目标目录了:

更多细节请见:基于C++的网盘系统项目开发教程