高考后即将分道扬镳,悄悄用python记录下三年情谊的“同学录”

粥白
• 阅读 2108

又到了一年的毕业季, 今天就高考的最后一天了,记得当年中小学快毕业时,班上的同学都在相互交换写同学录,一本小小的同学录,装载着都是青春的回忆,或幼稚或成熟的字体,或长或短的语句,或认真或戏虐的毕业留言,让你瞬间回忆起快淡忘的那些人,那些事。

毕业在即,我教你用python制作一份独一无二的同学录,留给未来回味,不给青春留遗憾

本文使用的逻辑是利用字典来保存学生信息,因为刚好看到了python的settitemgettiem函数,就单独建了一个类来保存学生的信息。

学生的通讯录不外乎增删改查,相对来说是比较简单的,写完这个能加深对字典的基本操作和类、对象的一些具体了解。

主要定义了一个类,来控制整个流程,学生的信息是没有保存在本地硬盘或者数据库,所以一旦关闭数据就不不见了,不过这个程序也是一直无限循环,不主动关闭的话数据就一直都在。

定义了add()函数(用来添加学生信息),del()函数(用来删除信息),update()函数(用来更新修改信息),select()函数(用来查找学生信息),WelcomeInfo()函数,主页面的菜单展示,menu()函数(用来进行菜单选择)。

具体代码如下:

-- coding: utf-8 --

author = 'zhao'

date = '2017/12/9 13:04'

import os

class StudentInfo(object):

"""

用这个类的字典来存储学生通讯录信息

"""

def init(self, args, *kwargs):

self.dict = {}

self.dict[args] = kwargs

魔术函数,让实例化的对象(返回的那个变量)能用列表的方式显示

def getitem(self, key):

return self.dict[key]

魔术函数,让实例化的对象(返回的那个变量)能用字典的方式赋值

def setitem(self, key, value):

self.dict[key] = value

class StudentNotes(object):

"""

这个类用来实例化通讯录

"""

def init(self):

self.Studentsinfo = StudentInfo()

self.meau()

开始菜单界面

def WelcomeInfo(self):

print '' * 20, '欢迎使用xx学生通讯录', '' * 20

print '' * 20, '[1] 查询学生信息 ', '' * 20

print '' * 20, '[2] 添加学生 ', '' * 20

print '' * 20, '[3] 修改学生信息 ', '' * 20

print '' * 20, '[4] 删除学生信息 ', '' * 20

菜单选择功能

菜单函数

def meau(self):

如果输入为0,则一直显示菜单页面

iput = 0

while not iput:

self.WelcomeInfo()

iput = raw_input('请输入括号内数字进行下一步操作:')

根据输入的数字来选择功能函数

if iput in str(range(1, 5)):

if iput == '1':

self.select()

elif iput == '2':

self.add()

elif iput == '3':

self.update()

elif iput == '4':

self.delete()

else:

print u"输入错误!请重新输入"

os.system('cls')

iput = 0

查询函数

def select(self):

print u"输入exit可退出菜单"

obj = raw_input('请输入查询对象的姓名进行查询:').decode('utf-8')

如果输入exit则退回菜单

if obj == 'exit':

self.meau()

else:

try:

如果能找到对象,并没有任何报错,则显示学生信息

student = self.Studentsinfo[obj]

print u"学生姓名为:%s" % obj

print u"地址:%s" % student[0]

print u"手机:%s" % student[1]

print u"年龄:%s" % student[2]

print u"班级:%s" % student[3]

print u"性别:%s" % student[4]

self.select()

except Exception:

print u"找不到你输入的学生,请重新查询"

self.select()

添加学生信息函数

def add(self):

name = raw_input('请输入学生姓名:').decode('utf-8')

address = raw_input('请输入学生地址:').decode('utf-8')

mobile = raw_input('请输入学生手机号码:').decode('utf-8')

age = raw_input('请输入学生年龄:').decode('utf-8')

classes = raw_input('请输入学生班级:').decode('utf-8')

sex = raw_input('请输入学生性别:男 or 女:').decode('utf-8')

如果输入的信息不为空,则添加成功,否则重新填写

if name and address and mobile and age and classes and sex:

这个类的赋值就相当于字典的赋值方法,后面这一堆都是属于一个value,所以要一起赋值

self.Studentsinfo[name] = (address, mobile, age, classes, sex)

print u"添加成功!"

self.meau()

else:

print u"输入有误请重新输入"

self.add()

修改学生信息函数

def update(self):

print u"输入exit可退出菜单"

upname = raw_input('请输入需要修改信息的学生姓名进行修改:').decode('utf-8')

if upname == 'exit':

self.meau()

else:

try:

update = self.Studentsinfo.dict[upname]

print u'请修改%s相关信息:' % upname

address = raw_input('请输入学生地址:').decode('utf-8')

mobile = raw_input('请输入学生手机号码:').decode('utf-8')

age = raw_input('请输入学生年龄:').decode('utf-8')

classes = raw_input('请输入学生班级:').decode('utf-8')

sex = raw_input('请输入学生性别:男 or 女:').decode('utf-8')

self.Studentsinfo[upname] = (address, mobile, age, classes, sex)

print u"修改成功!"

self.update()

except Exception:

print u'输入错误或者没有此学生!'

self.update()

删除学生信息

def delete(self):

print u"输入exit可退出菜单"

dname = raw_input('请输入要删除学生的姓名').decode('utf-8')

if dname == 'exit':

self.meau()

else:

try:

student = self.Studentsinfo[dname]

print u"该学生信息为:"

print u"地址:%s" % student[0]

print u"手机:%s" % student[1]

print u"年龄:%s" % student[2]

print u"班级:%s" % student[3]

print u"性别:%s" % student[4]

sure = raw_input('确认删除请输入yes,退回请输入no:')

if sure == 'yes':

self.Studentsinfo.dict.pop(dname)

print "删除成功"

else:

pass

except Exception:

print "找不到此学生,请重新输入"

self.delete()

if name == 'main':

Note = StudentNotes()

效果图: 高考后即将分道扬镳,悄悄用python记录下三年情谊的“同学录” 高考后即将分道扬镳,悄悄用python记录下三年情谊的“同学录” 修改学生信息: 高考后即将分道扬镳,悄悄用python记录下三年情谊的“同学录” 删除学生信息: 高考后即将分道扬镳,悄悄用python记录下三年情谊的“同学录”

悄悄和你们说哦,一定要学着做这个哦,这样你们的男神(女神)的联系方式不就到手了嘛, 有了联系方式,爱情还会远嘛,对头不。(麻烦各位客官一键三连)

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Karen110 Karen110
3年前
​一篇文章总结一下Python库中关于时间的常见操作
前言本次来总结一下关于Python时间的相关操作,有一个有趣的问题。如果你的业务用不到时间相关的操作,你的业务基本上会一直用不到。但是如果你的业务一旦用到了时间操作,你就会发现,淦,到处都是时间操作。。。所以思来想去,还是总结一下吧,本次会采用类型注解方式。time包importtime时间戳从1970年1月1日00:00:00标准时区诞生到现在
Stella981 Stella981
3年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Stella981 Stella981
3年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
暗箭伤人 暗箭伤人
1年前
【www.ithunter.club】 20230922下午
不容易的2023年,我们一起努力【www.ithunter.club】(2023092208:00:00.8872062023092216:00:00.887206)1.人事招聘专员数名(可选远程或入职)2.招聘向坐标东京Yahoo、Shift、L
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这