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实现在windows下操作word的方法
Apr 28 Python
Python基于sftp及rsa密匙实现远程拷贝文件的方法
Sep 21 Python
Python Pandas找到缺失值的位置方法
Apr 12 Python
对python3中, print横向输出的方法详解
Jan 28 Python
Python3实现的反转单链表算法示例
Mar 08 Python
利用Python检测URL状态
Jul 31 Python
在python shell中运行python文件的实现
Dec 21 Python
pytorch学习教程之自定义数据集
Nov 10 Python
解决pytorch 保存模型遇到的问题
Mar 03 Python
python实现批量移动文件
Apr 05 Python
Python matplotlib多个子图绘制整合
Apr 13 Python
Python+pyaudio实现音频控制示例详解
Jul 23 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&amp;java(一)
2006/10/09 PHP
WordPress判断用户是否登录的代码
2011/03/17 PHP
Laravel中注册Facades的步骤详解
2016/03/16 PHP
javascript 动态生成私有变量访问器
2009/12/06 Javascript
mailto的使用技巧分享
2012/12/21 Javascript
Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
2013/07/09 Javascript
JScript分割字符串示例代码
2013/09/04 Javascript
5分钟理解JavaScript中this用法分享
2013/11/09 Javascript
JavaScript中for-in遍历方式示例介绍
2014/02/11 Javascript
一个网页标题title的闪动提示效果实现思路
2014/03/22 Javascript
关于编写性能高效的javascript事件的技术
2014/11/28 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
JavaScript创建一个object对象并操作对象属性的用法
2015/03/23 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
实例浅析js的this
2016/12/11 Javascript
JS模拟实现ECMAScript5新增的数组方法
2017/03/20 Javascript
Vue声明式渲染详解
2017/05/17 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
2017/08/25 Javascript
Vue源码学习之初始化模块init.js解析
2017/11/02 Javascript
vue 实现剪裁图片并上传服务器功能
2018/03/01 Javascript
jquery实现动态添加附件功能
2018/10/23 jQuery
JS代码优化的8点建议
2020/02/04 Javascript
详解K-means算法在Python中的实现
2017/12/05 Python
python实现超市扫码仪计费
2018/05/30 Python
Python3数字求和的实例
2019/02/19 Python
调用其他python脚本文件里面的类和方法过程解析
2019/11/15 Python
Django中F函数的使用示例代码详解
2020/07/06 Python
Giglio德国网上精品店:奢侈品服装和配件
2016/09/23 全球购物
小橄榄树:Le Petit Olivier
2018/04/23 全球购物
信号量和自旋锁的区别?如何选择使用?
2015/09/08 面试题
英语自我介绍演讲稿
2014/09/01 职场文书
伊索寓言读书笔记
2015/06/30 职场文书
乡镇司法所2015年度工作总结
2015/10/14 职场文书
继承Win10缺点!教你关闭Win11烦人的网络搜索
2021/11/23 数码科技
Go语言grpc和protobuf
2022/04/13 Golang