目录:

总结心得:

本次课程设计中涉及:

关于图形用户界面编程的的尝试:

将单词库集成在MySQL数据库中,并使用数据库的操作也十分简单而且逻辑清晰:

参考文献:


总结心得:

  1. 本次课程设计中涉及:

    1. 明白了如何将生活中的实例或对象抽象成程序中的类,并能通过编写的接口对对象的属性进行操作(构造函数,成员函数等);
    2. vector容器的基本操作,来创建不重复的随机顺序;
    3. 没有使用try……catch……语句捕捉异常,但使用if语句与MessageBox的结合来直观的提示异常;
    4. 基本的文件输出输入操作。
  2. 关于图形用户界面编程的的尝试:

    1. 市面上图形用户界面编程有可以跨平台的Qt,还有微软推出的传统的MFC类库,可惜的我一直没能搭建合适的Qt + VS2019的编译环境,因此转而使用winform最新的MFC类库;
    2. 每个窗体其实是由基础的Form类派生的,每个窗体都在构造函数中初始化窗体结构,并通过InitializeComponent()函数创建组件初始化;在析构函数中将组件删除并关闭窗口;
    3. 每个窗口其实是具有独一无二的句柄来管理的,这个好像在多线程编程中用到的比较多,但是本程序只用了MainForm一个线程,通过更改窗口出现的时机来控制程序的流程;
    4. 还有每个在图形界面上的操作例如单击、输入等都被成为事件,由动作发起方和接收者组成,每一个事件都作为该窗体类的私有成员函数;
    5. 窗体类不是普通类,而被称为托管类,“非托管类成员不能作为托管类的成员”是我在尝试将一些代码作为函数插入事件是遇到最多的报错,而托管类与非托管类混合编程也是一块更硬核的知识(我还在琢磨)。
  3. 将单词库集成在MySQL数据库中,并使用数据库的操作也十分简单而且逻辑清晰:

    1. 数据库操作的根本就是SQL语句,而在C++环境中API是”mysql”开头的一系列函数;
    2. 但是要注意的就数据类型和数据编码,例如MYSQL_ROW实际上时char**类型的来存放一行结果;数据编码的类型由很多,但兼容符号最好的应该是utf8mb4_unicode_ci,它可以兼容中文和英文等众多符号,
    3. 数据库存储的字符集和服务端使用的字符集有时是不一样的,而C++文件操作使用的中文字符集是GB2312因此操作数据时还要注意字符集的设置问题;
    4. 将操作数据库的API封装成类会使程序的结构更清晰,使用更方便;要注意的是API中没有对文件的操作,于是一开始我想调用控制台来执行文件输出输入的操作,但是一方面这没有结合到我学过的C++的文件操作,另一方面我的尝试失败了,所以最后只能一行一行插入数据。

参考文献:

(说明:本次课程设计借鉴的方法和内容是在太多,这里将几个重点的内容摘录出来,并附上设计中应用的部分,也算作一种积累吧;)

  1. 教育辅导学习资料的店.VS2019创建C++窗体应用程序演示教学. https://wenku.baidu.com/view/ee6e844233126edb6f1aff00bed5b9f3f90f7286.html, 2020-7-20 (从头指导窗体建立过程)
  2. 云骥行空. MYSQL中的COLLATE(COLLATION)是什么?. https://blog.csdn.net/weixin_44167712/article/details/89883888, 2019-5-6(对数据库字符集的详解)
  3. 老罗观社会万象. Mysql中文本字符串类型有哪几种?. https://jingyan.baidu.com/article/425e69e68c950afe14fc164e.html, 2019-12-7 (字符串类型详解)
  4. china_zyl. c/c++ 调用api操作mysql. https://blog.csdn.net/china_zyl/article/details/17465847?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param, 2013-12-21 (CMySQLDbConn类的来源,基本上是照搬的)
  5. windren06. 标准字符串std::string和System::String, CString之间的转换. https://blog.csdn.net/windren06/article/details/7839985,2012-8-7(没想到重载运算符时想到的类型转换,String -> string: string siPasswd = (const char*)(Marshal::StringToHGlobalAnsi(this->textBox2->Text)).ToPointer(); string -> String: string cuplan = member.GetUserCurrentPlan(); String^ cplan = gcnew String(cuplan.c_str());)
  6. 菜鸟yayaya. C++中各种弹出对话框. https://blog.csdn.net/weixin_40327927/article/details/88389314, 2019-3-11(弹出对话框来提示异常或引导)
  7. Cyril_Wu. C++ 中 string, char*, int 类型的相互转换. https://www.cnblogs.com/sylar5/p/6638641.html, 2017-3-29 (char* -> int:  int y = atoi(dated[0]); string -> int: int dp = stoi(tdplan); int -> string: string days = to_string(num / dp);)
  8. MySQL官网. 25.2.3. C API函数描述. https://www.mysqlzh.com/doc/196/115.html,
  9. olprod&Saisang. OpenFileDialog 组件概述(Windows 窗体). https://docs.microsoft.com/zh-cn/dotnet/framework/winforms/controls/openfiledialog-component-overview-windows-forms, 2017-3-30 (选择单词文件的对话框属性)
  10. 清风南宫. C++ 分割string的一个简单方法. http://blog.sina.com.cn/s/blog_6da88cb20102vica.html, 2015-4-19 (读取文件并分割对应录入到数据库中)
  11. LolitaAnn. C / C++ 读取文件出现乱码解决方法 | 输出到文件出现乱码. https://blog.csdn.net/qq_36667170/article/details/79620611, 2018-3-20 (解决中文乱码)
  12. 浅然言而信. C++(笔记)浅析vector容器的实例. https://blog.csdn.net/w_linux/article/details/71600574, 2017-5-15 (了解vector)

总之,本次面向对象程序设计的课程设计就基本结束,其中涉及到许多的知识和技巧也很值得积累,因此创建了这个系列。不仅是为了记录这个过程,更是想鼓励自己要多加尝试,办法总比困难多。同时也想为有这方面的需求的同学们一个借鉴,能帮他们少走些弯路。第一次做这种知识型的博客,希望大佬们积极指出错误,我一定及时改正;有什么问题还请大家在评论区文明讨论,共同进步,谢谢大家!

面向对象课程设计日志(八)相关推荐

  1. java购物车设计_Java面向对象课程设计——购物车

    Java面向对象课程设计--购物车 小组成员:余景胜.刘格铭.陈国雄.达瓦次仁 一.前期调查 流程 客人(Buyer)先在商城(Mall)中浏览商品(Commidity),将浏览的商品加入购物车(Sh ...

  2. 家庭财务管理系统(C++面向对象课程设计附课设报告)

    0004 家庭财务管理系统(C++面向对象课程设计) 摘要:主要用于记录家庭财务支出和收入等记录的程序设计,其主要开发平台为 Windows 10,程序设计开发环境为 Microsoft visual ...

  3. 面向对象 —— 类设计(八)

    私有成员与全局函数 根据信息局部化的原则,局部使用的功能(或者更浅薄的理解为只被当前类的其他成员函数调用的,被使用的场合单一)不应定义为全局函数. 成员变量与成员函数 (1)思考:成员变量是一个类得以 ...

  4. java面向对象实现表达式计算,java面向对象课程设计-数学表达式计算器

    项目简介 设计一个计算器,其能够: 1)由用户输入一个简单的四则运算表达式,求出其计算结果后显示. 2)特殊数学函数,如:绝对值.取整.三角函数.倒数.平方根.平方.立方等. 3)对一定范围内的数字将 ...

  5. C++/SFML面向对象课程设计,坦克大战

    一. 设计任务及需求分析 <坦克大战>是由日本南梦宫Namco游戏公司开发的一款平面射击游戏,于1985年发售.游戏以坦克战斗及保卫基地为主题,属于策略型联机类.以二战坦克为题材,既保留了 ...

  6. 数据结构课程设计(八)---家谱管理系统(十几个功能)

    1.任务简述: 实现具有下列功能的家谱管理系统. 要求: (1)输入文件以存放最初家谱中各成员的信息,成员的信息中均应包含以下内容:姓名.出生日期.婚否.地址.健在否.死亡日期(若其已死亡),也可附加 ...

  7. 课程设计题八:篮球比赛计分器

    要求: 1.两队各三位显示,共计六位数码显示: 2.设A.B队加.减分按键,复位键: 3.加减分实现1分.2分.3分加减. 升级: 1.两队各三位显示,共计六位数码显示: 2.设A.B队加.减分按键. ...

  8. C++面向对象课程设计——4S店管理系统(源代码内附流程图)

    #include<iostream> #include<fstream> #include<map> #include<vector> #include ...

  9. java课程设计 考试系统,java课程设计考试系统.

    java课程设计考试系统.Tag内容描述: 1.目 录 第一章第一章 引言引言 3 1 1目的 3 1 2名词解释 3 1 3参考资料 3 1 4文档结构 3 第第 2 章章远景远景 4 2 1项目概 ...

最新文章

  1. Android 取得 ListView中每个Item项目的值
  2. Win32 多线程的创建方法,区别和联系
  3. 剑指offer(Java实现) 求1+2+3+…+n
  4. rg1 蓝光危害rg0_LED(护眼)台灯|蓝光那些事
  5. 如果你也会C#,那不妨了解下F#(1):F# 数据类型
  6. Linux下CMAKE编译jsoncpp,c – 如何为jsoncpp编写cmake模块?
  7. Stack View的与众不同
  8. thriftserver的SparkSQL命令行操作Hive表
  9. Prometheus一条告警是怎么触发的
  10. 具体数学-第4课(多重求和方法)
  11. 互联网架构介绍 --from 光荣之路
  12. Atitit.获得向上向下左的右的邻居的方法 软键盘的设计..
  13. 吉林大学计算机网络考研知识点整理
  14. 《信息学奥赛一本通·初赛真题解析》
  15. opencv 摄像头基本使用
  16. 移动端的兼容问题(ios和安卓)
  17. ER图向关系模型的转换
  18. java计算机毕业设计BS模式快递运输平台2021源码+mysql数据库+系统+lw文档+部署
  19. 2.6亿孤独灵魂能否听出一座喜马拉雅
  20. Day 03-常用 Composition API_拉开序幕的setup()

热门文章

  1. linux系统下搜索文件,Linux系统下搜索文件的方法
  2. 浅谈ThingJs之对象查询方法
  3. Python爬虫系列(七)豆瓣图书排行榜(数据存入到数据库)
  4. python中空格怎么打_Python中如何打印空行
  5. java开发环境搭建教程
  6. 编解码学习笔记(四) Mpeg系列——Mpeg 4
  7. 江苏中理网络科技有限公司介绍
  8. linux终端关闭xmanager,xmanager之linux 解决方法
  9. Spark history server 启动报错:History server ui acls disabled; users with admin permissions
  10. Java - JavaFx之fxml文件的编写及基本使用方式