python實現簡易的學生信息管理系統
本文實例為大傢分享瞭python實現簡易學生信息管理系統的具體代碼,供大傢參考,具體內容如下
一、系統功能
1.錄入學生信息
2.查找學生信息
3.修改學生信息
4.刪除學生信息
5.成績排序
6.統計學生總人數
7.顯示所有學生信息
0.退出系統
二、系統開發環境
1.操作系統:win7
2.開發工具:PyCharm
3.Python內置模塊:os,re
三、實現代碼
import os filename='students.txt' def main(): while True: menum() choice=int(input('請選擇功能:')) if choice in [0,1,2,3,4,5,6,7]: if choice==0: answer=input('您確定要退出系統嗎?(y/n)') if answer=='y' or answer=='Y': print('感謝您的使用!') break #退出while循環並退出系統 else: continue elif choice == 1: insert() #錄入學生信息 elif choice == 2: search() #查找學生信息 elif choice == 3: delete() #刪除學生信息 elif choice == 4: modify() #修改學生信息 elif choice == 5: sort() #成績排序 elif choice == 6: total() #統計學生總人數 elif choice == 7: show() #顯示所有學生信息 def insert(): student_list=[] #用於存儲學生信息,列表每個元素是字典。 while True: id=input('請輸入學生ID:') if not id: break name=input('請輸入學生姓名:') if not name: break try: Englist=int(input('請輸入英語成績:')) Python=int(input('請輸入Python成績:')) Java=int(input('請輸入Java成績:')) except: print('輸入無效,不是整數類型,請重新輸入!') continue #將錄入的學生信息保存到字典中 student={'id':id,'name':name,'English':Englist,'Python':Python,'Java':Java} #將學生信息添加到列表中 student_list.append(student) answer=input('是否繼續添加?(y/n)') if answer=='y' or answer=='Y': continue else: break #將學生信息保存在文件中 save(student_list) print('學生信息錄入完畢!') pass def search(): student_query=[] #用列表存儲,防止有同名學生。 while True: id='' name='' if os.path.exists(filename): mode=input('按ID查找請輸入1,按姓名查找請輸入2:') if mode == '1': id=input('請輸入要查找的學生ID:') elif mode == '2': name=input('請輸入要查找的學生姓名:') else: print('您的輸入有誤,請重新輸入!') search() with open(filename,'r',encoding='utf-8') as rfile: student=rfile.readlines() for item in student: d=dict(eval(item)) if id!='': if d['id']==id: student_query.append(d) elif name!='': if d['name']==name: student_query.append(d) #顯示查詢結果 show_student(student_query) student_query.clear() #清空列表 answer=input('是否要繼續查詢?(y/n)') if answer=='y' or answer=='Y': continue else: break else: print('暫未保存學生信息。') return pass def delete(): while True: student_id=input('請輸入要刪除的學生ID:') if student_id != '': if os.path.exists(filename): #判斷文件是否存在 with open(filename,'r',encoding='utf-8') as file: student_old=file.readlines() #讀取所有學生信息並保存在列表中 else: student_old=[] flag=False #用於標記是否刪除 if student_old: with open(filename,'w',encoding='utf-8') as wfile: d={} for item in student_old: #遍歷學生信息列表 d=dict(eval(item)) #將字符串轉成字典 if d['id']!=student_id: wfile.write(str(d)+'\n') else: flag=True if flag: print(f'id為{student_id}的學生信息已被刪除') else: print(f'沒有找到ID為{student_id}的學生信息') else: print('無此學生信息') break show() #刪完之後重新顯示所有學生信息 answer=input('是否繼續刪除?(y/n)') if answer=='y' or answer=='Y': continue else: break pass def modify(): show() if os.path.exists(filename): #判斷文件是否存在 with open(filename,'r',encoding='utf-8') as rfile: student_old=rfile.readlines() else: return #結束函數 student_id=input('請輸入要修改信息的學生ID:') with open(filename,'w',encoding='utf-8') as wfile: for item in student_old: d=dict(eval(item)) if d['id']==student_id: print('找到此學生信息,可以修改。') while True: try: d['name']=input('請輸入學生姓名:') d['English']=input('請輸入English成績:') d['Python']=input('請輸入Python成績:') d['Java']=input('請輸入Java成績:') except: print('您的輸入有誤請重新輸入!') else: break wfile.write(str(d)+'\n') print('修改成功!') else: wfile.write(str(d)+'\n') answer=input('是否繼續修改其他學生信息?(y/n)') if answer=='y': modify() pass def sort(): 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 asc_or_desc=input('請選擇(0:升序,1:降序):') if asc_or_desc=='0': asc_or_desc_bool=False elif asc_or_desc=='1': asc_or_desc_bool=True else: print('您的輸入有誤,請重新輸入!') sort() mode=input('請選擇排序方式(0:按總成績排序,1:按English成績排序,2:按Python成績排序,3:按Java成績排序)') if mode=='0': student_new.sort(key=lambda x: int(x['English'])+int(x['Python'])+int(x['Java']), reverse=asc_or_desc_bool) elif 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) else: print('您的輸入有誤,請重新輸入!') sort() show_student(student_new) pass def total(): if os.path.exists(filename): with open(filename,'r',encoding='utf-8') as rfile: students=rfile.readlines() if students: print(f'一共有{len(students)}名學生') else: print('還沒有錄入學生信息!') else: print('暫未保存學生信息......') pass def show(): 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('暫未保存過數據!') pass def save(stu_list): try: stu_txt=open(filename,'a',encoding='utf=8') except: stu_txt=open(filename,'w',encoding='utf-8') for item in stu_list: stu_txt.write(str(item)+'\n') stu_txt.close() def show_student(lst): if len(lst)==0: print('沒有查到學生信息,無數據顯示!') return #定義標題顯示格式 format_title='{:^6}\t{:^12}\t{:^10}\t{:^10}\t{:^10}\t{:^8}' print(format_title.format('ID','姓名','English成績','Python成績','Java成績','總成績')) #定義內容顯示格式 format_data='{:^6}\t{:^12}\t{:^10}\t{:^18}\t{:^14}\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'),str(int(item.get('English'))+int(item.get('Python'))+int(item.get('Java'))))) pass def menum(): print('-------------------學生信息管理系統--------------------') print('-----------------------功能菜單------------------------') print(' 1.錄入學生信息') print(' 2.查找學生信息') print(' 3.刪除學生信息') print(' 4.修改學生信息') print(' 5.成績排序') print(' 6.統計學生總人數') print(' 7.顯示所有學生信息') print(' 0.退出系統') print('------------------------------------------------------') main()
四、項目打包並生成.exe可執行文件
1.安裝第三方模塊,打開dos窗口,輸入:pip install PyInstaller並回車,
2.輸入:pyinstaller -F 程序文件具體位置,
3.回車後即可在輸出內容的倒數第二行看到.exe文件的位置。
以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。
推薦閱讀:
- 用python實現學生信息管理系統
- Python實現簡單的學生信息管理系統
- python實現學生管理系統源碼
- python實現學生信息管理系統(面向對象)
- python 管理系統實現mysql交互的示例代碼