栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

停车场系统封装代码(全)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

停车场系统封装代码(全)

停车场系统封装代码(全) 1、database基类
import pymysql


# 数据库基本操作封装
class Database:
    def __init__(self, password, db, host="localhost", port=3306, user="root"):
        self.conn = self.get_conn(host, port, user, password, db)  # 连接对象
        self.cursor = self.get_cursor()  # 游标对象

    def get_conn(self, host, port, user, password, db):
        """
        获取连接对象
        :param host:
        :param port:
        :param user:
        :param password: 数据库连接密码
        :param db:
        :return:
        """
        conn = pymysql.connect(host=host, port=port, user=user, passwd=password, db=db)
        return conn

    def get_cursor(self):
        """
        获取游标对象
        :return: 游标对象
        """
        cursor = self.conn.cursor()
        return cursor

    def select_all(self, sql):
        """
        查询全部
        :param sql:查询语句
        :return: [{},{}]
        """
        self.cursor.execute(sql)
        return self.cursor.fetchall()

    def select_one(self, sql):
        """
        查询一个
        :param sql: 查询语句
        :return: {}
        """
        self.cursor.execute(sql)
        return self.cursor.fetchone()  # 获取单条数据

    def commit_data(self, sql):
        """
        提交数据,用于增删改查
        :param sql:
        :return:
        """
        self.cursor.execute(sql)
        self.conn.commit()
        print("表连接对象,提交成功")

    def __del__(self):
        self.cursor.close()
        self.conn.close()

2、进一步封装操作
from Database import *
import time
from datetime import datetime


class DataProcess(Database):
    def __init__(self, password, db, host="localhost", port=3306, user="root"):
        super().__init__(password, db, host, port, user)  # 将参数传给父类

    def create_usr_table(self):
        """
        创建用户表
        :return:
        """
        # self.cursor.execute(DROp TABLE IF EXISTS usr_table)

        sql = """
        CREATE TABLE if not exists usr_table(
                    usr_id int(6) NOT NULL AUTO_INCREMENT,
                    usr_phone varchar(12) NOT NULL,
                    car_num varchar(9) NOT NULL,
                    usr_state varchar(2) NOT NULL,
                    primary key(usr_id)
                )ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
        """
        self.cursor.execute(sql)

    def create_inout_table(self):
        """
        创建进出表
        :return:
        """
        # self.cursor.execute(DROP TABLE IF EXISTS in_out)
        sql = """
        CREATE TABLE if not exists in_out(
                    running_id int(6) NOT NULL AUTO_INCREMENT,
                    car_num varchar(9) NOT NULL,
                    in_time varchar(20) NOT NULL,
                    out_time varchar(20) NOT NULL,
                    car_state varchar(2) NOT NULL,
                    primary key(running_id)
                )ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
        """
        self.cursor.execute(sql)

    def insert_usr_table(self, usr_phone, car_num):
        """
        将数据插入用户表
        :param usr_phone: 用户手机号
        :param car_num: 用户车牌号
        :return:
        """
        # data = [("157xxxx3029", "赣AMxxxx", "1")]  ##数据格式
        in_data = [(usr_phone, car_num, "1")]
        self.cursor.executemany("insert into usr_table(usr_phone, car_num, usr_state) values (%s, %s, %s)", in_data)
        self.conn.commit()

    def insert_intime(self, car_num):
        """
        用户进入停车场
        :param car_num: 车牌号
        :return:
        """
        # data = [("赣AM9xx2", "2021-8-30 22:50", "2021-8-31 22:50", "1")]  ##数据格式
        cur_time = time.strftime("%Y-%m-%d %H:%M", time.localtime())
        cur_time = "".join('%s' % id for id in cur_time)
        in_data = [(car_num, cur_time, "", 1)]
        self.cursor.executemany("insert into in_out(car_num, in_time, out_time, car_state) values (%s, %s, %s, %s)",
                                in_data)
        self.conn.commit()

    def insert_outtime(self, car_num):
        """
        用户出停车场
        :param car_num: 车牌号
        :return:
        """
        cur_time = time.strftime("%Y-%m-%d %H:%M", time.localtime())
        cur_time = "".join('%s' % id for id in cur_time)  # 获取当前时间
        sql = "update in_out set out_time = '%s' where car_num= '%s' and out_time = '' and car_state = '1'" % (
            cur_time, car_num)
        self.commit_data(sql)

    def check_inout_car(self):
        """
        查看所有没缴费的车辆
        :return:
        """
        sql = "select * from in_out where car_state = '1'"
        print(self.select_all(sql))

    def get_parking_time(self, car_num):
        """
        停车时长
        :return:停车的时间长度
        """
        sql = "select in_time,out_time from in_out where car_num= '%s' and car_state = '1'" % car_num
        result = self.select_one(sql)
        print(result)
        d1 = datetime.strptime(result[0], "%Y-%m-%d %H:%M")
        d2 = datetime.strptime(result[1], "%Y-%m-%d %H:%M")

        time = (d2 - d1).days * 24 * 60 + (d2 - d1).seconds / 60
        # print(d2 - d1)
        # print((d2 - d1).days, (d2 - d1).seconds)
        # print(int(time))
        return int(time)

    def pay_already(self, car_num):
        """
        缴费成功,则将该条信息设置为0
        :param car_num:
        :return:
        """
        sql = "update in_out set car_state = '0' where car_num= '%s' " % (car_num)
        self.commit_data(sql)


# if __name__ == "__main__":
#     database = DataProcess("root", "parking_lot")
#     database.create_usr_table()
#     database.create_inout_table()
#     # database.insert_usr_table("157xxxx4324", "赣AM9xx2")
#     # database.insert_intime("赣AM9xx2")
#     database.insert_outtime("赣AM9xx2")
#     print(database.get_parking_time("赣AM9xx2"))
#     database.pay_already("赣AM9xx2")
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/290841.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号