Python实现学生管理系统v2.1(面向对象+列表+文件)

实现功能

  • 添加学生
  • 删除学生
  • 修改学生
  • 查询学生
  • 显示所有学生信息
  • 菜单
  • 文件读取
  • 文件写入

简述

        在之前通过类和列表设计学生管理系统的基础上添加了文件读写的功能,这样一来我们就不用再去烦恼数据无法保存的问题了,代码如下。

运行截图

          

 代码

#列表
stuList = []

#类定义
class Student:
    #学生基本属性 - 以下做初始化
    id = "1"
    name = "张三"
    sex = "男"
    age = 19
    depart = "计算机"
    classname = "软件2001"


    def __init__(self, id, name, sex, age, depart,classname):
        self.id = id
        self.name = name
        self.sex = sex
        self.age = age
        self.depart = depart
        self.classname = classname

    #对象复制
    def copy(self,aim):
        self.id = aim.id
        self.name = aim.name
        self.sex = aim.sex
        self.age = aim.age
        self.depart = aim.depart
        self.classname = aim.classname

    #重写方法,直接打印对应的对象信息
    def __str__(self):
        return '%s  %s  %s  %s  %s  %s' % (self.id, self.name,self.sex,str(self.age),self.depart,self.classname)

    def toString(self):
        return '%s  %s  %s  %s  %s  %s' % (self.id, self.name,self.sex,str(self.age),self.depart,self.classname)


# 操作
#添加学生
def addStu():
    print("请输入要添加的学生信息")
    id = input("学号:")
    name = input("姓名:")
    sex = input("性别:")
    age = input("年龄:")
    depart = input("院系:")
    classname = input("专业:")
    student = Student(id,name,sex,age,depart,classname)     #对象
    stuList.append(student)
    print("录入成功!")

#删除学生
def delStu():
    print("请输入要查询的学生编号")
    id = input("学号:")
    index = seaStu(id)
    if index == None:
        print("未查找到相关数据!")
        return
    stuList.remove(index)
    print("删除成功!")

#查找学生 - 根据id(该方法对查询模块进行封装和简化,便于调用)
def seaStu(id):
    for student in stuList:
        if student.id == id:
            return student
    else:
        return None

#查找学生 - 调用方法
def seaStuById(id):
    for student in stuList:
        if student.id == id:
            print(student)
            return
    print("未查找到!")

#修改学生 - 根据id
def modStu():
    print("请输入要查询的学生编号")
    id = input("学号:")
    index = seaStu(id)
    if index == None:
        print("未查找到相关数据!")
        return

    print("请输入要修改的学生信息")
    id = input("学号:")
    name = input("姓名:")
    sex = input("性别:")
    age = input("年龄:")
    depart = input("院系:")
    classname = input("专业:")
    student = Student(id,name,sex,age,depart,classname)     #对象
    index.copy(student)
    print("修改成功!")

#打印学生
def showStu():
    print("学号  姓名  性别  年龄  院系  专业")
    for student in stuList:
        print(student)

#菜单
def menu():
    while True:
        print("---------------------------")
        print("      1:添加学生")
        print("      2:删除学生")
        print("      3:修改学生")
        print("      4:查询学生")
        print("      5:显示所有学生")
        print("      6:退出系统")
        print("---------------------------")
        x = input("请输入你的选择:")
        # 添加学生
        if x == '1':
            addStu()
        # 删除学生
        elif x == '2':
            delStu()
        # 修改学生
        elif x == '3':
            modStu()
        # 查询学生
        elif x == '4':
            print("请输入要查询的学生编号")
            id = input("学号:")
            seaStuById(id)
        # 显示所有学生
        elif x == '5':
            showStu()
        # 退出学生管理系统,返回上一层登录界面系统
        elif x == '6':
            print("成功退出学生管理系统!")
            break
        else:
            print("输入错误,请重新输入")
        save()  # 及时写入文件
        import os
        os.system("cls")

# 文件读写
def read():
    file = open("students.txt", "r",encoding='UTF-8')
    if file == OSError:
        print("读取失败")
        exit(0)

    lines = file.readlines()
    i = 0
    #构建学生对象添加到列表中
    for line in lines:
        list = line.strip().split()     #采用默认分隔符分割文件
        student = Student(list[0],list[1],list[2],list[3],list[4],list[5])
        stuList.append(student)
    print("读取完成!")

# 文件读写
def save():
    file = open("students.txt", "w+",encoding='UTF-8')
    if file == OSError:
        print("读取失败")
        exit(0)

    str = ""
    #将程序现有的数据保存到文件中
    for list in stuList:
        str += list.toString()
        str += "\n"
    file.write(str)
    print("***     写入完成!     ***")

# 主函数
read()  #首先读取数据文件
menu()

总结

        经过以上3个版本的迭代,我们总算拿到了一份可以真正帮助我们有效管理数据且具有现实意义的程序。但是,对于现如今的开发水平而言,该程序仍然处于初学者水平,接下来我们考虑使用数据库编程,为管理系统添加数据库,以期得到更好地数据管理水平和效果。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值