当前位置: 首页 > 新闻资讯 > 科研系统

用Python打造烟台科研信息管理系统的.docx文件生成工具

本文介绍了如何使用Python编写一个简单的科研信息管理系统,并通过.docx格式输出数据,结合烟台地区的科研需求进行实践。

嘿,朋友们!今天咱们来聊一聊怎么用Python写个“科研信息管理系统”的小玩意儿,而且还要和“烟台”扯上点关系。听起来是不是有点高大上?别担心,我就是那种喜欢把技术讲得特别接地气的人。

首先,咱们先说说什么是“科研信息管理系统”。简单来说,它就是一个用来管理科研项目、人员、成果、经费这些信息的系统。比如说,一个大学或者研究所可能有几十个项目,每个项目都有负责人、时间、预算、成果等等。这时候,如果手动记录,那肯定是个灾难。所以,搞个系统来管理就很有必要了。

不过今天咱们不搞复杂的,咱就做个最基础的版本,然后把它导出成.docx文件。这样大家一看就知道是怎么回事了。而且,咱们还特意结合一下“烟台”,因为烟台也有不少高校和科研机构,比如烟台大学、山东工商学院之类的,说不定有人正好需要这个。

为什么选Python?

为啥选Python呢?因为Python真的太好用了,特别是对于这种数据处理和文档生成的场景。你想想,Python有丰富的库,比如docx、pandas、sqlite3,这些都能帮我们快速实现功能。

另外,Python语法简单,写起来轻松,适合新手入门。就算你是刚接触编程的朋友,也能看懂我们的代码。

项目结构

整个项目大概分为几个部分:

1. 数据存储:用SQLite数据库保存科研信息;

2. 数据操作:增删改查;

3. 导出为.docx文件;

4. 简单的命令行界面(CLI)。

咱们一步步来,先从数据库开始。

第一步:创建数据库

首先,我们需要一个数据库来存数据。我们可以用Python内置的sqlite3模块来操作数据库。

下面是一段代码,用来创建一个名为“research.db”的数据库,并在其中建立一个“projects”表,用于存储科研项目的信息。


import sqlite3

# 连接到数据库
conn = sqlite3.connect('research.db')

# 创建游标
cursor = conn.cursor()

# 创建表
cursor.execute('''
CREATE TABLE IF NOT EXISTS projects (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT NOT NULL,
    researcher TEXT NOT NULL,
    start_date DATE NOT NULL,
    end_date DATE NOT NULL,
    budget REAL NOT NULL,
    description TEXT
)
''')

# 提交更改
conn.commit()

# 关闭连接
conn.close()
    

这段代码的意思是:如果数据库中没有“projects”这张表,就新建一张表。表里包括项目的标题、负责人、起止日期、预算、描述等字段。

接下来,我们就可以插入一些数据试试看。

第二步:插入数据

现在我们来写一段代码,往数据库里添加几条数据,模拟一个科研项目。


import sqlite3

conn = sqlite3.connect('research.db')
cursor = conn.cursor()

# 插入数据
cursor.execute('INSERT INTO projects (title, researcher, start_date, end_date, budget, description) VALUES (?, ?, ?, ?, ?, ?)',
               ('烟台海洋生态保护研究', '张伟', '2024-03-01', '2025-02-28', 200000.0, '研究烟台周边海域生态变化'))

cursor.execute('INSERT INTO projects (title, researcher, start_date, end_date, budget, description) VALUES (?, ?, ?, ?, ?, ?)',
               ('烟台智能制造技术应用', '李娜', '2024-04-01', '2025-03-31', 150000.0, '推动烟台制造业智能化升级'))

conn.commit()
conn.close()
    

运行完这段代码后,数据库里就有了两条记录。你可以用数据库查看工具(比如DB Browser for SQLite)看看数据是否正确。

第三步:查询数据

接下来,我们写一段代码,从数据库中读取所有数据,看看能不能正常显示出来。


import sqlite3

conn = sqlite3.connect('research.db')
cursor = conn.cursor()

# 查询所有数据
cursor.execute('SELECT * FROM projects')
rows = cursor.fetchall()

for row in rows:
    print(row)

conn.close()
    

运行之后,你会看到类似这样的输出:

(1, '烟台海洋生态保护研究', '张伟', '2024-03-01', '2025-02-28', 200000.0, '研究烟台周边海域生态变化')

(2, '烟台智能制造技术应用', '李娜', '2024-04-01', '2025-03-31', 150000.0, '推动烟台制造业智能化升级')

科研系统

看起来没问题,那我们就继续下一步。

第四步:导出为.docx文件

现在,我们想把这些数据导出成一个.docx文件,方便打印或分享。这里我们用到的是python-docx这个库。

首先,安装这个库:


pip install python-docx
    

然后,我们写一段代码,把数据库里的数据写入.docx文件。


from docx import Document
import sqlite3

# 创建一个新的文档
doc = Document()

# 添加标题
doc.add_heading('烟台科研项目列表', 0)

# 连接数据库
conn = sqlite3.connect('research.db')
cursor = conn.cursor()

# 查询数据
cursor.execute('SELECT * FROM projects')
rows = cursor.fetchall()

# 添加表格
table = doc.add_table(rows=len(rows)+1, cols=6)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = 'ID'
hdr_cells[1].text = '项目名称'
hdr_cells[2].text = '负责人'
hdr_cells[3].text = '开始日期'
hdr_cells[4].text = '结束日期'
hdr_cells[5].text = '预算'

for i, row in enumerate(rows):
    row_cells = table.rows[i+1].cells
    row_cells[0].text = str(row[0])
    row_cells[1].text = row[1]
    row_cells[2].text = row[2]
    row_cells[3].text = row[3]
    row_cells[4].text = row[4]
    row_cells[5].text = f'{row[5]:,.2f} 元'

# 保存文档
doc.save('research_projects.docx')

conn.close()
    

运行这段代码后,会生成一个叫“research_projects.docx”的文件。打开它,你会看到一个表格,里面包含了之前插入的数据。

这个功能挺实用的,特别是当你需要把数据整理成一份报告时,直接导出为Word文档就能省下不少时间。

第五步:添加简单的命令行交互

为了让这个程序更友好一点,我们再加一个简单的命令行界面,让用户可以自己选择要执行的操作。


import sqlite3
from docx import Document

def create_db():
    conn = sqlite3.connect('research.db')
    cursor = conn.cursor()
    cursor.execute('''
        CREATE TABLE IF NOT EXISTS projects (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            title TEXT NOT NULL,
            researcher TEXT NOT NULL,
            start_date DATE NOT NULL,
            end_date DATE NOT NULL,
            budget REAL NOT NULL,
            description TEXT
        )
    ''')
    conn.commit()
    conn.close()
    print("数据库已创建")

def add_project():
    title = input("请输入项目名称: ")
    researcher = input("请输入负责人: ")
    start_date = input("请输入开始日期 (YYYY-MM-DD): ")
    end_date = input("请输入结束日期 (YYYY-MM-DD): ")
    budget = float(input("请输入预算: "))
    description = input("请输入项目描述: ")

    conn = sqlite3.connect('research.db')
    cursor = conn.cursor()
    cursor.execute('INSERT INTO projects (title, researcher, start_date, end_date, budget, description) VALUES (?, ?, ?, ?, ?, ?)',
                   (title, researcher, start_date, end_date, budget, description))
    conn.commit()
    conn.close()
    print("项目已添加")

def view_projects():
    conn = sqlite3.connect('research.db')
    cursor = conn.cursor()
    cursor.execute('SELECT * FROM projects')
    rows = cursor.fetchall()
    for row in rows:
        print(row)
    conn.close()

def export_to_docx():
    doc = Document()
    doc.add_heading('烟台科研项目列表', 0)

    conn = sqlite3.connect('research.db')
    cursor = conn.cursor()
    cursor.execute('SELECT * FROM projects')
    rows = cursor.fetchall()

    table = doc.add_table(rows=len(rows)+1, cols=6)
    hdr_cells = table.rows[0].cells
    hdr_cells[0].text = 'ID'
    hdr_cells[1].text = '项目名称'
    hdr_cells[2].text = '负责人'
    hdr_cells[3].text = '开始日期'
    hdr_cells[4].text = '结束日期'
    hdr_cells[5].text = '预算'

    for i, row in enumerate(rows):
        row_cells = table.rows[i+1].cells
        row_cells[0].text = str(row[0])
        row_cells[1].text = row[1]
        row_cells[2].text = row[2]
        row_cells[3].text = row[3]
        row_cells[4].text = row[4]
        row_cells[5].text = f'{row[5]:,.2f} 元'

    doc.save('research_projects.docx')
    print("文档已生成: research_projects.docx")
    conn.close()

def main():
    create_db()
    while True:
        print("\n请选择操作:")
        print("1. 添加项目")
        print("2. 查看项目")
        print("3. 导出为.docx")
        print("4. 退出")
        choice = input("请输入选项: ")

        if choice == '1':
            add_project()
        elif choice == '2':
            view_projects()
        elif choice == '3':
            export_to_docx()
        elif choice == '4':
            break
        else:
            print("无效选项,请重新输入。")

if __name__ == '__main__':
    main()
    

这段代码是一个完整的命令行程序,用户可以通过输入数字选择不同的操作。比如,添加新项目、查看已有项目、导出为.docx文件。

结语

好了,今天的分享就到这里。我们用Python做了一个简单的“科研信息管理系统”,并把它导出成了.docx文件,还结合了“烟台”的背景。虽然这个系统比较简单,但已经能完成基本的科研项目管理任务。

如果你对Python感兴趣,或者正在学习编程,建议你动手试试看。代码很简单,而且可以扩展很多功能,比如添加更多字段、支持搜索、导出为PDF等等。

最后,希望这篇文章能对你有所帮助,也欢迎你在评论区留言,告诉我你对这个系统的看法,或者你有什么想法可以加进来。

本站部分内容及素材来源于互联网,如有侵权,联系必删!

相关资讯

    暂无相关的数据...