Python学生信息管理系统(增删查改、模糊查找、txt文件输出)# 谭子
一、系統需求說明
本項目計劃實現一個學生管理系統,學生信息包括:姓名、性別、手機號碼,系統包含以下功能。
| 模塊 | 子模塊 | 說明 |
| 查詢模塊 | 查詢全部學生的信息 | 顯示當前系統內所有學員的信息 |
| 查詢模塊 | 精準查詢學生的個人信息 | 輸入查詢的姓名,匹配相同的學員信息 |
| 查詢模塊 | 模糊查詢學生姓名 | 不完全輸入學生姓名,找到匹配的信息 |
| 查詢模塊 | 查詢男女人數 | 統計當前系統內男女的數量 |
| 刪除模塊 | 刪除單個學生的信息 | 輸入所需要刪除的學員姓名來刪除信息 |
| 修改模塊 | 修改單個學生的信息 | 輸入學員姓名,匹配相同信息,修改信息項 |
| 添加模塊 | 添加學生信息 | 添加學員的信息(學號、姓名、性別、手機號) |
| 查詢模塊 | 將所有學生信息輸出 | 將系統中存儲的信息打印到txt文檔中 |
| 刪除模塊 | 一鍵刪除txt文檔 | 刪除已存在的學生信息txt文檔(永久刪除) |
| 退出模塊 | 退出系統 | 退出程序 |
學生管理系統功能一覽表
設計內容:
二、系統設計
系統模塊規劃如上圖所示。
三、系統功能的實現函數
(1) 顯示界面 功能
處理思路:使用print()打印菜單內容
# 定義功能界面函數 def info_print():print('\n請選擇 功能------------')print('-' * 20)print('1.添加學員')print('2.刪除學員')print('3.修改學員')print('4.查詢學員信息')print('5.顯示/打印所有學員(txt)')print('6.刪除txt文件')print('0.退出系統')print('-' * 20)(2) 添加學員信息 功能
處理思路:使用字典接收用戶輸入學員信息,再將字典轉存入列表
# 定義添加學員信息的函數 def add_info():# 1.接收用戶輸入學員信息new_id = input('請輸入學號:')new_name = input('請輸入姓名:')new_sex = input('請輸入性別:(男或女)')new_tel = input('請輸入手機號:')# 聲明info是全局變量global info# 2.檢測用戶輸入的姓名是否存在,存在則報錯提示for i in info:if new_name == i['name']:print('用戶已存在')return# 3.如果用戶輸入的姓名不存在,則添加該學員信息info_dict = {'id': new_id, 'name': new_name, 'sex': new_sex, 'tel': new_tel}# 4.將用戶輸入的數據追加到字典# 5.將這個學員的字典數據追加到列表info.append(info_dict)(3) 刪除學員 功能
處理思路:輸入姓名,匹配是否存在,是則刪除
# 刪除學員功能函數 def del_info():# 1.用戶輸入要輸出的學員姓名del_name = input('請輸入要刪除的學員的姓名:')global info# 2.判斷學員是否存在,存在則刪除,否則報錯提示for i in info:if del_name == i['name']:info.remove(i)breakelse:print('該學員不存在')print(info)(4) 修改學員信息 功能
處理思路:輸入需修改學員姓名,判斷是否存在,是則進行修改
# 修改函數 def modify_info():# 1.用戶輸入要修改的學員的姓名modify_name = input('請輸入要修改的學員的姓名:')global info# 2.判斷學員是否存在:存在則修改,否則報錯for i in info:if modify_name == i['name']:i['name'] = input('請輸入新的姓名')i['id'] = input('請輸入新的學號')i['sex'] = input('請輸入性別')i['tel'] = input('請輸入新的手機號:')breakelse:print('該學員不存在')print(info)(5) 精準查詢 功能
處理思路:輸入學員全名,若存在則顯示該學員信息
# 查詢學員 def search_info():# 1.輸入要查找的學員姓名:search_name = input('請輸入要查找的學員姓名:')global info# 2.判斷學員是否存在:是則顯示該生信息,否則報錯提示for i in info:if search_name == i['name']:print('查找到的學員信息如下:-------------')print(f"該學員的學號是{i['id']},姓名是{i['name']},性別為:{i['sex']},手機號是{i['tel']}")breakelse:print('查無此人......')(6) 模糊查找 功能
處理思路:只通過輸入學員的姓名中的單個或多個字來查找有類似的學員信息
# 模糊查找 def fuzzy_finder(key, data):suggestions = []pattern = '.*%s.*' % key # 正則表達式regex = re.compile(pattern)for item in data:match = regex.search(item['name'])if match:suggestions.append(item)return suggestions(7) 統計性別 功能
處理思路:額外給定兩個數組分別存儲男,女人數。將遍歷到的元素分配到對應數組,輸出數組長度,即為男女人數。
# 統計性別 def sex_ratio():global info, boys, girlsfor i in info:if i['sex'] == '女':girls.append(i)elif i['sex'] == '男':boys.append(i)print(f'男生人數為:{len(boys)},女生人數為:{len(girls)}')(8) 顯示所有學員信息 功能
處理思路:在控制臺上輸出列表中的字典內容
def print_all():print('學號\t姓名\t性別\t手機號')for i in info:print(f"該學員的學號是{i['id']},姓名是{i['name']},性別為:{i['sex']},手機號是{i['tel']}")(9) 輸出數組內容為txt文檔?功能
處理思路:在桌面上建立一個txt文件,將存儲學員信息的數組寫入到該文件
def create_file():file = open("C:\\Users\\ASUS\\Desktop\\myTxt.txt", 'w', encoding="UTF-8") # 寫入內容file.write(str(info))file.close()(10) 刪除txt文檔?功能
處理思路:永久刪除該txt文檔(無法在回收站找回)
def delete_file():os.unlink("C:\\Users\\ASUS\\Desktop\\myTxt.txt")print("myTxt.txt已被刪除")四、參考源碼(全)
import re import osinfo = [] boys = [] girls = []# 定義功能界面函數 def info_print():print('\n請選擇 功能------------')print('-' * 20)print('1.添加學員')print('2.刪除學員')print('3.修改學員')print('4.查詢學員信息')print('5.顯示/打印所有學員(txt)')print('6.刪除txt文件')print('0.退出系統')print('-' * 20)# 定義添加學員信息的函數 def add_info():# 1.接收用戶輸入學員信息new_id = input('請輸入學號:')new_name = input('請輸入姓名:')new_sex = input('請輸入性別:(男或女)')new_tel = input('請輸入手機號:')# 聲明info是全局變量global info# 2.檢測用戶輸入的姓名是否存在,存在則報錯提示for i in info:if new_name == i['name']:print('用戶已存在')return# 3.如果用戶輸入的姓名不存在,則添加該學員信息info_dict = {'id': new_id, 'name': new_name, 'sex': new_sex, 'tel': new_tel}# 4.將用戶輸入的數據追加到字典# 5.將這個學員的字典數據追加到列表info.append(info_dict)# 刪除學員功能函數 def del_info():# 1.用戶輸入要輸出的學員姓名del_name = input('請輸入要刪除的學員的姓名:')global info# 2.判斷學員是否存在,存在則刪除,否則報錯提示for i in info:if del_name == i['name']:info.remove(i)breakelse:print('該學員不存在')print(info)# 修改函數 def modify_info():# 1.用戶輸入要修改的學員的姓名modify_name = input('請輸入要修改的學員的姓名:')global info# 2.判斷學員是否存在:存在則修改,否則報錯for i in info:if modify_name == i['name']:i['name'] = input('請輸入新的姓名')i['id'] = input('請輸入新的學號')i['sex'] = input('請輸入性別')i['tel'] = input('請輸入新的手機號:')breakelse:print('該學員不存在')print(info)# 查詢學員 def search_info():# 1.輸入要查找的學員姓名:search_name = input('請輸入要查找的學員姓名:')global info# 2.判斷學員是否存在:是則顯示該生信息,否則報錯提示for i in info:if search_name == i['name']:print('查找到的學員信息如下:-------------')print(f"該學員的學號是{i['id']},姓名是{i['name']},性別為:{i['sex']},手機號是{i['tel']}")breakelse:print('查無此人......')# 模糊查找 def fuzzy_finder(key, data):suggestions = []pattern = '.*%s.*' % key # 正則表達式regex = re.compile(pattern)for item in data:match = regex.search(item['name'])if match:suggestions.append(item)return suggestions# 統計性別 def sex_ratio():global info, boys, girlsfor i in info:if i['sex'] == '女':girls.append(i)elif i['sex'] == '男':boys.append(i)print(f'男生人數為:{len(boys)},女生人數為:{len(girls)}')# 顯示所有學員信息 def print_all():print("1.控制臺顯示\n2.打印到為txt文件(可供下載)")myFind = int(input("輸入操作代碼:"))if myFind == 1:print('學號\t姓名\t性別\t手機號')for i in info:print(f"該學員的學號是{i['id']},姓名是{i['name']},性別為:{i['sex']},手機號是{i['tel']}")elif myFind == 2:create_file()else:print("輸入有誤")def create_file():file = open("C:\\Users\\ASUS\\Desktop\\myTxt.txt", 'w', encoding="UTF-8") # 寫入內容file.write(str(info))file.close()def delete_file():os.unlink("C:\\Users\\ASUS\\Desktop\\myTxt.txt")print("myTxt.txt已被刪除")while True:# 1.顯示功能界面info_print()# 2.用戶輸入功能序號user_num = int(input('請輸入功能序號:'))# 3.按照用戶輸入的功能序號,執行不同的功能(函數)if user_num == 1:add_info()elif user_num == 2:del_info()elif user_num == 3:modify_info()elif user_num == 4:print('請選擇查找方式:\n1.精準查找\n2.模糊查找\n3.統計男女\n0.退出')myFind = int(input())if myFind == 1:search_info()elif myFind == 2:findName = input('請輸入要查找的學員姓名:')result = fuzzy_finder(findName, info)print(result)elif myFind == 3:sex_ratio()elif myFind == 0:print('返回主菜單')continueelse:print('輸入有誤,已返回主菜單')continueelif user_num == 5:print_all()elif myFind == 6:delete_file()elif user_num == 0:exit_flag = input('確定要退出嗎? yes or no')if exit_flag == 'yes':print('已退出程序')breakelif exit_flag == 'no':print('返回主菜單')continueelse:print('輸入有誤,已返回主菜單')continueelse:print('輸入的功能序號有誤')continue小小作業,溜了溜了~
-End-
總結
以上是生活随笔為你收集整理的Python学生信息管理系统(增删查改、模糊查找、txt文件输出)# 谭子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WebRTC音频降噪使用
- 下一篇: 第三周算法周报