您好,登錄后才能下訂單哦!
python學生成績管理系統創建,供大家參考,具體內容如下
要求編寫學生類,班級類,并在電腦運行生成表單,輸入一個數字,得到對應的結果。
輸出樣式
代碼如下
學生類
class Student: def __init__(self,sno,name,english,math): self.sno=sno self.name=name self.__english=english self.__math=math @property def english(self): return self.__english @english.setter def english(self,english): self.__english=english if 0<=english<=100 else 0 @property def math(self): return self.__math @math.setter def math(self,math): self.__math=math if 0<=math<=100 else 0 def get_average(self): return (self.english+self.math)/2 def __str__(self): s=str.format('{0:>4d}{1: >4s}{2:>8d}{3:>8d}',self.sno,self.name,self.english,self.math) return s @staticmethod def get_header(): return '{0:>2s}{1: >4s}{2:\u3000>4s}{3: >4s}'.format('學號','姓名','英語','數學') def __eq__(self,other): return self.sno==other.sno def __gt__(self,other): return self.sno>other.sno
測試
#測試 if __name__=='__main__': s1=Student(1,'王大海',100, 65) s2=Student(2,'李三',38,45) s3=Student(3,'李四',88,45) print(s1>s2) students=[s2,s1,s3] students.sort() print(students) print(Student.get_header()) for s in students: print(s)
結果
班級類
from student import Student class BanJi: def __init__(self,name): self.name=name self.students=[] self.load_data() def load_data(self): with open('data.txt','r')as f: for line in f: d=line.split() self.students.append(Student(int(d[0]),d[1],int(d[2]),int(d[3]))) def show_student(self): print(Student.get_header()) for s in self.students: print(s) def add_student(self,student): if student in self.students: return '此學生已存在' else: self.students.append(student) return'添加成功' def __index_student(self,sno): s=Student(sno,'',0,0) if s not in self.students: return None else: return self.students.index(s) def find_student(self,sno): i = self.__index_student(sno) if i is None: return None else: return self.students[i] def delete_student(self,sno): i = self.__index_student(sno) if i is None: r = '沒有學號為{0: d}'.format(sno) else: del self.students[i] r = '刪除成功!' return r def update_student(self,sno): s = self.find_student(sno) if s is None: return '沒有學號為{0:d}的學生!'.format(sno) else: print(s) print('請輸入新的值,直接回車不修改!') name_str = input('姓名:') english_str = input('英語:') math_str = input('數學:') s.name = name_str if len(name_str)>0 else s.name s.name = int(english_str) if len(english_str)>0 else s.english s.name = int(math_str) if len(math_str)>0 else s.math return '修改成功!' def save_data(self): with open('data.txt','w',encoding = 'GBK') as f: for s in self.students: r = str.format('{0:d} {1:s} {2:d} {3:d}\n',s.sno,s.name,s.english,s.math) f.write(r) def sort_by_english(self,reverse = False): self.students.sort(key=lambda x: x.english,reverse = reverse)
學生管理系統
import os from student import Student from banji import BanJi menu = """ ********************* 學生成績管理系統 1.瀏覽學生成績 2.按學號查找學生 3.按英語成績排序 4.添加學生 5.刪除學生 6.修改學生信息 9.保存 0.退出 ********************* """ tip = '輸入(0-9)選擇操作:' choice = '' b = BanJi('1802') os.system('cls') print(menu) while True: choice = input(tip) os.system('cls') print(menu) if choice == '0': print('數據以保存!') break elif choice == '1': b.show_student() elif choice == '2': sno = int(input('請輸入您需要查詢的學生的學號:')) s = b.find_student(sno) if s is None: print('無此學號的學生!') else: print(s) elif choice == '3': b.sort_by_english() b.show_student() elif choice == '4': print('請輸入學生信息:') sno = int(input('學號:')) name = input('姓名:') english = int(input('英語:')) math = int(input('數學:')) student = Student(sno,name,english,math) r = b.add_student(student) print(r) elif choice == '5': sno = int(input('請輸入要刪除的學生的學號:')) r = b.delete_student(sno) print(r) elif choice == '6': sno = int(input('請輸入要修改的學生的學號:')) r = b.update_student(sno) print(r) elif choice == '9': b.save_data() print('保存成功!') else: print('輸入錯誤!')
用spyder或者cmd運行都可以。
更多學習資料請關注專題《管理系統開發》。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。