python简易版学生管理系统(python3.6实现学生信息管理系统)
类别:脚本大全 浏览量:1191
时间:2022-01-23 02:13:29 python简易版学生管理系统
python3.6实现学生信息管理系统简单版本学生信息管理系统,用python基础语法实现,基于python 3.6
容错率很高的代码,做了很多异常处理功能,出错也不会丢失信息
启动时自动从文件中读取已有学生信息,退出时自动保存
程序分3个模块:
Menu:进行菜单管理
Student_managemant:进行学生信息管理
main:主函数
直接上代码,有注释
Menu.py
|
# -*- coding: UTF-8 -*- import sys import os class Menu(): """ 菜单管理类 作用:向控制台打印学生信息,从控制台获取输入信息,并进行错误处理 """ def welcome( self ): """ 欢迎语句 """ print ( "\n欢迎来到 WilliamCode 学生信息管理系统" ) def top_menu( self ): """ 一级菜单,提示使用者输入命令 """ print ( """ 请选择要进行的操作: 1、添加学生信息 2、删除学生信息 3、查询单个学生信息 4、输出所有学生信息 5、输出所有学生信息,按照成绩由高到低排名 6、保存并退出 #、操作中输入错误时,按Ctrl+C跳转到主菜单 """ ) def top_menu_get_data( self ): """ 获取一级菜单使用者输入的命令 """ self .data = int ( input ()) return [ self .data] def sub_menu1( self ): """ 打印子菜单1并收集信息 子菜单1用于添加学生信息 """ print ( """ 正在添加学生信息: 请输入学生姓名:""" ) self .name = input ().strip() print ( """ 请输入学生年龄:""" ) self .age = int ( input ()) print ( """ 请输入学生成绩""" ) self .score = int ( input ()) return [ self .name, self .age, self .score] def sub_menu23_get_name( self ): """ 收集子菜单2、3的输入信息 子菜单2、3作用是删除或者查询单个学生信息 """ print ( """ 请输入学生姓名:""" ) self .name = input ().strip() return [ self .name] if __name__ = = '__main__' : print ( "Testing Menu Module" ) menu = Menu() print (menu.top_menu()) print (menu.top_menu_get_data()) print (menu.sub_menu1()) print (menu.sub_menu23_get_name()) |
student_managemeng.py
|
# -*- coding: UTF-8 -*- import sys import os class Student(): """ 学生类,用于保存学生信息 只能添加__slots__ = ['name', 'age', 'score']中的三个属性,如需修改,请改变该列表内容 name: 学生姓名 age : 学生年龄 score:学生成绩 """ __slots__ = [ 'name' , 'age' , 'score' ] def __init__( self , name_str, age_int, score_int): """ 学生类的初始化函数 name_str :学生姓名 age_int :学生年龄 score_int:学生成绩 """ self .name = name_str self .age = age_int self .score = score_int def __str__( self ): """ Student类转为字符串信息的函数 调试时使用 """ return "%s : %s\n%s : %d\n %s: %d\n" % ( "name" .center( 10 ), self .name, "age" .center( 10 ), self .age, "score" .center( 10 ), self .score) class Student_Info(): """ 学生信息管理类 用于存储多个学生信息 包含属性: 列表L:元素为Student类的实例 """ def __enter__( self ): """ 错误处理机制的初始化函数 调用with语句时首先调用此函数,然后将返回值返回给as后的变量 功能: 打开存储学生信息的文件,将其信息读入内存中 """ try : file = open ( "student_info.txt" , 'rt' ) except : print ( "文件未找到,请联系管理员..." ) exit( - 1 ) self .L = list () for i in file : if i = = '\n' : break l = i.split() s = Student(l[ 0 ], int (l[ 1 ]), int (l[ 2 ])) self .L.append(s) print ( "学生信息读取成功..." ) file .close() return self def __exit__( self , exc_type, exc_value, exc_tb): """ 错误处理机制的资源回收函数 跳出with语句时调用此函数 功能: 发生错误的情况下存储学生信息到文件中,防止信息丢失 关闭文件流文件 """ file = open ( "student_info.txt" , 'wt' ) for i in self .L: s = "%s %d %d\n" % (i.name, i.age, i.score) file .write(s) file .close() def add_student( self , S): """ 添加学生信息到列表L中 """ if isinstance (S, Student): self .L.append(S) return True return False @staticmethod def print_all(L): """ 类的静态方法 参数为:元素为Student类的列表 功能:按照表格格式打印列表中所有学生信息 """ if len (L) = = 0 : print ( "数据库中没有学生信息,请先添加学生信息" ) return print ( "\n|%s|" % ( "name" .center( 15 )), end = '') print ( "%s|" % ( "age" .center( 15 )), end = '') print ( "%s|" % ( "score" .center( 15 ))) for i in L: print ( "|%s|" % (i.name.center( 15 )), end = '') print ( "%s|" % ( str (i.age).center( 15 )), end = '') print ( "%s|" % ( str (i.score).center( 15 ))) def print_sorted( self ): """ 将学生信息按成绩排序,并调用静态方法print_all()按照格式打印 """ sorted_list = sorted ( self .L, key = key_fun, reverse = True ) self .print_all(sorted_list) def key_fun(s1): """ Student_Info类中规定排序规则的函数,按照分数排名,所以返回score """ return s1.score |
main.py
|
# -*- coding: UTF-8 -*- import sys import os import student_management as sm import menu #用with语句块进行操作,即使发生错误,也能进行资源释放与数据保存工作 #减小程序bug带来的损失 with sm.Student_Info() as si: #初始化菜单类实例,打印欢迎信息 m = menu.Menu() m.welcome() while True : #打印1级菜单 m.top_menu() #获取用户输入的信息,如果发生错误,则重新打印一级菜单 try : op_data = m.top_menu_get_data() except : print ( "输入不合法,请重新选择" ) continue #用户选择添加学生信息 if op_data[ 0 ] = = 1 : #获取并添加学生信息 try : l = m.sub_menu1() s = sm.Student(l[ 0 ], l[ 1 ], l[ 2 ]) if not si.add_student(s): print ( "\n添加失败" ) print ( "\n信息添加成功" ) except : print ( "输入数据不合法,请重新选择" ) #用户选择删除学生信息 elif op_data[ 0 ] = = 2 : #获取学生姓名并删除学生信息,flag用于判断学生信息是否被删除 #如果没有被删除,说明学生不存在,打印错误信息 name = m.sub_menu23_get_name()[ 0 ] flag = False for i in range ( len (si.L)): if si.L[i].name = = name: del si.L[i] flag = True break if flag = = False : print ( "学生不存在,删除失败" ) else : print ( "学生信息删除成功" ) #用户选择查询单个学生信息 elif op_data[ 0 ] = = 3 : #获取学生姓名并查询学生信息,flag用于判断学生信息是否被打印 #如果没有被打印,说明学生不存在,打印错误信息 name = m.sub_menu23_get_name()[ 0 ] flag = False for i in range ( len (si.L)): if si.L[i].name = = name: print (si.L[i]) flag = True if flag = = False : print ( "学生不存在,查询失败" ) #用户选择打印学生信息,直接调用静态函数打印 elif op_data[ 0 ] = = 4 : si.print_all(si.L) #用户选择按照成绩排序打印学生信息,直接调用函数 elif op_data[ 0 ] = = 5 : si.print_sorted() #用户选择退出,直接退出循环,程序下一步将退出with语句块 #退出with语句块后,程序自动调用Student_Info.__exit__()方法,保存学生信息,关闭文件,退出 elif op_data[ 0 ] = = 6 : break |
代码地址为:python学生信息管理系统
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
原文链接:https://blog.csdn.net/WilliamCode/article/details/85378895
您可能感兴趣
- python的模块与包与库(Python 中包/模块的 `import` 操作代码)
- java集成钉钉发送消息(Python实现钉钉发送报警消息的方法)
- python函数使用方法高级用法(Python骚操作之动态定义函数)
- python多进程创建细节(Python实现多进程的四种方式)
- python与mysql的联系(MySQL和Python交互的示例)
- python一组数字求和(Python3数字求和的实例)
- python使用aes加密解密(python实现AES加密与解密)
- python协程解释(在python里从协程返回一个值的示例)
- 如何用python识别微信内容(Python 实现微信防撤回功能)
- python改变字体颜色指令(使用Python自动化破解自定义字体混淆信息的方法实例)
- python3语法规则(详解Python3注释知识点)
- python的条件判断和循环(浅谈Python基础—判断和循环)
- python利用空列表进行数字排序(python实现计数排序与桶排序实例代码)
- python3web编程基础教程(python初学者,用python实现基本的学生管理系统python3代码实例)
- python 数据库实现学生管理系统(python+mysql实现教务管理系统)
- python操作redis(Python获取Redis所有Key以及内容的方法)
- 爱情是什么(爱情是什么最经典的话)
- 乔欣 古装剧中的高颜值(古装剧中的高颜值)
- 怎么才可以财富自由(如何让自己实现财富自由)
- 为什么越来越多年轻人回农村(为什么越来越多年轻人回农村生活)
- 怎么快速学好英语(怎么快速学好英语初中)
- 中国留学生都是富二代吗()
热门推荐
- SQL Server表误删记录如何恢复
- dedecms如何建站(多端全媒体建站系统DEDECMS V6全新发布)
- dedecms标签调用详解(Dedecms待审核文章在列表页显示的方法)
- css3轮播案例(纯CSS3实现图片无间断轮播效果)
- js 图片编辑处理库(javascript input图片上传及预览,FileReader预览图片)
- docker配置说明(Docker安装Kong API Gateway并使用的详细教程)
- pyclips入门(phpinfo的知识点总结)
- linux安装nginx启动页面访问不到(apache,nginx上传目录无执行权限的设置方法)
- docker 构建整个环境(Docker如何快速搭建LNMP环境最新)
- docker自动入门教程(Docker Machine深入详解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9