網站首頁 編程語言 正文
本文實例為大家分享了python實現學生成績管理系統的具體代碼,供大家參考,具體內容如下
需求:
代碼:
import os filename = 'student.txt' def main(): ? ? while True: ? ? ? ? menu() ? ? ? ? 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 ? ? ? ? ? ? ? ? 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() ? ? ? ? ? ? else: ? ? ? ? ? ? ? ? show() # 菜單 def menu(): ? ? print("====================學生成績管理系統=========================") ? ? print("======================功能菜單==============================") ? ? print("\t\t1、錄入學生信息") ? ? print("\t\t2、查找學生信息") ? ? print("\t\t3、刪除學生信息") ? ? print("\t\t4、修改學生信息") ? ? print("\t\t5、排序") ? ? print("\t\t6、統計學生人數") ? ? print("\t\t7、顯示所有學生信息") ? ? print("\t\t0、退出系統") ? ? print("--------------------------------------------------------------") # 插入 def insert(): ? ? student_list=[] ? ? while True: ? ? ? ? id = input('請輸入ID(如1001):') ? ? ? ? if not id: ? ? ? ? ? ? break ? ? ? ? name = input('請輸入姓名:') ? ? ? ? if not name: ? ? ? ? ? ? break ? ? ? ? try: ? ? ? ? ? ? english=int(input("input english grade:")) ? ? ? ? ? ? python=int(input("input python grade:")) ? ? ? ? ? ? java=int(input("input java grade:")) ? ? ? ? except: ? ? ? ? ? ? print("輸入成績無效!重新輸入!") ? ? ? ? ? ? continue ? ? ? ? student = {'id':id,'name':name,'english':english,'python':python,'java':java} ? ? ? ? student_list.append(student) ? ? ? ? answer = input("是否繼續添加信息???:'y/n'") ? ? ? ? if answer == 'y': ? ? ? ? ? ? continue ? ? ? ? else: ? ? ? ? ? ? break ? ? # 調用save函數將其保存在文本當中 ? ? save(student_list) ? ? print("學生信息錄入成功!") # 保存 def save(lst): ? ? 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(): ? ? while True: ? ? ? ? student_name = input("請輸入你要查找的學生姓名:") ? ? ? ? if student_name: ? ? ? ? ? ? if os.path.exists(filename): ? ? ? ? ? ? ? ? with open(filename,'r',encoding='utf-8') as rfile: ? ? ? ? ? ? ? ? ? ? student_old = rfile.readlines() ? ? ? ? ? ? else: ? ? ? ? ? ? ? ? student_old = [] ? ? ? ? ? ? if student_old: ? ? ? ? ? ? ? ? d = {} ? ? ? ? ? ? ? ? flag = False ? ? ? ? ? ? ? ? for item in student_old: ? ? ? ? ? ? ? ? ? ? d = dict(eval(item)) ? ? ? ? ? ? ? ? ? ? if d['name'] == student_name: ? ? ? ? ? ? ? ? ? ? ? ? flag = True ? ? ? ? ? ? ? ? ? ? ? ? student_show(d) ? ? ? ? ? ? ? ? ? ? else: ? ? ? ? ? ? ? ? ? ? ? ? pass ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? else: ? ? ? ? ? ? ? ? print("無學生信息,請添加!") ? ? ? ? ? ? if flag: ? ? ? ? ? ? ? ? print("查詢成功") ? ? ? ? ? ? else: ? ? ? ? ? ? ? ? print("查詢失敗") ? ? ? ? else: ? ? ? ? ? ? print("沒有輸入學生姓名!") ? ? ? ?? ? ? ? ? answer = input("請問是否繼續查詢:y/n") ? ? ? ? if answer == "y": ? ? ? ? ? ? continue ? ? ? ? else: ? ? ? ? ? ? break # 展示個人信息 def student_show(dic): ? ? format_title = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^8}' ? ? print(format_title.format('ID','姓名','英語成績','python成績','java成績','總成績')) ? ? format_data = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^8}' ? ? print(format_data.format(dic.get('id'), ? ? ? ? ? ? ? ? ? ? ? ? ? ? dic.get('name'), ? ? ? ? ? ? ? ? ? ? ? ? ? ? dic.get('english'), ? ? ? ? ? ? ? ? ? ? ? ? ? ? dic.get('python'), ? ? ? ? ? ? ? ? ? ? ? ? ? ? dic.get('java'), ? ? ? ? ? ? ? ? ? ? ? ? ? ? int(dic.get('english'))+int(dic.get('python'))+int(dic.get('java')), ? ? ? ? ? ? ? ? ? ? ? ? ? ? )) # 刪除 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"{student_id}已經被刪除!") ? ? ? ? ? ? ? ? ? ? else: ? ? ? ? ? ? ? ? ? ? ? ? print(f"{student_id}沒有找到!") ? ? ? ? ? ? else: ? ? ? ? ? ? ? ? print("無學生信息!") ? ? ? ? ? ? ? ? break ? ? ? ? ? ? show() ? ? ? ? ? ? answer = input("是否繼續刪除?y/n") ? ? ? ? ? ? if answer == 'y': ? ? ? ? ? ? ? ? continue ? ? ? ? ? ? else: ? ? ? ? ? ? ? ? break ? ? ? ? else: ? ? ? ? ? ? print("請輸入要刪除的ID:") ? ? ? ? ? ? continue # 修改 ? ? ? def modify(): ? ? 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=[] ? ? ? ? ? ? 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: ? ? ? ? ? ? ? ? ? ? ? ? ? ? answer = input('已經找到該學生信息,是否修改:y/n?') ? ? ? ? ? ? ? ? ? ? ? ? ? ? flag = False ? ? ? ? ? ? ? ? ? ? ? ? ? ? if answer: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? d['name']=input("姓名:") ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? d['english']=int(input("english:")) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? d['python']=int(input("python:")) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? d['java']=int(input("java:")) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? wfile.write(str(d)+"\n") ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? flag = True ? ? ? ? ? ? ? ? ? ? ? ? ? ? else: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? wfile.write(str(d)+"\n") ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break ? ? ? ? ? ? ? ? ? ? ? ? else: ? ? ? ? ? ? ? ? ? ? ? ? ? ? wfile.write(str(d)+"\n") ? ? ? ? ? ? ? ? ? ? if flag: ? ? ? ? ? ? ? ? ? ? ? ? print("修改成功!") ? ? ? ? ? ? ? ? ? ? else: ? ? ? ? ? ? ? ? ? ? ? ? print("修改失??!") ? ? ? ? ? ? else: ? ? ? ? ? ? ? ? print("無學生信息,請添加") ? ? ? ? ? ? answer = input("請問是否繼續修改?y/n") ? ? ? ? ? ? if answer == "y": ? ? ? ? ? ? ? ? continue ? ? ? ? ? ? else: ? ? ? ? ? ? ? ? break ? ? ? ? else: ? ? ? ? ? ? print("輸入錯誤!") # 排序 ? ? ? ? ?? def sort(): ? ? while True: ? ? ? ? if os.path.exists(filename): ? ? ? ? ? ? with open(filename,'r',encoding='utf-8') as file: ? ? ? ? ? ? ? ? student_old = file.readlines() ? ? ? ? ? ? student_new = [] ? ? ? ? ? ? d={} ? ? ? ? ? ? for item in student_old: ? ? ? ? ? ? ? ? d=dict(eval(item)) ? ? ? ? ? ? ? ? student_new.append(d) ? ? ? ? ? ? asc_and_desc = int(input("怎么排序:0 升序 ?1 降序:")) ? ? ? ? ? ? choice = int(input("按照什么排序:1 english ?2 python ?3 java ?0 總成績:")) ? ? ? ? ? ? if choice == 1: ? ? ? ? ? ? ? ? student_new.sort(key=lambda x:int(x['english']),reverse=asc_and_desc) ? ? ? ? ? ? elif choice == 2: ? ? ? ? ? ? ? ? student_new.sort(key=lambda x:int(x['python']),reverse=asc_and_desc) ? ? ? ? ? ? elif choice == 3: ? ? ? ? ? ? ? ? ? student_new.sort(key=lambda x:int(x['java']),reverse=asc_and_desc) ? ? ? ? ? ? elif choice == 0: ? ? ? ? ? ? ? ? student_new.sort(key=lambda x:int(x['english'])+int(x['python'])+int(x['java']),reverse=asc_and_desc) ? ? ? ? ? ? else: ? ? ? ? ? ? ? ? print("輸入有誤") ? ? ? ? ? ? ? ? sort() ? ? ? ? else: ? ? ? ? ? ? print("無學生信息") ? ? ? ? format_title = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^8}' ? ? ? ? print(format_title.format('ID','姓名','英語成績','python成績','java成績','總成績')) ? ? ? ? format_data = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^8}' ? ? ? ? for dic in student_new: ? ? ? ? ? ? print(format_data.format(dic.get('id'), ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dic.get('name'), ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dic.get('english'), ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dic.get('python'), ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dic.get('java'), ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int(dic.get('english'))+int(dic.get('python'))+int(dic.get('java')), ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? )) ? ? ? ? answer = input("請問是否繼續排序?y/n") ? ? ? ? if answer == "y": ? ? ? ? ? ? continue ? ? ? ? else: ? ? ? ? ? ? break # 總人數 def total(): ? ? if os.path.exists(filename): ? ? ? ? with open(filename,'r',encoding='utf-8') as file: ? ? ? ? ? ? student_old = file.readlines() ? ? ? ? print('一共有',len(student_old),'名學生!') ? ? else: ? ? ? ? print("無人員資料") ? ? import msvcrt ? ? msvcrt.getch() # 展示 def show(): ? ? if os.path.exists(filename): ? ? ? ? with open(filename,'r',encoding='utf-8') as file: ? ? ? ? ? ? student_old = file.readlines() ? ? ? ? d = {} ? ? ? ? students = [] ? ? ? ? for item in student_old: ? ? ? ? ? ? d = dict(eval(item)) ? ? ? ? ? ? students.append(d) ? ? else: ? ? ? ? print("沒有信息!") ? ? if len(students): ? ? ? ? format_title = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^8}' ? ? ? ? print(format_title.format('ID','姓名','英語成績','python成績','java成績','總成績')) ? ? ? ? format_data = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^8}' ? ? ? ? for dic in students: ? ? ? ? ? ? print(format_data.format(dic.get('id'), ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dic.get('name'), ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dic.get('english'), ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dic.get('python'), ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dic.get('java'), ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int(dic.get('english'))+int(dic.get('python'))+int(dic.get('java')), ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? )) ? ? else: ? ? ? ? print("無人員信息!") ? ? import msvcrt ? ? msvcrt.getch() if __name__ == '__main__': ? ? main()
原文鏈接:https://blog.csdn.net/A444477/article/details/115464375
相關推薦
- 2022-07-12 Shell中常用的基礎命令
- 2022-04-15 Android開發Jetpack組件WorkManager用例詳解_Android
- 2022-09-29 C++?Vector迭代器失效問題的解決方法_C 語言
- 2022-10-22 Kotlin線程的橋接與切換使用介紹_Android
- 2022-04-23 C語言實現字符串轉浮點函數的示例_C 語言
- 2022-06-14 ASP.NET?Core?MVC中的標簽助手(TagHelper)用法_實用技巧
- 2022-04-21 python的變量和運算符你都知道多少_python
- 2022-06-01 Android調用外置攝像頭的方法_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支