【C++课设】——杂志订阅管理系统(VS2019+MySQL+EasyX)

📖 前言:听说课设月就是放假月(雾),谁想高强度了整整三周,前两周零基础Java+数据库肝课设,现在零基础C++连数据库+GUI,人麻了,浅浅记录一下这次课设叭~

在这里插入图片描述


目录

  • 🕒 1. 题目要求
  • 🕒 2. 环境准备
    • 🕘 2.1 PDManer 简介
    • 🕘 2.2 Navicat 简介
    • 🕘 2.3 VS2019
    • 🕘 2.4 EasyX 简介
      • 🕤 2.4.1 窗口
      • 🕤 2.4.2 文字处理
      • 🕤 2.4.3 对话框/弹窗
      • 🕤 2.4.4 鼠标点击
    • 🕘 2.5 辅助工具:cursor
  • 🕒 3. 完整源码

🕒 1. 题目要求

对杂志订阅信息(包括:杂志代码、订阅用户名、身份证号、订阅份数、单价、小计)进行管理。功能要求:
(1) 新增 (2) 查找 (3) 更新 (4) 删除

成品效果:
请添加图片描述

🕒 2. 环境准备

💡 开发环境:VS2019
💡 数据库:MySQL 5.7.24
💡 数据库管理工具:Navicat for MySQL 11.1
💡 GUI:🔎 EasyX
💡 数据库建模:🔎 PDManer元数建模 V4.5.0

MySQL免安装版安装方法如下

02-MySQL安装

当然,使用高版本工具(如MySQL 8+Navicat for MySQL 16)也是可以滴,安装版相比绿色版(免安装版)在配置上会简单一点,但我更倾向于选择绿色版(方便卸载)。
对于数据库建模,还有PowerDesigner可选,但是我嫌弃它界面不友好,上手成本高,因此没有选择。

🕘 2.1 PDManer 简介

PDManer元数建模,是一款多操作系统开源免费的桌面版关系数据库模型建模工具,相对于PowerDesigner,他具备界面简洁美观,操作简单,上手容易等特点。
主要功能如下:
数据表管理: 数据表,字段,注释,索引等基本功能
视图管理: 实现选择多张表多个字段后,组合一个新的视图对象,视图可生成DDL以及相关程序代码,例如Java的DTO等
ER关系图: 数据表可绘制ER关系图至画布,也支持概念模型等高阶抽像设计
数据字典: 代码映射表管理,例如1表示男,2表示女,并且实现数据字典与数据表字段的关联
数据类型: 系统实现了基础数据类型,基础数据类型在不同数据库下表现为不同数据库类型的方言,这是实现多数据库支持的基础,为更贴近业务,引入了PowerDesigner的数据域这一概念,用于统一同一类具有同样业务属性字段的批量设置类型,长度等。基础数据类型以及数据域,用户均可自行添加,自行定义。
多数据库: 内置主流常见数据库,如MySQL,PostgreSQL,SQLServer,Oracle等,并且支持用户自行添加新的数据库。
代码生成: 内置Java,Mybatis,MyBatisPlus等常规情况下Controller,Service,Mapper的生成,也添加了C#语言支持,可自行扩展对其他语言的支持,如Python等
版本管理: 实现数据表的版本管理,可生成增量DDL脚本
生态对接: 能够导入PowerDesigner的pdm文件,老版本的PDMan文件,也能导出为word文档,导出相关设置等

在这里插入图片描述
在这里插入图片描述
这样就可以抽象出数据模型,为后续建立数据库打下基础。
当然这款软件可以直接生成SQL脚本,但个人实测下来,能用但是有点小bug,因此后面还是要用Navicat微调,值得注意的是,这个软件不能设置外键(即脚本没有相关生成),关系图中可以靠连线表示。
在这里插入图片描述

🕘 2.2 Navicat 简介

在配置好你的mysql环境之后,将你设置的账号、密码、端口号(3306)在Navicat设置连接上,就可以愉快的使用啦。

在这里插入图片描述

在这里插入图片描述
在设置外键的时候,删除时和更新时两列有四个值可以选择:CASCADE、NO ACTION、RESTRICT、SET NULL,它们的区别如下:

  • CASCADE:父表delete、update的时候,子表会delete、update掉关联记录;
  • SET NULL:父表delete、update的时候,子表会将关联记录的外键字段所在列设为null,所以注意在设计子表时外键不能设为not null;
  • RESTRICT:如果想要删除父表的记录时,而在子表中有关联该父表的记录,则不允许删除父表中的记录;
  • NO ACTION:同 RESTRICT,也是首先先检查外键;

🕘 2.3 VS2019

新建C++项目 -> 平台改为X64 -> 右键项目属性
VC++目录 -> 包含目录 -> 编辑 -> mysql安装文件中include文件夹路径放进去
库目录 -> 编辑 -> mysql安装文件中lib文件夹路径放进去

链接器 -> 常规 -> 附加库目录 -> mysql安装文件中lib文件夹路径放进去
输入 -> 附加依赖项 -> 将libmysql.lib 写入

在这里插入图片描述

在mysql的lib文件夹中找到libmysql.dll,把它拷贝一份到C:\Windows\System32
依照惯例,新建.h.cppmain.cpp文件,就可以写代码啦。

🕘 2.4 EasyX 简介

EasyX Graphics Library 是针对 Visual C++ 的免费绘图库,支持 VC6.0 ~ VC2022,简单易用,学习成本极低,应用领域广泛。目前已有许多大学将 EasyX 应用在教学当中。

这里就简单介绍一下相关的函数

🕤 2.4.1 窗口

关于坐标:坐标原点在窗口的左上角,X 轴向右为正,Y 轴向下为正,度量单位是像素。

initgraph(1080, 720); // 初始化窗口
IMAGE img;		
loadimage(&img, _T("你的图片.jpg"));		// 背景图片
putimage(0, 0, &img);		// 从x=0, y=0开始绘制
setbkcolor(WHITE); // 设置文字背景颜色(白色)
setbkmode(TRANSPARENT); // 设置文字背景透明//cleardevice(); // 清空窗口
closegraph();		 // 关闭图形模式

🕤 2.4.2 文字处理

 // 绘制欢迎文字
settextcolor(BLACK);			// 文字颜色
settextstyle(55, 0, _T("黑体"));		// 字体选择
outtextxy(220, 60, _T("欢迎使用杂志订阅管理系统"));		// 各参数分别为:指定高度,字符的平均宽度(逻辑单位)。如果为0,则比例自适应。// 绘制登录选项
settextstyle(30, 0, _T("黑体"));
outtextxy(130, 200, _T("1.已有账号,请登录"));
outtextxy(130, 300, _T("2.没有账号,请注册"));
outtextxy(130, 400, _T("3.注销账号"));

小技巧:如果不好判断文字位置,可以截图然后拿尺子量一下,如下图:
在这里插入图片描述

参数错误,找不到对应的函数,error C2665:“outtextxy*:2个重载中没有一个可以转换所有参数类型,是由于字符集导致的,那么解决方案呢?

  1. 在字符串前面加上大写的L
  2. 用TEXT()把字符串包起来,_T(),原理同上
  3. 不需要添加任何代码,进项目->属性->配置属性->常规->字符集->改为多字节字符集

字符串常见的编码有两种:MBCS 和 Unicode。VC6 新建的项目默认为 MBCS 编码,VC2008 及高版本的 VC 默认为 Unicode 编码。LPCTSTR 可以同时适应两种编码。为了适应两种编码,请使用 TCHAR 字符串及相关函数。

下面是一个从数据库接收数据并打印在窗口的实例

Magazine magazine = magazineList[i];		// vector接收TCHAR magid[5];
_stprintf(magid, _T("%d"), magazine.magid);
outtextxy(170, 190 + i * 30, magid);string mmn = magazine.magname;
TCHAR t_mmn[256];
MultiByteToWideChar(CP_ACP, 0, (LPCSTR)mmn.c_str(), -1, t_mmn, 256);
//outtextxy(370, 190 + i * 30, t_mmn);// 在屏幕中央输出字符串
RECT r = { 250, 190 + i * 30, 550, 215 + i * 30 };
drawtext(t_mmn, &r, DT_CENTER | DT_VCENTER | DT_SINGLELINE);	// 在矩形内水平居中显示文字TCHAR magtotal[5];
_stprintf(magtotal, _T("%d"), magazine.magtotal);
outtextxy(630, 190 + i * 30, magtotal);TCHAR magprice[10];
_stprintf(magprice, _T("%.2f"), magazine.magprice);
outtextxy(855, 190 + i * 30, magprice);

在这里插入图片描述

🕤 2.4.3 对话框/弹窗

如果需要从对话框输入文字存入变量,就需要下面的转换函数

//wchar_t转化为string
static void Wchar_tToString(std::string& szDst, wchar_t* wchar)
{wchar_t* wText = wchar;DWORD dwNum = WideCharToMultiByte(CP_OEMCP, NULL, wText, -1, NULL, 0, NULL, FALSE);//WideCharToMultiByte的运用char* psText;  // psText为char*的临时数组,作为赋值给std::string的中间变量psText = new char[dwNum];WideCharToMultiByte(CP_OEMCP, NULL, wText, -1, psText, dwNum, NULL, FALSE);//WideCharToMultiByte的再次运用szDst = psText;// std::string赋值delete[]psText;// psText的清除
}
string magname;
int magtotal;
double magprice;wchar_t mn[20];
InputBox(mn, 20, L"请输入杂志名:");
Wchar_tToString(magname, mn);wchar_t mt[10];
InputBox(mt, 10, L"请输入杂志数量:");
magtotal = _wtoi(mt);wchar_t mp[10];
InputBox(mp, 10, L"请输入杂志单价:");
magprice = _wtof(mp);

弹窗提示:

if (user.userid != 0)
{MessageBox(NULL, _T("登录成功!"), _T("提示"), MB_OK);         // MB_OK:只有一个“确定”按钮;break;
}
else {int msg = MessageBox(NULL, _T("账号或密码有误!"), _T("错误"), MB_RETRYCANCEL);   // MB_RETRYCANCEL:有“重试”和“取消”两个按钮;if (msg == IDRETRY){continue;}else if (msg == IDCANCEL){exit(0);}
}

在这里插入图片描述

更多选项可参考文档

🕤 2.4.4 鼠标点击

以上面的登录选项为例

// 获取用户输入
while (true)
{string username;string password;string useridcard;if (MouseHit()) // 检测鼠标事件{MOUSEMSG msg = GetMouseMsg();if (msg.uMsg == WM_LBUTTONDOWN) // 鼠标左键按下{if (msg.x > 130 && msg.x < 380 && msg.y > 200 && msg.y < 220) // 选择1{		// 把检测事件想象为一个矩形,这个矩形能刚好覆盖需要点击的文字,上面的x,y就是控制范围...break;}else if (msg.x > 130 && msg.x < 380 && msg.y > 300 && msg.y < 320) // 选择2{...break;}else if (msg.x > 130 && msg.x < 380 && msg.y > 400 && msg.y < 420) // 选择3{break;}}
}

🕘 2.5 辅助工具:cursor

又火一个ChatGPT软件,完全免费!但问题也很明显

建议逻辑卡壳和某个函数用法不会时可以用用,可用性还是挺高的。

🕒 3. 完整源码

🔎 GitHub链接


感谢友友们的阅读。后续还会继续更新,欢迎持续关注哟📌~
💫如果有错误❌,欢迎批评指正呀👀~让我们一起相互进步🚀
🎉如果觉得收获满满,可以点点赞👍支持一下哟~

❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页

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

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

相关文章

如何利用大数据让自己在股市不被割韭菜

虽然我不是很懂足球&#xff0c;但是c罗还是知道的&#xff0c;最近关于他和可口可乐的新闻比较火。源于他在发布会上的时候一个小举动&#xff0c;在发布会上的时候他将面前的赞助商可口可乐的产品移走&#xff0c;公开号召大家“多喝白水”。事件发生后&#xff0c;C罗的巨星…

讲讲真正的大数据杀熟割韭菜是怎么做的?

最近朋友圈刷屏的一篇文章《我被美团会员割了韭菜》&#xff0c;应该很多人看过&#xff0c;美团也对此事做了回应。不知道回应有多少人相信&#xff0c;或者是美团到底有没有杀熟&#xff0c;这些事我们暂且不论。今天主要来聊聊我所了解的真正的大数据杀熟是怎么做的。 到底存…

【ChatGPT炒菜攻略】如何做韭菜

ChatGPT可以化身为一名厨师&#xff0c;不仅有着扎实的厨艺基础和丰富的经验&#xff0c;而且也对食材的选取十分讲究&#xff0c;时常会寻找新鲜和有潜力的材料进行尝试和创新&#xff0c;从而创造出更加优秀和惊艳的佳肴。同时&#xff0c;我注重菜品的色、香、味、形均衡&am…

市值216亿芯片股收监管工作函;工信部将采取举措推动算力发展;文心大模型3.5能力已超ChatGPT 3.5丨每日大事件...

‍ ‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 企业动态 阅文集团推出国内首个网文大模型 7月19日&#xff0c;国内最大网络文学平台阅文集团正式发布“阅文妙笔大模型”。阅文集团总裁兼CEO侯晓楠表示&#xff0c;这是国内一个网文大模型&#xff0c;也是最懂网文的模…

请不要把使用ChatGPT简单化为和使用百度一样简单,两分钟就能成为国内ChatGPT高手。

请不要再问那些百度可以回答的问题&#xff0c;尝试探索更高级的ChatGPT用法。通过编写更高效的prompts&#xff08;提示信息&#xff09;&#xff0c;ChatGPT能够给出更为精准的回答。 需要注意的是&#xff0c;目前国内并没有GPT-4&#xff0c;任何宣称有使用GPT-4的信息都是…

SQL注入

此时分享一个人工智能可以编写调试计算机程序的网站 https://chat.yinas.cn/#/chat/1002 ChatGPT的应用场景还包括&#xff1a;用来开发聊天机器人&#xff0c;也可以编写和调试计算机程序&#xff0c;还可以进行文学、媒体相关领域的创作&#xff0c;包括创作音乐、电视剧、童…

对话式AI系列:中关村科金领域知识中台建设方法论与实践

依托于对话式AI技术的智能对话系统&#xff0c;相对于传统的营销服系统(如呼叫中心、客服系统)而言&#xff0c;不仅仅是一款连接用户的沟通系统&#xff0c;更是一款拥有决策能力的、以自然语言进行人机对话交互的系统&#xff0c;具备实时交互能力、客户洞察能力、业务决策能…

战疫,微软资深高管的十余年远程办公管理经验

微软的传奇不止于员工从不需要上下班打卡&#xff0c;而是整个企业年复一年、日复一日的跨国协同。微软的员工分布在全球各地&#xff0c;它是如何协同全球员工&#xff0c;打造全世界市值万亿美元的公司。 出品 | 微软科技&#xff08;ID&#xff1a;mstech2014&#xff09; C…

微软 154 页研究论文刷屏,对 GPT-4 最全测试曝光,称其初次叩开 AGI 的大门!...

整理 | 苏宓 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 2019 年&#xff0c;微软用 10 亿美元砸进 OpenAI&#xff0c;两者展开为期数年的合作。 当时两家对外公开的合作内容包括&#xff0c;微软和 OpenAI 将联合开发新的 Azure AI 超级计算技术&#xff0c…

百度文心大模型 3.5 斩获7个满分、三个第一;苹果正在测试 AppleGPT 产品;谷歌给员工断网,降低网络攻击风险|极客头条

「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 一分钟速览新闻点&…

抗衡微软,三款国产软件接力金山WPS,身体力行,不愧是国产之光

说到金山WPS&#xff0c;大家喜闻乐见的&#xff0c;莫过于&#xff0c;它与微软抗衡30余载的发展史了。 金山WPS 众所周知&#xff0c;金山WPS刚推出那会儿&#xff0c;全球风靡&#xff0c;揽下了中国乃至全球的大部分办公市场。 直至1995年前后&#xff0c;微软的Office 9…

使用CAD圆和多边形内、外接圆命令绘制图形。使用CAD多线段命令绘制图形

如下图所示根据标注的尺寸&#xff0c;用CAD画图软件绘制出一样的图形&#xff1a; 目标对象 操作工具 操作系统&#xff1a;Windows10 CAD软件&#xff1a;CAD梦想画图&#xff08;轻量级CAD、国产CAD软件&#xff09; 步骤 1.先使用CAD圆命令绘制一个圆&#xff0c;半…

最新多模态模型MiniGPT-4 开源 | 提前感受GPT-4的识图能力 | 基于Vicuna构建的LLM | 能够生成图片描述 | 根据手写文本指令构建网站

概述 最新多模态模型MiniGPT-4 开源:它使用先进的大型语言模型 (LLM)--Vicuna(其中 Vicuna 是基于 LLaMA 构建的)进行调优,在文本语言方面可以达到 ChatGPT 能力的90%。在视觉感知方面,作者采用了与BLIP-2相同的预训练视觉组件,其中该组件由EVA-CLIP的ViT-G/14和Q-Forme…

2022年图灵奖颁给了76岁以太网之父!一篇失败的博士答辩论文,成就了互联网时代

【导读】2022年图灵奖得主&#xff0c;是以太网的先驱Bob Metcalfe。如今全世界5亿人之所以可以愉快地上网冲浪&#xff0c;都离不开他的发明。 就在昨晚&#xff0c;ACM公布了2022年度图灵奖获奖人选——以太网发明者Bob Metcalfe&#xff0c;以表彰他对以太网的发明、标准化…

CodeGeeX 2.0版本重大升级:通过聊天对话的方式直接操作代码

CodeGeeX 2.0版本正式上线&#xff01;从命名上看这是一次大版本的升级。 上个月&#xff0c;CodeGeeX在VSCode和JetBrains IDEs的插件中&#xff0c;加入了智能问答&#xff08;Ask CodeGeeX&#xff09;功能&#xff0c;让用户可以在IDE中通过问答对话的方式解决技术问题。本…

亚马逊巴西站对中国商家正式开放试运营,如何快速提升销量

近日&#xff0c;亚马逊全球开店宣布&#xff0c;亚马逊巴西站对中国商家正式开放试运营&#xff0c;在亚马逊巴西站试运营期间&#xff0c;亚马逊卖家是能获得很多扶持的&#xff0c;比如说大量额外引流资源支持&#xff0c;营销方面&#xff0c;巴西卖家是可以使用优惠券&…

Lazada运营技巧是什么?想爆单的看过来!

很多Lazada卖家都希望能爆单&#xff0c;对引流十分关键&#xff0c;但是转化率却不高。明明投入了广告&#xff0c;但是没有效应。其实是因为Lazada运营方向不对&#xff0c;流量多不等于转化多。要正确的运营&#xff0c;才能让流量最大化&#xff0c;让转化率提高。也就是La…

2019如何操作亚马逊无货源店群?如何开店运营?

“工欲善其事必先利其器”&#xff0c;想要做好亚马逊无货源店群&#xff0c;首先我们需要知道什么是亚马逊无货源&#xff0c;它是怎样的一种运营模式&#xff1f;开店之前我们又应该准备些什么&#xff1f; 亚马逊无货源模式并不是说没有货源&#xff0c;它也是有货源存在的&…

沃尔玛、Shopee、亚马逊测评养号如何最大程度提高listing产品销量

打造一条优质的、有吸引力的listing对于每个做跨境电商的都很重要&#xff0c;那沃尔玛也不例外。产品的listing写得越好&#xff0c;就有可能获得更高的曝光和更高的转化&#xff01;今天就跟大家讲一下沃尔玛listing优化的几大因素。Listing的优化不仅仅只有关键词的优化、文…

7个实用有效的shopify运营策略,跨境电商卖家必知

关键词&#xff1a;shopify运营、跨境电商卖家 您的Shopify 在线商店是使用当今最好的平台之一构建的。2022 年第二季度&#xff0c;Shopify 在美国电子商务平台中占据最大市场份额&#xff0c;约占美国所有在线业务的 32%。 这也意味着电子商务品牌之间的竞争比以往任何时候都…