一个C++小程序调试过程记录

Top 20 C++ Projects With Source Code [2024 Update]icon-default.png?t=N7T8https://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,操作更方便哦 
 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/6143.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文件上传结合springboot

目录 前台页面 后台接口 文件上传总结 前端页面三要素 服务端接收文件 前台页面 <form action"/upload" method"post" enctype"mutipart/form-data"> 姓名<imput type"text" name"username"><br> 年…

Mybatis进阶(映射关系多对一 )

文章目录 1.需求分析2.应用实例&#xff08;xml配置&#xff09;1.数据表设计2.entity设计&#xff08;不要使用toString会栈溢出&#xff09;1.Pet.java2.User.java 3.编写Mapper1.PetMapper.java2.UserMapper.java 4.编写Mapper.xml1.UserMapper.xml2.PetMapper.xml 5.测试Us…

基于缓存注解的时间戳令牌防重复提交设计

文章目录 一&#xff0c;概述二&#xff0c;实现过程1、引入pom依赖2、定义缓存管理3、时间戳服务类4、模拟测试接口 三&#xff0c;测试过程1&#xff0c; 模拟批量获取2&#xff0c; 消费令牌 四&#xff0c;源码放送五&#xff0c;优化方向 一&#xff0c;概述 API接口由于…

uniapp 异步加载级联选择器(Cascader,data-picke)

目录 Props 事件方法 inputChange事件回调参数说明&#xff1a; completeChange事件回调参数说明&#xff1a; temList 属性Object参数说明 defaultItemList 属性Object参数说明 在template中使用 由于uniapp uni-ui的data-picke 不支持异步作者自己写了一个 插件市场下…

vue3 ——笔记 (表单输入,监听器)

表单输入 在Vue 3中&#xff0c;v-model指令的用法稍有不同于Vue 2。在Vue 3中&#xff0c;v-model指令实际上是一个语法糖&#xff0c;它会自动将value属性和input事件绑定到组件或元素上&#xff0c;以实现双向数据绑定。 在自定义组件中使用v-model时&#xff0c;需要在组…

身份证号对应地区信息-MySQL

这里写自定义目录标题 MySQL表结构MySQL表对应数据 MySQL表结构 CREATE TABLE idcard_contrast (code varchar(2000) NOT NULL COMMENT 身份证前六位,value varchar(3000) DEFAULT NULL COMMENT 对应地址 ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT身份证对照表;MySQL表对…

自编String类型(C++)

设计思路&#xff1a; 首先自己编写了左移运算符的重载&#xff0c;方便后续测试时输出该String类 对于to_lower_case函数&#xff0c;遍历字符串&#xff0c;并修改所有大写字母。对于to_int函数&#xff0c;从头向尾遍历字符串&#xff0c;将每个数字字符转化为数字&#xf…

从字符串到序列:Jinja2 过滤器的终极指南(Jinja2 filter过滤器的使用方法整理与总结)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 过滤器 📒📝 字符串过滤器📝 数字过滤器📝 列表和序列过滤器📝 字典过滤器📝 自定义过滤器🎈 演示示例🎈📝 字符串过滤器📝 数字过滤器📝 列表和序列过滤器📝 字典过滤器📝 自定义过滤器

数组的扩容与缩容

数组的扩容与缩容 文章目录 数组的扩容与缩容数组的扩容内存分析 数组的缩容内存分析内存分析 数组的扩容 数组扩容是指当原有数组的空间不足以容纳更多的元素时&#xff0c;创建一个新的、长度更大的数组&#xff0c;并将原数组中的元素复制到新数组中&#xff0c;然后更新原…

ubuntu 24.04 向日葵桌面版安装

向日葵桌面版 ubuntu24.04向日葵无法安装&#xff0c;缺少依赖。向日葵缺少依赖&#xff0c;“有未能满足的依赖关系”。解决方案。 1. 下载本体 mkdir oraysun && cd oraysun wget https://d.oray.com/sunlogin/linux/SunloginClient_15.2.0.63062_amd64.deb2. 下载…

iOS 创建开源库时如何使用图片和xib资源

参考文章 参考文章 使用xib的正确姿势 #define MAIN_BUNDLE [NSBundle bundleForClass:[self class]] //获取bundle [[MAIN_BUNDLE loadNibNamed:itemResuableStr owner:self options:nil] lastObject]; //加载xib [tempCollectionView registerNib:[UINib nibWithNibName…

Word文件后缀

Word文件后缀 .docx文件为Microsoft Word文档后缀名&#xff0c;基于XML文件格式 .dotm为Word启用了宏的模板 .dotx为Word模板 .doc为Word97-2003文档&#xff0c;二进制文件格式 参考链接 Word、Excel 和 PowerPoint 的文件格式参考 Learn Microsoft

类和对象【四】运算符重载

文章目录 运算符重载的概念运算符重载&#xff08;函数&#xff09;返回值类型&#xff1a;任意类型函数名&#xff1a;operator已有操作符 运算符重载&#xff08;函数&#xff09;的特点和注意点3个比较特殊的运算符重载赋值运算符&#xff08;&#xff09;重载返回值类型和返…

嵌入式开发四:STM32 基础知识入门

为方便更好的学习STM32单片机&#xff0c;本篇博客主要总结STM32的入门基础知识&#xff0c;重点在于理解寄存器以及存储器映射和寄存器映射&#xff0c;深刻体会STM32是如何组织和管理庞大的寄存器&#xff0c;从而提高开发效率的&#xff0c;为后面的基于标准库的开发做好铺垫…

基于SSM框架的个人博客系统设计与实现:技术总结

引言 在数字化时代&#xff0c;个人博客系统已成为展示个人技术见解、分享生活点滴的重要平台。本次博客介绍了一个基于Java的个人博客系统的设计与实现&#xff0c;采用了流行的SSM&#xff08;Spring、SpringMVC、MyBatis&#xff09;技术栈&#xff0c;以及MySQL数据库和JS…

宝兰德数据可视化软件顺应AI趋势,释放数据价值的无限可能

随着数字技术的持续创新和普及&#xff0c;社会治理方式、产业形态、生活方式高度数字化&#xff0c;由此催生海量数据&#xff0c; 这些数据不仅种类繁多&#xff0c;且具有很高的价值。当企业决策者认识到这些数量庞大、晦涩难懂的数据背后蕴含着巨大的商业价值时&#xff0c…

MySQL 8.4 版本(LTS) 发布,一睹为快

前言 Oracle 前几天发布了 MySQL 8.4 版本(LTS)&#xff0c; 该版本是创新版的第一个长期支持版本。详细规划&#xff0c;请移步 技术译文 | 一文了解 MySQL 全新版本模型 关于 MySQL 的版本发布规划 Oracle MySQL 官方开发团队推出的新版本将过渡到新的 MySQL 版本模型。MyS…

cefsharp实现资源替换如网页背景、移除替换标签、html标识、执行javascript脚本学习笔记(含源码说明)

(一)实现测试(仅供学习参考) 1.1 目标系统页面(登录页)和登录后首页面中2处(一个替换一个移除) 1.2 实现后效果(使用cefsharp自定义浏览器实现以上功能) 1.3 登录后页面替换和移除 系统名称和一个功能菜单li (二)通过分析代码实现脚本编写 2.1 分开处理,设置了…

IDEA 2022.1版本开始,可以直接运行Markdown里的命令行

参照这种格式&#xff1a; shell mvn clean install注意idea支持的版本&#xff1a;是从 2022.1版本开始的。 ps&#xff1a;之前有人写过了&#xff0c;感觉很实用但是蛮多开发者不一定会知道的功能。 参考资料&#xff1a; https://www.cnblogs.com/didispace/p/16144107.h…

pygame鼠标绘制

pygame鼠标绘制 Pygame鼠标绘制效果代码 Pygame Pygame是一个开源的Python库&#xff0c;专为电子游戏开发而设计。它建立在SDL&#xff08;Simple DirectMedia Layer&#xff09;的基础上&#xff0c;允许开发者使用Python这种高级语言来实时开发电子游戏&#xff0c;而无需被…