简介
非常适合咱们大学生写实训报告!!!!!
桌面化学生管理系统是一种专门为教育机构设计的管理软件,主要用于学校的学生信息管理。主要功能包括学生信息的录入、存储、查询、修改和删除,以及学生选课管理等。系统通过集中的数据存储,为教育工作者、学生及其学生家长提供方便的数据访问和处理功能,涵盖了 学生的基本信息管理、学籍档案等多个方面。
1、需求分析
能够添加学生信息,包括年龄和姓名。
可以列出已添加的所有学生信息。
支持修改特定学生的姓名和年龄,通过输入学生序号来选择要修改的学生。
允许删除特定学生,同样通过输入学生序号进行选择。
提供简洁直观的图形用户界面,方便用户输入和操作。
当用户输入无效的学生序号进行修改或删除操作时,给出错误提示。
2、技术简介
Tkinter:这是 Python 内置的标准 GUI(图形用户界面)库,用于创建桌面应用程序。它提供了各种小部件(如标签、按钮、文本框等)和布局管理器,方便开发者快速构建用户界面。
消息框(messagebox):用于在应用程序中显示各种类型的消息框,如提示信息、错误信息等,以增强用户交互和反馈。
3、开发环境配置
使用Windows操作系统使用了pycharm内置的tkinter和messagebox。
4、数据结构设计
使用一个列表 students 来存储所有学生的信息。每个学生的信息以字典的形式存储,包含键值对 "name"(姓名)和 "age"(年龄)。
用户输入数据的处理:
通过文本输入框 name_entry 和 age_entry 获取用户输入的学生姓名年龄。对于年龄,在添加和修改学生信息时,会检查输入是否为数字,确保数据的有效性。
学生序号的处理:
在修改和删除学生信息时,用户需要输入学生的序号。程序会将用户输入的序号转换为整数,并与列表中学生的索引进行对应,以确定要操作的具体学生。同时,会进行有效性检查,确保输入的序号在合法范围内。
5、详细设计
1、导入模块和初始化数据
import tkinter as tk
from tkinter import messagebox
students = []
导入了 Tkinter 模块和消息框模块,同时初始化了一个空列表 students,用于存储学生信息。
2、通过获取输入框 name_entry 和 age_entry 的内容,判断姓名不为空且年龄为数字时,将学生信息以字典形式添加到 students 列表中,并弹出成功消息框,同时清空输入框。如果输入不符合要求,则弹出错误消息框。
def add_student():
name = name_entry.get()
age = age_entry.get()
if name and age.isdigit():
students.append({"name": name, "age": int(age)})
messagebox.showinfo("成功", f"学生 {name} 添加成功。")
name_entry.delete(0, tk.END)
age_entry.delete(0, tk.END)
else:
messagebox.showerror("错误", "请输入正确的姓名和年龄。")
3、列出学生模块
def list_students():
if not students:
messagebox.showinfo("信息", "目前没有学生信息。")
else:
student_list_text.delete(1.0, tk.END)
for index, student in enumerate(students):
student_list_text.insert(tk.END, f"{index + 1}. 姓名:{student['name']},年龄:{student['age']}\n")
判断 students 列表是否为空,如果为空则弹出提示信息。
如果不为空,则清空文本框 student_list_text,并遍历 students 列表,将学生信息逐行插入到文本框中展示。
4、修改学生模块
def update_student():
list_students()
if students:
choice = update_choice_entry.get()
if choice.isdigit() and 1 <= int(choice) <= len(students):
new_name = new_name_entry.get()
new_age = new_age_entry.get()
if new_name and new_age.isdigit():
students[int(choice) - 1]["name"] = new_name
students[int(choice) - 1]["age"] = int(new_age)
messagebox.showinfo("成功", "学生信息修改成功。")
new_name_entry.delete(0, tk.END)
new_age_entry.delete(0, tk.END)
update_choice_entry.delete(0, tk.END)
else:
messagebox.showerror("错误", "请输入正确的姓名和年龄。")
else:
messagebox.showerror("错误", "无效的序号。")
首先调用 list_students 函数列出当前学生信息。
获取输入框 update_choice_entry 的内容,判断是否为有效的序号。
如果是有效的序号,再获取新的姓名和年龄输入,判断是否符合要求。
如果符合要求,则更新对应学生的信息,弹出成功消息框,并清空相关输入框。
5、删除学生模块
def delete_student():
list_students()
if students:
choice = delete_choice_entry.get()
if choice.isdigit() and 1 <= int(choice) <= len(students):
del students[int(choice) - 1]
messagebox.showinfo("成功", "学生信息删除成功。")
delete_choice_entry.delete(0, tk.END)
else:
messagebox.showerror("错误", "无效的序号。")
同样先调用 list_students 函数列出当前学生信息。
获取输入框 delete_choice_entry 的内容,判断是否为有效的序号。
如果是有效的序号,则删除对应学生的信息,弹出成功消息框,并清空输入框。
6、界面搭建模块
root = tk.Tk()
root.title("学生管理系统")
# 添加学生部分
add_label = tk.Label(root, text="添加学生")
add_label.pack()
name_label = tk.Label(root, text="姓名:")
name_label.pack()
name_entry = tk.Entry(root)
name_entry.pack()
age_label = tk.Label(root, text="年龄:")
age_label.pack()
age_entry = tk.Entry(root)
age_entry.pack()
add_button = tk.Button(root, text="添加", command=add_student)
add_button.pack()
# 列出学生部分
list_label = tk.Label(root, text="列出学生")
list_label.pack()
list_button = tk.Button(root, text="列出", command=list_students)
list_button.pack()
student_list_text = tk.Text(root, height=10, width=50)
student_list_text.pack()
# 修改学生部分
update_label = tk.Label(root, text="修改学生信息")
update_label.pack()
update_choice_label = tk.Label(root, text="输入要修改的学生序号:")
update_choice_label.pack()
update_choice_entry = tk.Entry(root)
update_choice_entry.pack()
new_name_label = tk.Label(root, text="新姓名:")
new_name_label.pack()
new_name_entry = tk.Entry(root)
new_name_entry.pack()
new_age_label = tk.Label(root, text="新年龄:")
new_age_label.pack()
new_age_entry = tk.Entry(root)
new_age_entry.pack()
update_button = tk.Button(root, text="修改", command=update_student)
update_button.pack()
# 删除学生部分
delete_label = tk.Label(root, text="删除学生")
delete_label.pack()
delete_choice_label = tk.Label(root, text="输入要删除的学生序号:")
delete_choice_label.pack()
delete_choice_entry = tk.Entry(root)
delete_choice_entry.pack()
delete_button = tk.Button(root, text="删除", command=delete_student)
delete_button.pack()
root.mainloop()
创建了一个 Tkinter 窗口,并设置了标题。
分别为添加学生、列出学生、修改学生和删除学生四个功能模块创建了对应的标签、输入框和按钮,并进行布局。
最后通过 mainloop 方法启动窗口的事件循环。
6、软件测试
添加学生界面:
“添加学生” 标签提示用户当前处于添加学生的功能区。
“姓名:” 和 “年龄:” 标签分别对应输入学生姓名和年龄的文本框。
“添加” 按钮用于触发添加学生的操作。
列出学生界面:
“列出学生” 标签提示此区域用于展示学生列表。
“列出” 按钮用于触发显示当前已添加学生信息的操作。
文本框用于显示学生信息列表,包括序号、姓名和年龄,每行一个学生信息。
修改学生界面:
“修改学生信息” 标签提示此部分用于修改学生信息。
“输入要修改的学生序号:” 标签对应一个文本框,用于输入要修改的学生序号。
“新姓名:” 和 “新年龄:” 标签分别对应输入新姓名和新年龄的文本框。
“修改” 按钮用于触发修改学生信息的操作。
删除学生界面:
“删除学生” 标签提示此区域用于删除学生信息。
“输入要删除的学生序号:” 标签对应一个文本框,用于输入要删除的学生序号。
“删除” 按钮用于触发删除学生信息的操作。