class="article_content clearfix">
class="markdown_views prism-atom-one-dark">
题干描述:
- 某停车场,分 3 层,每层 100 车位
- 每个车位可以监控车辆的停入和离开
- 车辆进入前,显示每层的空余车位数量
- 车辆进入时,摄像头可识别车牌号和时间
- 车辆出来时,出口显示器显示车牌号和停车时长
绘制class="tags" href="/tags/UML.html" title=UML>UML的官网地址;class="tags" href="/tags/UML.html" title=UML>UML类如下:
实现代码如下:
class="prism language-javascript">class="token comment">/**
题干描述:
- 某停车场,分 3 层,每层 100 车位
- 每个车位可以监控车辆的停入和离开
- 车辆进入前,显示每层的空余车位数量
- 车辆进入时,摄像头可识别车牌号和时间
- 车辆出来时,出口显示器显示车牌号和停车时长
*/
class="token comment">// 车
class="token keyword">class class="token class-name">Car class="token punctuation">{
class="token function">constructorclass="token punctuation">(numclass="token punctuation">) class="token punctuation">{
class="token keyword">thisclass="token punctuation">.num class="token operator">= numclass="token punctuation">;
class="token punctuation">}
class="token punctuation">}
class="token comment">// 摄像头
class="token keyword">class class="token class-name">Camera class="token punctuation">{
class="token function">shotclass="token punctuation">(carclass="token punctuation">) class="token punctuation">{
class="token keyword">return class="token punctuation">{
numclass="token punctuation">: carclass="token punctuation">.numclass="token punctuation">,
inTimeclass="token punctuation">: Dateclass="token punctuation">.class="token function">nowclass="token punctuation">(class="token punctuation">)
class="token punctuation">}
class="token punctuation">}
class="token punctuation">}
class="token comment">// 出口显示屏幕
class="token keyword">class class="token class-name">Screen class="token punctuation">{
class="token function">show class="token punctuation">(carclass="token punctuation">, inTimeclass="token punctuation">) class="token punctuation">{
consoleclass="token punctuation">.class="token function">logclass="token punctuation">(class="token string">"车牌号"class="token punctuation">, carclass="token punctuation">.numclass="token punctuation">)class="token punctuation">;
consoleclass="token punctuation">.class="token function">logclass="token punctuation">(class="token string">"停车时间"class="token punctuation">, Dateclass="token punctuation">.class="token function">nowclass="token punctuation">(class="token punctuation">) class="token operator">- inTimeclass="token punctuation">)class="token punctuation">;
class="token punctuation">}
class="token punctuation">}
class="token comment">// 停车场
class="token keyword">class class="token class-name">Park class="token punctuation">{
class="token function">constructor class="token punctuation">(floorsclass="token punctuation">)class="token punctuation">{
class="token keyword">thisclass="token punctuation">.floors class="token operator">= floorsclass="token punctuation">; class="token comment">// 停车场的层数
class="token keyword">thisclass="token punctuation">.carList class="token operator">= class="token punctuation">{class="token punctuation">}class="token punctuation">; class="token comment">// 存储摄像头拍摄返回的车辆信息
class="token keyword">thisclass="token punctuation">.camera class="token operator">= class="token keyword">new class="token class-name">Cameraclass="token punctuation">(class="token punctuation">)class="token punctuation">; class="token comment">// 摄像头
class="token keyword">thisclass="token punctuation">.screen class="token operator">= class="token keyword">new class="token class-name">Screenclass="token punctuation">(class="token punctuation">)class="token punctuation">;
class="token punctuation">}
class="token comment">// 驶入
class="token keyword">inclass="token punctuation">(carclass="token punctuation">) class="token punctuation">{
class="token comment">// 通过摄像头获取car的信息
class="token keyword">const info class="token operator">= class="token keyword">thisclass="token punctuation">.cameraclass="token punctuation">.class="token function">shotclass="token punctuation">(carclass="token punctuation">)class="token punctuation">;
class="token keyword">const i class="token operator">= class="token function">parseIntclass="token punctuation">(Mathclass="token punctuation">.class="token function">randomclass="token punctuation">(class="token punctuation">) class="token operator">* class="token number">100 class="token operator">% class="token number">100class="token punctuation">)class="token punctuation">; class="token comment">// 获取一个随机数
class="token keyword">const place class="token operator">= class="token keyword">thisclass="token punctuation">.floorsclass="token punctuation">[class="token number">0class="token punctuation">]class="token punctuation">.placesclass="token punctuation">[iclass="token punctuation">]class="token punctuation">; class="token comment">// 直接先写入停在第一层
placeclass="token punctuation">.class="token keyword">inclass="token punctuation">(class="token punctuation">)class="token punctuation">; class="token comment">// 车辆停入
infoclass="token punctuation">.place class="token operator">= placeclass="token punctuation">; class="token comment">// 该车辆对象添加个停入的位置信息
class="token comment">// 记录信息
class="token keyword">thisclass="token punctuation">.carListclass="token punctuation">[carclass="token punctuation">.numclass="token punctuation">] class="token operator">= infoclass="token punctuation">;
class="token punctuation">}
class="token comment">// 驶离
class="token function">outclass="token punctuation">(carclass="token punctuation">) class="token punctuation">{
class="token comment">// 获取信息
class="token keyword">const info class="token operator">= class="token keyword">thisclass="token punctuation">.carListclass="token punctuation">[carclass="token punctuation">.numclass="token punctuation">]class="token punctuation">;
class="token comment">// 将停车位清空
class="token keyword">const place class="token operator">= infoclass="token punctuation">.placeclass="token punctuation">;
placeclass="token punctuation">.class="token function">outclass="token punctuation">(class="token punctuation">)class="token punctuation">;
class="token comment">// 显示时间
class="token keyword">thisclass="token punctuation">.screenclass="token punctuation">.class="token function">showclass="token punctuation">(carclass="token punctuation">, infoclass="token punctuation">.inTimeclass="token punctuation">)class="token punctuation">;
class="token keyword">delete class="token keyword">thisclass="token punctuation">.carListclass="token punctuation">[carclass="token punctuation">.numclass="token punctuation">]class="token punctuation">;
class="token punctuation">}
class="token function">emptyNumclass="token punctuation">(class="token punctuation">) class="token punctuation">{
class="token keyword">return class="token keyword">thisclass="token punctuation">.floorsclass="token punctuation">.class="token function">mapclass="token punctuation">(floor class="token operator">=> class="token punctuation">{
class="token keyword">return class="token template-string">class="token string">`class="token interpolation">class="token interpolation-punctuation punctuation">${floorclass="token punctuation">.indexclass="token interpolation-punctuation punctuation">}class="token string"> 层还有class="token interpolation">class="token interpolation-punctuation punctuation">${floorclass="token punctuation">.class="token function">emptyPlaceNumclass="token punctuation">(class="token punctuation">)class="token interpolation-punctuation punctuation">}class="token string">`
class="token punctuation">}class="token punctuation">)class="token punctuation">.class="token function">joinclass="token punctuation">(class="token string">'\n'class="token punctuation">)class="token punctuation">;
class="token punctuation">}
class="token punctuation">}
class="token comment">// 层
class="token keyword">class class="token class-name">Floorclass="token punctuation">{
class="token function">constructorclass="token punctuation">(indexclass="token punctuation">, placesclass="token punctuation">) class="token punctuation">{
class="token keyword">thisclass="token punctuation">.index class="token operator">= indexclass="token punctuation">;
class="token keyword">thisclass="token punctuation">.places class="token operator">= places class="token operator">|| class="token punctuation">[class="token punctuation">]class="token punctuation">;
class="token punctuation">}
class="token comment">// 空余的车位
class="token function">emptyPlaceNumclass="token punctuation">(class="token punctuation">) class="token punctuation">{
class="token keyword">let num class="token operator">= class="token number">0class="token punctuation">;
class="token keyword">thisclass="token punctuation">.placesclass="token punctuation">.class="token function">forEachclass="token punctuation">(p class="token operator">=> class="token punctuation">{
class="token keyword">ifclass="token punctuation">(pclass="token punctuation">.emptyclass="token punctuation">) class="token punctuation">{
num class="token operator">= num class="token operator">+ class="token number">1class="token punctuation">;
class="token punctuation">}
class="token punctuation">}class="token punctuation">)class="token punctuation">;
class="token keyword">return numclass="token punctuation">;
class="token punctuation">}
class="token punctuation">}
class="token comment">// 停车位
class="token keyword">class class="token class-name">Place class="token punctuation">{
class="token function">constructorclass="token punctuation">(class="token punctuation">) class="token punctuation">{
class="token keyword">thisclass="token punctuation">.empty class="token operator">= class="token boolean">trueclass="token punctuation">;
class="token punctuation">}
class="token keyword">inclass="token punctuation">(class="token punctuation">) class="token punctuation">{
class="token keyword">thisclass="token punctuation">.empty class="token operator">= class="token boolean">falseclass="token punctuation">;
class="token punctuation">}
class="token function">outclass="token punctuation">(class="token punctuation">) class="token punctuation">{
class="token keyword">thisclass="token punctuation">.empty class="token operator">= class="token boolean">trueclass="token punctuation">;
class="token punctuation">}
class="token punctuation">}
class="token comment">// 测试
class="token comment">// 初始化停车场
class="token keyword">const floors class="token operator">= class="token punctuation">[class="token punctuation">]class="token punctuation">;
class="token keyword">forclass="token punctuation">(class="token keyword">let i class="token operator">= class="token number">0class="token punctuation">; i class="token operator">< class="token number">3class="token punctuation">; iclass="token operator">++class="token punctuation">) class="token punctuation">{
class="token keyword">const places class="token operator">= class="token punctuation">[class="token punctuation">]class="token punctuation">;
class="token keyword">forclass="token punctuation">(class="token keyword">let j class="token operator">= class="token number">0class="token punctuation">; j class="token operator">< class="token number">100class="token punctuation">; jclass="token operator">++class="token punctuation">) class="token punctuation">{
placesclass="token punctuation">[jclass="token punctuation">] class="token operator">= class="token keyword">new class="token class-name">Placeclass="token punctuation">(class="token punctuation">)class="token punctuation">;
class="token punctuation">}
floorsclass="token punctuation">[iclass="token punctuation">] class="token operator">= class="token keyword">new class="token class-name">Floorclass="token punctuation">(i class="token operator">+ class="token number">1class="token punctuation">, placesclass="token punctuation">)class="token punctuation">;
class="token punctuation">}
class="token keyword">const park class="token operator">= class="token keyword">new class="token class-name">Parkclass="token punctuation">(floorsclass="token punctuation">)class="token punctuation">;
class="token comment">// 初始化车辆
class="token keyword">const car1 class="token operator">= class="token keyword">new class="token class-name">Carclass="token punctuation">(class="token number">100class="token punctuation">)class="token punctuation">;
class="token keyword">const car2 class="token operator">= class="token keyword">new class="token class-name">Carclass="token punctuation">(class="token number">200class="token punctuation">)class="token punctuation">;
consoleclass="token punctuation">.class="token function">logclass="token punctuation">(class="token string">"第一辆车进入"class="token punctuation">)class="token punctuation">;
parkclass="token punctuation">.class="token keyword">inclass="token punctuation">(car1class="token punctuation">)
consoleclass="token punctuation">.class="token function">logclass="token punctuation">(parkclass="token punctuation">.class="token function">emptyNumclass="token punctuation">(class="token punctuation">)class="token punctuation">)class="token punctuation">;
consoleclass="token punctuation">.class="token function">logclass="token punctuation">(class="token string">"第二辆车进入"class="token punctuation">)class="token punctuation">;
parkclass="token punctuation">.class="token keyword">inclass="token punctuation">(car2class="token punctuation">)
consoleclass="token punctuation">.class="token function">logclass="token punctuation">(parkclass="token punctuation">.class="token function">emptyNumclass="token punctuation">(class="token punctuation">)class="token punctuation">)class="token punctuation">;
consoleclass="token punctuation">.class="token function">logclass="token punctuation">(class="token string">"第一辆车出去"class="token punctuation">)class="token punctuation">;
parkclass="token punctuation">.class="token function">outclass="token punctuation">(car1class="token punctuation">)class="token punctuation">;
consoleclass="token punctuation">.class="token function">logclass="token punctuation">(parkclass="token punctuation">.class="token function">emptyNumclass="token punctuation">(class="token punctuation">)class="token punctuation">)class="token punctuation">;
consoleclass="token punctuation">.class="token function">logclass="token punctuation">(class="token string">"第二辆车出去"class="token punctuation">)class="token punctuation">;
parkclass="token punctuation">.class="token function">outclass="token punctuation">(car2class="token punctuation">)class="token punctuation">;
consoleclass="token punctuation">.class="token function">logclass="token punctuation">(parkclass="token punctuation">.class="token function">emptyNumclass="token punctuation">(class="token punctuation">)class="token punctuation">)class="token punctuation">;