python创建学生成绩管理系统
作者:沈希辞 发布时间:2023-08-09 04:19:38
标签: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)
结果
班级类
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运行都可以。
更多学习资料请关注专题《管理系统开发》。
来源:https://blog.csdn.net/qq_44174481/article/details/92071468
0
投稿
猜你喜欢
- 阅读:Chapter 3 * 的表格“Misquotations are the only quotations tha are never
- 访问phpmyadmin时总是出现 “无法载入 mysql 扩展,请检查 PHP 配置”。查看原因是“php_mysql.dll”无法载如。
- 1> 如何在浏览器地址栏前添加自定义的小图标?你是不是记得有时在浏览网易网站的首页时,在地址WWW.PUTAOJIAYUAN.COM前
- 使用在Safari和WebKit中可用的CSS高级特性,你可以为你的网站和网络应用带来一个新的级别的令人兴奋的东西。WebKit是Safar
- 看过一篇关于下载网页中图片的文章,它只能下载以http头的图片,我做了些改进,可以下载网页中的所有连接资源,并按照网页中的目录结构建立本地目
- 级联样式表在13年前被引入,而且被广泛使用的CSS 2.1 标准在11年前被创建,显然我们现在已经与当年相差千里了。相当了不起的是期间网站开
- 这是python编写的用于测试网站访问速率的代码片段,可以输出打开某url的时间,访问100次的平均时间,最大时间和最小时间等等import
- 使用fso对象遍历指定文件夹函数:'遍历文件夹sub ListFolderContents(path) &nbs
- 1、什么是超链接图标规范超链接图标规范是我根据《Iconize Textlinks with CSS》修改调整完成的。主要是整理出常用到的一
- 程序图标主要作用是为了使该程序更加具象及更容易理解,除了上述的作用外,有更好视觉效果的图标可以提高产品的整体体验和品牌,可引起用户的关注和下
- 如果不是因为总监审查严格,一定要求这个细节解决掉,也许我也不会去深究根源性的解决办法,再此感谢MTIME负责而严格的同事。首先描述一下问题:
- 查了查《VBSCRIPT 速查手册》InstrRev的用法:InstrRev函数,功能:返回某字符串在另一个字符串中出现的从结尾计起的位置语
- 网页采用了 UTF-8 编码格式,这本来没有问题,问题是外部 CSS 文件默认是 ANSI
- 问题作为一个负责几个服务器的数据库管理员,我接到许多电话是关于磁盘空间的。我所做的第一件事是找到可以缩小的数据文件来释放一些磁盘上的空间。我
- asp使用fso读取驱动器信息:<%vv=drive()response.write vv funct
- 今天登录社区的时候看到有之前的文章有个留言的评论,说如何统计typecho所有文章的字数,这里分享一下代码。在当前主题的functions.
- 一、前言 JDK(Java Development Kit )是一切java应用程序的基础,可以说,所有的java应用程序是构建
- ASP的强大不仅仅局限于接受和显示的交互,更多的是运用ActiveX 组件进行更强大的Web应用。那究竟ActiveX组件为何物?
- 用PHP的json_encode来处理中文的时候, 中文都会被编码, 变成不可读的, 类似”\u***”的格式,如果想汉字不进行转码,这里提
- 此文章主要向大家讲述的是SQL Server数据库的分布式数据库系统的实际目标,通俗的讲就是研制分布式数据库系统的目的、动机,其中主要包括的