Python綜合應用——宿舍管理系統

Python綜合應用——宿舍管理系統

  • 通過對 python 的函數,變量的應用,編寫簡單的關係系統
    實現功能:
    • 1.新增學生
    • 2.顯示全部學生信息
    • 3.搜索學生
      可按照學生姓名,班級,學號,宿舍號標準進行查詢
    • 4.修改信息(按照用戶名進行檢索標準)

程序代碼如下:

1 主函數,整體系統的框架

 import tools_apartment         # 調用工具函數
 #無限循環,由用戶主動決定什麼時候退出
 while True:             
 #TODO註釋,用於標記需要去做的工作

     tools_apartment.show_menu()

     action_str = raw_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 工具函數,系統功能的存放處

 def show_menu():                 # 主菜單函數
     """顯示菜單"""
     print '*' * 50
     print '歡迎使用【宿舍管理系統】'
     print ''
     print '1.新增學生'
     print '2.顯示全部'
     print '3.搜索學生'
     print '4.修改信息'
     print '0.退出系統'
     print '*' * 50


 def new_card():                  # 增加學生信息的函數
     """新增名片"""
     print '-' * 50
     print '新增學生'
     # 1.提示用戶輸入名片的詳細信息
     name_str = raw_input('請輸入姓名:')
     class_str = raw_input('請輸入班級:')
     ID_str = raw_input('請輸入學號:')
     room_str = raw_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,
     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 = raw_input("請選擇希望執行的操作: ")
     print("你選擇的操作是 %s" % action_str)
     #1,2,3針對名片的操作
     if action_str in ["1","2","3","4","0"]:
         if action_str == "1":
             find_name = raw_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 = raw_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 = raw_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 = raw_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 = raw_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
     action_str = raw_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 = raw_input(tip_message)
     # 2.針對用戶的輸入進行判斷,如果用戶輸入了內容,直接返回結果
     if len(result_str) > 0:
         return result_str
     # 3.如果用戶沒有輸入內容,返回‘字典中原有的值’
     else:
         return dict_value

3 程序運行截圖

用戶信息添加
這裏寫圖片描述
顯示所有用戶信息
這裏寫圖片描述
檢索學生信息
按姓名搜索
這裏寫圖片描述
按班級搜索
這裏寫圖片描述
按學號搜索
這裏寫圖片描述
按宿舍搜索
這裏寫圖片描述
修改學生信息
進行修改
這裏寫圖片描述
查看修改後的信息
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章