Top 20 C++ Projects With Source Code [2024 Update]https://www.interviewbit.com/blog/cpp-projects/
这个网页有一些简单的C++程序的源码,闲来无事,把第一个程序(Bookshop Management System Using C++)的源码下载了下来。
源文件就只有一个.cpp文件,确实是简单,但是看了一下,明显是为windows平台写的呀,而我的环境是Linux,那就直接给改造成Linux下的吧。
头文件里windows.h肯定是不能包含的了,另一个conio.h也提示找不到,search了一下,这个应该也是windows下的,那也不要了。
大概浏览了一下代码,需要MySQL数据库,而我的系统里还没装,那第一步就是准备运行环境。
MySQL和对应的开发库安装
sudo apt install mysql-server libmysqlclient-dev
安装这两个包,其它需要的包会自动安装,比如命令行客户端mysql-client等。
安装好MySQL之后,发现登陆有问题,经过search,在mysql - ERROR 1698 (28000): Access denied for user 'root'@'localhost' - Stack Overflow
找到了答案,选择里面提到的方案2设置,就可以用Ubuntu的账号登陆mysql了。注意,现在的版本重启服务一般都用systemctl restart mysql了。
按照Bookshop-Management-System-CPP-Project/README.md at master · aryan-khanijo/Bookshop-Management-System-CPP-Project · GitHub
这里面说的创建好数据库和表。如果对sql不熟悉,可以参考这个网页,一边看,一边试,基本的操作很容易学会。这个网站很好用,右边栏直接找到需要的命令看就可以了。
MySQL Tutorial - Learn MySQL Fast, Easy and Fun.
C语言操作mysql数据库接口
对于用到的API的参考,可以到下面这个网站去查询。
MySQL :: MySQL 8.0 C API Developer Guide :: 5.4.84 mysql_store_result()
注意编译时需要加上mysqlclient库
g++ -o BookMgt -g BookShopManagement.cpp -lmysqlclient
调试void books::add()函数
这个程序各个类的操作都是类似的,无非是在某个表格中添加,更新,删除记录。所以我就找了一个函数来调试,即void books::add(),就是增加一本新的图书,录入图书的书名,作者,价格,数量等信息。在调试过程中,我发现原本的程序在windows上多半也有点问题,或者不完善。
为了了解mysql调用的返回值里到底是什么,又安装了gdb,然后在vscode里建立一个简单的launch.json,这样就可以直接在vscode里debug了。
//launch.json
{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "(gdb) Launch","type": "cppdbg","request": "launch","program": "${workspaceFolder}/BookMgt","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": false,"MIMode": "gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}]}]
}
程序运行完后,可以到mysql里验证查看。
可以运行的源码:(注意,只调试了void books::add()这一个函数)
链接: https://pan.baidu.com/s/1IiIoby0D1pnxb6AIIa08gg 提取码: frgg 复制这段内容后打开百度网盘手机App,操作更方便哦