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中heapq模块的用法
Jun 28 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
Jan 04 Python
Python实现PS滤镜中马赛克效果示例
Jan 20 Python
使用apidocJs快速生成在线文档的实例讲解
Feb 07 Python
python中字符串比较使用is、==和cmp()总结
Mar 18 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
May 02 Python
使用python根据端口号关闭进程的方法
Nov 06 Python
Python基于类路径字符串获取静态属性
Mar 12 Python
基于python计算并显示日间、星期客流高峰
May 07 Python
Python实现弹球小游戏
Aug 01 Python
如何使用python写截屏小工具
Sep 29 Python
C++和python实现阿姆斯特朗数字查找实例代码
Dec 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/04/28 PHP
php mssql 时间格式问题
2009/01/13 PHP
PHP限制页面只能在微信自带浏览器访问的代码
2014/01/15 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
2020/04/06 PHP
Javascript中eval函数的使用方法与示例
2007/04/09 Javascript
JS 动态获取节点代码innerHTML分析 [IE,FF]
2009/11/30 Javascript
js创建数据共享接口——简化框架之间相互传值
2011/10/23 Javascript
javascript中checkbox使用方法简单实例演示
2015/11/17 Javascript
H5移动端适配 Flexible方案
2016/10/24 Javascript
js实现右键菜单功能
2016/11/28 Javascript
vue中各组件之间传递数据的方法示例
2017/07/27 Javascript
Angular4表单验证代码详解
2017/09/03 Javascript
今天,小程序正式支持 SVG
2019/04/20 Javascript
Vue动态面包屑功能的实现方法
2019/07/01 Javascript
angular6开发steps步骤条组件
2019/07/04 Javascript
jquery实现图片无缝滚动 蒙版遮蔽效果
2020/01/11 jQuery
Openlayers显示瓦片网格信息的方法
2020/09/28 Javascript
[03:17]史诗级大片应援2018DOTA2国际邀请赛 致敬每一位坚守遗迹的勇士
2018/07/20 DOTA
Python批量重命名同一文件夹下文件的方法
2015/05/25 Python
Java及python正则表达式详解
2017/12/27 Python
在python中实现将一张图片剪切成四份的方法
2018/12/05 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
python 生成任意形状的凸包图代码
2020/04/16 Python
Python实现Word表格转成Excel表格的示例代码
2020/04/16 Python
python2.7使用scapy发送syn实例
2020/05/05 Python
Django3中的自定义用户模型实例详解
2020/08/23 Python
StubHub新加坡:购买和出售全球活动门票
2017/03/10 全球购物
美国购物网站:Clickhere2shop
2021/01/28 全球购物
程序集与命名空间有什么不同
2014/07/25 面试题
2014年百日安全生产活动总结
2014/05/04 职场文书
2014年惩防体系建设工作总结
2014/12/01 职场文书
房产公证书
2015/01/23 职场文书
世界水日宣传活动总结
2015/02/09 职场文书
高校教师个人总结
2015/02/10 职场文书
校运会班级霸气口号
2015/12/24 职场文书
干货:如何写好工作总结报告!
2019/05/10 职场文书