小明(M): 嗨,小红,我最近在做一个学校教材发放管理系统,你有兴趣一起参与吗?
小红(H): 当然有兴趣!这个项目听起来很有意义。你觉得我们应该从哪里开始呢?
M: 首先,我们需要设计数据库。系统应该包括学生信息表和教材信息表。学生信息表至少要包含学号、姓名、班级等字段,教材信息表则包含教材编号、教材名称、数量等字段。
H: 明白了,那么我们怎么连接数据库呢?
M: 我们可以使用Python的sqlite3模块。下面是一个简单的数据库创建和插入数据的例子:
import sqlite3
conn = sqlite3.connect('school.db')
c = conn.cursor()
# 创建学生信息表
c.execute('''CREATE TABLE students (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
class TEXT NOT NULL)''')
# 插入一些示例数据
c.execute("INSERT INTO students (name, class) VALUES ('张三', '一年级一班')")
c.execute("INSERT INTO students (name, class) VALUES ('李四', '一年级二班')")
# 创建教材信息表
c.execute('''CREATE TABLE textbooks (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
quantity INTEGER NOT NULL)''')
# 插入一些示例数据
c.execute("INSERT INTO textbooks (name, quantity) VALUES ('语文', 100)")
c.execute("INSERT INTO textbooks (name, quantity) VALUES ('数学', 150)")
conn.commit()
conn.close()
H: 看起来很不错!下一步我们该如何处理教材发放的逻辑呢?
M: 我们可以在系统中添加一个函数,用于根据学生的需求分配教材,并更新数据库中的库存数量。这里有一个简单的例子:
def distribute_textbook(student_id, textbook_name):
conn = sqlite3.connect('school.db')
c = conn.cursor()
# 获取学生信息
c.execute("SELECT * FROM students WHERE id=?", (student_id,))
student_info = c.fetchone()
# 获取教材信息
c.execute("SELECT * FROM textbooks WHERE name=?", (textbook_name,))
textbook_info = c.fetchone()
if student_info and textbook_info:
if textbook_info[2] > 0:
# 分发教材
print(f"成功分发《{textbook_info[1]}》给 {student_info[1]}")
# 更新库存
new_quantity = textbook_info[2] - 1
c.execute("UPDATE textbooks SET quantity=? WHERE name=?", (new_quantity, textbook_name))
else:
print("教材库存不足")
else:
print("找不到对应的学生或教材")
conn.commit()
conn.close()
H: 这样我们就有了基本的教材发放功能了。接下来我们可以考虑添加更多的功能,比如查询和统计。