学生成绩管理系统|Python小应用练习

news2024/11/25 14:20:18

题目要求

实现学生成绩管理系统
输入学生成绩信息序列,获得成绩从高到低、从低到高、按某一门成绩的排列,相同成绩都按先录入排列在前的规则处理
数据如下:(数据规则:学生姓名 高数成绩 英语成绩 大物成绩)
SanZhang 70 80 61
SiLi 86 77 81
WuWang 88 90 77
MingLi 60 77 81
MiWang 71 70 60
HaiLi 88 78 89
HeWang 70 90 80
LiWang 67 71 70
输出:利用字典容器,完成对于每个学生成绩数据的储存,并将所有学生储存于列表中;在此基础上,
按照总分从高到低的学生名单,总分从低到高的学生名单,三门课成绩从高到低的学生名单。
给出具体的排序结果、涉及的代码,以及简要介绍自己设计的排序算法原理

摘要

通过实现Student_score_info_list类,完成本次大作业要求的所有方法。

该成绩管理系统介绍:

题目要求的功能:

  • 通过实现Student_score_info_list类,对每个学生的成绩数据进行存储(使用列表这个数据结构)每个列表里面的元素类型为字典类型(哈希表),字典存储了学生姓名,以及三个科目的成绩。

  • 另外通过print_info_list_by_method方法,按照题目不同排序要求进行数据的打印。

额外实现的功能:

  • 可以对学生成绩的进行增、删、查、改的操作
  • 提供学生成绩管理系统的菜单界面 – 可以根据用户选择进行相对应的操作
  • 可以动态管理学生成绩 – 不局限于固定好的输入

关于排序算法:

  • 提供了一种高效的排序方式,归并排序(为什么选择归并排序的原因将在后续解释)

输入学生信息

提供start_working()类方法,调用menu()方法,根据用户输入进行相对应操作。

用户选择1表示增加学生成绩信息,此时利用进入条件语句后输入相对应名字,成绩等信息后,调用add_student_info方法,传入Person(type:dict)即可以完成学生成绩的添加。

代码如下:

def menu(self): # 菜单
        print("*********************")
        print("------- 目录 --------")
        print("------ 1.add --------")
        print("------ 2.del --------")
        print("------ 3.search -----")
        print("------ 4.modify -----")
        print("------ 5.print ------")
        print("*********************")
        print("现在已经有",len(self.stu_info_list),"位学生的成绩")
def start_working(self):  # 学生成绩管理系统开始运行
        while True:
            self.menu()
            sec=int(input("请输入:>"))
            if sec==1:
                # 添加学生信息
                person={}
                name=input("请输入名字:>")
                person['name']=name
                Advanced_Mathematics=int(input("请输入高数成绩:>"))
                person['Advanced_Mathematics']=Advanced_Mathematics
                English=int(input("请输入英语成绩:>"))
                person['English']=English 
                College_Physics=int(input("请输入大学物理成绩:>"))
                person['College_Physics']=College_Physics 
                person['total_score']=Advanced_Mathematics+English+College_Physics
                print("添加成功!")
                print()
                self.add_student_info(person)
            elif sec==2:
                # 删除学生成绩
                name=input("请输入要删除学生的名字:>")
                self.del_student_info(name)
                print()
            elif sec==3:
                name=input("请输入要查找学生的名字:>")
                self.search_student_info(name)
                print()
            elif sec==4:
                name=input("请输入要修改学生的名字:>")
                self.modify_student_info(name)
                print()
            elif sec==5:
                print("------- 打印方式 --------")
                print("---- 0.按照高数成绩降序 ----")
                print("---- 1.按照英语成绩降序 ----")
                print("---- 2.按照大物成绩降序 ----")
                print("---- 3.按照总分成绩降序 ----")
                print("---- 4.按照总分成绩升序 ----")
                sec=int(input("请选择:>"))
                self.print_info_list_by_method(sec)
                print()
            else:
                print("选择错误 -- 程序退出!")
                sys.exit()

以此类推看可以添加题目所要求的所有学生的成绩。

学生成绩的打印

通过调用print_info_list_by_method()方法,打印学生的成绩,可以根据用户的选择来调用相应的排序方式和打印方式。

首先先在Student_score_info_list中定义类属性

self.sort_method = ['Advanced_Mathematics', 'English', 'College_Physics',
                            'total_score']

这样处理可以使得我们调用相对应的排序方法时更加方便,直接处理该sort_method列表的下标即可。

start_working方法中定义菜单,让用户选择排序方式:

            elif sec==5:
                print("------- 打印方式 --------")
                print("---- 0.按照高数成绩降序 ----")
                print("---- 1.按照英语成绩降序 ----")
                print("---- 2.按照大物成绩降序 ----")
                print("---- 3.按照总分成绩降序 ----")
                print("---- 4.按照总分成绩升序 ----")
                sec=int(input("请选择:>"))
                self.print_info_list_by_method(sec)
                print()

定义print_info_list_by_method()方法

利用条件语句判断用户输入的整型,并调用排序函数(排序函数的具体实现将在后面解释)

为了使得打印学生成绩更加美观 – 采用pandas库中的DataFrame数据类型进行打印

    # 为了使得打印学生成绩更加美观 -- 采用pandas库中的DataFrame数据类型进行打印
    import pandas as pd
    def print_list(self):
        print("------------- 学生成绩 -------------")
        # 利用DataFrame打印会更好看一些
        df=pd.DataFrame(self.stu_info_list,index=None)
        print(df)
        print("------------- 学生成绩 -------------")    
    def print_info_list_by_method(self, sort_method_type):
        if sort_method_type == 0:
            class_sort = My_HeapSort_By_Student_score(
                self.stu_info_list, self.sort_method, 0, 0)
            self.stu_info_list = class_sort.sortArray()
            self.print_list()
            # 按照高数排序
            pass
        elif sort_method_type == 1:
            class_sort = My_HeapSort_By_Student_score(
                self.stu_info_list, self.sort_method, 1, 0)
            self.stu_info_list = class_sort.sortArray()
            self.print_list()
            # 按照英语排序
            pass
        elif sort_method_type == 2:
            class_sort = My_HeapSort_By_Student_score(
                self.stu_info_list, self.sort_method, 2, 0)
            self.stu_info_list = class_sort.sortArray()
            self.print_list()
            # 按照大学物理排序
            pass
        elif sort_method_type == 3:
            class_sort = My_HeapSort_By_Student_score(
                self.stu_info_list, self.sort_method, 3, 0)
            self.stu_info_list = class_sort.sortArray()
            self.print_list()
            # 按照总分排序 -- 降序
            pass
        elif sort_method_type == 4:
            class_sort = My_HeapSort_By_Student_score(
                self.stu_info_list, self.sort_method, 3, 1)
            self.stu_info_list = class_sort.sortArray()
            self.print_list()
            # 按照总分排序 -- 升序
            pass

排序的具体实现

定义排序类:My_MergeSort_By_Student_score来封装排序算法

定义构造函数,所接受参数为:

  1. dict_list要排序的字典序列
  2. sort_method前面定义的字符序列
  3. sort_method_type排序类型(整型)
  4. Seq整型,1代表降序,0代表升序
class My_MergeSort_By_Student_score:
    def __init__(self, dict_list, sort_method, sort_method_type, Seq):
        self.key = sort_method[sort_method_type]  # key是str类型,决定按照什么排序
        self.Seq = Seq  # 决定升序还是降序
        self.dict_list = dict_list  # 待排序的字典序列

归并排序

效率可以达到O(nlogn)的常用排序有:快速排序,堆排序,归并排序。效率为O(n1.3)的排序为希尔排序。

按照题目要求:相同成绩都按先录入排列在前的规则处理。因此排序过程中,数值相等的变量的相对位置不能发生改变,因此一定要采用稳定的排序算法。
采用归并排序,它可以做到效率和稳定性兼顾。

归并排序的基本思想:

归并排序:
归并排序所用的核心思想就是分治!
归并排序(mergeSort)就是将已经有序的子序列合并,得到另一个有序的数列
归是归并的归,不是递归的归,归并排序就是合并排序
将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。

img

归并排序的实现方法由递归和循环两种方法
递归方法的源代码简单一些
循环方法的源代码复杂一些,但效率高

这里采用递归方法:

class My_MergeSort_By_Student_score:
    def __init__(self, dict_list, sort_method, sort_method_type, Seq):
        self.key = sort_method[sort_method_type]  # key是str类型,决定按照什么排序
        self.Seq = Seq  # 决定升序还是降序
        self.dict_list = dict_list  # 待排序的字典序列
    def mergeSort(self,arr,arrtmp,start,end):
        if start>=end: return
        mid=start+int((end-start)/2)
        istart1=start
        iend1=mid

        istart2=mid+1
        iend2=end
        self.mergeSort(arr,arrtmp,istart1,iend1)
        self.mergeSort(arr,arrtmp,istart2,iend2)
        # 开始归并
        i = start
        while istart1 <= iend1 and istart2 <= iend2:
            if arr[istart1][self.key]<arr[istart2][self.key]:
                arrtmp[i]=arr[istart1]
                istart1+=1
            else:
                arrtmp[i]=arr[istart2]
                istart2+=1
            i+=1
        while istart1<=iend1:
            arrtmp[i]=arr[istart1]
            i+=1
            istart1+=1
        while istart2<=iend2:
            arrtmp[i]=arr[istart2]
            i+=1
            istart2+=1
        # 把原来的数据拷贝回去
        for i in range(start,end+1):
            arr[i]=arrtmp[i]
    def sortArray(self):
        nums=self.dict_list
        if len(nums)<2:return nums
        arrtmp=[]
        for i in range(0,len(nums)):
            arrtmp.append(0)
        self.mergeSort(nums,arrtmp,0,len(nums)-1)
        if self.Seq==1:
            nums=nums.reverse()
        return nums

除题目要求额外实现的功能

删除学生信息

 elif sec==2:
                # 删除学生成绩
                name=input("请输入要删除学生的名字:>")
                self.del_student_info(name)
                print()
    # 查找算法还可以优化 -- 如果使用哈希表存储可以大大提高查找效率(在学生信息多的情况下)
    def del_student_info(self, name):  # 删除名为name的学生成绩
        # 暴力查找名字
        for i in range(0, len(self.stu_info_list)):
            if self.stu_info_list[i]['name'] == name:
                self.stu_info_list.remove(self.stu_info_list[i])
                print("successfully removed!")
                if_removed = True
                return
        print("err,No information about the student!")

修改学生信息

暴力查找名字 – 找到之后输入新的成绩信息

def modify_student_info(self, name):  # 修改名为name的学生成绩
        for i in range(0, len(self.stu_info_list)):
            if self.stu_info_list[i]['name'] == name:
                print("please modify the score info:")
                # 只允许修改分数,不允许修改名字
                new_total_score = 0
                new_score = int(input("Advanced_Mathematics:"))
                new_total_score += new_score
                self.stu_info_list[i]['Advanced_Mathematics'] = new_score
                new_score = int(input("English:"))
                new_total_score += new_score
                self.stu_info_list[i]['English'] = new_score
                new_score = int(input("College_Physics:"))
                new_total_score += new_score
                self.stu_info_list[i]['College_Physics'] = new_score
                # 更新总成绩
                self.stu_info_list[i]['total_score'] = new_total_score
                break

查找学生信息

查找算法和修改、删除其实一样,暴力遍历查找即可,找到之后打印信息,找不到则打印错误提示

    def search_student_info(self, name):  # 查找名为name的学生成绩
        for i in range(0, len(self.stu_info_list)):
            if self.stu_info_list[i]['name'] == name:
                print("name:", self.stu_info_list[i]['name'])
                print("Advanced_Mathematics",
                      self.stu_info_list[i]['Advanced_Mathematics'])
                print("English", self.stu_info_list[i]['English'])
                print("College_Physics",
                      self.stu_info_list[i]['College_Physics'])
                print("total_score", self.stu_info_list[i]['total_score'])
                break
        print("err,No information about the student!")

学生成绩管理系统整体代码

class My_MergeSort_By_Student_score:
    def __init__(self, dict_list, sort_method, sort_method_type, Seq):
        self.key = sort_method[sort_method_type]  # key是str类型,决定按照什么排序
        self.Seq = Seq  # 决定升序还是降序
        self.dict_list = dict_list  # 待排序的字典序列
    def mergeSort(self,arr,arrtmp,start,end):
        if start>=end: return
        mid=start+int((end-start)/2)
        istart1=start
        iend1=mid

        istart2=mid+1
        iend2=end
        self.mergeSort(arr,arrtmp,istart1,iend1)
        self.mergeSort(arr,arrtmp,istart2,iend2)
        # 开始归并
        i = start
        while istart1 <= iend1 and istart2 <= iend2:
            if arr[istart1][self.key]<arr[istart2][self.key]:
                arrtmp[i]=arr[istart1]
                istart1+=1
            else:
                arrtmp[i]=arr[istart2]
                istart2+=1
            i+=1
        while istart1<=iend1:
            arrtmp[i]=arr[istart1]
            i+=1
            istart1+=1
        while istart2<=iend2:
            arrtmp[i]=arr[istart2]
            i+=1
            istart2+=1
        # 把原来的数据拷贝回去
        for i in range(start,end+1):
            arr[i]=arrtmp[i]
    def sortArray(self):
        nums=self.dict_list
        if len(nums)<2:return nums
        arrtmp=[]
        for i in range(0,len(nums)):
            arrtmp.append(0)
        self.mergeSort(nums,arrtmp,0,len(nums)-1)
        print(nums)
        if self.Seq==0:
            nums=nums[-1::-1]
        return nums

class Student_score_info_list():
    def __init__(self, stu_info_list=[]):  # 提供缺省的参数,如果已有学生成绩 -- 可导入此类
        self.stu_info_list = stu_info_list  # 学生的列表
        self.sort_method = ['Advanced_Mathematics', 'English', 'College_Physics',
                            'total_score']
    def menu(self):
        print("*********************")
        print("------- 目录 --------")
        print("------ 1.add --------")
        print("------ 2.del --------")
        print("------ 3.search -----")
        print("------ 4.modify -----")
        print("------ 5.print ------")
        print("*********************")
        # print(self.stu_info_list)
        print("现在已经有",len(self.stu_info_list),"位学生的成绩")
    def start_working(self):  # 学生成绩管理系统开始运行
        while True:
            self.menu()
            sec=int(input("请输入:>"))
            if sec==1:
                # 添加学生信息
                person={}
                name=input("请输入名字:>")
                person['name']=name
                Advanced_Mathematics=int(input("请输入高数成绩:>"))
                person['Advanced_Mathematics']=Advanced_Mathematics
                English=int(input("请输入英语成绩:>"))
                person['English']=English 
                College_Physics=int(input("请输入大学物理成绩:>"))
                person['College_Physics']=College_Physics 
                person['total_score']=Advanced_Mathematics+English+College_Physics
                print("添加成功!")
                print()
                self.add_student_info(person)
            elif sec==2:
                # 删除学生成绩
                name=input("请输入要删除学生的名字:>")
                self.del_student_info(name)
                print()
            elif sec==3:
                name=input("请输入要查找学生的名字:>")
                self.search_student_info(name)
                print()
            elif sec==4:
                name=input("请输入要修改学生的名字:>")
                self.modify_student_info(name)
                print()
            elif sec==5:
                print("------- 打印方式 --------")
                print("---- 0.按照高数成绩降序 ----")
                print("---- 1.按照英语成绩降序 ----")
                print("---- 2.按照大物成绩降序 ----")
                print("---- 3.按照总分成绩降序 ----")
                print("---- 4.按照总分成绩升序 ----")
                sec=int(input("请选择:>"))
                self.print_info_list_by_method(sec)
                print()
            else:
                print("选择错误 -- 程序退出!")
                sys.exit()
    def print_list(self):
        print("------------- 学生成绩 -------------")
        # 利用DataFrame打印会更好看一些
        df=pd.DataFrame(self.stu_info_list)
        print(df)
        print("------------- 学生成绩 -------------")
    def print_info_list_by_method(self, sort_method_type):
        if sort_method_type == 0:
            class_sort = My_MergeSort_By_Student_score(
                self.stu_info_list, self.sort_method, 0, 0)
            self.stu_info_list = class_sort.sortArray()
            self.print_list()
            # 按照高数排序
            pass
        elif sort_method_type == 1:
            class_sort = My_MergeSort_By_Student_score(
                self.stu_info_list, self.sort_method, 1, 0)
            self.stu_info_list = class_sort.sortArray()
            self.print_list()
            # 按照英语排序
            pass
        elif sort_method_type == 2:
            class_sort = My_MergeSort_By_Student_score(
                self.stu_info_list, self.sort_method, 2, 0)
            self.stu_info_list = class_sort.sortArray()
            self.print_list()
            # 按照大学物理排序
            pass
        elif sort_method_type == 3:
            class_sort = My_MergeSort_By_Student_score(
                self.stu_info_list, self.sort_method, 3, 0)
            self.stu_info_list = class_sort.sortArray()
            self.print_list()
            # 按照总分排序 -- 降序
            pass
        elif sort_method_type == 4:
            class_sort = My_MergeSort_By_Student_score(
                self.stu_info_list, self.sort_method, 3, 1)
            self.stu_info_list = class_sort.sortArray()
            self.print_list()
            # 按照总分排序 -- 升序
            pass

    def add_student_info(self, person):  # 按照题目要求,此时的person应该是dict对象
        self.stu_info_list.append(person)

    def del_student_info(self, name):  # 删除名为name的学生成绩
        # 暴力查找名字
        for i in range(0, len(self.stu_info_list)):
            if self.stu_info_list[i]['name'] == name:
                self.stu_info_list.remove(self.stu_info_list[i])
                print("successfully removed!")
                if_removed = True
                return
        print("err,No information about the student!")

    def search_student_info(self, name):  # 查找名为name的学生成绩
        for i in range(0, len(self.stu_info_list)):
            if self.stu_info_list[i]['name'] == name:
                print("name:", self.stu_info_list[i]['name'])
                print("Advanced_Mathematics",
                      self.stu_info_list[i]['Advanced_Mathematics'])
                print("English", self.stu_info_list[i]['English'])
                print("College_Physics",
                      self.stu_info_list[i]['College_Physics'])
                print("total_score", self.stu_info_list[i]['total_score'])
                break
        print("err,No information about the student!")

    def modify_student_info(self, name):  # 修改名为name的学生成绩
        for i in range(0, len(self.stu_info_list)):
            if self.stu_info_list[i]['name'] == name:
                print("please modify the score info:")
                # 只允许修改分数,不允许修改名字
                new_total_score = 0
                new_score = int(input("Advanced_Mathematics:"))
                new_total_score += new_score
                self.stu_info_list[i]['Advanced_Mathematics'] = new_score
                new_score = int(input("English:"))
                new_total_score += new_score
                self.stu_info_list[i]['English'] = new_score
                new_score = int(input("College_Physics:"))
                new_total_score += new_score
                self.stu_info_list[i]['College_Physics'] = new_score
                # 更新总成绩
                self.stu_info_list[i]['total_score'] = new_total_score
                break


# ============================================ main ============================================== #
# 本成绩管理系统所有方法由 <Student_score_info_list> 类提供

# main函数
def main():
    s=Student_score_info_list()
    s.start_working()


if __name__ == '__main__':
    main()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/765018.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java的五种数据类型解析

Java的五种数据类型解析 不知道大家对java的简单数据类型是否了解&#xff0c;下面针对Java的五种类型简单数据类型表示数字和字符&#xff0c;进行详细的讲解和分析。 一、简单数据类型初始化 在Java语言中&#xff0c;简单数据类型作为类的成员变量声明时自动初始化为默认值…

IDEA远程调试SpringBoot项目

IDEA远程调试SpringBoot项目 一、前提二、脚本三、运行远程项目四、本地配置五、使用场景六、扩展点 一、前提 保证线上的jar代码和本地代码一样 二、脚本 nohup java -Xdebug -Xnoagent -Djava.compilerNONE Xrunjdwp:transportdt_socket,servery,suspendn,address5001 -ja…

golang网络编程学习-websocket

golang网络编程学习-websocket 网络编程主要的内容是&#xff1a; 1.TCP网络编程 2.http服务 3.rpc服务 4.websocket服务 一、websocket编程 1.1服务端&#xff0c;代码来自网络&#xff0c;仅限于学习研究 package mainimport ("fmt""net/http""os…

智慧签 - 开源研究系列文章

这些天整理了一下以前的代码&#xff0c;将一个插件里的便签器的源码单独找出来&#xff0c;弄成了这个“智慧签”的程序。程序比较简单&#xff0c;具体请读者自己看代码。 1、 项目目录&#xff1b; 目录见下图&#xff0c;对代码进行了划分&#xff0c;比较简单。主处…

golang网络编程学习-1rpc

网络编程主要的内容是&#xff1a; 1.TCP网络编程 2.http服务 3.rpc服务 4.websocket服务 一、rpc RPC 框架----- 远程过程调用协议RPC&#xff08;Remote Procedure Call Protocol)-----允许像调用本地服务一样调用远程服务。 RPC是指远程过程调用&#xff0c;也就是说两台服…

visual studio配置调用c++ dll opencv为例

1&#xff0c;配置VC目录&#xff0c;包含目录和库目录。 2&#xff0c;链接器->输入->包含目录 3&#xff0c;生成目录下包含对应的dll文件 4&#xff0c;需注意对应的Debug&#xff0c;Release及X86&#xff0c;X64选项

flutter 自适应宽高气泡框,聊天气泡框

先看效果 前言&#xff1a;&#xff1a;&#xff1a;&#xff1a; 网上好多气泡框&#xff0c;都让写固定宽高&#xff0c;无法自适应文本内容。 还有的就是通过算child 然后动态计算气泡框宽高&#xff0c;脱裤子&#x1f4a8;&#xff0c;放到listview 刷新数据还会丢ui&am…

Spring Cloud Alibaba的组件(解决方案)

Spring Cloud Alibaba的组件&#xff08;解决方案&#xff09; 前言Spring CloudSpring Cloud Alibaba问题的解决方案面临的问题Spring Cloud Alibaba给出的解决方案 前言 在之前的文章里我们介绍了分布式微服务以及其需要解决的问题&#xff0c;现在我们看看在Spring Cloud A…

31. IO操作

一、概览二、磁盘操作三、字节操作 实现文件复制装饰者模式 四、字符操作 编码与解码String 的编码方式Reader 与 Writer实现逐行输出文本文件的内容 五、对象操作 序列化Serializabletransient 六、网络操作 InetAddressURLSocketsDatagram 七、NIO 流与块通道与缓冲区缓冲区状…

数据结构基本概念、线性表、顺序表

一、头文件 head.h #ifndef __HEAD_H__ #define __HEAD_H__#include <stdio.h> #include <string.h> #include <stdlib.h> #define MAXSIZE 8typedef int datatype; typedef struct {int len;datatype data[MAXSIZE]; }Seqlist;Seqlist * Request_space(voi…

利用python绘制对数坐标轴

利用python绘制对数坐标轴 1&#xff09;效果图 2&#xff09; 程序代码 import matplotlib.pyplot as plt import numpy as np# 设置图形的大小 plt.figure(figsize(8, 6))# 设置x轴的范围为10的-4次方到10的3次方 plt.xlim(1e-4, 1e3)# 绘制x轴的对数坐标轴 plt.xscale(log…

浅谈防火门监控系统在酒店防火安全中的重要应用

安科瑞 华楠 摘要&#xff1a;建筑防火问题已经引起人们的广泛关注&#xff0c;合理进行建筑消防设计成为了建筑设计的重要内容。防火门监控系统是建筑防火研究的新成果。对日常防火分区监控及发生火灾后对火势和有毒气体的控制起到关建作用。文章对防火门监控系统的组成和工…

网络安全(黑客技术)自学笔记+就业市场前景分析

一、针对网络安全市场分析 市场需求量高&#xff1b;则是发展相对成熟入门比较容易。所需要的技术水平国家政策环境 对于国家与企业的地位愈发重要&#xff0c;没有网络安全就没有国家安全 更有为国效力的正义黑客—红客联盟 可见其重视程度。 需要掌握的知识点偏多 外围打点…

18 - 堆栈 - 二项堆

前面我们学习了斐波那契堆, 今天我们来学习二项堆! 二项堆 二项堆是二项树的集合或是由一组二项树组成。 二项堆H由一组满足以下性质的二项树组成: 1) H中的每个二项树都遵循最小堆性质:节点的关键字不大于其子节点的关键字。因此,根的关键字最小 2) 对任意非负整数…

【ARM——当前程序状态寄存器 CPSR

文章目录 CPSRSPSRSPSRCPSR 各个位含义 CPSR Current Program Status Register 即 CPSR,当前程序状态寄存器&#xff0c;可以在任何处理器模式下被访问。它包含了条件标志位、中断禁止位&#xff0c;当前处理器模式标志以及其他的一些控制和状态位。 SPSR 除了 usr 和 sys 模…

【C++】list的使用及底层实现原理

本篇文章对list的使用进行了举例讲解。同时也对底层实现进行了讲解。底层的实现关键在于迭代器的实现。希望本篇文章会对你有所帮助。 文章目录 一、list的使用 1、1 list的介绍 1、2 list的使用 1、2、1 list的常规使用 1、2、2 list的sort讲解 二、list的底层实现 2、1 初构…

vue文件上传,文件打不开。文件上传 on-progress不触发

//文件上传带进度条<el-uploadv-model:file-list"fileList":limit"3":on-progress"beforeAvatarUpload"//on-progress 不触发&#xff0c;触发的关键在于覆盖原有的http请求:http-request"getFile":action"${app.api}/student…

【从零开始学习JAVA | 第二十九篇】Stream流

目录 前言&#xff1a; Stram流&#xff1a; 设计目标&#xff1a; 使用步骤&#xff1a; 1.先得到一条Stream流&#xff0c;并把数据放上去。 2.利用Stream流中的各种API进行操作。 使用Stream流的注意事项&#xff1a; 总结: 前言&#xff1a; 本文我们将学习Stream流…

Windows用户注意!LokiBot恶意软件正通过Office文档传播

Windows用户再次成为被称为LokiBot恶意软件的攻击目标&#xff0c;该恶意软件通过Office文档进行传播。 根据Fortinet安全研究员Cara Lin的最新报告&#xff0c;攻击者利用已知漏洞&#xff0c;如CVE-2021-40444和CVE-2022-30190&#xff0c;在微软Office文档中嵌入恶意宏。 …

Eulaceura 版本 23H1:RISC-V 架构新的里程碑

近日&#xff0c;RISC-V SIG 发布了 Eulaceura 版本 23H1&#xff0c;这是发行版的一次重大更新&#xff0c;新版本搭建了 linux kernel 6.1 版本内核&#xff0c;适用于矽速科技 LicheePi 4A 的映像也已公布。Eulaceura 是首个将 RISC-V 架构纳入第一级支持范围的 openEuler 发…