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代码嵌入C++程序进行编写的实例
Jul 31 Python
python爬取51job中hr的邮箱
May 14 Python
Tensorflow环境搭建的方法步骤
Feb 07 Python
浅谈python可视化包Bokeh
Feb 07 Python
利用Python写一个爬妹子的爬虫
Jun 08 Python
Python并行分布式框架Celery详解
Oct 15 Python
Python3爬虫之urllib携带cookie爬取网页的方法
Dec 28 Python
Django框架 querySet功能解析
Sep 04 Python
使用Django实现把两个模型类的数据聚合在一起
Mar 28 Python
Django静态资源部署404问题解决方案
May 11 Python
Python如何实现远程方法调用
Aug 07 Python
利于python脚本编写可视化nmap和masscan的方法
Dec 29 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浮点数精确运算
2016/03/10 PHP
php实现遍历文件夹的方法汇总
2017/03/02 PHP
thinkphp实现附件上传功能
2017/05/26 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
PHP设计模式之适配器模式原理与用法分析
2018/04/25 PHP
详解php用static方法的原因
2018/09/12 PHP
asp.net下利用js实现返回上一页的实现方法小集
2009/11/24 Javascript
分享20款好玩的jQuery游戏
2011/04/17 Javascript
js中根据字数截取字符串,不能截断url
2012/01/12 Javascript
Extjs4.0 ComboBox如何实现三级联动
2016/05/11 Javascript
jquery实现输入框实时输入触发事件代码
2016/12/21 Javascript
Vue form 表单提交+ajax异步请求+分页效果
2017/04/22 Javascript
微信小程序 http请求的session管理
2017/06/07 Javascript
Node.js学习之地址解析模块URL的使用详解
2017/09/28 Javascript
使用 Node.js 模拟滑动拼图验证码操作的示例代码
2017/11/02 Javascript
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
2018/01/24 Javascript
详解关于Vue2.0路由开启keep-alive时需要注意的地方
2018/09/18 Javascript
原生JS实现音乐播放器
2021/01/26 Javascript
[01:13:46]iG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[03:48]大碗DOTA
2019/07/25 DOTA
Python中struct模块对字节流/二进制流的操作教程
2017/01/21 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
2019/05/03 Python
Python实现Selenium自动化Page模式
2019/07/14 Python
浅析pandas 数据结构中的DataFrame
2019/10/12 Python
python自动识别文本编码格式代码
2019/12/26 Python
Html5实现单张、多张图片上传功能
2019/04/28 HTML / CSS
HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码
2020/04/10 HTML / CSS
Fossil德国官网:化石手表、手袋、珠宝及配件
2019/12/07 全球购物
咖啡书吧创业计划书
2014/01/13 职场文书
读书小明星事迹材料
2014/05/03 职场文书
史学专业毕业生求职信
2014/05/09 职场文书
某某同志考察材料
2014/05/28 职场文书
作风转变年心得体会
2014/10/22 职场文书
四年级小学生评语
2014/12/26 职场文书
python 调用js的四种方式
2021/04/11 Python
Redis 异步机制
2022/05/15 Redis