学生信息管理系统(Python)完整版
目录
功能模块:
实现思路:
运行功能演示:
具体实现过程:
定义学生类:
定义学生管理类
定义显示学生信息函数
输入成绩函数:
添加学生信息:
删除学生信息
修改学生信息
导入学生信息
导出学生信息
求课程平均分
求课程最高分
求课程最低分
最后定义菜单函数和主函数:
完整代码:
功能模块:
基本信息管理和学生成绩管理。
基本信息管理模块的主要功能有学生信息的添加、删除、修改、显示和学生数据的导入导出,、
学生成绩管理模块的主要功能有统计课程最高分、最低分和平均分。
实现思路:
- 设计一个学生类,包含学号、姓名、语文成绩、数学成绩和英语成绩等数据成员。
- 引入OS模块,用于导入导出路径文件信息
- 设计一个学生管理类,用于定义各个模块的具体功能函数。
- 设计一个主菜单,两个子菜单,分别管理学生基本信息和学生成绩信息
运行功能演示:
学生信息管理系统启动后,首先进入系统主界面,等待用户输入命令选择相应的功能。
如果用户输入“info”命令,则进入学生基本信息管理子功能模块。
在学生基本信息管理界面,用户通过输入相应的命令进行学生基本信息的增、删、改、显示等操作。
学生基本信息菜单
添加学生信息
删除学生信息
修改学生信息
显示学生信息
如果用户输入“score”命令,则进入学生成绩管理子功能模块。
在学生成绩管理界面用户可选择相应的功能进行成绩处理。
平均分:
最高分
最低分
具体实现过程:
定义学生类:
class Student:def __init__(self,no,name,chinese,math,english):self.no = noself.name = nameself.chinese = int(chinese)self.math = int(math)self.english = int(english)
定义学生管理类
class StudentList:def __init__(self):self.stulist = []
定义显示学生信息函数
在学生管理类下面定义显示学生信息函数:
def show(self):#显示学生信息print('{:8}\t{:8}\t{:8}\t{:8}\t{:8}'.format('学号','姓名','语文','数学','英语'))for stu in self.stulist: print('{:8}\t{:8}\t{:<8}\t{:<8}\t{:<8}'.format(stu.no,stu.name,stu.chinese,stu.math,stu.english))
输入成绩函数:
def __enterScore(self,message):#成绩输入while True:try:score = input(message)if 0 <= int(score) <= 100:breakelse:print("输入错误,成绩应在0到100之间")except:print("输入错误,成绩应在0到100之间")return score def __exists(self,no):#判断学号是否存在for stu in self.stulist:if stu.no == no:return Trueelse:return False
添加学生信息:
def insert(self):#添加学生信息while True:no = input('学号:')if self.__exists(no):print('该学号已存在')else:name = input('姓名:')chinese = self.__enterScore('语文成绩:')math = self.__enterScore('数学成绩:')english = self.__enterScore('英语成绩:')stu = Student(no,name,chinese,math,english)self.stulist.append(stu)choice = input('继续添加(y/n)?').lower()if choice == 'n':break
删除学生信息
def delete(self):#删除学生信息while True:no = input('请输入要删除的学生学号:') for stu in self.stulist[::]:if stu.no == no:self.stulist.remove(stu)print('删除成功')breakelse:print('该学号不存在')choice = input('继续删除(y/n)?').lower()if choice == 'n':break
修改学生信息
def update(self):#修改学生信息while True:no = input('请输入要修改的学生学号:')if self.__exists(no):for stu in self.stulist:if stu.no == no:stu.name = input('姓名:')stu.chinese = int(self.__enterScore('语文成绩:'))stu.math = int(self.__enterScore('数学成绩:'))stu.english = int(self.__enterScore('英语成绩:'))print('修改成功')breakelse:print('该学号不存在')choice = input('继续修改(y/n)?').lower()if choice == 'n':break
导入学生信息
def load(self,fn):#导入学生信息if os.path.exists(fn):try:with open(fn,'r',encoding = 'utf-8') as fp:while True:fs = fp.readline().strip('\n')if not fs:breakelse:stu = Student(*fs.split(','))if self.__exists(stu.no):print('该学号已存在')else:self.stulist.append(stu)print('导入完毕')except:print('error...') #要导入的文件不是utf-8编码,或是字段数不匹配等else:print('要导入的文件不存在')
导出学生信息
def save(self,fn):#导出学生信息with open(fn,'w',encoding = 'utf-8') as fp:for stu in self.stulist:fp.write(stu.no + ',')fp.write(stu.name + ',')fp.write(str(stu.chinese) + ',')fp.write(str(stu.math) + ',') fp.write(str(stu.english) + '\n') print("导出完毕")
求课程平均分
def scoreavg(self):#求课程平均分length = len(self.stulist)if length > 0:chinese_avg = sum([stu.chinese for stu in self.stulist])/lengthmath_avg = sum([stu.math for stu in self.stulist])/lengthenglish_avg = sum([stu.english for stu in self.stulist])/lengthprint('语文成绩平均分是:%.2f'%chinese_avg)print('数学成绩平均分是:%.2f'%math_avg)print('英语成绩平均分是:%.2f'%english_avg)else:print('尚没有学生成绩...')
求课程最高分
def scoremax(self):#求课程最高分if len(self.stulist) > 0:chinese_max = max([stu.chinese for stu in self.stulist])math_max = max([stu.math for stu in self.stulist])english_max = max([stu.english for stu in self.stulist])print('语文成绩最高分是:%d'%chinese_max)print('数学成绩最高分是:%d'%math_max)print('英语成绩最高分是:%d'%english_max)else:print('尚没有学生成绩...')
求课程最低分
def scoremin(self):#求课程最低分if len(self.stulist) > 0:chinese_min = min([stu.chinese for stu in self.stulist])math_min = min([stu.math for stu in self.stulist])english_min = min([stu.english for stu in self.stulist])print('语文成绩最低分是:%d'%chinese_min)print('数学成绩最低分是:%d'%math_min)print('英语成绩最低分是:%d'%english_min)else:print('尚没有学生成绩...')
最后定义菜单函数和主函数:
def infoprocess(self):#基本信息管理print('学生基本信息管理'.center(20,'-'))print('load----------导入学生信息')print('insert--------添加学生信息')print('delete--------删除学生信息')print('update--------修改学生信息')print('show----------显示学生信息')print('save----------导出学生信息')print('return--------返回')print('-'*28)while True:s = input('info>').strip().lower()if s == 'load':fn = input('请输入要导入的文件名:')self.load(fn)elif s == 'show':self.show()elif s == 'insert':self.insert()elif s == 'delete':self.delete()elif s == 'update':self.update()elif s == 'save':fn = input('请输入要导出的文件名:')self.save(fn)elif s =='return':breakelse:print('输入错误')def scoreprocess(self):#学生成绩统计print('学生成绩统计'.center(24,'='))print('avg --------课程平均分')print('max --------课程最高分')print('min --------课程最低分') print('return --------返回')print(''.center(30,'='))while True:s = input('score>').strip().lower()if s == 'avg': self.scoreavg()elif s == 'max': self.scoremax()elif s == 'min': self.scoremin()elif s == 'return':breakelse:print('输入错误')def main(self):#主控函数 while True:print('学生信息管理系统V1.0'.center(24,'='))print('info -------学生基本信息管理')print('score -------学生成绩统计')print('exit -------退出系统')print(''.center(32,'='))s = input('main>').strip().lower()if s == 'info':self.infoprocess()elif s == 'score':self.scoreprocess()elif s == 'exit':breakelse:print('输入错误')
if __name__ == '__main__':st = StudentList()st.main()
完整代码:
import osclass Student:def __init__(self,no,name,chinese,math,english):self.no = noself.name = nameself.chinese = int(chinese)self.math = int(math)self.english = int(english) class StudentList:def __init__(self):self.stulist = []def show(self):#显示学生信息print('{:8}\t{:8}\t{:8}\t{:8}\t{:8}'.format('学号','姓名','语文','数学','英语'))for stu in self.stulist: print('{:8}\t{:8}\t{:<8}\t{:<8}\t{:<8}'.format(stu.no,stu.name,stu.chinese,stu.math,stu.english))def __enterScore(self,message):#成绩输入while True:try:score = input(message)if 0 <= int(score) <= 100:breakelse:print("输入错误,成绩应在0到100之间")except:print("输入错误,成绩应在0到100之间")return score def __exists(self,no):#判断学号是否存在for stu in self.stulist:if stu.no == no:return Trueelse:return Falsedef insert(self):#添加学生信息while True:no = input('学号:')if self.__exists(no):print('该学号已存在')else:name = input('姓名:')chinese = self.__enterScore('语文成绩:')math = self.__enterScore('数学成绩:')english = self.__enterScore('英语成绩:')stu = Student(no,name,chinese,math,english)self.stulist.append(stu)choice = input('继续添加(y/n)?').lower()if choice == 'n':breakdef delete(self):#删除学生信息while True:no = input('请输入要删除的学生学号:') for stu in self.stulist[::]:if stu.no == no:self.stulist.remove(stu)print('删除成功')breakelse:print('该学号不存在')choice = input('继续删除(y/n)?').lower()if choice == 'n':breakdef update(self):#修改学生信息while True:no = input('请输入要修改的学生学号:')if self.__exists(no):for stu in self.stulist:if stu.no == no:stu.name = input('姓名:')stu.chinese = int(self.__enterScore('语文成绩:'))stu.math = int(self.__enterScore('数学成绩:'))stu.english = int(self.__enterScore('英语成绩:'))print('修改成功')breakelse:print('该学号不存在')choice = input('继续修改(y/n)?').lower()if choice == 'n':breakdef load(self,fn):#导入学生信息if os.path.exists(fn):try:with open(fn,'r',encoding = 'utf-8') as fp:while True:fs = fp.readline().strip('\n')if not fs:breakelse:stu = Student(*fs.split(','))if self.__exists(stu.no):print('该学号已存在')else:self.stulist.append(stu)print('导入完毕')except:print('error...') #要导入的文件不是utf-8编码,或是字段数不匹配等else:print('要导入的文件不存在')def save(self,fn):#导出学生信息with open(fn,'w',encoding = 'utf-8') as fp:for stu in self.stulist:fp.write(stu.no + ',')fp.write(stu.name + ',')fp.write(str(stu.chinese) + ',')fp.write(str(stu.math) + ',') fp.write(str(stu.english) + '\n') print("导出完毕")def scoreavg(self):#求课程平均分length = len(self.stulist)if length > 0:chinese_avg = sum([stu.chinese for stu in self.stulist])/lengthmath_avg = sum([stu.math for stu in self.stulist])/lengthenglish_avg = sum([stu.english for stu in self.stulist])/lengthprint('语文成绩平均分是:%.2f'%chinese_avg)print('数学成绩平均分是:%.2f'%math_avg)print('英语成绩平均分是:%.2f'%english_avg)else:print('尚没有学生成绩...')def scoremax(self):#求课程最高分if len(self.stulist) > 0:chinese_max = max([stu.chinese for stu in self.stulist])math_max = max([stu.math for stu in self.stulist])english_max = max([stu.english for stu in self.stulist])print('语文成绩最高分是:%d'%chinese_max)print('数学成绩最高分是:%d'%math_max)print('英语成绩最高分是:%d'%english_max)else:print('尚没有学生成绩...')def scoremin(self):#求课程最低分if len(self.stulist) > 0:chinese_min = min([stu.chinese for stu in self.stulist])math_min = min([stu.math for stu in self.stulist])english_min = min([stu.english for stu in self.stulist])print('语文成绩最低分是:%d'%chinese_min)print('数学成绩最低分是:%d'%math_min)print('英语成绩最低分是:%d'%english_min)else:print('尚没有学生成绩...')def infoprocess(self):#基本信息管理print('学生基本信息管理'.center(20,'-'))print('load----------导入学生信息')print('insert--------添加学生信息')print('delete--------删除学生信息')print('update--------修改学生信息')print('show----------显示学生信息')print('save----------导出学生信息')print('return--------返回')print('-'*28)while True:s = input('info>').strip().lower()if s == 'load':fn = input('请输入要导入的文件名:')self.load(fn)elif s == 'show':self.show()elif s == 'insert':self.insert()elif s == 'delete':self.delete()elif s == 'update':self.update()elif s == 'save':fn = input('请输入要导出的文件名:')self.save(fn)elif s =='return':breakelse:print('输入错误')def scoreprocess(self):#学生成绩统计print('学生成绩统计'.center(24,'='))print('avg --------课程平均分')print('max --------课程最高分')print('min --------课程最低分') print('return --------返回')print(''.center(30,'='))while True:s = input('score>').strip().lower()if s == 'avg': self.scoreavg()elif s == 'max': self.scoremax()elif s == 'min': self.scoremin()elif s == 'return':breakelse:print('输入错误')def main(self):#主控函数 while True:print('学生信息管理系统V1.0'.center(24,'='))print('info -------学生基本信息管理')print('score -------学生成绩统计')print('exit -------退出系统')print(''.center(32,'='))s = input('main>').strip().lower()if s == 'info':self.infoprocess()elif s == 'score':self.scoreprocess()elif s == 'exit':breakelse:print('输入错误') if __name__ == '__main__':st = StudentList()st.main()
学生信息管理系统(Python)完整版相关推荐
- python学生管理系统教学_Python项目:学生信息管理系统(完整版)
本文是基于上一篇(python项目:学生信息管理系统(初版))进行了完善,并添加了新的功能. 主要包括有: 学生信息管理系统(完整版) 学生信息管理项目,要求带操作界面,并完成每项操作: +----- ...
- 基于python的师生一体化学生信息管理系统——python期末设计!!!
系统介绍 该系统使用python语言进行程序设计,设计的主要内容可概括为以下几点:师生一体化学生信息管理系统,首先由管理员(教师)增加.删除.修改.查找.导出学生信息(excel表格的形式),再有学生 ...
- 学生信息管理系统python
# encoding utf=8 # 定义一个函数,显示可以使用的功能列表给用户 def showInfo():print("-" * 30)print(" 学生管理系统 ...
- 学生成绩管理系统(完整版)
说明 一.设计报告的基本内容至少包括封面. 正文. 参考文献三部分. 1. 封面 封面按照模版填写,不得随意更改. 2. 正文 正文是设计报告的主体, 具体由以下几部分组成: (1) 问题描述 描述要 ...
- 学生信息管理系统——python版(附流程图)
声明 本篇代码对新手十分友好.我大一的期末考试作业,今天分享出来.当时写的时候也是一个新手,现在也不想再去修改了(一是太懒,二还是懒),所以有很多地方可能不足,但是运行完全没问题.我用的是列表加循环这 ...
- python学生成绩管理系统【完整版】
✅作者简介:大家好我是hacker707,大家可以叫我hacker,新星计划第三季python赛道Top1
- python项目:学生信息管理系统(初版)
python项目:学生信息管理系统(初版) 学生信息管理项目,要求带操作界面,并完成每项操作: +----------------------+ | 1)添加学生信息 | | 2)显示所有学生的信息 ...
- Python基础项目实践之:学生信息管理系统
Python课堂基础实践系列: Python基础项目实践之:学生信息管理系统 python基础项目实践之: 学生通讯录管理系统 Python基础项目实践之:面向对象方法模拟简单计算器 Python基础 ...
- 学生信息管理系统(C++语言版)
学生信息管理系统(C语言版) #include "stdio.h" #include "bios.h" #include "conio.h" ...
最新文章
- MFC单文档程序响应菜单消息的顺序
- 电脑底部任务栏点不动_「方法」在电脑上使用小程序的方法
- c语言二进制转十进制(附完整源码)
- linux系统编程之进程(八):守护进程详解及创建,daemon()使用
- 公司用的非标普通自动化用单片机还是plc_PLC的介绍
- WPF——专用枚举器ListBox和ComboBox
- docker 安装 FastDFS
- Performance --- 前端性能监控
- 测试电动车速度的软件,应用测试:最高速度达11MB/S
- acl 影响因子_适合理论、计算化学投稿的期刊及其2016年影响因子(2017年公布)...
- nas 微型计算机,商为家用的利器 希捷BS 2- Bay NAS
- 《互联网的那些事之时代》第二回:春江潮水连海平,海上明月共潮生
- 服务器简介(一):服务器定义、服务器特点、服务器分类、服务器软件
- MT6737芯片技术资料集锦下载
- 免费在线思维导图网站,这么好用一定要收藏
- vue 项目中实现按钮防抖
- 深入理解AQS之ReentrantReadWriteLock详解
- 【2】Kali破解家用WI-FI密码 - WPA/WPA2加密
- 基于蓝牙与Android设备的控制系统设计
- Matlab:交换矩阵的两行(列)