文档章节

Python 学生管理

 阿豪boy
发布于 2017/08/30 14:01
字数 523
阅读 9
收藏 0

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

 

© 著作权归作者所有

共有 人打赏支持
粉丝 23
博文 1090
码字总数 735685
作品 0
西安
因挂科,电信专业学生侵入学校系统改分被开除,Python黑客手段!

一名大四学生由于在校不努力,门门考试挂科而入侵学校数据库,并修改成绩至合格线以上。 经该校研究决定,给予该生开除处分。 该大四学生为该校电信专业学生。该生利用学校教务系统的漏洞,通...

Python新世界
07/26
0
0
学生在机房利用python远程控制老师电脑,老师说是黑客攻击!

学习编程的无非这两种人 薪资高 兴趣 而我就算是兴趣吧,因为开始是兴趣,但是慢慢的在这条道路上变得物质化,这是我的心声。 现在的我上有老下有小,我不得不放弃一些自己的乐趣,拼命赚钱,...

Python新世界
07/28
0
0
【正方教务管理系统】HACK日志(二)

正方系统的一个漏洞是获取学生图片时没有对学生身份进行检测。理论上来说,获取学生李四的照片,需要首先判断登陆者身份是教师或者学生,如果是学生还要判断登陆者是否为李四本人,而正方系统...

不必在乎朕是谁
2012/10/19
0
5
毕业之际, 学生利用Python开发一套教学软件, 校长说5W月薪聘请!

学生毕业临行之际,为报答各位任课老师多年的关照。 利用Python打造了一套课堂教学管理系统,包括以下功能: 在线点名 在线答疑 随机提问 在线作业管理 在线自测 在线考试 数据汇总 试卷生成...

Python新世界
07/31
0
0
Mu 入门:一个面向初学者的 Python 编辑器

相识 Mu —— 一个可以使学生学习 Python 更轻松的开源编辑器。 Mu 是一个给初学者的 Python 编辑器,它旨在使学习体验更加愉快。它使学生能够在早期体验成功,这在你学习任何新知识的时候都...

15%
08/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

7 个致命的 Linux 命令

导读 如果你是一个 Linux 新手,在好奇心的驱使下,可能会去尝试从各个渠道获得的命令。以下是 7 个致命的 Linux 命令,轻则使你的数据造成丢失,重则使你的系统造成瘫痪,所以,你应当竭力避...

问题终结者
今天
0
0
设计模式:工厂方法模式(工厂模式)

工厂方法模式才是真正的工厂模式,前面讲到的静态工厂模式实际上不能说是一种真正意义上的设计模式,只是一种变成习惯。 工厂方法的类图: 这里面涉及到四个种类: 1、抽象产品: Product 2、...

京一
今天
0
0
区块链和数据库,技术到底有何区别?

关于数据库和区块链,总会有很多的困惑。区块链其实是一种数据库,因为他是数字账本,并且在区块的数据结构上存储信息。数据库中存储信息的结构被称为表格。但是,区块链是数据库,数据库可不...

HiBlock
今天
0
0
react native 开发碰到的问题

react-navigation v2 问题 问题: static navigationOptions = ({navigation, navigationOptions}) => ({ headerTitle: ( <Text style={{color:"#fff"}}>我的</Text> ), headerRight: ( <View......

罗培海
今天
0
0
Mac Docker安装流程

久仰Docker大名已久,于是今天趁着有空,尝试了一下Docker 先是从docker的官网上下载下来mac版本的docker安装包,安装很简易,就直接拖图标就好了。 https://www.docker.com/products/docker...

writeademo
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部