python面向对象版学生信息管理系统
作者:珂鸣玉 发布时间:2022-07-23 02:16:57
标签:python,学生,管理系统
本文实例为大家分享了python面向对象版的学生信息管理系统的具体代码,供大家参考,具体内容如下
功能:
1.能循环输入内容
2.展示功能
-1.新增名片
-2.显示全部
-3.查询名片
-0.退出系统
3.让用户输入希望执行的操作 例如输入1,2,3,0
4.新增列表
提示用户输入姓名,
输入电话
输入qq号
输入邮箱
提示新增名片成功。
5.显示全部
将所有的名片打印出来,格式如下:
姓名 电话 QQ 邮箱
zs 110 1337765076 110@qq.com
6.查询名片
提示请输入要搜索查找用户的姓名
如果用户存在—>显示用户的信息
-提示用户【1】修改 【2】删除 【0】返回上一级菜单,请选择要执行的操作。
-修改操作,可以修改用户名,电话,qq、邮箱。
删除操作,将用户删除。
返回上一级操作,回到欢迎界面,让用户继续操作。
如果用户不存在–>提示查找的用户不存在。
class StudentManger(object):
student_info_lst = [] # 保存所有学生的信息
@staticmethod
def show_menu():
'''显示所有功能'''
print('欢迎来到学生管理系统')
print('新增学员请按[1]')
print('显示全部请按[2]')
print('查询学员请按[3]')
print('退出系统请按[0]')
def add_student(self):
'''这是新增学员的功能'''
print('-------新增学员功能-------')
name = input('请输入姓名:')
age = input('请输入年龄:')
gender = input('请输入性别:')
phone = input('请输入手机:')
# print(name,age,gender,phone)
# 将用户输入的信息保存到一个字典中。
dic = {}
dic['name'] = name
dic['age'] = age
dic['gender'] = gender
dic['phone'] = phone
# print(dic)
# 注意:将用户数的信息保存到全局变量student_info_lst
# 列表中,让其他功能使用列表中的数据。
self.student_info_lst.append(dic)
# print(student_info_lst)
print('添加成功了...')
def alignment(self,s, space):
'''输出对齐'''
s1 = s.encode('gbk')
space = space - len(s1)
s = s + ' ' * space
return s
def show_all_student(self):
print('-------显示所有的学员功能-------')
if not self.student_info_lst:
print('还没有学员呢,请添加学员')
return
# 显示学员的信息
name = self.alignment('name', 15)
age = self.alignment('age', 15)
gender = self.alignment('gender', 15)
phone = self.alignment('phone', 15)
print(name, age, gender, phone)
for dic in self.student_info_lst:
name = dic['name']
age = dic['age']
gender = dic['gender']
phone = dic['phone']
name = self.alignment(name, 15)
age = self.alignment(age, 15)
gender = self.alignment(gender, 15)
phone = self.alignment(phone, 15)
print(name, age, gender, phone)
def modify_student_info(self,old_value, msg):
'''处理修改用户名时不输入问题'''
new_name = input(msg)
if new_name.strip():
return new_name
else:
return old_value
def deal_student(self,dic):
action_str = input("【1】修改 【2】删除 【0】返回上一级菜单,请选择要执行的操作:")
if action_str == '1':
# 第一版修改
# dic['name'] = input('请输入姓名:')
# dic['age'] = input('请输入年龄:')
# dic['gender'] = input('请输入性别:')
# dic['phone'] = input('请输入电话:')
# 第二版--输入空格后能继续运行。
dic['name'] = self.modify_student_info(dic['name'], '请输入姓名:')
dic['age'] = self.modify_student_info(dic['age'], '请输入年龄:')
dic['gender'] = self.modify_student_info(dic['gender'], '请输入性别:')
dic['phone'] = self.modify_student_info(dic['phone'], '请输入电话:')
print('修改成功!!!')
elif action_str == '2':
self.student_info_lst.remove(dic)
print('删除成功了!!!')
elif action_str == '0':
pass
def search_student_by_name(self):
'''搜索学生'''
print('-------欢迎来到查询学员功能-------')
if self.student_info_lst:
name = input('请输入要查询学员的姓名:')
for dic in self.student_info_lst:
if dic['name'] == name:
name = self.alignment('name', 15)
age = self.alignment('age', 15)
gender = self.alignment('gender', 15)
phone = self.alignment('phone', 15)
print(name, age, gender, phone)
name = dic['name']
age = dic['age']
gender = dic['gender']
phone = dic['phone']
name = self.alignment(name, 15)
age = self.alignment(age, 15)
gender = self.alignment(gender, 15)
phone = self.alignment(phone, 15)
print(name, age, gender, phone)
# 处理学生信息
self.deal_student(dic)
break
else:
print('not have such student')
else:
print('not have student please add student')
while True:
StudentManger.show_menu()
student_manager=StudentManger()
action_str = input('请输入你要选择数字:')
lst = ['0', '1', '2', '3']
if action_str in lst:
if action_str == '1':
student_manager.add_student()
elif action_str == '2':
student_manager.show_all_student()
elif action_str == '3':
student_manager.search_student_by_name()
elif action_str == '0':
print('三位慢走,欢迎下次光临')
break
else:
print('-------sb 输出错了请重新输入...-------')
运行结果:
来源:https://blog.csdn.net/weixin_44239541/article/details/86601664


猜你喜欢
- 要求:用户名:必须是6-10位字母、数字、下划线(这里字母、数字、下划线是指任意组合,没有必须三类均包含)不能以数字开头密码:必须是6-20
- 我们最好从最难的问题开始:“到底什么是函数编程 (FP)?”一个答案可能会说 FP 就是您在使用例如 Lisp、Scheme、Haskell
- 大家都知道JAVA里最流行的是MVC模型的编程方式,如果你不知道MVC的概念,可以去网上搜索下,应该会马上找到N多资料。PHP5推出之后,也
- 数据库基本操作在Flask-SQLAlchemy中,插入、修改、删除操作,均由数据库会话管理。会话用db.session表示。在准备把数据写
- 在python中可以根据字符串来调用函数:1、使用getattr从字符串来调用函数在多进程中,可能传递过来的是一个字符串,那么我怎么来调用一
- 1. 基本介绍tensorflow设备内存管理模块实现了一个best-fit with coalescing算法(后文简称bfc算法)。bf
- 前言: json 模块提供了一种很简单的方式来编码和解码JSON数据。 其中两个主要的函数是 json.dumps() 和 jso
- 想不到大家都这么喜欢用python给女朋友挑钻石,所以我又写了个续。如果看过之前一篇用python挑钻石的文章,那么可以直接从箱线图开始读。
- 前言本文主要给大家介绍了关于python卸载再安装遇到问题的解决方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧解决方法
- 线程池的概念是什么?在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是 如此,虚
- 描述cmp() 方法用于比较两个列表的元素。语法cmp()方法语法:cmp(list1, list2)参数list1 -- 比较的列表。li
- 1、获取秒级时间戳与毫秒级时间戳、微秒级时间戳import timeimport datetimet = time.time()print
- VS Code 装好ESLint 插件报黄线的问题,具体解决方法如下所示:ESLint is disabled since its exec
- 1. base64编码简介用记事本打开exe、jpg、pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,
- 在Django model中对一张表的几个字段进行联合约束和联合索引,例如在购物车表中,登录的用户和商品两个字段在一起表示唯一记录。举个栗子
- 前言为了上班摸鱼方便,今天自己写了个爬取笔趣阁小说的程序。好吧,其实就是找个目的学习python,分享一下。一、首先导入相关的模块impor
- 变量不需要声明Python的变量不需要声明,你可以直接输入:>>>a = 10那么你的内存里就有了一个变量a, 它的值是1
- 两个进程发生死锁的典型例子是:进程T1中获取锁A,申请锁B;进程T2中获取锁B,申请锁A,我们下面动手来演示一下这种情况:1. 创建一个Da
- 改版背景创建专业的电子商务垂直搜索,以及把原有的信息聚合平台转型为在线采购批发交易平台。根据行业特点及交易需要,对原有的零批(小额批发)搜索
- 业务场景因为项目刚上线,目前暂不打算引入其他中间件,所以打算通过 mysql 来实现分布式读写锁;而该业务场景也满足分布式读写锁的场景,抽象