小明:嘿,小李,最近我在学校要做一个关于资产管理的项目,听说你对Python挺熟悉的,能不能帮我看看怎么用Python做一个固定资产管理系统?
小李:当然可以!固定资产管理系统其实不难,主要就是管理资产的信息,比如名称、编号、购置日期、负责人等。你可以先设计一个数据库来存储这些信息,然后写一些功能来添加、查询、修改和删除资产。
小明:那数据库的话,用什么比较好呢?我之前没怎么接触过数据库。
小李:可以用SQLite,它是Python内置的轻量级数据库,不需要额外安装服务器。我们可以用Python的sqlite3模块来操作它。
小明:明白了,那我先创建一个数据库,然后建一张表来存资产信息。
小李:对,下面是一个示例代码,你可以先试试看。
import sqlite3
# 创建数据库连接
conn = sqlite3.connect('assets.db')
cursor = conn.cursor()
# 创建资产表
cursor.execute('''
CREATE TABLE IF NOT EXISTS assets (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
asset_number TEXT NOT NULL UNIQUE,
purchase_date TEXT NOT NULL,
owner TEXT NOT NULL,
status TEXT NOT NULL
)
''')
conn.commit()
conn.close()
小明:这段代码是创建了一个名为assets.db的数据库,并且在其中创建了一个assets表。表中包括id、name、asset_number、purchase_date、owner和status这几个字段。
小李:没错,接下来你可以写一些函数来操作这个表,比如添加资产、查询资产、更新状态等。
小明:那我应该怎么添加资产呢?
小李:可以写一个add_asset函数,参数包括name、asset_number、purchase_date、owner和status。然后执行SQL插入语句。
def add_asset(name, asset_number, purchase_date, owner, status):
conn = sqlite3.connect('assets.db')
cursor = conn.cursor()
cursor.execute('INSERT INTO assets (name, asset_number, purchase_date, owner, status) VALUES (?, ?, ?, ?, ?)',
(name, asset_number, purchase_date, owner, status))
conn.commit()
conn.close()
print("资产已成功添加!")
小明:这样就完成了添加资产的功能,那如果我想查询某个资产的信息呢?
小李:可以用select_asset函数,根据asset_number或者id来查询。
def select_asset(asset_number=None, asset_id=None):
conn = sqlite3.connect('assets.db')
cursor = conn.cursor()
if asset_number:
cursor.execute('SELECT * FROM assets WHERE asset_number = ?', (asset_number,))
elif asset_id:
cursor.execute('SELECT * FROM assets WHERE id = ?', (asset_id,))
else:
cursor.execute('SELECT * FROM assets')
results = cursor.fetchall()
conn.close()
return results
小明:太好了,这样就能方便地查看资产信息了。那如果我要修改资产的状态呢?
小李:可以写一个update_status函数,根据asset_number或id来更新状态。

def update_status(asset_number, new_status):
conn = sqlite3.connect('assets.db')
cursor = conn.cursor()
cursor.execute('UPDATE assets SET status = ? WHERE asset_number = ?', (new_status, asset_number))
conn.commit()
conn.close()
print("资产状态已更新!")
小明:看来我已经有了一个基本的固定资产管理系统了。不过,我还想把数据导出成PPT报告,这样展示起来更直观。
小李:这个没问题,Python有一个叫做python-pptx的库,可以用来生成PPT文件。
小明:那我要怎么安装这个库呢?
小李:可以用pip安装,命令是:pip install python-pptx。
小明:好的,安装好了。那我该怎么用它来生成PPT呢?
小李:我们可以从数据库中读取数据,然后将每条资产信息添加到PPT的一个幻灯片中。
from pptx import Presentation
from pptx.util import Inches
def generate_ppt():
# 创建PPT对象
prs = Presentation()
slide_layout = prs.slide_layouts[5] # 使用空白布局
# 获取所有资产数据
assets = select_asset()
for asset in assets:
slide = prs.slides.add_slide(slide_layout)
title = slide.shapes.title
title.text = "资产信息"
body = slide.placeholders[1]
body.text = f"ID: {asset[0]}\n名称: {asset[1]}\n编号: {asset[2]}\n购置日期: {asset[3]}\n负责人: {asset[4]}\n状态: {asset[5]}"
# 保存PPT
prs.save('assets_report.pptx')
print("PPT报告已生成!")
小明:这样就可以生成一个包含所有资产信息的PPT了,看起来很清晰。
小李:没错,而且你还可以进一步美化PPT,比如添加图表、图片等,让报告更加专业。
小明:那我可以在这个基础上扩展更多功能吗?比如统计不同状态的资产数量?
小李:当然可以,你可以用SQL的GROUP BY语句来统计不同状态的数量,然后将结果以图表的形式展示在PPT中。
小明:听起来很棒!我现在对这个项目更有信心了。
小李:是的,只要你愿意动手实践,一定能做出一个不错的系统。记得多测试,确保每个功能都正常运行。
小明:谢谢你,小李,你的帮助真的很大!
小李:不用客气,有问题随时问我!祝你项目顺利!
