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访问类中docstring注释的实现方法
May 04 Python
python实现查找excel里某一列重复数据并且剔除后打印的方法
May 26 Python
八大排序算法的Python实现
Jan 28 Python
pandas 使用apply同时处理两列数据的方法
Apr 20 Python
解决python删除文件的权限错误问题
Apr 24 Python
python变量赋值方法(可变与不可变)
Jan 12 Python
Python使用修饰器进行异常日志记录操作示例
Mar 19 Python
基于Python的ModbusTCP客户端实现详解
Jul 13 Python
Python使用python-docx读写word文档
Aug 26 Python
PyCharm更改字体和界面样式的方法步骤
Sep 27 Python
python中sort sorted reverse reversed函数的区别说明
May 11 Python
python中的plt.cm.Paired用法说明
May 31 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和ACCESS写聊天室(四)
2006/10/09 PHP
收集的php编写大型网站问题集
2007/03/06 PHP
php与paypal整合方法
2010/11/28 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
2012/12/29 PHP
PHP中的随机性 你觉得自己幸运吗?
2016/01/22 PHP
示例详解Laravel的注册重构
2016/08/14 PHP
PHP实现验证码校验功能
2017/11/16 PHP
php抽象方法和普通方法的区别点总结
2019/10/13 PHP
JavaScript如何获取数组最大值和最小值
2015/11/18 Javascript
玩转JavaScript OOP - 类的实现详解
2016/06/08 Javascript
基于JS实现弹出一个隐藏的div窗口body页面变成灰色并且不可被编辑
2016/12/14 Javascript
微信小程序methods中定义的方法互相调用的实例代码
2018/08/07 Javascript
Vue.directive使用注意(小结)
2018/08/31 Javascript
使用vscode快速建立vue模板过程详解
2019/10/10 Javascript
解决vue单页面多个组件嵌套监听浏览器窗口变化问题
2020/07/30 Javascript
HTML元素拖拽功能实现的完整实例
2020/12/04 Javascript
python用来获得图片exif信息的库实例分析
2015/03/16 Python
浅析Python中的多进程与多线程的使用
2015/04/07 Python
Python脚本实现格式化css文件
2015/04/08 Python
python使用in操作符时元组和数组的区别分析
2015/05/19 Python
Django URL传递参数的方法总结
2016/08/28 Python
python模拟事件触发机制详解
2018/01/19 Python
python实现扫描日志关键字的示例
2018/04/28 Python
Python代码打开本地.mp4格式文件的方法
2019/01/03 Python
分享一个H5原生form表单的checkbox特效代码
2018/02/26 HTML / CSS
意大利运动服减价商店:ScontoSport
2020/03/10 全球购物
结婚典礼证婚词
2014/01/08 职场文书
领导干部学习“三严三实”思想汇报
2014/09/15 职场文书
2014年电信员工工作总结
2014/12/19 职场文书
2015年财务经理工作总结
2015/05/13 职场文书
毕业论文答辩稿范文
2015/06/23 职场文书
网络研修心得体会
2016/01/08 职场文书
教你快速开启Apache SkyWalking的自监控
2021/04/25 Servers
Python爬虫基础讲解之请求
2021/05/13 Python
Rust 连接 PostgreSQL 数据库的详细过程
2022/01/22 PostgreSQL
Win11 Build 22000.829更新补丁KB5015882发布(附更新修复内容汇总)
2022/07/15 数码科技