You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

142 lines
5.2 KiB

6 months ago
'''
import sys
import pymysql
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QStandardItemModel, QStandardItem
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableView
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Personal Information")
# 创建 QTableView delete
self.table_view = QTableView(self)
self.setCentralWidget(self.table_view)
# 设置模型
self.model = QStandardItemModel(0, 7)
self.model.setHorizontalHeaderLabels(['身份证号','用户名', '性别', '用户年龄', '电话号码','户籍','密码'])
self.table_view.setModel(self.model)
# 加载数据
self.load_data()
# 使表格可编辑
self.table_view.setEditTriggers(QTableView.AllEditTriggers)
# 捕捉模型数据改变信号
self.model.itemChanged.connect(self.update_database)
#connect mysql and enquire database data
def load_data(self):
try:
connection = pymysql.connect(
host='127.0.0.1',
user='root',
password='20021220',
database='pybank'
)
cursor = connection.cursor()
cursor.execute("SELECT * FROM customer")
data = cursor.fetchall()
cursor.close()
connection.close()
for row in data:
items = [QStandardItem(str(field)) for field in row]
for item in items:
item.setTextAlignment(Qt.AlignCenter)
self.model.appendRow(items)
except Exception as e:
print(f"Error loading data: {e}")
def update_database(self, item):
row = item.row()
col = item.column()
new_value = item.text()
print(row,col,new_value)
try:
# 获取主键(第一列是主键)
primary_key = self.model.item(row, 0).text()
#map column names
columns=['cid', 'cname', 'csex', 'cage', 'cnumber', 'caddress', 'cpsw']
column_name=columns[col]
# 更新数据库
connection = pymysql.connect(
host='127.0.0.1',
user='root',
password='20021220',
database='pybank'
)
cursor = connection.cursor()
query = f"UPDATE account SET {column_name} = %s WHERE cid = %s"
cursor.execute(query, (new_value, primary_key))
connection.commit()
cursor.close()
connection.close()
print(f"Updated row {row}, column {col} with new value {new_value}")
except Exception as e:
print(f"Error updating database: {e}")
if __name__ == '__main__':
app = QApplication(sys.argv)
main_window = MainWindow()
main_window.resize(800, 600)
main_window.show()
sys.exit(app.exec_())
'''
def add_acc(self):
global user_now
try:
accid = self.generator_accid()
accbalance = self.ui.get_savings.text()
current_date = datetime.now().date()
acc_start = current_date.strftime('%Y-%m-%d')
cid = user_now
acctime = self.ui.deposit_time.currentText()
# 获取 QGroupBox 中选中的 QRadioButton
typebox = self.ui.type_box
acctype = None
for button in typebox.findChildren(QRadioButton):
if button.isChecked():
acctype = button
break
if acctype is None:
raise ValueError("未选择账户类型")
return
acc_type = acctype.text()
# 确认选择活期类型时长只能选择不定期
if acc_type == "活期" and acctime != "不定期":
raise ValueError("活期账户的时长只能选择不定期")
return
# 输出到控制台
print(accid, accbalance, acc_start, acctime, cid, acc_type)
# 将新账户信息插入数据库
try:
db = pymysql.connect(host='127.0.0.1', user='root', password='20021220', database='pybank')
cur = db.cursor()
query = "INSERT INTO account (accid, accbalance, acctime_start, accdur_time, cid, acc_type) VALUES (%s, %s, %s, %s, %s, %s)"
cur.execute(query, (accid, accbalance, acc_start, acctime, cid, acc_type))
db.commit()
db.close()
QMessageBox.information(self, "成功", "账户添加成功")
except Exception as db_error:
print(f"数据库错误: {db_error}")
QMessageBox.critical(self, "错误", "添加账户到数据库失败")
except Exception as e:
print(e)
QMessageBox.critical(self, "错误", f"发生错误: {e}")
# 将信息写入文件
try:
filename = f"{user_now}.txt"
s = f"用户于{acc_start},开通账号:{accid},存取金额为{accbalance},期限为{acctime}\n"
with open(filename, "a", encoding='UTF-8') as file:
file.write(s)
file.write("-" * 60 + "\n")
print(f"信息已写入文件: {filename}")
except Exception as file_error:
print(f"文件写入错误: {file_error}")
self.ui.get_savings.clear()