嘿,大家好!今天咱们聊点有意思的。你有没有想过,如果有一个系统能帮学校管理学生的各种信息,比如姓名、学号、成绩、班级之类的,那该多方便啊?其实这玩意儿在计算机领域叫做“学生管理信息系统”,简称SMIS。今天我就来给大家讲讲怎么用Python写一个这样的系统,而且是针对吉林地区的。
首先,我得说一下为啥选Python。因为Python语法简单,上手快,特别适合做这种小项目。而且它还有不少库可以用来操作数据库,比如说SQLite,这个数据库轻量级,不需要安装复杂的服务器,直接就能用。对于刚入门的同学来说,简直是太友好了。
现在咱们开始动手了。首先,我们需要一个数据库来存储学生的信息。SQLite是一个很常见的选择,因为它不需要额外的配置,直接在Python里就能操作。我们可以用Python的sqlite3模块来创建和操作数据库。
先来写个简单的代码,创建一个学生表。这个表里面应该包括学生的基本信息,比如学号、姓名、性别、出生日期、班级、成绩等等。代码大概就是这样的:
import sqlite3
# 连接到SQLite数据库(如果不存在就创建)
conn = sqlite3.connect('jilin_student.db')
cursor = conn.cursor()
# 创建学生表
cursor.execute('''
CREATE TABLE IF NOT EXISTS students (
id INTEGER PRIMARY KEY AUTOINCREMENT,
student_id TEXT NOT NULL,
name TEXT NOT NULL,
gender TEXT,
birth_date TEXT,
class TEXT,
score REAL
)
''')
# 提交事务
conn.commit()

好了,这段代码的作用就是创建一个叫`jilin_student.db`的数据库文件,然后在里面建一个`students`表。表里有学生的基本信息字段。如果你运行这段代码,就会看到数据库被创建了,而且表也建好了。
接下来,我们得想办法往这个表里添加数据。比如说,添加一个学生的信息。我们可以写一个函数,用来插入学生数据。代码如下:
def add_student(student_id, name, gender, birth_date, class_name, score):
cursor.execute('''
INSERT INTO students (student_id, name, gender, birth_date, class, score)
VALUES (?, ?, ?, ?, ?, ?)
''', (student_id, name, gender, birth_date, class_name, score))
conn.commit()
这段代码里的`?`是占位符,用来防止SQL注入攻击。然后我们调用这个函数,把学生的信息传进去,就能把数据插入到数据库里了。
比如说,我们现在要添加一个学生,学号是20240101,名字叫张三,性别男,出生日期是2005-05-05,班级是高一(1)班,成绩是85.5。我们可以这样调用函数:
add_student('20240101', '张三', '男', '2005-05-05', '高一(1)班', 85.5)
运行之后,数据就被加进去了。是不是很简单?
然后,我们还需要一个功能,就是查询学生信息。比如说,根据学号查一个学生的信息。这时候我们可以写一个查询函数:
def get_student_by_id(student_id):
cursor.execute('SELECT * FROM students WHERE student_id = ?', (student_id,))
return cursor.fetchone()
这个函数返回的是一个元组,里面包含学生的所有信息。你可以把它打印出来看看效果。
除此之外,还可以写一些修改和删除的功能。比如说,修改一个学生的成绩或者班级。这部分代码也不复杂,不过我得提醒你,修改和删除操作一定要小心,别搞错了,不然可能把数据删掉或者改错。
现在,我们已经有了一个基本的学生管理系统。不过,现在还只是命令行操作,不够直观。那怎么办呢?我们可以考虑做一个简单的图形界面,或者用Web来做。不过对于初学者来说,先从命令行做起更合适。
所以接下来,我们可以写一个简单的菜单,让用户可以选择添加、查询、修改、删除学生信息。代码大致如下:
while True:
print("\n--- 学生管理系统 ---")
print("1. 添加学生")
print("2. 查询学生")
print("3. 修改学生")
print("4. 删除学生")
print("5. 退出")
choice = input("请选择操作:")
if choice == '1':
student_id = input("请输入学号:")
name = input("请输入姓名:")
gender = input("请输入性别:")
birth_date = input("请输入出生日期(YYYY-MM-DD):")
class_name = input("请输入班级:")
score = float(input("请输入成绩:"))
add_student(student_id, name, gender, birth_date, class_name, score)
print("学生信息已添加!")
elif choice == '2':
student_id = input("请输入要查询的学号:")
student = get_student_by_id(student_id)
if student:
print(f"学号:{student[1]},姓名:{student[2]},性别:{student[3]},出生日期:{student[4]},班级:{student[5]},成绩:{student[6]}")
else:
print("未找到该学生!")
elif choice == '3':
student_id = input("请输入要修改的学号:")
student = get_student_by_id(student_id)
if student:
new_score = float(input("请输入新的成绩:"))
cursor.execute('UPDATE students SET score = ? WHERE student_id = ?', (new_score, student_id))
conn.commit()
print("学生信息已更新!")
else:
print("未找到该学生!")
elif choice == '4':
student_id = input("请输入要删除的学号:")
cursor.execute('DELETE FROM students WHERE student_id = ?', (student_id,))
conn.commit()
print("学生信息已删除!")
elif choice == '5':
break
else:
print("无效选项,请重新输入!")
这个循环会一直运行,直到用户选择退出。每次循环都会显示一个菜单,用户可以根据提示进行操作。这样,整个系统就初步完成了。
不过,这里有个问题,就是没有对输入的数据做校验。比如,学号是否重复,成绩是否是数字,这些都没有处理。如果以后想把这个系统做得更完善,就需要加上这些校验逻辑。不过对于现在的学习阶段来说,先实现基本功能就可以了。
再说一句,这个系统是基于吉林地区的背景写的,所以我们可以给它起个名字,比如“吉林学生管理信息系统”。虽然目前只是一个简单的版本,但它是可以扩展的。比如,可以加入更多功能,比如按班级查询、按成绩排序、导出数据到Excel等等。
如果你感兴趣的话,还可以进一步学习如何用Python开发Web应用,比如用Flask或Django框架,把系统变成一个网页版的,这样用户可以通过浏览器访问,操作起来更方便。
总结一下,今天的这个系统虽然简单,但已经涵盖了学生管理的基本功能:添加、查询、修改、删除。并且使用了Python和SQLite,这两个都是很实用的技术。如果你是刚开始学编程,或者对数据库操作不太熟悉,那么这个例子应该能帮你理解一些基本概念。
最后,我建议大家多动手实践。不要只看代码,要自己敲一遍,看看能不能运行成功。遇到问题的时候,可以去查文档或者搜索网上的教程。记住,编程最重要的是不断练习和积累经验。
好了,今天的分享就到这里。希望你们能通过这个例子,对“学生管理信息系统”有一个初步的认识。如果你有什么想法或者疑问,欢迎留言交流!我们下期再见!
