创作不易,尊重原则。
完整源代码(功能扩展)厚台私信。
目录
一、为什么做这个案例?
大学期间的一个python课程大作业,当时老师给给出很多的题目选择,个人感觉管理系统比较容易上手,因此选择做这个程序,现在做一个案例和大家分享交流。
二、功能需求有哪些?
- 开发图形用户界面(GUI)(这里用到python的tkinter库)
- 使用到python内置的os csv
- 登录功能
- 学生信息的增删改查功能
- 排序功能(按字段如:学号/姓名/年龄)
- 信息维护性(这里只演示“修改管理员的密码”)
三、代码过程
3.1、创建项目及基础配置
在桌面上创建了一个名为python_code的文件夹

新建一个main.py文件和users.txt文件

代码文件解释:
main.py:主程序
users.txt:存储管理员的账号信息
在main.py文件中写入:
import tkinter as tk
from tkinter import messagebox
import os
import re
# 读取用户信息
def load_users():
if not os.path.exists('users.txt'):
return {}
with open('users.txt', 'r') as file:
lines = file.readlines()
users = {}
for line in lines:
username, password = line.strip().split(':')
users[username] = password
return users
# 验证登录
def validate_login():
username = entry_username.get()
password = entry_password.get()
users = load_users()
if username in users and users[username] == password:
messagebox.showinfo("成功", "登录成功")
root.destroy() # 关闭登录窗口
student_management_page() # 跳转到学生信息管理页面
else:
messagebox.showerror("错误", "用户名或密码错误")
# 登录界面
def login_page():
global entry_username, entry_password, root
root = tk.Tk()
root.title("登录")
root.geometry("300x150")
label_username = tk.Label(root, text="用户名:")
label_username.pack(pady=5)
entry_username = tk.Entry(root)
entry_username.pack(pady=5)
label_password = tk.Label(root, text="密码:")
label_password.pack(pady=5)
entry_password = tk.Entry(root, show="*")
entry_password.pack(pady=5)
button_login = tk.Button(root, text="登录", command=validate_login)
button_login.pack(pady=10)
root.mainloop()
在users.txt中写入以下内容:
admin:password
双击运行main.py文件。(需要将打开方式设置为Python-点击文件-右键-打开方式-Python)
看到这个运行界面,运行成功!

或者在项目目录下打开终端(cmd),执行命令:
python main.py


这种方式也一样可以运行。
3.2、创建学生信息数据
在项目目录下,创建一个students.csv文件
存储学生信息
文件格式:使用CSV文件,每行存储一个学生的记录。
字段:学号、姓名、性别、年龄、专业、班级。
接着创建一个generate_students.py文件,写入以下代码:
import csv
# 学生信息数据
students_data = [
["学号", "姓名", "性别", "年龄", "专业", "班级"],
["20210001", "张三", "男", 20, "计算机科学", "1班"],
["20210002", "李四", "女", 21, "电子信息工程", "2班"],
["20210003", "王五", "男", 19, "机械工程", "3班"],
["20210004", "赵六", "女", 20, "土木工程", "1班"],
["20210005", "孙七", "男", 22, "自动化", "2班"],
["20210006", "周八", "女", 21, "电气工程", "3班"],
["20210007", "吴九", "男", 20, "材料科学", "1班"],
["20210008", "郑十", "女", 19, "化学工程", "2班"],
["20210009", "冯十一", "男", 21, "生物医学工程", "3班"],
["20210010", "陈十二", "女", 20, "环境科学", "1班"],
["20210011", "杨十三", "男", 22, "数学", "2班"],
["20210012", "黄十四", "女", 21, "物理", "3班"],
["20210013", "张十五", "男", 20, "哲学", "1班"],
["20210014", "李十六", "女", 19, "历史", "2班"],
["20210015", "王十七", "男", 21, "文学", "3班"],
["20210016", "赵十八", "女", 20, "艺术", "1班"],
["20210017", "孙十九", "男", 22, "法学", "2班"],
["20210018", "周二十", "女", 21, "经济学", "3班"],
["20210019", "吴二十一", "男", 20, "管理学", "1班"],
["20210020", "郑二十二", "女", 19, "心理学", "2班"]
]
# 写入学生信息到文件
with open('students.csv', 'w', newline='', encoding='utf-8-sig') as file:
writer = csv.writer(file)
writer.writerows(students_data)
print("学生信息数据已生成并保存到 students.csv 文件中。")
代码解释:
创建学生信息数据,并将其存储到students.csv文件当中。
演示:
比如一开始的students.csv是没有任何数据的。
双击运行generate_students.py文件。

此时打开students.csv会发现:

3.3、增删改查(核心功能)
3.3.1、添加功能
# 添加学生信息
def add_student():
student_id = simpledialog.askstring("输入", "请输入学号:")
if student_id is None:
return
name = simpledialog.askstring("输入", "请输入姓名:")
if name is None:
return
gender = simpledialog.askstring("输入", "请输入性别:")
if gender is None:
return
age = simpledialog.askinteger("输入", "请输入年龄:")
if age is None:
return
major = simpledialog.askstring("输入", "请输入专业:")
if major is None:
return
class_name = simpledialog.askstring("输入", "请输入班级:")
if class_name is None:
return
new_student = [student_id, name, gender, str(age), major, class_name]
students = load_students()
students.append(new_student)
save_students(students)
messagebox.showinfo("成功", "学生信息添加成功")
3.3.2、删除功能
# 删除学生信息
def delete_student():
student_id = simpledialog.askstring("输入", "请输入要删除的学号:")
if student_id is None:
return
students = load_students()
found = False
for student in students[1:]:
if student[0] == student_id:
students.remove(student)
found = True
break
if found:
save_students(students)
messagebox.showinfo("成功", "学生信息删除成功")
else:
messagebox.showerror("错误", "未找到该学号的学生信息")
3.3.3、修改功能
# 修改学生信息
def update_student():
student_id = simpledialog.askstring("输入", "请输入要修改的学号:")
if student_id is None:
return
students = load_students()
found = False
for student in students[1:]:
if student[0] == student_id:
found = True
name = simpledialog.askstring("输入", "请输入新的姓名:", initialvalue=student[1])
if name is None:
return
gender = simpledialog.askstring("输入", "请输入新的性别:", initialvalue=student[2])
if gender is None:
return
age = simpledialog.askinteger("输入", "请输入新的年龄:", initialvalue=int(student[3]))
if age is None:
return
major = simpledialog.askstring("输入", "请输入新的专业:", initialvalue=student[4])
if major is None:
return
class_name = simpledialog.askstring("输入", "请输入新的班级:", initialvalue=student[5])
if class_name is None:
return
student[1] = name
student[2] = gender
student[3] = str(age)
student[4] = major
student[5] = class_name
break
if found:
save_students(students)
messagebox.showinfo("成功", "学生信息修改成功")
else:
messagebox.showerror("错误", "未找到该学号的学生信息")
3.3.4、查询功能
# 查询学生信息
def query_student():
query_type = simpledialog.askstring("输入", "请输入查询类型 (学号/姓名):")
if query_type is None:
return
query_value = simpledialog.askstring("输入", f"请输入{query_type}:")
if query_value is None:
return
students = load_students()
found = False
result = []
for student in students[1:]:
if (query_type == "学号" and student[0] == query_value) or (query_type == "姓名" and student[1] == query_value):
found = True
result.append(student)
if found:
result_text = "\n".join([", ".join(student) for student in result])
messagebox.showinfo("查询结果", result_text)
else:
messagebox.showerror("错误", f"未找到{query_type}为 {query_value} 的学生信息")
在 main.py 中添加以下 change_password 函数:
# 修改密码
def change_password():
current_password = simpledialog.askstring("输入", "请输入当前密码:")
if current_password is None:
return
new_password = simpledialog.askstring("输入", "请输入新密码:")
if new_password is None:
return
confirm_password = simpledialog.askstring("输入", "请确认新密码:")
if confirm_password is None:
return
if new_password != confirm_password:
messagebox.showerror("错误", "新密码和确认密码不一致")
return
users = load_users()
if users['admin'] == current_password:
users['admin'] = new_password
with open('users.txt', 'w') as file:
for username, password in users.items():
file.write(f"{username}:{password}\n")
messagebox.showinfo("成功", "密码修改成功")
else:
messagebox.showerror("错误", "当前密码错误")
四、程序演示
4.1、添加学生信息


4.2、删除学生信息

4.3、修改学生信息


4.4、查询学生信息


4.5、排序学生信息
五、写在最后
创作不易,期待你的点赞、收藏。
有需要完整代码的朋友,可以后台联系我~后台回复:学生信息管理系统
关注我,持续更新,了解更多实用的技术。
今天是12月1日,24年的最后一个月,祝大家一切顺利。



2945

被折叠的 条评论
为什么被折叠?



