Python版本:2.7.13 工具:Pycharm
突然想起之前在学校学C的时候,课程设计是用C写一个通讯录出来,那时候没有好好学C,最后做的时候都是从网上Copy出来的,正好最近一直在学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()
效果图
修改学生信息
删除学生信息