前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python 学生信息管理系统——文章中源码100%真实有效—–如何将类、初始化属性、模块、循环判断、静态方法等一系列知识点结合起来做一个项目「建议收藏」

Python 学生信息管理系统——文章中源码100%真实有效—–如何将类、初始化属性、模块、循环判断、静态方法等一系列知识点结合起来做一个项目「建议收藏」

作者头像
全栈程序员站长
发布于 2022-09-23 03:23:39
发布于 2022-09-23 03:23:39
51500
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君

这篇博客主要就是把学生管理系统进行源码分享,这段源码很好的将前面所学的全部串在一起。就我个人而言真的是非常有价值。就算你python前面的基础不好,学完这个系统你会有重获新生的感觉。


本文适合需要用python完成课程大作业、python爱好者、python路上的学习者、初学python者、需要将python知识点串在一起的人、上进的人。 **


以下代码看懂我认为python基础就没什么问题了 manageSystem.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# TODO 鸟欲高飞,必先展翅
# TODO 向前的人 :Jhon


from Crawler.XM.student import *
class StudentMange(object):
    def __init__(self):
        #列表方式存储学生信息
        self.Student_list=[]
    # TODO 程序的入口函数
    def run(self):
        # 1、加载文件里面的学员数据
        self.load_student()
        while True:
            #2、显示功能菜单
            self.show_menu()
            # 3、输入目标功能序号
            menu_num=int(input("请输入需要的功能需序号:"))
            #4、根据用户输入的需要执行不同的功能
            if menu_num==1:
                # 添加学员
                self.add_Student()
            elif menu_num==2:
                self.del_Student()
            elif menu_num==3:
                self.modify_student()
            elif menu_num==4:
                self.search_student()
            elif menu_num==5:
                self.show_student()
            elif menu_num==6:
                self.save_student()
            elif menu_num==7:
                break
    # 系统菜单功能
    @staticmethod    #类、对象都可以调用
    # 2.1、显示功能菜单-------打印序号的功能对应的关系
    def show_menu():
        print("请选择如下功能")
        print("1、添加学员")
        print("2、删除学员")
        print("3、修改学员信息")
        print("4、查询学员信息")
        print("5、显示所有的学院信息")
        print("6、保存学员信息")
        print("7、退出系统")

    # 2.2、添加学员
    def add_Student(self):
        # 1、学员输入对应的姓名、性别、手机号
        name=input("请输入您的姓名:")
        gender=input("请输入您的性别:")
        tell=input("请输入您的手机号:")

        # 2、创建学员的对象------类 Student 在Studnet 文件里面,先导入Student模块再创建对象
        students=Student(name,gender,tell)

        # 3、对象添加到学员列表中
        self.Student_list.append(students)
        print(self.Student_list)
        print(students)

    # 2.3、删除新学员信息
    def del_Student(self):
        #1、用户输入目标学员姓名
        del_name=input("亲输入需要删除的学员姓名:")
        #2、遍历学员的列表,用户输入的学员存在则删除学员对象,否则提示不存在
        for i in self.Student_list:
            if del_name==i.name:
                self.Student_list.remove(i)
                break
            else:
                #循环正常结束,循环结束没有删除任何一个人,说明用户输入的目标学员不存在
                print("查无此人")
        print(self.Student_list)
    # 2.4、修改学员信息
    def modify_student(self):
        # 1、输入目标学员姓名
        modify_name=input("请输入要修改的学员性别:")
        #2、遍历列表数据,如果学员存在修改姓名、性别、手机号,否则提示学员不存在
        for i in self.Student_list:
            if modify_name==i.name:
                i.name=input("姓名:")
                i.gender=input("性别:")
                i.tell=input("号码:")
                print(f"修改学员的信息成功,姓名{ 
     i.name},性别{ 
     i.gender},号码{ 
     i.tell}")
                break
        else:
            print("查无此人")
    #2.5、查询学员信息
    def search_student(self):
        # 1、用户输入目标学员姓名
        search_name=input("要搜索的学员姓名")
        # 2、遍历列表,有就打印学员信息,否则提示学员不存在
        for i in self.Student_list:
            if search_name==i.name:
                print("姓名是{i.name},性别是{i.gender},号码是{i.tell}")
                print(f"姓名是{ 
     i.name},性别是{ 
     i.gender},号码是{ 
     i.tell}")
                break
        else:
            print("查无此人")

    # 2.6 、显示所有的学员信息
    def show_student(self):
        # 1、打印我们的表头
        print("姓名:\t性别:\t手机号;")
        # 2、打印学员数据
        for i in self.Student_list:
            print(f"{ 
     i.name}\t{ 
     i.gender}\t{ 
     i.tell}")
    # 2.7 、保存学员信息
    def save_student(self):
        # 1、打开文件
        f=open("student.data","w")
        # 2.1、文件写入数据 学员对象转换为字典
        new_list=[i.__dict__ for i in self.Student_list]
        # 2.2、文件写入字符串数据
        f.write(str(new_list))
        # 3、关闭文件
        f.close()
    # 2.8 加载学员信息
    def load_student(self):
        # 1、打开文件,尝试r打开 有异常就用w
        try:
            f=open("student.data","r")
        except:
            f=open("student.data","w")
        else:
            # 2、读取数据 读取的数据是字符串还原列表类型[{}],转换成学员对象[]
            data=f.read()  #必然是个字符串
            new_list=eval(data)  #转换成字典数据
            self.Student_list=[Student(i["name"],i["gender"],i["tell"]) for i in new_list]
        finally:
            # 3、关闭文件
            f.close()




if __name__ == "__main__":
    Student_manage=StudentMange()
    StudentMange().run()

上面的manageSystem.py是此程序的主程序,包含了静态方法、闭包、函数封装、输入输出判断、初始化属性、调用模块等等。。。。。。


student.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# TODO 鸟欲高飞,必先展翅
# TODO 向前的人 :Jhon

class Student(object):
    def __init__(self,name,gender,tell):
        self.name=name
        self.gender=gender
        self.tell=tell
    def __str__(self):
        return f"{ 
     self.name},{ 
     self.gender},{ 
     self.tell}"

student.py主要是初始化学生的初始化属性,包括名字(name)、性别(gender)、电话号码(tell)。方便上面manageSystem.py调用,使得代码更加简洁。


本文上传纯属是为了带大家分享,记录代码,方便以后查看

以上截图是文件所属目录,目录不对调用的时候是会报错的,所以要注意文件目录。 以上代码看懂我认为python基础就没什么问题了

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/172376.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Vue 虚拟 DOM 的本质与引入原因详解及示例代码
Vue里的虚拟DOM是一种对真实DOM的抽象表示,其结构通常为一个 JavaScript 对象,其内保存了DOM节点的标签、属性、子节点等信息。这种抽象表示能够在内存中高效地进行更新与比较,从而在数据发生改变时,只对需要更新的部分进行真正的DOM操作。虚拟DOM的设计理念源于对真实DOM操作性能问题的反思,因为真实DOM操作通常需要频繁地进行重绘与重排,消耗资源且性能开销较大。
编程小妖女
2025/04/24
1370
Vue 虚拟 DOM 的本质与引入原因详解及示例代码
vue核心之diff
Vue和React在更新dom时,使用的算法相同,都是基于snabbdom。snabbdom翻译为:速度。
hss
2022/02/25
3880
vue核心之diff
大前端百科全书vue专题之虚拟dom+diff算法
因为使用了 Virtual DOM 的原因,Vue.js具有了跨平台的能力,例如:weex、小程序、web、h5、等
玖柒的小窝
2021/10/05
7480
大前端百科全书vue专题之虚拟dom+diff算法
Vue2剥丝抽茧-虚拟 dom 之更新
虚拟 dom 简介、虚拟 dom 之绑定事件 中我们将虚拟 dom 转换为了真实 dom 的结构,介绍了 dom 中 class 、style 、绑定事件的过程。
windliang
2022/08/20
3430
Vue2剥丝抽茧-虚拟 dom 之更新
Vue2剥丝抽茧-虚拟 dom 之移动
虚拟 dom 之更新 中我们假设了 dom 的结构没有发生变化,完成了 dom 属性和内容的更新。这篇文章,我们假设 dom 没有出现增减,只是发生了移动,看一下这种情况下的更新情况。
windliang
2022/08/20
3140
Vue2剥丝抽茧-虚拟 dom 之移动
JavaScript从初级往高级走系列————Virtual Dom
看图,只有修改了的数据才进行了刷新,减少了DOM操作,这其实就是vnode与newVnode对比,找出改变了的地方,然后只重新渲染改变的
FinGet
2019/06/28
4730
Virtual DOM到底有什么迷人之处?如何搭建一款迷你版Virtual DOM库?
我们可以仿照snabbdom库https://github.com/snabbdom/snabbdom.git自己动手实现一款迷你版Virtual DOM库。
Vam的金豆之路
2021/12/01
3470
Virtual DOM到底有什么迷人之处?如何搭建一款迷你版Virtual DOM库?
揭秘Vue中的Virtual Dom
Vue.js 2.0引入Virtual DOM,比Vue.js 1.0的初始渲染速度提升了2-4倍,并大大降低了内存消耗。那么,什么是Virtual DOM?为什么需要Virtual DOM?它是通过什么方式去提升页面渲染效率的呢?这是本文所要探讨的问题。
浪里行舟
2019/07/02
1.1K0
揭秘Vue中的Virtual Dom
Note·React 和 Vue 中 key 的作用
virtual dom,即虚拟 dom,虚拟 dom 对应的是真实 dom,使用 document.CreateElement 和 document.CreateTextNode 创建的就是真实节点。
数媒派
2022/12/01
5850
React && VUE Virtual Dom的Diff算法统一之路 snabbdom.js解读
VirtualDOM是react在组件化开发场景下,针对DOM重排重绘性能瓶颈作出的重要优化方案,而他最具价值的核心功能是如何识别并保存新旧节点数据结构之间差异的方法,也即是diff算法。毫无疑问的是diff算法的复杂度与效率是决定VirtualDOM能够带来性能提升效果的关键因素。因此,在VirtualDOM方案被提出之后,社区中不断涌现出对diff的改进算法,引用司徒正美的经典介绍:
super.x
2019/04/12
1.6K0
virtual DOM 与 diff 算法入门介绍
随着前端框架的流行,Vue 和 React 被越来越多的公司和团队使用,大家今天就跟着我一起来看看 virtual DOM 作为 Vue 和 React 的核心,它到底是什么,为什么会存在 virtual DOM,以及它是如何使用的,最后给大家简单介绍一些 diff 算法的实现。下面我们开始吧~ 通过今天的介绍,我们将了解以下三部分的内容,也希望大家看后有所收获~
零式的天空
2022/03/25
3790
vue面试常见考察点总结
beforeCreate 在实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用。在当前阶段 data、methods、computed 以及 watch 上的数据和方法都不能被访问
bb_xiaxia1998
2022/10/13
8860
Vue源码之虚拟DOM和diff算法(二) 手写diff算法
如果 oldVnode和 newVnode不是同一个虚拟节点,那么就直接暴力删除旧的,插入新的。
赤蓝紫
2023/03/11
6100
Vue源码之虚拟DOM和diff算法(二)    手写diff算法
前端面试题:vue响应式原理 Vdom diff
现在最流行的框架非vue,react莫属,他们流行起来的原因,离不开响应式,因为它在做一些数据更新的时候,会去更新相应的视图,把我们从操作DOM中释放出来,让我们不再去自己操作dom,这也就是所说的数据驱动吧。
全栈程序员站长
2022/09/05
6920
理解DOM Diff算法
虚拟 DOM 出现的背景:在 jQuery 时代,可以自行控制 DOM 操作的时机,手动调整,但是当项目很大时,操作 DOM 的复杂度就会上来,DOM 操作会很耗费性能,操作 DOM 就还需要考虑优化 DOM 操作,提升性能。《高性能 JavaScript》这本书中说,把 DOM 和 JavaScript 各自想象成一个岛屿,它们之间用收费桥梁连接。操作 DOM 后需要经过跨流程通信和渲染线程触发的重新渲染(重绘或者重排),在开发中,应尽量减少操作 DOM。而虚拟 DOM 出现后,更新 DOM 交给框架处理。操作虚拟 DOM 可能并没有操作真实 DOM 快,但是它让开发人员不再把很多精力放在操作 DOM 上,而是专注于处理业务数据。本文以 Vue 原码中的 DOM diff 算法为例,介绍一下这个算法的实现原理。
多云转晴
2020/07/29
1.1K0
理解DOM Diff算法
Vue2剥丝抽茧-虚拟 dom 之自定义组件
虚拟dom 中我们按照 vue 本身的目录接口进行了整理,通过 render 函数返回虚拟 dom 最终完成页面的渲染。这篇文章,我们来实现自定义组件。
windliang
2022/08/20
6910
【Vuejs】571- Vue 虚拟DOM和Diff算法源码解析
所谓的Virtual dom,也就是我们常说的虚拟节点,它是通过JS的Object对象模拟DOM中的节点,然后再通过特定的render方法将其渲染成真实的DOM的节点
pingan8787
2020/04/22
9810
彻底搞懂Vue虚拟Dom和diff算法
使用过Vue和React的小伙伴肯定对虚拟Dom和diff算法很熟悉,它扮演着很重要的角色。由于小编接触Vue比较多,React只是浅学,所以本篇主要针对Vue来展开介绍,带你一步一步搞懂它。
yyds2026
2022/10/17
8260
前端一面常见vue面试题汇总_2023-02-27
eventBus事件总线适用于父子组件、非父子组件等之间的通信,使用步骤如下: (1)创建事件中心管理组件之间的通信
用户10358241
2023/02/27
8130
动手写一个简易的 Virtual DOM,加强阅读源码的能力
你可能听说过Virtual DOM(以及Shadow DOM)。甚至可能使用过它(JSX基本上是VDOM的语法糖)。如果你想了解更多,那么就看看今天这篇文章。
前端小智@大迁世界
2022/06/15
2560
推荐阅读
相关推荐
Vue 虚拟 DOM 的本质与引入原因详解及示例代码
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验