用Python做的简单学生通讯录

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()

效果图



修改学生信息


删除学生信息



猜你喜欢

转载自blog.csdn.net/zhaogeno1/article/details/78760411