小王(一位软件开发人员):嘿,小李,我正在设计一个教材征订信息管理系统,但我不确定如何将学生纳入系统中。你有什么建议吗?
小李(一位经验丰富的开发者):当然有。首先,你需要考虑的是如何存储学生的征订信息。通常我们会使用数据库来保存这些数据。我们可以使用SQLite,因为它简单且易于上手。
小王:听起来不错!那么我们怎么开始呢?
小李:首先,我们需要创建一个数据库表来存储学生的信息。我们可以使用Python的sqlite3库来完成这个任务。
import sqlite3
# 连接到SQLite数据库
conn = sqlite3.connect('students.db')
cursor = conn.cursor()
# 创建一个名为students的表
cursor.execute('''
CREATE TABLE IF NOT EXISTS students (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
student_id TEXT UNIQUE NOT NULL,
major TEXT NOT NULL
)
''')
conn.commit()
conn.close()
]]>
小王:明白了。接下来,我们怎样让系统知道哪些教材被订购了?
小李:我们需要另一个表来存储教材征订信息。同样地,我们可以使用Python的sqlite3库来实现这一点。
# 连接到数据库
conn = sqlite3.connect('students.db')
cursor = conn.cursor()
# 创建教材征订信息表
cursor.execute('''
CREATE TABLE IF NOT EXISTS textbook_orders (
id INTEGER PRIMARY KEY,
student_id TEXT NOT NULL,
textbook_name TEXT NOT NULL,
quantity INTEGER NOT NULL,
FOREIGN KEY (student_id) REFERENCES students(student_id)
)
''')
conn.commit()
conn.close()
]]>
小王:这很好。现在,我们有了基本的数据结构,接下来我们应该如何让学生能够方便地使用这个系统呢?
小李:我们可以创建一个简单的命令行界面,让学生可以通过输入他们的ID来查看或修改他们的征订信息。这里有一个例子:
def main():
while True:
print("请选择操作:")
print("1. 查看征订信息")
print("2. 修改征订信息")
print("3. 退出")
choice = input("请输入选项: ")
if choice == '1':
student_id = input("请输入您的学生ID: ")
show_order_info(student_id)
elif choice == '2':
student_id = input("请输入您的学生ID: ")
update_order_info(student_id)
elif choice == '3':
break
else:
print("无效的选择,请重新输入")
def show_order_info(student_id):
conn = sqlite3.connect('students.db')
cursor = conn.cursor()
cursor.execute('SELECT * FROM textbook_orders WHERE student_id=?', (student_id,))
orders = cursor.fetchall()
for order in orders:
print(order)
conn.close()
def update_order_info(student_id):
textbook_name = input("请输入您要订购的教材名称: ")
quantity = int(input("请输入数量: "))
conn = sqlite3.connect('students.db')
cursor = conn.cursor()
cursor.execute('INSERT INTO textbook_orders (student_id, textbook_name, quantity) VALUES (?, ?, ?)',
(student_id, textbook_name, quantity))
conn.commit()
conn.close()
if __name__ == '__main__':
main()
]]>
小王:太棒了!这样学生们就可以轻松地管理他们的征订信息了。