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多线程(python多线程简明教程)
Jun 09 Python
Python抓取京东图书评论数据
Aug 31 Python
python的Template使用指南
Sep 11 Python
举例讲解Python设计模式编程的代理模式与抽象工厂模式
Jan 16 Python
python使用xpath中遇到:到底是什么?
Jan 04 Python
浅谈python多进程共享变量Value的使用tips
Jul 16 Python
利用python Selenium实现自动登陆京东签到领金币功能
Oct 31 Python
详解从Django Allauth中进行登录改造小结
Dec 18 Python
python读取Kafka实例
Dec 23 Python
Pyorch之numpy与torch之间相互转换方式
Dec 31 Python
Pytorch 实现权重初始化
Dec 31 Python
在Python3.74+PyCharm2020.1 x64中安装使用Kivy的详细教程
Aug 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/06/14 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
2014/07/29 PHP
php查询mssql出现乱码的解决方法
2014/12/29 PHP
学习面向对象之面向对象的术语
2010/11/30 Javascript
javascript之bind使用介绍
2011/10/09 Javascript
ExtJS中文乱码之GBK格式编码解决方案及代码
2013/01/20 Javascript
ajax与302响应代码测试
2013/10/23 Javascript
可选择和输入的下拉列表框示例
2013/11/05 Javascript
全面兼容的javascript时间格式化函数(比较实用)
2014/05/14 Javascript
DEDECMS如何为文章添加HOT NEW标志图片
2015/08/14 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
2015/12/04 Javascript
基于LayUI分页和LayUI laypage分页的使用示例
2017/08/02 Javascript
vue项目打包部署到服务器的方法示例
2018/08/27 Javascript
vue基于viewer实现的图片查看器功能
2019/04/12 Javascript
js动态获取时间的方法分析
2019/08/02 Javascript
[01:04:06]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第一局
2016/02/26 DOTA
详解在Python程序中解析并修改XML内容的方法
2015/11/16 Python
python自动翻译实现方法
2016/05/28 Python
浅谈python中的面向对象和类的基本语法
2016/06/13 Python
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
Python中最大最小赋值小技巧(分享)
2017/12/23 Python
python机器人运动范围问题的解答
2019/04/29 Python
python标记语句块使用方法总结
2019/08/05 Python
python 生成器和迭代器的原理解析
2019/10/12 Python
Keras 快速解决OOM超内存的问题
2020/06/11 Python
keras:model.compile损失函数的用法
2020/07/01 Python
解决html5中的video标签ios系统中无法播放使用的问题
2020/08/10 HTML / CSS
英国的领先快速时尚零售商:In The Style
2019/03/25 全球购物
Kipling澳洲官网:购买凯浦林包包
2020/12/17 全球购物
敬老文明号事迹材料
2014/01/16 职场文书
幼教简历自我评价
2014/01/28 职场文书
安全口号大全
2014/06/21 职场文书
交警作风整顿剖析材料
2014/10/11 职场文书
安全伴我行主题班会
2015/08/13 职场文书
校运会班级霸气口号
2015/12/24 职场文书