基于python+sqlsever+gui的学生成绩管理系统代码,要求实现登录及增删改查操作
时间: 2023-12-14 17:03:18 浏览: 124
python+SQLsever+tkinter学生宿舍管理系统
5星 · 资源好评率100%
以下是一个基于 Python + SQL Server + PyQt5 的学生成绩管理系统的代码示例,实现了登录和增删改查操作:
```python
import sys
import pyodbc
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QTableWidget, QTableWidgetItem, QMessageBox
class MainWindow(QWidget):
def __init__(self):
super().__init__()
# 连接数据库
self.conn = pyodbc.connect('DRIVER={SQL Server};SERVER=localhost;DATABASE=mydatabase;UID=myusername;PWD=mypassword')
self.cursor = self.conn.cursor()
# 设置窗口
self.setWindowTitle('学生成绩管理系统')
self.setGeometry(100, 100, 500, 500)
# 设置控件
self.label_username = QLabel('用户名:', self)
self.label_username.move(50, 50)
self.edit_username = QLineEdit(self)
self.edit_username.move(120, 50)
self.label_password = QLabel('密码:', self)
self.label_password.move(50, 100)
self.edit_password = QLineEdit(self)
self.edit_password.move(120, 100)
self.edit_password.setEchoMode(QLineEdit.Password)
self.button_login = QPushButton('登录', self)
self.button_login.move(150, 150)
self.button_login.clicked.connect(self.login)
self.table = QTableWidget(self)
self.table.setGeometry(50, 200, 400, 200)
self.table.setColumnCount(3)
self.table.setHorizontalHeaderLabels(['学号', '姓名', '成绩'])
self.button_add = QPushButton('添加', self)
self.button_add.move(50, 420)
self.button_add.clicked.connect(self.add)
self.button_delete = QPushButton('删除', self)
self.button_delete.move(150, 420)
self.button_delete.clicked.connect(self.delete)
self.button_update = QPushButton('修改', self)
self.button_update.move(250, 420)
self.button_update.clicked.connect(self.update)
self.button_query = QPushButton('查询', self)
self.button_query.move(350, 420)
self.button_query.clicked.connect(self.query)
def login(self):
# 获取用户名和密码
username = self.edit_username.text()
password = self.edit_password.text()
# 查询数据库,判断是否有该用户
self.cursor.execute("SELECT COUNT(*) FROM users WHERE username=? AND password=?", (username, password))
result = self.cursor.fetchone()
if result[0] == 1:
QMessageBox.information(self, '提示', '登录成功!')
else:
QMessageBox.warning(self, '警告', '用户名或密码错误!')
def add(self):
# 打开添加学生信息的对话框
pass
def delete(self):
# 获取选中的学生学号
selected_row = self.table.currentRow()
if selected_row == -1:
QMessageBox.warning(self, '警告', '请先选择一行!')
return
student_id = self.table.item(selected_row, 0).text()
# 在数据库中删除该学生信息
self.cursor.execute("DELETE FROM students WHERE student_id=?", (student_id,))
self.conn.commit()
# 刷新表格
self.query()
def update(self):
# 获取选中的学生学号和修改后的成绩
selected_row = self.table.currentRow()
if selected_row == -1:
QMessageBox.warning(self, '警告', '请先选择一行!')
return
student_id = self.table.item(selected_row, 0).text()
new_score, ok = QInputDialog.getInt(self, '修改成绩', '请输入新的成绩:')
if not ok:
return
# 在数据库中更新该学生信息
self.cursor.execute("UPDATE students SET score=? WHERE student_id=?", (new_score, student_id))
self.conn.commit()
# 刷新表格
self.query()
def query(self):
# 查询数据库,获取所有学生信息
self.cursor.execute("SELECT * FROM students")
results = self.cursor.fetchall()
# 在表格中显示学生信息
self.table.setRowCount(len(results))
for i, result in enumerate(results):
self.table.setItem(i, 0, QTableWidgetItem(str(result[0])))
self.table.setItem(i, 1, QTableWidgetItem(result[1]))
self.table.setItem(i, 2, QTableWidgetItem(str(result[2])))
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
上述代码中,我们使用了 pyodbc 库来连接 SQL Server 数据库,并且使用 PyQt5 库来创建 GUI 界面。在登录功能中,我们查询数据库,判断是否有该用户;在增删改查功能中,我们通过 SQL 语句来操作数据库,然后在表格中显示或修改学生信息。注意,这里的 SQL 语句只是示例,具体的 SQL 语句要根据实际情况进行修改。
阅读全文