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.

192 lines
7.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

from tkinter import *
import pymysql
# 创建连接数据库interne的对象conn
conn = pymysql.connect(
host='127.0.0.1', # 数据库主机名
port=3310, # 数据库端口号
user='root', # 数据库用户名
password='123456', # 数据库密码
autocommit=True # 设置修改数据无需确认
)
# 获取游标对象
sort_interne = int(0)
sort_data = int(0)
cursor = conn.cursor()
# 创建数据库,若有则不创建
cursor.execute("create database if not exists interne;")
conn.select_db("interne") # 建立与数据库的连接
# 创建实习生信息表, 若有则不创建
cursor.execute("""CREATE TABLE IF NOT EXISTS internes(
id int,
name varchar(10),
department varchar(10),
sex varchar(10),
wages int,
hiredata varchar(20)
);""")
# 创建账号密码表,若有则不创建
cursor.execute("""CREATE TABLE IF NOT EXISTS admin_name_pwd(
name varchar(10),
pwd varchar(10)
);""")
# 判断登录的账号密码是否都正确
def check_login(uname, pwd):
cursor.execute("select * from admin_name_pwd")
results = cursor.fetchall()
# print(results)
for na, pd in results:
if na == uname and pd == pwd:
return True, '登录成功'
return False, '登录失败,账号或密码错误'
# 添加正确注册的账号以及密码
def add_admin_name_pwd(uname, pwd):
cursor.execute("insert into admin_name_pwd values('{0}', '{1}');".format(uname, pwd))
# add_admin_name_pwd("123", "123")
# 检验注册的账号名称是否已经存在
def check_usname(uname):
cursor.execute("select count(*) from admin_name_pwd anp where name = '{0}';".format(uname))
res = cursor.fetchall()
if res[0][0]:
return True
return False
# 获取数据库中实习生所有信息,按给定的信息给出
# 通过全局变量sort_data以及sort_interne
# sort_interne 为0代表升序为一代表降序
def all():
if sort_interne == 1:
if sort_data == 0:
cursor.execute("select * from internes order by id;")
elif sort_data == 1:
cursor.execute("select * from internes order by sex;")
elif sort_data == 2:
cursor.execute("select * from internes order by wages;")
elif sort_data == 3:
cursor.execute("select * from internes order by hiredata;")
else:
if sort_data == 0:
cursor.execute("select * from internes order by id desc;")
elif sort_data == 1:
cursor.execute("select * from internes order by sex desc;")
elif sort_data == 2:
cursor.execute("select * from internes order by wages desc;")
elif sort_data == 3:
cursor.execute("select * from internes order by hiredata desc;")
data = cursor.fetchall()
key = ('id', 'name', 'department', 'sex', 'wages', 'hiredata')
jsonList = []
# 通过数据得到的数据是元组类型,需要压缩成字典类型便于输出
for i in data:
jsonList.append(dict(zip(key, i)))
return jsonList
# 查询录入的工号是否存在
def check_interne_id(id):
cursor.execute("select count(*) from internes where id = '{0}';".format(id))
res = cursor.fetchall()
if res[0][0]:
return False, "该工号已存在请重新输入"
return True, '录入成功'
# 单独查询某个班级的成绩
def search_department(department_value):
cursor.execute("select * from internes where department = '{0}';".format(department_value))
data = cursor.fetchall()
key = ('id', 'name', 'department', 'sex', 'wages', 'hiredata')
jsonList = []
# 通过数据得到的数据是元组类型,需要压缩成字典类型便于输出
for i in data:
jsonList.append(dict(zip(key, i)))
return jsonList
# 插入一条实习生信息
def insert(ins):
cursor.execute("insert into internes values('{0}', '{1}', '{2}','{3}', '{4}', '{5}');".
format(ins[0], ins[1], ins[2], ins[3], ins[4], ins[5]))
# 通过id来删除实习生信息
def delete_id(user_id):
cursor.execute("select count(*) from internes where id = '{0}';".format(user_id))
res = cursor.fetchall()
if res[0][0]:
cursor.execute("delete from internes where id = '{0}';".format(user_id))
return True, '删除成功'
else: return False, '工号为' + str(user_id) + '的实习生不存在'
# 通过名字来删除实习生信息
def delete_name(user_name):
cursor.execute("select count(*) from internes where name = '{0}';".format(user_name))
res = cursor.fetchall()
# print(res)
if res[0][0]:
cursor.execute("delete from internes where name = '{0}';".format(user_name))
return True, '删除成功'
else: return False, '姓名为' + str(user_name) + '的实习生不存在'
# 通过id来查询实习生的信息
def search_id(user_id):
cursor.execute("select count(*) from internes where id = '{0}';".format(user_id))
res = cursor.fetchall()
if res[0][0]:
cursor.execute("select * from internes where id = '{0}';".format(user_id))
ins = cursor.fetchall()
return True, ins
else:
return False, '工号为' + str(user_id) + '的实习生不存在'
# 通过实习生姓名来查询剩余的信息
def search_name(user_name):
cursor.execute("select count(*) from internes where name = '{0}';".format(user_name))
res = cursor.fetchall()
if res[0][0]:
cursor.execute("select * from internes where name = '{0}';".format(user_name))
ins = cursor.fetchall()
return True, ins
else:
return False, '名字为' + str(user_name) + '的实习生不存在'
# 下面内容是初始化数据库,不过需要手动解开注释
tuple = (
(1, '张三', '开发部', '', 5000, '2023-01-01'),
(2, '李四', '市场部', '', 4500, '2022-12-15'),
(3, '王五', '人事部', '', 5500, '2022-11-05'),
(4, '赵六', '财务部', '', 5200, '2022-10-20'),
(5, '孙七', '开发部', '', 5300, '2022-09-10'),
(6, '周八', '市场部', '', 4800, '2022-08-15'),
(7, '吴九', '人事部', '', 5100, '2022-07-01'),
(8, '郑十', '财务部', '', 6000, '2022-06-20'),
(9, '陈十一', '开发部', '', 4000, '2022-05-15'),
(10, '刘十二', '市场部', '', 4200, '2022-04-01'),
(11, '高十三', '人事部', '', 5000, '2022-03-10'),
(12, '林十四', '财务部', '', 4800, '2022-02-20'),
(13, '郭十五', '开发部', '', 6500, '2022-01-15'),
(14, '何十六', '市场部', '', 6200, '2021-12-01'),
(15, '罗十七', '人事部', '', 4500, '2021-11-15'),
(16, '宋十八', '财务部', '', 4300, '2021-10-20'),
(17, '蔡十九', '开发部', '', 5500, '2021-09-10'),
(18, '魏二十', '市场部', '', 5200, '2021-08-15'),
(19, '韩廿一', '人事部', '', 6000, '2021-07-01'),
(20, '薛廿二', '财务部', '', 8000, '2021-06-20'))
# 往interne中加入信息若有则不加入
for ins in tuple:
if check_interne_id(ins[0])[0] == True:
insert(ins)
# 加入初始账号,若有则不加入
if check_usname("root") == False:
add_admin_name_pwd('root', 'root')