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

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

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

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

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

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

定义了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()

效果图: 20171209180722429 (1) 20171209180746972 修改学生信息: 20171209180755521 删除学生信息: 20171209181047812

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

点赞
收藏

评论区

加载中...

相关推荐

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

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

​一篇文章总结一下Python库中关于时间的常见操作

前言本次来总结一下关于Python时间的相关操作,有一个有趣的问题。如果你的业务用不到时间相关的操作,你的业务基本上会一直用不到。但是如果你的业务一旦用到了时间操作,你就会发现,淦,到处都是时间操作。。。所以思来想去,还是总结一下吧,本次会采用类型注解方式。time包importtime时间戳从1970年1月1日00:00:00标准时区诞生到现在

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