- 加密文件柜(首都师范大学2022级大作业题目)
你的C语言大作业A:webui框架已成,你的C语言大作业将不再痛苦地接触命令行UI了
- 这个项目难吗?从需要书写的代码上来说,不难,因为已经封装出API了,每个API相当于一道小题,只不过每到小题之间有所联系,但是项目入手会很困难,如果没接触过工程项目开发就来写这个接近真实项目的工程,上手会很吃力,而且由于是新项目,代码难以借鉴,很多需要自己想才可以,需要构思的比较多。
编译的文件相当于服务器后端程序,运行后默认占用18080
端口搭建前后端通信,此时webui文件夹的网页(index.html
)可以用任一浏览器打开就可以自由和本地的服务器数据通信,完成程序构建。如果你想打包程序,我们提供了(但是没在这个库中上传)一些打包工具(electron和python构建脚本)帮助你封装网页为独立程序。
如果VSCode打开c或者h文件总是中文乱码,可以设置一下编辑器对指定文件的编码规则。
- 点击文件找到首选项点击设置,分别输入下方内容指定为GBK编码
@id:files.encoding @lang:cpp
@id:files.encoding @lang:c
前提:使用的MinGW64!所以请安装好。安装路径和工程路径一定不能包含中文
.vscode/tasks.json
D:\\Program Files\\CodeBlocks\\MinGW\\bin\\gcc.exe
更换你自己MinGW的gcc.exe路径
D:\\Program Files\\CodeBlocks\\MinGW\\bin
更换你自己MinGW的bin路径(gcc.exe所在文件夹)
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe build active file",
"command": "D:\\Program Files\\CodeBlocks\\MinGW\\bin\\gcc.exe",
"args": [
"-g",
"${fileDirname}\\**.c",
"-o",
"${fileDirname}\\main.exe",
// socket
"-lws2_32",
],
"options": {
"cwd": "D:\\Program Files\\CodeBlocks\\MinGW\\bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"
}
.vscode/launch.json
D:\\Program Files\\CodeBlocks\\MinGW\\bin\\gdb.exe
更换你自己MinGW的gdb.exe路径
{
"version": "0.2.0",
"configurations": [
{
"name": "C/C++ Runner: Debug Session",
"type": "cppdbg",
"request": "launch",
"args": [],
"stopAtEntry": false,
"externalConsole": true,
"cwd": "${workspaceFolder}",
"program": "${fileDirname}\\main.exe",
"MIMode": "gdb",
"miDebuggerPath": "D:\\Program Files\\CodeBlocks\\MinGW\\bin\\gdb.exe",
"preLaunchTask": "C/C++: gcc.exe build active file",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
.vscode/settings.json
{
"C_Cpp_Runner.cCompilerPath": "gcc",
"C_Cpp_Runner.cppCompilerPath": "g++",
"C_Cpp_Runner.debuggerPath": "gdb",
"C_Cpp_Runner.cStandard": "",
"C_Cpp_Runner.cppStandard": "",
"C_Cpp_Runner.msvcBatchPath": "",
"C_Cpp_Runner.useMsvc": false,
"C_Cpp_Runner.warnings": [
"-Wall",
"-Wextra",
"-Wpedantic"
],
"C_Cpp_Runner.enableWarnings": true,
"C_Cpp_Runner.warningsAsError": false,
"C_Cpp_Runner.compilerArgs": [],
"C_Cpp_Runner.linkerArgs": [],
"C_Cpp_Runner.includePaths": [],
"C_Cpp_Runner.includeSearch": [
"*",
"**/*",
"**/**/*"
],
"C_Cpp_Runner.excludeSearch": [
"**/build",
"**/build/**",
"**/.*",
"**/.*/**",
"**/.vscode",
"**/.vscode/**"
],
"files.associations": {
"*.h": "c",
"*.hpp": "cpp",
"*.hxx": "cpp",
"*.hh": "cpp",
"*.h++": "cpp",
},
}
.vscode/c_cpp_properties.json
D:/Program Files/CodeBlocks/MinGW/bin/gcc.exe
更换你自己MinGW的gdb.exe路径
{
"configurations": [
{
"name": "windows-gcc-x86",
"includePath": [
"${workspaceFolder}/**"
],
"compilerPath": "D:/Program Files/CodeBlocks/MinGW/bin/gcc.exe",
"cStandard": "${default}",
"cppStandard": "${default}",
"intelliSenseMode": "windows-gcc-x86",
"compilerArgs": [
""
],
"configurationProvider": "ms-vscode.makefile-tools"
}
],
"version": 4
}
在main函数最下方(return上方)加入:
system("pause");
即可(手动调用命令行中端暂停)
- 这个工程不存在这个问题,因为Socket通信陷入在死循环等待中不会退出,这里只是给部分同学提供帮助。
工具类函数库 文档
socket实现库 文档
前后端统一交换的CSV库 文档
webui通信定义 文档
-
Mock
有些东西在我要测试时准备工作尚未完成,此时人为写死一些逻辑或者函数的返回值让程序先得以正确运行到需要测试的地方的手段
-
前端
相对于本工程,就是网页(webui)
-
后端
相对于本工程,就是C程序(这个工程编译的程序你可以理解为本地的服务器)
-
WebUI
通过网页渲染实现的人机交互页面