下面这个小项目是一个简易版的学生信息管理系统,业务逻辑比较简单,主要用来练习python的基本语法

下面这个项目用到了一些新的语法,不过没关系,自己百度,弄懂就行了。

项目结构:

图片说明

代码

# -*- coding: utf-8 -*-
# @Time    : 2020-08-02 19:32:51
# @Author  : MrGeek
# @FileName: SIMS.py
# @Software: PyCharm
# @Blog    :https://mrgeek-zrh.gitee.io
"""
学生信息管理系统
1.学生信息存储:
    使用txt文件进行学生信息的存储
2.设计思路:
2.1.读取信息:
    将数据从文件中全部读出,临时存到列表中,列表中的元素的类型:实体类
2.2.写入信息:
    将列表中的数据以w的形式写入到文件中
"""


# 创建实体类
class Student:
    """
    学生实体类,每一个属性都和student.txt 中的每一个字段相对应
    """
    name = ""
    num = ""
    sex = ""
    age = 0
    def __str__(self):
        return "Student\n name: %s \t num: %s \t sex: %s \t age: %d" %(self.name, self.num,self.sex,self.age)

# 从文件中读取数据到列表中
def ReadStudentInfoFromStudentTxt():
    """
    将数据从文件中读出,存入列表中
    Returns:
        Students(list):存有学生信息的列表,列表中的每个元素都是一个Student实体类
    """

    # 创建用于临时存储所有学生信息的列表
    Students = []

    # 从文件中读取信息(成行读取)
    f = open("student.txt")
    line = f.readline()
    # 获取每行字符串的长度
    length = len(line)
    # 去除每行字符串末尾的 ‘\n’
    newLine = line[0:length-1]
    # 分割字符串,方便封装数据
    student = newLine.split(" ")
    while newLine:
        # 封装数据,将数据封装到实体类中
        studentList = Student()
        studentList.name = student[0]
        studentList.num = student[1]
        studentList.sex = student[2]
        studentList.age = int(student[3])

        # 将实体类添加到列表中
        Students.append(studentList)

        # 再次重复读取
        line = f.readline()
        # 获取每行字符串的长度
        length = len(line)
        # 去除每行字符串末尾的 ‘\n’
        newLine = line[0:length - 1]
        # 分割字符串,方便封装数据
        student = newLine.split(" ")

    # 返回
    return Students

# 将列表中的数据写入到文件中
def WriteStudentInfoIntoStudentTxt(students):
    """
    将列表中的信息写入到txt文件中
    Args:
        students: 存有所有学生信息的列表

    """
    f = open("student.txt",mode="w",encoding="utf-8")
    for i in students:
        content = i.name+" "+i.num+" "+i.sex+" "+str(i.age)+"\n"
        f.write(content)


# 编写CURD函数
def addStudentInfoIntoStudentTxt(student):
    """
    添加学生信息
    Args:
        student:存有学生信息的Student类型实体类

    Returns:包含有所有学生信息的列表

    """
    Students = ReadStudentInfoFromStudentTxt()
    Students.append(student)
    return Students

def deleteStudentInfoByStudentName(name):
    """
    根据学生姓名删除学生信息
    Args:
        name:要删除的学生的姓名

    Returns:包含有所有学生信息的列表

    """
    students = ReadStudentInfoFromStudentTxt()
    for i in students:
        if i.name == name:
            students.remove(i)
            break
    WriteStudentInfoIntoStudentTxt(students)
    return students

def updateStudentInfoByStudentName(student):
    """
    根据学生姓名修改学生信息
    Args:
        student:包含有学生信息的Student实体类

    Returns:包含有所有学生信息的列表

    """
    students = ReadStudentInfoFromStudentTxt()
    for i in students:
        if i.name == student.name:
            i.num = student.num
            i.sex = student.sex
            i.age = student.age
            break
    WriteStudentInfoIntoStudentTxt(students)
    return students

def findStudentInfoByStudentName(name):
    """
    根据学生姓名查询学生信息
    Args:
        name:学生姓名

    Returns:学生信息实体类

    """
    students = ReadStudentInfoFromStudentTxt()
    for i in students:
        if i.name == name:
            return i

def findAllStudentInfo():
    students = ReadStudentInfoFromStudentTxt()
    for i in students:
        print(i)


# 编写界面函数
def makeUI():
    print("|------------------------------|")
    print("|    1.添加学生信息                  |")
    print("|    2.删除学生信息               |")
    print("|    3.修改学生信息                |")
    print("|    4.查询学生信息                |")
    print("|    5.展示学生信息                |")
    print("|                              |")
    print("|------------------------------|")
    print("请输入你的选择:")


# 编写系统的组织函数
def systemMainFunction():
    while True:
        makeUI()
        choice = input()
        student = Student()
        if choice =='1':
            print("请输入你想要添加的学生的姓名:")
            student.name = input()
            print("请输入你想要添加的学生的学号:")
            student.num = input()
            print("请输入你想要添加的学生的性别:")
            student.sex = input()
            print("请输入你想要添加的学生的年龄:")
            student.age = int(input())
            addStudentInfoIntoStudentTxt(student)
        elif choice == '2':
            print("请输入你想删除的学生的姓名:")
            name = input()
            deleteStudentInfoByStudentName(name)
        elif choice == '3':
            student1 = Student()
            print("请输入你想修改的学生的姓名:")
            student1.name = input()
            print("请输入你想要修改的学生的学号:")
            student1.num = input()
            print("请输入你想要修改的学生的性别:")
            student1.sex = input()
            print("请输入你想要修改的学生的年龄:")
            student1.age = int(input())

            updateStudentInfoByStudentName(student1)
        elif choice == '4':
            print("请输入你想查询的学生的姓名:")
            name = input()
            student2 = findStudentInfoByStudentName(name)
            print(student2)
        elif choice == '5':
            findAllStudentInfo()
        else:
            print("没有该选项!!!")
        print("你是否要继续操作??? (n:否,y:是)")
        choice1 = input()
        if choice1 == 'y':
            continue
        elif choice1 == 'n':
            break
        else:
            record = 0
            print("没有该选项!!!请重新选择:(y/n)")
            while True:
                choice2 = input()
                if choice2 == 'y':
                    break
                elif choice2 == 'n':
                    record = 1
                    break
                else:
                    print("没有该选项!!!请重新选择:(y/n)")
            if record == 1:
                break

# 启动系统
systemMainFunction()

# 测试界面函数
# makeUI()

# 测试查找功能
# student = findStudentInfoByStudentName("张3")
# print(student)

# 测试修改功能
# student = Student()
# student.name = "张4"
# student.num = "2019082017"
# student.age = 13
# student.sex = "男"
# students = updateStudentInfoByStudentName(student)
#
# for i in students:
#     print(i)


# 测试删除功能
# students = deleteStudentInfoByStudentName("张3")
# for i in students:
#     print(i)

# 测试添加功能
# student = Student()
# student.age = 12
# student.name = "张6"
# student.sex = "男"
# student.num = "2019082022"
# Students = addStudentInfoIntoStudentTxt(student)
# WriteStudentInfoIntoStudentTxt(Students)
# for i in Students:
#     print(i)


# 测试调用函数
# Students = ReadStudentInfoFromStudentTxt()