此学生信息管理系统,类来实例化学生对象,文件来保存学生数据。
值得注意的是:不要中途强行中断,否则数据将会丢失
# -*- coding: utf-8 -*-
"""
Created on Sat Nov 11 21:03:32 2023
@author: Administrator
"""
import os
class Student:
def __init__(self):
self.name = ''
self.sex = ''
self.ID = ''
self.chinese = 0
self.math = 0
self.English = 0
self.sum = 0
def sumscore(self):
self.sum = self.English+self.chinese+self.math
def input(self):
self.name = input('请输入你的名字:')
self.sex = input('请输入你的性别:')
self.ID = input('请输入你的学号:')
self.chinese = eval(input('请输入你的语文成绩:'))
self.math = eval(input('请输入你的数学成绩:'))
self.English = eval(input('请输入你的英语成绩:'))
self.sumscore()#成绩总和
def Add(stulist,stu):#添加学生信息
if len(stulist) != 0:
for i in stulist:
if i.ID == stu.ID:
print('学号已经存在')
return False
print('是否要保存学生信息:')
nchoose = input('y/n')
if nchoose == 'y' or nchoose == 'Y':
stulist.append(stu)
print(stu.name,stu.ID,stu.sex,stu.math,stu.English,stu.chinese)
print('添加成功!【温馨提示:请不要中途强行中断,否则数据将会丢失!!!】')
def Del(stulist,ID):#删除一个学生信息
flag = 0
if len(stulist) != 0:
for item in stulist:
if item.ID == ID:
stulist.remove(item)
flag = 1
print('删除成功!')
break
if flag == 0:
print('没有该学生学号!')
return
else:
print('现如今您还没有输入任何学生信息!!!')
def Change(stulist,ID):#修改学生信息
flag = 0
if len(stulist) != 0:
for item in stulist:
if item.ID == ID:
print('已找到该学生信息!!!')
stulist.remove(item)
stu = Student()
stu.input()
Add(stulist,stu)#添加一个stu学生信息到列表中
flag = 1
break
if flag == 0:
print('没有该学生学号!')
return
else:
print('现如今您还没有输入任何学生信息!!!')
def display(stulist):#显示所有学生信息
if len(stulist) != 0:
print('姓名\t 学号 性别 数学 英语 语文')
for stu in stulist:
print('%-5s%-5s%-5s%-5d%-5d%-5d'%(stu.name,stu.ID,stu.sex,stu.math,stu.English,stu.chinese))
else:
print('现如今您还没有输入任何学生信息!!!')
def Sort(stulist):#按学生成绩排序
if len(stulist) != 0:
insertSort(stulist)
display(stulist)
else:
print('现如今您还没有输入任何学生信息!!!')
def insertSort(stulist):#比较排序
for i in range(len(stulist)-1):
for j in range(i+1,len(stulist)):
if stulist[i].sum < stulist[j].sum:
t = stulist[i]
stulist[i] = stulist[j]
stulist[j] = t
def Search(stulist,ID):#搜索一个学生信息
count = 0
if len(stulist) != 0:
for stu in stulist:
if stu.ID == ID:
print('姓名\t 学号 性别 数学 英语 语文')
print('%-5s%-5s%-5s%-5d%-5d%-5d' % (stu.name, stu.ID, stu.sex, stu.math, stu.English, stu.chinese))
break
count += 1
if count == len(stulist):
print('没有此学生!')
else:
print('现如今您还没有输入任何学生信息!!!')
def exit(stulist):
file_object = open('students.txt','w')
for stu in stulist:
file_object.write('{} {} {} {} {} {} {}\n'.format(stu.name,stu.ID,stu.sex,stu.math,stu.English,stu.chinese,stu.sum))
file_object.close()
print('数据保存成功!已退出 欢迎下次登录')
def main(stulist):#程序的主入口
while True:
print('**'*15)
print('--'*15)
print('| ---------增加学生信息-------1 |')
print('| ---------查找学生信息-------2 |')
print('| ---------删除学生信息-------3 |')
print('| ---------修改学生信息-------4 |')
print('| ---------所有学生信息-------5 |')
print('| ---------按照分数排序-------6 |')
print('| ---------将会退出程序-------0 |')
print('**'*15)
nchoose = input('请做出您的选择')
if nchoose == '1':#增加学生信息
stu = Student()
stu.input()
Add(stulist,stu)
elif nchoose == '2':#查找学生信息
ID = input('请输入学生的学号')
Search(stulist,ID)
elif nchoose == '3':#删除学生信息
ID = input('请输入学生的学号')
Del(stulist, ID)
elif nchoose == '4':#修改学生信息
ID = input('请输入学生的学号')
Change(stulist, ID)
elif nchoose == '5':#所有学生信息
display(stulist)
elif nchoose == '6':#按照分数排序
Sort(stulist)
elif nchoose == '0':#退出程序
exit(stulist)
break
def Init(stulist):
print('初始化当中...')
if os.path.exists('students.txt'):
file_object = open('students.txt','r')
for line in file_object:
stu = Student()#实例化对象
line = line.strip('\n')#去掉收尾的换行符号
s = line.split(' ')
stu.name = s[0]
stu.ID = s[1]
stu.sex = s[2]
stu.English = int(s[3])
stu.chinese = int(s[4])
stu.math = int(s[5])
stu.sum = int(s[6])
stulist.append(stu)
file_object.close()
print('初始化成功!')
main(stulist)
if __name__ == '__main__':
stulist = []
Init(stulist)