程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

用Python編寫學生成績計算系統

編輯:Python
舉一個簡單的例子,大學裡面的成績我們都知道,不是一錘定音,而是有很多成績然後占比不同,最後才會有總評成績,所以注重細節才是最重要的!下面我們就來看看這個吧!
項目需求:有一份CSV文件裡面包含很多學生的成績(很多平時成績,還有姓名,學號),這個程序要做的是,利用規定好的算法和規則,把總評成績計算出來,然後排名,打印出每個階段的成績信息作為教研改革。同時必須輸出好看,寫入TXT文件文件!
涉及知識:Python全部語法!
項目特點:格式化了打印,使得輸出比較好看直觀,函數結構化,幫助代碼閱讀,項目可移植,簡單易懂
解析文件
def csv_students():
 global student_infos
 import csv
 student_infos = []
 with open(r"成績詳細.csv", encoding='utf-8-sig') as file:#將你的CSV文件和該程序文件放在一個文件夾下面
 f_csv = csv.reader(file)
 header = next(f_csv)
 for row in f_csv:
 student_info = {}
 for index in range(6):
 student_info[header[index]] = row[index]
 student_infos.append(student_info)
 # 格式化打印函數,使其輸出自動對齊
 add_print1()

將其文件解析,然後以字典的形式展示,但是這裡優化了代碼,使得打印好看。這裡我們導入的CSV這個庫,對於它的一些屬性操作語法,我們可以百度看看。首先
我們建立了一個列表用於後面我們存儲字典所有,然後打開了這個文件,並用.reader()讀取表頭信息,然後將這個表頭取出來,這樣方便我們後續操作.next()
之後我們用循環創建字典,每個字典裡面的鍵和值都是我們自己加上的。6各標題,6個信息,我們就完成鍵和值的匹配,這樣就完整的創建了一個字典,最後直到我們完全讀取了這些東西,循環才結束。
實現效果:

計算成績
def scores_students():
 for scores in student_infos:
 total = float(scores["實驗1"]) * 1 / 10 + float(scores["實驗2"]) * 1 / 10 + \
 float(scores["實驗3"]) * 2 / 10 + float(scores["期末成績"]) * 6 / 10
 scores["總評成績"] = total
 # 根據總評成績進行排名,並打印出來(附加功能)
 student_infos.sort(key=lambda item: item["總評成績"], reverse=True)
 i = 0
 for score in student_infos:
 i += 1
 score["班級排名"] = i
 add_print2()
 import json
 # 將解析後的CSV文件,轉換為python對象,並儲存在一個文件裡面(附加功能)
 with open(r"student.txt", "w", encoding="utf_8") as file:
 json.dump(student_infos, file, ensure_ascii=False, indent=0)



分段打印
def grad_students():
 num1 = 0
 num2 = 0
 num3 = 0
 num4 = 0
 num5 = 0
 for scores in student_infos:
 grade = float(scores["總評成績"])
 if grade < 60:
 num1 += 1
 elif grade >= 60 and grade < 70:
 num2 += 1
 elif grade >= 70 and grade < 80:
 num3 += 1
 elif grade >= 80 and grade < 90:
 num4 += 1
 elif grade >= 90 and grade <= 100:
 num5 += 1
 all = int(num1 + num2 + num3 + num4 + num5)
 print(&quot;\t總的人數有%s人&quot; % (all))
 # 打印出分數段人數和所占比
 print(&quot;\t[0, 60)的有 {}人 &quot;.format(num1), &quot;\t占比為{}&quot;.format(str(num1 / all * 100)[:4] + &quot;%&quot;))
 print(&quot;\t[60,70)的有{}人&quot;.format(num2), &quot;\t占比為{}&quot;.format(str(num2 / all * 100)[:4] + &quot;%&quot;))
 print(&quot;\t[70,80)的有{}人&quot;.format(num3), &quot;\t占比為{}&quot;.format(str(num3 / all * 100)[:4] + &quot;%&quot;))
 print(&quot;\t[80,90)的有{}人&quot;.format(num4), &quot;\t占比為{}&quot;.format(str(num4 / all * 100)[:4] + &quot;%&quot;))
 print(&quot;\t[90,100]的有{}人&quot;.format(num5), &quot;\t占比為{}&quot;.format(str(num5 / all * 100)[:4] + &quot;%&quot;))


查找學生
def find_students():
 while True:
 study_num = input(&quot;請輸入您要查找的學號: &quot;)
 for score in student_infos:
 if score[&quot;學號&quot;] == study_num:
 print(&quot;姓名:&quot;, score[&quot;姓名&quot;], &quot;學號:&quot;, score[&quot;學號&quot;], &quot;實驗1:&quot;,
 score[&quot;實驗1&quot;], &quot;實驗2:&quot;, score[&quot;實驗2&quot;], &quot;實驗3:&quot;,
 score[&quot;實驗3&quot;], &quot;期末成績:&quot;, score[&quot;期末成績&quot;], &quot;總評成績:&quot;,
 score[&quot;總評成績&quot;], &quot;班級排名:&quot;, score[&quot;班級排名&quot;])
 continue




這樣結束了,當然這裡我們叫做後端開發項目,一般我們手機或者教務系統裡面的我們叫做圖形界面操作開發,這個就需要我們後面的知識了。
點擊此處下載源碼進行操作!!!
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved