python创建学生成绩管理系统


Posted in Python onNovember 22, 2019

python学生成绩管理系统创建,供大家参考,具体内容如下

要求编写学生类,班级类,并在电脑运行生成表单,输入一个数字,得到对应的结果。

输出样式

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)

结果

python创建学生成绩管理系统

班级类

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运行都可以。

更多学习资料请关注专题《管理系统开发》。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中使用第三方库xlutils来追加写入Excel文件示例
Apr 05 Python
Python编程中运用闭包时所需要注意的一些地方
May 02 Python
Python入门教程之运算符与控制流
Aug 17 Python
给你选择Python语言实现机器学习算法的三大理由
Nov 15 Python
Python反射的用法实例分析
Feb 11 Python
Python简单计算文件MD5值的方法示例
Apr 11 Python
使用python爬虫获取黄金价格的核心代码
Jun 13 Python
Python多进程与服务器并发原理及用法实例分析
Aug 21 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
Apr 23 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
Jul 01 Python
Python使用urlretrieve实现直接远程下载图片的示例代码
Aug 17 Python
Python中OpenCV实现查找轮廓的实例
Jun 08 Python
Python计算不规则图形面积算法实现解析
Nov 22 #Python
python实现连续变量最优分箱详解--CART算法
Nov 22 #Python
pycharm运行scrapy过程图解
Nov 22 #Python
python迭代器常见用法实例分析
Nov 22 #Python
python自动分箱,计算woe,iv的实例代码
Nov 22 #Python
python创建学生管理系统
Nov 22 #Python
Python如何计算语句执行时间
Nov 22 #Python
You might like
基于PHP 面向对象之成员方法详解
2013/05/04 PHP
ioncube_loader_win_5.2.dll的错误解决方法
2015/01/04 PHP
javascript开发技术大全 第4章 直接量与字符集
2011/07/03 Javascript
JavaScript代码复用模式实例分析
2012/12/02 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
2013/09/22 Javascript
使用JavaScript修改浏览器URL地址栏的实现代码
2013/10/21 Javascript
浅谈js中调用函数时加不加括号的问题
2016/07/28 Javascript
详解Angular 4.x Injector
2017/05/04 Javascript
webpack实现热更新(实施同步刷新)
2017/07/28 Javascript
JS中实现一个下载进度条及播放进度条的代码
2019/06/10 Javascript
原生js实现贪食蛇小游戏的思路详解
2019/11/26 Javascript
JavaScript cookie原理及使用实例
2020/05/08 Javascript
[01:14]辉夜杯战队访谈宣传片—NEWBEE.Y
2015/12/26 DOTA
Python内置的字符串处理函数详细整理(覆盖日常所用)
2014/08/19 Python
python求列表交集的方法汇总
2014/11/10 Python
python实现同时给多个变量赋值的方法
2015/04/30 Python
Python基础中所出现的异常报错总结
2016/11/19 Python
Python中字典的浅拷贝与深拷贝用法实例分析
2018/01/02 Python
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
Python模拟简单电梯调度算法示例
2018/08/20 Python
Python基础学习之时间转换函数用法详解
2019/06/18 Python
python写入文件自动换行问题的方法
2019/07/05 Python
python实现输入的数据在地图上生成热力图效果
2019/12/06 Python
python psutil监控进程实例
2019/12/17 Python
Pytorch 中retain_graph的用法详解
2020/01/07 Python
matplotlib实现数据实时刷新的示例代码
2021/01/05 Python
Python实现区域填充的示例代码
2021/02/03 Python
利用HTML5中Geolocation获取地理位置调用Google Map API在Google Map上定位
2013/01/23 HTML / CSS
面向对象编程OOP的优点
2013/01/22 面试题
String是最基本的数据类型吗?
2013/06/13 面试题
大四优秀党员个人民主评议
2014/09/19 职场文书
离婚协议书范本及离婚须知
2014/10/15 职场文书
办公室主任个人总结
2015/02/28 职场文书
范文之农村基层党建工作报告
2019/10/24 职场文书
ORACLE数据库对long类型字段进行模糊匹配的解决思路
2021/04/07 Oracle
如何用JS实现简单的数据监听
2021/05/06 Javascript