含main函数的完整python代码实现: 1. 创建一个需求管理excel,如果已经存在则直接打开,可添加多条需求,A列需求序号,B列需求内容,C列需求提出人,D列需求状态(open/close),E列需求提出时间,F列需求关闭时间 2. 可根据C列需求提出人和D列需求状态查询excel中的需求 3. 可以修改指定需求提出人且指定的状态为open的需求的状态,同时修改该需求的需求关闭时间为当前时间 4. 可以删除需求提出人为指定人且需求状态为close的需求 5. 可以统计出当前总的open需求的数量
时间: 2023-10-17 16:31:53 浏览: 82
很抱歉,由于答案长度限制,我无法提供完整的代码实现。不过我可以给出一个大致的代码框架和思路,供您参考:
```python
import pandas as pd
import openpyxl
from datetime import datetime
# 定义需求管理类
class DemandManager:
def __init__(self, excel_path):
self.excel_path = excel_path
self.df = self.load_excel(excel_path)
# 加载需求管理excel文件
def load_excel(self, path):
# 判断文件是否存在
if not os.path.exists(path):
# 新建一个excel文件
df = pd.DataFrame(columns=['需求序号', '需求内容', '需求提出人', '需求状态', '需求提出时间', '需求关闭时间'])
df.to_excel(path, index=False)
else:
# 直接打开excel文件
df = pd.read_excel(path)
return df
# 添加需求
def add_demand(self, num, content, proposer, state='open'):
now_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
data = {'需求序号': num, '需求内容': content, '需求提出人': proposer, '需求状态': state, '需求提出时间': now_time, '需求关闭时间': ''}
self.df = self.df.append(data, ignore_index=True)
# 查询需求
def search_demand(self, proposer=None, state=None):
if proposer and state:
return self.df[(self.df['需求提出人'] == proposer) & (self.df['需求状态'] == state)]
elif proposer:
return self.df[self.df['需求提出人'] == proposer]
elif state:
return self.df[self.df['需求状态'] == state]
else:
return self.df
# 修改需求状态和关闭时间
def change_demand(self, proposer):
now_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
self.df.loc[(self.df['需求提出人'] == proposer) & (self.df['需求状态'] == 'open'), '需求状态'] = 'close'
self.df.loc[(self.df['需求提出人'] == proposer) & (self.df['需求状态'] == 'close'), '需求关闭时间'] = now_time
# 删除需求
def delete_demand(self, proposer):
self.df = self.df[(self.df['需求提出人'] != proposer) | (self.df['需求状态'] != 'close')]
# 统计open需求数量
def count_open_demand(self):
return len(self.df[self.df['需求状态'] == 'open'])
# 主函数
def main():
excel_path = 'demand.xlsx'
demand_manager = DemandManager(excel_path)
while True:
print("请选择操作:\n1. 添加需求\n2. 查询需求\n3. 修改需求\n4. 删除需求\n5. 统计open需求数量\n0. 退出")
choice = input()
if choice == '1':
num = input("请输入需求序号:")
content = input("请输入需求内容:")
proposer = input("请输入需求提出人:")
demand_manager.add_demand(num, content, proposer)
elif choice == '2':
proposer = input("请输入需求提出人:")
state = input("请输入需求状态:")
result = demand_manager.search_demand(proposer, state)
print(result)
elif choice == '3':
proposer = input("请输入需求提出人:")
demand_manager.change_demand(proposer)
elif choice == '4':
proposer = input("请输入需求提出人:")
demand_manager.delete_demand(proposer)
elif choice == '5':
count = demand_manager.count_open_demand()
print("当前open需求的数量为:", count)
elif choice == '0':
break
else:
print("输入有误,请重新输入。")
# 保存数据到excel文件
demand_manager.df.to_excel(excel_path, index=False)
if __name__ == '__main__':
main()
```
这个示例代码包含了需求管理类的定义和各个操作的实现,以及主函数的实现,可以通过用户输入来调用需要的操作。请注意,这只是一个大致的代码框架,具体实现还需要在实际使用中进行完善和修改。
阅读全文