Python-学生社团管理系统

一、引言

        随着学校社团活动的日益丰富,社团管理成为了一个重要的任务。为了提高社团管理的效率,本课程设计旨在开发一个基于Python的学生社团管理系统。该系统将涵盖社团的基本信息管理、成员管理、活动管理等功能,旨在为学生社团提供一个便捷、高效的管理平台。

二、系统需求分析

  1. 社团信息管理:系统应能够添加、修改、删除和查询社团的基本信息,如社团名称、社团简介、成立时间等。
  2. 成员管理:系统应支持社团成员的注册、登录、信息修改、退社等功能,并能记录成员的基本信息,如姓名、学号、联系方式等。
  3. 活动管理:系统应支持社团活动的添加、修改、删除和查询功能,包括活动的名称、时间、地点、参与人员等信息。

三、系统设计

界面设计:设计简洁明了的用户界面,方便用户快速上手。界面应支持中文显示,并提供友好的操作提示。

1.首页 

 

2.添加学生信息

3.删除学生信息

4.修改学生信息

5.添加社团信息

6.删除社团信息

7.修改社团信息

8.查询信息

四、系统实现

  1. 环境搭建:安装Python解释器、SQLite数据库以及必要的开发工具和库(如Tkinter用于图形界面开发)。
  2. 代码编写:根据系统设计,编写相应的Python代码实现各项功能。包括数据库操作、界面显示、用户交互等。
  3. 功能测试:对系统进行全面的功能测试,确保各项功能均能正常工作。对测试过程中发现的问题进行修复和优化。

五、系统展示

  1. 主界面:展示社团列表、成员列表和活动列表。用户可根据需求选择相应的功能进行操作。
  2. 社团管理界面:管理员可添加、修改、删除和查询社团信息。
  3. 成员管理界面:管理员可查看成员列表,对成员进行注册、修改信息、退社等操作。成员可查看自己的信息并进行修改。
  4. 活动管理界面:管理员可添加、修改、删除和查询活动信息。成员可查看活动列表并报名参加活动。

六、总结与展望

通过本次课程设计,我们成功开发了一个基于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()

  • 18
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值