学生成绩管理系统-python

2023-05-16

乱写的成绩管理系统–派森

#定义学生类型 姓名、学号、科目
class Student:
    def __init__(self, id1,name,python_input,c_score_input,math_input, foreign_language_input):
        self.ID=id1
        self.name=name
        self.python =python_input
        self.math = math_input
        self.foreign_language = foreign_language_input
        self.C=c_score_input

    def __str__(self):
        return f"学号:{self.id}\n总分:{self.total()}\n"
    #计算它自己的总成绩
    def total(self):
        return self.python+ self.math + self.foreign_language+self.C




# 查询函数
def query():
    def menu():
        print("\t\t\t\t\t\t\t-------------------------------")
        print("\t\t\t\t\t\t\t      欢迎进入查询模块          ")
        print("\t\t\t\t\t\t\t------------------------------ ")
        print("\t\t\t\t\t\t\t     1.查询单个学生成绩         ")
        print("\t\t\t\t\t\t\t     2.查询所有学生成绩         ")
        print("\t\t\t\t\t\t\t     3.查询不及格名单           ")
        print("\t\t\t\t\t\t\t     4.查询班级平均成绩         ")
        print("\t\t\t\t\t\t\t     5.    退出模块            ")
        print("\t\t\t\t\t\t\t------------------------------")
    #功能1
    def single():
        global Data
        print("\t\t\t\t\t\t\t查看学员成绩:")
        print()
        # 列表生成式
        b = [i.ID for i in Data]
        # 判断该生是否存在
        while 1:
            id_input = input("\t\t\t\t\t\t\t请输入学号:")
            if id_input in b:
                break
            print('\t\t\t\t\t\t\t该生信息不存在,请重新输入!')
        # 过滤函数+匿名函数
        a = list(filter(lambda i: i.ID == id_input, Data))[0]#注意这个[0]
        print("\t\t\t\t\t\t\t学号:{:} 姓名:{:}".format(a.ID,a.name))
        print("\t\t\t\t\t\t\tpython成绩:{:} C语言:{:} 高等数学:{:} 外语:{}".format(a.python,a.C,a.math,a.foreign_language))
        print("\t\t\t\t\t\t\t",end="")
        if a.python<60:
            print("python成绩不及格",end=" ")
        if a.foreign_language<60:
            print("外语成绩不及格",end=" ")
        if a.math<60:
            print("数学成绩不及格",end=" ")
        if a.C<60:
            print("C语言成绩不及格",end=" ")
        print()

    #功能2
    def all():
        global Data
        for i in Data:
            print("\t\t\t\t\t\t\t学号:{:} 姓名:{:}".format(i.ID,i.name))
            print("\t\t\t\t\t\t\tpython成绩:{:} C语言:{:} 高等数学:{:} 外语:{}".format(i.python,i.C,i.math,i.foreign_language))
            print()


    # 查看不及格名单
    def failed():
        math_f = []
        python_f = []
        foreign_language_f= []
        c_f=[]
        global Data
        for i in Data:
            if i.math < 60:
                math_f.append([i.ID,i.name,i.math])
            if i.python < 60:
                python_f.append([i.ID,i.name,i.python])
            if i.foreign_language < 60:
                foreign_language_f.append([i.ID,i.name,i.foreign_language])
            if i.C < 60:
                c_f.append([i.ID,i.name,i.C])

        print("\t\t\t\t\t\t\t高等数学不及格名单:")
        for i in math_f:
            print("\t\t\t\t\t\t\t学号:{} 姓名:{} 成绩:{}".format(i[0],i[1],i[2]))
        print()
        print("\t\t\t\t\t\t\tC语言不及格名单:")
        for i in c_f:
            print("\t\t\t\t\t\t\t学号:{} 姓名:{} 成绩:{}".format(i[0], i[1], i[2]))
        print()
        print("\t\t\t\t\t\t\tPython不及格名单:")
        for i in python_f:
            print("\t\t\t\t\t\t\t学号:{} 姓名:{} 成绩:{}".format(i[0],i[1],i[2]))
        print()
        print("\t\t\t\t\t\t\t外语不及格名单:")
        for i in foreign_language_f:
            print("\t\t\t\t\t\t\t学号:{} 姓名:{} 成绩:{}".format(i[0],i[1],i[2]))

    #平均数查询
    def average():
        global Data
        c_score=[]
        python=[]
        math=[]
        foreign_language=[]
        num=len(Data)
        for i in Data:
            c_score.append(i.C)
            python.append(i.python)
            math.append(i.math)
            foreign_language.append(i.foreign_language)

        print("\t\t\t\t\t\t\t------------------------")
        print("\t\t\t\t\t\t\t     班级平均成绩        ")
        print("\t\t\t\t\t\t\t     高等数学:%.2f       "%(sum(math)/num))
        print("\t\t\t\t\t\t\t     C语言:%.2f          "%(sum(c_score)/num))
        print("\t\t\t\t\t\t\t     Python:%.2f          "%(sum(python)/num))
        print("\t\t\t\t\t\t\t     外语:%.2f           "%(sum(foreign_language)/num))
        print("\t\t\t\t\t\t\t-------------------------")



#主区域:
    menu()
    times=0
    while 1:
        if times>=2:
            print("\t\t\t\t\t\t\t按8可以查看菜单")
            print()
            times=0
        print()
        choose=eval(input("\t\t\t\t\t\t\t选择:"))
        print()
        if choose == 1:
            single()
            times+=1
        elif choose == 2:
            all()
            times+=1
        elif choose==3:
            failed()
            times+=1
        elif choose==4:
            average()
            times+=1
        elif choose==8:
            menu()
            times+=1
        else:
            break






#菜单
def menu_select():
   print("""


                               ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨    ヾ(≧▽≦*)o ~hello
                               ✨----欢迎使用成绩管理系统-----✨
                               ✨-+------------------------+-✨     (*^▽^*)按下对应的键位即可~
                               ✨    1.进入信息管理模块       ✨
                               ✨----------------------------✨     ( ̄▽ ̄)"信息管理就是存入或删除学生学号姓名之类的
                               ✨    2.进入信息排序模块       ✨
                               ✨----------------------------✨     (^∀^●)ノシ按学号或科目排序啦
                               ✨    3.进入信息查询模块       ✨
                               ✨----------------------------✨      (/▽\)查询平均成绩、不及格名单啦
                               ✨    4. 退  出  系  统        ✨
                               ✨-+------------------------+-✨       (~ ̄▽ ̄)~    按4可以退出系统啦~
                               ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
   """)


#信息管理
def student_manage():

        #增加信息
        def record():
            global Data
            #列表生成式
            b = [i.ID for i in Data]
            while 1:
                id_input = input("\t\t\t\t\t\t\t请输入学号:").strip()#移除输入数字之前的0比如001 移除之后就是1
                # 检测重复输入学号
                if id_input not in b:
                    break
                print('\t\t\t\t\t\t\t该生信息已存在,请重新输入!')
            name=input("\t\t\t\t\t\t\t姓名:")
            python = int(input("\t\t\t\t\t\t\tpython成绩:"))
            c_score=eval(input("\t\t\t\t\t\t\tC语言成绩:"))
            math = int(input("\t\t\t\t\t\t\t高等数学成绩:"))
            foreign_language = int(input("\t\t\t\t\t\t\t外语成绩:"))
            Data.append(Student(id_input,name,python,c_score,math,foreign_language))
            print("\t\t\t\t\t\t\t添加成功!")


        #删除学生信息
        def delete():
            global Data
            b = [i.ID for i in Data]
            while 1:
                id_input = input("\t\t\t\t\t\t\t请输入学号:")
                if id_input in b:
                    break
                print('\t\t\t\t\t\t\t该生信息不存在,请重新输入!')
            #匿名函数+筛选元素构成新列表,用新列表替换旧列表
            a = list(filter(lambda i: i.ID != id_input, Data))
            #替换
            Data = a
            print("\t\t\t\t\t\t\t删除成功!")



        #子菜单
        def menu():
            print("\t\t\t\t\t\t\t-------------------------------")
            print("\t\t\t\t\t\t\t    欢迎进入学生信息管理模块     ")
            print("\t\t\t\t\t\t\t------------------------------ ")
            print("\t\t\t\t\t\t\t     1.  添加学生信息         ")
            print("\t\t\t\t\t\t\t     2.  删除学生信息         ")
            print("\t\t\t\t\t\t\t     3.    退出模块            ")
            print("\t\t\t\t\t\t\t------------------------------")


        menu()
        while 1:
            print()
            choose=eval(input("\t\t\t\t\t\t\t选择:"))
            print()
            if choose==1:
                record()
            elif choose==2:
                delete()
            elif choose==8:
                menu()
            else:
                break




#单科成绩排序、学号排序
def sort_made():

    def menu():
        print("\t\t\t\t\t\t\t-------------------------------")
        print("\t\t\t\t\t\t\t      欢迎进入排列模块          ")
        print("\t\t\t\t\t\t\t------------------------------ ")
        print("\t\t\t\t\t\t\t     1.  按学号排列         ")
        print("\t\t\t\t\t\t\t     2. 按单科成绩排列         ")
        print("\t\t\t\t\t\t\t     3.   退出模块            ")
        print("\t\t\t\t\t\t\t------------------------------")


    menu()
    global Data
    times=0
    while 1:
        if times>=2:
            print("\t\t\t\t\t\t\t按8可以显示菜单")
            print()
            times=0
        print()
        choose=eval(input("\t\t\t\t\t\t\t请选择:"))
        if choose==1:
            Data=sorted(Data,key=lambda x:eval(x.ID))
            times+=1
        elif choose==2:
            subject=input("\t\t\t\t\t\t\t请输入科目:")
            times+=1
            if subject=="高等数学"or subject=="数学":
                Data=sorted(Data,key=lambda x:x.math,reverse=True)
            if subject=="外语":
                Data = sorted(Data, key=lambda x: x.foreign_language,reverse=True)
            if subject=="Python":
                Data = sorted(Data, key=lambda x: x.python,reverse=True)
            if subject=="C语言":
                Data = sorted(Data, key=lambda x: x.C,reverse=True)
        elif choose==8:
            menu()
        else:
            break




#起始
from random import randint

#提前创建对象0=99号 作用调试程序
Data=[]
for i in range(0,11):
    Data.append(Student(f"{i}","student"+ str(i), randint(40, 100), randint(50, 100),randint(30,100),randint(50,100)))
    # print(Data[i].ID)
#截止




#主函数
def main():
    menu_select()
    times=0
    while 1:
        if times>=2:
            print("\t\t\t\t\t\t\t按8可显示主菜单")
            print()
            times=0
        print()
        choose=eval(input("\t\t\t\t\t\t\t请输入:"))
        print()
        if choose==1:
            student_manage()
            times+=1
        elif choose==2:
            sort_made()
            times+=1
        elif choose==3:
            query()
            times+=1
        elif choose==4:
            break
        elif choose==8:
            menu_select()






if __name__=="__main__":
    main()

系统设计说明:

一、需求分析:

  1. 清爽的菜单界面
  2. 存储学生的学号、姓名
  3. 能够删除学生的信息
  4. 能够按照学生的成绩或学号从高到低进行排序
  5. 能够显示不及格的同学信息
  6. 能够输出整个班平均成绩

二、概要设计:

  1. 菜单分两部分,主菜单和子菜单
  2. 创建学生类,实例对象拥有学号,姓名,各科成绩三项属性
  3. 编写管理信息模块,模块中有三个函数,菜单,添加和删除信息函数
  4. 编写查询模块,模块中有四个函数,菜单,查询单个和全部学生成绩以及班级平均成绩函数
  5. 编写排序函数,负责按单科或学号对学生排序
  6. 主函数,调用所有模块(管理、查询、排序)。

三、详细设计:

1.菜单设计:

我们设计了主菜单和子菜单。主菜单能大概说明系统功能,子菜单能细说系统功能。我在主菜单中写入了,以下内容:
一、 信息管理模块
二、 信息排序模块
三、 信息查询模块
用户进入模块后会有子菜单弹出,来进一步向用户阐明该系统的功能。比如,用户进入了信息管理模块,子菜单就会有一下内容:
一、 添加学生信息
二、 删除学生信息
三、 退出模块
用户看完这些内容,就知道主菜单各模块的意义,也能够进一步理解主菜单想表达的意思。当然为了方便用户在主菜单进行选择时不感到迷茫,我们在主菜单的右侧进行了趣味的批注,这样批注增加了整个程序趣味性,用户使用我们程序的次数也会有所提高。不过为了不让其他成员编写模块时任意指定功能顺序,我们把子菜单都放入各个模块当中。至于主菜单的外观,我们使用了有趣的符号来进行构架,让整个程序亮闪闪的,简约而不简单。

2.学生类的创建:

创建学生类,实例属性有学号、姓名、科目成绩,其中的科目仅有四科,高等数学、C语言、Python和外语。为了方便后面调用对象的属性,我们尽量地把各属性的名字编写的容易记住,我们把学号,姓名,外语成绩,数学成绩,Python成绩,C语言成绩分别用ID,name,foreign_language,math,python,C来表示。为了不让单独调用对象时显得单调,我们在对象中定义了一个__str__方法,来打印他的学号和总分。

3.学生信息管理模块:

(一)学生信息添加函数:
输入函数,负责让用户输入学生的学号、姓名、成绩来创建一个学生对象,并将该对象添加到一个空的列表中,我们把这个装满对象的列表取名为Data,让其他成员在编写时知道这是一个很重要的数据。
实现列表添加对象的代码为:

Data.append(Student(id_input,name,python,c_score,math,foreign_language))

当然为了安全起见,不让用户下次输入重复的学号,我们需要在函数的开头先生成一个装满学生学号的列表,具体代码实现:b = [i.ID for i in Data]
之后我们会使用while 1 语句来判断用户输入的学号是否在列表b中,如果是则会给用户相应的警告“该生已存在”,如果不是用户可以进行姓名和成绩的输入,这样下来信息输入函数就算是完成了。
(二)学生信息删除函数:
删除函数的设计,我们采用的是以新换旧的方式,也就是将用户指定的元素除外,把剩余的元素全部转移到一个空的列表当中,然后再用这个新得到的列表代替整个学生对象列表Data,由于学号的指向性强,所以我们需要让用户输入学号,并通过筛选学号来得到新的列表。
具体代码实现:

a = list(filter(lambda i: i.ID != id_input, Data))

当然为防止用户指定学生对象列表DaTa中不存在的,我们还需要提前把学生对象列表Data中的对象的学号全部拷贝到一个新的列表当中,使用while 1语句并加入判断使用户能够指定正确且存在的元素,比如当用户输入001时,而我们的列表中没有这个学号,之后程序弹出警告,让用户重新输入,直到用户输入成功为止。

4.单科成绩与学号排序模块:

设计排序函数时,需要用到学生对象列表Data,所以需要在函数内部声明全局变量Data(global Data)。在排序函数中,我设计了一个菜单方便用户在排序函数中进行操作,为了用户一直使用,这里采取了while 1语句,之后使用if-elif-else语句来让用户完成选择功能,例如:当用户输入1时,则对应的功能是按学号排序,在考虑排序时使用sorted函数,针对用户的不同要求,按照对象的不同属性进行排序的,例如按照数学的成绩进行排序通过语句:

Data=sorted(Data,key=lambda x:x.math)

按照学号进行排序通过语句:

Data=sorted(Data,key=lambda x:eval(x.ID))

当然整个程序是为了适应用户,所以在用户选择按科目进行排序时,多加入了一些判定条件的运行,如: if choose==”高等数学”or”数学”这样的语句来贴合用户。这就好比输入法的纠错功能,都是为了满足用户输入的要求。

6.学生信息查询模块 :

(一)查询全部学生信息函数:
查询多个学生成绩,即把学生对象列表Data中的对象通过for循环全部遍历,然后把所有对象的所有属性全部打印出来。
(二)查询单个学生信息函数:
查询单个学生成绩,需要筛选列表Data,把那个学生单独放在一个新的列表当中然后,打印把该对象的所有属性全部打印出来,除此之外,我们还在里边加入不及格判断,判断该对象的成绩属性是否超过六十,没有超过六十的会被打印出来视作不及格,比如:print(“python成绩不及格”,end=" "),为了安全,防止用户在输入不存在的学号,我们需要把列表Data中学生的学号全部放在一个新的列表中,来核对用户输入的学号,是否存在。
(三)学生不及格成绩输出:
实现不及格输出,我们考虑了两种思路,以数学为例,一种是遍历列表Data,判断出数学科目不及格的对象,然后把这些对象装入记录数学科目不及格的列表中最后单独打印这些对象的属性(学号、姓名、成绩),另一种是直接遍历列表Data,然后判断出数学不及格的对象,最后直接把对象的属性输出来。两种方法都可取,为了增加代码的可读性,这里采取了第一种方式,也就是多建立了四个列表来存储不及格的名单,最后分别把他们的各个属性打印出来。
(四)计算班级平均成绩:
模块的最后一步,计算平均数,我们依旧是通过for循环遍历列表Data,的各对像的成绩,比如外语成绩就放进外语列表中,数学成绩就放入数学列表中……。最后分别对各科列表求和然后除以列表Data总长度也就是班级总人数,获取平均数。

7.主函数:

终于来到了整个程序的尾声,请把灯光转向主函数。主函数很简单,通过菜单函数,引导用户输入,之后判断用户输入的值,来进入相应的模块,用户每执行一次操作,我们会记数一次,超过两次会提醒用户按“8”打开菜单,之后计数清零,再次等待用户执行两次操作。其实主函数的一直都在python中,只是他一直很低调,没把自己的名字展现出来,就像那些抗“疫”的无名英雄,等某天我们的孩子问我们?“为何世界这样斑斓?”我们只能微笑着说一句“因为有他们”。

四、总结:

本程序圆满完成任务,最开始我们计划是考虑用字典内嵌列表的形式来存储信息,但考虑到后期的排序,我们就放弃了这个选择,然后又想出了字典内嵌字典的形式,发现更不可取,最终选择了面向对象的方式来存储信息。本系统很多地方用到了匿名函数和列表推导式 ,能使程序变得更简洁。总的来说,这个系统有待我们进一步扩展下去,让其交互性变得更好!

附上程序概括流程图:

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

学生成绩管理系统-python 的相关文章

  • Ubuntu 18.04和windows建立共享文件夹

    1 安装samba sudo apt install samba sudo apt install cifs utils 2 创建共享目录 mkdir home yourname share yourname是home下一个文件夹 xff0
  • Linux权限详解,多用户多组各种权限配置原理

    网上有太多关于Linux权限详解 xff0c 这里不啰嗦那些 主要解释下这些权限是杂用的 xff0c 否则知道了什么用户 组之类的权限也配不好 一 权限分类 r xff1a 读取权限 xff0c 数字代号为 34 4 34 w xff1a
  • 1.tow sum

    文章目录 题目c 43 43 版本java版本利用hashmap正确做法 题目 Two Sum Easy Given an array of integers return indices of the two numbers such t
  • 2. Add Two Numbers

    2 Add Two Numbers Medium 59971568Share You are given two non empty linked lists representing two non negative integers T
  • Linux VNC server的安装及简单配置使用

    Linux VNC server的安装及简单配置使用 转 xff1a http www 2cto com os 201309 241104 html Linux VNC server的安装及简单配置使用 摘要 xff1a Linux vnc
  • 3. Longest Substring Without Repeating Characters

    Longest Substring Without Repeating Characters Given a string find the length of the longest substring without repeating
  • 4. Median of Two Sorted Arrays

    Median of Two Sorted Arrays Hard There are two sorted arrays nums1 and nums2 of size m and n respectively Find the media
  • 7. Reverse Integer

    文章目录 Reverse IntegersolutionAlgorithm Reverse Integer Easy Given a 32 bit signed integer reverse digits of an integer Ex
  • 8. String to Integer (atoi)

    String to Integer atoi Implement atoi which converts a string to an integer The function first discards as many whitespa
  • 9. Palindrome Number

    Palindrome Number Easy Determine whether an integer is a palindrome An integer is a palindrome when it reads the same ba
  • 1071. Greatest Common Divisor of Strings

    1071 Greatest Common Divisor of Strings Easy 30985Share For strings S and T we say 34 T divides S 34 if and only if S 61
  • 这个问题搞了我一天

  • 150逆波兰式

    文章目录 150 Evaluate Reverse Polish NotationSolution 150 Evaluate Reverse Polish Notation Medium Evaluate the value of an a
  • 收到礼物最大值

    题目描述 在一个m n的棋盘的每一个格都放有一个礼物 xff0c 每个礼物都有一定价值 xff08 大于0 xff09 从左上角开始拿礼物 xff0c 每次向右或向下移动一格 xff0c 直到右下角结束 给定一个棋盘 xff0c 求拿到礼物
  • 64. Minimum Path Sum

    64 Minimum Path Sum Given a m x n grid filled with non negative numbers find a path from top left to bottom right which
  • 找出亲密对数

    题目内容 xff1a 求数n之内的亲密对数 所谓 亲密对数 xff0c 即A的所有因子 xff08 包含1但不包含其本身 xff09 之和等于B xff0c 而B的所有因子之和等于A 输入格式 某个数字n 输出格式 xff1a 此数字n之内
  • 5. Longest Palindromic Substring

    5 Longest Palindromic Substring Given a string s find the longest palindromic substring in s You may assume that the max
  • 516. Longest Palindromic Subsequence

    516 Longest Palindromic Subsequence Given a string s find the longest palindromic subsequence s length in s You may assu
  • 第一讲_网站架构的演变及海量数据的解决方案

    文章目录 看透springMVC 读书笔记 第一讲单机类型CS结构 xff08 Client Server xff09 BS结构 xff08 Browser Server xff09 BS结构网络传输方式OSI七层模型 TCP IP四层模型
  • 10. Regular Expression Matching

    10 Regular Expression Matching Given an input string s and a pattern p implement regular expression matching with suppor

随机推荐

  • 866. Prime Palindrome

    866 Prime Palindrome Find the smallest prime palindrome greater than or equal to N Recall that a number is prime if it s
  • CMakeLists用法总结

    分一下几个方面来描述 xff1a 1 每一个LIB要编译成静态库或动态库如何描述 xff0c 每一个TOOL要编译成可执行文件如何描述 xff1f 2 LIB和TOOL可能会依赖于其他LIB xff0c 该如何描述 xff1f 3 每个LI
  • 声明变量为类成员变量(静态变量)的条件

    建议在全部具备下列条件的情况下使用静态变量 1 静态所包含的对象体积较大 xff0c 占用的内存比较大时 xff1a 2 变量所包含的对象数据稳定 3 变量包含的对象生命周期比较长时 4 用于该类的对象实例化之后 xff0c 实例的数据共享
  • HDFS读流程

    文章目录 HDFS读流程读流程的概述读流程大体步骤对逻辑图的解释读流程代码 剖析OPEN方法客户端类关系图NameNode数据存储逻辑图 服务端方法关系图 对Block列表进行排序 剖析READ方法数据传输格式客户端方法关系图服务端方法关系
  • 应用层log函数的写法

    int my log const char format va list args FILE fp fp 61 fopen 34 tmp my log 34 34 a 43 34 if fp fprintf stderr 34 fp is
  • 工程计算流体力学软件FloEFD

    推荐一款工程计算流体力学软件FloEFD 此前一直使用ICEM 43 FLUENT软件 xff0c 后来由于工作原因 xff0c 使用的机会逐渐变少了 对不少人而言 xff0c CFD通常作为一种工程的辅助工具 xff0c 不想花太多精力
  • #统计整数个数(指针)

    以下面这题为例 xff1a 题目内容 xff1a 输入一个字符串 xff0c 其包括数字和非数字字符 xff0c 如 xff1a a123x456 17935 098tab xff0c 将其中连续的数字作为一个整数 xff0c 依次存放到数
  • 富斯i6B接收机与pixhawk连接

    pix接收PPM编码信号 xff0c 传统PWM接收器不能直接接收 xff08 例如FS ia6 xff09 xff0c 通常需要PWM转PPM转接板 xff0c 或者直接采用PPM输出的接收器 xff08 例如FS ia6B xff09
  • mission planner飞行模式设置

    我采用的富斯i6遥控器 xff0c 可以设置三种飞行模式 飞行模式中有六种模式 xff0c 在哪三个通道设置会与遥控器对应呢 xff1f 首先在 遥控器校准 选 项观察切换遥控器 模式时 输出的pwm值 xff1a 三个值分别为1000 1
  • ArduPilot Tutorial(PDF版)及ArduPilot飞行模式介绍

    ArduPilot官方Tutorial PDF 2017 2 http download csdn net download xiaoshuai537 10262086 ArduPilot中有14种常用的模式 xff1a 依赖GPS的模式有
  • PX4飞行模式-多旋翼

    手动模式 xff08 1 xff09 ARCO xff1a 特技模式 遥控器输入被转换为横滚 俯仰和偏航速度 xff0c 当摇杆回中时飞行器不会保持平衡 xff0c 可以用于翻滚等特技飞行 xff08 2 xff09 RATTITUDE x
  • 《PID控制算法的C语言实现》学习笔记

    1 PID算法原理 如果偏差为0 xff0c 则比例环节不起作用 xff1b 积分环节主要是用来消除静差 xff0c 即系统稳定后输出值和设定值之间的差值 xff1b 微分环节则反映了偏差信号的变化规律 xff0c 根据偏差信号的变化趋势来
  • 跟我一起写Makefile(整理版)

    跟我一起写Makefile 陈皓 xff08 博客地址 xff1a http blog csdn net haoel article details 2886 xff09 整理的PDF文件 xff1a http download csdn
  • PX4 Makefile分析解读

    参考文章 xff1a PX4源码的Makefile详细理解 http blog csdn net linkcian article details 79152724 感谢原文作者 主要分析 make px4fmu v2 default编译流
  • CREO工程图学习笔记

    CREO工程图技术手册 学习笔记 1 小功能 不同窗口切换操作 xff1a 视图 激活 材料设置 xff1a 文件 准备 模型属性 2 视图创建 插入视图 xff1a 图纸上长按右键 插入普通视图插入投影视图 xff1a 选择母视图 xff
  • 操作系统清华向勇陈渝版笔记(七) 进程与线程 PCB TCB 进程挂起 用户线程 内核线程 轻量级进程 僵尸队列

    7 1 进程定义 OS系统从只能跑一个程序到能跑多个 进程可以描述程序的执行过程 进程 xff1a 一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程 只有当一个程序被OS加载到内存中 xff0c cpu对其执行时 xff0c 这
  • 基于stm32F103HAL库+cubemx+freertos无感无刷电机BLDC控制程序开发

    基于stm32F103HAL库 43 cubemx 43 freertos无感无刷电机BLDC控制程序开发 最近在做一个舵机控制项目 xff0c 控制对象为大功率无感无刷电机 xff0c 网上搜遍了资源 xff0c 貌似这方面的资源真得十分
  • C++思路

    1 统计英文单词 在进行文章重复度检查时 xff0c 经常需要统计一段英文中的单词数量 xff0c 并找出长度最长的单词 设有如下定义 xff1a char str 500 编写程序 xff0c 通过利用cin getline str 50
  • 基于OpenCV构建停车场车位识别项目

    OpenCV是一个基于 xff08 开源 xff09 发行的跨平台计算机视觉库 xff0c 能实现图像处理和计算机视觉方面的很多通用算法 车位识别的图像处理过程如图所示 在python中设置完所有内容后 xff0c 最重要的依赖关系将是Op
  • 学生成绩管理系统-python

    乱写的成绩管理系统 派森 span class token comment 定义学生类型 姓名 学号 科目 span span class token keyword class span span class token class na