python如何實現簡易的學生信息管理系統
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文件的位置。
關于 "python怎么實現簡易的學生信息管理系統" 就介紹到此。希望多多支持碩編程。