您好,登錄后才能下訂單哦!
使用python怎么制作一個(gè)學(xué)生信息管理系統(tǒng)?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
Python主要應(yīng)用于:1、Web開(kāi)發(fā);2、數(shù)據(jù)科學(xué)研究;3、網(wǎng)絡(luò)爬蟲(chóng);4、嵌入式應(yīng)用開(kāi)發(fā);5、游戲開(kāi)發(fā);6、桌面應(yīng)用開(kāi)發(fā)。
本程序需要用到os模板首先導(dǎo)入,并命名要存儲(chǔ)信息的文件
import os File_Object_Name = 'Student_Inforation.txt'
def Main(): while True: Menu() _Select = int(input('Please select operation:')) if _Select in [0, 1, 2, 3, 4, 5, 6, 7]: if _Select == 0: _Answer = input('Do you want to log out?(Y/N)') if _Answer == 'Y' or _Answer == 'y': print('Thank for you use!!!') break pass else: continue pass pass elif _Select == 1: Insert_Infor() pass elif _Select == 2: Search_Infor() pass elif _Select == 3: Delete_Infor() pass elif _Select == 4: Change_Infor() pass elif _Select == 5: Sort() pass elif _Select == 6: Count_Total_Num() pass elif _Select == 7: Show_Infor() pass pass else: print('Error Input!!!') pass
def Menu(): print('=========Student Information Management System=========') print('---------------------Function menu---------------------') print(' 1、Input Student Information') print(' 2、Search Student Information') print(' 3、Delete Student Information') print(' 4、Change Student Information') print(' 5、Sort According to Score') print(' 6、Count Total Student Number') print(' 7、Show All Student Information') print(' 0、Log Out') print('-------------------------------------------------------') pass
def Insert_Infor(): Student_Infor_List = [] # 創(chuàng)建一個(gè)學(xué)生信息空列表,后面會(huì)用到 while True: Stu_Id = input('Please input the id(such as 1001,1002):') if not Stu_Id: # 空的字符串轉(zhuǎn)為bool類(lèi)型為False,非空為T(mén)rue,此處若是輸入為空會(huì)直接跳出循環(huán)。(空列表、字典、元組等都滿足) break pass Stu_Name = input('Please input the name:') if not Stu_Name: break pass try: English_Score = int(input('Please input the English score:')) Python_Score = int(input('Please input the Python score:')) Java_Score = int(input('Please input the Java score:')) pass except: print('Error Input(not int),please input again') continue pass # 將每個(gè)學(xué)生的信息放入一個(gè)字典當(dāng)中 Student_Infor_Dict = {'Id': Stu_Id, 'Name': Stu_Name, 'English': English_Score, 'Python': Python_Score, 'Java': Java_Score} # 將一個(gè)字典作為一個(gè)元素放入學(xué)生信息列表 Student_Infor_List.append(Student_Infor_Dict) # 使用 append() 方法來(lái)添加列表項(xiàng) _Answer = input('Whether to input more?(Y/N)') if _Answer == 'Y' or _Answer == 'y': continue pass else: break pass pass # 將學(xué)生信息列表中的字典元素保存到文件之中,調(diào)用Keep_Infor()函數(shù) Keep_Infor(Student_Infor_List) print('Input Finished') pass
def Keep_Infor(List): File_Object = open(File_Object_Name, mode='a', encoding='utf-8') # 打開(kāi)一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。也就是說(shuō),新的內(nèi)容將會(huì)被寫(xiě)入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫(xiě)入。 for item in List: File_Object.write(str(item)+'\n') pass # 將傳入的列表中的字典元素強(qiáng)制轉(zhuǎn)換成字符串類(lèi)型并拼接上換行符寫(xiě)入文件 File_Object.close()
def Search_Infor(): Student_Query = [] # 空列表,之后用于存放查找到的學(xué)生信息 while True: Student_Id = '' Student_Name = '' if os.path.exists(File_Object_Name): # os.path模塊主要用于文件的屬性獲取,os.path.exists()就是判斷括號(hào)里的文件是否存在,括號(hào)內(nèi)的可以是文件路徑/名。 Search_Mode = int(input('search by id(1) or by name(2):')) if Search_Mode == 1: Student_Id = input('Please input id:') pass elif Search_Mode == 2: Student_Name = input('Please input name:') pass else: print('Error Input,try again!') Search_Infor() pass with open(File_Object_Name, 'r', encoding='utf-8')as File_Object: # 只讀模式打開(kāi)文件并將類(lèi)對(duì)象賦給File_Object Student_List = File_Object.readlines() # readlines()按行讀取,一次性讀取所有內(nèi)容,返回一個(gè)列表,每一行內(nèi)容作為一個(gè)元素 for item in Student_List: # 遍歷列表中元素 _Dict = eval(item) # 由于是以字符串類(lèi)型保存到文件中,此時(shí)item相當(dāng)于'dict'形式,要將其用eval()函數(shù)轉(zhuǎn)換為字典,即脫掉''。 if Student_Id: # 如果選的是按照姓名查找,則此空字符串已經(jīng)不再為空,bool類(lèi)型為T(mén)rue if Student_Id == _Dict['Id']: Student_Query.append(_Dict) pass pass elif Student_Name: if Student_Name == _Dict['Name']: Student_Query.append(_Dict) pass pass pass if Student_Query == []: # 仍為空說(shuō)明未找到。 print('no such student,try again') Search_Infor() # 再次調(diào)用函數(shù) pass pass pass else: print('Still no such file to keep student information!') pass print(Student_Query[0]) # 此時(shí)該列表中只有一個(gè)字典元素,直接打印輸出 Student_Query.clear() # 調(diào)用內(nèi)置函數(shù)清空列表,方便下次使用 _Answer = input('Whether to search others?(Y/N)') if _Answer == 'Y' or _Answer == 'y': continue pass else: return pass pass
def Delete_Infor(): while True: Student_Id = input('Please input the student‘s id that you want to delete:') if Student_Id: if os.path.exists(File_Object_Name): with open(File_Object_Name, 'r', encoding='utf-8')as File1: Old_Student_Infor = File1.readlines() # 讀取每行作為元素放入Old_Student_Infor列表 pass pass else: Old_Student_Infor = [] pass Flag = False # 是否刪除成功的標(biāo)志 if Old_Student_Infor: with open(File_Object_Name, 'w', encoding='utf-8')as File2: _Dict = {} for item in Old_Student_Infor: _Dict = eval(item) # 將刪除信息之前的列表元素轉(zhuǎn)化為字典形式賦給_Dict if _Dict['Id'] != Student_Id: File2.write(str(_Dict)+'\n') # 如果與要?jiǎng)h除的信息的Id不同,覆蓋寫(xiě)入原文件 pass else: Flag = True # 如果相同的話,則不寫(xiě)入文件中,相當(dāng)于刪除成功 pass pass if Flag: print('Student information of {} has been delete'.format(Student_Id)) pass else: print('Can not find student of id:{}'.format(Student_Id)) pass pass pass else: print('file have no student information') break pass Show_Infor() _Answer = input('Whether to delete more?(Y/N)') pass if _Answer == 'Y' or _Answer == 'y': continue pass else: break pass pass pass
def Change_Infor(): Show_Infor() if os.path.exists(File_Object_Name): with open(File_Object_Name, 'r', encoding='utf-8')as old_file: Old_Student_Infor = old_file.readlines() pass pass else: return Student_Id = input('Please input the id you wanna change:') if Student_Id: with open(File_Object_Name, 'w', encoding='utf-8')as new_file: for item in Old_Student_Infor: _dict = dict(eval(item)) if _dict['Id'] == Student_Id: print('Find it,can change it!') while True: try: _dict['Name'] = input('Please input new name:') _dict['English'] = input('Please input new English score:') _dict['Python'] = input('Please input new Python score:') _dict['Java'] = input('Please input new Java score:') pass except: print('Error Input!!!Try again') pass new_file.write(str(_dict)+'\n') print('Successfully change!') break pass pass else: print('Can‘t find it') new_file.write(str(_dict)+'\n') pass pass pass pass _Answer = input('Whether to change more?(Y/N)') if _Answer == 'y' or _Answer == 'Y': Change_Infor() pass else: return pass
def Show_Infor(): Infor_List = [] if os.path.exists(File_Object_Name): with open(File_Object_Name, 'r', encoding='utf-8')as File_Object: Stu_List = File_Object.readlines() for item1 in Stu_List: Infor_List.append(dict(eval(item1))) pass if Infor_List: for item2 in Infor_List: print(item2) pass pass else: print('no student') pass pass pass else: print('no such file') pass pass
def Sort(): Show_Infor() Infor_List = [] if os.path.exists(File_Object_Name): with open(File_Object_Name, 'r', encoding='utf-8')as File_Object: Student_List = File_Object.readlines() for item in Student_List: _Dict = dict(eval(item)) Infor_List.append(_Dict) pass pass pass else: print('no such file') return Sort_Mode = bool(input('Please input sort mode(0、ascending order|1、descending order)')) if not Sort_Mode: # ascending order reverse_mode = True pass else: # descending order reverse_mode = False pass Specific_Sort_Mode = int(input('Sort by English(1),by Python(2),by Jave(3),by total(4):')) if Specific_Sort_Mode == 1: Infor_List.sort(key=lambda x: int(x['English']), reverse=reverse_mode) pass elif Specific_Sort_Mode == 2: Infor_List.sort(key=lambda x: int(x['Python']), reverse=reverse_mode) pass elif Specific_Sort_Mode == 3: Infor_List.sort(key=lambda x: int(x['Java']), reverse=reverse_mode) pass elif Specific_Sort_Mode == 4: Infor_List.sort(key=lambda x: int(x['English']) + int(x['Python']) + int(x['Java']), reverse=reverse_mode) pass else: print('Error Input,try again') Sort() pass for item in Infor_List: print(item) pass pass
sort()函數(shù)原型: list.sort(key=None, reverse=False)
key參數(shù) :
key接受的是一個(gè)只有一個(gè)形參的函數(shù),形式如下
def f(a):
return len(a)
key接受的函數(shù)返回值,表示此元素的權(quán)值,sort將按照權(quán)值大小進(jìn)行排序
reverse參數(shù) :
reverse接受的是一個(gè)bool類(lèi)型的值 (Ture or False),表示是否顛倒排列順序,一般默認(rèn)的是False
def Count_Total_Num(): if os.path.exists(File_Object_Name): with open(File_Object_Name, 'r', encoding='utf-8')as File_Object: Stu_List = File_Object.readlines() _Count = len(Stu_List) if _Count >= 2: print('A total of {} students') pass elif _Count ==1: print('A single student!') pass else: print('no student!') pass pass pass else: print('still no such file!') pass pass
Main()
1.cmd進(jìn)入command界面
2.輸入pip install PyInstaller
3.安裝完成后仍在cmd界面輸入pyinstaller -F py為擴(kuò)展名的文件路徑\文件名.py
4.操作后將會(huì)有一大串代碼,倒數(shù)第二行會(huì)有最終文件的保存地址,打開(kāi)之后將之前編譯程序生成的txt文件移入該文件夾中即可操作
關(guān)于使用python怎么制作一個(gè)學(xué)生信息管理系統(tǒng)問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。