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 相关文章推荐
wxPython窗口的继承机制实例分析
Sep 28 Python
Python列表(list)常用操作方法小结
Feb 02 Python
Python入门之modf()方法的使用
May 15 Python
Python实现注册、登录小程序功能
Sep 21 Python
Python OS模块实例详解
Apr 15 Python
python字典的遍历3种方法详解
Aug 10 Python
Python编程快速上手——选择性拷贝操作案例分析
Feb 28 Python
python爬虫使用正则爬取网站的实现
Aug 03 Python
python的数学算法函数及公式用法
Nov 18 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
Jan 15 Python
python解决OpenCV在读取显示图片的时候闪退的问题
Feb 23 Python
怎么用Python识别手势数字
Jun 07 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中的日期处理方法集锦
2007/01/02 PHP
PHP获取当前日期和时间及格式化方法参数
2015/05/11 PHP
php中this关键字用法分析
2016/12/07 PHP
php curl优化下载微信头像的方法总结
2018/09/07 PHP
Javascript setInterval的两种调用方法(实例讲解)
2013/11/29 Javascript
简单js代码实现selece二级联动(推荐)
2014/02/18 Javascript
BOOTSTRAP时间控件显示在模态框下面的bug修复
2015/02/05 Javascript
JavaScript实现获取dom中class的方法
2015/02/09 Javascript
innerHTML中标签可以换行的方法汇总
2015/08/14 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
JavaScript中函数表达式和函数声明及函数声明与函数表达式的不同
2015/11/15 Javascript
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
两行代码轻松搞定JavaScript日期验证
2016/08/03 Javascript
Javascript 两种刷新方法以及区别和适用范围
2017/01/17 Javascript
JS实现的哈夫曼编码示例【原始版与修改版】
2018/04/22 Javascript
详解angular路由高亮之RouterLinkActive
2018/04/28 Javascript
vue使用vuex实现首页导航切换不同路由的方法
2019/05/08 Javascript
通过实例了解Javascript柯里化流程
2020/03/03 Javascript
微信小程序单选框自定义赋值
2020/05/26 Javascript
Python中的字典遍历备忘
2015/01/17 Python
Python turtle绘画象棋棋盘
2019/08/21 Python
python将数组n等分的实例
2019/12/02 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
2019/12/19 Python
pytorch中获取模型input/output shape实例
2019/12/30 Python
使用Python三角函数公式计算三角形的夹角案例
2020/04/15 Python
Python Django form 组件动态从数据库取choices数据实例
2020/05/19 Python
CSS3实现时间轴特效
2020/11/02 HTML / CSS
中国第一家杂志折扣订阅网:杂志铺
2016/08/30 全球购物
外企C语言笔试题
2013/11/10 面试题
法律专业求职信
2014/05/24 职场文书
医院安全生产月活动总结
2014/07/05 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
工程资料员岗位职责
2015/04/13 职场文书
结婚典礼主持词
2015/06/29 职场文书
少先大队干部竞选稿
2015/11/20 职场文书
公司周年庆寄语
2019/06/21 职场文书