-
学习心得
最近在b站上看黑马C++学习视频,大学时期也没什么代码经验,前前后后看了大概不到一个月,最近终于看完了。说一下总体感受:老师讲解通俗易懂,容易学习,对初学者非常友好;手写代码教学,虽然代码经常重复,但初学者可以加深印象,如果觉得啰嗦可以跳过;讲完语法后还会做小项目,即加强了语法的训练,也培养了编程思维,做出来运行后还是非常有成就感的!
本人也不是专门用C++开发软件项目的,可能会用C++做一些算法、模型等,因为在做ic方面东西,整个项目是在Linux系统下用gvim完成的,部分代码排版不好看,包含了makefile文件,在命令行输入make即可运行。
-
机房预约系统项目
最近这三天完成了机房预约系统的项目,做起来还是蛮有意思的。对于项目有很多思考,也觉得可进行一些改进,我只改了第三个。
- 添加管理员可以删除账号、允许学生和老师修改密码等功能,当然这是小问题。
- 添加教师可以批量审核预约功能。
- 我认为最重要的是机房设置过于鸡肋,不能显示容量,所以我花了一些时间对这个问题进行改进。
-
改进方案
原项目是设置了三个机房,但我觉得最大问题是不能显示余量。因为从周一到周五的上午和下午一共十个时间段 ,所以我把机房数量改成1个,一共有十个时间的机房容量,如下图所示:
把机房号用输入的日期(1~5)和时间(1~2)组合表示出来,用于索引存放机房信息的map容器,对map中机房数进行操作。如周一上午机房容量30在map容器中就是<11,30>。
com_id = data*10+time;//机房编号通过data和time组合起来构成 for(map::iterator it=m_com.begin();it!=m_com.end();it++) { if(it->first == com_id) { cout << "周"<< data << (time==1 ? "上午":"下午"); cout << "的机房剩余容量为:" << --(it->second) << endl; if(it->second<0) { cout << "继续预约可能导致审核失败!"< > sure; if(sure>=0 && sure<=1) { if(sure==0) (it->second)++;//取消预约时容量实际也减了1,这里再加上 break; } cout << "输入有误!请重新输入:"; } } break; } } if(sure == 0)//取消预约,直接退出函数,不保存本次数据 { cout << "取消预约成功!" ; return; }
-
更新机房容量规则
1:有学生审核,对应日期的容量减1,如果容量不足会进行提示,更人性化。确认取消(sure==0)会直接退出函数,这是必要的,因为后面还有保存信息到文件的代码,取消预约,预约数据和机房数据就不会保存到文件中。(当然也可以在老师审核后容量再减1,不过我觉得没必要)
2:学生取消预约、老师审核不通过对应日期的容量都加1。
3:管理员清空预约文件后也要把机房文件重置一下,这里初始容量设为了30
m_com.clear();
for(int i=1;i<=5;i++)
{
for(int j=1;j<=2;j++)
{
m_com.insert(make_pair(i*10+j,30));
}
}
ofs.open(COMPUTER_FILE ,ios::out|ios::trunc);
for(map::iterator it=m_com.begin();it!=m_com.end();it++)
{
ofs << it->first << " " << it->second << endl;
}
ofs.close();
-
小难点
项目中学生取消自己的预约,以及老师审核时的实现确实有一定难度,当时看视频刚开始还不太懂,琢磨一会懂了,看弹幕很多人不懂。取消预约和审核失败机房容量加1 也是在这里实现的。 这里不在展示(因为排版太乱,丢人),如果大家不懂我可以再讲一下。
-
总结
经过反复的试验,目前没什么问题,欢迎大家交流 ,有需要代码的我可以评论区发网盘链接。



