如何设置一个简单的使用Python实现的可以管理跟踪项目进度及完成情况的脚本示例,它通过命令行界面与用户进行交互,实现添加项目、更新进度、查看项目状态等功能。
以下是一个简单的使用Python实现的可以管理跟踪项目进度及完成情况的脚本示例,它通过命令行界面与用户进行交互,实现添加项目、更新进度、查看项目状态等功能。
```python
# 项目管理类
class ProjectManager:
def __init__(self):
self.projects = {}
def add_project(self, project_name):
if project_name in self.projects:
print(f"项目 {project_name} 已存在。")
else:
self.projects[project_name] = {"进度": 0, "完成": False}
print(f"成功添加项目 {project_name}。")
def update_progress(self, project_name, progress):
if project_name in self.projects:
self.projects[project_name]["进度"] = progress
if progress == 100:
self.projects[project_name]["完成"] = True
print(f"项目 {project_name} 的进度已更新为 {progress}%。")
else:
print(f"项目 {project_name} 不存在。")
def check_status(self, project_name):
if project_name in self.projects:
status = "已完成" if self.projects[project_name]["完成"] else "进行中"
print(f"项目 {project_name} 的状态:{status},进度:{self.projects[project_name]['进度']}%")
else:
print(f"项目 {project_name} 不存在。")
if __name__ == "__main__":
manager = ProjectManager()
while True:
print("\n项目管理系统菜单:")
print("1. 添加项目")
print("2. 更新项目进度")
print("3. 查看项目状态")
print("4. 退出")
choice = input("请输入你的选择(1/2/3/4):")
if choice == "1":
project_name = input("请输入项目名称:")
manager.add_project(project_name)
elif choice == "2":
project_name = input("请输入项目名称:")
progress = int(input("请输入项目进度(0 - 100):"))
manager.update_progress(project_name, progress)
elif choice == "3":
project_name = input("请输入项目名称:")
manager.check_status(project_name)
elif choice == "4":
print("退出项目管理系统。")
break
else:
print("无效的选择,请重新输入。")
```
在这个脚本中:
- `ProjectManager` 类用于管理项目。它有一个字典 `projects` 来存储项目信息,每个项目包含进度和是否完成的状态。
- `add_project` 方法用于添加新的项目到 `projects` 字典中。
- `update_progress` 方法用于更新指定项目的进度,并根据进度判断项目是否完成。
- `check_status` 方法用于查看指定项目的状态和进度。
- 在主程序部分,通过一个循环展示菜单,根据用户的选择调用 `ProjectManager` 类中的相应方法来实现与用户的交互操作,从而管理项目的进度和完成情况。
如果你希望有更复杂的界面,比如图形化界面(GUI),可以使用 `tkinter`、`PyQt` 等库来进一步扩展这个脚本。例如,使用 `tkinter` 来创建一个简单的图形化界面版本大致如下:
```python
import tkinter as tk
from tkinter import messagebox
# 项目管理类
class ProjectManager:
def __init__(self):
self.projects = {}
def add_project(self, project_name):
if project_name in self.projects:
messagebox.showinfo("提示", f"项目 {project_name} 已存在。")
else:
self.projects[project_name] = {"进度": 0, "完成": False}
messagebox.showinfo("提示", f"成功添加项目 {project_name}。")
def update_progress(self, project_name, progress):
if project_name in self.projects:
self.projects[project_name]["进度"] = progress
if progress == 100:
self.projects[project_name]["完成"] = True
messagebox.showinfo("提示", f"项目 {project_name} 的进度已更新为 {progress}%。")
else:
messagebox.showinfo("提示", f"项目 {project_name} 不存在。")
def check_status(self, project_name):
if project_name in self.projects:
status = "已完成" if self.projects[project_name]["完成"] else "进行中"
messagebox.showinfo("提示", f"项目 {project_name} 的状态:{status},进度:{self.projects[project_name]['进度']}%")
else:
messagebox.showinfo("提示", f"项目 {project_name} 不存在。")
if __name__ == "__main__":
manager = ProjectManager()
root = tk.Tk()
root.title("项目管理系统")
def add_project_command():
project_name = project_name_entry.get()
manager.add_project(project_name)
def update_progress_command():
project_name = project_name_entry.get()
progress = int(progress_entry.get())
manager.update_progress(project_name, progress)
def check_status_command():
project_name = project_name_entry.get()
manager.check_status(project_name)
project_name_label = tk.Label(root, text="项目名称:")
project_name_label.pack()
project_name_entry = tk.Entry(root)
project_name_entry.pack()
add_project_button = tk.Button(root, text="添加项目", command=add_project_command)
add_project_button.pack()
progress_label = tk.Label(root, text="项目进度(0 - 100):")
progress_label.pack()
progress_entry = tk.Entry(root)
progress_entry.pack()
update_progress_button = tk.Button(root, text="更新项目进度", command=update_progress_command)
update_progress_button.pack()
check_status_button = tk.Button(root, text="查看项目状态", command=check_status_command)
check_status_button.pack()
root.mainloop()
```
这个 `tkinter` 版本的脚本创建了一个简单的图形化界面,包含输入框和按钮,通过点击按钮来调用 `ProjectManager` 类中的相应方法实现与之前命令行版本类似的功能,不过界面更加直观,便于用户操作。
请注意,以上代码只是一个简单的示例,实际应用中可能需要根据具体需求进行更多的扩展和优化,比如数据的持久化存储(将项目信息保存到文件或数据库中以便下次启动程序时能恢复数据)等。