当前位置:   article > 正文

软件工程项目——租船系统(Python+PyQt5实现)_简单的软件工程项目

简单的软件工程项目

任务要求

请添加图片描述

  1. 用户输入S,开始租船;输入E,停止租船。
  2. 当一天结束后,统计出每条船的租借情况,打印出最短出租时间、最长出租时间等。
  3. 管理员定时向船只发送信号,若船只无法收到信号,则判断该船只已丢失。

外部支持库说明

  1. 使用PyQt5设计GUI,安装方法参考前文:PyQt5 安装教程
  2. 使用graphvizpyreverse生成UML类图,graphviz安装参考前文:python graphviz画图
    pyreverse安装:pip install pylint,类图生成命令:pyreverse -ASmy -o png a/
    注:a为存放代码的目录,使用前需将代码名称改为__init__.py,否则有以下报错
    请添加图片描述

类的设计

请添加图片描述
总体类的设计较简单,答题分为两个类,一个是GUI部分,另一个是GUI的逻辑实现部分,其中rent_1类函数用于实现租船细节,showtime_1类函数用于计算时间,transform函数用于处理船只是否丢失。

结果分析

部分运行结果如图所示:
请添加图片描述
统计结果:
请添加图片描述
有关作者信息:
请添加图片描述

报错解决

  1. python执行函数,报错TypeError: rent_1() takes 1 positional argument but 2 were given
    这个报错的意思是此函数只接收一个变量,而实际使用中传入了两个变量。这是因为我一开始在编写python类函数时,并没有在类函数参数列表中写入self,加入self即可。
    所以,在python调用类对象时,必须要在类的函数的参数列表中写入self,以表示函数本身。
  2. 关于QMessageBox.about()函数
    QMessageBox是QT里一种使用非常简单的小窗口,about函数用于填入内容,其函数原型为:
(method) about: (parent: QWidget, caption: str, text: str) -> None
  • 1

所以,除此窗口本身外,该函数只能传入两个字符串型的参数。
3. 关于QTime类的应用

self.timer.start(1000)
self.rent_time.stop()
  • 1
  • 2

开始计时,括号内单位为毫秒,表示多久更新一次

self.sum1 = temp.secsTo(rtime)
  • 1

两个QTime类之间,可以使用secsTo()函数计算时间差,精确到秒

系统分析总结

  1. 基于实用性考虑,调用数据库进行租赁信息的增删查改更为合理有效。
  2. 对于信号发射接收,可以考虑网络通讯和多线程。

全部源代码

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'rboat.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.
# 作者:L-M-Y
import numbers
import threading
from tokenize import String
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QTextEdit
from matplotlib import widgets
from PyQt5.QtCore import QDate, QTime, QDateTime, Qt
import time

# GUI模块


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(928, 826)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(280, 20, 341, 81))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.label.setFont(font)
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(70, 230, 71, 31))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.label_2.setFont(font)
        self.label_2.setObjectName("label_2")
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(70, 360, 71, 21))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.label_3.setFont(font)
        self.label_3.setObjectName("label_3")
        self.label_4 = QtWidgets.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(70, 490, 71, 21))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.label_4.setFont(font)
        self.label_4.setObjectName("label_4")
        self.label_5 = QtWidgets.QLabel(self.centralwidget)
        self.label_5.setGeometry(QtCore.QRect(70, 610, 71, 21))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.label_5.setFont(font)
        self.label_5.setObjectName("label_5")
        self.label_6 = QtWidgets.QLabel(self.centralwidget)
        self.label_6.setGeometry(QtCore.QRect(71, 135, 71, 31))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.label_6.setFont(font)
        self.label_6.setObjectName("label_6")
        self.label_7 = QtWidgets.QLabel(self.centralwidget)
        self.label_7.setGeometry(QtCore.QRect(200, 130, 151, 41))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.label_7.setFont(font)
        self.label_7.setObjectName("label_7")
        self.label_8 = QtWidgets.QLabel(self.centralwidget)
        self.label_8.setGeometry(QtCore.QRect(480, 130, 101, 41))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.label_8.setFont(font)
        self.label_8.setObjectName("label_8")
        self.label_9 = QtWidgets.QLabel(self.centralwidget)
        self.label_9.setGeometry(QtCore.QRect(700, 140, 81, 21))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.label_9.setFont(font)
        self.label_9.setObjectName("label_9")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(620, 720, 121, 51))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(13)
        self.pushButton.setFont(font)
        self.pushButton.setObjectName("pushButton")
        self.line = QtWidgets.QFrame(self.centralwidget)
        self.line.setGeometry(QtCore.QRect(0, 170, 881, 16))
        self.line.setFrameShape(QtWidgets.QFrame.HLine)
        self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line.setObjectName("line")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(230, 720, 121, 51))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(13)
        self.pushButton_2.setFont(font)
        self.pushButton_2.setObjectName("pushButton_2")
        self.textBrowser_9 = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser_9.setGeometry(QtCore.QRect(640, 80, 251, 31))
        self.textBrowser_9.setObjectName("textBrowser_9")
        self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_3.setGeometry(QtCore.QRect(480, 210, 91, 51))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.pushButton_3.setFont(font)
        self.pushButton_3.setObjectName("pushButton_3")
        self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_4.setGeometry(QtCore.QRect(690, 210, 91, 51))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        font.setBold(False)
        font.setWeight(50)
        self.pushButton_4.setFont(font)
        self.pushButton_4.setObjectName("pushButton_4")
        self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_5.setGeometry(QtCore.QRect(480, 340, 91, 51))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.pushButton_5.setFont(font)
        self.pushButton_5.setObjectName("pushButton_5")
        self.pushButton_6 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_6.setGeometry(QtCore.QRect(690, 340, 91, 51))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.pushButton_6.setFont(font)
        self.pushButton_6.setObjectName("pushButton_6")
        self.pushButton_7 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_7.setGeometry(QtCore.QRect(480, 610, 91, 51))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.pushButton_7.setFont(font)
        self.pushButton_7.setObjectName("pushButton_7")
        self.pushButton_8 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_8.setGeometry(QtCore.QRect(480, 470, 91, 51))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.pushButton_8.setFont(font)
        self.pushButton_8.setObjectName("pushButton_8")
        self.pushButton_9 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_9.setGeometry(QtCore.QRect(690, 470, 91, 51))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.pushButton_9.setFont(font)
        self.pushButton_9.setObjectName("pushButton_9")
        self.pushButton_10 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_10.setGeometry(QtCore.QRect(690, 610, 91, 51))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        self.pushButton_10.setFont(font)
        self.pushButton_10.setObjectName("pushButton_10")
        self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser.setGeometry(QtCore.QRect(210, 200, 171, 31))
        self.textBrowser.setObjectName("textBrowser")
        self.textBrowser_2 = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser_2.setGeometry(QtCore.QRect(210, 260, 171, 31))
        self.textBrowser_2.setObjectName("textBrowser_2")
        self.textBrowser_3 = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser_3.setGeometry(QtCore.QRect(210, 330, 171, 31))
        self.textBrowser_3.setObjectName("textBrowser_3")
        self.textBrowser_5 = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser_5.setGeometry(QtCore.QRect(210, 390, 171, 31))
        self.textBrowser_5.setObjectName("textBrowser_5")
        self.textBrowser_6 = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser_6.setGeometry(QtCore.QRect(210, 460, 171, 31))
        self.textBrowser_6.setObjectName("textBrowser_6")
        self.textBrowser_7 = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser_7.setGeometry(QtCore.QRect(210, 520, 171, 31))
        self.textBrowser_7.setObjectName("textBrowser_7")
        self.textBrowser_8 = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser_8.setGeometry(QtCore.QRect(210, 590, 171, 31))
        self.textBrowser_8.setObjectName("textBrowser_8")
        self.textBrowser_10 = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser_10.setGeometry(QtCore.QRect(210, 650, 171, 31))
        self.textBrowser_10.setObjectName("textBrowser_10")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 928, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label.setText(_translate(
            "MainWindow", "LMY\'S Boat Renting System"))
        self.label_2.setText(_translate("MainWindow", "boat 1"))
        self.label_3.setText(_translate("MainWindow", "boat 2"))
        self.label_4.setText(_translate("MainWindow", "boat 3"))
        self.label_5.setText(_translate("MainWindow", "boat 4"))
        self.label_6.setText(_translate("MainWindow", "ID"))
        self.label_7.setText(_translate("MainWindow", "Renting Time"))
        self.label_8.setText(_translate("MainWindow", "Renting"))
        self.label_9.setText(_translate("MainWindow", "Status"))
        self.pushButton.setText(_translate("MainWindow", "Sum"))
        self.pushButton_2.setText(_translate("MainWindow", "Author"))
        self.pushButton_3.setText(_translate("MainWindow", "S"))
        self.pushButton_4.setText(_translate("MainWindow", "Safe"))
        self.pushButton_5.setText(_translate("MainWindow", "S"))
        self.pushButton_6.setText(_translate("MainWindow", "Safe"))
        self.pushButton_7.setText(_translate("MainWindow", "S"))
        self.pushButton_8.setText(_translate("MainWindow", "S"))
        self.pushButton_9.setText(_translate("MainWindow", "Safe"))
        self.pushButton_10.setText(_translate("MainWindow", "Safe"))

# GUI逻辑功能部分


class NameController(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        global cnt
        i = 0
        self.flag_1 = "0"
        self.sum1 = 0
        self.sum2 = "0"
        self.sum3 = "0"
        self.sum4 = "0"
        self.rent = []
        self.overall_string = "Date : "
        for i in range(4):
            self.rent.append(0)
        cnt = 1
        push = 0
        super().__init__()
        self.setupUi(self)
        time = QDateTime.currentDateTime()  # 获取当前时间
        timedisplay = time.toString("yyyy-MM-dd hh:mm:ss dddd")  # 格式化时间
        rtime = QDateTime.currentDateTime()  # 获取当前时间
        rtimedisplay = rtime.toString("yyyy-MM-dd hh:mm:ss dddd")  # 格式化时间
        self.textBrowser_9.setText(timedisplay)
        self.timer = QTimer()
        self.timer.start(1000)  # 时间类开始运转,每秒更新一次
        self.rent_time = QTimer()
        self.rent_time_2 = QTimer()
        self.rent_time_3 = QTimer()
        self.rent_time_4 = QTimer()

        self.timer.timeout.connect(self.showtime)
        self.pushButton_3.clicked.connect(self.rent_1)
        self.pushButton_5.clicked.connect(self.rent_2)
        self.pushButton_8.clicked.connect(self.rent_3)
        self.pushButton_7.clicked.connect(self.rent_4)
        self.pushButton_2.clicked.connect(lambda: QMessageBox.about(
            self, "About the author", "Name: Liu MiYi\n Class: Computer Science\nDate: 2022.9.23"))

        ''' self.pushButton.clicked.connect(lambda: QMessageBox.about(
            self, "About the renting of boats", self.overall_string)) '''
        self.push_1 = 0
        self.push_2 = 0
        self.push_3 = 0
        self.push_4 = 0

        # self.end_time1 = "0"

        self.pushButton_4.clicked.connect(self.transform_1)
        self.pushButton_6.clicked.connect(self.transform_2)
        self.pushButton_9.clicked.connect(self.transform_3)
        self.pushButton_10.clicked.connect(self.transform_4)

    def transform_1(self):
        self.pushButton_4.setText("Safe")

    def transform_2(self):
        self.pushButton_6.setText("Safe")

    def transform_3(self):
        self.pushButton_9.setText("Safe")

    def transform_4(self):
        self.pushButton_10.setText("Safe")

    def rent_1(self):
        self.push_1 = self.push_1+1
        # print(self.push_1)
        self.rent_time.start(1000)
        self.rent_time.timeout.connect(self.showtime_1)
        self.pushButton_3.setText("E")
        if(self.push_1 == 1):
            rttime = QDateTime.currentDateTime()  # 获取当前时间
            global temp
            temp = rttime
            rttimedisplay = rttime.toString("yyyy-MM-dd hh:mm:ss dddd")
            rt = rttimedisplay[0:19]
            okl = int(rttimedisplay[11:13])
            # print(okl)
            if(okl < 13):
                self.overall_string = self.overall_string + \
                    rttimedisplay[5:10]+" Morning\nBoat1 Renting Time : "
            else:
                self.overall_string = self.overall_string + \
                    rttimedisplay[5:10]+" Afternoon\nBoat1 Renting Time : "
            self.textBrowser.setText(rt)
        if(self.push_1 == 2):
            self.pushButton_3.setText("S")
            self.rent_time.stop()
            self.overall_string = self.overall_string + \
                str(self.rent[0])+"seconds\nBoat1 Renting Time: "

    def showtime_1(self):
        rtime = QDateTime.currentDateTime()  # 获取当前时间
        rtimedisplay = rtime.toString("yyyy-MM-dd hh:mm:ss dddd")  # 格式化时间
        r = rtimedisplay[0:19]
        self.flag_1 = rtimedisplay[18]
        if(self.flag_1 == "5"):
            self.pushButton_4.setText("Lost")
        self.textBrowser_2.setText(r)
        self.sum1 = temp.secsTo(rtime)
        self.rent[0] = self.sum1

    def rent_2(self):
        self.push_2 = self.push_2+1
        self.rent_time_2.start(1000)
        self.rent_time_2.timeout.connect(self.showtime_2)
        self.pushButton_5.setText("E")
        if(self.push_2 == 1):
            rttime_2 = QDateTime.currentDateTime()  # 获取当前时间
            rttimedisplay_2 = rttime_2.toString("yyyy-MM-dd hh:mm:ss dddd")
            rt_2 = rttimedisplay_2[0:19]
            global temp2
            temp2 = rttime_2
            self.textBrowser_3.setText(rt_2)
        if(self.push_2 == 2):
            # self.textBrowser_2.setText(self.end_time1)
            self.pushButton_5.setText("S")
            self.rent_time_2.stop()
            self.overall_string = self.overall_string + \
                str(self.rent[1])+" seconds\n"+"Boat3 Renting Time : "
        # print(self.push_1)

    def showtime_2(self):
        rtime = QDateTime.currentDateTime()  # 获取当前时间
        rtimedisplay = rtime.toString("yyyy-MM-dd hh:mm:ss dddd")  # 格式化时间
        r = rtimedisplay[0:19]
        self.flag_2 = rtimedisplay[18]
        if(self.flag_2 == "5"):
            self.pushButton_6.setText("Lost")
        self.textBrowser_5.setText(r)
        self.sum2 = temp2.secsTo(rtime)
        self.rent[1] = self.sum2
        # print(self.rent[1])

    def rent_3(self):
        self.push_3 = self.push_3+1
        self.rent_time_3.start(1000)
        self.rent_time_3.timeout.connect(self.showtime_3)
        self.pushButton_8.setText("E")
        if(self.push_3 == 1):
            rttime_3 = QDateTime.currentDateTime()  # 获取当前时间
            rttimedisplay_3 = rttime_3.toString("yyyy-MM-dd hh:mm:ss dddd")
            global temp3
            temp3 = rttime_3
            rt_3 = rttimedisplay_3[0:19]
            self.textBrowser_6.setText(rt_3)
        if(self.push_3 == 2):
            self.pushButton_8.setText("S")
            self.rent_time_3.stop()
            self.overall_string = self.overall_string + \
                str(self.rent[2])+" seconds\n"+"Boat4 Renting Time : "

    def showtime_3(self):
        rtime = QDateTime.currentDateTime()  # 获取当前时间
        rtimedisplay = rtime.toString("yyyy-MM-dd hh:mm:ss dddd")  # 格式化时间
        r = rtimedisplay[0:19]
        self.flag_3 = rtimedisplay[18]
        self.sum3 = temp3.secsTo(rtime)
        self.rent[2] = self.sum3
        if(self.flag_3 == "5"):
            self.pushButton_9.setText("Lost")
        self.textBrowser_7.setText(r)

    def rent_4(self):
        self.push_4 = self.push_4+1
        self.rent_time_4.start(1000)
        self.rent_time_4.timeout.connect(self.showtime_4)
        self.pushButton_7.setText("E")
        if(self.push_4 == 1):
            rttime_4 = QDateTime.currentDateTime()  # 获取当前时间
            rttimedisplay_4 = rttime_4.toString("yyyy-MM-dd hh:mm:ss dddd")
            global temp4
            temp4 = rttime_4
            rt_4 = rttimedisplay_4[0:19]
            self.textBrowser_8.setText(rt_4)
        if(self.push_4 == 2):
            self.pushButton_7.setText("S")
            self.rent_time_4.stop()
            num_boats = 0
            if(self.pushButton_4.text() == "Safe"):
                num_boats = num_boats+1
            if(self.pushButton_6.text() == "Safe"):
                num_boats = num_boats+1
            if(self.pushButton_9.text() == "Safe"):
                num_boats = num_boats+1
            if(self.pushButton_10.text() == "Safe"):
                num_boats = num_boats+1

            self.overall_string = self.overall_string + \
                str(self.rent[3])+" seconds\nMax Renting Time : " + \
                str(max(self.rent))+" seconds\nMin Renting Time : " + \
                str(min(self.rent)) + \
                " seconds\n"+"The Number of Boats :" + str(num_boats)
            self.pushButton.clicked.connect(lambda: QMessageBox.about(
                self, "About the renting of boats", self.overall_string))
        # print(self.push_1)

    def showtime_4(self):
        rtime = QDateTime.currentDateTime()  # 获取当前时间
        rtimedisplay = rtime.toString("yyyy-MM-dd hh:mm:ss dddd")  # 格式化时间
        r = rtimedisplay[0:19]
        self.flag_4 = rtimedisplay[18]
        self.sum4 = temp4.secsTo(rtime)
        self.rent[3] = self.sum4
        if(self.flag_4 == "5"):
            self.pushButton_10.setText("Lost")
        self.textBrowser_10.setText(r)

    def showtime(self):
        if(cnt):
            time = QDateTime.currentDateTime()  # 获取当前时间
            timedisplay = time.toString("yyyy-MM-dd hh:mm:ss dddd")  # 格式化时间
            self.textBrowser_9.setText(timedisplay)
        else:
            self.timer.stop()


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)    # Instantiate an app
    window = NameController()       # Instantiate a window
    window.show()                   # Show window at default size
    # Run the app and do some cleanup when the app exits
    sys.exit(app.exec_())

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • 332
  • 333
  • 334
  • 335
  • 336
  • 337
  • 338
  • 339
  • 340
  • 341
  • 342
  • 343
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
  • 351
  • 352
  • 353
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • 364
  • 365
  • 366
  • 367
  • 368
  • 369
  • 370
  • 371
  • 372
  • 373
  • 374
  • 375
  • 376
  • 377
  • 378
  • 379
  • 380
  • 381
  • 382
  • 383
  • 384
  • 385
  • 386
  • 387
  • 388
  • 389
  • 390
  • 391
  • 392
  • 393
  • 394
  • 395
  • 396
  • 397
  • 398
  • 399
  • 400
  • 401
  • 402
  • 403
  • 404
  • 405
  • 406
  • 407
  • 408
  • 409
  • 410
  • 411
  • 412
  • 413
  • 414
  • 415
  • 416
  • 417
  • 418
  • 419
  • 420
  • 421
  • 422
  • 423
  • 424
  • 425
  • 426
  • 427
  • 428
  • 429
  • 430
  • 431
  • 432
  • 433
  • 434
  • 435
  • 436
  • 437
  • 438
  • 439
  • 440
  • 441
  • 442
  • 443
  • 444
  • 445
  • 446
  • 447
  • 448
  • 449
  • 450
  • 451
  • 452
  • 453
  • 454
  • 455
  • 456
  • 457
  • 458
  • 459
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/307787?site
推荐阅读
相关标签
  

闽ICP备14008679号