员工信息包括,员工编号(ID),姓名(Name),职务(Title),电话(Phone),试开发一个有人机界面的程序能够完成以下功能: ① 能够添加新员工信息 ② 列表打印所有员工信息 ③ 输入一个员工编号,输出该员工所有信息
时间: 2024-05-09 17:14:48 浏览: 12
好的,这是一个比较简单的任务,可以使用Python语言来开发一个GUI程序来完成。我将使用Python的Tkinter库来创建用户界面,使用SQLite数据库来存储员工信息。
首先,我们需要创建一个包含员工信息的数据库表。以下是一个示例代码:
```python
import sqlite3
# 连接数据库
conn = sqlite3.connect('employees.db')
# 创建员工信息表
conn.execute('''CREATE TABLE EMPLOYEES
(ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
TITLE TEXT NOT NULL,
PHONE TEXT NOT NULL);''')
# 关闭数据库连接
conn.close()
```
接下来,我们可以编写一个函数来添加新员工信息。该函数将在用户点击“添加员工”按钮时调用,弹出一个对话框,要求用户输入员工信息,然后将其添加到数据库中。
```python
import tkinter as tk
from tkinter import messagebox
import sqlite3
def add_employee():
# 创建一个新窗口
add_window = tk.Toplevel()
add_window.title("添加员工")
# 添加标签和文本框,用于输入员工信息
id_label = tk.Label(add_window, text="员工编号:")
id_label.grid(row=0, column=0)
id_entry = tk.Entry(add_window)
id_entry.grid(row=0, column=1)
name_label = tk.Label(add_window, text="员工姓名:")
name_label.grid(row=1, column=0)
name_entry = tk.Entry(add_window)
name_entry.grid(row=1, column=1)
title_label = tk.Label(add_window, text="员工职务:")
title_label.grid(row=2, column=0)
title_entry = tk.Entry(add_window)
title_entry.grid(row=2, column=1)
phone_label = tk.Label(add_window, text="员工电话:")
phone_label.grid(row=3, column=0)
phone_entry = tk.Entry(add_window)
phone_entry.grid(row=3, column=1)
# 添加确定按钮,将员工信息添加到数据库中
def add():
try:
id = int(id_entry.get())
name = name_entry.get()
title = title_entry.get()
phone = phone_entry.get()
conn = sqlite3.connect('employees.db')
conn.execute(f"INSERT INTO EMPLOYEES (ID, NAME, TITLE, PHONE) VALUES ({id}, '{name}', '{title}', '{phone}')")
conn.commit()
conn.close()
messagebox.showinfo("添加成功", "员工信息已成功添加到数据库中!")
add_window.destroy()
except ValueError:
messagebox.showerror("错误", "员工编号必须是整数!")
add_button = tk.Button(add_window, text="确定", command=add)
add_button.grid(row=4, column=0, columnspan=2)
```
接下来,我们需要编写一个函数来列出所有员工信息。该函数将在用户点击“列出所有员工”按钮时调用,从数据库中检索员工信息,并将其显示在一个新窗口中。
```python
def list_employees():
# 创建一个新窗口
list_window = tk.Toplevel()
list_window.title("员工列表")
# 添加一个文本框,用于显示所有员工信息
text = tk.Text(list_window)
text.pack()
# 从数据库中检索所有员工信息,并将其添加到文本框中
conn = sqlite3.connect('employees.db')
cursor = conn.execute("SELECT ID, NAME, TITLE, PHONE from EMPLOYEES")
for row in cursor:
text.insert(tk.END, f"员工编号:{row[0]}\n")
text.insert(tk.END, f"员工姓名:{row[1]}\n")
text.insert(tk.END, f"员工职务:{row[2]}\n")
text.insert(tk.END, f"员工电话:{row[3]}\n")
text.insert(tk.END, "\n")
conn.close()
```
最后,我们需要编写一个函数来查询单个员工信息。该函数将在用户点击“查询员工信息”按钮时调用,弹出一个对话框,要求用户输入员工编号,然后从数据库中检索该员工的所有信息,并将其显示在一个新窗口中。
```python
def query_employee():
# 创建一个新窗口
query_window = tk.Toplevel()
query_window.title("查询员工信息")
# 添加标签和文本框,用于输入员工编号
id_label = tk.Label(query_window, text="员工编号:")
id_label.grid(row=0, column=0)
id_entry = tk.Entry(query_window)
id_entry.grid(row=0, column=1)
# 添加确定按钮,从数据库中检索员工信息,并将其显示在新窗口中
def query():
try:
id = int(id_entry.get())
conn = sqlite3.connect('employees.db')
cursor = conn.execute(f"SELECT NAME, TITLE, PHONE from EMPLOYEES WHERE ID={id}")
row = cursor.fetchone()
conn.close()
if row is not None:
# 创建一个新文本框,显示员工信息
text = tk.Text(query_window)
text.insert(tk.END, f"员工编号:{id}\n")
text.insert(tk.END, f"员工姓名:{row[0]}\n")
text.insert(tk.END, f"员工职务:{row[1]}\n")
text.insert(tk.END, f"员工电话:{row[2]}\n")
text.pack()
else:
messagebox.showerror("错误", "没有找到该员工的信息!")
except ValueError:
messagebox.showerror("错误", "员工编号必须是整数!")
query_button = tk.Button(query_window, text="确定", command=query)
query_button.grid(row=1, column=0, columnspan=2)
```
现在,我们可以将这些函数添加到一个主函数中,并创建一个主窗口,包含“添加员工”、“列出所有员工”和“查询员工信息”按钮。
```python
def main():
# 创建主窗口
root = tk.Tk()
root.title("员工信息管理系统")
# 添加按钮,调用相应的函数
add_button = tk.Button(root, text="添加员工", command=add_employee)
add_button.pack()
list_button = tk.Button(root, text="列出所有员工", command=list_employees)
list_button.pack()
query_button = tk.Button(root, text="查询员工信息", command=query_employee)
query_button.pack()
# 运行主循环
root.mainloop()
if __name__ == '__main__':
main()
```
现在你可以运行这个程序,测试它是否能够成功地添加、列出和查询员工信息。
相关推荐
![application/octet-stream](https://img-home.csdnimg.cn/images/20210720083646.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)