Python實現學產生績管理系統,python
本文執行個體為大家分享了Python實現學產生績管理系統的具體代碼,供大家參考,具體內容如下
準系統:
輸入並儲存學生的資訊:通過輸入學生的學號、姓名、和分數,然後就可以把資料儲存在建立的student檔案裡面。
列印學生的所有資訊:通過一個列印函數就可以把所有的資訊列印在螢幕上。
修改學生資訊:這個功能首先通過查詢功能查詢出該學生是否存在,如果存在就對該學生的資訊進行修改,如果不存在則返回到主介面。
刪除學生資訊:該功能是對相應的學生進行刪除操作,如果學生存在就尋找到進行刪除。
按學產生績進行排序: 這個功能是按照學生的成績進行排序,對學生的資訊進行操作。
尋找學生資訊:這個功能通過輸入學號,尋找該學生的資訊,如果有該學號就輸出該學生的資訊,沒有該學號就提示輸入的學號不存在。
初始化功能
系統在開始使用之前先進行初始化功能,判斷students.txt檔案中是否儲存的有學生的資訊,如果有就把檔案的內容讀取出來,供接下來的操作使用,如用沒有就初始化一個空的列表,用來儲存使用者的輸入,程式中接下來的所有資料都會儲存在該列表中相當與一個資料緩衝區。
首先是開啟檔案操作,對檔案中的內容進行讀取操作,由於在檔案中儲存的內容是由空格進行分割的,並且每一個學生的資訊都佔用一行,首先讀出所有的內容,先進行按照換行進行分割,得到每個人的資訊,然後再對每個人的資訊進行安裝空格分隔,得到每個人的詳細資料包括使用者的姓名,學號,成績。
def Init(stulist): #初始化函數 print "初始化......" file_object = open('students.txt', 'r') for line in file_object: stu = Student() line = line.strip("\n") s = line.split(" ") stu.ID = s[0] stu.name = s[1] stu.score = s[2] stulist.append(stu) print "初始化成功!"
成績排序實現
這部分代碼是按照學產生績的高低進行排序,在實現的時候,首先是把所有人的成績放到一個列表裡面然後使用插入排序,按照成績的大小對StuList中儲存的學生資訊的地址進行排序
def Sort(stulist): #按學產生績排序 Stu = [] sum_count = [] for li in stulist: temp = [] temp.append(li.ID) temp.append(li.name) temp.append(int(li.score1)) temp.append(int(li.score2)) temp.append(int(li.score3)) temp.append(int(li.sum)) sum_count.append(int(li.sum)) Stu.append(temp) #print sum_count #print Stu; #print stulist insertSort(sum_count, stulist) #print stulist; display(stulist)def insertSort(a, stulist): for i in range(len(a)-1): #print a,i for j in range(i+1,len(a)): if a[i]<a[j]: temp = stulist[i] stulist[i] = stulist[j] stulist[j] = temp
介面如下:
源碼:
# -*- coding: UTF-8 -*-import osimport reimport numpy as npclass Student: #定義一個學生類 def __init__(self): self.name = '' self.ID ='' self.score1 = 0 self.score2 = 0 self.score1 = 0 self.sum = 0def searchByID(stulist, ID): #按學號尋找看是否學號已經存在 for item in stulist: if item.ID == ID: return Truedef Add(stulist,stu): #添加一個學生資訊 if searchByID(stulist, stu.ID) == True: print"學號已經存在!" return False stulist.append(stu) print stu.name,stu.ID, stu.score1, stu.score2, stu.score3, stu.sum; print "是否要儲存學生資訊?" nChoose = raw_input("Choose Y/N") if nChoose == 'Y' or nChoose == 'y': file_object = open("students.txt", "a") file_object.write(stu.ID) file_object.write(" ") file_object.write(stu.name) file_object.write(" ") file_object.write(str(stu.score1)) file_object.write(" ") file_object.write(str(stu.score2)) file_object.write(" ") file_object.write(str(stu.score3)) file_object.write(" ") file_object.write(str(stu.sum)) file_object.write("\n") file_object.close() print u"儲存成功!"def Search(stulist, ID): #搜尋一個學生資訊 print u"學號 姓名 語文 數學 英語 總分" count = 0 for item in stulist: if item.ID == ID: print item.ID, '\t' ,item.name,'\t', item.score1,'\t',item.score2, '\t', item.score3, '\t',item.sum break count = 0 if count == len(stulist): print "沒有該學生學號!"def Del(stulist, ID): #刪除一個學生資訊 count = 0 for item in stulist: if item.ID == ID: stulist.remove(item) print "刪除成功!" break count +=1 # if count == len(stulist): # print "沒有該學生學號!" file_object = open("students.txt", "w") for stu in stulist: print stu.ID, stu.name, stu.score1,stu.score2, stu.score3, stu.sum file_object.write(stu.ID) file_object.write(" ") file_object.write(stu.name) file_object.write(" ") file_object.write(str(stu.score1)) file_object.write(" ") file_object.write(str(stu.score2)) file_object.write(" ") file_object.write(str(stu.score3)) file_object.write(" ") file_object.write(str(stu.sum)) file_object.write("\n") file_object.close() # print "儲存成功!" file_object.close()def Change(stulist, ID): count = 0 for item in stulist: if item.ID == ID: stulist.remove(item) file_object = open("students.txt", "w") for stu in stulist: #print li.ID, li.name, li.score file_object.write(stu.ID) file_object.write(" ") file_object.write(stu.name) file_object.write(" ") file_object.write(str(stu.score1)) file_object.write(" ") file_object.write(str(stu.score2)) file_object.write(" ") file_object.write(str(stu.score3)) file_object.write(" ") file_object.write(str(stu.sum)) file_object.write("\n") # print "儲存成功!" file_object.close() stu = Student() stu.name = raw_input("請輸入學生的姓名") while True: stu.ID = raw_input("請輸入學生的ID") p = re.compile('^[0-9]{3}$') if p.match(stu.ID): break else: print "輸入的有錯誤!" while True: stu.score1 = int(raw_input("請輸入學生語文成績")) if stu.score1 <= 100 and stu.score1 > 0 : break else: print "輸入的學產生績有錯誤!" while True: stu.score2 = int(raw_input("請輸入學生數學成績")) if stu.score2 <= 100 and stu.score2 > 0 : break else: print "輸入的學產生績有錯誤!" while True: stu.score3 = int(raw_input("請輸入學生英語成績")) if stu.score3 <= 100 and stu.score3 > 0 : break else: print "輸入的學產生績有錯誤!" stu.sum = stu.score1 + stu.score2 + stu.score3 Add(stulist,stu)def display(stulist): #顯示所有學生資訊 print u"學號 姓名 語文 數學 英語 總分" for item in stulist: print item.ID, '\t' ,item.name,'\t', item.score1,'\t',item.score2, '\t', item.score3, '\t',item.sumdef Sort(stulist): #按學產生績排序 Stu = [] sum_count = [] for li in stulist: temp = [] temp.append(li.ID) temp.append(li.name) temp.append(int(li.score1)) temp.append(int(li.score2)) temp.append(int(li.score3)) temp.append(int(li.sum)) sum_count.append(int(li.sum)) Stu.append(temp) #print sum_count #print Stu; #print stulist insertSort(sum_count, stulist) #print stulist; display(stulist)def insertSort(a, stulist): for i in range(len(a)-1): #print a,i for j in range(i+1,len(a)): if a[i]<a[j]: temp = stulist[i] stulist[i] = stulist[j] stulist[j] = temp #return a def Init(stulist): #初始化函數 print "初始化......" file_object = open('students.txt', 'r') for line in file_object: stu = Student() line = line.strip("\n") s = line.split(" ") stu.ID = s[0] stu.name = s[1] stu.score1 = s[2] stu.score2 = s[3] stu.score3 = s[4] stu.sum = s[5] stulist.append(stu) file_object.close() print "初始化成功!" main()def main(): #主函數 該程式的入口函數 while True: print "*********************" print u"--------菜單---------" print u"增加學生資訊--------1" print u"尋找學生資訊--------2" print u"刪除學生資訊--------3" print u"修改學生資訊--------4" print u"所有學生資訊--------5" print u"按照分數排序--------6" print u"退出程式------------0" print "*********************" nChoose = raw_input("請輸入你的選擇:") if nChoose == "1": stu = Student() stu.name = raw_input("請輸入學生的姓名") while True: stu.ID = raw_input("請輸入學生的ID") p = re.compile('^[0-9]{3}$') if p.match(stu.ID): break else: print "輸入的有錯誤!" while True: stu.score1 = int(raw_input("請輸入學生語文成績")) if stu.score1 <= 100 and stu.score1 > 0 : break else: print "輸入的學產生績有錯誤!" while True: stu.score2 = int(raw_input("請輸入學生數學成績")) if stu.score2 <= 100 and stu.score2 > 0 : break else: print "輸入的學產生績有錯誤!" while True: stu.score3 = int(raw_input("請輸入學生英語成績")) if stu.score3 <= 100 and stu.score3 > 0 : break else: print "輸入的學產生績有錯誤!" stu.sum = stu.score1 + stu.score2 + stu.score3 Add(stulist,stu) if nChoose == '2': ID = raw_input("請輸入學生的ID") Search(stulist, ID) if nChoose == '3': ID = raw_input("請輸入學生的ID") Del(stulist, ID) if nChoose == '4': ID = raw_input("請輸入學生的ID") Change(stulist, ID) if nChoose == '5': display(stulist) if nChoose == '6': Sort(stulist) if nChoose == '0': breakif __name__ == '__main__': stulist =[]Init(stulist)
更多學習資料請關注專題《管理系統開發》。
以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援幫客之家。