桌面化学生管理系统的开发(简易版)

简介

非常适合咱们大学生写实训报告!!!!!

桌面化学生管理系统是一种专门为教育机构设计的管理软件,主要用于学校的学生信息管理。主要功能包括学生信息的录入、存储、查询、修改和删除,以及学生选课管理等。系统通过集中的数据存储,为教育工作者、学生及其学生家长提供方便的数据访问和处理功能,涵盖了 学生的基本信息管理、学籍档案等多个方面。

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、软件测试

添加学生界面:

“添加学生” 标签提示用户当前处于添加学生的功能区。

“姓名:” 和 “年龄:” 标签分别对应输入学生姓名和年龄的文本框。

“添加” 按钮用于触发添加学生的操作。

列出学生界面:

“列出学生” 标签提示此区域用于展示学生列表。

“列出” 按钮用于触发显示当前已添加学生信息的操作。

文本框用于显示学生信息列表,包括序号、姓名和年龄,每行一个学生信息。

修改学生界面:

“修改学生信息” 标签提示此部分用于修改学生信息。

“输入要修改的学生序号:” 标签对应一个文本框,用于输入要修改的学生序号。

“新姓名:” 和 “新年龄:” 标签分别对应输入新姓名和新年龄的文本框。

“修改” 按钮用于触发修改学生信息的操作。

删除学生界面:

“删除学生” 标签提示此区域用于删除学生信息。

“输入要删除的学生序号:” 标签对应一个文本框,用于输入要删除的学生序号。

“删除” 按钮用于触发删除学生信息的操作。

猜你喜欢

转载自blog.csdn.net/zhouA0221/article/details/143191342