目录

功能模块:

实现思路:

运行功能演示:

具体实现过程:

定义学生类:

定义学生管理类

定义显示学生信息函数

输入成绩函数:

添加学生信息:

删除学生信息

修改学生信息

导入学生信息

导出学生信息

求课程平均分

求课程最高分

求课程最低分

最后定义菜单函数和主函数:

完整代码:


功能模块:

基本信息管理和学生成绩管理。

基本信息管理模块的主要功能有学生信息的添加、删除、修改、显示和学生数据的导入导出,、

学生成绩管理模块的主要功能有统计课程最高分、最低分和平均分。

实现思路:

  1. 设计一个学生类,包含学号、姓名、语文成绩、数学成绩和英语成绩等数据成员。
  2. 引入OS模块,用于导入导出路径文件信息
  3. 设计一个学生管理类,用于定义各个模块的具体功能函数。
  4. 设计一个主菜单,两个子菜单,分别管理学生基本信息和学生成绩信息

运行功能演示:

学生信息管理系统启动后,首先进入系统主界面,等待用户输入命令选择相应的功能。

如果用户输入“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)完整版相关推荐

  1. python学生管理系统教学_Python项目:学生信息管理系统(完整版)

    本文是基于上一篇(python项目:学生信息管理系统(初版))进行了完善,并添加了新的功能. 主要包括有: 学生信息管理系统(完整版) 学生信息管理项目,要求带操作界面,并完成每项操作: +----- ...

  2. 基于python的师生一体化学生信息管理系统——python期末设计!!!

    系统介绍 该系统使用python语言进行程序设计,设计的主要内容可概括为以下几点:师生一体化学生信息管理系统,首先由管理员(教师)增加.删除.修改.查找.导出学生信息(excel表格的形式),再有学生 ...

  3. 学生信息管理系统python

    # encoding utf=8 # 定义一个函数,显示可以使用的功能列表给用户 def showInfo():print("-" * 30)print(" 学生管理系统 ...

  4. 学生成绩管理系统(完整版)

    说明 一.设计报告的基本内容至少包括封面. 正文. 参考文献三部分. 1. 封面 封面按照模版填写,不得随意更改. 2. 正文 正文是设计报告的主体, 具体由以下几部分组成: (1) 问题描述 描述要 ...

  5. 学生信息管理系统——python版(附流程图)

    声明 本篇代码对新手十分友好.我大一的期末考试作业,今天分享出来.当时写的时候也是一个新手,现在也不想再去修改了(一是太懒,二还是懒),所以有很多地方可能不足,但是运行完全没问题.我用的是列表加循环这 ...

  6. python学生成绩管理系统【完整版】

    ✅作者简介:大家好我是hacker707,大家可以叫我hacker,新星计划第三季python赛道Top1

  7. python项目:学生信息管理系统(初版)

    python项目:学生信息管理系统(初版) 学生信息管理项目,要求带操作界面,并完成每项操作: +----------------------+ | 1)添加学生信息 | | 2)显示所有学生的信息 ...

  8. Python基础项目实践之:学生信息管理系统

    Python课堂基础实践系列: Python基础项目实践之:学生信息管理系统 python基础项目实践之: 学生通讯录管理系统 Python基础项目实践之:面向对象方法模拟简单计算器 Python基础 ...

  9. 学生信息管理系统(C++语言版)

    学生信息管理系统(C语言版) #include "stdio.h" #include "bios.h" #include "conio.h" ...

最新文章

  1. MFC单文档程序响应菜单消息的顺序
  2. 电脑底部任务栏点不动_「方法」在电脑上使用小程序的方法
  3. c语言二进制转十进制(附完整源码)
  4. linux系统编程之进程(八):守护进程详解及创建,daemon()使用
  5. 公司用的非标普通自动化用单片机还是plc_PLC的介绍
  6. WPF——专用枚举器ListBox和ComboBox
  7. docker 安装 FastDFS
  8. Performance --- 前端性能监控
  9. 测试电动车速度的软件,应用测试:最高速度达11MB/S
  10. acl 影响因子_适合理论、计算化学投稿的期刊及其2016年影响因子(2017年公布)...
  11. nas 微型计算机,商为家用的利器 希捷BS 2- Bay NAS
  12. 《互联网的那些事之时代》第二回:春江潮水连海平,海上明月共潮生
  13. 服务器简介(一):服务器定义、服务器特点、服务器分类、服务器软件
  14. MT6737芯片技术资料集锦下载
  15. 免费在线思维导图网站,这么好用一定要收藏
  16. vue 项目中实现按钮防抖
  17. 深入理解AQS之ReentrantReadWriteLock详解
  18. 【2】Kali破解家用WI-FI密码 - WPA/WPA2加密
  19. 基于蓝牙与Android设备的控制系统设计
  20. Matlab:交换矩阵的两行(列)

热门文章

  1. drf -------序列化组件
  2. 缠中说禅 论语 详解 全集列表
  3. 网络安全-记录web漏洞修复
  4. springboot集成websocket(一)客户端、客户端断线重连、客户端连接验证
  5. 【android】利用Yahoo API完成天气预报
  6. mysql 1067_MySQL发生系统错误1067的解决办法?
  7. OSChina 周三乱弹 —— 人生不如意常十八九
  8. 干掉GuavaCache:Caffeine才是本地缓存的王
  9. 新一轮工业革命 中国将失去优势?--
  10. NFC之华为AIPASS认证:测试用例简介