利用python实现简单的学员信息管理系统——1.0

目录

模块一:student.py

模块二:main.py

模块三:managerStudent.py

定义run()方法,通过运行此方法来调用程序不同的功能方法

添加方法:add_student()

修改方法:modify_student()

 查询方法:search_student()

 保存方法:sava_student()

加载学员信息方法:load_student()


学习完Python基础,为了巩固知识就写了一个简单的学员信息管理系统

下面是一些思路和方法

此系统主要分为了三个模块来写

 模块一:student.py

# 学员类
class Student():
    # 初始化魔法方法
    def __init__(self, name, gender, tel):
        self.name = name
        self.gender = gender
        self.tel = tel

    # “魔法”方法。当使用print输出对象的时候只要自己定义了__str__(self)方法,
    # 那么就会打印从在这个方法中return的数据。
    def __str__(self):
        return f"姓名:{self.name},性别:{self.gender},电话:{self.tel}"

# t = Student("aa","女",23)
# print(t)
#

模块二:main.py

此模块是程序的入口,通过运行此模块来实现整个程序的运行


# 导入管理系统模块
from managerSystem import *

# if条件判断,保证当前程序运行才运行管理系统
if __name__ == "__main__" :
    # 创建实例对象
    student_manager = StudentManager()
    # 调用run方法
    student_manager.run()

 模块三:managerStudent.py

此模块中实现了程序主界面,定义了程序的方法:添加,删除,更改,查找,保存,

程序主界面:

定义run()方法,通过运行此方法来调用程序不同的功能方法

        # 定义程序入口函数
    # 1.加载数据
    # 2.功能菜单
    # 3.输入功能序号
    # 4.执行不同功能
    def run(self):
        # 加载学员信息
        self.load_student()

        while True:
            # 这是在类里面调用实例方法,调用功能菜单函数
            self.show_menu()
            menu_num = int(input("请输入功能序号 :"))
            if menu_num == 1:
                # 添加学员
                self.add_student()
            elif menu_num == 2:
                # 删除学员
                self.del_student()
            elif menu_num == 3:
                # 修改学员信息
                self.modify_student()
            elif menu_num == 4:
                # 查询学员信息
                self.search_student()
            elif menu_num == 5:
                # 显示所有学员信息
                self.show_student()
            elif menu_num == 6:
                # 保存学员信息
                self.save_student()
            elif menu_num == 6:
                # 退出
                break

    # 系统功能函数

    # 功能菜单
    # 不涉及对象和对象数据,定义静态方法
    @staticmethod
    def show_menu():
        print("-------------------欢迎来到学员信息管理系统-------------")
        print("请选择下方功能")
        print("1.添加学员")
        print("2.删除学员")
        print("3.修改学员信息")
        print("4.查询学员信息")
        print("5.显示所有学员")
        print("6.保存学员信息")
        print("7.退出系统")
        # 定义实例属性,用列表来储存每个学员信息

下面是程序的功能方法:

添加方法:add_student()

   # 添加学员
    def add_student(self):
        # 用户输入,姓名,性别,手机号

        name = input("请输入你的姓名 :")

        gender = input("请输入你的性别 :")
        if gender == "男" or gender == "女":
            tel = input("请输入你的手机号/6位整数字 :")
            # 利用try语句可以实现判段电话号是否是6位整数
            try:
                tel_number = int(tel)
            except:
                print("你输入的手机号有误,请重新操作")
            else:
                tel_len = len(tel)
                if tel_len == 6:
                    # 创建学员对象,需先导入Student类,即先导入student模块
                    student = Student(name, gender, tel)

                    # 将学员数据存储到列表中
                    self.student_list.append(student)

                    # 验证一下
                    print(self.student_list)
                    print("你添加的信息为:")
                    print(student)

                else:
                    print("你输入的电话有误,请重新操作")
        else:
            print("你输入的性别有误,请重新操作")
        # tel = input("请输入你的手机号/6位整数字 :")

当检查输入的手机号是否位6位整数时,我用了try-except-else-finally语句来实现此功能,大家也可以使用Python中的正则表达式来实现

删除方法:del_student()


    # 删除学员
    def del_student(self):
        # 按照姓名来删除学员
        del_name = input("请输入要删除的学员姓名")
        # 遍历列表,查找
        for i in self.student_list:
            if del_name == i.name:

                # 删除学员对象
                self.student_list.remove(i)
            # 没有找到,打印没有查到信息
            else:
                print("没有查找到此学员信息")
            # 再次打印列表,查看是否删除
            print(self.student_list)

修改方法:modify_student()

 # 修改学员
    def modify_student(self):
        # 输入目标学员姓名
        modify_name = input("请输入你所要修改的学员信息:")
        # 遍历列表查找是否存在,有则修改,无则提示不存在信息
        for i in self.student_list:
            if modify_name == i.name:
                # 更新学员信息
                i.name = input("请输入学员姓名:")
                i.gender = input("请输入学员性别:")
                i.tel = input("请输入学员电话:")
                print(f"修改的学员信息为:姓名:{i.name},性别:{i.gender},电话:{i.tel}")
                break
            else:
                print("没有此学员信息")

 查询方法:search_student()

   # 查询学员信息(按照姓名或电话查找)
    def search_student(self):

        print("查询方式a/姓名查询,b/电话查询")
        search_way = input("请输入:")
        if search_way == "a":
            search_name = input("请输入你所有查询的姓名:")
            # 遍历列表
            for i in self.student_list:
                if i.name == search_name:
                    print(f"此学员信息为:姓名:{i.name},性别:{i.gender},电话:{i.tel}")
                    break

                else:
                    print("没有查到此学员信息")

        elif search_way == "b":
            search_tel = input("请输入你所查询的电话:")
            for i in self.student_list:
                if i.tel == search_tel:
                    print(f"此学员信息为:姓名:{i.name},性别:{i.gender},电话:{i.tel}")
                    break

                else:
                    print("没有查到此学员信息")
        else:
            print("你输入的信息有误,请重新输入")

 保存方法:sava_student()

   # 保存学员信息
    def save_student(self):
        # 打开文件
        r = open("student.txt", "w")
        # 文件写入数据先将列表中学员对象转为字典,再写入文件
        new_list = [i.__dict__ for i in self.student_list]
        # 写入,但需先将列表转换为字符串
        r.write(str(new_list))
        r.write("\r\n")
        # 关闭文件
        r.close()
        print("保存成功")

 注意:当我们在文件中写入学员信息时,我们不能直接将列表写入,因为列表中储存的是一个个学员对象,我们先将列表中学员对象转为字典,再写入文件

加载学员信息方法:load_student()

    # 加载学员信息
    def load_student(self):
        # 如果文件存在则以只读模式打开,否则以写入模式打开
        try:
            r = open("student.txt", "r")
        except:
            r = open("student.txt", "w")
        else:
            # 读取数据,读取出的数据是字符串类型,先将其还原为列表,
            data = r.read()
            new_list = eval(data)
            self.student_list = [Student(i["name"], i["gender"], i["tel"]) for i in new_list]
        finally:
            r.close()

 读取数据时要注意,和写入时正好相反,使用eval()方法先将读取出的字符串类型还原为列表

模块二完整代码:

# 主界面代码
# 导入student模块
from student import *


class StudentManager():
    def __init__(self):
        self.student_list = []

    # 定义程序入口函数
    # 1.加载数据
    # 2.功能菜单
    # 3.输入功能序号
    # 4.执行不同功能
    def run(self):
        # 加载学员信息
        self.load_student()

        while True:
            # 这是在类里面调用实例方法,调用功能菜单函数
            self.show_menu()
            menu_num = int(input("请输入功能序号 :"))
            if menu_num == 1:
                # 添加学员
                self.add_student()
            elif menu_num == 2:
                # 删除学员
                self.del_student()
            elif menu_num == 3:
                # 修改学员信息
                self.modify_student()
            elif menu_num == 4:
                # 查询学员信息
                self.search_student()
            elif menu_num == 5:
                # 显示所有学员信息
                self.show_student()
            elif menu_num == 6:
                # 保存学员信息
                self.save_student()
            elif menu_num == 6:
                # 退出
                break

    # 系统功能函数

    # 功能菜单
    # 不涉及对象和对象数据,定义静态方法
    @staticmethod
    def show_menu():
        print("-------------------欢迎来到学员信息管理系统-------------")
        print("请选择下方功能")
        print("1.添加学员")
        print("2.删除学员")
        print("3.修改学员信息")
        print("4.查询学员信息")
        print("5.显示所有学员")
        print("6.保存学员信息")
        print("7.退出系统")
        # 定义实例属性,用列表来储存每个学员信息

    # 添加学员
    def add_student(self):
        # 用户输入,姓名,性别,手机号

        name = input("请输入你的姓名 :")

        gender = input("请输入你的性别 :")
        if gender == "男" or gender == "女":
            tel = input("请输入你的手机号/6位整数字 :")
            # 利用try语句可以实现判段电话号是否是6位整数
            try:
                tel_number = int(tel)
            except:
                print("你输入的手机号有误,请重新操作")
            else:
                tel_len = len(tel)
                if tel_len == 6:
                    # 创建学员对象,需先导入Student类,即先导入student模块
                    student = Student(name, gender, tel)

                    # 将学员数据存储到列表中
                    self.student_list.append(student)

                    # 验证一下
                    print(self.student_list)
                    print("你添加的信息为:")
                    print(student)

                else:
                    print("你输入的电话有误,请重新操作")
        else:
            print("你输入的性别有误,请重新操作")
        # tel = input("请输入你的手机号/6位整数字 :")

    # 删除学员
    def del_student(self):
        # 按照姓名来删除学员
        del_name = input("请输入要删除的学员姓名")
        # 遍历列表,查找
        for i in self.student_list:
            if del_name == i.name:

                # 删除学员对象
                self.student_list.remove(i)
            # 没有找到,打印没有查到信息
            else:
                print("没有查找到此学员信息")
            # 再次打印列表,查看是否删除
            print(self.student_list)

    # 修改学员
    def modify_student(self):
        # 输入目标学员姓名
        modify_name = input("请输入你所要修改的学员信息:")
        # 遍历列表查找是否存在,有则修改,无则提示不存在信息
        for i in self.student_list:
            if modify_name == i.name:
                # 更新学员信息
                i.name = input("请输入学员姓名:")
                i.gender = input("请输入学员性别:")
                i.tel = input("请输入学员电话:")
                print(f"修改的学员信息为:姓名:{i.name},性别:{i.gender},电话:{i.tel}")
                break
            else:
                print("没有此学员信息")

    # 查询学员信息(按照姓名或电话查找)
    def search_student(self):

        print("查询方式a/姓名查询,b/电话查询")
        search_way = input("请输入:")
        if search_way == "a":
            search_name = input("请输入你所有查询的姓名:")
            for i in self.student_list:
                if i.name == search_name:
                    print(f"此学员信息为:姓名:{i.name},性别:{i.gender},电话:{i.tel}")
                    break

                else:
                    print("没有查到此学员信息")

        elif search_way == "b":
            search_tel = input("请输入你所查询的电话:")
            for i in self.student_list:
                if i.tel == search_tel:
                    print(f"此学员信息为:姓名:{i.name},性别:{i.gender},电话:{i.tel}")
                    break

                else:
                    print("没有查到此学员信息")
        else:
            print("你输入的信息有误,请重新输入")

    # 显示所有学员
    def show_student(self):
        print("学员信息如下:")
        for i in self.student_list:
            print(f"姓名:{i.name},性别:{i.gender},电话:{i.tel}")

    # 保存学员信息
    def save_student(self):
        # 打开文件
        r = open("student.txt", "w")
        # 文件写入数据先将列表中学员对象转为字典,再写入文件
        new_list = [i.__dict__ for i in self.student_list]
        # 写入,但需先将列表转换为字符串
        r.write(str(new_list))
        r.write("\r\n")
        # 关闭文件
        r.close()
        print("保存成功")

    # 加载学员信息
    def load_student(self):
        # 如果文件存在则以只读模式打开,否则以写入模式打开
        try:
            r = open("student.txt", "r")
        except:
            r = open("student.txt", "w")
        else:
            # 读取数据,读取出的数据是字符串类型,先将其还原为列表,
            data = r.read()
            new_list = eval(data)
            self.student_list = [Student(i["name"], i["gender"], i["tel"]) for i in new_list]
        finally:
            r.close()

 总结:1.0版本还有很多需要改进:

1.没有用户登录注册功能

2.添加时,不能实现查询已有的人员信息

3.没有将添加和写入文件功能同步实现

4.部分方法的优化,如:判断输入是否是6位整数,可以用正则表达式来实现比较简便

期待我的2.0

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值