制作图书馆管理系统的一些缺漏知识点

图书馆管理系统制作问题中的小问题

小小的吐槽:

各式各样的Bug让我头秃 我的项目编程世界充满我的嚎哭

一.头文件包含头文件:

1 invalid & incomplete type[头文件操作]
原因:当时做的时候缺乏头文件的相关知识,百度之后发现好像是不能将声明与实现全部都放在.h文件之中
解决方法:将声明与实现分开,函数声明、类的定义、结构体的定义放在.h文件之中,函数体的实现放在.cpp之中

2 头文件和源文件的区别和存放什么的问题
– 初步理解,简单分析:
.h文件存放:

  • 函数声明
  • 类/结构体的定义

.cpp文件存放:

  • 函数体的实现(如果是类内函数注意格式)
  • 全局变量的声明

3 Program received signal SIGSEGV
发生了段错误,百度了一下,有以下的原因:
①.非法访问内存
②.非法存储数据
– 本次错误原因:非法访问内存-数组越界
待解决问题零:读者链表的节点读者对象中有关于借阅书籍的二维数组。在链表上新增一个节点的时候即同时声明了一个读者对象,编译器调用缺省的构造函数,而在我写的缺省构造函数中对于这个二维数组进行了初始化,然后就导致后续读入读者信息一连串错误
– 暂时解决问题:不初始化二维数组

4.避免重复定义 的头文件的内部格式:

#ifndef BOOKS_H_INCLUDED	
#define BOOKS_H_INCLUDED //设置头文件
……(省略代码)
#endif

待解决问题Ⅰ:还没弄明白宏和ifndef是什么以及怎么用

二.全局变量在哪里声明,如何使用:

1.全局变量的作用域
2.全局变量如何声明、定义-出现了重复定义(multiple definition)
待解决问题Ⅲ:全局变量相关知识点

三.C++中的文件操作

1.如何从文件中读取中文字符[文件流操作]
– 解决方法:因为我是用类来定义的,所以数据是块数据,不在于到底是中文字符还是英文字符,所以这个实际上并没有解决,只是不需要在意。

2.关于fread和fwrite函数的运用-避免让我的系统变成一次性系统
相关知识点:
①fread 和 fwrite 函数无论操作是否成功都会返回一个值,可以根据这个值来判断操作是否成功,若失败则退出程序。
②fread和 fwrite函数主要用于二进制文件的读取,所以与此相应的打开文件应该为fopen("xxx.doc","rb"); 即在打开方式的时候注意添加b 则binary即以二进制文件的方式打开
③fwrite是将数据写入文件,fread是从文件读取数据。

四.类对象的构造函数

1.关于类对象的构造函数
bug本身如下:

   [Error] request for member 'setbook' in 'bk2', which is of non-class type 'book()' 

而发生错误的正是下面的语句:

    book bk2(); //确认是创造了 对象
	bk2.setbook("数学之美",1001,"数学",5,"人民邮电出版社","吴军");

👆是第一次出现这种问题,百度之后发现是因为编译器自动把 book b2(); 看成是函数的声明
待解决问题Ⅱ:如何避免出现缺省构造函数与函数声明的混淆
– 暂时解决这个问题的办法:不用缺省的构造函数,直接使用含参数的构造函数来定义一个新的类对象

五.思考不够全面的问题

1.函数名/变量名太随意,以至于变量、函数越多导致我的思路越凌乱。起名需注意

2.一上来就编码,没有思考完全,以至于我的系统是面向书名/读者名而非面向书本(读者)编号的,但事实上名字可相同但是编号不可能相同。后期修改起来太麻烦也就只好不改了。实际情况需注意

3.没有对误操作进行补救措施:即不小心点入一个不想点入的功能,导致程序已经发生改变(即使可以中途按×退出,但文件已经被打开内容已经被修改),所以设置一个随时能够退出的功能。误操作需注意

4.某些特殊数据:如remain people sum等到底何时进行数据更新,又在类中函数还是在main.cpp中进行数据更新需要更加仔细思考。【①数据更新:每次相关操作就及时更新,最后在程序结尾也重新更新。②大多数都是在类中函数中更新,结果导致很多标志值在检测前已经改变:以后要注意放在main.cpp中实现,避免出现检测前已经改变导致编程量的增加:remain首先被减一再检测是否为零会导致bug出现。】 更新数据时间位置需注意

开始时间:2021.4.19
结束时间:2021.5.24

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值