日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

Python学生信息管理系统(增删查改、模糊查找、txt文件输出)# 谭子

發(fā)布時(shí)間:2024/1/8 windows 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python学生信息管理系统(增删查改、模糊查找、txt文件输出)# 谭子 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、系統(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)容:

  • 簡單的增刪查改;
  • 設(shè)計(jì)了模糊查找功能,可以通過輸入姓名中的某個(gè)字,匹配當(dāng)前數(shù)組中所有姓名帶該字的學(xué)員信息,讓系統(tǒng)管理員在查找信息時(shí)更加方便,避免了錯(cuò)別字輸入而導(dǎo)致無法快速查詢及某些學(xué)生的姓名過于“復(fù)雜”而無法及時(shí)敲出該姓名;
  • 內(nèi)置了性別統(tǒng)計(jì)功能,使程序更加便捷于查找男女比例;
  • 可以將已有的信息輸出到txt文件上,模擬打印功能。
  • 二、系統(tǒng)設(shè)計(jì)

  • 實(shí)現(xiàn)技術(shù):Python程序設(shè)計(jì)語言
  • 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì):采用字典和數(shù)組存放學(xué)生信息
  • 系統(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)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。