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