GUI版的员工薪资管理系统,具有如下功能: 1)员工的信息输入,(包括属性:工号,姓名,基本工资,绩效,扣款) 2)显示员工信息(包括属性:工号,姓名,基本工资,绩效,扣款,实发金额(=基本工资+绩效-扣款)) 3)按员工实发工资降序排序。 4)可以将数据保存到txt文件中。
时间: 2024-03-11 12:45:07 浏览: 49
好的,这是一个关于员工薪资管理系统的问题。以下是我的回答:
这个系统需要具备以下功能:
1. 员工信息输入:用户可以输入员工的工号、姓名、基本工资、绩效、扣款等信息。
2. 员工信息显示:系统可以显示员工的工号、姓名、基本工资、绩效、扣款和实发金额(实发金额=基本工资+绩效-扣款)等信息。
3. 员工信息排序:系统可以按照员工实发工资的降序对员工信息进行排序。
4. 数据保存:系统可以将员工信息保存到txt文件中。
为了方便用户使用,这个系统应该具备GUI界面,可以通过鼠标和键盘进行操作。用户可以通过菜单或按钮等方式进行各种操作,同时系统也应该提供一些提示信息,方便用户了解当前操作的状态和结果。
希望这个回答能够解决你的问题。
相关问题
用python实现 GUI版的员工薪资管理系统,具有如下功能: 1)员工的信息输入,(包括属性:工号,姓名,基本工资,绩效,扣款) 2)显示员工信息(包括属性:工号,姓名,基本工资,绩效,扣款,实发金额(=基本工资+绩效-扣款)) 3)按员工实发工资降序排序。 4)可以将数据保存到txt文件中。
好的,以下是一个Python实现的员工薪资管理系统,具有上述功能:
```python
import tkinter as tk
from tkinter import messagebox
import operator
class Employee:
def __init__(self, id, name, salary, performance, deduction):
self.id = id
self.name = name
self.salary = salary
self.performance = performance
self.deduction = deduction
self.net_salary = salary + performance - deduction
class EmployeeManagementSystem:
def __init__(self):
self.employees = []
self.root = tk.Tk()
self.root.title("员工薪资管理系统")
self.root.geometry("600x400")
# 创建标签和输入框
tk.Label(self.root, text="工号").grid(row=0, column=0)
self.id_entry = tk.Entry(self.root)
self.id_entry.grid(row=0, column=1)
tk.Label(self.root, text="姓名").grid(row=1, column=0)
self.name_entry = tk.Entry(self.root)
self.name_entry.grid(row=1, column=1)
tk.Label(self.root, text="基本工资").grid(row=2, column=0)
self.salary_entry = tk.Entry(self.root)
self.salary_entry.grid(row=2, column=1)
tk.Label(self.root, text="绩效").grid(row=3, column=0)
self.performance_entry = tk.Entry(self.root)
self.performance_entry.grid(row=3, column=1)
tk.Label(self.root, text="扣款").grid(row=4, column=0)
self.deduction_entry = tk.Entry(self.root)
self.deduction_entry.grid(row=4, column=1)
# 创建按钮
tk.Button(self.root, text="添加员工", command=self.add_employee).grid(row=5, column=0)
tk.Button(self.root, text="显示员工信息", command=self.show_employee).grid(row=5, column=1)
tk.Button(self.root, text="员工信息排序", command=self.sort_employee).grid(row=5, column=2)
tk.Button(self.root, text="保存到txt文件", command=self.save_to_file).grid(row=5, column=3)
def add_employee(self):
# 从输入框中获取员工信息
id = self.id_entry.get()
name = self.name_entry.get()
salary = float(self.salary_entry.get())
performance = float(self.performance_entry.get())
deduction = float(self.deduction_entry.get())
# 创建员工对象并添加到员工列表中
employee = Employee(id, name, salary, performance, deduction)
self.employees.append(employee)
# 清空输入框
self.id_entry.delete(0, tk.END)
self.name_entry.delete(0, tk.END)
self.salary_entry.delete(0, tk.END)
self.performance_entry.delete(0, tk.END)
self.deduction_entry.delete(0, tk.END)
messagebox.showinfo("添加员工", "员工添加成功!")
def show_employee(self):
# 创建新窗口显示员工信息
top = tk.Toplevel()
top.title("员工信息")
top.geometry("400x300")
# 创建表格
tk.Label(top, text="工号").grid(row=0, column=0)
tk.Label(top, text="姓名").grid(row=0, column=1)
tk.Label(top, text="基本工资").grid(row=0, column=2)
tk.Label(top, text="绩效").grid(row=0, column=3)
tk.Label(top, text="扣款").grid(row=0, column=4)
tk.Label(top, text="实发金额").grid(row=0, column=5)
# 显示员工信息
for i in range(len(self.employees)):
tk.Label(top, text=self.employees[i].id).grid(row=i+1, column=0)
tk.Label(top, text=self.employees[i].name).grid(row=i+1, column=1)
tk.Label(top, text=self.employees[i].salary).grid(row=i+1, column=2)
tk.Label(top, text=self.employees[i].performance).grid(row=i+1, column=3)
tk.Label(top, text=self.employees[i].deduction).grid(row=i+1, column=4)
tk.Label(top, text=self.employees[i].net_salary).grid(row=i+1, column=5)
def sort_employee(self):
# 按照实发金额降序排序
self.employees.sort(key=operator.attrgetter("net_salary"), reverse=True)
messagebox.showinfo("员工信息排序", "员工信息已排序!")
def save_to_file(self):
# 保存员工信息到txt文件
with open("employees.txt", "w") as f:
for employee in self.employees:
f.write(f"{employee.id}, {employee.name}, {employee.salary}, {employee.performance}, {employee.deduction}, {employee.net_salary}\n")
messagebox.showinfo("保存到txt文件", "员工信息已保存到txt文件!")
def run(self):
self.root.mainloop()
if __name__ == "__main__":
ems = EmployeeManagementSystem()
ems.run()
```
这个程序使用了Python的tkinter库来创建GUI界面,通过输入框、标签和按钮等控件实现了员工信息的输入、显示、排序和保存。同时程序使用了Employee类来定义员工对象,方便管理。
用c语言编写一个简单的员工工资管理系统,定义结构体类型的数组存储员工的基本信息:工号、姓名、基本工资。要求编写自定义函数实现如下功能: (1)输入n名员工的信息:工号、姓名、基本工资; (2) 输出口名员工的信息:工号、姓名、基本工资; (2) 根据工号查找并输出某个员工的信息; (3)查找某两个工资金额范国内的所有员工并输出对 应信息; (4) 计算所有员工的平均工资; (5) 计算并输出工资最高的员工信息及工资最低的员 工信息; (6) 添加员工信息功能:若有新入职的员工,请将他们的信息存入结构体数组中; (7)删除员工信息功能:假如有员工离职,请将其信息删除并保证数组的连续性; (8) 请按照工号或姓名或工资从低到高的顺序输出所有 员工的信息。 (9)编写主函数,要求可通过功能菜单选择执行相应的功能。
以下是用C语言编写的员工工资管理系统,包括要求实现的所有功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_EMPLOYEES 100
// 定义员工结构体类型
typedef struct Employee {
char id[10]; // 工号
char name[20]; // 姓名
float salary; // 基本工资
} Employee;
// 全局变量,存储所有员工信息的数组
Employee employees[MAX_EMPLOYEES];
// 全局变量,记录当前数组中已有的员工数量
int employeeCount = 0;
// 自定义函数:输入n名员工的信息
void inputEmployees() {
printf("请输入员工数量:");
scanf("%d", &employeeCount);
for (int i = 0; i < employeeCount; i++) {
printf("请输入第%d个员工的信息:\n", i+1);
printf("工号:");
scanf("%s", employees[i].id);
printf("姓名:");
scanf("%s", employees[i].name);
printf("基本工资:");
scanf("%f", &employees[i].salary);
}
}
// 自定义函数:输出n名员工的信息
void outputEmployees() {
printf("所有员工信息如下:\n");
printf("工号\t姓名\t基本工资\n");
for (int i = 0; i < employeeCount; i++) {
printf("%s\t%s\t%.2f\n", employees[i].id, employees[i].name, employees[i].salary);
}
}
// 自定义函数:根据工号查找并输出某个员工的信息
void outputEmployeeById(char* id) {
for (int i = 0; i < employeeCount; i++) {
if (strcmp(employees[i].id, id) == 0) {
printf("员工信息如下:\n");
printf("工号\t姓名\t基本工资\n");
printf("%s\t%s\t%.2f\n", employees[i].id, employees[i].name, employees[i].salary);
return;
}
}
printf("未找到工号为%s的员工\n", id);
}
// 自定义函数:查找某两个工资金额范围内的所有员工并输出对应信息
void outputEmployeesBySalaryRange(float minSalary, float maxSalary) {
printf("工资在%.2f~%.2f之间的员工信息如下:\n", minSalary, maxSalary);
printf("工号\t姓名\t基本工资\n");
for (int i = 0; i < employeeCount; i++) {
if (employees[i].salary >= minSalary && employees[i].salary <= maxSalary) {
printf("%s\t%s\t%.2f\n", employees[i].id, employees[i].name, employees[i].salary);
}
}
}
// 自定义函数:计算所有员工的平均工资
float getAverageSalary() {
float sum = 0;
for (int i = 0; i < employeeCount; i++) {
sum += employees[i].salary;
}
return sum / employeeCount;
}
// 自定义函数:计算并输出工资最高的员工信息及工资最低的员工信息
void outputEmployeeWithMaxAndMinSalary() {
int maxIndex = 0;
int minIndex = 0;
for (int i = 1; i < employeeCount; i++) {
if (employees[i].salary > employees[maxIndex].salary) {
maxIndex = i;
}
if (employees[i].salary < employees[minIndex].salary) {
minIndex = i;
}
}
printf("工资最高的员工信息如下:\n");
printf("工号\t姓名\t基本工资\n");
printf("%s\t%s\t%.2f\n", employees[maxIndex].id, employees[maxIndex].name, employees[maxIndex].salary);
printf("工资最低的员工信息如下:\n");
printf("工号\t姓名\t基本工资\n");
printf("%s\t%s\t%.2f\n", employees[minIndex].id, employees[minIndex].name, employees[minIndex].salary);
}
// 自定义函数:添加员工信息功能
void addEmployee() {
if (employeeCount >= MAX_EMPLOYEES) {
printf("员工数量已达到上限,无法添加新员工\n");
return;
}
printf("请输入新员工的信息:\n");
printf("工号:");
scanf("%s", employees[employeeCount].id);
printf("姓名:");
scanf("%s", employees[employeeCount].name);
printf("基本工资:");
scanf("%f", &employees[employeeCount].salary);
employeeCount++;
}
// 自定义函数:删除员工信息功能
void deleteEmployee(char* id) {
for (int i = 0; i < employeeCount; i++) {
if (strcmp(employees[i].id, id) == 0) {
for (int j = i; j < employeeCount - 1; j++) {
employees[j] = employees[j+1];
}
employeeCount--;
printf("工号为%s的员工信息已删除\n", id);
return;
}
}
printf("未找到工号为%s的员工,无法删除\n", id);
}
// 自定义函数:按照工号或姓名或工资从低到高的顺序输出所有员工的信息
void outputEmployeesByOrder() {
int order = 0;
printf("请选择排序方式:\n");
printf("1.按照工号排序\n");
printf("2.按照姓名排序\n");
printf("3.按照工资排序\n");
scanf("%d", &order);
printf("所有员工信息如下:\n");
printf("工号\t姓名\t基本工资\n");
if (order == 1) { // 按照工号排序
for (int i = 0; i < employeeCount; i++) {
for (int j = i+1; j < employeeCount; j++) {
if (strcmp(employees[i].id, employees[j].id) > 0) {
Employee temp = employees[i];
employees[i] = employees[j];
employees[j] = temp;
}
}
}
}
else if (order == 2) { // 按照姓名排序
for (int i = 0; i < employeeCount; i++) {
for (int j = i+1; j < employeeCount; j++) {
if (strcmp(employees[i].name, employees[j].name) > 0) {
Employee temp = employees[i];
employees[i] = employees[j];
employees[j] = temp;
}
}
}
}
else if (order == 3) { // 按照工资排序
for (int i = 0; i < employeeCount; i++) {
for (int j = i+1; j < employeeCount; j++) {
if (employees[i].salary > employees[j].salary) {
Employee temp = employees[i];
employees[i] = employees[j];
employees[j] = temp;
}
}
}
}
for (int i = 0; i < employeeCount; i++) {
printf("%s\t%s\t%.2f\n", employees[i].id, employees[i].name, employees[i].salary);
}
}
// 主函数
int main() {
int option = 0;
char id[10];
float minSalary, maxSalary;
while (1) {
printf("请选择功能:\n");
printf("1.输入n名员工的信息\n");
printf("2.输出n名员工的信息\n");
printf("3.根据工号查找并输出某个员工的信息\n");
printf("4.查找某两个工资金额范围内的所有员工并输出对应信息\n");
printf("5.计算所有员工的平均工资\n");
printf("6.计算并输出工资最高的员工信息及工资最低的员工信息\n");
printf("7.添加员工信息\n");
printf("8.删除员工信息\n");
printf("9.按照工号或姓名或工资从低到高的顺序输出所有员工的信息\n");
printf("0.退出程序\n");
scanf("%d", &option);
switch (option) {
case 1:
inputEmployees();
break;
case 2:
outputEmployees();
break;
case 3:
printf("请输入要查找的员工工号:");
scanf("%s", id);
outputEmployeeById(id);
break;
case 4:
printf("请输入要查找的工资范围(最小值 最大值):");
scanf("%f %f", &minSalary, &maxSalary);
outputEmployeesBySalaryRange(minSalary, maxSalary);
break;
case 5:
printf("所有员工的平均工资为%.2f\n", getAverageSalary());
break;
case 6:
outputEmployeeWithMaxAndMinSalary();
break;
case 7:
addEmployee();
break;
case 8:
printf("请输入要删除的员工工号:");
scanf("%s", id);
deleteEmployee(id);
break;
case 9:
outputEmployeesByOrder();
break;
case 0:
printf("程序已退出\n");
return 0;
default:
printf("无效的选项,请重新输入\n");
}
}
return 0;
}
```
使用时可以在主函数中调用不同的功能函数来完成相应的操作。每个自定义函数都实现了一个具体的功能,例如输入员工信息、输出员工信息、查找员工信息等等。主函数通过一个循环不断等待用户输入选项,根据用户的选择调用相应的功能函数。
阅读全文