Python综合应用——宿舍管理系统

Python综合应用——宿舍管理系统

  • 通过对 python 的函数,变量的应用,编写简单的关系系统
    实现功能:
  • 1.新增学生
  • 2.显示全部学生信息
  • 3.搜索学生
    可按照学生姓名,班级,学号,宿舍号标准进行查询
  • 4.修改信息(按照用户名进行检索标准)

备注:修改了代码到python3.x版本
代码包目录结构如下
在这里插入图片描述

程序代码如下:

1 主函数,整体系统的框架(main.py)

from student_management import tools_apartment  # 调用工具函数
# 无限循环,由用户主动决定什么时候退出
while True:
    # TODO注释,用于标记需要去做的工作

    tools_apartment.show_menu()

    action_str = input("请选择希望执行的操作: ")
    print("你选择的操作是 %s" % action_str)
    # 1,2,3针对名片的操作
    if action_str in ["1", "2", "3", "4"]:
        if action_str == "1":
            tools_apartment.new_card()  # 调用功能为增添的函数
        elif action_str == "2":
            tools_apartment.show_all()  # 调用功能为显示全部的函数
        elif action_str == "3":
            tools_apartment.search_card()  # 调用功能为指定信息查找的函数
        elif action_str == "4":
            tools_apartment.search_name()  # 调用功能为修改的函数
    # 0退出系统
    elif action_str == "0":
        print("欢迎再次使用【宿舍管理系统】:")

        break
        # 如果在开发程序时,不希望立刻编写分支内部的代码
        # 可以使用pass关键字,表示一个占位符,能够保证程序的代码结构正确
        # 运行程序时,pass关键字不会执行任何操作
    else:
        print("输入错误,请重新输入:")

2 工具函数,系统功能的存放处(tools_apartment.py)

def show_menu():  # 主菜单函数
    """显示菜单"""
    print('*' * 50)
    print('欢迎使用【宿舍管理系统】')

    print('')
    print('1.新增学生')
    print('2.显示全部')
    print('3.搜索学生')
    print('4.修改信息')
    print('0.退出系统')
    print('*' * 50)


card_list = []


def new_card():  # 增加学生信息的函数
    """新增名片"""
    print('-' * 50)
    print('新增学生')
    # 1.提示用户输入名片的详细信息
    name_str = input('请输入姓名:')
    class_str = input('请输入班级:')
    ID_str = input('请输入学号:')
    room_str = input('请输入宿舍号:')

    # 2.使用用户输入的信息建立一个名片字典
    card_dict = {'name_str': name_str,
                 'class_str': class_str,
                 'ID_str': ID_str,
                 'room_str': room_str}

    # 3.将名片字典添加到列表中
    card_list.append(card_dict)  # 把一个字典追加到一个列表中
    # print(card_list)

    # 4.提示用户添加成功
    print('添加 %s 的信息成功' % name_str)


def show_all():  # 显示全部信息
    """显示所有学生信息"""
    print('-' * 50)
    print('显示所有学生信息')

    # 判断是否存在学生记录,如果没有,提示用户并且返回
    if len(card_list) == 0:
        print('没有当前学生信息,请确认输入或者进行添加')
        # return 可以返回一个函数的执行结果
        # 下方的代码不会被执行
        # 如果return后面没有任何的内容,表示会返回到调用函数的位置
        # 并且不返回任何结果
        return
    # 打印表头
    for name in ["姓名", "班级", "学号", "宿舍号"]:
        print(name, end="\t")
    print('')
    # 打印分隔线
    print('=' * 50)

    # 遍历名片列表依次输出字典信息
    for card_dict in card_list:
        # print card_dict
        print(
            '%s\t\t%s\t\t%s\t\t%s' % (card_dict['name_str'],
                                      card_dict['class_str'],
                                      card_dict['ID_str'],
                                      card_dict['room_str']))


def search_card():  # 指定信息查找的函数
    """搜索名片"""
    print('-' * 50)

    print('【搜索学生信息】')

    print('1.按姓名搜索')

    print('2.按班级搜索')

    print('3.按学号搜索')

    print('4.按宿舍搜索')

    print('0.返回主菜单')

    action_str = input("请选择希望执行的操作: ")
    print("你选择的操作是 %s" % action_str)
    # 1,2,3针对名片的操作
    if action_str in ["1", "2", "3", "4", "0"]:
        if action_str == "1":
            find_name = input('请输入要搜索的姓名:')
            for card_dict in card_list:
                if card_dict['name_str'] == find_name:
                    print('姓名 班级 学号 宿舍号')

                    print('=' * 50)

                    print(
                        '%s %s %s %s' % (card_dict['name_str'],
                                         card_dict['class_str'],
                                         card_dict['ID_str'],
                                         card_dict['room_str']))

                    # TODO 针对找到的名片记录执行修改和删除的操作
                    # 在我们的日常编写程序中,如果一个函数的代码太多,阅读和编写都是一件困难的事情,
                    # 而在开发中,可以针对一个具体独立的功能来封装一个函数,由这个函数来处理具体的
                    # 操作,这样就能保证每个函数中的代码清晰明了,功能明确
                    break

                else:
                    print('抱歉,没有找到学生:%s' % find_name)

        elif action_str == "2":
            find_class = input('请输入要搜索的班级:')
            for card_dict in card_list:
                if card_dict['class_str'] == find_class:
                    print('姓名 班级 学号 宿舍号')

                    print('=' * 50)

                    print(
                        '%s %s %s %s' % (card_dict['name_str'],
                                         card_dict['class_str'],
                                         card_dict['ID_str'],
                                         card_dict['room_str']))

                else:
                    print('抱歉,没有找到班级:%s' % find_class)

        elif action_str == "3":
            find_ID = input('请输入要搜索的学号:')
            for card_dict in card_list:
                if card_dict['ID_str'] == find_ID:
                    print('姓名 班级 学号 宿舍号')

                    print('=' * 50)

                    print(
                        '%s %s %s %s' % (card_dict['name_str'],
                                         card_dict['class_str'],
                                         card_dict['ID_str'],
                                         card_dict['room_str']))
                    break
                else:
                    print('抱歉,没有找到学号:%s' % find_ID)

        elif action_str == "4":
            find_room = input('请输入要搜索的宿舍:')
            for card_dict in card_list:
                if card_dict['room_str'] == find_room:
                    print('姓名 班级 学号 宿舍号')

                    print('=' * 50)

                    print(
                        '%s %s %s %s' % (card_dict['name_str'],
                                         card_dict['class_str'],
                                         card_dict['ID_str'],
                                         card_dict['room_str']))
                else:
                    print('抱歉,没有找到宿舍:%s' % find_room)

        elif action_str == "0":
            pass


def search_name():  # 信息修改前进行查找的函数
    """修改信息"""
    print('-' * 50)

    print('进行学生信息的修改')

    # 1.提示用户输入要搜索的姓名
    find_name = input('请输入要修改的姓名:')
    # 2.遍历名片列表,查询要搜索的姓名,如果没有找到,需要提示用户
    for card_dict in card_list:
        if card_dict['name_str'] == find_name:
            print('姓名 班级 学号 宿舍号')

            print('=' * 50)

            print(
                '%s %s %s %s' % (card_dict['name_str'],
                                 card_dict['class_str'],
                                 card_dict['ID_str'],
                                 card_dict['room_str']))
            deal_card(card_dict)
            break

        # else:
        #     print('抱歉,没有找到:%s' % find_name)


def deal_card(find_dict):  # 进行信息修改的函数
    # print(find_dict)
    print("=" * 50)
    action_str = input('请选择要执行的操作 '
                       '[1] 修改 [2] 删除 :')
    # 替换已经存在的键值对
    if action_str == '1':
        find_dict['name_str'] = input_card_info(find_dict['name_str'], '姓名:')
        find_dict['class_str'] = input_card_info(find_dict['class_str'], '班级:')
        find_dict['ID_str'] = input_card_info(find_dict['ID_str'], '学号:')
        find_dict['room_str'] = input_card_info(find_dict['room_str'], '学号:')

        print('修改学生信息成功!!!')

    elif action_str == '2':

        card_list.remove(find_dict)

        print('删除学生信息成功!!!')


def input_card_info(dict_value, tip_message):
    """

    :param dict_value:字典中原有的值
    :param tip_message:输入的提示文字
    :return:如果用户输入了内容,就返回内容,负责返回字典中原有的值
    """
    # 1.提示用户输入内容

    result_str = input(tip_message)
    # 2.针对用户的输入进行判断,如果用户输入了内容,直接返回结果
    if len(result_str) > 0:
        return result_str
    # 3.如果用户没有输入内容,返回‘字典中原有的值’
    else:
        return dict_value

3 程序运行截图

用户信息添加
这里写图片描述
显示所有用户信息
这里写图片描述
检索学生信息
按姓名搜索
这里写图片描述
按班级搜索
这里写图片描述
按学号搜索
这里写图片描述
按宿舍搜索
这里写图片描述
修改学生信息
进行修改
这里写图片描述
查看修改后的信息
这里写图片描述

学生宿舍信息管理系统是一个使用Python编写的综合应用系统,其主要功能包括新增学生、显示全部学生信息、搜索学生、修改学生信息等。系统使用管理员账号登录,分为班主任和宿舍管理员两个角色,班主任负责录入学生信息和安排寝室,宿舍管理员负责宿舍考勤和打分。系统运行环境建议使用Python 3.7.7及以上版本,并在PyCharm开发环境中进行开发。此外,系统需要MySQL数据库支持,推荐使用5.7版本,并且硬件环境建议使用Windows 7/8/10或Mac OS,内存要求1GB以上。可以使用Navcat11作为数据库客户端。如果需要了解更多关于该系统的信息,可以参考引用和。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python综合应用——宿舍管理系统](https://blog.csdn.net/Buster_ZR/article/details/81108503)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [基于python的校园寝室管理系统设计与实现](https://blog.csdn.net/u013818205/article/details/129811638)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [计算机毕业设计(附源码)python学生宿舍信息管理系统](https://blog.csdn.net/bishe912/article/details/127579539)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值