偷学Python第十五天:使用Python完成学生管理系统

人生苦短我用Python

偷学Python第十五天:使用Python完成学生管理系统

古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。——苏轼

学生管理系统

案例要求:设计一个存放学生信息的系统,里面存放着学生的各种信息,可以对学生的信息进行增删改查。

思路:设置一个列表用来存放每个学生的信息,列表的每个元素用来存放具体学生的信息(学号、姓名、性别),通过判断键入的值来选择是什么功能。

第一步:设计一个大体的结构,分别是菜单、添加学生信息、删除学生信息、修改学生信息、查询学生信息、查询全部信息、程序入口;分别定义一个函数体

"""
-*- coding:uft-8 -*-
author: 小甜
time:2020/5/13
"""

def menu():  # 菜单
	pass


def add_stu(stu_list):  # 添加学生信息
    pass


def del_stu(stu_list):  # 删除学生信息
    pass


def change_stu(stu_list):  # 修改学生信息
    pass


def query_stu(stu_list):  # 查询学生信息
    pass


def query_all_stu(stu_list):  # 查询全部信息
    pass


def main(stu_list):  # 程序入口
    pass


if __name__ == '__main__':
    students_list = []  # 存放学生信息的列表
    main(students_list)  # 调用程序开始函数
    

第二步:定义一个菜单,打印需要显示的内容

def menu():  # 菜单
    print("-" * 30)
    print("""
 学生管理系统
1.添加学生信息
2.删除学生信息
3.修改学生信息
4.查询学生信息
5.查询所有学生信息
6.退出系统
    """)
    print("-" * 30)

第三步:完成添加学生信息的函数。通过input函数来通过键盘来键入学生的信息,然后判断该学号是否存在,不存在的话将信息加入到列表中

def add_stu(stu_list):  # 添加学生信息
    print("您选择了添加学生信息功能")
    stu_id = input("请输入您要添加学生的学号:")
    stu_name = input("请输入您要添加学生的姓名:")
    stu_sex = input("请输入您要添加学生的性别:")
    skip = False  # 判断学号是否重复的条件
    for stu in stu_list:
        if stu["stu_id"] == stu_id:
            skip = True
            break
    if skip:  # 如果学号重复,则为执行下面这一句
        print("该学生已经已经被添加了")
    else:
        stu_info = {"stu_id": stu_id, "stuName": stu_name, "stuSex": stu_sex}  # 定义一个字典存放学生信息
        stu_list.append(stu_info)
        print("学生信息添加成功")

第四步:完成删除学生信息的函数。判断学号是否在系统中,如果不在,则提示;在就将其删除

def del_stu(stu_list):  # 删除学生信息
    print("您选择了删除学生信息功能")
    del_stu_id = input("请输入您要删除的学号:")
    skip = True  # 设置一个条件,记录该学生是否不再系统中
    record_index = 0  # 记录索引
    for stu in stu_list:
        if stu["stu_id"] == del_stu_id:
            skip = False  # 该学生在系统中,就返回重新执行for循环
            continue
        else:
            record_index += 1  # 找不到一次每次索引+1
    if skip:
        print("系统中没有该学生的信息")
    else:
        stu_list.pop(record_index)
        print("该学生已经从该系统中删除")

第五步:完成修改学生信息的函数。因为一个学生有多个信息,所以修改要通过不同的函数对每个信息进行修改,通过键入的值来判断每个需要实现什么功能,在具体对某个信息进行修改。

def change_stu(stu_list):  # 修改学生信息
    print("""--选择你要修改的信息--
    1. 修改学号
    2. 修改姓名
    3. 修改性别
    4. 退出修改
    """)

    def change_id():
        print("您选择了修改学号信息功能")
        change_stu_id = input("请输入您要修改的学号:")
        new_stu_id = input("请输入修改后的学号:")
        skip = True
        record_index = 0
        for stu in stu_list:
            if stu["stu_id"] == change_stu_id:
                skip = False
                continue
            else:
                record_index += 1
        if skip:
            print("系统中没有该学生的信息")
        else:
            stu["stu_id"] = new_stu_id
            print("学号修改完毕")

    def change_name():
        print("您选择了修改姓名信息功能")
        change_stu_id = input("请输入您要修改姓名的学号:")
        new_stu_name = input("请输入修改后的姓名:")
        skip = True
        record_index = 0
        for stu in stu_list:
            if stu["stu_id"] == change_stu_id:
                skip = False
                continue
            else:
                record_index += 1
        if skip:
            print("系统中没有该学生的信息")
        else:
            stu["stuName"] = new_stu_name
            print("姓名修改完毕")

    def change_sex():
        print("您选择了修改性别信息功能")
        change_stu_id = input("请输入您要修改性别的学号:")
        new_stu_sex = input("请输入修改后的性别:")
        skip = True
        record_index = 0
        for stu in stu_list:
            if stu["stu_id"] == change_stu_id:
                skip = False
                continue
            else:
                record_index += 1
        if skip:
            print("系统中没有该学生的信息")
        else:
            stu["stuSex"] = new_stu_sex
            print("性别修改完毕")

    while True:
        alter_num = int(input("请输入功能序号:"))
        if alter_num == 1:
            change_id()
        elif alter_num == 2:
            change_name()
        elif alter_num == 3:
            change_sex()
        elif alter_num == 4:
            break
        else:
            print("输入有误")

第六步:完成查询学生信息函数。通过上面的方法得到某个信息,将其输出。

def query_stu(stu_list):  # 查询学生信息
    print("您选择了查询学生信息功能")
    del_stu_id = input("请输入您要查询的学号:")
    skip = True
    record_index = 0
    for stu in stu_list:
        if stu["stu_id"] == del_stu_id:
            skip = False
            continue
        else:
            record_index += 1
    if skip:
        print("系统中没有该学生的信息")
    else:
        print("找到此学生,信息如下:")
        print("学号:%s\n姓名:%s\n年龄:%s\n" % (stu["stu_id"], stu["stuName"], stu["stuSex"]))

第七步:完成查询全部信息,将列表里的内容格式化后输出

def query_all_stu(stu_list):  # 查询全部信息
    print("以下是所有学生信息")
    print("≡" * 30)
    print("\t学号\t\t姓名\t\t性别")
    for stu in stu_list:
        print('\t', stu["stu_id"], '\t', stu["stuName"], '\t', stu["stuSex"])
    print("≡" * 30)

最后一步:根据键入的值来判断调用哪个函数,为了防止输入的时候输入错误,完成系统不能完成的计算,将判断条件改为字符串型。

def main(stu_list):  # 程序入口
    while True:
        menu()
        number = input("请输入想要的功能:")
        if number == str(1):
            add_stu(stu_list)
        elif number == str(2):
            del_stu(stu_list)
        elif number == str(3):
            change_stu(stu_list)
        elif number == str(4):
            query_stu(stu_list)
        elif number == str(5):
            query_all_stu(stu_list)
        elif number == str(6):
            whether_to_quit = input("是否退出(y/n)")
            while True:
                if whether_to_quit == 'y' or whether_to_quit == 'Y' or whether_to_quit == 'yes':
                    print("已退出")
                    exit()
                elif whether_to_quit == 'n' or whether_to_quit == 'N' or whether_to_quit == 'no':
                    print("取消取出")
                    break
                else:
                    print("输入错误,退出失败")
                    break
        else:
            print("输入错误,请重新输入")

完整代码

"""
-*- coding:uft-8 -*-
author: 小甜
time:2020/5/13
"""


def menu():  # 菜单
    print("-" * 30)
    print("""
 学生管理系统
1.添加学生信息
2.删除学生信息
3.修改学生信息
4.查询学生信息
5.查询所有学生信息
6.退出系统
    """)
    print("-" * 30)


def add_stu(stu_list):  # 添加学生信息
    print("您选择了添加学生信息功能")
    stu_id = input("请输入您要添加学生的学号:")
    stu_name = input("请输入您要添加学生的姓名:")
    stu_sex = input("请输入您要添加学生的性别:")
    skip = False  # 判断学号是否重复的条件
    for stu in stu_list:
        if stu["stu_id"] == stu_id:
            skip = True
            break
    if skip:  # 如果学号重复,则为执行下面这一句
        print("该学生已经已经被添加了")
    else:
        stu_info = {"stu_id": stu_id, "stuName": stu_name, "stuSex": stu_sex}  # 定义一个字典存放学生信息
        stu_list.append(stu_info)
        print("学生信息添加成功")


def del_stu(stu_list):  # 删除学生信息
    print("您选择了删除学生信息功能")
    del_stu_id = input("请输入您要删除的学号:")
    skip = True  # 设置一个条件,记录该学生是否不再系统中
    record_index = 0  # 记录索引
    for stu in stu_list:
        if stu["stu_id"] == del_stu_id:
            skip = False  # 该学生在系统中,就返回重新执行for循环
            continue
        else:
            record_index += 1  # 找不到一次每次索引+1
    if skip:
        print("系统中没有该学生的信息")
    else:
        stu_list.pop(record_index)
        print("该学生已经从该系统中删除")


def change_stu(stu_list):  # 修改学生信息
    print("""--选择你要修改的信息--
    1. 修改学号
    2. 修改姓名
    3. 修改性别
    4. 退出修改
    """)

    def change_id():
        print("您选择了修改学号信息功能")
        change_stu_id = input("请输入您要修改的学号:")
        new_stu_id = input("请输入修改后的学号:")
        skip = True
        record_index = 0
        for stu in stu_list:
            if stu["stu_id"] == change_stu_id:
                skip = False
                continue
            else:
                record_index += 1
        if skip:
            print("系统中没有该学生的信息")
        else:
            stu["stu_id"] = new_stu_id
            print("学号修改完毕")

    def change_name():
        print("您选择了修改姓名信息功能")
        change_stu_id = input("请输入您要修改姓名的学号:")
        new_stu_name = input("请输入修改后的姓名:")
        skip = True
        record_index = 0
        for stu in stu_list:
            if stu["stu_id"] == change_stu_id:
                skip = False
                continue
            else:
                record_index += 1
        if skip:
            print("系统中没有该学生的信息")
        else:
            stu["stuName"] = new_stu_name
            print("姓名修改完毕")

    def change_sex():
        print("您选择了修改性别信息功能")
        change_stu_id = input("请输入您要修改性别的学号:")
        new_stu_sex = input("请输入修改后的性别:")
        skip = True
        record_index = 0
        for stu in stu_list:
            if stu["stu_id"] == change_stu_id:
                skip = False
                continue
            else:
                record_index += 1
        if skip:
            print("系统中没有该学生的信息")
        else:
            stu["stuSex"] = new_stu_sex
            print("性别修改完毕")

    while True:
        alter_num = int(input("请输入功能序号:"))
        if alter_num == 1:
            change_id()
        elif alter_num == 2:
            change_name()
        elif alter_num == 3:
            change_sex()
        elif alter_num == 4:
            break
        else:
            print("输入有误")


def query_stu(stu_list):  # 查询学生信息
    print("您选择了查询学生信息功能")
    del_stu_id = input("请输入您要查询的学号:")
    skip = True
    record_index = 0
    for stu in stu_list:
        if stu["stu_id"] == del_stu_id:
            skip = False
            continue
        else:
            record_index += 1
    if skip:
        print("系统中没有该学生的信息")
    else:
        print("找到此学生,信息如下:")
        print("学号:%s\n姓名:%s\n年龄:%s\n" % (stu["stu_id"], stu["stuName"], stu["stuSex"]))


def query_all_stu(stu_list):  # 查询全部信息
    print("以下是所有学生信息")
    print("≡" * 30)
    print("\t学号\t\t姓名\t\t性别")
    for stu in stu_list:
        print('\t', stu["stu_id"], '\t', stu["stuName"], '\t', stu["stuSex"])
    print("≡" * 30)


def main(stu_list):  # 程序入口
    while True:
        menu()
        number = input("请输入想要的功能:")
        if number == str(1):
            add_stu(stu_list)
        elif number == str(2):
            del_stu(stu_list)
        elif number == str(3):
            change_stu(stu_list)
        elif number == str(4):
            query_stu(stu_list)
        elif number == str(5):
            query_all_stu(stu_list)
        elif number == str(6):
            whether_to_quit = input("是否退出(y/n)")
            while True:
                if whether_to_quit == 'y' or whether_to_quit == 'Y' or whether_to_quit == 'yes':
                    print("已退出")
                    exit()
                elif whether_to_quit == 'n' or whether_to_quit == 'N' or whether_to_quit == 'no':
                    print("取消取出")
                    break
                else:
                    print("输入错误,退出失败")
                    break
        else:
            print("输入错误,请重新输入")


if __name__ == '__main__':
    students_list = []
    main(students_list)

输出效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

练习的小案例

设计一个函数返回指定日期是这一年的第几天

"""
-*- coding:uft-8 -*-
author: 小甜
time:2020/5/13
"""


def is_leap_year(year):
    """判断指定的年份是不是闰年,平年返回False也就是0,闰年返回True也就是1"""
    return year % 4 == 0 and year % 100 != 0 or year % 400 == 0


def which_day(year, month, date):
    # 用嵌套的列表保存平年和闰年每个月的天数
    days_of_month = [
        [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
        [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    ]
    days = days_of_month[is_leap_year(year)]  # 根据上一个函数的返回值,来选择那个列表
    total = 0
    for index in range(month - 1):
        total += days[index]
    return total + date


print(which_day(2000, 12, 31))  # 366
print(which_day(241, 3, 23))  # 82
print(which_day(12341, 6, 4))  # 155
print(which_day(2222, 8, 6))  # 218
print(which_day(6666, 11, 8))  # 312

知识点:return返回值的运用

今日学习总结

用Python完成了学生管理系统,练习了return的返回值

评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一碗周.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值