当前位置: 代码网 > it编程>前端脚本>Python > 手把手教你做python学生管理系统

手把手教你做python学生管理系统

2025年04月26日 Python 我要评论
学生管理系统主要分为以下三个大类:一、用户类(user):属性:用户名(username)、密码(password)功能:注册(register)、登录(login)(1)注册:1、判断用户名是否已经

学生管理系统主要分为以下三个大类:

一、用户类(user):

属性:用户名(username)、密码(password)

功能:注册(register)、登录(login)

(1)注册:

1、判断用户名是否已经被注册过

2、注册成功

3、是否需要继续追加注册用户

def register(self):
    # 新用户注册
    while true:
        username = input("请输入用户名:")
        if username in self.users_database:
            print(f"用户名{username}已存在,请重新输入!")
            continue

        password = input('请输入密码:')
        self.users_database[username] = password
        print(f"用户{username}注册成功!")

        choice = input('是否继续注册用户?(y/n): ').lower()
        if choice != 'y':
            break

(2)登录:

1、用户名未注册

2、登录成功

3、三次输入用户名和密码错误,登录失败

def login(self):
    # 登录验证(检查注册状态+3次尝试机会)
    for i in range(3):  # 0, 1, 2
        username = input("请输入用户名:")

        # 先检查用户是否注册
        if username not in self.users_database:
            print(f"用户名 {username} 未注册,请先注册!")
            return false

        password = input("请输入密码:")

        if self.users_database[username] == password:
            self.username = username
            self.password = password
            self.logged_in = true
            print("登录成功!")
            return true

        # 只在还有尝试机会时显示提示
        if i < 2:
            print(f"密码错误,您还有{2 - i}次机会")

    else:  # 3次尝试都失败
        print("您已连续3次输入错误,请重新登录!")
        return false

二、学生类(student):

属性:学生信息(学号、姓名、性别、年龄、地址、电话)

三、学生管理类(studentmanagersystem):

属性:学生信息

方法:增加学生信息、删除学生信息、修改学生信息、查询单个学生信息、查询所有学生信息、退出系统

(1)增加学生信息

按学号进行筛选索引

def add_student(self):
    # 增加学生信息
    sid = input("请输入学生学号:")
    if sid in self.students:
        print("该学号已存在!")
        return

    sname = input("请输入学生姓名:")
    ssex = input("请输入学生性别:")
    try:
        sage = int(input("请输入学生年龄:"))
        address = input("请输入地址:")
        # 电话改为字符串,避免以0开头的号码问题
        tel = input("请输入电话:")
        self.students[sid] = student(sid, sname, ssex, sage, address, tel)
        print("添加成功!")
    except valueerror:
        print("年龄必须为数字!")

(2)删除学生信息

按学号进行筛选索引

def delete_student(self):
    if not self.students:
        print("当前无任何学生信息!")
        return
    # 删除学生信息
    sid = input("请输入要删除的学生学号:")
    if sid in self.students:
        del self.students[sid]
        print("删除成功!")
    else:
        print("未找到该学号的学生!")

(3)修改学生信息

1、按学号进行筛选索引

2、选择修改的项可以为单项或全部

def modify_student(self):
    if not self.students:
        print("当前无任何学生信息!")
        return
    # 修改学生信息
    sid = input("请输入要修改的学生学号:")
    if sid not in self.students:
        print("未找到该学号的学生!")
        return

    student = self.students[sid]
    student.display_info()

    print("\n请选择要修改的项:")
    print("1: 学号  2: 姓名  3: 性别  4: 年龄  5: 地址  6: 电话  7: 全部  8:退出")

    try:
        choice = input("请输入选择(1-8): ")
        if choice == '7':
            new_sid = input("新的学号:")
            new_sname = input("新的名字:")
            new_ssex = input("新的性别:")
            new_sage = int(input("新的年龄:"))
            new_address = input("新的地址:")
            new_tel = input("新的电话:")

            # 如果学号改变,需要先删除旧的再添加新的
            if new_sid != sid:
                del self.students[sid]
                self.students[new_sid] = student(new_sid, new_sname, new_ssex,
                                                 new_sage, new_address, new_tel)
            else:
                # 学号没变,直接修改对象属性
                student.sname = new_sname
                student.ssex = new_ssex
                student.sage = new_sage
                student.address = new_address
                student.tel = new_tel
        else:
            if choice == '1':
                new_sid = input("新的学号:")
                if new_sid != sid:
                    self.students[new_sid] = self.students.pop(sid)
                    self.students[new_sid].sid = new_sid
            elif choice == '2':
                student.sname = input("新的名字:")
            elif choice == '3':
                student.ssex = input("新的性别:")
            elif choice == '4':
                student.sage = int(input("新的年龄:"))
            elif choice == '5':
                student.address = input("新的地址:")
            elif choice == '6':
                student.tel = input("新的电话:")
            elif choice == '8':
                return
            else:
                print("无效选择!")
                return

        print("修改成功!")
    except valueerror:
        print("输入数据有误!")

(4)查询单个学生信息

按学号进行筛选索引

def find_student_by_sid(self):
    if not self.students:
        print("当前无任何学生信息!")
        return
    # 查询单个学生信息
    sid = input("请输入学生学号:")
    if sid in self.students:
        self.students[sid].display_info()
    else:
        print("未找到该学号的学生!")

(5)查询所有学生信息

def list_all_students(self):
    if not self.students:
        print("当前无任何学生信息!")
        return
    # 查询所有学生信息
    print("\n================== 所有学生信息 ==================")
    for sid, student in self.students.items():
        student.display_info()
    print("="*50)

(6)退出系统

四、测试

1、注册

2、登录

3、添加学生信息 

4、修改学生信息

5、查询单个学生信息

6、查询多个学生信息

五、运行代码

全部运行代码放在这里:

class user:
    def __init__(self, username=none, password=none):
        self.users_database = {}  # 类级别的用户数据库
        self.username = username
        self.password = password
        self.logged_in = false

    def register(self):
        # 新用户注册
        while true:
            username = input("请输入用户名:")
            if username in self.users_database:
                print(f"用户名{username}已存在,请重新输入!")
                continue

            password = input('请输入密码:')
            self.users_database[username] = password
            print(f"用户{username}注册成功!")

            choice = input('是否继续注册用户?(y/n): ').lower()
            if choice != 'y':
                break

    def login(self):
        # 登录验证(检查注册状态+3次尝试机会)
        for i in range(3):  # 0, 1, 2
            username = input("请输入用户名:")

            # 先检查用户是否注册
            if username not in self.users_database:
                print(f"用户名 {username} 未注册,请先注册!")
                return false

            password = input("请输入密码:")

            if self.users_database[username] == password:
                self.username = username
                self.password = password
                self.logged_in = true
                print("登录成功!")
                return true

            # 只在还有尝试机会时显示提示
            if i < 2:
                print(f"密码错误,您还有{2 - i}次机会")

        else:  # 3次尝试都失败
            print("您已连续3次输入错误,请重新登录!")
            return false

    def run(self):
        # 用户系统主界面
        while true:
            print("\n================== 用户系统 ==================")
            choice = input("请选择:1、注册 2、登录 3、退出")
            if choice == '1':
                self.register()
            elif choice == '2':
                if self.login():
                    # 登录成功后退出用户系统
                    return
            elif choice == '3':
                print("退出用户系统!")
                exit()
            else:
                print("无效选择,请重新输入!")


class student:
    def __init__(self, sid, sname, ssex, sage, address, tel):
        self.sid = sid
        self.sname = sname
        self.ssex = ssex
        self.sage = sage
        self.address = address
        self.tel = tel

    def display_info(self):
        # 显示学生信息
        print(f"学号:{self.sid},姓名:{self.sname},性别:{self.ssex},"
              f"年龄:{self.sage},地址:{self.address},电话:{self.tel}")


class studentmanagersystem:
    def __init__(self):
        self.students = {}  # 用字典存储学生对象,键为学号

    def add_student(self):
        # 增加学生信息
        sid = input("请输入学生学号:")
        if sid in self.students:
            print("该学号已存在!")
            return

        sname = input("请输入学生姓名:")
        ssex = input("请输入学生性别:")
        try:
            sage = int(input("请输入学生年龄:"))
            address = input("请输入地址:")
            # 电话改为字符串,避免以0开头的号码问题
            tel = input("请输入电话:")
            self.students[sid] = student(sid, sname, ssex, sage, address, tel)
            print("添加成功!")
        except valueerror:
            print("年龄必须为数字!")

    def delete_student(self):
        if not self.students:
            print("当前无任何学生信息!")
            return
        # 删除学生信息
        sid = input("请输入要删除的学生学号:")
        if sid in self.students:
            del self.students[sid]
            print("删除成功!")
        else:
            print("未找到该学号的学生!")

    def modify_student(self):
        if not self.students:
            print("当前无任何学生信息!")
            return
        # 修改学生信息
        sid = input("请输入要修改的学生学号:")
        if sid not in self.students:
            print("未找到该学号的学生!")
            return

        student = self.students[sid]
        student.display_info()

        print("\n请选择要修改的项:")
        print("1: 学号  2: 姓名  3: 性别  4: 年龄  5: 地址  6: 电话  7: 全部  8:退出")

        try:
            choice = input("请输入选择(1-8): ")
            if choice == '7':
                new_sid = input("新的学号:")
                new_sname = input("新的名字:")
                new_ssex = input("新的性别:")
                new_sage = int(input("新的年龄:"))
                new_address = input("新的地址:")
                new_tel = input("新的电话:")

                # 如果学号改变,需要先删除旧的再添加新的
                if new_sid != sid:
                    del self.students[sid]
                    self.students[new_sid] = student(new_sid, new_sname, new_ssex,
                                                     new_sage, new_address, new_tel)
                else:
                    # 学号没变,直接修改对象属性
                    student.sname = new_sname
                    student.ssex = new_ssex
                    student.sage = new_sage
                    student.address = new_address
                    student.tel = new_tel
            else:
                if choice == '1':
                    new_sid = input("新的学号:")
                    if new_sid != sid:
                        self.students[new_sid] = self.students.pop(sid)
                        self.students[new_sid].sid = new_sid
                elif choice == '2':
                    student.sname = input("新的名字:")
                elif choice == '3':
                    student.ssex = input("新的性别:")
                elif choice == '4':
                    student.sage = int(input("新的年龄:"))
                elif choice == '5':
                    student.address = input("新的地址:")
                elif choice == '6':
                    student.tel = input("新的电话:")
                elif choice == '8':
                    return
                else:
                    print("无效选择!")
                    return

            print("修改成功!")
        except valueerror:
            print("输入数据有误!")

    def find_student_by_sid(self):
        if not self.students:
            print("当前无任何学生信息!")
            return
        # 查询单个学生信息
        sid = input("请输入学生学号:")
        if sid in self.students:
            self.students[sid].display_info()
        else:
            print("未找到该学号的学生!")

    def list_all_students(self):
        if not self.students:
            print("当前无任何学生信息!")
            return
        # 查询所有学生信息
        print("\n================== 所有学生信息 ==================")
        for sid, student in self.students.items():
            student.display_info()
        print("="*50)

    def run(self):
        """学生管理系统主界面"""
        while true:
            print("\n================== 学生管理系统 ==================")
            print("1: 添加学生")
            print("2: 删除学生")
            print("3: 修改学生")
            print("4: 单个查询")
            print("5: 全部查询")
            print("6: 退出系统")

            choice = input("请输入您的选择(1-6): ")

            if choice == '1':
                self.add_student()
            elif choice == '2':
                self.delete_student()
            elif choice == '3':
                self.modify_student()
            elif choice == '4':
                self.find_student_by_sid()
            elif choice == '5':
                self.list_all_students()
            elif choice == '6':
                print("退出学生管理系统!")
                break
            else:
                print("无效选择,请重新输入!")


if __name__ == '__main__':
    # 创建用户系统并运行
    user_system = user()
    user_system.run()

    # 用户登录成功后,进入学生管理系统
    student_manager = studentmanagersystem()
    student_manager.run()

总结 

到此这篇关于python学生管理系统的文章就介绍到这了,更多相关python学生管理系统内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com