大二暑期第二周每周总结

这周完成了数据结构的小学期,开始了数据库的小学期。数据结构我写的是渡船管理模拟系统。主要的操作就是利用文件和队列将准备上船的车进行排序然后保存到文件里。题目如下:

题目3渡船管理模拟

渡口的每条渡轮一次能装载6辆汽车过江,车辆分为客车、鲜货车和普通货车3类,渡船管理规定;①同类汽车先到的先上船;②上船的优先级为:客车优先于鲜货车、鲜货车优先于普通货车;③每上3辆客车才允许上2辆鲜货车,然后再允许上1辆货车。若等待的客车不足3辆时,用鲜货车填补,当等待的鲜货车不足2辆时,按用普通货车填补;当没有普通货车等待时,按客车优先于鲜货车的原则填补;当装满6辆后则自动开船;⑤1个小时为1个周期,若周期结束仍不满载则应人为控制开船。

设计要求:

(1) 模拟各类车辆到大渡口的情况;

(2) 模拟渡船开船的情况。

(3) 提供文件保存各类模拟数据,并提供基于文件的多种查询。

代码如下

class Car:
    def __init__(self, id, type):
        self.id = id
        self.type = type


class Ship:
    def __init__(self):
        self.cars = []

    def add(self, car):
        self.cars.append(car)

    def print(self):
        for car in self.cars:
            print(f"车辆 - 车牌号: {car.id}, 类型: {car.type}")

    def save(self, filename):
        with open(filename, 'w') as file:
            for car in self.cars:
                file.write(f"车辆 - 车牌号: {car.id}, 类型: {car.type}\n")

    def load(self, filename):
        self.cars = []
        with open(filename, 'r') as file:
            lines = file.readlines()
            for line in lines:
                line = line.strip()
                if line.startswith("车辆 - 车牌号"):
                    parts = line.split(": ")
                    id = parts[1].split(",")[0]
                    type = parts[1].split(",")[1].split(": ")[1]
                    car = Car(id, type)
                    self.add(car)

    def px(self):
        self.cars.sort(key=lambda x: (x.type != '客车', x.type != '鲜货车'))


def main():
    ship = Ship()
    filename = "aaa.txt"
    # 从文件中加载已保存的车辆数量
    with open(filename, 'r') as file:
        lines = file.readlines()
        saved_cars_count = sum(1 for line in lines if line.startswith("车辆 - 车牌号"))

    while True:
        print("渡船管理模拟")
        print("1. 上船车辆登记")
        print("2. 查看车辆上船顺序")
        print("3. 手动开船")
        print("0. 退出")
        choice = input("请输入您的选择:")

        if choice == '1':
            if len(ship.cars) >= 6:
                print("渡船已满载。无法再添加更多车辆。")
                continue
            id = input("请输入车辆的车牌号:")
            type = input("请输入车辆的类型(客车/鲜货车/普通货车):")
            car = Car(id, type)
            ship.add(car)
            saved_cars_count += 1  # 更新已保存的车辆数量
            ship.px()  # 按优先顺序重新排序车辆
            ship.save(filename)  # 将车辆信息保存到文件
            print(f"车辆信息已保存到文件:{filename}")
        elif choice == '2':
            # 打开文件
            file = open("aaa.txt", "r")
            # 读取文件内容
            data = file.read()
            if data == '':
                print("当前没有车辆上船")
            # 关闭文件
            file.close()
            # 打印数据
            print(data)

        elif choice == '3':
            # 如果已保存的车辆数量达到6组,则自动开船
            if saved_cars_count >= 6:
                print("渡船已满载。开始航行。")
                break
            else:
                print("渡船尚未满载。无法开船。")
                kc = input("现在就想开船吗?Y/N")
                if kc == 'Y':
                    print("渡船驶离港口。")
                elif kc == 'N':
                    print("渡船未满载,请等待更多车辆上船后再出发。")
        elif choice == '0':
            break
        else:
            print("无效的选择。请重新输入。")

if __name__ == '__main__':
    main()

数据库的小学期做了一个电商品牌管理系统,我练习了Java Web技术、Mapper、Maven和MyBatis进行数据库连接,同时采用了JSP、HTML、Vue和CSS进行前端开发。在实施过程中,我使用Java Web技术作为后端开发框架,结合Mapper和MyBatis的使用,使得数据库的连接和操作更加方便和简洁。HTML、Vue和CSS的使用提供了良好的用户界面设计体验,增强了系统的交互性和可视化效果。这些体会令我很震惊很有收获。品牌管理系统涉及到对商品品牌的增删改查操作,因此数据库的设计和管理至关重要。这里通过使用MyBatis编写Mapper接口和XML映射文件实现对数据库的操作。MyBatis可以取代传统的JDBC的连接数据库的方式。通过开发该品牌管理系统,我学到了许多关于数据库设计和优化等方面的知识和技能。总的来说,通过设计和开发某电商平台的品牌管理系统,我综合运用了Javaweb、Mapper、Maven、MyBatis、JSP、HTML、Vue和CSS等技术,实践了软件工程的项目开发流程,并从中收获了宝贵的经验和技能。我相信这些经验将对我未来的学习带来积极的影响。

posted @ 2023-07-02 09:40  十乂  阅读(37)  评论(0)    收藏  举报