Python 学生信息管理系统

递归实现

  1、有五个学⽣坐在⼀起,问第五个⼈多少岁?答⽐第四个⼤ 2 岁,第四个⼈说它⽐第三个⼈⼤ 2 岁, ,... 第⼀个⼈说他 10 岁。请写⼀个递归函数计算第 5 个学⽣多少岁
def age(num):
    if num == 1:
        return 10
    return age(num-1) + 2
print(age(5))   结果18
  2、某班期末考试科⽬为数学和计算机,有最多不超过 30 ⼈参加考试。学⽣的信息包括学号、姓名。
考试后要求:
1 )计算每个学⽣的总分和平均分;
2 )按总分 成绩由⾼到低排出成绩的名次;
3 )打印出名次表,表格内包括学⽣姓名、学 号、各科分数、总分和平均分;
4 )任意输⼊⼀个学号,能够查找出该学⽣在班级中的排名及其考试分数
编写要求:
  (1) 要对⽤户输⼊进⾏验证,如果输⼊的不是 0-4 显示错误,然后继续输⼊
  (2) 要能够连续不断的进⾏选择
  (3) 每⼀项功能都要封装函数完成,函数单独放 到⼀个模块中
  (4) 菜单及其⽤户选择的处理放到主模块中。
  (5) 学⽣数据保存到⽂件
 
主程序文件 index.py
student = []
from menu import menu,user_choice,show_over
from Input import inf_input,stu_sort,inf_output,inf_index
def main():
    while True:
        menu()
        choice = user_choice()
        if choice == 0:
            show_over()
        if choice == 1:
            inf_input(student,3)
        if choice == 2:
            inf_output(student)
        if choice == 3:
            stu_sort(student)
            inf_index(student)
        if choice == 4:
            stu_sort(student)
            inf_output(student)

if __name__ == '__main__':
    main()

实现0-4函数功能文件 Input.py

def inf_input(student,num):
    """
    :param student: 存放学生信息的列表
    :param num: 学生的个数
    :return: 无
    """
    for i in range(num):
        student2 = {}
        student1 = input(f"请输⼊第{i+1}个学⽣的信息(按姓名、学号、数学成绩、计算机成绩输⼊,空格隔开):").split(" ")
        student2['姓名'] = student1[0]
        student2['学号'] = student1[1]
        student2['数学成绩'] = float(student1[2])
        student2['计算机成绩'] = float(student1[3])
        student2['总成绩'] = float(student1[2]) + float(student1[3])
        student2['平均成绩'] = (float(student1[2]) + float(student1[3])) / 2
        student.append(student2)


def stu_sort(student):
    """
    :param student: 学生信息列表
    :return: 无
    """
    student.sort(key=lambda student:student['总成绩'],reverse=True)

def inf_output(student):
    """
    输出学生信息
    :param student:
    :return:
    """
    fm1 = "{:^10}\t{:^10}\t{:<10}\t{:<10}\t{:<10}\t{:<10}"
    fm2 = "{:^10}\t{:^10}\t{:^10}\t{:^14}\t{:^12}\t{:^14}"
    f2 = fm1.format("姓名","学号","数学成绩","计算机成绩","总成绩","平均成绩")
    print(f2)
    for i in range(len(student)):
        print(fm2.format(student[i]['姓名'],
                         student[i]['学号'],
                         student[i]['数学成绩'],
                         student[i]['计算机成绩'],
                         student[i]['总成绩'],
                         student[i]['平均成绩']))

def inf_index(student):
    """
    按学号查找学生信息
    :param student:
    :return:
    """
    fm1 = "{:^10}{:^10}\t{:^10}\t{:<10}\t{:<10}\t{:<10}\t{:<10}"
    fm2 = "{:^10}\t{:^10}\t{:^10}\t{:^10}\t{:^14}\t{:^12}\t{:^14}"
    ID = input("请输入你要查询的学号:")
    for i in range(len(student)):
        if ID == student[i]['学号']:
            print(fm1.format("名次","姓名","学号","数学成绩","计算机成绩","总成绩","平均成绩"))
            stu = fm2.format(i+1, student[i]['姓名'],
                             student[i]['学号'],
                             student[i]['数学成绩'],
                             student[i]['计算机成绩'],
                             student[i]['总成绩'],
                             student[i]['平均成绩'])
            print("查询成功,该学生的信息为:")
            print(stu)
            break
    else:
        print("没有该学生的信息")

if __name__ == '__main__':   # 只在本模块调用
        student = []
        inf_input(3)

用户界面 menu.py

def menu():
    print("""
    =====欢迎使用学生信息管理系统====
    [1] 学生信息输入
    [2] 学生信息输出
    [3] 查找学生信息
    [4] 成绩排序
    [0] 退出
    """)

def user_choice():
    while True:
        choice = int(input("请输入你的选择:"))
        if choice < 0 or choice > 4:
            print("请输入正确的选项")
        else:
            return choice

def show_over():
    print("="*30)
    print("\t\t感谢你的使用")
    print("="*30)
    exit(0)

执行结果

Python 学生信息管理系统_第1张图片

 

Python 学生信息管理系统_第2张图片

 Python 学生信息管理系统_第3张图片

你可能感兴趣的:(python)