一、引言
随着学校社团活动的日益丰富,社团管理成为了一个重要的任务。为了提高社团管理的效率,本课程设计旨在开发一个基于Python的学生社团管理系统。该系统将涵盖社团的基本信息管理、成员管理、活动管理等功能,旨在为学生社团提供一个便捷、高效的管理平台。
二、系统需求分析
- 社团信息管理:系统应能够添加、修改、删除和查询社团的基本信息,如社团名称、社团简介、成立时间等。
- 成员管理:系统应支持社团成员的注册、登录、信息修改、退社等功能,并能记录成员的基本信息,如姓名、学号、联系方式等。
- 活动管理:系统应支持社团活动的添加、修改、删除和查询功能,包括活动的名称、时间、地点、参与人员等信息。
三、系统设计
界面设计:设计简洁明了的用户界面,方便用户快速上手。界面应支持中文显示,并提供友好的操作提示。
1.首页
2.添加学生信息
3.删除学生信息
4.修改学生信息
5.添加社团信息
6.删除社团信息
7.修改社团信息
8.查询信息
四、系统实现
- 环境搭建:安装Python解释器、SQLite数据库以及必要的开发工具和库(如Tkinter用于图形界面开发)。
- 代码编写:根据系统设计,编写相应的Python代码实现各项功能。包括数据库操作、界面显示、用户交互等。
- 功能测试:对系统进行全面的功能测试,确保各项功能均能正常工作。对测试过程中发现的问题进行修复和优化。
五、系统展示
- 主界面:展示社团列表、成员列表和活动列表。用户可根据需求选择相应的功能进行操作。
- 社团管理界面:管理员可添加、修改、删除和查询社团信息。
- 成员管理界面:管理员可查看成员列表,对成员进行注册、修改信息、退社等操作。成员可查看自己的信息并进行修改。
- 活动管理界面:管理员可添加、修改、删除和查询活动信息。成员可查看活动列表并报名参加活动。
六、总结与展望
通过本次课程设计,我们成功开发了一个基于Python的学生社团管理系统。该系统实现了社团信息管理、成员管理、活动管理等功能,提高了社团管理的效率。在未来的工作中,我们将进一步完善系统功能,优化用户体验,并探索更多的应用场景和技术实现方式。同时,我们也希望能够将本次课程设计的成果应用于实际场景中,为学生社团的管理提供有力支持。
七、代码实现
# 导入Tkinter库,用于创建图形用户界面
import tkinter as tk
from tkinter import messagebox#显示消息框
from tkinter import simpledialog#简单的对话框
from tkinter import *
class Entity:#实体类定义了Entity类,提供了基本操作
def __init__(self):
self.data = {}# 初始化一个空字典,用于存储实体数据
def add(self, name, description):#添加数据
self.data[name] = description# 将name和description作为键值对存储到data字典中
def delete(self, name):
if name in self.data:
del self.data[name]# 则删除该键值对
def modify(self, old_name, new_name, description):
if old_name in self.data:# 如果要修改的old_name在data字典中存在
del self.data[old_name] # 则先删除该键值对
self.data[new_name] = description# 然后添加新的键值对
def search(self, keyword):
result = []
for name, description in self.data.items():
if keyword.lower() in name.lower() or keyword.lower() in description.lower():# 如果搜索关键字与name或description匹配
result.append(f"{name}: {description}")
return "\n".join(result) # 将结果列表转换为字符串,并返回该字符串
def save_to_txt_file(self, filename):
with open(filename, "w") as file: # 打开指定的文本文件,准备写入数据
for name, description in self.data.items():
file.write(f"{name},{description}\n")
def display_txt_file(self, filename):
with open(filename, "r") as file: # 打开指定的文本文件,准备读取数据
print(file.read()) # 读取文件内容并打印到控制台
# 定义Student类,继承自Entity类,表示学生实体,并添加了学生管理相关的特定方法
class Student(Entity):
def add_student(self, name, age, grade):
description = f"Age: {age}, Grade: {grade}"
self.add(name, description) # 调用父类的add方法添加学生信息
self.save_to_txt_file("students.txt") # 将学生信息保存到"students.txt"文件中
def delete_student(self, name):
self.delete(name)
self.save_to_txt_file("students.txt") # 将更改保存到"students.txt"文件中
def modify_student(self, old_name, new_name, age, grade):
description = f"Age: {age}, Grade: {grade}"
self.modify(old_name, new_name, description)
self.save_to_txt_file("students.txt") # 将更改保存到"students.txt"文件中
def search_student(self, keyword):
result = self.search(keyword)# 调用父类的search方法搜索学生信息
self.save_to_txt_file("students.txt")
return result
class Club(Entity):
def add_club(self, name, description):
self.add(name, description)
self.save_to_txt_file("club.txt")
def delete_club(self, name):
self.delete(name)
self.save_to_txt_file("club.txt")
def modify_club(self, old_name, new_name, description):
self.modify(old_name, new_name, description)
self.save_to_txt_file("club.txt")
def search_club(self, keyword):
result = self.search(keyword)
self.save_to_txt_file("club.txt")
return result
class App(tk.Tk):
def __init__(self):
super().__init__()
self.title("学生社团管理系统")#框体名
self.geometry("400x300")#改变窗体大小
self.students = Student()
self.clubs = Club()
self.create_widgets()
def create_widgets(self):
self.label = tk.Label(self, text="学生社团管理系统", font=("Arial", 18))
self.label.pack(pady=10)
self.add_student_button = tk.Button(self, text="添加学生信息", command=self.add_student)
self.add_student_button.pack()
self.add_club_button = tk.Button(self, text="添加社团信息", command=self.add_club)
self.add_club_button.pack()
self.delete_student_button = tk.Button(self, text="删除学生信息", command=self.delete_student)
self.delete_student_button.pack()
self.delete_club_button = tk.Button(self, text="删除社团信息", command=self.delete_club)
self.delete_club_button.pack()
self.modify_student_button = tk.Button(self, text="修改学生信息", command=self.modify_student)
self.modify_student_button.pack()
self.modify_club_button = tk.Button(self, text="修改社团信息", command=self.modify_club)
self.modify_club_button.pack()
self.search_button = tk.Button(self, text="查询相关信息", command=self.search)
self.search_button.pack()
def add_student(self):
# 使用tkinter的simpledialog模块弹出一个对话框,获取用户输入的学生姓名
name = simpledialog.askstring("Add Student", "输入学生姓名:")
age = simpledialog.askinteger("Add Student", "输入学生年龄:")
grade = simpledialog.askstring("Add Student", "输入学生年级:")
if name and age and grade:
self.students.add_student(name, age, grade)
messagebox.showinfo("Success", "学生信息添加成功")
def add_club(self):
# 使用tkinter的simpledialog模块弹出一个对话框,获取用户输入的社团名称
name = simpledialog.askstring("Add Club", "输入社团名称:")
description = simpledialog.askstring("Add Club", "输入描述信息:")
if name and description:
self.clubs.add_club(name, description)
# 使用tkinter的messagebox模块弹出一个对话框,提示用户学生信息添加成功
messagebox.showinfo("Success", "社团信息添加成功")
def search(self):
keyword = simpledialog.askstring("Search", "输入关键字用于查询:")
if keyword:
student_result = self.students.search_student(keyword)
club_result = self.clubs.search_club(keyword)
result = f"Students:\n{student_result}\n\nClubs:\n{club_result}"
messagebox.showinfo("查询结果", result)
def delete_student(self):
name = simpledialog.askstring("Delete Student", "输入学生姓名用于删除:")
if name:
self.students.delete_student(name)
messagebox.showinfo("Success", "学生信息删除成功")
def delete_club(self):
name = simpledialog.askstring("Delete Club", "输入社团名称用于删除:")
if name:
self.clubs.delete_club(name)
messagebox.showinfo("Success", "社团信息删除成功")
def modify_student(self):
name = simpledialog.askstring("Modify Student", "输入学生姓名用于修改:")
if name:
new_name = simpledialog.askstring("Modify Student", "输入新的学生姓名:")
new_age = simpledialog.askinteger("Modify Student", "输入新的学生年龄:")
new_grade = simpledialog.askstring("Modify Student", "输入新的学生年级:")
if new_name and new_age and new_grade:
self.students.modify_student(name, new_name, new_age, new_grade)
messagebox.showinfo("Success", "学生信息修改成功")
def modify_club(self):
# 使用tkinter的simpledialog模块弹出一个对话框,获取用户输入的社团名称
name = simpledialog.askstring("Modify Club", "输入社团名称用于修改:")
if name:
new_name = simpledialog.askstring("Modify Club", "输入新的社团名称:")
new_description = simpledialog.askstring("Modify Club", "输入新的社团信息:")
if new_name and new_description:
self.clubs.modify_club(name, new_name, new_description) # 调用modify_club方法
# 弹出对话框,提示用户社团信息修改成功
messagebox.showinfo("Success", "社团信息修改成功")
if __name__ == "__main__":
app = App()
app.mainloop()