├── .gitattributes ├── doc ├── image-20200924222817671.png ├── image-20200924222906031.png ├── image-20200924222943565.png ├── image-20200924223036837.png ├── image-20200924223152231.png ├── image-20200924223255545.png ├── image-20200924223344795.png ├── image-20200924223425317.png ├── image-20200924223455210.png ├── image-20200924223658371.png ├── image-20200924223716658.png ├── image-20200925210406956.png ├── image-20200925231954757.png ├── image-20200925232648607.png ├── image-20200925235911067.png ├── image-20200925235931888.png ├── image-20200926000512641.png ├── image-20200926004446316.png ├── image-20200926145428947.png ├── image-20200926145501899.png ├── image-20200926145546695.png ├── image-20200926150036113.png └── image-20200926150106559.png ├── README.md ├── dorm.py ├── Ui_studorm.py ├── studorm.ui └── 学生宿舍管理系统.md /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /doc/image-20200924222817671.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liushiliushi/student-dorm-system/HEAD/doc/image-20200924222817671.png -------------------------------------------------------------------------------- /doc/image-20200924222906031.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liushiliushi/student-dorm-system/HEAD/doc/image-20200924222906031.png -------------------------------------------------------------------------------- /doc/image-20200924222943565.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liushiliushi/student-dorm-system/HEAD/doc/image-20200924222943565.png -------------------------------------------------------------------------------- /doc/image-20200924223036837.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liushiliushi/student-dorm-system/HEAD/doc/image-20200924223036837.png -------------------------------------------------------------------------------- /doc/image-20200924223152231.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liushiliushi/student-dorm-system/HEAD/doc/image-20200924223152231.png -------------------------------------------------------------------------------- /doc/image-20200924223255545.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liushiliushi/student-dorm-system/HEAD/doc/image-20200924223255545.png -------------------------------------------------------------------------------- /doc/image-20200924223344795.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liushiliushi/student-dorm-system/HEAD/doc/image-20200924223344795.png -------------------------------------------------------------------------------- /doc/image-20200924223425317.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liushiliushi/student-dorm-system/HEAD/doc/image-20200924223425317.png -------------------------------------------------------------------------------- /doc/image-20200924223455210.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liushiliushi/student-dorm-system/HEAD/doc/image-20200924223455210.png -------------------------------------------------------------------------------- /doc/image-20200924223658371.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liushiliushi/student-dorm-system/HEAD/doc/image-20200924223658371.png -------------------------------------------------------------------------------- /doc/image-20200924223716658.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liushiliushi/student-dorm-system/HEAD/doc/image-20200924223716658.png -------------------------------------------------------------------------------- /doc/image-20200925210406956.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liushiliushi/student-dorm-system/HEAD/doc/image-20200925210406956.png -------------------------------------------------------------------------------- /doc/image-20200925231954757.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liushiliushi/student-dorm-system/HEAD/doc/image-20200925231954757.png -------------------------------------------------------------------------------- /doc/image-20200925232648607.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liushiliushi/student-dorm-system/HEAD/doc/image-20200925232648607.png -------------------------------------------------------------------------------- /doc/image-20200925235911067.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liushiliushi/student-dorm-system/HEAD/doc/image-20200925235911067.png -------------------------------------------------------------------------------- /doc/image-20200925235931888.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liushiliushi/student-dorm-system/HEAD/doc/image-20200925235931888.png -------------------------------------------------------------------------------- /doc/image-20200926000512641.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liushiliushi/student-dorm-system/HEAD/doc/image-20200926000512641.png -------------------------------------------------------------------------------- /doc/image-20200926004446316.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liushiliushi/student-dorm-system/HEAD/doc/image-20200926004446316.png -------------------------------------------------------------------------------- /doc/image-20200926145428947.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liushiliushi/student-dorm-system/HEAD/doc/image-20200926145428947.png -------------------------------------------------------------------------------- /doc/image-20200926145501899.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liushiliushi/student-dorm-system/HEAD/doc/image-20200926145501899.png -------------------------------------------------------------------------------- /doc/image-20200926145546695.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liushiliushi/student-dorm-system/HEAD/doc/image-20200926145546695.png -------------------------------------------------------------------------------- /doc/image-20200926150036113.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liushiliushi/student-dorm-system/HEAD/doc/image-20200926150036113.png -------------------------------------------------------------------------------- /doc/image-20200926150106559.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liushiliushi/student-dorm-system/HEAD/doc/image-20200926150106559.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 学生宿舍管理系统 2 | 3 | 4 | ## 开发环境 5 | 6 | **IDE** vscode 7 | 8 | **GUI** pyqt5 9 | 10 | ## 数据库设计 11 | 12 | ![image-20200924223658371](doc/image-20200924223658371.png) 13 | 14 | 数据库中信息如下 15 | 16 | ![image-20200924223716658](doc/image-20200924223716658.png) 17 | 18 | ## 功能显示 19 | 20 | ### 查询信息 21 | 22 | 输入学号,点击`添加`按钮 23 | 24 | ![image-20200924222817671](doc/image-20200924222817671.png) 25 | 26 | ### 修改信息 27 | 28 | 修改信息,点击`修改`按钮 29 | 30 | ![image-20200924222906031](doc/image-20200924222906031.png) 31 | 32 | 再次点击`查询`按钮 33 | 34 | ![image-20200924222943565](doc/image-20200924222943565.png) 35 | 36 | 发现信息已修改,同时可以在所有学生信息中看到信息的更新 37 | 38 | ![image-20200924223036837](doc/image-20200924223036837.png) 39 | 40 | ### 删除信息 41 | 42 | 点击`删除`按钮,删除学生"油条"的信息 43 | 44 | 可以看到信息已删除 45 | 46 | ![image-20200924223152231](doc/image-20200924223152231.png) 47 | 48 | ### 添加信息 49 | 50 | 输入学生信息,点击`添加`按钮,添加一条学生信息 51 | 52 | ![image-20200924223255545](doc/image-20200924223255545.png) 53 | 54 | 可以在学生信息表中看到已添加的信息 55 | 56 | ![image-20200924223344795](doc/image-20200924223344795.png) 57 | 58 | ### 显示所有学生信息 59 | 60 | 点击`更新`按钮,可以得到所有学生的信息,以及学生的总数 61 | 62 | ![image-20200924223455210](doc/image-20200924223455210.png) 63 | 64 | ## 错误提示 65 | 66 | #### 查询学号不存在 67 | 68 | ![image-20200926145428947](doc/image-20200926145428947.png) 69 | 70 | #### 添加学生信息时输入不完整 71 | 72 | ![image-20200926145501899](doc/image-20200926145501899.png) 73 | 74 | #### 添加学生信息时学号重复 75 | 76 | ![image-20200926145546695](doc/image-20200926145546695.png) 77 | 78 | #### 未输入学号就删除信息 79 | 80 | ![image-20200926150036113](doc/image-20200926150036113.png) 81 | 82 | #### 要删除的学号不存在 83 | 84 | ![image-20200926150106559](doc/image-20200926150106559.png) 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /dorm.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import sys 3 | import io 4 | sys.stdout=io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')#改变默认输出的标准编码 5 | import pymysql 6 | from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, QMessageBox, QPushButton, QLineEdit, QLabel, QVBoxLayout, QTableWidgetItem 7 | from PyQt5 import QtCore 8 | from Ui_studorm import Ui_MainWindow 9 | import random 10 | 11 | 12 | 13 | #窗口类 14 | class MyWidget(QMainWindow, Ui_MainWindow): 15 | def __init__(self): 16 | super(MyWidget, self).__init__() 17 | self.setupUi(self) 18 | self.setWindowTitle('学生宿舍管理系统') 19 | #连接数据库 20 | self.db = pymysql.connect("localhost","root","7043834","studorm" ) 21 | self.cursor = self.db.cursor() 22 | self.tableWidget_2.setRowCount(100) 23 | def consult(self): 24 | stuID = self.lineEdit.text() 25 | if stuID == "": 26 | QMessageBox.critical(self, "错误", "请输入学号", QMessageBox.Yes | QMessageBox.No) 27 | return 28 | self.cursor.execute("SELECT * FROM student WHERE stuID = '%s';" % (stuID)) 29 | record = self.cursor.fetchone() 30 | print(record) 31 | 32 | if record == None: 33 | QMessageBox.critical(self, "错误", "该学号不存在", QMessageBox.Yes | QMessageBox.No) 34 | return 35 | 36 | #self.tableWidget.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) 37 | #self.tableWidget.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) 38 | for index in range(5): 39 | newItem = QTableWidgetItem(str(record[index])) 40 | print(record[index]) 41 | self.tableWidget.setItem(0, index, newItem) 42 | 43 | 44 | def showAll(self): 45 | self.cursor.execute("SELECT * FROM student") 46 | records = self.cursor.fetchall() 47 | recordnum = len(records) 48 | self.label_9.setText(str(recordnum)) 49 | #self.tableWidget_2.setRowCount(recordnum) 50 | #print("个数为" + self.tableWidget_2.rowCount()) 51 | #self.tableWidget_2.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) 52 | for i in range(recordnum): 53 | for index in range(5): 54 | newItem = QTableWidgetItem(str(records[i][index])) 55 | self.tableWidget_2.setItem(i, index, newItem) 56 | def delete(self): 57 | stuID = self.lineEdit.text() 58 | if stuID == "" : 59 | QMessageBox.critical(self, "错误", "请输入学号", QMessageBox.Yes | QMessageBox.No) 60 | print("错误") 61 | return 62 | self.cursor.execute("SELECT * FROM student WHERE stuID = %s;" % (stuID)) 63 | record = self.cursor.fetchone() 64 | if record == None: 65 | QMessageBox.critical(self, "错误", "该学号不存在", QMessageBox.Yes | QMessageBox.No) 66 | print("错误") 67 | return 68 | try: 69 | self.cursor.execute("DELETE FROM student WHERE stuID = '%s';" % (stuID)) 70 | self.db.commit() 71 | except: 72 | print("错误") 73 | self.db.roolback() 74 | def modify(self): 75 | print("修改") 76 | stuID = self.tableWidget.item(0,0).text() 77 | name = self.tableWidget.item(0,1).text() 78 | gender = self.tableWidget.item(0,2).text() 79 | roomNum = self.tableWidget.item(0,3).text() 80 | phoneNum = self.tableWidget.item(0,4).text() 81 | if stuID == "" or name == "" or gender == "" or roomNum == "" or phoneNum == "": 82 | print("错误") 83 | return 84 | try: 85 | self.cursor.execute("UPDATE student SET `name` = '%s', `gender`='%s', `roomNum`='%s', `phoneNum`='%s' WHERE `stuID` = '%s';" %(name, gender, roomNum, phoneNum, stuID)) 86 | self.db.commit() 87 | except: 88 | print("错误") 89 | self.db.roolback() 90 | def add(self): 91 | print("添加") 92 | stuID = self.lineEdit_2.text() 93 | name = self.lineEdit_3.text() 94 | gender = self.lineEdit_4.text() 95 | roomNum = self.lineEdit_5.text() 96 | phoneNum = self.lineEdit_6.text() 97 | if stuID == "" or name == "" or gender == "" or roomNum == "" or phoneNum == "": 98 | QMessageBox.critical(self, "错误", "请输入完整信息", QMessageBox.Yes | QMessageBox.No) 99 | print("错误") 100 | return 101 | self.cursor.execute("SELECT * FROM student WHERE stuID = %s;" % (stuID)) 102 | record = self.cursor.fetchone() 103 | if record != None: 104 | QMessageBox.critical(self, "错误", "该学号已存在", QMessageBox.Yes | QMessageBox.No) 105 | print("错误") 106 | return 107 | try: 108 | self.cursor.execute("INSERT INTO student (stuID, name, gender, roomNum, phoneNum) VALUES ('%s', '%s', '%s', '%s', '%s');" %(stuID, name, gender, roomNum, phoneNum)) 109 | self.db.commit() 110 | except: 111 | print("错误") 112 | self.db.roolback() 113 | 114 | 115 | if __name__ == '__main__': 116 | app = QApplication([]) 117 | widget = MyWidget() 118 | widget.show() 119 | sys.exit(app.exec_()) -------------------------------------------------------------------------------- /Ui_studorm.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Form implementation generated from reading ui file 'e:\资料\数据科学导论\code\studorm.ui' 4 | # 5 | # Created by: PyQt5 UI code generator 5.15.1 6 | # 7 | # WARNING: Any manual changes made to this file will be lost when pyuic5 is 8 | # run again. Do not edit this file unless you know what you are doing. 9 | 10 | 11 | from PyQt5 import QtCore, QtGui, QtWidgets 12 | 13 | 14 | class Ui_MainWindow(object): 15 | def setupUi(self, MainWindow): 16 | MainWindow.setObjectName("MainWindow") 17 | MainWindow.resize(800, 500) 18 | sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) 19 | sizePolicy.setHorizontalStretch(0) 20 | sizePolicy.setVerticalStretch(0) 21 | sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth()) 22 | MainWindow.setSizePolicy(sizePolicy) 23 | self.centralwidget = QtWidgets.QWidget(MainWindow) 24 | self.centralwidget.setObjectName("centralwidget") 25 | self.label = QtWidgets.QLabel(self.centralwidget) 26 | self.label.setGeometry(QtCore.QRect(0, 0, 800, 80)) 27 | font = QtGui.QFont() 28 | font.setFamily("方正粗黑宋简体") 29 | font.setPointSize(18) 30 | self.label.setFont(font) 31 | self.label.setStyleSheet("background-color: rgb(170, 255, 255);") 32 | self.label.setTextFormat(QtCore.Qt.AutoText) 33 | self.label.setAlignment(QtCore.Qt.AlignCenter) 34 | self.label.setObjectName("label") 35 | self.tabWidget = QtWidgets.QTabWidget(self.centralwidget) 36 | self.tabWidget.setGeometry(QtCore.QRect(0, 80, 800, 420)) 37 | self.tabWidget.setLayoutDirection(QtCore.Qt.LeftToRight) 38 | self.tabWidget.setTabPosition(QtWidgets.QTabWidget.North) 39 | self.tabWidget.setTabShape(QtWidgets.QTabWidget.Triangular) 40 | self.tabWidget.setElideMode(QtCore.Qt.ElideNone) 41 | self.tabWidget.setUsesScrollButtons(True) 42 | self.tabWidget.setDocumentMode(False) 43 | self.tabWidget.setTabsClosable(False) 44 | self.tabWidget.setObjectName("tabWidget") 45 | self.tab = QtWidgets.QWidget() 46 | self.tab.setObjectName("tab") 47 | self.widget = QtWidgets.QWidget(self.tab) 48 | self.widget.setGeometry(QtCore.QRect(210, 50, 341, 51)) 49 | self.widget.setObjectName("widget") 50 | self.horizontalLayout = QtWidgets.QHBoxLayout(self.widget) 51 | self.horizontalLayout.setContentsMargins(0, 0, 0, 0) 52 | self.horizontalLayout.setObjectName("horizontalLayout") 53 | self.label_2 = QtWidgets.QLabel(self.widget) 54 | self.label_2.setAlignment(QtCore.Qt.AlignCenter) 55 | self.label_2.setObjectName("label_2") 56 | self.horizontalLayout.addWidget(self.label_2) 57 | spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) 58 | self.horizontalLayout.addItem(spacerItem) 59 | self.lineEdit = QtWidgets.QLineEdit(self.widget) 60 | self.lineEdit.setObjectName("lineEdit") 61 | self.horizontalLayout.addWidget(self.lineEdit) 62 | self.pushButton = QtWidgets.QPushButton(self.widget) 63 | self.pushButton.setObjectName("pushButton") 64 | self.horizontalLayout.addWidget(self.pushButton) 65 | self.tableWidget = QtWidgets.QTableWidget(self.tab) 66 | self.tableWidget.setGeometry(QtCore.QRect(80, 140, 646, 68)) 67 | self.tableWidget.setRowCount(1) 68 | self.tableWidget.setObjectName("tableWidget") 69 | self.tableWidget.setColumnCount(5) 70 | item = QtWidgets.QTableWidgetItem() 71 | self.tableWidget.setHorizontalHeaderItem(0, item) 72 | item = QtWidgets.QTableWidgetItem() 73 | self.tableWidget.setHorizontalHeaderItem(1, item) 74 | item = QtWidgets.QTableWidgetItem() 75 | self.tableWidget.setHorizontalHeaderItem(2, item) 76 | item = QtWidgets.QTableWidgetItem() 77 | self.tableWidget.setHorizontalHeaderItem(3, item) 78 | item = QtWidgets.QTableWidgetItem() 79 | self.tableWidget.setHorizontalHeaderItem(4, item) 80 | self.widget_2 = QtWidgets.QWidget(self.tab) 81 | self.widget_2.setGeometry(QtCore.QRect(270, 250, 215, 50)) 82 | self.widget_2.setObjectName("widget_2") 83 | self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.widget_2) 84 | self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0) 85 | self.horizontalLayout_2.setObjectName("horizontalLayout_2") 86 | self.pushButton_2 = QtWidgets.QPushButton(self.widget_2) 87 | self.pushButton_2.setObjectName("pushButton_2") 88 | self.horizontalLayout_2.addWidget(self.pushButton_2) 89 | self.pushButton_3 = QtWidgets.QPushButton(self.widget_2) 90 | self.pushButton_3.setObjectName("pushButton_3") 91 | self.horizontalLayout_2.addWidget(self.pushButton_3) 92 | self.tabWidget.addTab(self.tab, "") 93 | self.tab_3 = QtWidgets.QWidget() 94 | self.tab_3.setObjectName("tab_3") 95 | self.widget_3 = QtWidgets.QWidget(self.tab_3) 96 | self.widget_3.setGeometry(QtCore.QRect(250, 90, 251, 211)) 97 | self.widget_3.setObjectName("widget_3") 98 | self.gridLayout = QtWidgets.QGridLayout(self.widget_3) 99 | self.gridLayout.setContentsMargins(0, 0, 0, 0) 100 | self.gridLayout.setObjectName("gridLayout") 101 | self.label_5 = QtWidgets.QLabel(self.widget_3) 102 | self.label_5.setObjectName("label_5") 103 | self.gridLayout.addWidget(self.label_5, 4, 0, 1, 1) 104 | self.label_7 = QtWidgets.QLabel(self.widget_3) 105 | self.label_7.setObjectName("label_7") 106 | self.gridLayout.addWidget(self.label_7, 8, 0, 1, 1) 107 | self.lineEdit_2 = QtWidgets.QLineEdit(self.widget_3) 108 | self.lineEdit_2.setObjectName("lineEdit_2") 109 | self.gridLayout.addWidget(self.lineEdit_2, 0, 1, 1, 1) 110 | self.label_6 = QtWidgets.QLabel(self.widget_3) 111 | self.label_6.setObjectName("label_6") 112 | self.gridLayout.addWidget(self.label_6, 6, 0, 1, 1) 113 | self.lineEdit_4 = QtWidgets.QLineEdit(self.widget_3) 114 | self.lineEdit_4.setObjectName("lineEdit_4") 115 | self.gridLayout.addWidget(self.lineEdit_4, 4, 1, 1, 1) 116 | spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) 117 | self.gridLayout.addItem(spacerItem1, 1, 1, 1, 1) 118 | self.lineEdit_5 = QtWidgets.QLineEdit(self.widget_3) 119 | self.lineEdit_5.setObjectName("lineEdit_5") 120 | self.gridLayout.addWidget(self.lineEdit_5, 6, 1, 1, 1) 121 | spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) 122 | self.gridLayout.addItem(spacerItem2, 5, 1, 1, 1) 123 | self.label_4 = QtWidgets.QLabel(self.widget_3) 124 | self.label_4.setObjectName("label_4") 125 | self.gridLayout.addWidget(self.label_4, 2, 0, 1, 1) 126 | self.label_3 = QtWidgets.QLabel(self.widget_3) 127 | self.label_3.setObjectName("label_3") 128 | self.gridLayout.addWidget(self.label_3, 0, 0, 1, 1) 129 | self.lineEdit_6 = QtWidgets.QLineEdit(self.widget_3) 130 | self.lineEdit_6.setObjectName("lineEdit_6") 131 | self.gridLayout.addWidget(self.lineEdit_6, 8, 1, 1, 1) 132 | spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) 133 | self.gridLayout.addItem(spacerItem3, 3, 1, 1, 1) 134 | self.lineEdit_3 = QtWidgets.QLineEdit(self.widget_3) 135 | self.lineEdit_3.setObjectName("lineEdit_3") 136 | self.gridLayout.addWidget(self.lineEdit_3, 2, 1, 1, 1) 137 | spacerItem4 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) 138 | self.gridLayout.addItem(spacerItem4, 7, 1, 1, 1) 139 | self.pushButton_4 = QtWidgets.QPushButton(self.tab_3) 140 | self.pushButton_4.setGeometry(QtCore.QRect(330, 330, 93, 28)) 141 | self.pushButton_4.setObjectName("pushButton_4") 142 | self.tabWidget.addTab(self.tab_3, "") 143 | self.tab_2 = QtWidgets.QWidget() 144 | self.tab_2.setObjectName("tab_2") 145 | self.tableWidget_2 = QtWidgets.QTableWidget(self.tab_2) 146 | self.tableWidget_2.setGeometry(QtCore.QRect(0, 40, 791, 461)) 147 | self.tableWidget_2.setVerticalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel) 148 | self.tableWidget_2.setHorizontalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel) 149 | self.tableWidget_2.setObjectName("tableWidget_2") 150 | self.tableWidget_2.setColumnCount(5) 151 | self.tableWidget_2.setRowCount(0) 152 | item = QtWidgets.QTableWidgetItem() 153 | self.tableWidget_2.setHorizontalHeaderItem(0, item) 154 | item = QtWidgets.QTableWidgetItem() 155 | self.tableWidget_2.setHorizontalHeaderItem(1, item) 156 | item = QtWidgets.QTableWidgetItem() 157 | self.tableWidget_2.setHorizontalHeaderItem(2, item) 158 | item = QtWidgets.QTableWidgetItem() 159 | self.tableWidget_2.setHorizontalHeaderItem(3, item) 160 | item = QtWidgets.QTableWidgetItem() 161 | self.tableWidget_2.setHorizontalHeaderItem(4, item) 162 | self.tableWidget_2.horizontalHeader().setDefaultSectionSize(157) 163 | self.label_8 = QtWidgets.QLabel(self.tab_2) 164 | self.label_8.setGeometry(QtCore.QRect(10, 10, 72, 15)) 165 | self.label_8.setObjectName("label_8") 166 | self.label_9 = QtWidgets.QLabel(self.tab_2) 167 | self.label_9.setGeometry(QtCore.QRect(90, 5, 72, 20)) 168 | self.label_9.setText("") 169 | self.label_9.setObjectName("label_9") 170 | self.pushButton_5 = QtWidgets.QPushButton(self.tab_2) 171 | self.pushButton_5.setGeometry(QtCore.QRect(690, 10, 93, 28)) 172 | self.pushButton_5.setObjectName("pushButton_5") 173 | self.tabWidget.addTab(self.tab_2, "") 174 | MainWindow.setCentralWidget(self.centralwidget) 175 | 176 | self.retranslateUi(MainWindow) 177 | self.tabWidget.setCurrentIndex(2) 178 | #self.pushButton_2.clicked.connect(MainWindow.consult) 179 | self.pushButton.clicked.connect(MainWindow.consult) 180 | self.pushButton_3.clicked.connect(MainWindow.delete) 181 | self.pushButton_2.clicked.connect(MainWindow.modify) 182 | self.pushButton_4.clicked.connect(MainWindow.add) 183 | #self.tabWidget.tabBarClicked['int'].connect(MainWindow.showAll) 184 | self.pushButton_5.clicked.connect(MainWindow.showAll) 185 | QtCore.QMetaObject.connectSlotsByName(MainWindow) 186 | 187 | def retranslateUi(self, MainWindow): 188 | _translate = QtCore.QCoreApplication.translate 189 | MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) 190 | self.label.setText(_translate("MainWindow", "学生宿舍管理系统")) 191 | self.label_2.setText(_translate("MainWindow", "学号")) 192 | self.pushButton.setText(_translate("MainWindow", "查询")) 193 | item = self.tableWidget.horizontalHeaderItem(0) 194 | item.setText(_translate("MainWindow", "学号")) 195 | item = self.tableWidget.horizontalHeaderItem(1) 196 | item.setText(_translate("MainWindow", "姓名")) 197 | item = self.tableWidget.horizontalHeaderItem(2) 198 | item.setText(_translate("MainWindow", "性别")) 199 | item = self.tableWidget.horizontalHeaderItem(3) 200 | item.setText(_translate("MainWindow", "房间号")) 201 | item = self.tableWidget.horizontalHeaderItem(4) 202 | item.setText(_translate("MainWindow", "电话")) 203 | self.pushButton_2.setText(_translate("MainWindow", "修改")) 204 | self.pushButton_3.setText(_translate("MainWindow", "删除")) 205 | self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "查询")) 206 | self.label_5.setText(_translate("MainWindow", "性别")) 207 | self.label_7.setText(_translate("MainWindow", "电话")) 208 | self.label_6.setText(_translate("MainWindow", "房间号")) 209 | self.label_4.setText(_translate("MainWindow", "姓名")) 210 | self.label_3.setText(_translate("MainWindow", "学号")) 211 | self.pushButton_4.setText(_translate("MainWindow", "添加")) 212 | self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("MainWindow", "添加")) 213 | item = self.tableWidget_2.horizontalHeaderItem(0) 214 | item.setText(_translate("MainWindow", "学号")) 215 | item = self.tableWidget_2.horizontalHeaderItem(1) 216 | item.setText(_translate("MainWindow", "姓名")) 217 | item = self.tableWidget_2.horizontalHeaderItem(2) 218 | item.setText(_translate("MainWindow", "性别")) 219 | item = self.tableWidget_2.horizontalHeaderItem(3) 220 | item.setText(_translate("MainWindow", "房间号")) 221 | item = self.tableWidget_2.horizontalHeaderItem(4) 222 | item.setText(_translate("MainWindow", "电话")) 223 | self.label_8.setText(_translate("MainWindow", "学生总数")) 224 | self.pushButton_5.setText(_translate("MainWindow", "更新")) 225 | self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "显示全部")) 226 | -------------------------------------------------------------------------------- /studorm.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWindow 4 | 5 | 6 | 7 | 0 8 | 0 9 | 800 10 | 500 11 | 12 | 13 | 14 | 15 | 0 16 | 0 17 | 18 | 19 | 20 | MainWindow 21 | 22 | 23 | 24 | 25 | 26 | 0 27 | 0 28 | 800 29 | 80 30 | 31 | 32 | 33 | 34 | 方正粗黑宋简体 35 | 18 36 | 37 | 38 | 39 | background-color: rgb(170, 255, 255); 40 | 41 | 42 | 学生宿舍管理系统 43 | 44 | 45 | Qt::AutoText 46 | 47 | 48 | Qt::AlignCenter 49 | 50 | 51 | 52 | 53 | 54 | 0 55 | 80 56 | 800 57 | 420 58 | 59 | 60 | 61 | Qt::LeftToRight 62 | 63 | 64 | QTabWidget::North 65 | 66 | 67 | QTabWidget::Triangular 68 | 69 | 70 | 2 71 | 72 | 73 | Qt::ElideNone 74 | 75 | 76 | true 77 | 78 | 79 | false 80 | 81 | 82 | false 83 | 84 | 85 | 86 | 查询 87 | 88 | 89 | 90 | 91 | 210 92 | 50 93 | 341 94 | 51 95 | 96 | 97 | 98 | 99 | 100 | 101 | 学号 102 | 103 | 104 | Qt::AlignCenter 105 | 106 | 107 | 108 | 109 | 110 | 111 | Qt::Horizontal 112 | 113 | 114 | 115 | 40 116 | 20 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 查询 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 80 137 | 140 138 | 646 139 | 68 140 | 141 | 142 | 143 | 1 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 | 270 176 | 250 177 | 215 178 | 50 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 | 250 207 | 90 208 | 251 209 | 211 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 | Qt::Vertical 244 | 245 | 246 | 247 | 20 248 | 40 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | Qt::Vertical 260 | 261 | 262 | 263 | 20 264 | 40 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 | Qt::Vertical 290 | 291 | 292 | 293 | 20 294 | 40 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | Qt::Vertical 306 | 307 | 308 | 309 | 20 310 | 40 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 330 321 | 330 322 | 93 323 | 28 324 | 325 | 326 | 327 | 添加 328 | 329 | 330 | 331 | 332 | 333 | 显示全部 334 | 335 | 336 | 337 | 338 | 0 339 | 40 340 | 791 341 | 461 342 | 343 | 344 | 345 | QAbstractItemView::ScrollPerPixel 346 | 347 | 348 | QAbstractItemView::ScrollPerPixel 349 | 350 | 351 | 157 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 | 10 383 | 10 384 | 72 385 | 15 386 | 387 | 388 | 389 | 学生总数 390 | 391 | 392 | 393 | 394 | 395 | 90 396 | 5 397 | 72 398 | 20 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 690 409 | 10 410 | 93 411 | 28 412 | 413 | 414 | 415 | 更新 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | pushButton_2 426 | clicked() 427 | MainWindow 428 | consult() 429 | 430 | 431 | 342 432 | 374 433 | 434 | 435 | 72 436 | 0 437 | 438 | 439 | 440 | 441 | pushButton 442 | clicked() 443 | MainWindow 444 | consult() 445 | 446 | 447 | 541 448 | 186 449 | 450 | 451 | 585 452 | 0 453 | 454 | 455 | 456 | 457 | pushButton_3 458 | clicked() 459 | MainWindow 460 | delete() 461 | 462 | 463 | 475 464 | 386 465 | 466 | 467 | 600 468 | 0 469 | 470 | 471 | 472 | 473 | pushButton_2 474 | clicked() 475 | MainWindow 476 | modify() 477 | 478 | 479 | 322 480 | 377 481 | 482 | 483 | 361 484 | 0 485 | 486 | 487 | 488 | 489 | pushButton_4 490 | clicked() 491 | MainWindow 492 | add() 493 | 494 | 495 | 378 496 | 450 497 | 498 | 499 | 645 500 | 0 501 | 502 | 503 | 504 | 505 | tabWidget 506 | tabBarClicked(int) 507 | MainWindow 508 | showAll() 509 | 510 | 511 | 157 512 | 90 513 | 514 | 515 | 582 516 | -13 517 | 518 | 519 | 520 | 521 | pushButton_5 522 | clicked() 523 | MainWindow 524 | showAll() 525 | 526 | 527 | 704 528 | 117 529 | 530 | 531 | 465 532 | -23 533 | 534 | 535 | 536 | 537 | 538 | consult() 539 | delete() 540 | modify() 541 | add() 542 | showAll() 543 | 544 | 545 | -------------------------------------------------------------------------------- /学生宿舍管理系统.md: -------------------------------------------------------------------------------- 1 | # 学生宿舍管理系统 2 | 3 | > 4 | > 5 | >2018211317 2018211165 李一博 第一次作业 6 | 7 | ## 开发环境 8 | 9 | **IDE** vscode 10 | 11 | **GUI** pyqt5 12 | 13 | ## 数据库设计 14 | 15 | ![image-20200924223658371](C:\Users\lalala\AppData\Roaming\Typora\typora-user-images\image-20200924223658371.png) 16 | 17 | 数据库中信息如下 18 | 19 | ![image-20200924223716658](C:\Users\lalala\AppData\Roaming\Typora\typora-user-images\image-20200924223716658.png) 20 | 21 | ## 功能显示 22 | 23 | ### 查询信息 24 | 25 | 输入学号,点击`添加`按钮 26 | 27 | ![image-20200924222817671](C:\Users\lalala\AppData\Roaming\Typora\typora-user-images\image-20200924222817671.png) 28 | 29 | ### 修改信息 30 | 31 | 修改信息,点击`修改`按钮 32 | 33 | ![image-20200924222906031](C:\Users\lalala\AppData\Roaming\Typora\typora-user-images\image-20200924222906031.png) 34 | 35 | 再次点击`查询`按钮 36 | 37 | ![image-20200924222943565](C:\Users\lalala\AppData\Roaming\Typora\typora-user-images\image-20200924222943565.png) 38 | 39 | 发现信息已修改,同时可以在所有学生信息中看到信息的更新 40 | 41 | ![image-20200924223036837](C:\Users\lalala\AppData\Roaming\Typora\typora-user-images\image-20200924223036837.png) 42 | 43 | ### 删除信息 44 | 45 | 点击`删除`按钮,删除学生"油条"的信息 46 | 47 | 可以看到信息已删除 48 | 49 | ![image-20200924223152231](C:\Users\lalala\AppData\Roaming\Typora\typora-user-images\image-20200924223152231.png) 50 | 51 | ### 添加信息 52 | 53 | 输入学生信息,点击`添加`按钮,添加一条学生信息 54 | 55 | ![image-20200924223255545](C:\Users\lalala\AppData\Roaming\Typora\typora-user-images\image-20200924223255545.png) 56 | 57 | 可以在学生信息表中看到已添加的信息 58 | 59 | ![image-20200924223344795](C:\Users\lalala\AppData\Roaming\Typora\typora-user-images\image-20200924223344795.png) 60 | 61 | ### 显示所有学生信息 62 | 63 | 点击`更新`按钮,可以得到所有学生的信息,以及学生的总数 64 | 65 | ![image-20200924223455210](C:\Users\lalala\AppData\Roaming\Typora\typora-user-images\image-20200924223455210.png) 66 | 67 | ## 错误提示 68 | 69 | #### 查询学号不存在 70 | 71 | ![image-20200926145428947](C:\Users\lalala\AppData\Roaming\Typora\typora-user-images\image-20200926145428947.png) 72 | 73 | #### 添加学生信息时输入不完整 74 | 75 | ![image-20200926145501899](C:\Users\lalala\AppData\Roaming\Typora\typora-user-images\image-20200926145501899.png) 76 | 77 | #### 添加学生信息时学号重复 78 | 79 | ![image-20200926145546695](C:\Users\lalala\AppData\Roaming\Typora\typora-user-images\image-20200926145546695.png) 80 | 81 | #### 未输入学号就删除信息 82 | 83 | ![image-20200926150036113](C:\Users\lalala\AppData\Roaming\Typora\typora-user-images\image-20200926150036113.png) 84 | 85 | #### 要删除的学号不存在 86 | 87 | ![image-20200926150106559](C:\Users\lalala\AppData\Roaming\Typora\typora-user-images\image-20200926150106559.png) 88 | 89 | ## 源代码 90 | 91 | ### dorm.py 92 | 93 | ```python 94 | # -*- coding: utf-8 -*- 95 | import sys 96 | import io 97 | sys.stdout=io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')#改变默认输出的标准编码 98 | import pymysql 99 | from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, QMessageBox, QPushButton, QLineEdit, QLabel, QVBoxLayout, QTableWidgetItem 100 | from PyQt5 import QtCore 101 | from Ui_studorm import Ui_MainWindow 102 | import random 103 | 104 | 105 | 106 | #窗口类 107 | class MyWidget(QMainWindow, Ui_MainWindow): 108 | def __init__(self): 109 | super(MyWidget, self).__init__() 110 | self.setupUi(self) 111 | self.setWindowTitle('学生宿舍管理系统') 112 | #连接数据库 113 | self.db = pymysql.connect("localhost","root","7043834","studorm" ) 114 | self.cursor = self.db.cursor() 115 | self.tableWidget_2.setRowCount(100) 116 | def consult(self): 117 | stuID = self.lineEdit.text() 118 | if stuID == "": 119 | QMessageBox.critical(self, "错误", "请输入学号", QMessageBox.Yes | QMessageBox.No) 120 | return 121 | self.cursor.execute("SELECT * FROM student WHERE stuID = '%s';" % (stuID)) 122 | record = self.cursor.fetchone() 123 | print(record) 124 | 125 | if record == None: 126 | QMessageBox.critical(self, "错误", "该学号不存在", QMessageBox.Yes | QMessageBox.No) 127 | return 128 | 129 | #self.tableWidget.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) 130 | #self.tableWidget.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) 131 | for index in range(5): 132 | newItem = QTableWidgetItem(str(record[index])) 133 | print(record[index]) 134 | self.tableWidget.setItem(0, index, newItem) 135 | 136 | 137 | def showAll(self): 138 | self.cursor.execute("SELECT * FROM student") 139 | records = self.cursor.fetchall() 140 | recordnum = len(records) 141 | self.label_9.setText(str(recordnum)) 142 | #self.tableWidget_2.setRowCount(recordnum) 143 | #print("个数为" + self.tableWidget_2.rowCount()) 144 | #self.tableWidget_2.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) 145 | for i in range(recordnum): 146 | for index in range(5): 147 | newItem = QTableWidgetItem(str(records[i][index])) 148 | self.tableWidget_2.setItem(i, index, newItem) 149 | def delete(self): 150 | stuID = self.tableWidget.item(0,0).text() 151 | if stuID == "" : 152 | QMessageBox.critical(self, "错误", "请输入学号", QMessageBox.Yes | QMessageBox.No) 153 | print("错误") 154 | return 155 | self.cursor.execute("SELECT * FROM student WHERE stuID = %s;" % (stuID)) 156 | record = self.cursor.fetchone() 157 | if record == None: 158 | QMessageBox.critical(self, "错误", "该学号不存在", QMessageBox.Yes | QMessageBox.No) 159 | print("错误") 160 | return 161 | try: 162 | self.cursor.execute("DELETE FROM student WHERE stuID = '%s';" % (stuID)) 163 | self.db.commit() 164 | except: 165 | print("错误") 166 | self.db.roolback() 167 | def modify(self): 168 | print("修改") 169 | stuID = self.tableWidget.item(0,0).text() 170 | name = self.tableWidget.item(0,1).text() 171 | gender = self.tableWidget.item(0,2).text() 172 | roomNum = self.tableWidget.item(0,3).text() 173 | phoneNum = self.tableWidget.item(0,4).text() 174 | if stuID == "" or name == "" or gender == "" or roomNum == "" or phoneNum == "": 175 | print("错误") 176 | return 177 | try: 178 | self.cursor.execute("UPDATE student SET `name` = '%s', `gender`='%s', `roomNum`='%s', `phoneNum`='%s' WHERE `stuID` = '%s';" %(name, gender, roomNum, phoneNum, stuID)) 179 | self.db.commit() 180 | except: 181 | print("错误") 182 | self.db.roolback() 183 | def add(self): 184 | print("添加") 185 | stuID = self.lineEdit_2.text() 186 | name = self.lineEdit_3.text() 187 | gender = self.lineEdit_4.text() 188 | roomNum = self.lineEdit_5.text() 189 | phoneNum = self.lineEdit_6.text() 190 | if stuID == "" or name == "" or gender == "" or roomNum == "" or phoneNum == "": 191 | QMessageBox.critical(self, "错误", "请输入完整信息", QMessageBox.Yes | QMessageBox.No) 192 | print("错误") 193 | return 194 | self.cursor.execute("SELECT * FROM student WHERE stuID = %s;" % (stuID)) 195 | record = self.cursor.fetchone() 196 | if record != None: 197 | QMessageBox.critical(self, "错误", "该学号已存在", QMessageBox.Yes | QMessageBox.No) 198 | print("错误") 199 | return 200 | try: 201 | self.cursor.execute("INSERT INTO student (stuID, name, gender, roomNum, phoneNum) VALUES ('%s', '%s', '%s', '%s', '%s');" %(stuID, name, gender, roomNum, phoneNum)) 202 | self.db.commit() 203 | except: 204 | print("错误") 205 | self.db.roolback() 206 | 207 | 208 | if __name__ == '__main__': 209 | app = QApplication([]) 210 | widget = MyWidget() 211 | widget.show() 212 | sys.exit(app.exec_()) 213 | ``` 214 | 215 | ### Ui_studorm.py 216 | 217 | ```python 218 | # -*- coding: utf-8 -*- 219 | 220 | # Form implementation generated from reading ui file 'e:\资料\数据科学导论\code\studorm.ui' 221 | # 222 | # Created by: PyQt5 UI code generator 5.15.1 223 | # 224 | # WARNING: Any manual changes made to this file will be lost when pyuic5 is 225 | # run again. Do not edit this file unless you know what you are doing. 226 | 227 | 228 | from PyQt5 import QtCore, QtGui, QtWidgets 229 | 230 | 231 | class Ui_MainWindow(object): 232 | def setupUi(self, MainWindow): 233 | MainWindow.setObjectName("MainWindow") 234 | MainWindow.resize(800, 500) 235 | sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) 236 | sizePolicy.setHorizontalStretch(0) 237 | sizePolicy.setVerticalStretch(0) 238 | sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth()) 239 | MainWindow.setSizePolicy(sizePolicy) 240 | self.centralwidget = QtWidgets.QWidget(MainWindow) 241 | self.centralwidget.setObjectName("centralwidget") 242 | self.label = QtWidgets.QLabel(self.centralwidget) 243 | self.label.setGeometry(QtCore.QRect(0, 0, 800, 80)) 244 | font = QtGui.QFont() 245 | font.setFamily("方正粗黑宋简体") 246 | font.setPointSize(18) 247 | self.label.setFont(font) 248 | self.label.setStyleSheet("background-color: rgb(170, 255, 255);") 249 | self.label.setTextFormat(QtCore.Qt.AutoText) 250 | self.label.setAlignment(QtCore.Qt.AlignCenter) 251 | self.label.setObjectName("label") 252 | self.tabWidget = QtWidgets.QTabWidget(self.centralwidget) 253 | self.tabWidget.setGeometry(QtCore.QRect(0, 80, 800, 420)) 254 | self.tabWidget.setLayoutDirection(QtCore.Qt.LeftToRight) 255 | self.tabWidget.setTabPosition(QtWidgets.QTabWidget.North) 256 | self.tabWidget.setTabShape(QtWidgets.QTabWidget.Triangular) 257 | self.tabWidget.setElideMode(QtCore.Qt.ElideNone) 258 | self.tabWidget.setUsesScrollButtons(True) 259 | self.tabWidget.setDocumentMode(False) 260 | self.tabWidget.setTabsClosable(False) 261 | self.tabWidget.setObjectName("tabWidget") 262 | self.tab = QtWidgets.QWidget() 263 | self.tab.setObjectName("tab") 264 | self.widget = QtWidgets.QWidget(self.tab) 265 | self.widget.setGeometry(QtCore.QRect(210, 50, 341, 51)) 266 | self.widget.setObjectName("widget") 267 | self.horizontalLayout = QtWidgets.QHBoxLayout(self.widget) 268 | self.horizontalLayout.setContentsMargins(0, 0, 0, 0) 269 | self.horizontalLayout.setObjectName("horizontalLayout") 270 | self.label_2 = QtWidgets.QLabel(self.widget) 271 | self.label_2.setAlignment(QtCore.Qt.AlignCenter) 272 | self.label_2.setObjectName("label_2") 273 | self.horizontalLayout.addWidget(self.label_2) 274 | spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) 275 | self.horizontalLayout.addItem(spacerItem) 276 | self.lineEdit = QtWidgets.QLineEdit(self.widget) 277 | self.lineEdit.setObjectName("lineEdit") 278 | self.horizontalLayout.addWidget(self.lineEdit) 279 | self.pushButton = QtWidgets.QPushButton(self.widget) 280 | self.pushButton.setObjectName("pushButton") 281 | self.horizontalLayout.addWidget(self.pushButton) 282 | self.tableWidget = QtWidgets.QTableWidget(self.tab) 283 | self.tableWidget.setGeometry(QtCore.QRect(80, 140, 646, 68)) 284 | self.tableWidget.setRowCount(1) 285 | self.tableWidget.setObjectName("tableWidget") 286 | self.tableWidget.setColumnCount(5) 287 | item = QtWidgets.QTableWidgetItem() 288 | self.tableWidget.setHorizontalHeaderItem(0, item) 289 | item = QtWidgets.QTableWidgetItem() 290 | self.tableWidget.setHorizontalHeaderItem(1, item) 291 | item = QtWidgets.QTableWidgetItem() 292 | self.tableWidget.setHorizontalHeaderItem(2, item) 293 | item = QtWidgets.QTableWidgetItem() 294 | self.tableWidget.setHorizontalHeaderItem(3, item) 295 | item = QtWidgets.QTableWidgetItem() 296 | self.tableWidget.setHorizontalHeaderItem(4, item) 297 | self.widget_2 = QtWidgets.QWidget(self.tab) 298 | self.widget_2.setGeometry(QtCore.QRect(270, 250, 215, 50)) 299 | self.widget_2.setObjectName("widget_2") 300 | self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.widget_2) 301 | self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0) 302 | self.horizontalLayout_2.setObjectName("horizontalLayout_2") 303 | self.pushButton_2 = QtWidgets.QPushButton(self.widget_2) 304 | self.pushButton_2.setObjectName("pushButton_2") 305 | self.horizontalLayout_2.addWidget(self.pushButton_2) 306 | self.pushButton_3 = QtWidgets.QPushButton(self.widget_2) 307 | self.pushButton_3.setObjectName("pushButton_3") 308 | self.horizontalLayout_2.addWidget(self.pushButton_3) 309 | self.tabWidget.addTab(self.tab, "") 310 | self.tab_3 = QtWidgets.QWidget() 311 | self.tab_3.setObjectName("tab_3") 312 | self.widget_3 = QtWidgets.QWidget(self.tab_3) 313 | self.widget_3.setGeometry(QtCore.QRect(250, 90, 251, 211)) 314 | self.widget_3.setObjectName("widget_3") 315 | self.gridLayout = QtWidgets.QGridLayout(self.widget_3) 316 | self.gridLayout.setContentsMargins(0, 0, 0, 0) 317 | self.gridLayout.setObjectName("gridLayout") 318 | self.label_5 = QtWidgets.QLabel(self.widget_3) 319 | self.label_5.setObjectName("label_5") 320 | self.gridLayout.addWidget(self.label_5, 4, 0, 1, 1) 321 | self.label_7 = QtWidgets.QLabel(self.widget_3) 322 | self.label_7.setObjectName("label_7") 323 | self.gridLayout.addWidget(self.label_7, 8, 0, 1, 1) 324 | self.lineEdit_2 = QtWidgets.QLineEdit(self.widget_3) 325 | self.lineEdit_2.setObjectName("lineEdit_2") 326 | self.gridLayout.addWidget(self.lineEdit_2, 0, 1, 1, 1) 327 | self.label_6 = QtWidgets.QLabel(self.widget_3) 328 | self.label_6.setObjectName("label_6") 329 | self.gridLayout.addWidget(self.label_6, 6, 0, 1, 1) 330 | self.lineEdit_4 = QtWidgets.QLineEdit(self.widget_3) 331 | self.lineEdit_4.setObjectName("lineEdit_4") 332 | self.gridLayout.addWidget(self.lineEdit_4, 4, 1, 1, 1) 333 | spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) 334 | self.gridLayout.addItem(spacerItem1, 1, 1, 1, 1) 335 | self.lineEdit_5 = QtWidgets.QLineEdit(self.widget_3) 336 | self.lineEdit_5.setObjectName("lineEdit_5") 337 | self.gridLayout.addWidget(self.lineEdit_5, 6, 1, 1, 1) 338 | spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) 339 | self.gridLayout.addItem(spacerItem2, 5, 1, 1, 1) 340 | self.label_4 = QtWidgets.QLabel(self.widget_3) 341 | self.label_4.setObjectName("label_4") 342 | self.gridLayout.addWidget(self.label_4, 2, 0, 1, 1) 343 | self.label_3 = QtWidgets.QLabel(self.widget_3) 344 | self.label_3.setObjectName("label_3") 345 | self.gridLayout.addWidget(self.label_3, 0, 0, 1, 1) 346 | self.lineEdit_6 = QtWidgets.QLineEdit(self.widget_3) 347 | self.lineEdit_6.setObjectName("lineEdit_6") 348 | self.gridLayout.addWidget(self.lineEdit_6, 8, 1, 1, 1) 349 | spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) 350 | self.gridLayout.addItem(spacerItem3, 3, 1, 1, 1) 351 | self.lineEdit_3 = QtWidgets.QLineEdit(self.widget_3) 352 | self.lineEdit_3.setObjectName("lineEdit_3") 353 | self.gridLayout.addWidget(self.lineEdit_3, 2, 1, 1, 1) 354 | spacerItem4 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) 355 | self.gridLayout.addItem(spacerItem4, 7, 1, 1, 1) 356 | self.pushButton_4 = QtWidgets.QPushButton(self.tab_3) 357 | self.pushButton_4.setGeometry(QtCore.QRect(330, 330, 93, 28)) 358 | self.pushButton_4.setObjectName("pushButton_4") 359 | self.tabWidget.addTab(self.tab_3, "") 360 | self.tab_2 = QtWidgets.QWidget() 361 | self.tab_2.setObjectName("tab_2") 362 | self.tableWidget_2 = QtWidgets.QTableWidget(self.tab_2) 363 | self.tableWidget_2.setGeometry(QtCore.QRect(0, 40, 791, 461)) 364 | self.tableWidget_2.setVerticalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel) 365 | self.tableWidget_2.setHorizontalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel) 366 | self.tableWidget_2.setObjectName("tableWidget_2") 367 | self.tableWidget_2.setColumnCount(5) 368 | self.tableWidget_2.setRowCount(0) 369 | item = QtWidgets.QTableWidgetItem() 370 | self.tableWidget_2.setHorizontalHeaderItem(0, item) 371 | item = QtWidgets.QTableWidgetItem() 372 | self.tableWidget_2.setHorizontalHeaderItem(1, item) 373 | item = QtWidgets.QTableWidgetItem() 374 | self.tableWidget_2.setHorizontalHeaderItem(2, item) 375 | item = QtWidgets.QTableWidgetItem() 376 | self.tableWidget_2.setHorizontalHeaderItem(3, item) 377 | item = QtWidgets.QTableWidgetItem() 378 | self.tableWidget_2.setHorizontalHeaderItem(4, item) 379 | self.tableWidget_2.horizontalHeader().setDefaultSectionSize(157) 380 | self.label_8 = QtWidgets.QLabel(self.tab_2) 381 | self.label_8.setGeometry(QtCore.QRect(10, 10, 72, 15)) 382 | self.label_8.setObjectName("label_8") 383 | self.label_9 = QtWidgets.QLabel(self.tab_2) 384 | self.label_9.setGeometry(QtCore.QRect(90, 5, 72, 20)) 385 | self.label_9.setText("") 386 | self.label_9.setObjectName("label_9") 387 | self.pushButton_5 = QtWidgets.QPushButton(self.tab_2) 388 | self.pushButton_5.setGeometry(QtCore.QRect(690, 10, 93, 28)) 389 | self.pushButton_5.setObjectName("pushButton_5") 390 | self.tabWidget.addTab(self.tab_2, "") 391 | MainWindow.setCentralWidget(self.centralwidget) 392 | 393 | self.retranslateUi(MainWindow) 394 | self.tabWidget.setCurrentIndex(2) 395 | #self.pushButton_2.clicked.connect(MainWindow.consult) 396 | self.pushButton.clicked.connect(MainWindow.consult) 397 | self.pushButton_3.clicked.connect(MainWindow.delete) 398 | self.pushButton_2.clicked.connect(MainWindow.modify) 399 | self.pushButton_4.clicked.connect(MainWindow.add) 400 | #self.tabWidget.tabBarClicked['int'].connect(MainWindow.showAll) 401 | self.pushButton_5.clicked.connect(MainWindow.showAll) 402 | QtCore.QMetaObject.connectSlotsByName(MainWindow) 403 | 404 | def retranslateUi(self, MainWindow): 405 | _translate = QtCore.QCoreApplication.translate 406 | MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) 407 | self.label.setText(_translate("MainWindow", "学生宿舍管理系统")) 408 | self.label_2.setText(_translate("MainWindow", "学号")) 409 | self.pushButton.setText(_translate("MainWindow", "查询")) 410 | item = self.tableWidget.horizontalHeaderItem(0) 411 | item.setText(_translate("MainWindow", "学号")) 412 | item = self.tableWidget.horizontalHeaderItem(1) 413 | item.setText(_translate("MainWindow", "姓名")) 414 | item = self.tableWidget.horizontalHeaderItem(2) 415 | item.setText(_translate("MainWindow", "性别")) 416 | item = self.tableWidget.horizontalHeaderItem(3) 417 | item.setText(_translate("MainWindow", "房间号")) 418 | item = self.tableWidget.horizontalHeaderItem(4) 419 | item.setText(_translate("MainWindow", "电话")) 420 | self.pushButton_2.setText(_translate("MainWindow", "修改")) 421 | self.pushButton_3.setText(_translate("MainWindow", "删除")) 422 | self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "查询")) 423 | self.label_5.setText(_translate("MainWindow", "性别")) 424 | self.label_7.setText(_translate("MainWindow", "电话")) 425 | self.label_6.setText(_translate("MainWindow", "房间号")) 426 | self.label_4.setText(_translate("MainWindow", "姓名")) 427 | self.label_3.setText(_translate("MainWindow", "学号")) 428 | self.pushButton_4.setText(_translate("MainWindow", "添加")) 429 | self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("MainWindow", "添加")) 430 | item = self.tableWidget_2.horizontalHeaderItem(0) 431 | item.setText(_translate("MainWindow", "学号")) 432 | item = self.tableWidget_2.horizontalHeaderItem(1) 433 | item.setText(_translate("MainWindow", "姓名")) 434 | item = self.tableWidget_2.horizontalHeaderItem(2) 435 | item.setText(_translate("MainWindow", "性别")) 436 | item = self.tableWidget_2.horizontalHeaderItem(3) 437 | item.setText(_translate("MainWindow", "房间号")) 438 | item = self.tableWidget_2.horizontalHeaderItem(4) 439 | item.setText(_translate("MainWindow", "电话")) 440 | self.label_8.setText(_translate("MainWindow", "学生总数")) 441 | self.pushButton_5.setText(_translate("MainWindow", "更新")) 442 | self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "显示全部")) 443 | 444 | ``` 445 | 446 | --------------------------------------------------------------------------------