中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

一級a做爰片免費(fèi)網(wǎng)站志鴻優(yōu)化設(shè)計(jì)答案網(wǎng)

一級a做爰片免費(fèi)網(wǎng)站,志鴻優(yōu)化設(shè)計(jì)答案網(wǎng),做網(wǎng)站公司分為國內(nèi)還是國外,周口微網(wǎng)站制作🎩 歡迎來到技術(shù)探索的奇幻世界👨?💻 📜 個(gè)人主頁:一倫明悅-CSDN博客 ?🏻 作者簡介: C軟件開發(fā)、Python機(jī)器學(xué)習(xí)愛好者 🗣? 互動(dòng)與支持:💬評論 &…

🎩 歡迎來到技術(shù)探索的奇幻世界👨?💻

📜 個(gè)人主頁:@一倫明悅-CSDN博客

?🏻 作者簡介:?C++軟件開發(fā)、Python機(jī)器學(xué)習(xí)愛好者

🗣??互動(dòng)與支持💬評論?? ? ?👍🏻點(diǎn)贊?? ? ?📂收藏?? ? 👀關(guān)注+

如果文章有所幫助,歡迎留下您寶貴的評論,

點(diǎn)贊加收藏支持我,點(diǎn)擊關(guān)注,一起進(jìn)步!

目錄

前言 ? ?? ? ? ??

正文

01-需求分析? ? ? ? ? ??

02-功能演示? ? ? ? ? ??

03-錄入學(xué)生信息功能實(shí)現(xiàn)? ? ? ? ? ??

04-查找學(xué)生信息功能實(shí)現(xiàn)? ? ? ? ? ??

05-刪除學(xué)生信息功能實(shí)現(xiàn)? ? ? ? ? ??

06-修改學(xué)生信息功能實(shí)現(xiàn)? ? ? ? ? ??

07-對學(xué)生成績進(jìn)行排序功能實(shí)現(xiàn)? ? ? ? ? ??

08-統(tǒng)計(jì)學(xué)生總?cè)藬?shù)功能實(shí)現(xiàn)? ? ? ? ? ??

09-顯示所有學(xué)生信息功能實(shí)現(xiàn)? ? ? ? ? ??

總結(jié)?

01-整體代碼實(shí)現(xiàn)? ? ? ? ??


前言 ? ?? ? ? ??

????????Python是一種高級編程語言,以其簡潔易讀的語法而聞名。它支持面向?qū)ο?、命令式、函?shù)式和過程式編程范式。Python由Guido van Rossum于1991年創(chuàng)立,如今已成為最受歡迎的編程語言之一。它在許多領(lǐng)域得到廣泛應(yīng)用,包括Web開發(fā)、科學(xué)計(jì)算、人工智能、數(shù)據(jù)分析和自動(dòng)化腳本等。Python的核心特點(diǎn)包括動(dòng)態(tài)類型、自動(dòng)內(nèi)存管理和廣泛的標(biāo)準(zhǔn)庫,其中包含了許多用于各種任務(wù)的模塊和功能。Python的生態(tài)系統(tǒng)也非常豐富,擁有大量的第三方庫和框架,使開發(fā)人員能夠快速構(gòu)建復(fù)雜的應(yīng)用程序。

正文

01-需求分析? ? ? ? ? ??

????????'''學(xué)生管理系統(tǒng)應(yīng)該具備的功能'''
1,添加學(xué)生及成績信息
? ? ? ?2,將學(xué)生信息保存在文件中
3,修改和刪除學(xué)生信息

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 4,查詢學(xué)生信息
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 5,根據(jù)學(xué)生成績進(jìn)行排序

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 6,統(tǒng)計(jì)學(xué)生的總分

02-功能演示? ? ? ? ? ??

? ? ?下面對系統(tǒng)實(shí)現(xiàn)的功能進(jìn)行演示一下,后面會(huì)給出分段代碼解釋和整體代碼

????????運(yùn)行之后,界面如下:各種功能選擇項(xiàng)

????????選擇功能1,可以進(jìn)行添加學(xué)生信息操作,如下圖所示:添加張三和學(xué)號,以及各科成績,最后可以選擇是否繼續(xù)添加。

????????選擇功能2,可以進(jìn)行查詢學(xué)生信息,如下圖所示:兩種查詢方式

????????請選擇2
????????按學(xué)號查找請輸入1,按姓名查找請輸入22
????????請輸入要查找學(xué)生的姓名:張三
????????? id ??? ? ? ? 姓名 ? ? ?? ? ?英語成績 ??? ? python成績 ?? ? ?java成績 ??? ? ?總成績 ??
?????????1001 ?? ? ? ? 張三 ? ? ?? ? ? 98 ? ?? ? ? ?96 ? ??? ? ? ?99 ? ??? ? ?293 ??
????????是否繼續(xù)執(zhí)行查詢操作?y/n
????????y
????????按學(xué)號查找請輸入1,按姓名查找請輸入21
????????請輸入要查找學(xué)生的id:1001
????????? id ??? ? ? ? 姓名 ? ? ?? ? ?英語成績 ??? ? python成績 ?? ? ?java成績 ??? ? ?總成績 ??
?????????1001 ?? ? ? ? 張三 ? ? ?? ? ? 98 ? ?? ? ? ?96 ? ??? ? ? ?99 ? ??? ? ?293 ??
????????是否繼續(xù)執(zhí)行查詢操作?y/n

????????選擇功能4,修改學(xué)生信息,如下圖所示:

????????請輸入需要修改學(xué)生的id:1002
????????找到學(xué)生相關(guān)信息,可以修改他的相關(guān)信息了!!!
????????請輸入名字:李四
????????請輸入英語成績:100
????????請輸入python成績:100
????????請輸入java成績100
????????修改成功
????????是否繼續(xù)修改其他學(xué)生的信息?y/n

????????選擇功能5,學(xué)生信息排序,如下圖所示:也有多種排序方式

????????請選擇5
? ????????id ??? ? ? ? 姓名 ? ? ?? ? ?英語成績 ??? ? python成績 ?? ? ?java成績 ??? ? ?總成績 ??
?????????1001 ?? ? ? ? 張三 ? ? ?? ? ? 98 ? ?? ? ? ?96 ? ??? ? ? ?99 ? ??? ? ?293 ??
?????????1002 ?? ? ? ? 李四 ? ? ?? ? ?100 ? ?? ? ? 100 ? ??? ? ? 100 ? ??? ? ?300 ??
????????請選擇(0.升序 1.降序)1
????????請選擇排序方式(1.英語成績排序 2.python成績排序 3.java成績排序 0.總成績排序)1
? ????????id ??? ? ? ? 姓名 ? ? ?? ? ?英語成績 ??? ? python成績 ?? ? ?java成績 ??? ? ?總成績 ??
?????????1002 ?? ? ? ? 李四 ? ? ?? ? ?100 ? ?? ? ? 100 ? ??? ? ? 100 ? ??? ? ?300 ??
?????????1001 ?? ? ? ? 張三 ? ? ?? ? ? 98 ? ?? ? ? ?96 ? ??? ? ? ?99 ? ??? ? ?293 ??

????????選擇功能6,統(tǒng)計(jì)學(xué)生總?cè)藬?shù),如下圖所示:

?????????選擇功能7,顯示所有學(xué)生信息,如下圖所示:

03-錄入學(xué)生信息功能實(shí)現(xiàn)? ? ? ? ? ??

? ? ?1,表示錄入學(xué)生信息,調(diào)用insert()函數(shù),函數(shù)如下

????????代碼解釋如下:這段代碼定義了一個(gè)函數(shù)insert(),它的作用是用來錄入學(xué)生信息并將信息保存到一個(gè)列表中,最后將列表保存到文件中。:

  1. def insert():: 這是定義一個(gè)函數(shù)的開始,函數(shù)名為insert。

  2. student_list = []: 創(chuàng)建一個(gè)空列表student_list,用于存儲(chǔ)錄入的學(xué)生信息。

  3. while True:: 進(jìn)入一個(gè)無限循環(huán),用于不斷地錄入學(xué)生信息,直到用戶選擇退出。

  4. id = input('請輸入學(xué)號(如1001):'): 提示用戶輸入學(xué)號,并將輸入的值賦給變量id。

  5. if not id:: 如果學(xué)號為空(用戶沒有輸入),則執(zhí)行break語句退出循環(huán),即結(jié)束錄入信息操作。

  6. name = input('請輸入姓名:'): 提示用戶輸入姓名,并將輸入的值賦給變量name

  7. if not name:: 如果姓名為空(用戶沒有輸入),則執(zhí)行break語句退出循環(huán),即結(jié)束錄入信息操作。

  8. try:: 使用try語句開始嘗試錄入成績信息,因?yàn)槌煽冇锌赡茕浫脲e(cuò)誤,所以使用異常處理。

  9. english = int(input('請輸入英語成績:')): 提示用戶輸入英語成績,并將輸入的字符串轉(zhuǎn)換為整數(shù)類型,并將其賦給變量english。

  10. python = int(input('請輸入python成績:')): 提示用戶輸入Python成績,并將輸入的字符串轉(zhuǎn)換為整數(shù)類型,并將其賦給變量python

  11. java = int(input('請輸入Java成績:')): 提示用戶輸入Java成績,并將輸入的字符串轉(zhuǎn)換為整數(shù)類型,并將其賦給變量java。

  12. except:: 如果輸入的成績無效(無法轉(zhuǎn)換為整數(shù)),則執(zhí)行except語句塊,打印錯(cuò)誤提示信息并繼續(xù)循環(huán)。

  13. student = {'id':id,'name':name,'english':english,'python':python,'java':java}: 將錄入的學(xué)生信息保存到一個(gè)字典student中,包括學(xué)號、姓名、英語成績、Python成績和Java成績。

  14. student_list.append(student): 將學(xué)生信息字典student添加到列表student_list中。

  15. anewer = input('是否繼續(xù)添加?y/n\n'): 提示用戶是否繼續(xù)添加學(xué)生信息,用戶輸入y表示繼續(xù),輸入其他任意值表示退出。

  16. if anewer=='y': continue else: break: 根據(jù)用戶輸入的選擇,如果是y則繼續(xù)循環(huán),否則執(zhí)行break語句退出循環(huán)。

  17. 最后,如果退出循環(huán),即用戶不再添加學(xué)生信息,則調(diào)用一個(gè)未定義的save()函數(shù)來保存學(xué)生信息到文件中(你需要自行定義該函數(shù)),并輸出"學(xué)生信息錄入完畢!!!"的提示信息。

def insert():  # 定義insert()函數(shù),錄入學(xué)生信息student_list = []  # 創(chuàng)建一個(gè)列表,用于存儲(chǔ)錄入的學(xué)生信息while True:  # 循環(huán)錄入學(xué)生信息id = input('請輸入學(xué)號(如1001):')if not id:  # 如果沒有輸入學(xué)號或者輸入錯(cuò)誤,則執(zhí)行break,退出錄入信息操作breakname = input('請輸入姓名:')if not name:  # 如果是空的,則執(zhí)行breakbreak#  然后開始錄入成績信息,但是成績有可能錄入錯(cuò)誤,因此用try...except...保證異常處理try:english = int(input('請輸入英語成績:'))python = int(input('請輸入python成績:'))java = int(input('請輸入Java成績:'))except:  #當(dāng)你輸入的成績無效時(shí),會(huì)執(zhí)行except語句print('輸入無效,不是整數(shù)類型,請重新輸入')continue# 將錄入的學(xué)生信息保存到字典student = {'id':id,'name':name,'english':english,'python':python,'java':java}# 將學(xué)生信息添加到列表中student_list.append(student)anewer = input('是否繼續(xù)添加?y/n\n')if anewer=='y':continueelse:break2# 信息添加之后,將信息保存到文件中,需要退出循環(huán)# 調(diào)用save()函數(shù),保存信息save(student_list)  # save()函數(shù)未定義,需要自行定義print('學(xué)生信息錄入完畢!!!')

04-查找學(xué)生信息功能實(shí)現(xiàn)? ? ? ? ? ??

? ? ?2,表示查找學(xué)生信息,調(diào)用search()函數(shù),函數(shù)如下

????????代碼解釋如下:這段代碼定義了一個(gè)名為search()的函數(shù),其作用是用于查找學(xué)生信息。

  1. def search():: 這是定義一個(gè)函數(shù)的開始,函數(shù)名為search。

  2. student_query = []: 創(chuàng)建一個(gè)空列表student_query,用于存儲(chǔ)查詢到的學(xué)生信息。

  3. while True:: 進(jìn)入一個(gè)無限循環(huán),直到用戶選擇退出查詢操作。

  4. id = ''name = '': 初始化兩個(gè)變量idname為空字符串,用于存儲(chǔ)用戶輸入的學(xué)號和姓名。

  5. if os.path.exists(filename):: 檢查是否存在指定的文件(未提供filename變量,應(yīng)該在代碼中定義),這里假設(shè)用來存儲(chǔ)學(xué)生信息的文件存在。

  6. mode = input('按學(xué)號查找請輸入1,按姓名查找請輸入2'): 提示用戶選擇查詢方式,1表示按學(xué)號查詢,2表示按姓名查詢。

  7. if mode == '1':: 如果用戶選擇按學(xué)號查詢,則要求用戶輸入要查找學(xué)生的學(xué)號。

  8. elif mode=='2':: 如果用戶選擇按姓名查詢,則要求用戶輸入要查找學(xué)生的姓名。

  9. else:: 如果用戶輸入有誤(既不是1也不是2),則輸出錯(cuò)誤提示信息并重新調(diào)用search()函數(shù)以重新執(zhí)行查詢操作。

  10. with open(filename,'r',encoding='UTF-8') as rfile:: 打開指定的文件進(jìn)行讀取操作,使用with語句可以確保文件在使用后被正確關(guān)閉。

  11. student = rfile.readlines(): 讀取文件中的所有內(nèi)容,并將每行內(nèi)容存儲(chǔ)在列表student中。

  12. for item in student:: 遍歷student列表中的每一行內(nèi)容。

  13. d =dict(eval(item)): 將每行內(nèi)容轉(zhuǎn)換為字典類型,并賦給變量d,這里使用eval()函數(shù)將字符串轉(zhuǎn)換為字典類型。

  14. if id != '':if name != '':: 如果用戶輸入了學(xué)號或姓名(即不為空),則執(zhí)行相應(yīng)的查詢操作。

  15. student_query.append(d): 將符合查詢條件的學(xué)生信息字典添加到student_query列表中。

  16. show_student(student_query): 調(diào)用一個(gè)未定義的show_student()函數(shù)來顯示查詢結(jié)果,你需要自行定義該函數(shù)。

  17. student_query.clear(): 清空student_query列表,以便下一次查詢使用。

  18. answer = input('是否繼續(xù)執(zhí)行查詢操作?y/n\n'): 提示用戶是否繼續(xù)執(zhí)行查詢操作,如果用戶輸入y則繼續(xù),否則執(zhí)行break語句退出循環(huán)。

  19. else:: 如果指定的文件不存在,則輸出提示信息"未錄入學(xué)生信息"并返回,即結(jié)束函數(shù)的執(zhí)行。

def search():  # 定義search()函數(shù),查找學(xué)生信息student_query = []while True:id = ''name = ''if os.path.exists(filename):# 現(xiàn)在分模式查找,1代表使用id查找,2代表使用name查找mode = input('按學(xué)號查找請輸入1,按姓名查找請輸入2')if mode == '1':  # 需要加上單引號,因?yàn)檩斎氲氖亲址?#xff0c;并未轉(zhuǎn)變類型id = input('請輸入要查找學(xué)生的id:')elif mode=='2':  # elif就相當(dāng)于else if的功能,主要在有多個(gè)選擇時(shí)使用,因?yàn)閕f先用來判斷是否為1# 下面還有兩個(gè)選擇,就是2和其他的數(shù),因此不能直接用else,還要用elif判斷一下是否為2name = input('請輸入要查找學(xué)生的姓名:')else:print('您的輸入有誤,請重新輸入')search()  #輸入錯(cuò)了,就重新調(diào)用函數(shù),也可以使用continuewith open(filename,'r',encoding='UTF-8') as rfile:  # 讀取內(nèi)容,將所有內(nèi)容放在student文件中student = rfile.readlines()for item in student:  # 遍歷student列表d =dict(eval(item))  # 字符串轉(zhuǎn)成字典類型if id != '':if d['id'] ==id:student_query.append(d)if name != '':if d['name'] == name:student_query.append(d)# 顯示查詢結(jié)果show_student(student_query)  # 定義show_student函數(shù)# 清空列表student_query.clear()answer = input('是否繼續(xù)執(zhí)行查詢操作?y/n\n')if answer=='y':continueelse:breakelse:print('未錄入學(xué)生信息')return

05-刪除學(xué)生信息功能實(shí)現(xiàn)? ? ? ? ? ??

? ? ?3,表示刪除學(xué)生信息,調(diào)用delete()函數(shù),函數(shù)如下

????????代碼解釋如下,這段代碼定義了一個(gè)名為delete()的函數(shù),其作用是用于刪除學(xué)生信息。:

  1. def delete():: 這是定義一個(gè)函數(shù)的開始,函數(shù)名為delete。

  2. while True:: 進(jìn)入一個(gè)無限循環(huán),直到用戶選擇退出刪除操作。

  3. student_id = input('請輸入要?jiǎng)h除的學(xué)生的id:'): 提示用戶輸入要?jiǎng)h除的學(xué)生的學(xué)號。

  4. if student_id!='':: 檢查用戶輸入的學(xué)號是否不為空。

  5. if os.path.exists(filename):: 檢查是否存在指定的文件(同樣未提供filename變量,應(yīng)該在代碼中定義),這里假設(shè)用來存儲(chǔ)學(xué)生信息的文件存在。

  6. with open(filename,'r',encoding='UTF-8') as file:: 使用with語句打開文件進(jìn)行讀取操作。

  7. student_old = file.readlines(): 將文件中的所有內(nèi)容讀取到列表student_old中。

  8. flag = False: 初始化一個(gè)標(biāo)記變量flag,用于標(biāo)記是否刪除了學(xué)生信息。

  9. if student_old:: 如果student_old列表不為空(即文件中存在學(xué)生信息),則執(zhí)行下面的操作。

  10. with open(filename,'w',encoding='UTF-8') as wfile:: 使用with語句打開文件進(jìn)行寫入操作,這里打開方式為覆蓋寫入('w’模式)。

  11. for item in student_old:: 遍歷student_old列表中的每個(gè)學(xué)生信息。

  12. d =dict(eval(item)): 將每行內(nèi)容(學(xué)生信息)轉(zhuǎn)換為字典類型,并賦給變量d,這里使用eval()函數(shù)將字符串轉(zhuǎn)換為字典類型。

  13. if d['id']!= student_id:: 檢查當(dāng)前學(xué)生信息的學(xué)號是否與用戶輸入的學(xué)號不相等,如果不相等則寫入到新文件中(相當(dāng)于刪除了這條學(xué)生信息)。

  14. else:: 如果當(dāng)前學(xué)生信息的學(xué)號與用戶輸入的學(xué)號相等,則將標(biāo)記變量flag設(shè)為True,表示找到了要?jiǎng)h除的學(xué)生信息。

  15. if flag==1:: 如果flagTrue(1),則輸出刪除成功的提示信息。

  16. else:: 如果flagFalse,則輸出未找到要?jiǎng)h除的學(xué)生信息的提示信息。

  17. show(): 調(diào)用一個(gè)未定義的show()函數(shù)來重新顯示全部學(xué)生信息,你需要自行定義該函數(shù)。

  18. answer = input('是否繼續(xù)刪除學(xué)生信息?y/n\n'): 提示用戶是否繼續(xù)執(zhí)行刪除操作,如果用戶輸入y則繼續(xù),否則執(zhí)行break語句退出循環(huán)。

def delete():  # 定義delete()函數(shù),刪除學(xué)生信息while True:student_id = input('請輸入要?jiǎng)h除的學(xué)生的id:')if student_id!='':# 當(dāng)輸入的id之后,則不是空的,此時(shí)要判斷導(dǎo)入id是否在文件中,使用os模塊if os.path.exists(filename):  # 判斷文件是否存在with open(filename,'r',encoding='UTF-8') as file:student_old = file.readlines()  # 如果存在,讀取學(xué)生的信息,將其添加到列表當(dāng)中else:  # 如果不存在student_old=[]  # 建立一個(gè)空列表flag = False  # 標(biāo)記是否刪除if student_old:  # 這里表示如果列表student_old為真,則執(zhí)行下面with語句with open(filename,'w',encoding='UTF-8') as wfile:  # 使用上下管理器,寫入d ={}  # 創(chuàng)建一個(gè)空字典for item in student_old:  # 遍歷student_old中的信息d=dict(eval(item))   # 將字符串轉(zhuǎn)成字典if d['id']!= student_id:  # 判斷是否與輸入的信息相等wfile.write(str(d)+'\n')  # 不相等,則寫入d字典中else:flag = True  # 相等則執(zhí)行刪除操作if flag==1:print(f'id為{student_id}的學(xué)生信息已被刪除')else:print(f'沒有找到id為{student_id}的學(xué)生信息')else:  # 文件不存在print('無學(xué)生信息')breakshow()  # 刪除之后重新顯示全部學(xué)生信息answer = input('是否繼續(xù)刪除學(xué)生信息?y/n\n')if answer == 'y':continueelse:break

06-修改學(xué)生信息功能實(shí)現(xiàn)? ? ? ? ? ??

? ? ?4,表示修改學(xué)生信息,調(diào)用modify()函數(shù),函數(shù)如下

????????代碼解釋如下,這段代碼定義了一個(gè)名為?modify()?的函數(shù),其作用是用于修改學(xué)生信息。

  1. def modify():: 這是定義一個(gè)函數(shù)的開始,函數(shù)名為?modify

  2. show(): 調(diào)用一個(gè)未定義的?show()?函數(shù)來顯示全部學(xué)生信息,你需要自行定義該函數(shù)。

  3. if os.path.exists(filename):: 檢查是否存在指定的文件(同樣未提供?filename?變量,應(yīng)該在代碼中定義),這里假設(shè)用來存儲(chǔ)學(xué)生信息的文件存在。

  4. with open(filename,'r',encoding='UTF-8') as rfile:: 使用?with?語句打開文件進(jìn)行讀取操作。

  5. student_old = rfile.readlines(): 將文件中的所有內(nèi)容讀取到列表?student_old?中,每行內(nèi)容作為列表的一個(gè)元素。

  6. student_id = input('請輸入需要修改學(xué)生的id:'): 提示用戶輸入需要修改的學(xué)生的學(xué)號。

  7. if student_id != '':: 檢查用戶輸入的學(xué)號是否不為空。

  8. with open(filename,'w',encoding='UTF-8') as wfile:: 使用?with?語句打開文件進(jìn)行寫入操作,這里打開方式為覆蓋寫入(‘w’ 模式)。

  9. for item in student_old:: 遍歷?student_old?列表中的每個(gè)學(xué)生信息。

  10. d = dict(eval(item)): 將每行內(nèi)容(學(xué)生信息)轉(zhuǎn)換為字典類型,并賦給變量?d,這里使用?eval()?函數(shù)將字符串轉(zhuǎn)換為字典類型。

  11. if d['id'] == student_id:: 檢查當(dāng)前學(xué)生信息的學(xué)號是否與用戶輸入的學(xué)號相等,如果相等則表示找到了要修改的學(xué)生信息。

  12. while True:: 進(jìn)入一個(gè)無限循環(huán),直到用戶輸入正確的信息。

  13. try:: 嘗試執(zhí)行下面的代碼塊。

  14. d['name'] = input('請輸入名字:'): 提示用戶輸入新的名字,并更新到學(xué)生信息中。

  15. d['english'] = input('請輸入英語成績:'): 提示用戶輸入新的英語成績,并更新到學(xué)生信息中。

  16. d['python'] = input('請輸入python成績:'): 提示用戶輸入新的Python成績,并更新到學(xué)生信息中。

  17. d['java'] = input('請輸入java成績:'): 提示用戶輸入新的Java成績,并更新到學(xué)生信息中。

  18. except:: 如果用戶輸入有誤,則執(zhí)行下面的代碼塊。

  19. break: 如果用戶輸入正確,跳出無限循環(huán)。

  20. wfile.write(str(d)+'\n'): 將更新后的學(xué)生信息寫入到文件中。

  21. answer = input('是否繼續(xù)修改其他學(xué)生的信息?y/n\n'): 提示用戶是否繼續(xù)執(zhí)行修改操作,如果用戶輸入?y?則繼續(xù),否則結(jié)束函數(shù)。

  22. if answer=='y': modify(): 如果用戶選擇繼續(xù)修改其他學(xué)生信息,則遞歸調(diào)用?modify()?函數(shù)。

def modify():  # 定義modify()函數(shù),修改學(xué)生信息show()if os.path.exists(filename):with open(filename,'r',encoding='UTF-8') as rfile:student_old = rfile.readlines()  # readlines() 函數(shù)用于讀取文件中的所有行,然后將起放入創(chuàng)建的列表中else:return # 文件不存在,結(jié)束函數(shù)student_id = input('請輸入需要修改學(xué)生的id:')if student_id != '':if os.path.exists(filename):with open(filename,'w',encoding='UTF-8') as wfile:for item in student_old:d = dict(eval(item))if d['id']  == student_id:print('找到學(xué)生相關(guān)信息,可以修改他的相關(guān)信息了!!!')while True:try:d['name'] = input('請輸入名字:')d['english'] = input('請輸入英語成績:')d['python']  = input('請輸入python成績:')d['java']   = input('請輸入java成績')except:print('輸入有誤,請重新輸入')  # 如果輸入有誤,則會(huì)繼續(xù)執(zhí)行while trueelse:break# 如果都沒輸入錯(cuò)誤,則使用write寫入wfile.write(str(d)+'\n')print('修改成功')# 一些學(xué)生被修改,還有一些未修改的學(xué)生,也就是id不相等的else:wfile.write(str(d)+'\n')answer = input('是否繼續(xù)修改其他學(xué)生的信息?y/n\n')if answer=='y':modify()  # 在函數(shù)里面調(diào)用函數(shù)

07-對學(xué)生成績進(jìn)行排序功能實(shí)現(xiàn)? ? ? ? ? ??

? ? ?5,表示對學(xué)生成績進(jìn)行排序,調(diào)用sort()函數(shù),函數(shù)如下

????????代碼解釋如下,這段代碼定義了一個(gè)名為?sort()?的函數(shù),其作用是對學(xué)生成績進(jìn)行排序。

  1. def sort():: 這是定義一個(gè)函數(shù)的開始,函數(shù)名為?sort。

  2. show(): 調(diào)用一個(gè)未定義的?show()?函數(shù)來顯示全部學(xué)生信息,你需要自行定義該函數(shù)。

  3. if os.path.exists(filename):: 檢查是否存在指定的文件(同樣未提供?filename?變量,應(yīng)該在代碼中定義),這里假設(shè)用來存儲(chǔ)學(xué)生信息的文件存在。

  4. with open(filename,'r',encoding='UTF-8') as rfile:: 使用?with?語句打開文件進(jìn)行讀取操作。

  5. student_list = rfile.readlines(): 將文件中的所有內(nèi)容讀取到列表?student_list?中,每行內(nèi)容作為列表的一個(gè)元素。

  6. student_new = []: 創(chuàng)建一個(gè)空列表?student_new,用于存儲(chǔ)將每行學(xué)生信息轉(zhuǎn)換為字典后的結(jié)果。

  7. for item in student_list:: 遍歷?student_list?列表中的每個(gè)學(xué)生信息。

  8. d = dict(eval(item)): 將每行內(nèi)容(學(xué)生信息)轉(zhuǎn)換為字典類型,并賦給變量?d,這里使用?eval()?函數(shù)將字符串轉(zhuǎn)換為字典類型。

  9. student_new.append(d): 將轉(zhuǎn)換后的學(xué)生信息字典添加到?student_new?列表中。

  10. asc_or_desc = input('請選擇(0.升序 1.降序)'): 提示用戶選擇排序方式,0 表示升序,1 表示降序。

  11. if asc_or_desc=='0': asc_or_desc_bool = False: 如果用戶選擇升序,則將?asc_or_desc_bool?設(shè)為?False,否則設(shè)為?True?表示降序。

  12. mode = input('請選擇排序方式(1.英語成績排序 2.python成績排序 3.java成績排序 0.總成績排序)'): 提示用戶選擇排序方式,1 表示按英語成績排序,2 表示按Python成績排序,3 表示按Java成績排序,0 表示按總成績排序。

  13. 根據(jù)用戶輸入的?mode,使用?lambda?函數(shù)定義排序的關(guān)鍵字,然后使用?sort()?函數(shù)對?student_new?列表進(jìn)行排序。

  14. show_student(student_new): 調(diào)用一個(gè)未定義的?show_student()?函數(shù)來顯示排序后的學(xué)生信息,你需要自行定義該函數(shù)。

def sort():    # 定義sort()函數(shù),對學(xué)生成績進(jìn)行排序show()if os.path.exists(filename):with open(filename,'r',encoding='UTF-8') as rfile:student_list = rfile.readlines()student_new = []for item in student_list:d = dict(eval(item))student_new.append(d)else:return# 共有升序和降序兩種排序方式,手動(dòng)輸入asc_or_desc = input('請選擇(0.升序 1.降序)')if asc_or_desc=='0':asc_or_desc_bool = Falseelif asc_or_desc=='1':asc_or_desc_bool = Trueelse:print('您的輸入有誤,請重新輸入')sort()mode = input('請選擇排序方式(1.英語成績排序 2.python成績排序 3.java成績排序 0.總成績排序)')if mode=='1':student_new.sort(key=lambda x:int(x['english']),reverse=asc_or_desc_bool)elif mode =='2':student_new.sort(key=lambda x:int(x['python']),reverse=asc_or_desc_bool)elif mode =='3':student_new.sort(key=lambda x:int(x['java']),reverse=asc_or_desc_bool)elif mode =='0':student_new.sort(key=lambda x:int(x['english'])+int(x['python'])+int(x['java']),reverse=asc_or_desc_bool)else:print('您的輸入有誤,請重新輸入')sort()show_student(student_new)

08-統(tǒng)計(jì)學(xué)生總?cè)藬?shù)功能實(shí)現(xiàn)? ? ? ? ? ??

? ? ?6,表示統(tǒng)計(jì)學(xué)生總?cè)藬?shù),調(diào)用total()函數(shù),函數(shù)如下

????????代碼解釋如下,這段代碼定義了一個(gè)名為?total()?的函數(shù),其作用是統(tǒng)計(jì)學(xué)生總?cè)藬?shù)。

  1. def total():: 這是定義一個(gè)函數(shù)的開始,函數(shù)名為?total。

  2. if os.path.exists(filename):: 檢查是否存在指定的文件(同樣未提供?filename?變量,應(yīng)該在代碼中定義),這里假設(shè)用來存儲(chǔ)學(xué)生信息的文件存在。

  3. with open(filename,'r',encoding='UTF-8') as rfile:: 使用?with?語句打開文件進(jìn)行讀取操作。

  4. students = rfile.readlines(): 將文件中的所有內(nèi)容讀取到列表?students?中,每行內(nèi)容作為列表的一個(gè)元素。

  5. if students:: 檢查?students?列表是否非空,即是否有學(xué)生信息。

  6. print(fr'一共有{len(students)}名學(xué)生'): 如果有學(xué)生信息,則使用?len()?函數(shù)統(tǒng)計(jì)學(xué)生總?cè)藬?shù),并打印出來。

  7. else:: 如果?students?列表為空,即沒有學(xué)生信息,則打印提示信息?'尚未錄入學(xué)生信息'。

def total():   # 定義total()函數(shù),統(tǒng)計(jì)學(xué)生總?cè)藬?shù)if os.path.exists(filename):with open(filename,'r',encoding='UTF-8') as rfile:students = rfile.readlines()if students:print(fr'一共有{len(students)}名學(xué)生')else:print('尚未錄入學(xué)生信息')

09-顯示所有學(xué)生信息功能實(shí)現(xiàn)? ? ? ? ? ??

? ? ?7,表示顯示所有學(xué)生的信息,調(diào)用show()函數(shù),函數(shù)如下

????????代碼解釋如下,這段代碼定義了一個(gè)名為?show()?的函數(shù),其作用是顯示所有學(xué)生的信息。

  1. def show():: 這是定義一個(gè)函數(shù)的開始,函數(shù)名為?show

  2. student_lst = []: 創(chuàng)建一個(gè)空列表?student_lst,用于存儲(chǔ)所有學(xué)生的信息。

  3. if os.path.exists(filename):: 檢查是否存在指定的文件(同樣未提供?filename?變量,應(yīng)該在代碼中定義),這里假設(shè)用來存儲(chǔ)學(xué)生信息的文件存在。

  4. with open(filename,'r',encoding='UTF-8') as rfile:: 使用?with?語句打開文件進(jìn)行讀取操作。

  5. students = rfile.readlines(): 將文件中的所有內(nèi)容讀取到列表?students?中,每行內(nèi)容作為列表的一個(gè)元素。

  6. for item in students:: 遍歷?students?列表中的每個(gè)學(xué)生信息。

  7. student_lst.append(eval(item)): 將每行內(nèi)容(學(xué)生信息)轉(zhuǎn)換為字典類型,并添加到?student_lst?列表中。這里使用?eval()?函數(shù)將字符串轉(zhuǎn)換為字典類型。

  8. if student_lst:: 檢查?student_lst?列表是否非空,即是否有學(xué)生信息。

  9. 如果?student_lst?列表非空,則調(diào)用一個(gè)未定義的?show_student()?函數(shù)來顯示所有學(xué)生的信息,你需要自行定義該函數(shù)。

  10. 如果文件不存在或者沒有學(xué)生信息,則打印提示信息?'尚未錄入學(xué)生信息!!!'。

def show():    # 定義show()函數(shù),顯示所有學(xué)生的信息student_lst = []if os.path.exists(filename):with open(filename,'r',encoding='UTF-8') as rfile:students = rfile.readlines()for item in students:student_lst.append(eval(item))if student_lst:show_student(student_lst)else:print('尚未錄入學(xué)生信息!!!')

總結(jié)?

01-整體代碼實(shí)現(xiàn)? ? ? ? ??

? ? ? ? 注:上面僅僅是每一項(xiàng)功能實(shí)現(xiàn)的代碼,整體代碼如下,如果需要使用,一定要使用下面的代碼。

import os
filename = 'students.txt'
def main():while True:  # 為了顯示主菜單menu()  # 調(diào)用menu()函數(shù)#  有各種功能,下面就是讓用戶選擇choice = int(input('請選擇'))if choice in [0,1,2,3,4,5,6,7]:  # 共有八個(gè)功能,判斷選擇的是否在這八個(gè)序號里面if choice==0:  # 選擇0,表示退出系統(tǒng)answer = input('您確定要退出系統(tǒng)嗎?y/n\n')  # 輸出一個(gè)詢問,是否要退出if answer=='y' or answer=='Y':  # 判斷輸入的是否為yprint('謝謝您的使用')break  # 打斷menu()函數(shù)的輸出else:  # 不是選的ycontinue  # 繼續(xù)程序執(zhí)行elif choice==1:  # 如果選擇的是1insert()  # 調(diào)用insert()函數(shù),錄入學(xué)生信息elif choice==2:  # 如果選擇的是2search()   # 調(diào)用search()函數(shù),查找學(xué)生信息elif choice==3:  # 如果選擇的是3delete()   # 調(diào)用delete()函數(shù),刪除學(xué)生信息elif choice==4:  # 如果選擇的是4modify()   # 調(diào)用modify()函數(shù),修改學(xué)生信息elif choice==5:  # 如果選擇的是5sort()     # 調(diào)用sort()函數(shù),對學(xué)生成績進(jìn)行排序elif choice==6:  # 如果選擇的是6total()    # 調(diào)用total()函數(shù),統(tǒng)計(jì)學(xué)生總?cè)藬?shù)elif choice==7:  # 如果選擇的是7show()     # 調(diào)用show()函數(shù),顯示所有學(xué)生的信息def menu():print('======================學(xué)生信息管理系統(tǒng)======================')print('-------------------------功能菜單-------------------------')print('\t\t\t\t\t\t1.錄入學(xué)生信息')print('\t\t\t\t\t\t2.查找學(xué)生信息')print('\t\t\t\t\t\t3.刪除學(xué)生信息')print('\t\t\t\t\t\t4.修改學(xué)生信息')print('\t\t\t\t\t\t5.排序')print('\t\t\t\t\t\t6.統(tǒng)計(jì)學(xué)生總?cè)藬?shù)')print('\t\t\t\t\t\t7.顯示所有學(xué)生信息')print('\t\t\t\t\t\t0.退出系統(tǒng)')print('---------------------------------------------------------')def insert():  # 定義insert()函數(shù),錄入學(xué)生信息student_list = []  # 創(chuàng)建一個(gè)列表,用于存儲(chǔ)錄入的學(xué)生信息while True:  # 循環(huán)錄入學(xué)生信息id = input('請輸入學(xué)號(如1001):')if not id:  # 如果沒有輸入學(xué)號或者輸入錯(cuò)誤,則執(zhí)行break,退出錄入信息操作breakname = input('請輸入姓名:')if not name:  # 如果是空的,則執(zhí)行breakbreak#  然后開始錄入成績信息,但是成績有可能錄入錯(cuò)誤,因此用try...except...保證異常處理try:english = int(input('請輸入英語成績:'))python = int(input('請輸入python成績:'))java = int(input('請輸入Java成績:'))except:  #當(dāng)你輸入的成績無效時(shí),會(huì)執(zhí)行except語句print('輸入無效,不是整數(shù)類型,請重新輸入')continue# 將錄入的學(xué)生信息保存到字典student = {'id':id,'name':name,'english':english,'python':python,'java':java}# 將學(xué)生信息添加到列表中student_list.append(student)anewer = input('是否繼續(xù)添加?y/n\n')if anewer=='y':continueelse:break2# 信息添加之后,將信息保存到文件中,需要退出循環(huán)# 調(diào)用save()函數(shù),保存信息save(student_list)  # save()函數(shù)未定義,需要自行定義print('學(xué)生信息錄入完畢!!!')
def save(lst): # 傳進(jìn)去一個(gè)列表# 然后將列表中的內(nèi)容保存在文件中try:stu_txt = open(filename,'a',encoding='UTF-8')except:stu_txt = open(filename,'w',encoding='UTF-8')for item in lst:stu_txt.write(str(item)+'\n')stu_txt.close()def search():  # 定義search()函數(shù),查找學(xué)生信息student_query = []while True:id = ''name = ''if os.path.exists(filename):# 現(xiàn)在分模式查找,1代表使用id查找,2代表使用name查找mode = input('按學(xué)號查找請輸入1,按姓名查找請輸入2')if mode == '1':  # 需要加上單引號,因?yàn)檩斎氲氖亲址?#xff0c;并未轉(zhuǎn)變類型id = input('請輸入要查找學(xué)生的id:')elif mode=='2':  # elif就相當(dāng)于else if的功能,主要在有多個(gè)選擇時(shí)使用,因?yàn)閕f先用來判斷是否為1# 下面還有兩個(gè)選擇,就是2和其他的數(shù),因此不能直接用else,還要用elif判斷一下是否為2name = input('請輸入要查找學(xué)生的姓名:')else:print('您的輸入有誤,請重新輸入')search()  #輸入錯(cuò)了,就重新調(diào)用函數(shù),也可以使用continuewith open(filename,'r',encoding='UTF-8') as rfile:  # 讀取內(nèi)容,將所有內(nèi)容放在student文件中student = rfile.readlines()for item in student:  # 遍歷student列表d =dict(eval(item))  # 字符串轉(zhuǎn)成字典類型if id != '':if d['id'] ==id:student_query.append(d)if name != '':if d['name'] == name:student_query.append(d)# 顯示查詢結(jié)果show_student(student_query)  # 定義show_student函數(shù)# 清空列表student_query.clear()answer = input('是否繼續(xù)執(zhí)行查詢操作?y/n\n')if answer=='y':continueelse:breakelse:print('未錄入學(xué)生信息')return
def show_student(lst):# 顯示查詢結(jié)果的過程,結(jié)果是按照一定的格式顯示的,因此要使用格式化字符串if len(lst) ==0:print('沒有查詢到學(xué)生信息,無數(shù)據(jù)顯示!!!')return#  如果查到了,就要定義標(biāo)題的顯示格式format_title = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^8}'print(format_title.format('id','姓名','英語成績','python成績','java成績','總成績'))# 定義內(nèi)容的顯示格式format_data = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^8}'for item in lst:print(format_data.format(item.get('id'),item.get('name'),item.get('english'),item.get('python'),item.get('java'),int(item.get('english'))+int(item.get('python'))+int(item.get('java'))))
def delete():  # 定義delete()函數(shù),刪除學(xué)生信息while True:student_id = input('請輸入要?jiǎng)h除的學(xué)生的id:')if student_id!='':# 當(dāng)輸入的id之后,則不是空的,此時(shí)要判斷導(dǎo)入id是否在文件中,使用os模塊if os.path.exists(filename):  # 判斷文件是否存在with open(filename,'r',encoding='UTF-8') as file:student_old = file.readlines()  # 如果存在,讀取學(xué)生的信息,將其添加到列表當(dāng)中else:  # 如果不存在student_old=[]  # 建立一個(gè)空列表flag = False  # 標(biāo)記是否刪除if student_old:  # 這里表示如果列表student_old為真,則執(zhí)行下面with語句with open(filename,'w',encoding='UTF-8') as wfile:  # 使用上下管理器,寫入d ={}  # 創(chuàng)建一個(gè)空字典for item in student_old:  # 遍歷student_old中的信息d=dict(eval(item))   # 將字符串轉(zhuǎn)成字典if d['id']!= student_id:  # 判斷是否與輸入的信息相等wfile.write(str(d)+'\n')  # 不相等,則寫入d字典中else:flag = True  # 相等則執(zhí)行刪除操作if flag==1:print(f'id為{student_id}的學(xué)生信息已被刪除')else:print(f'沒有找到id為{student_id}的學(xué)生信息')else:  # 文件不存在print('無學(xué)生信息')breakshow()  # 刪除之后重新顯示全部學(xué)生信息answer = input('是否繼續(xù)刪除學(xué)生信息?y/n\n')if answer == 'y':continueelse:break
def modify():  # 定義modify()函數(shù),修改學(xué)生信息show()if os.path.exists(filename):with open(filename,'r',encoding='UTF-8') as rfile:student_old = rfile.readlines()  # readlines() 函數(shù)用于讀取文件中的所有行,然后將起放入創(chuàng)建的列表中else:return # 文件不存在,結(jié)束函數(shù)student_id = input('請輸入需要修改學(xué)生的id:')if student_id != '':if os.path.exists(filename):with open(filename,'w',encoding='UTF-8') as wfile:for item in student_old:d = dict(eval(item))if d['id']  == student_id:print('找到學(xué)生相關(guān)信息,可以修改他的相關(guān)信息了!!!')while True:try:d['name'] = input('請輸入名字:')d['english'] = input('請輸入英語成績:')d['python']  = input('請輸入python成績:')d['java']   = input('請輸入java成績')except:print('輸入有誤,請重新輸入')  # 如果輸入有誤,則會(huì)繼續(xù)執(zhí)行while trueelse:break# 如果都沒輸入錯(cuò)誤,則使用write寫入wfile.write(str(d)+'\n')print('修改成功')# 一些學(xué)生被修改,還有一些未修改的學(xué)生,也就是id不相等的else:wfile.write(str(d)+'\n')answer = input('是否繼續(xù)修改其他學(xué)生的信息?y/n\n')if answer=='y':modify()  # 在函數(shù)里面調(diào)用函數(shù)def sort():    # 定義sort()函數(shù),對學(xué)生成績進(jìn)行排序show()if os.path.exists(filename):with open(filename,'r',encoding='UTF-8') as rfile:student_list = rfile.readlines()student_new = []for item in student_list:d = dict(eval(item))student_new.append(d)else:return# 共有升序和降序兩種排序方式,手動(dòng)輸入asc_or_desc = input('請選擇(0.升序 1.降序)')if asc_or_desc=='0':asc_or_desc_bool = Falseelif asc_or_desc=='1':asc_or_desc_bool = Trueelse:print('您的輸入有誤,請重新輸入')sort()mode = input('請選擇排序方式(1.英語成績排序 2.python成績排序 3.java成績排序 0.總成績排序)')if mode=='1':student_new.sort(key=lambda x:int(x['english']),reverse=asc_or_desc_bool)elif mode =='2':student_new.sort(key=lambda x:int(x['python']),reverse=asc_or_desc_bool)elif mode =='3':student_new.sort(key=lambda x:int(x['java']),reverse=asc_or_desc_bool)elif mode =='0':student_new.sort(key=lambda x:int(x['english'])+int(x['python'])+int(x['java']),reverse=asc_or_desc_bool)else:print('您的輸入有誤,請重新輸入')sort()show_student(student_new)
def total():   # 定義total()函數(shù),統(tǒng)計(jì)學(xué)生總?cè)藬?shù)if os.path.exists(filename):with open(filename,'r',encoding='UTF-8') as rfile:students = rfile.readlines()if students:print(fr'一共有{len(students)}名學(xué)生')else:print('尚未錄入學(xué)生信息')
def show():    # 定義show()函數(shù),顯示所有學(xué)生的信息student_lst = []if os.path.exists(filename):with open(filename,'r',encoding='UTF-8') as rfile:students = rfile.readlines()for item in students:student_lst.append(eval(item))if student_lst:show_student(student_lst)else:print('尚未錄入學(xué)生信息!!!')
if __name__ == '__main__':main()
http://www.risenshineclean.com/news/9715.html

相關(guān)文章:

  • 鄂州網(wǎng)站開發(fā)微信朋友圈推廣
  • 網(wǎng)站功能板塊廣州做網(wǎng)站的公司哪家好
  • 廣州做蛋糕的網(wǎng)站推廣策略可以分為哪三種
  • 臺山網(wǎng)站建設(shè)口碑營銷的例子
  • 九脈堂是做網(wǎng)站的優(yōu)化大師win10
  • 東莞做營銷型網(wǎng)站的關(guān)鍵詞首頁排名代發(fā)
  • 對網(wǎng)站建設(shè)的認(rèn)識百度手機(jī)
  • 手機(jī)網(wǎng)站開發(fā)公司關(guān)鍵詞簡譜
  • 東莞大朗網(wǎng)站建設(shè)湖南網(wǎng)站推廣公司
  • 如何建設(shè)網(wǎng)站 企業(yè)做一個(gè)私人網(wǎng)站需要多少錢
  • 美女做曖曖免費(fèi)視頻網(wǎng)站公司網(wǎng)站建設(shè)價(jià)格
  • 廈門本地網(wǎng)站上海網(wǎng)絡(luò)seo
  • 南京代辦公司注冊需要費(fèi)用如何優(yōu)化網(wǎng)絡(luò)延遲
  • 重慶網(wǎng)站建設(shè)哪里有推廣引流的10個(gè)渠道
  • 站長工具問答網(wǎng)站個(gè)人網(wǎng)站設(shè)計(jì)內(nèi)容
  • 企業(yè)網(wǎng)站建設(shè)的基本內(nèi)容產(chǎn)品推廣活動(dòng)策劃方案
  • 備案密碼找回seo優(yōu)化方案
  • 學(xué)做糕點(diǎn)的網(wǎng)站谷歌瀏覽器搜索引擎入口
  • 深圳企業(yè)網(wǎng)站建設(shè)價(jià)格快手作品免費(fèi)推廣軟件
  • 個(gè)性化定制服務(wù)的網(wǎng)站有哪些網(wǎng)站優(yōu)化要做哪些
  • 黃梅那里有做網(wǎng)站的seo關(guān)鍵詞排名優(yōu)化要多少錢
  • 網(wǎng)站定制 div css 手工怎么給客戶推廣自己的產(chǎn)品
  • 高端網(wǎng)站建設(shè)知識他達(dá)那非副作用太強(qiáng)了
  • 服務(wù)好的成都網(wǎng)站建設(shè)競價(jià)托管運(yùn)營哪家好
  • 蘇州正規(guī)網(wǎng)站制作公司關(guān)鍵詞排名推廣怎么做
  • 建設(shè)網(wǎng)站的意義 作用seo計(jì)費(fèi)系統(tǒng)開發(fā)
  • 開一個(gè)網(wǎng)站建設(shè)公司有站點(diǎn)網(wǎng)絡(luò)營銷平臺
  • wordpress可以管理現(xiàn)有網(wǎng)啊深圳網(wǎng)站優(yōu)化推廣方案
  • 福鼎市建設(shè)局網(wǎng)站新聞?lì)^條今日新聞60條
  • 南昌網(wǎng)站建設(shè)多少錢seo查詢愛站