用Python搭建一个简单的‘学工管理系统’,结合崇左的地理信息
大家好,今天咱们来聊聊怎么用Python做一个简单的“学工管理系统”,并且还和“崇左”这个地名有点关系。可能有人会问,学工管理系统是什么?其实就是学校里用来管理学生工作的系统,比如学生的成绩、考勤、奖惩之类的。而“崇左”是广西的一个城市,虽然看起来好像和学工系统没什么直接关系,但我们可以把系统设计得更“本地化”,比如加入一些地理信息功能。
首先,我得说一下,这篇文章不是那种纯理论的,也不是那种教你“怎么用”的那种,而是想通过实际代码和例子,让大家理解怎么从0开始做一个学工管理系统,同时还能结合一点地理信息的数据,比如地图坐标、天气等,让系统更有“地方特色”。
先来点轻松的,咱们先不急着写代码,先讲讲为什么要做这个系统。其实现在很多学校还在用比较传统的纸质记录或者Excel表格,效率低不说,还容易出错。如果有一个系统,能自动处理这些数据,那多方便啊。而且,如果你是一个程序员,或者刚接触编程的新手,这绝对是个不错的项目练手。
现在我们来说说技术方面。首先,我们要用什么语言?Python当然是首选,因为它的语法简单,生态丰富,很多库都可以直接用。比如,我们可以用Flask或者Django做Web框架,用SQLite或者MySQL做数据库,再配合一些前端技术,比如HTML、CSS、JavaScript,就能做出一个完整的系统了。
不过,为了简化问题,咱们这次先不搞前端,只做个后端的API,然后用命令行来操作。这样大家更容易理解,也更方便测试。当然,后面如果有兴趣的话,可以慢慢扩展成网页版。
接下来,咱们先来设计一下系统的结构。学工管理系统的核心功能应该包括:
- 学生信息管理(增删改查)
- 成绩管理
- 考勤记录
- 奖惩记录
- 地理信息查询(比如崇左的天气、地图)
今天我们先实现前三个功能,后面再说地理信息的事。
那么,先来写个简单的数据库模型。这里我们用SQLite,因为它不需要额外安装,直接用Python内置的sqlite3模块就可以。
import sqlite3
conn = sqlite3.connect('student.db')
cursor = conn.cursor()
# 创建学生表
cursor.execute('''
CREATE TABLE IF NOT EXISTS students (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
student_id TEXT NOT NULL UNIQUE,
major TEXT,
class TEXT,
gender TEXT
)
''')
# 创建成绩表
cursor.execute('''
CREATE TABLE IF NOT EXISTS grades (
id INTEGER PRIMARY KEY AUTOINCREMENT,
student_id TEXT NOT NULL,
course TEXT NOT NULL,
score INTEGER
)
''')
# 创建考勤表
cursor.execute('''
CREATE TABLE IF NOT EXISTS attendance (
id INTEGER PRIMARY KEY AUTOINCREMENT,
student_id TEXT NOT NULL,
date DATE,
status TEXT
)
''')
conn.commit()
conn.close()
这段代码就是创建三个表:students、grades、attendance。每个表都有自己的字段,比如学生信息、成绩、考勤记录。注意,这里用了UNIQUE约束,确保每个学生的学号是唯一的,避免重复录入。
接下来,我们需要写一些函数来操作这些数据。比如添加学生、查询学生、更新成绩、记录考勤等等。

def add_student(name, student_id, major, class_name, gender):
conn = sqlite3.connect('student.db')
cursor = conn.cursor()
cursor.execute("INSERT INTO students (name, student_id, major, class, gender) VALUES (?, ?, ?, ?, ?)",
(name, student_id, major, class_name, gender))
conn.commit()
conn.close()
def get_students():
conn = sqlite3.connect('student.db')
cursor = conn.cursor()
cursor.execute("SELECT * FROM students")
results = cursor.fetchall()
conn.close()
return results
def update_grade(student_id, course, score):
conn = sqlite3.connect('student.db')
cursor = conn.cursor()
cursor.execute("UPDATE grades SET score = ? WHERE student_id = ? AND course = ?",
(score, student_id, course))
conn.commit()
conn.close()
def record_attendance(student_id, date, status):
conn = sqlite3.connect('student.db')
cursor = conn.cursor()
cursor.execute("INSERT INTO attendance (student_id, date, status) VALUES (?, ?, ?)",
(student_id, date, status))
conn.commit()
conn.close()
这些函数就是对数据库的基本操作。比如add_student是用来添加学生的,get_students是获取所有学生的信息,update_grade是修改成绩,record_attendance是记录考勤。
有了这些基础功能之后,我们可以写一个简单的命令行界面,让用户输入指令来操作系统。比如:
def main():
while True:
print("\n学工管理系统")
print("1. 添加学生")
print("2. 查看学生")
print("3. 修改成绩")
print("4. 记录考勤")
print("5. 退出")
choice = input("请选择: ")
if choice == '1':
name = input("请输入姓名: ")
student_id = input("请输入学号: ")
major = input("请输入专业: ")
class_name = input("请输入班级: ")
gender = input("请输入性别: ")
add_student(name, student_id, major, class_name, gender)
print("学生已添加!")
elif choice == '2':
students = get_students()
for student in students:
print(student)
elif choice == '3':
student_id = input("请输入学号: ")
course = input("请输入课程: ")
score = int(input("请输入成绩: "))
update_grade(student_id, course, score)
print("成绩已更新!")
elif choice == '4':
student_id = input("请输入学号: ")
date = input("请输入日期 (YYYY-MM-DD): ")
status = input("请输入状态 (正常/缺课/迟到): ")
record_attendance(student_id, date, status)
print("考勤已记录!")
elif choice == '5':
print("退出系统。")
break
else:
print("无效选项,请重新选择。")
if __name__ == "__main__":
main()
这个主函数就是一个简单的命令行菜单,用户可以选择不同的操作。比如添加学生、查看学生、修改成绩、记录考勤,最后退出。
到这里,我们已经完成了一个非常基础的学工管理系统了。虽然它没有图形界面,也没有复杂的业务逻辑,但它确实具备了基本的学生信息管理功能。
现在,我们来聊聊“崇左”这个地名。虽然刚才的系统并没有直接和崇左相关联,但如果我们想让它更“本地化”,可以加入一些地理信息的功能。比如,查询崇左的天气、地图位置,甚至根据学生所在地区推荐课程或活动。
比如,我们可以用OpenWeatherMap API来获取崇左的天气信息。不过这个需要注册一个API密钥,这里就不详细展开,但你可以参考下面的代码:
import requests
def get_weather(city):
api_key = "你的API密钥"
url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}"
response = requests.get(url)
data = response.json()
if data["cod"] != 200:
return "无法获取天气信息"
weather = data["weather"][0]["description"]
temperature = data["main"]["temp"] - 273.15 # 转换为摄氏度
return f"{city} 的天气是 {weather},温度是 {temperature:.1f}°C"
print(get_weather("Chongzuo"))
这段代码就是调用OpenWeatherMap API来获取崇左的天气信息。当然,你得自己去申请一个API密钥,才能运行这段代码。
如果你有更多时间,还可以把天气信息集成到学工管理系统中,比如在学生信息页面显示他们所在城市的天气,或者在系统中加入“根据天气推荐课程”这样的功能。
总结一下,今天我们用Python写了一个简单的学工管理系统,包括学生信息管理、成绩管理和考勤记录。虽然功能比较简单,但它是建立在真实需求上的,非常适合新手练习。同时,我们也提到了如何将系统与“崇左”这样的地理信息结合起来,让系统更具本地特色。
如果你对这个项目感兴趣,可以继续扩展它,比如加入前端页面、权限管理、数据分析等功能。也可以尝试连接更多的外部API,比如地图服务、天气预报、甚至短信通知等,让系统变得更强大。
最后,希望这篇文章对你有帮助,也欢迎你在评论区分享你的想法或者提出问题。如果你觉得有用,记得点赞和转发哦!
本站知识库部分内容及素材来源于互联网,如有侵权,联系必删!

