添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接


本次主要使用新学的列表和字典,结合定义函数等知识点,成功编写了一个简单的学生成绩管理系统。实现了在系统内使用学生的姓名或者学号,即可实现显示、添加、删除、修改、查找(增删改查)、成绩排序(从小到大或从大到小)的功能。


一、实现系统效果


用python写学生成绩管理系统 用python做学生成绩管理系统_管理系统


用python写学生成绩管理系统 用python做学生成绩管理系统_用python写学生成绩管理系统_02


二、代码部分

定义函数:

def menu():
        打印出整个菜单
        :return:
    print("~*" * 60)
    print("【三国成绩管理系统】".center(100))
    print("欢迎使用学生成绩管理系统!".center(100))
    print("请输入需要进行的操作编码:")
    print("【0】:退出管理系统".center(100))
    print("【1】:显示学生成绩".center(100))
    print("【2】:添加学生成绩".center(100))
    print("【3】:删除学生成绩".center(100))
    print("【4】:修改学生成绩".center(100))
    print("【5】:查找学生信息".center(100))
    print("【6】:学生成绩排序".center(100))
    print("~*" * 60)
# 显示学生成绩
def user_choice():
    确保用户选择数字规范,在(0~6)
    :return:返回合法的用户选择
    number = input("请选择(0~6):")
    while int(number) > 6 or int(number) < 0:
        number = input("请重新选择(0~6):")
    return number
def display_records():
    显示学生信息表
    :return:
    print("所有学生信息:")
    for i in student_list:
        print("\t\t学号:%s\t\t\t姓名:%s\t\t\t成绩:%s\t\t\t" % (i["学号"], i["姓名"], i["成绩"],))
# 增加学生
def add_student(new_student_list):
        增加学生信息
        :return:
    name = input("请输入学生姓名:")
    id_number = input("请输入学生学号:")
    grade = input("请输入新增学生成绩:")
    # 把这3个数据放入新增字典NewStudent中
    new_student = {
        "姓名": name, "学号": id_number, "成绩": grade}
    # 把它添加到列表student_list中
    new_student_list.append(new_student)
    print("已成功增加%s号学生%s信息,成绩为:%s" % (new_student["学号"], new_student["姓名"], new_student["成绩"]))
def delete_student(student_list1):
    根据学生姓名学号,删除指定学生信息
    :param :
    :return:
    info = input("请输入学生姓名或学号:")
    while info == "":
        info = input("输入不能为空,请重新输入:")
    for s in student_list1:
        if s['姓名'] == info or s['学号'] == info:
            student_list1.remove(s)
            print("已成功删除%s信息,其原成绩为:%s" % (s["姓名"], s["成绩"]))
def modify_student():
    根据姓名或学号,修改指定学生信息
    :param :
    :return:
    info = input("请输入学生学号或姓名:")
    while info == "":
        info = input("输入不能为空,请重新输入学生姓名:")
        # 遍历现有学生列表,查询内容
    for i in range(0, len(student_list)):
        if student_list[i]["学号"] == info or student_list[i]["姓名"] == info:
            name = input("请输入学修改后生姓名:")
            id_number = input("请输入修改后学生学号:")
            grade = input("请输入修改后学生成绩:")
            # 把这3个数据放入新增字典change_student中
            change_student = {
                "学号": id_number,
                "姓名": name,
                "成绩": grade}
            # 用student替换student_list中的第i个字典
            student_list[i] = change_student
            print("修改成功!")
            return
    print("修改失败,未查询到该学生。")
def search_student():
    查找学生成绩
    :return:
    name = input("请输入学生姓名或学号:")
    while name == "":
        name = input("输入不能为空,请重新输入学生姓名:")
    for i in student_list:
        if i['姓名'] == name or i['学号'] == name:
            print("%s号学生%s成绩为:%s" % (i["学号"], i["姓名"], i["成绩"]))
            return
    else:
        print("没有找到该生,请重新输入!")
def sort_student():
    按成绩将学生升序、降序排序
    :return:
    sort = input("请输入排序:(1)从大到小(2)从小到大")
    if sort == "1":
        student_list.sort(key=lambda item: item['成绩'])
        print("已将学生按成绩从小到大排列。")
    elif sort == "2":
        student_list.sort(key=lambda x: x['成绩'], reverse=True)
        print("已将学生按成绩从大到小排列。")

主函数:

choice = None
while choice != "0":
    # 打印菜单
    menu()
    # 获取用户输入
    choice = user_choice()
    # 用条件分支去判定各种选择
    if choice == '1':
        # 显示数据
        display_records()
    elif choice == '2':
        # 添加一个学生数据
        add_student(student_list)
    elif choice == '3':
        # 删除数据
        delete_student(student_list)
    elif choice == '4':
        # 修改数据
        modify_student()
    elif choice == '5':
        # 查找信息
        search_student()
    elif choice == '6':
        # 成绩排序
        sort_student()
    elif choice == '0':
        # 退出程序
        print('已退出,欢迎下次登录本系统!')
    else:
        print('请重新输入')

三、遇见问题

1、PyCharm黄色警告“从外部范围隐藏名称”

在设置形参的时候总是爆弱黄色,后来查了下资料,有两种方法可以消除警告:

  • 可以 重命名 函数中使用的 爆黄色 参数,也就是说,可以选择不同的名称,例如 answer ,而不是给它相同的名称。
  • 另一种方法是在pycharm中设置,抑制此警告不显示。

使用方法一,解决问题。

2、Python的形参和实参使用方式

在定义函数时,突然一下想不清楚Python的形参和实参使用方式,查找资料,重新温习。

形参可以设置参数默认值,设置遵循从右至左原则
例如: fun(x=0,y=1),fun(x,y=1),但不可以是fun(x=1.y)
形参设置可以为 数字字符串变量 元组和字典 等任意类型数据, 元组形参 是在 变量名前加* 字典形参 是在 变量名前加**

例如: fun(var),fun(*tuple),fun(*list),fun(**dict)
实参接受也可以是任意类型数据,当接收数据为元组列表或者字典时,同样是在数据变量前加*和**

例如: fun(x),fun(*seq),fun(*list),fun(**stu_info)

可以使用 元组形参和字典形参 接收 冗余或意外数据

例如: fun(var,*t_args, *dic_args)
但传参时, 数字和字符串形参必须传值 ,元组和字典形参可不传,因为元组和字典数据可以是空元组或空字典,此特性正好适应处理冗余数据
形参参数名若和生产数据中字典键名相同,将大大提高编程效率和生产效率
例如: 有字典dic={'name:csdn,age:10top1},

有函数fun(name=nameage=0,top=0),

则函数可以方便的获取字典数据 fun(**dic)

3、函数的返回值return

return可以将函数运行的结果反馈给函数, 在外部调用函数的时候,使用一个变量接收即可将函数运行的结果输出;

但如果函数内部没有返回值,也没有打印的动作,在外部调用该函数的时候,你在控制台上看不到任何输出,也无法获取函数运行的结果(无返回值将默认返回None,也就是隐性返回值)。

4、判断输入是不是数字

尝试用 str.isdigit()判断,但未成功。改用简单条件判断方式,但在选择程序(0~6)时,遇见字符串会直接退出程序。需后续改进。


全部函数:

# 结合列表和字典,编写一个简单的学生成绩管理系统。
student_list = [
    {"姓名": "曹操",
     "成绩": 73,
     "学号": "12"},
    {"姓名": "司马懿",
     "成绩": 88,
     "学号": "9"},
    {"姓名": "刘备",
     "成绩": 88,
     "学号": "5"},
    {"姓名": "张飞",
     "成绩": 47,
     "学号": "1"},
    {"姓名": "诸葛亮",
     "成绩": 92,
     "学号": "3"}
def menu():
        打印出整个菜单
        :return:
    print("~*" * 60)
    print("【三国成绩管理系统】".center(100))
    print("欢迎使用学生成绩管理系统!".center(100))
    print("请输入需要进行的操作编码:")
    print("【0】:退出管理系统".center(100))
    print("【1】:显示学生成绩".center(100))
    print("【2】:添加学生成绩".center(100))
    print("【3】:删除学生成绩".center(100))
    print("【4】:修改学生成绩".center(100))
    print("【5】:查找学生信息".center(100))
    print("【6】:学生成绩排序".center(100))
    print("~*" * 60)
# 显示学生成绩
def user_choice():
    确保用户选择数字规范,在(0~6)
    :return:返回合法的用户选择
    number = input("请选择(0~6):")
    while int(number) > 6 or int(number) < 0:
        number = input("请重新选择(0~6):")
    return number
def display_records():
    显示学生信息表
    :return:
    print("所有学生信息:")
    for i in student_list:
        print("\t\t学号:%s\t\t\t姓名:%s\t\t\t成绩:%s\t\t\t" % (i["学号"], i["姓名"], i["成绩"],))
# 增加学生
def add_student(new_student_list):
        增加学生信息
        :return:
    name = input("请输入学生姓名:")
    id_number = input("请输入学生学号:")
    grade = input("请输入新增学生成绩:")
    # 把这3个数据放入新增字典NewStudent中
    new_student = {
        "姓名": name, "学号": id_number, "成绩": grade}
    # 把它添加到列表student_list中
    new_student_list.append(new_student)
    print("已成功增加%s号学生%s信息,成绩为:%s" % (new_student["学号"], new_student["姓名"], new_student["成绩"]))
def delete_student(student_list1):
    根据学生姓名学号,删除指定学生信息
    :param :
    :return:
    info = input("请输入学生姓名或学号:")
    while info == "":
        info = input("输入不能为空,请重新输入:")
    for s in student_list1:
        if s['姓名'] == info or s['学号'] == info:
            student_list1.remove(s)
            print("已成功删除%s信息,其原成绩为:%s" % (s["姓名"], s["成绩"]))
def modify_student():
    根据姓名或学号,修改指定学生信息
    :param :
    :return:
    info = input("请输入学生学号或姓名:")
    while info == "":
        info = input("输入不能为空,请重新输入学生姓名:")
        # 遍历现有学生列表,查询内容
    for i in range(0, len(student_list)):
        if student_list[i]["学号"] == info or student_list[i]["姓名"] == info:
            name = input("请输入学修改后生姓名:")
            id_number = input("请输入修改后学生学号:")
            grade = input("请输入修改后学生成绩:")
            # 把这3个数据放入新增字典change_student中
            change_student = {
                "学号": id_number,
                "姓名": name,
                "成绩": grade}
            # 用student替换student_list中的第i个字典
            student_list[i] = change_student
            print("修改成功!")
            return
    print("修改失败,未查询到该学生。")
def search_student():
    查找学生成绩
    :return:
    name = input("请输入学生姓名或学号:")
    while name == "":
        name = input("输入不能为空,请重新输入学生姓名:")
    for i in student_list:
        if i['姓名'] == name or i['学号'] == name:
            print("%s号学生%s成绩为:%s" % (i["学号"], i["姓名"], i["成绩"]))
            return
    else:
        print("没有找到该生,请重新输入!")
def sort_student():
    按成绩将学生升序、降序排序
    :return:
    sort = input("请输入排序:(1)从大到小(2)从小到大")
    if sort == "1":
        student_list.sort(key=lambda item: item['成绩'])
        print("已将学生按成绩从小到大排列。")
    elif sort == "2":
        student_list.sort(key=lambda x: x['成绩'], reverse=True)
        print("已将学生按成绩从大到小排列。")
choice = None
while choice != "0":
    # 打印菜单
    menu()
    # 获取用户输入
    choice = user_choice()
    # 用条件分支去判定各种选择
    if choice == '1':
        # 显示数据
        display_records()
    elif choice == '2':
        # 添加一个学生数据
        add_student(student_list)
    elif choice == '3':
        # 删除数据
        delete_student(student_list)
    elif choice == '4':
        # 修改数据
        modify_student()
    elif choice == '5':
        # 查找信息
        search_student()
    elif choice == '6':
        # 成绩排序
        sort_student()
    elif choice == '0':
        # 退出程序
        print('已退出,欢迎下次登录本系统!')
    else:
        print('请重新输入')
nuhub 启动 java nohup启动jar

一、Linux 下使用 nohup一般我们将Spring Boot项目打包成jar包的时候,然后用java命令方式启动,如下:java -jar myproject.jar --spring.profiles.active=dev解释java -jar java运行jar包的命令 --spring.profiles.active 指定启动参数(实例中指定项目中环境配置文件)nohup 命令用