下面这个小项目是一个简易版的学生信息管理系统,业务逻辑比较简单,主要用来练习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() 
京公网安备 11010502036488号