当前位置: 首页 > 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_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct 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)) \)
static const 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_LITERALstatic const uint 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(const char *_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;} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {if (_id < 7)*reinterpret_cast<int*>(_a[0]) = -1;_id -= 7;}return _id;
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE

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

3、遇到的问题

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

  • 现象:在QT程序中,无法识别gm相关的头文件
  • 原因:gm安装的时候路径安装随意,配置环境路径的时候操作不当,导致混乱
  • 解决:卸载当前系统中和gm相关的所有环境,清空相关的系统环境变量,再重新下载gm库。安装到正确的路径下并配置环境变量。

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

  • 现象:在运行某一个功能时会突然卡死并弹出提示
  • 原因:Ubuntu虚拟机资源不足
  • 解决:退出当前环境并分配更多资源
    在虚拟机设置中分配内存资源,然后启动Ubuntu进入系统管理界面

在这里插入图片描述

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

4. 提交报告文档要求

Markdown 文档

  • 本报告使用 Markdown 编写,文件名为 姓名学号_项目名称_第 XX 周.md
  • 包含代码块、图片链接、列表等标准语法。

转换为 PDF

  • 工具:使用 VS Code 插件 Markdown PDF 或在线工具 Pandoc。
  • 步骤
    # 命令行转换示例
    pandoc project-report.md -o project-report.pdf --pdf-engine=xelatex
    

相关文章:

  • 力扣面试150题--二叉树的锯齿形层序遍历
  • 自动驾驶系统研发系列—激光雷达感知延迟:自动驾驶安全的隐形隐患?
  • AWS之数据分析
  • 【科研绘图系列】R语言绘制论文组合图形(multiple plots)
  • AWS之迁移与传输服务
  • 汽车安全 2030 预测 (功能安全FuSa、预期功能安全SOTIF、网络安全CyberSecurity):成本、效益与行业影响
  • 汽车安全:功能安全FuSa、预期功能安全SOTIF与网络安全Cybersecurity 解析
  • 机器学习-ROC曲线​​ 和 ​​AUC指标
  • 【Unity博客节选】Timeline 内部结构 IntervalTree 分析
  • 基于微信小程序的垃圾分类系统
  • 十三、【核心功能篇】测试计划管理:组织和编排测试用例
  • vue-11(命名路由和命名视图)
  • 【小米拥抱AI】小米开源视觉大模型—— MiMo-VL
  • 2,QT-Creator工具创建新项目教程
  • debian12.9或ubuntu,vagrant离线安装插件vagrant-libvirt
  • PHP与MYSQL结合中中的一些常用函数,HTTP协议定义,PHP进行文件编程,会话技术
  • Android第十二次面试-多线程和字符串算法总结
  • 健康检查:在 .NET 微服务模板中优雅配置 Health Checks
  • 基于微信小程序的云校园信息服务平台设计与实现(源码+定制+开发)云端校园服务系统开发 面向师生的校园事务小程序设计与实现 融合微信生态的智慧校园管理系统开发
  • python集成inotify-rsync实现跨服务器文件同步
  • 深圳做网站建设公司/seo日常优化内容是什么
  • 微网站 小程序 区别/石家庄seo推广
  • 新浪网站是什么程序做的/免费引流app下载
  • 网站建栏目建那些/成都官网seo服务
  • 做一直播网站要多少钱/市场推广的方法和规划
  • 关键词优化排名工具/专业seo网站优化推广排名教程