diff --git "a/12-\345\201\234\350\275\246\345\234\272\351\227\250\345\217\243\347\232\204\347\224\265\345\255\220\345\261\217\345\271\225\344\277\241\346\201\257\347\263\273\347\273\237-\346\213\223\345\261\225\351\241\271\347\233\256-\347\254\254\344\272\214\345\215\225\345\205\203 \346\225\260\347\273\204\343\200\201\351\223\276\350\241\250\344\270\216\345\255\227\347\254\246\344\270\262/README.md" "b/12-\345\201\234\350\275\246\345\234\272\351\227\250\345\217\243\347\232\204\347\224\265\345\255\220\345\261\217\345\271\225\344\277\241\346\201\257\347\263\273\347\273\237-\346\213\223\345\261\225\351\241\271\347\233\256-\347\254\254\344\272\214\345\215\225\345\205\203 \346\225\260\347\273\204\343\200\201\351\223\276\350\241\250\344\270\216\345\255\227\347\254\246\344\270\262/README.md" index cf7e99fc56d3f044ebbfc14c94215c9207fff9e6..eb47549578ddc1404ba7d1ec86f0ca0102ae8e0d 100644 --- "a/12-\345\201\234\350\275\246\345\234\272\351\227\250\345\217\243\347\232\204\347\224\265\345\255\220\345\261\217\345\271\225\344\277\241\346\201\257\347\263\273\347\273\237-\346\213\223\345\261\225\351\241\271\347\233\256-\347\254\254\344\272\214\345\215\225\345\205\203 \346\225\260\347\273\204\343\200\201\351\223\276\350\241\250\344\270\216\345\255\227\347\254\246\344\270\262/README.md" +++ "b/12-\345\201\234\350\275\246\345\234\272\351\227\250\345\217\243\347\232\204\347\224\265\345\255\220\345\261\217\345\271\225\344\277\241\346\201\257\347\263\273\347\273\237-\346\213\223\345\261\225\351\241\271\347\233\256-\347\254\254\344\272\214\345\215\225\345\205\203 \346\225\260\347\273\204\343\200\201\351\223\276\350\241\250\344\270\216\345\255\227\347\254\246\344\270\262/README.md" @@ -1,32 +1,144 @@ # 12-停车场门口的电子屏幕信息系统-拓展项目-第二单元 数组、链表与字符串 ### 一、项目主题 + 随着社会经济的发展,我国家用车辆越来越多,这也加速了大型停车场的发展。现在很多停车场都有一个实用的功能,在进入停车场的门口设立电子屏幕,上面显示停 +车场的空余车位数量,以便让进人停车场的司机了解停车场中空余车位的多少。 ### 二、项目内容 - #### 1.项目背景 + 随着社会经济的发展,我国家用车辆越来越多,这也加速了大型停车场的发展。现在很多停车场都有一个实用的功能,在进入停车场的门口设立电子屏幕,上面显示停 +车场的空余车位数量,以便让进人停车场的司机了解停车场中空余车位的多少。 #### 2.项目设计依据 + 该提示功能每隔一定的时间(如15秒)会实时更新,其自动更新的实现过程如下: + (1)停车场中每个车位上都设置有感应装置,可以实时感应所在车位是否有车停驻,更新时会将所有车位的状态传输给管理系统。 + (2)管理系统根据接收到的某个时刻所有车位状态的感应信息,统计停车场中空余车位的数量。 + (3)将实时统计的结果显示在停车场门口的电子屏幕上。 +请结合以上描述,分析其中的关键数据,选择合适的数据结构,编程实现某一时刻停车场空余车位数量的统计,并输出结果。 #### 3.项目概述 + 本项目在前面学习的基础上,让学生通过对队伍移动方式规律的分析,这既有利于学生理解对事物现象进行归纳总结的重要性,又能激发学生的思维。整个项目的实施,要求学生对队伍移动方式的分析与处理过程清晰明了并设计正确的算法,使用Python语言编写程序,调试运行后得出结果,并能和其他同学进行展示交流。 ### 三、项目指导 +围绕停车场指示牌的3点要求进行分析。 ### 四、项目实施流程 +问题提出-->问题分析-->问题解决-->总结汇报 ### 五、项目实施环节安排 #### 第一阶段:项目准备阶段 +1课时 1. 确定项目主题 - - +根据项目内容,确定项目主题。 2. 项目需求分析与总体规划 +(1)明确项目实现的功能以及项目输入(即处理对象或原始数据)与输出(即处理结果)。 - +(2)确定项目在实施过程中可以分成几个阶段完成,明确每个阶段需要完成的任务。 3. 分组、分工 - +建议3~~4名学生为一组,确定一个组长作为项目负责人,统一协调组内成员各阶段的任务。项目在不同实施阶段每个组员都有不同的项目分工。 #### 第二阶段:项目的指导阶段 1. 抽象与建模 - +将停车场的车位创建为序列a,因为ai需要记录车位状态,所以具有多钟解决方案,字典或者二维数组或者类。 +遍历序列a,可以得到每个车位的状态,对状态为空的车位进行统计。 +显示结果 2. 设计算法 - +创建序列a +随机赋予序列a中元素空或不为空的状态值 +k=0 +遍历序列a + 若ai状态为空则k+1 +输出k +在此基础上,可以进行以下提升: +1、模拟车辆进出,实现动态变化,同时实时更新结果 +2、为每辆车设置id(车牌),在进出停车场时记录车牌,联动计费系统 + 2.1生成正常车牌如:浙c123456而不是123456或者001、002 3. 项目程序实现 +``` +import copy +import time +import random +import string + + +class Car: + # 所有车基类,id表示车牌,没用上,可以和车位计费系统联动,方便其他扩展 + def __init__(self,id,): + self.id = id + + +class Position: + # 车位基类,id表示车位编号,state表示车位状态0为空车位 + def __init__(self,id,state,): + self.id = id + self.state = state + + +def car_in(): + # 有车进入停车场 + p = random.choice(enable_list) + p.state = 1 + enable_list.remove(p) + disable_list.append(p) + print("有车入场停在"+str(p.id)+"号车位。") + + +def car_out(): + # 有车出停车场 + p = random.choice(disable_list) + p.state = 0 + disable_list.remove(p) + enable_list.append(p) + print(str(p.id) + "号车出场。") + + +if __name__ == '__main__': + # position_list表示车位列表,enable_list表示可用车位列表,disable_list表示不可用车位列表 + position_list = [Position(i,0) for i in range(10)] + # enable_list = copy.deepcopy(position_list) + enable_list = copy.copy(position_list) + disable_list = [] + while True: + # 模拟停车场进出状态,当停车场内有车时,该停车场内的车有1/3的几率出去 + if len(disable_list)>0: + if random.randint(0,2) == 1: + car_out() + # 停车场进车状态,当停车场内没有空余车位时,显示车位已满 + if random.randint(0,4) >0: + if len(disable_list)==10: + print("车位已满") + continue + else: + car_in() + # 结果输出 + print("车位一览: ", end='') + for i in position_list: + print(i.state,end=',') + print() + print("可用的车位号: ",end = '') + for i in enable_list: + print(i.id,end =',') + print("剩余"+str(len(enable_list))+"个。") + print("已使用的车位号: ", end='') + for i in disable_list: + print(i.id,end =',') + print('') + print('----------------------------------------') + + time.sleep(3) + + + ''' + # 车牌生成 + id_list = string.ascii_letters + string.digits # 生成大小写字母与数字的字符串,ascii_uppercase 大写字母串,ascii_lowercase小写字母串 + car_list=[] + for i in range(12): + car_id = '' + for j in range(5): + car_id = car_id + random.choice(id_list) + car_list.append(Car("浙C"+car_id)) + for i in car_list: + print(i.id) + ''' + +``` + #### 第三阶段:项目汇报阶段 ### 六、项目汇报环节安排