大一下暑期计划 + 2023字节青训营预告直播

目录

🌼前言

🌹后端学习方法

🌳1,层次

🌳2,体系

🌳3,算法和数据结构

🌳4,总结

🌹前端学习方法

🌳基础

🌹求职中如何弥补学历差距?

🌹项目经历怎么准备?

🎂简历如何写?

🎂0基础可以跟项目吗

🎂主修Java或者C++能不能参加青训营?

🍍大一下暑期计划

🚆C++学习路线


🌼前言

主要总结下短短1个小时直播中接受到的知识,由于不允许录播和转载,所以我会凭记忆同时借助Google,百度,掘金,CSDN,GPT4.0等工具,进行完善和解析

借助的工具如下👇

水平有限,权当大一下暑假开始前的路线修正和知识拓展

首先,是第六届青训营报名的网址前后端免费学 | 第六届字节跳动青训营报名啦 - 掘金 (juejin.cn)

其次,里面分前端和后端方向,都会有完整的路线和录播直播视频

前端就是html, css, js三大板块...

后端就是Go语言加上....

首先说下,最近一年,我的主要精力肯定都是给C++,408,数据库,竞赛和项目(面试考察内容)(408包括 数据结构与算法,计网,计组,操作系统)

为什么还参加和C++没什么关系的后端训练营呢(后端学Go嘛),因为里面讲的大多数东西,其实换一门语言,不管是Java,C++还是Rust等等,都是换汤不换药的,一样能实现,意思是,技能都是通用的,后端,从服务端出发,就是应用层,框架层,存储层等等,无非是语法和性能的“细微”差异

所以我参加第六届青训营的目的,还是借这个平台,完善一下做项目的通用知识,还有拓展知识面的目的,当然,如果时间充足,或者自己足够自律上进,也是可以挤出时间另外学Go的,甚至说,你最后不一定要用Go来实现这个组队项目(一般3~4人最好),你甚至可以用C++来实现,但是Go肯定比C++简单一些。。

下面,我会根据直播中字节在职前辈,资深HR们的真知灼见,加上自己的适当扩展,来解答一些疑惑,为今后学习和发展指明一点方向

🌹后端学习方法

🌳1,层次

从后端出发,比如服务端,分为几个层次

1,应用层,用自己的代码去开发和实现的一些逻辑

2,框架层,比如Java对应Spring

3,存储层,比如Mysql,Redis

4,操作系统层,比如Linux

5,硬件层

当我们在做应用层(上层)开发时,项目跑通后,我们需要考虑它在框架层是怎么运行的,在存储层(比如Mysql)以什么样的方式进行的(比如,数据在Mysql里以什么样的逻辑模型存储的)(比如B+树这样的模型,它的数据结构是怎样的)

(再深入一点,比如B+树在硬盘是怎么存储的)

👆当你了解完上面等等这些细节,再做索引优化就会如鱼得水,而不是不停地百度谷歌博客去查(搞清楚这些后,所有场景也就有了解决方案)

🌳2,体系

成体系的学习是怎样的呢,先说个反例,不建议一遇到个不会的就上百度,折腾个半小时一小时,是解决了,但这不是成体系的学习方法

那么什么是成体系的学习方法呢?

比如先看书。拿Mysql举例的话,比如遇到一个场景,然后到百度搜索了下,知道了怎么建索引,直接解决了当前问题(但是你并不了解它为什么要这么建,它下面的物理模型和逻辑模型是怎样的)

那么怎么办呢,此时你应该找一本还不错的书, 成体系地看一下

看完后,再去结合博客上,别人遇到的case,去印证别人是如何解决特定场景下的特定问题的

同时,这个解决方案对应着书上说的物理模型,逻辑模型或者各种策略,是如何应用的

通过先看书,再看技术博客去印证书上内容,结合实际开发遇到的问题场景的方法,你的知识体系就比较完善了

🌳3,算法和数据结构

算法和数据结构

首先,它贯穿应用层,框架层,存储层,操作系统以及硬件层

其次,它是大公司面试的必考项目(意思是,你现在就可以刷题啦~

我的打算是

1,利用2023/6月~9月大一下暑假,先自学完《算法训练营入门篇》这本570页的书,同时学完Acw蓝桥杯辅导课40小时的视频

完成上面2项后,意味着至少多刷了200道左右,类似洛谷普及- ~ 普及 ~ 普及+,这三个难度的题目,省选-里面应该不涉及,毕竟都是算法入门题目

(当然,时间充裕,可以把洛谷官方题单也给刷了,其中NOI-紫题或者省选-蓝题,可以不考虑,费时间太多,你现在需要的是全面系统的打基础外加刷题,蓝题紫题的难度,笔试一般页不会出那么难)

2,第二步,就是大二上,下两学期 + 大二寒暑假3个月,力扣刷掉hot100剑指offer

能完成上面1,和2,也就意味着你无惧中小厂的算法笔试了,甚至能和面试官有来有回,谈笑风生

3,做了这么多算法,不得打点比赛,ACM我不打,有自知之明,一是没时间,本来就0基础,又比较愚钝,所以就打打CA蓝桥杯,天梯赛,PAT

4,总结:上面3步做的七七八八的话,就算既定目标没有完全实现,也能应付大多数中小厂的笔试了,大厂不好说,因为即使你笔试表现优异,全AC而且提出了优化的思路,也可能因为你的学历,项目的不足,被PASS掉

🌳4,总结

当你彻底搞懂一个东西后,需要总结,以便于日后的复盘

这时,写博客就派上用场了,可以记录在typora等软件上,也可以写在CSDN,掘金,博客园等平台上,还可以上传到自己的Github,英语好的还能与StackOverflow的大佬交流下

以上四步,层次 -> 体系 -> 算法和数据结构 ->总结,是比较完整的后端学习方法,剩下的,就是做好自己的本职了,都0基础了,每天专心学上五六小时是基本的

🌹前端学习方法

🌳基础

重点是三个基础语言的深入掌握,html, css, js,它们是一切前端项目的基石

围绕这三个语言,衍生出很多前端的工具,比如Vue,React....
有些人刚学了点语言,就想着直接冲Vue,这是不可取的,前期就应该扎扎实实学好基础,深入理解,html, css, js分别是用来做什么的,有哪些最佳实现,或者性能上如何优化,怎样更好地去维护.....

而且不论前端后端,初期肯定是枯燥,理论的,没法一下子做出一些东西,需要投入大量时间和精力去度过最开始的艰难。

补充

每个程序员,都要会调试,你要知道每一行代码执行完后会有什么结果,有助于你去理解程序

当然,会用Google以及梯子也是必备的

拿后端举例,本次青训营,会从语言开始(基础中的基础),结合数据结构,数据库,操作系统的一些知识(基础),最后讲讲HTTP等,最终实现一个项目

最后说一下,不论前端还是后端,技术深度比广度重要的多,一定要及早确定自己感兴趣的方向,建立核心竞争力(拿前端举例,你去实现PC端项目或者小程序的思路,包括技术栈都是完全不同的,放到求职也是一样,如果职位不匹配,就算能力强也是没法胜任的)

🌹求职中如何弥补学历差距?

要解答这个问题,我们首先要对症下药

首先,我们需要知道自己面试的公司,是哪类公司,即当下面试的两种大形势

第一类,面试时更注重你会不会使用某种框架(比如,你面试Java相关岗位,面试官稳了你很多关于Spring框架的问题,深入点的话,比如JVM)

第二类公司,面试时更看重你的基本功,上来就考察你算法和数据结构的功底,让你做一些笔试题目等等

两方面都是需要准备的,所以,面试心仪公司时,要及时复盘总结,根据面试公司的特点对症下药

🌹项目经历怎么准备?

先谈谈本次(2023暑期)青训营的大项目(8月底项目验收),参加青训营做项目的这个经历,可以锻炼你团队协作和沟通表达的能力,同时,给简历增添了一个比较优秀的项目

这里要更正一个误区,很多大一大二0基础的同学,可能想着抱大腿,这是不可取的。

因为最后面试时,肯定是看你在这个项目中负责那一块,用到了什么技术,怎么优化的,以及相关比较深入一点的细节问题,如果只想着抱大腿,面试时一问就露馅也是不行的

那么为什么不让自己成为大腿呢?自己加把劲,多花时间,戒掉不切实际的小说,游戏和短视频,每年多学1000个小时,最后自己成为大腿不香吗

🎂简历如何写?

这里也包括前端需要学什么,方法是,到各大公司的招聘官网去看,比如字节,京东,阿里,腾讯等等,根据里面的实习生 / 应届生 / 社招,以及研发(包括前端,后端,算法,大数据,安全,测试,运维...),运营,产品,销售等各大方向,然后针对性的查看招聘要求,给自己后续的学习定好方向

看多了招聘要求,你就知道自己简历需要写什么,自己需要学什么才能胜任这个岗位呢?

以下👇是各大公司招聘官网的链接,需要自取

百度 / 字节 / 京东 / 小米 / 华为 / 拼多多 / 网易 / 美团 / 快手 / 新浪 / 知乎 / 陌陌 / 爱奇艺 / 虎牙 / Bli / 滴滴 / 苏宁 / 巨人网络 / 迅雷 / 房天下 / IBM / 中兴

还有之前广泛参考BOSS直聘,实习僧等APP的一些总结👇

(2条消息) 50家公司Java,C++招聘要求_千帐灯无此声的博客-CSDN博客

结合今晚直播资深HR和字节在职员工的分析,以后面试招聘中,更有优势的往往是“一专多能”的人,而不是面面俱到又都只知皮毛的人。

拿前端举例,你vue学的很好,其他的html,css等只是会用,但是没有花费大量时间去精通,那么你面试包括今后2~5年的工作中,就比那些什么都只会一点的人强。

别人会的东西比你全面,但是没有一个是深入挖掘学习过的,你在DEBUG时比他们更快,这就是优势

🎂0基础可以跟项目吗

首先需要明确的是,可以跟,只要你在暑假或者别的什么时间,用心去学,就算慢一点,总好过你学完所有东西后(408,数据库,一门语言,框架....)再开始接触第一个项目,效率极其低下不说,还不容易建立自信心

要知道,初学者,如果不看教程,单凭自己,一开始是很难自创一个可以跑通的项目的,里面有很多你不懂的前置知识,一些库的使用等等,这时你需要去模仿B站,Github,博客里的,附带说明手册,编码风格良好,好评如潮的项目。

从模仿开始,到自己修改,最后甚至在类似需求下,自己完整搞定一个项目,然后慢慢多尝试点别的有新意,有实际意义的项目,自信心积累起来了,也为后续阅读更深入得书籍打下了基础

由于我打算花一年时间专心学C++,以下是关于C++学习的一些博客

1,小白 C++ 入门并发疯学习路线(书单) - 掘金 (juejin.cn)

2,(2条消息) C++从入门到进阶的系列书籍推荐_c++书籍推荐_dvlinker的博客-CSDN博客

3,(2条消息) C/C++学习路线总结与分享_dvlinker的博客-CSDN博客 

4,C++学习路线 (github.com)

5,没人带怎么办,零基础C++入门自学指引 - 知乎 (zhihu.com)

更推荐一专多能,以下是做一个大的项目涉及到的工具和流程👇作为参考

完成一个项目为什么需要这么多技术点,项目是怎么一步步变复杂的,练手项目和真实项目区别为什么这么大_哔哩哔哩_bilibili

🎂主修Java或者C++能不能参加青训营?

后端举例,因为用的是Go,很多人会犹疑不定,怕浪费时间在Go上,而影响了C++或Java的学习。

首先,这个没必要担忧,因为参加青训营,大多数人想的肯定是,通过这次为期2个月的活动,最终与小组一起,完成一个项目,通过自己负责那部分的编写,锻炼的自己编码的能力,也巩固了刚学的技术和语法,并且增强了未来求职的自信心,同时丰富了简历。

说到这,其实你可以花一点时间学习下Go的语法,因为做项目除了Go外,其他大多数都是通用知识或者说技能,举例就是,这个项目中涉及到的HTTP的知识,你在下一个项目还是能用到,所以时间不会白花

做一个稍微大点的项目,本身就很锻炼人,总比你写那些不到1000行的旅馆住宿系统,计算器或者飞机大战复杂一些

从很长一段工作时间出发,你用什么语言实现一个功能,不是关键点,而且当你熟悉甚至精通一门语言,转其他语言也能很快上手。

而且,就课程本身来说,除了一开始花了一点时间学习Go的语法外,后面更多是深入一些的中间件的知识,就像一些微服务的知识,或者数据库的知识。

所以说,就应用层的开发来说,语言是什么并不重要。

拿直播中资深HR的经历来说,他的上一份工作是Java,但是面试字节时,面试官并没有考Go,更多问的是数据库,操作系统,数据结构....

所以平时学习中,我们更应关注基础能力,至于语言,只要会用,能用好(比如你学C++,遇到一个项目,各种各样的实现中,哪一种效率最高?)

再说说,有同学担心自己只学过C / C++,参加Go的课程担心跟不上或者浪费时间,其实这点很好,因为很多底层实现都是通过C / C++的,比如Mysql是通过C++实现的,Linux是通过C实现的

参加这个活动,更多是编程思维的养成和基础知识的积累(这在做项目上是通用的)

补充

许多软件和系统的基础架构都是使用C++开发的,比如:

操作系统,Web浏览器,游戏引擎,数据库管理系统,媒体播放器...

这些系统和软件的基础架构可能还包含其他语言的组件和模块,但在底层核心层面,C++通常被用来进行高性能的计算和资源管理

🍍大一下暑期计划

2023/7月 ~ 2023年9月(2个月时间)

1,C++

暑期通过

黑马C++,314个视频(2023/6/21截止,已经跟到第156个)+ B站2~3个小项目(飞机大战,俄罗斯方块,计算器)+ 《Essential C++》

后续学习

有了一点基础后,你需要成体系地去学习进阶的书以及Github开源项目了....具体参考链接

2,Mysql

暑期通过

黑马Mysql的30小时视频 + 《Mysql必知必会》,这是暑期入门部分,

后续借助

Mysql实战45讲(丁奇)+ 《MySQL技术内幕:InnoDB存储引擎》 + 牛客数据库1000题

作为进阶的学习,完成上述5个部分内容,面试考到数据库也就成竹在胸了

3,算法和数据结构

暑期通过

570页的《算法训练营入门篇》 + Acw蓝桥杯辅导课40小时视频来完善知识体系

这2部分完成,会多积累200道提高-,加上2023/6/21之前的100道普及-,也就达到了300题的量,300题拿个蓝桥杯CA省二不过分吧.....如果能在此基础上,再把洛谷官方题单省选-以下的题刷了,也就是蓝题之前,省一不过分把......

后续刷题

完成上面书籍,视频和刷题后,你的基础算法已经足以应付部分中小厂的笔试了,但是还不够,你是想

(1)蓝桥杯CA国三,(2)天梯赛个人国三,(3)PAT甲级60分,(4)面试笔试

这就需要你在pintia上,按着甲级满分或者乙级满分大佬的攻略,完整刷一次需要的部分,

比如15~25分刷上100题先,以应对将来的天梯赛和PAT

再说笔试部分,力扣的hot100 +《剑指offer》不得拿下.....道阻且长...道阻且长....

4,Linux

.....

5,计网

......

当前进度,期末最后半个月,只能抽一半时间学习,剩下一半时间被期末试绑架了...

优先级是:

《算法训练营》 >  C++黑马  >  Mysql黑马

至于《Essential C++》1~2周就能过一遍代码和书

至于《Mysql必知必会》也是1~2周每天2小时的事

至于Acw蓝桥杯40小时,这个排在优先级最后,一个是确实花时间,一个视频2小时附带2~3题;一个是大二后续可以慢慢刷,非朝夕能完成的

放个彩蛋

大一下C++期末大作业应该能用到,C++旅馆住宿管理系统,彩色欢迎界面和文字,当然,很多功能不全,而且很多BUG,上个月用GPT结合网上一些博客做出来的,就花了2小时,后面懒得费时间就没改BUG和增加功能模块了,700行代码有需要自取👇

//账号为2022
//密码为123
#include<iostream>
#include<cstdlib>
#include<windows.h> //DOS命令, 用函数修改字体颜色
#include<cstring>
using namespace std;
int i=0;
//定义结构体,包含房间号,类型,价格,状态
struct Room {int number;int rad;int price;int state;
};
//定义类Customer, 包含姓名,身份证,房间号,预付费用,天数和退房费用
class Customer {public:Customer(); //构造函数void set_name(char *n) { //设置姓名strcpy(name,n);}void set_ID(char *p) { //设置身份证号strcpy(ID,p);}void set_room_number(int n) { //设置所订房间号room_number=n;}void set_day(int d) { //设置入住天数day=d;}void set_prepaid(int p) { //预付费用prepaid=p;}char *get_name() { //获取姓名return name;}char *get_ID() { //身份证return ID;}int  get_room_number() { //房间号return room_number;}int  get_day() {//天数return day;}int  get_prepaid() { //预付费用return prepaid;}virtual ~Customer();private:char name[10],ID[19]; //姓名和身份证int  room_number; //房间int  prepaid; //预付int  change;int  day;
};
//顾客构造函数, 用于输入用户信息
Customer::Customer() {//构造函数cout<<"请输入姓名"<<endl;cin>>name;cout<<"请输入身份证"<<endl;cin>>ID;prepaid=day=0;
}
//顾客析构函数,输出退房成功信息
Customer::~Customer() {//析构函数cout<<"您退房成功!"<<endl;
}
//全局变量room, customer,存储房间和顾客信息
Room room[141];
Customer *customer[141];
//定义类function
class function
{public:void initial_room(); //初始化房间void welcome(); //欢迎界面void menu(); //菜单void book_room(); //预定房间void go_in(); //入住void go_out(); //退房void inquire(); //查询void out(); //无操作
};//登陆
void function::welcome() {system("color E4");char name[4],pass[7];cout<<"请输入用户名: "<<endl;cin>>name;cout<<"请输入密码: "<<endl;cin>>pass;while((strcmp(name,"2022")!=0)||(strcmp(pass,"123")!=0)) {system("cls");cout<<"用户名或密码输入有误, 请重新输入!"<<endl<<endl<<endl;cout<<"请输入用户名:"<<endl;cin>>name;cout<<"请输入密码:"<<endl;cin>>pass;}cout<<endl;cout<<"                           ╮(╯▽╰)╭"<<endl<<endl;cout<<"                                                              ╮(╯▽╰)╭"<<endl<<endl;cout<<"              <(@Д=)/~"<<endl;cout<<endl;cout<<"                                     ----------------------------"<<endl;cout<<"                                   *** 欢迎使用旅馆住宿管理系统 ***"<<endl;cout<<"                                     ----------------------------"<<endl<<endl<<endl<<endl;cout<<"                                      ^-^     ^-^"<<endl;cout<<"                                     /   \\ _ /   \\"<<endl;cout<<"                                    |_  _☉ ☉_  _|"<<endl;cout<<endl<<endl<<endl;cout<<"                                                                          o(^ε^)o"<<endl;system("pause");system("cls");
}
void function::menu() {system("cls");function n;char x;cout<<"\t\t\t\t\t请按数字键并回车: "<<endl;cout<<" \t\t\t\t  *** 1.预定 *** 2.入住  ***"<<endl;cout<<" \t\t\t\t  *** 3.退房 *** 4.查询 ***"<<endl;cout<<" \t\t\t\t  *** 5.退出 *** \t"<<endl;cin>>x;switch(x) {case '1':n.book_room();system("pause");system("cls");break;case '2':n.go_in();system("pause");system("cls");break;case '3':n.go_out();system("pause");system("cls");break;case '4':n.inquire();system("pause");system("cls");break;case '5':n.out();break;default:cout<<"输入有误,请重新输入"<<endl;cin>>x;}
}
//订房
void function::book_room() {customer[i]=new Customer;int room_kind,day;cout<<"请您选择预定房间类型:\n";cout<<"1.单间/250元\n\n2.电脑单间/270元\n\n3.双人房/300元\n\n4.电竞双人房/400元\n\n5.豪华单间/330元\n\n6.豪华双人房/450元\n\n7.总统套房/20,000元\n"<<endl;cin>>room_kind;cout<<"请输入预定天数"<<endl;cin>>day;customer[i]->set_day(day);switch(room_kind) {int n;case 1:cout<<"住房费用总共为: "<<day * 250<<"元"<<endl;for(n=0; n<20; n++) {								//从第一个级别的房间中查找一个空闲的房间if(room[n].state==0) {							//state=0表示该住房没有被预定的cout<<"预定成功   房间号码为: "<<room[n].number<<endl;room[n].state=1;customer[i]->set_room_number(room[n].number);break;}}break;case 2:cout<<"住房费用总共为: "<<day * 270<<" 元"<<endl;for(n=20; n<40; n++) {if(room[n].state==0) {cout<<"预定成功   房间号码为: "<<room[n].number<<endl;room[n].state=1;customer[i]->set_room_number(room[n].number);break;}}break;case 3: {cout<<"住房费用总共为: "<<day*300<<" 元"<<endl;for(n=40; n<60; n++) {if(room[n].state==0) {cout<<"预订成功   房间号码为: "<<room[n].number<<endl;room[n].state=1;customer[i]->set_room_number(room[n].number);break;}}break;}case 4: {cout<<"住房费用总共为: "<<day*400<<" 元"<<endl;for(n=60; n<80; n++) {if(room[n].state==0) {cout<<"预订成功   房间号码为: "<<room[n].number<<endl;room[n].state=1;customer[i]->set_room_number(room[n].number);break;}}break;}case 5: {cout<<"住房费用总共为: "<<day*330<<" 元"<<endl;for(n=80; n<100; n++) {if(room[n].state==0) {cout<<"预订成功   房间号码为: "<<room[n].number<<endl;room[n].state=1;customer[i]->set_room_number(room[n].number);break;}}break;}case 6: {cout<<"住房费用总共为: "<<day*450<<" 元"<<endl;for(n=100; n<120; n++) {if(room[n].state==0) {cout<<"预订成功   房间号码为: "<<room[n].number<<endl;room[n].state=1;customer[i]->set_room_number(room[n].number);break;}}break;}case 7: {cout<<"住房费用总共为: "<<day*20000<<" 元"<<endl;for(n=120; n<140; n++) {if(room[n].state==0) {cout<<"预订成功   房间号码为: "<<room[n].number<<endl;room[n].state=1;customer[i]->set_room_number(room[n].number);break;}}break;}default:cout<<"选择有误"<<endl;break;}i++;  //住房的顾客数加1
}
//入住
void function::go_in() {char name1[10],id1[19];int q,prepaid;cout<<"该顾客是否已订房 (1. 已订   2. 没订) "<<endl;cin>>q;if(q==1) {cout<<"请输入顾客的姓名:"<<endl;cin>>name1;cout<<"请输入顾客的身份证号码:"<<endl;cin>>id1;void color(int code); //声明函数, 否则报错color() was not declaredvoid SetPos(int x,int y);SetPos(13, 15);color(1212);//更改字体颜色,下同cout<<endl<<endl<<endl<<endl<<endl<<"这里有个功能不是很完善,如果顾客输入错误的姓名或者身份证号码,会死机"<<endl<<endl<<endl;//i:顾客人数for(int j=0; j<=i; j++) {if((strcmp(customer[j]->get_name(),name1)==0)&&(strcmp(customer[j]->get_ID(),id1)==0)) {int num=customer[j]->get_room_number();color(9);cout<<"**顾客**  "<<name1<<"**  入住      房间号码为: **"<<num<<"**"<<endl<<endl;switch(num/100) {case 6:prepaid=customer[j]->get_day()*100;customer[j]->set_prepaid(prepaid);cout<<"请收费用 "<<prepaid<<"元"<<endl;room[num%100-1].state=2;                  //修改房间状态为入住状态break;case 7:prepaid=customer[j]->get_day()*200;customer[j]->set_prepaid(prepaid);cout<<"请收费用 "<<prepaid<<"元"<<endl;room[19+num%100].state=2;break;case 8:prepaid=customer[j]->get_day()*300;customer[j]->set_prepaid(prepaid);cout<<"请收费用 "<<prepaid<<"元"<<endl;room[39+num%100].state=2;break;}break;}}} else {customer[i]=new Customer;int roomkind;int day;cout<<"请输入要预定的房间:"<<endl;cout<<"1.单间/250元\n\n2.电脑单间/270元\n\n3.双人房/300元\n\n4.电竞双人房/400元\n\n5.豪华单间/330元\n\n6.豪华双人房/450元\n\n7.总统套房/20,000元\n"<<endl;cin>>roomkind;cout<<"请输入住宿天数:"<<endl;cin>>day;customer[i]->set_day(day);switch(roomkind) {int n;case 1:prepaid=day*250;customer[i]->set_prepaid(prepaid);cout<<"请收费用 "<<prepaid<<"元"<<endl;for(n=0; n<20; n++) {if(room[n].state==0) {cout<<"入住房间号码为: "<<room[n].number<<endl;room[n].state=2;customer[i]->set_room_number(room[n].number);break;}}break;case 2:prepaid=day*270;customer[i]->set_prepaid(prepaid);cout<<"请收费用 "<<prepaid<<"元"<<endl;for(n=20; n<40; n++) {if(room[n].state==0) {cout<<"入住房间号为: "<<room[n].number<<endl;room[n].state=2;customer[i]->set_room_number(room[n].number);break;}}break;case 3:prepaid=day*330;customer[i]->set_prepaid(prepaid);cout<<"请收费用 "<<prepaid<<"元"<<endl;for(n=40; n<60; n++) {if(room[n].state==0) {cout<<"入住房间号为: "<<room[n].number<<endl;room[n].state=2;customer[i]->set_room_number(room[n].number);break;}}break;case 4:prepaid=day*400;customer[i]->set_prepaid(prepaid);cout<<"请收费用 "<<prepaid<<"元"<<endl;for(n=60; n<80; n++) {if(room[n].state==0) {cout<<"入住房间号码为: "<<room[n].number<<endl;room[n].state=2;customer[i]->set_room_number(room[n].number);break;}}break;case 5:prepaid=day*330;customer[i]->set_prepaid(prepaid);cout<<"请收费用 "<<prepaid<<"元"<<endl;for(n=80; n<100; n++) {if(room[n].state==0) {cout<<"入住房间号码为: "<<room[n].number<<endl;room[n].state=2;customer[i]->set_room_number(room[n].number);break;}}break;case 6:prepaid=day*450;customer[i]->set_prepaid(prepaid);cout<<"请收费用 "<<prepaid<<"元"<<endl;for(n=100; n<120; n++) {if(room[n].state==0) {cout<<"入住房间号码为: "<<room[n].number<<endl;room[n].state=2;customer[i]->set_room_number(room[n].number);break;}}break;case 7:prepaid=day*20000;customer[i]->set_prepaid(prepaid);cout<<"请收费用 "<<prepaid<<"元"<<endl;for(n=120; n<140; n++) {if(room[n].state==0) {cout<<"入住房间号码为: "<<room[n].number<<endl;room[n].state=2;customer[i]->set_room_number(room[n].number);break;}}break;}i++;}
}
//退房
void function::go_out() {char name2[10],id2[19]; //定义姓名和身份证号码数组int room_number; //房间号int day;//实际住房天数cout<<"请输入要退房的顾客姓名和身份证号码:"<<endl;cin>>name2; //输入姓名cin>>id2; //输入身份证号码cout<<"请输入该顾客实际所住天数:"<<endl;int day2;cin>>day2; //输入实际住房天数int j;for(j=0; j<i; j++) { //遍历记录顾客信息的数组if((strcmp(customer[j]->get_name(),name2)==0)&&(strcmp(customer[j]->get_ID(),id2)==0)) {room_number=customer[j]->get_room_number(); //获取房间号int w;w=room_number/100; //获取房间类型int day1;day1=customer[j]->get_day(); //获取预定住房时间day=day1-day2;switch(w) {case 1:cout<<"顾客的房间号是"<<room_number<<" :为单人间,每天250元"<<endl;cout<<"该顾客预付了房费 "<<customer[j]->get_prepaid()<<"元, 实际消费 "<<day2*250<<"元"<<endl;cout<<endl;if(day>0)cout<<"请退给该顾客 "<<day*250<<" 元"<<endl;if(day<0)cout<<"请补收该顾客住房费 "<<-day*250<<" 元"<<endl;break;case 2:cout<<"顾客的房间号是"<<room_number<<" :为双人间,每天270元"<<endl;cout<<"该顾客预付了房费 "<<customer[j]->get_prepaid()<<"元, 实际消费 "<<day2*270<<"元"<<endl;cout<<endl;if(day>0)cout<<"请退给该顾客 "<<day*270<<" 元"<<endl;if(day<0)cout<<"请补收该顾客住房费 "<<-day*270<<" 元"<<endl;break;case 3:cout<<"顾客的房间号是"<<room_number<<"   :为标准间,每天330元"<<endl;cout<<"该顾客预付了房费 "<<customer[j]->get_prepaid()<<"元, 实际消费 "<<day2*330<<"元"<<endl;cout<<endl;if(day>0)cout<<"请退给该顾客 "<<day*330<<" 元"<<endl;if(day<0)cout<<"请补收该顾客住房费 "<<-day*330<<" 元"<<endl;break;case 4:cout<<"顾客的房间号是"<<room_number<<" :为单人间,每天400元"<<endl;cout<<"该顾客预付了房费 "<<customer[j]->get_prepaid()<<"元, 实际消费 "<<day2*400<<"元"<<endl;cout<<endl;if(day>0)cout<<"请退给该顾客 "<<day*400<<" 元"<<endl;if(day<0)cout<<"请补收该顾客住房费 "<<-day*400<<" 元"<<endl;break;case 5:cout<<"顾客的房间号是"<<room_number<<" :为双人间,每天330元"<<endl;cout<<"该顾客预付了房费 "<<customer[j]->get_prepaid()<<"元, 实际消费 "<<day2*330<<"元"<<endl;cout<<endl;if(day>0)cout<<"请退给该顾客 "<<day*330<<" 元"<<endl;if(day<0)cout<<"请补收该顾客住房费 "<<-day*330<<" 元"<<endl;break;case 6:cout<<"顾客的房间号是"<<room_number<<"   :为标准间,每天450元"<<endl;cout<<"该顾客预付了房费 "<<customer[j]->get_prepaid()<<"元, 实际消费 "<<day2*450<<"元"<<endl;cout<<endl;if(day>0)cout<<"请退给该顾客 "<<day*450<<" 元"<<endl;if(day<0)cout<<"请补收该顾客住房费 "<<-day*450<<" 元"<<endl;break;case 7:cout<<"顾客的房间号是"<<room_number<<"   :为标准间,每天2000元"<<endl;cout<<"该顾客预付了房费 "<<customer[j]->get_prepaid()<<"元, 实际消费 "<<day2*2000<<"元"<<endl;cout<<endl;if(day>0)cout<<"请退给该顾客 "<<day*2000<<" 元"<<endl;if(day<0)cout<<"请补收该顾客住房费 "<<-day*2000<<" 元"<<endl;break;}cout<<endl;cout<<"确认退房,请按1: "<<endl;char v;cin>>v;if(v=='1') {for(int k=0; k<140; k++) {if(room[k].number==customer[j]->get_room_number())room[k].state=0;}i--;for(; j<i; j++) {customer[j]=customer[j+1];}delete customer[i];cout<<"欢迎下次一起睡觉!"<<endl;}}else{cout<<"无此顾客信息"<<endl;break;}}
}
//查询
void function::inquire() {char option;cout<<"1.房间信息查询, 2.顾客信息查询: "<<endl;cin>>option; //输入选项if(option=='1') { //查询房间信息int j;int k=0;cout<<endl;cout<<"空房间:"<<endl; //输出空房间信息for(j=0; j<140; j++) {if(room[j].state==0) { //未预定if(k%10==0) cout<<endl;//一行十个,方便查看cout<<room[j].number<<'\t'; //输出房间号k++;}}cout<<endl;cout<<endl;k=0;cout<<"已预订房间:"<<endl;for(j=0; j<140; j++) {if(room[j].state==1) { //已预定if(k%10==0) cout<<endl;cout<<room[j].number<<'\t';k++;}}k=0;cout<<endl;cout<<endl;cout<<"已入住房间:"<<endl;for(j=0; j<140; j++) {if(room[j].state==2) { //已入住if(k%10==0) cout<<endl;cout<<room[j].number<<'\t';k++;}}cout<<endl;cout<<endl;} else if(option=='2') {cout<<"1.按姓名查询, 2.按身份证查询: "<<endl;char option;cin>>option; //输入选项if(option=='1') {char name3[10];cout<<"请输入顾客的姓名: ";cin>>name3;for(int j=0; j<=i; j++) {if(strcmp(customer[j]->get_name(),name3)==0) { //找到顾客信息cout<<name3<<"的信息如下:"<<endl;cout<<"\t"<<"房间号: "<<customer[j]->get_room_number()<<endl;cout<<"\t"<<"预付费用: "<<customer[j]->get_prepaid()<<endl;break;}else //未找到该顾客{cout<<"无此顾客信息"<<endl;break;}}}if(option=='2') { //按身份证查询char id3[10];cout<<"请输入顾客的身份证号码: "<<endl;cin>>id3;for(int j=0; j<=i; j++) {if(strcmp(customer[j]->get_ID(),id3)==0) {cout<<customer[j]->get_name()<<"的房间信息:"<<endl;cout<<"\t"<<"房间号: "<<customer[j]->get_room_number()<<endl;cout<<"\t"<<"预付房费: "<<customer[j]->get_prepaid()<<endl;break;}else{cout<<"无此顾客信息"<<endl;break;}}}}
}
//初始化
void function::initial_room() {int j;int k=101;for(j=0; j<20; j++) {room[j].number=k++;room[j].rad=1;room[j].price=250;room[j].state=0; //前20个房间设置为101~120}k=201;for(j=20; j<40; j++) {room[j].number=k++;room[j].rad=2;room[j].price=270;room[j].state=0;}k=301;for(j=40; j<60; j++) {room[j].number=k++;room[j].rad=3;room[j].price=330;room[j].state=0;}k=401;for(j=60; j<80; j++) {room[j].number=k++;room[j].rad=4;room[j].price=400;room[j].state=0; //前20个房间设置为101~120}k=501;for(j=80; j<100; j++) {room[j].number=k++;room[j].rad=5;room[j].price=330;room[j].state=0;}k=601;for(j=100; j<120; j++) {room[j].number=k++;room[j].rad=6;room[j].price=450;room[j].state=0;}k=701;for(j=120; j<140; j++) {room[j].number=k++;room[j].rad=7;room[j].price=20000;room[j].state=0;}
}
//不操作的话,就返回
void function::out()
{return;
}int color(int c)//颜色函数,更改字体颜色
{//根据传入的参数c设置字体颜色SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),c);return 0;
}void SetPos(int x,int y)//定位函数,定位在终端中的位置
{COORD pos={x,y};HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);//获取句柄SetConsoleCursorPosition(hout,pos);
}void welcome()//欢迎界面
{SetPos(22,9);//定位,下同color(3);//更改字体颜色,下同printf("风里雨里, 麻绳等你");SetPos(35,12);color(4);printf("入住一晚只要250¥");SetPos(32,14);color(7);printf("命重要, 先睡觉吧");SetPos(58,18);color(10);printf("杂牌1号宿舍管理系统\n");SetPos(55,8);color(9);printf("求求你别卷了(T_T)");SetPos(55,25);system("pause");//DOS命令,按任意键继续
}int main() {welcome();system("cls");char choice='1';function m;m.initial_room();	//初始化60个房间m.welcome();//验证while(choice=='1') {m.menu();//功能cout<<endl;cout<<"1. 继续操作   2. 退出系统 "<<endl;cin>>choice;cout<<endl;}
}

🚆C++学习路线

(文章中间有这部分内容,为了方便检索,复制到最后)

由于我打算花一年时间专心学C++,以下是关于C++学习的一些博客

1,小白 C++ 入门并发疯学习路线(书单) - 掘金 (juejin.cn)

2,(2条消息) C++从入门到进阶的系列书籍推荐_c++书籍推荐_dvlinker的博客-CSDN博客

3,(2条消息) C/C++学习路线总结与分享_dvlinker的博客-CSDN博客 

4,C++学习路线 (github.com)

5,没人带怎么办,零基础C++入门自学指引 - 知乎 (zhihu.com)

更推荐一专多能,以下是做一个大的项目涉及到的工具和流程👇作为参考

完成一个项目为什么需要这么多技术点,项目是怎么一步步变复杂的,练手项目和真实项目区别为什么这么大_哔哩哔哩_bilibili

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

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

相关文章

第三十五章Java面向对象概念及封装、继承、多态三种特性详解

面向对象简称 OO&#xff08;Object Oriented&#xff09;&#xff0c;20 世纪 80 年代以后&#xff0c;有了面向对象分析&#xff08;OOA&#xff09;、 面向对象设计&#xff08;OOD&#xff09;、面向对象程序设计&#xff08;OOP&#xff09;等新的系统开发方式模型的研究。…

Spring专家课程Day02_Spring-DI

文章目录 一、依赖注入_Autowired1.配置类中Bean 方式注入1.1&#xff09;注入实例1.2&#xff09;自动注入的匹配原则 2.组件扫描实现自动注入 Autowired3.set方法注入 二、接口解耦_自动注入规则1&#xff09;利用接口解耦2&#xff09;Autowired的注入规则3&#xff09;Qual…

Spring Boot中Elasticsearch的连接配置、原理与使用

Spring Boot中Elasticsearch的连接配置、原理与使用 引言 Elasticsearch是一种开源的分布式搜索和数据分析引擎&#xff0c;它可用于全文搜索、结构化搜索、分析等应用场景。在Spring Boot中&#xff0c;我们可以通过Elasticsearch实现对数据的搜索和分析。本文将介绍Spring …

Red Hat宣布限制访问源代码,尚有两种方式可获取

日前Red Hat宣布限制访问Red Hat Enterprise Linux(RHEL)源代码&#xff0c;而此举也将影响AlmaLinux 、Rocky Linux 等下游发行版。 随即Rocky Linux发布了名为《Keeping Open Source Open》的博文。文中是这样说的&#xff1a;    Red Hat的**ERP**服务条款 (TOS) 和最终…

驱动开发:内核读写内存多级偏移

让我们继续在《内核读写内存浮点数》的基础之上做一个简单的延申&#xff0c;如何实现多级偏移读写&#xff0c;其实很简单&#xff0c;读写函数无需改变&#xff0c;只是在读写之前提前做好计算工作&#xff0c;以此来得到一个内存偏移值&#xff0c;并通过调用内存写入原函数…

SpringBoot的日志

SpringBoot的日志 &#x1f50e;日志是什么&#x1f50e;日志的作用&#x1f50e;日志级别日志级别的作用日志级别的分类日志级别的设置 &#x1f50e;打印日志打印日志具体内容划分 &#x1f50e;常用的日志框架为什么这样设计对比System.out.ptintln()与日志框架 &#x1f50…

Observability:如何把 Elastic Agent 采集的数据输入到 Logstash 并最终写入到 Elasticsearch

在之前的文章 “安装独立的 Elastic Agents 并采集数据 - Elastic Stack 8.0”&#xff0c;我们详述了如何使用 No Fleet Server 来把数据写入到 Elasticsearch 中。在今天的文章中&#xff0c;我们来详述如下使用 Elastic Agents 在独立&#xff08;standalone&#xff09;模式…

《诸神之眼:Nmap网络安全审计技术揭秘》读书笔记

《诸神之眼&#xff1a;Nmap网络安全审计技术揭秘》读书笔记 作者&#xff1a;李华峰 ◆ 前言 NSE是Nmap中革命性的创新。通过Nmap强大的脚本引擎&#xff08;NSE&#xff09;&#xff0c;每一个用户都可以向Nmap中添加自己编写的代码&#xff0c;从而将Nmap打造成用户自由定制…

fusionpbx简介

概述 fusionpbx是以freeswitch作为底层框架开发而成的开源PBX&#xff0c;在freeswitch的基础上&#xff0c;优化了GUI的易用性。 fusionpbx可用作高可用性的单租户或基于域的多租户 PBX、运营商级交换机、呼叫中心服务器、传真服务器、voip服务器、语音邮件服务器、会议服务…

深入理解深度学习——BERT派生模型:T5(Text to Text Transfer Transformer)

分类目录&#xff1a;《深入理解深度学习》总目录 T5的全称为Text to Text Transfer Transformer&#xff0c;是谷歌提出的预训练语言模型领域的通用模型&#xff0c;该模型将所有自然语言问题都转化成文本到文本的形式&#xff0c;并用一个统一的模型解决。为了得到大一统的高…

hexo stellar设置笔记页面

stellar主题的作者在其文档介绍了如何进行笔记页面的简单设置&#xff0c;但是我看了以后还是有点云里雾里&#xff0c;在一顿查阅资料以后&#xff0c;我终于找到了解决办法。 参考下面这个博主的文章。写得很详细&#xff0c;这里就不再赘述啦。 Stellar主题自定义侧边栏教…

C#,保持亮度的动态直方图均衡化(Brightness Preserving Dynamic Histogram Equalization:BPDHE)源代码

图像增强的主要目的是显示隐藏的图像细节&#xff0c;或者用新的动态范围增加图像对比度。直方图均衡&#xff08;HE&#xff09;是用于图像对比度增强的最流行的技术之一&#xff0c;因为HE在计算上快速且易于实现。HE通过基于输入灰度级的概率分布重新映射图像的灰度级来执行…