当前位置: 首页 > news >正文

李臻20242817_安全文件传输系统项目报告_第14周 - 指南

安全文件传输系统项目报告(第 14 周)

1. 代码链接

Gitee 仓库地址:https://gitee.com/li-zhen1215/homework/tree/master/Secure-file

代码结构说明:

SecureFileTransfer/
├── client/ # 客户端主目录
│ ├── client # 命令行客户端可执行文件
│ ├── main.c # 命令行客户端主程序
│ ├── gui/ # Qt图形界面客户端
│ │ ├── mainwindow.h/.cpp # Qt主窗口
│ │ ├── main.cpp # Qt主程序入口
│ │ ├── SecureFileTransferClient.pro # Qt工程文件
│ │ └── ... # 其他Qt相关文件
│ ├── network/ # 客户端网络通信模块
│ │ ├── client_network.h/.c # 客户端Socket通信实现
│ └── crypto/ # 客户端加解密相关
├── server/ # 服务器端主目录
│ ├── server # 服务器端可执行文件
│ ├── main.c # 服务器主程序
│ ├── db/ # 数据库相关
│ │ ├── db.h/.c # SQLite操作
│ ├── crypto/ # 服务器端加解密相关
│ │ ├── sm2_utils.h/.c # SM2算法
│ │ ├── sm3_utils.h/.c # SM3算法
│ │ ├── sm4_utils.h/.c # SM4算法
│ ├── file_utils.h/.c # 文件操作工具
│ └── network/ # 服务器网络相关
├── common/ # 公共协议与工具
│ ├── protocol.h # 通信协议头文件
│ ├── utils.h/.c # 公共工具函数
├── doc/ # 文档
│ └── 设计说明.md
├── requirements.txt # 依赖说明
└── README.md # 项目说明

1、用户登录注册界面

在这里插入图片描述

该界面提供了用户登录和注册的入口,用户可以通过输入用户名和密码进行登录操作,或者选择跳转到注册界面以创建新账户。
通过该界面,用户能够顺利地完成登录或注册过程,从而访问系统的其他功能。

在这里插入图片描述

对登录失败的用户,系统会给予提示。

在这里插入图片描述

新用户可以在当前界面进行注册。

注册失败会有相应提示。

在这里插入图片描述

在这里插入图片描述

注册成功后便可在登录界面进行操作,并进入相关用户的主界面中。

2、主界面

用户登陆成功后,可在主界面进行文件管理,上传或下载文件。

在这里插入图片描述

在用户成功登录后,他们可以在主界面进行文件管理,包括上传和下载文件。
该界面提供了一个简洁直观的操作平台,用户可以通过选择本地文件并点击上传按钮,将文件安全地传输至服务器。此外,用户还可以下载已上传的文件,或删除不再需要的文件。
若文件列表未能及时更新,用户可通过点击界面右侧的刷新列表功能,以确保文件信息的实时更新。

mainwindow.cpp

#include <memory>#include "mainwindow.h"#include <QtCore/qbytearray.h>#include <QtCore/qmetatype.h>#if !defined(Q_MOC_OUTPUT_REVISION)#error "The header file 'mainwindow.h' doesn't include <QObject>."#elif Q_MOC_OUTPUT_REVISION != 67#error "This file was generated using the moc from 5.15.3. It"#error "cannot be used with the include files from this version of Qt."#error "(The moc has changed too much.)"#endifQT_BEGIN_MOC_NAMESPACEQT_WARNING_PUSHQT_WARNING_DISABLE_DEPRECATEDstruct qt_meta_stringdata_MainWindow_t {QByteArrayData data[9];char stringdata0[99];};#define QT_MOC_LITERAL(idx, ofs, len) \Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \qptrdiff(offsetof(qt_meta_stringdata_MainWindow_t, stringdata0) + ofs \- idx *sizeof(QByteArrayData)) \)staticconst qt_meta_stringdata_MainWindow_t qt_meta_stringdata_MainWindow = {{QT_MOC_LITERAL(0, 0, 10), // "MainWindow"QT_MOC_LITERAL(1, 11, 12), // "onSelectFile"QT_MOC_LITERAL(2, 24, 0), // ""QT_MOC_LITERAL(3, 25, 8), // "onUpload"QT_MOC_LITERAL(4, 34, 10), // "onDownload"QT_MOC_LITERAL(5, 45, 8), // "onDelete"QT_MOC_LITERAL(6, 54, 9), // "onRefresh"QT_MOC_LITERAL(7, 64, 15), // "showLoginDialog"QT_MOC_LITERAL(8, 80, 18) // "showRegisterDialog"},"MainWindow\0onSelectFile\0\0onUpload\0""onDownload\0onDelete\0onRefresh\0""showLoginDialog\0showRegisterDialog"};#undef QT_MOC_LITERALstaticconstuint qt_meta_data_MainWindow[] = {// content:8, // revision0, // classname0, 0, // classinfo7, 14, // methods0, 0, // properties0, 0, // enums/sets0, 0, // constructors0, // flags0, // signalCount// slots: name, argc, parameters, tag, flags1, 0, 49, 2, 0x08 /* Private */,3, 0, 50, 2, 0x08 /* Private */,4, 0, 51, 2, 0x08 /* Private */,5, 0, 52, 2, 0x08 /* Private */,6, 0, 53, 2, 0x08 /* Private */,7, 0, 54, 2, 0x08 /* Private */,8, 0, 55, 2, 0x08 /* Private */,// slots: parametersQMetaType::Void,QMetaType::Void,QMetaType::Void,QMetaType::Void,QMetaType::Void,QMetaType::Void,QMetaType::Void,0 // eod};void MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id,void **_a){if (_c == QMetaObject::InvokeMetaMethod) {auto *_t = static_cast<MainWindow *>(_o);(void)_t;switch (_id) {case 0: _t->onSelectFile();break;case 1: _t->onUpload();break;case 2: _t->onDownload();break;case 3: _t->onDelete();break;case 4: _t->onRefresh();break;case 5: _t->showLoginDialog();break;case 6: _t->showRegisterDialog();break;default:;}}(void)_a;}QT_INIT_METAOBJECT const QMetaObject MainWindow::staticMetaObject = {{QMetaObject::SuperData::link<QMainWindow::staticMetaObject>(),qt_meta_stringdata_MainWindow.data,qt_meta_data_MainWindow,qt_static_metacall,nullptr,nullptr}};const QMetaObject *MainWindow::metaObject()const{return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;}void *MainWindow::qt_metacast(constchar *_clname){if (!_clname)return nullptr;if (!strcmp(_clname, qt_meta_stringdata_MainWindow.stringdata0))return static_cast<void*>(this);return QMainWindow::qt_metacast(_clname);}int MainWindow::qt_metacall(QMetaObject::Call _c, int _id,void **_a){_id = QMainWindow::qt_metacall(_c, _id, _a);if (_id <0)return _id;if (_c == QMetaObject::InvokeMetaMethod) {if (_id <7)qt_static_metacall(this, _c, _id, _a);_id -= 7;}elseif (_c == QMetaObject::RegisterMethodArgumentMetaType) {if (_id <7)*reinterpret_cast<int*>(_a[0]) = -1;_id -= 7;}return _id;}QT_WARNING_POPQT_END_MOC_NAMESPACE

在这里插入图片描述
在这里插入图片描述

3、遇到的问题

问题1:gm库在项目中无法使用

问题2:程序在运行过程中有时会崩溃

在这里插入图片描述

将扩展的内存分配到当前文件夹中,并选择Apply,此时才能正常运行Ubuntu,否则会卡死。

4. 提交报告文档要求

Markdown 文档

转换为 PDF

http://www.jsqmd.com/news/8815/

相关文章:

  • 洛谷P14120 题解 - lemon
  • 33 ACwing 294 Count The Repetitions 题解
  • 量化投资 —— 实践 (续)
  • 30 ACwing 291 蒙德里安的梦想 题解
  • 21 ACwing 289 环路运输 题解
  • 13 ACwing 283 Polygon 题解
  • 12 ACwing 282 石子合并 题解
  • 11 ACwing 281 Coins 题解
  • 某中心科学家荣获多项计算机技术大奖
  • 4 ACwing 274 Mobile Service 题解
  • 3 ACwing 273 Making the Grade 题解
  • 1 ACwing 271 Mr
  • 2 ACwing 272 LCIS 最长公共上升子序列 题解
  • 实用指南:【MySQL】索引特性
  • 用 Haxe 实现英文数字验证码识别
  • 出题四
  • 实用指南:B站视频下载器 v1.0.4|免登录下载1080P视频
  • 7 2025 07 15 模拟赛题解
  • 使用 OCaml 实现验证码识别
  • 资料中台(大材料平台)之数据仓库建设
  • 私有云大数据部署:从开发到生产(Docker、K8s、HDFS/Flink on K8s) - 详解
  • 差分约束模板
  • 17 LCA模拟赛1T2 剧院始于演员 题解
  • 3 2025 04 23 模拟赛总结
  • 14 收心赛3 T1 最长不降子序列 题解
  • 16 LCA模拟赛1T1 密码 题解
  • 吴恩达深度学习课程一:神经网络和深度学习 第二周:神经网络基础(一)
  • 阿里开源规则引擎QLExpress
  • QOJ7411 Bitwise Xor
  • 完整教程:SOC-ESP32S3部分:25-HTTP请求