Python 学生管理
Python 学生管理
阿豪boy 发表于6个月前
Python 学生管理
  • 发表于 6个月前
  • 阅读 7
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

python3 练手 

#coding=utf-8
#学生类
class Stu:
    #三个字段id字符串,name字符串,score小数
    def __init__(self, id, name, score):
        self.id = id
        self.name = name
        self.score = score
    #将类作为字符串输出
    def __str__(self):
        return self.id + '\t' + self.name + '\t' + str(self.score)

#管理学生的类
class StuMgr:
    #由给定路径初始化stus列表
    def __init__(self, path):
        self.path = path
        self.stus = []
        with open(self.path, 'r+', encoding='utf-8') as f:
            n = int(f.readline())
            for i in range(n):
                s = f.readline().split()  # 默认空格分割
                stu = Stu(str(s[0]), str(s[1]), float(s[2]))
                self.stus.append(stu)
    #由给定的id查找具体学生,不存在返回None
    def findById(self, id):
        for s in self.stus:
            if s.id == id:
                return s
        return None
    #由给定的id删除具体学生
    def delById(self, id):
        if self.findById(id) != None:
            for s in range(len(self.stus)):
                if self.stus[s].id == id:
                    self.stus.pop(s)
            return True
        else:
            return False

    def add(self, stu):
        if self.findById(stu.id) != None:
            return False
        else:
            self.stus.append(stu)
            return True
    #按照id排序
    def sortById(self):
        self.stus.sort(key=lambda Stu: Stu.id)

    #保存到文件,编码utf--8码
    def saveToFile(self):
        with open(self.path, 'w+', encoding='utf-8') as f:
            f.write(str(len(self.stus)))
            f.write('\n')
            for s in self.stus:
                f.write(str(s) + '\n')

    def show(self):
        print('共 %d 名学生' % (len(self.stus)))
        for s in self.stus:
            print(s)
    #用于绘制界面,提供操作
    def start(self):
        while True:
            try:
                print("1,显示\t2,添加\t3,删除\t4,查找\t5,排序\t6,保存\t -by ahao")
                opt = input();
                if opt == '1':
                    self.show()
                elif opt == '2':
                    print('请输入要添加的学生信息,空格隔开\n学号\t\t姓名\t成绩')
                    ss = input().split(' ')
                    stu = Stu(str(ss[0]), str(ss[1]), float(ss[2]))
                    self.add(stu);
                elif opt == '3':
                    print('请输入需要删除的学生id')
                    id = input()
                    if self.findById(id) != None:
                        self.delById(id)
                        print('删除成功')
                    else:
                        print('删除失败,该学号不存在')
                elif opt == '4':
                    print('请输入查找的学生学号')
                    id = input()
                    if self.findById(id) != None:
                        s = self.findById(id)
                        print(s)
                    else:
                        print('该学生不存在')
                elif opt == '5':
                    self.sortById()
                    print('排序成功')
                elif opt == '6':
                    self.saveToFile()
                    print('保存成功')
                else:
                    print('请输入有效命令')
            except BaseException:
                print('非法数据,请检查输入是否合法')

#初始化文件路径
stuMgr = StuMgr('stu.txt')
stuMgr.start();

 

stu. 

6
2150500094	陈文梁	85.79
2160500079	崔致琪	83.44
2160500080	侯玥林	86.53
2160500081	刘佳雯	92.33
2160500082	石可心	86.72
2160500111	yyh	123.0

 

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 10
博文 634
码字总数 480730
×
阿豪boy
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: