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

这篇具有很好参考价值的文章主要介绍了大一下暑期计划 + 2023字节青训营预告直播。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

🌼前言

🌹后端学习方法

🌳1,层次

🌳2,体系

🌳3,算法和数据结构

🌳4,总结

🌹前端学习方法

🌳基础

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

🌹项目经历怎么准备?

🎂官网链接 + 简历如何写

🎂0基础可以跟项目吗

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

🍍大一下暑期计划

🚆C++学习路线


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

🌼前言

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

借助的工具如下👇

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

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

首先,是第六届青训营报名的网址前后端免费学 | 第六届字节跳动青训营报名啦 - 掘金 (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文章来源地址https://www.toymoban.com/news/detail-513358.html

🎂主修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,计网

......

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

大一下暑期计划 + 2023字节青训营预告直播优先级是:

《算法训练营》 >  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 declared
		void 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

到了这里,关于大一下暑期计划 + 2023字节青训营预告直播的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【字节跳动青训营】后端笔记整理-2 | Go实践记录:猜谜游戏,在线词典,Socks5代理服务器

    **本人是第六届字节跳动青训营(后端组)的成员。本文由博主本人整理自该营的日常学习实践,首发于稀土掘金:🔗Go实践记录:猜谜游戏,在线词典,Socks5代理服务器 | 青训营 我的go开发环境: *本地IDE:GoLand 2023.1.2 *go:1.20.6 猜数字游戏也算是入门一门编程语言必写的程

    2024年02月13日
    浏览(35)
  • 网站常见安全漏洞 | 青训营

    Powered by: NEFU AB-IN 网站常见安全漏洞-网站基本组成及漏洞定义 网站常见安全漏洞-服务端漏洞介绍 网站常见安全漏洞-客户端漏洞介绍 网站常见安全漏洞-总结及强调网络安全法 网关 在计算机网络中指的是连接两个不同网络或协议的设备或系统。它的作用是将传入的数据包从

    2024年02月10日
    浏览(24)
  • Go 语言的实战案例 | 青训营

    Powered by: NEFU AB-IN GO语言工程实践课后作业:实现思路、代码以及路径记录 在计算机编程领域,Go 语言(也称为 Golang)正逐渐成为越来越受欢迎的选择。它是一门由 Google 开发的开源编程语言,以其简洁性、高效性和强大的并发支持而闻名。Go 语言的设计目标是提供一种简单

    2024年02月11日
    浏览(34)
  • HTTP 框架修炼之道 | 青训营

    Powered by: NEFU AB-IN 走进 HTTP 协议 HTTP 框架的设计与实现 性能修炼之道与企业实践 前后端通过http通信,负责对http请求解析,根据路由选择对应逻辑 超文本 通常包括文本、图像、音频、视频等多种媒体类型,这些内容通过链接与其他相关信息相互连接。最著名的超文本系统之

    2024年02月11日
    浏览(22)
  • Go语言上手(三) | 青训营笔记

    高质量: 各种边界条件考虑完备 异常情况处理,稳定性 易读易维护 编程原则 简单性 可读性 生产力 例外:实现接口的方法不需要注释 使用 gofmt (官方工具)自动格式化 代码作用(适合公共符号) 代码如何实现 (适合注释实现过程) 代码实现的原因(适合解释代码的外部

    2023年04月23日
    浏览(22)
  • Go 语言进阶与依赖管理 | 青训营

    Powered by: NEFU AB-IN GO语言工程实践课后作业:实现思路、代码以及路径记录 Go可以充分发挥多核优势,高效运行 Goroutine 是Go语言中的 协程 ,一种 轻量级的线程 ,由Go语言的运行时管理,可以实现高并发的程序设计,由于轻量级的特性,goroutine可以创建成千上万个,而且消耗

    2024年02月11日
    浏览(30)
  • Go语言实践案例之猜谜游戏| 青训营

    目录 一、程序要实现效果: 二、思路分析: 三、具体代码 四、可能存在的疑问 1.程序首先生成一个0-100的随机整数。 2.提示玩家进行猜测。 3.每次玩家需要输入一个数字,程序将会告诉玩家输入的数字与生成的数字的大小关系,并且让玩家再次猜测。 4.如果猜对了,则会告

    2024年02月09日
    浏览(31)
  • 走进 Go 语言基础语法 | 青训营 (1)

    Powered by: NEFU AB-IN Go 语言入门指南:基础语法和常用特性解析 go.mod 这个文件里记录了当前项目里所有依赖包的 git 仓库地址以及对应的 版本号 ,来解决了包依赖管理的问题,后续在构建编译时,就会根据对应的版本号去拉取依赖包。 注意, 如果当前的项目是要给外部使用的

    2024年02月14日
    浏览(28)
  • Go 语言的实战案例 SOCKS5 代理 | 青训营

    Powered by: NEFU AB-IN GO语言工程实践课后作业:实现思路、代码以及路径记录 代理是指在计算机网络中,代理服务器充当客户端和目标服务器之间的中介。它接收来自客户端的请求,然后将请求转发给目标服务器,再将目标服务器的响应返回给客户端。 用途 : 匿名浏览 :Soc

    2024年02月10日
    浏览(30)
  • Go 语言入门指南: 环境搭建、基础语法和常用特性解析 | 青训营

    Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。 Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且

    2024年02月14日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包