偷学Python第十五天:使用Python完成学生管理系统 - Go语言中文社区

偷学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("学号:%sn姓名:%sn年龄:%sn" % (stu["stu_id"], stu["stuName"], stu["stuSex"]))

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

def query_all_stu(stu_list):  # 查询全部信息
    print("以下是所有学生信息")
    print("≡" * 30)
    print("t学号tt姓名tt性别")
    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("学号:%sn姓名:%sn年龄:%sn" % (stu["stu_id"], stu["stuName"], stu["stuSex"]))


def query_all_stu(stu_list):  # 查询全部信息
    print("以下是所有学生信息")
    print("≡" * 30)
    print("t学号tt姓名tt性别")
    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
                        
                        
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_46163658/article/details/106101997
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢