python输入姓名 性别身高_用Python完成一个学生管理系统,看不懂你打我啊!!…

  • Post author:
  • Post category:python


# -*- coding: utf-8 -*-

import os#判断文件是否存在

#生成学生类(存储学生个人信息)

class student:#生成学生类

def __init__(self,id,name,age,sex,height):#学生类的定义将学号、姓名、年龄、性别、身高作为参数传给类

self.id=id

self.name=name

self.age=age

self.sex=sex

self.height=height

def printMe(self):#便于打印自己的类

print(“学号:%d,姓名:%s,年龄:%d,性别:%s,身高:%f” % (self.id, self.name, self.age, self.sex, self.height))#打印需要的内容,便于后面文件的调用

#生成管理类(对学生的各种管理)

class StudentManager:#定义学生管理类

def __init__(self):

self.allStudentList=[]

#显示所有学生信息

def allStudentShow(self):#定义学生显示函数

for one in self.allStudentList:#利用for循环进行遍历

one.printMe()#调用前面的内容,方便打印

#定义新增学生函数

def addNewStudent(self,newStudent):

for one in self.allStudentList:

if one.id==newStudent.id:

return -1#学号重复

self.allStudentList.append(newStudent)

return 1

#定义修改学生的年龄函数

def updateStudent(self,id,newAge):

for one in self.allStudentList:

if one.id == id:

one.age = newAge

break #一个学生的年龄修改过后自动跳出循环

else:

return -1 #此学生不存在

return 1

#定义删除学生函数

def deleteStudent(self,id):

index = 0#利用index计数

for one in self.allStudentList:

if one.id == id:#利用if语句进行查找删除那个学生

del self.allStudentList[index]

index += 1

else:

return -1#找不到这个学生

return 1

#定义按姓名查找函数

def searchName(self,name):

flag=0 #利用flag区别有没有找到学生

for one in self.allStudentList:

if one.name==name:#利用if语句判断查找那个学生

one.printMe()#打印学生信息

flag=1

if flag==0:

return -1#查无此人

return 1

#定义按学号排序函数

#def sortMe(onelist):

#return onelist[0]

def orderById(self,flag):#flag=1升序,flag=2降序

if flag==1:#升序

self.allStudentList.sort(reverse=False,key=lambda x:x.id)#利用python中的sort

#self.allStudentList.sort(reverse=False, key=sortMe.id)#利用python中的key 和value

else:

self.allStudentList.sort(reverse=True, key=lambda x:x.id)#X为一个参数

#定义从文件中读取数据函数

def readFormFile(self,fileName):#从文件中读取所需的文件名

if not os.path.exists(fileName):#如果文件不存在新建一个空文件

f=open(fileName,”w”)#打开并清空

f.close()

with open(fileName,”r”,encoding=”utf-8″)as f:#文件读写功能都有,其中”utf-8″表示只读以下文件的中文

for oneStr in f:#利用for循环在文件中进行遍历

oneList = oneStr.strip(“\n”).split(“,”)#列表进行换行并用,隔开

stu=student(int(oneList[0]),oneList[1],int(oneList[2]),oneList[3],float(oneList[4]))#定义一个str用于存储一个学生的信息

self.allStudentList.append(stu)#将读取的信息增加到文件中

#将数据写入文件的函数

def writeToFile(self,fileName):#将数据写入文件

f=open(fileName,”w”)#文件打开并清空

f.close()

with open(fileName,”a”,encoding=”utf-8″)as f:#文件读写功能都有,其中”utf-8″表示只读以下文件的中文

for one in self.allStudentList:#利用for循环在学生列表中进行遍历

oneStr=str(one.id)+”,”+one.name+”,”+str(one.age)+”,”+one.sex+”,”+str(one.height)#用oneStr来接收一个同学的信息,同时强制转换学号、年龄为int型,将身高强制转换为float型

f.write(oneStr)#将数据写入文件

#定义一个功能菜单函数

def menu():

print(“**************************”)

print(“*1.查看所有学生***********”)

print(“*2.新增学生***************”)

print(“*3.修改年龄***************”)

print(“*4.删除学生***************”)

print(“*5.按姓名查找*************”)

print(“*6.按学号排序*************”)

print(“*7.保存*******************”)

print(“*8.退出*******************”)

print(“**************************”)

if __name__ == ‘__main__’:#从这个地方开始

stuManager=StudentManager()#定义学生管理类

# 从文件中读取数据

stuManager.readFormFile(“students.txt”)

while True:#避免一直循环

#显示主菜单

menu()

select = int(input(“请选择一个选项:”))

if select == 1:#查看所有学生

stuManager.allStudentShow()

elif select == 2:#新增学生

while True:

try:#避免功能缺陷

id = int(input(“请输入学号”))

name = input(“请输入姓名”)

age = int(input(“请输入年龄”))

sex = input(“请输入性别”)

height = float(input(“请输入身高”))

stu=student(id,name,age,sex,height)

if stuManager.addNewStudent(stu)==-1:

print(“学号重复,请重新输入”)

else:

flag = input(“恭喜,新增成功,是否继续新增(Y/N)”)

if flag != “Y”:

break

except:

print(“请重新输入;”)

elif select == 3:#修改学生年龄

while True:

id = int(input(“请输入学号:”))

newAge = int(input(“请输入新年龄:”))

if stuManager.updateStudent(id, newAge) == -1:

print(“找不到此学生,请重新输入”)

else:

flag = input(“恭喜,修改成功,是否继续修改(Y/N)”)

if flag != “Y”:

break

elif select == 4:#删除学生

while True:

id = int(input(“请输入删除学号:”))

if stuManager.deleteStudent(id) == -1:

print(“找不到此学生的学号,请重新输入”)

else:

flag = input(“恭喜,删除成功,是否继续删除(Y/N)”)

if flag.lower() != “y”:

break

elif select == 5:#按姓名查找

while True:

name = input(“请输入姓名”)

if stuManager.searchName(name) == -1:

print(“查无此人”)

flag = input(“是否继续查找(Y/N)”)

if flag != “Y”:

break

elif select == 6:#排序

flag = int(input(“请选择排序方式(1.升序。2.降序)”))

stuManager.orderById(flag)

stuManager.allStudentShow()

elif select == 7:#保存

stuManager.writeToFile(“students.txt”)

print(“保存成功”)

else:#退出

exit()



版权声明:本文为weixin_32515445原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。