python学生管理系统(增删改查以及菜单返回操作)

 (一)功能要求

功能:
1.能循环输入内容
2.展示功能
  -1.新增名片
  -2.显示全部
  -3.查询名片
  -0.退出系统
3.让用户输入希望执行的操作 例如输入1,2,3,0
4.新增列表
  - 提示用户输入姓名,
  - 输入电话
  - 输入qq号
  - 输入邮箱
  - 提示新增名片成功。
5.显示全部
  - 将所有的名片打印出来,格式如下:
  姓名            电话            QQ                    邮箱
  zs            110            1337765076            [email protected]

6.查询名片
  - 提示请输入要搜索查找用户的姓名
    - 如果用户存在--->显示用户的信息
      -提示用户【1】修改 【2】删除 【0】返回上一级菜单,请选择要执行的操作。
        -修改操作,可以修改用户名,电话,qq、邮箱。
        - 删除操作,将用户删除。
        - 返回上一级操作,回到欢迎界面,让用户继续操作。

    - 如果用户不存在-->提示查找的用户不存在。

(二)我的思路

(1)一个人有四个信息

(2)建立相应的四个信息列表(姓名列表,电话列表,QQ列表,邮箱列表),各列表同一索引是同一个人的四项信息

(3)添加一个人的信息时,各列表同时append各自的信息

(4)展示全部内容时,根据各列表长度,将各列表同时遍历输出

(5)修改一个人的信息时,用 name.index(想修改的姓名)找到下标,将这一索引给送给各列表进行同时修改

(6)删除同理,同一下标全部删除

(7)返回菜单就重新调用一次函数

(三)代码实现

开始这个对齐函数,keyi可以先不管,对本文影响不大

若想搞明白  那么:   https://blog.csdn.net/sinat_38068807/article/details/85804217

# 令输出格式对齐的函数,我们先不理他,先看思路
# 若想搞明白  那么   https://blog.csdn.net/sinat_38068807/article/details/85804217
def align(str1, space, align='left'):
    length = len(str1.encode('gbk'))
    space = space - length if space > length else 0
    if align == 'left':
        str1 = str1 + ' '*space
    elif align == 'right':
        str1 = ' ' * space + str1
    elif align == 'center':
        str1 = ' ' * (space // 2) + str1 + ' ' * (space - space // 2)
    return str1


# 各列表每次添加、删除、展示都会一同操作,同一人的信息在各列表的同一索引
name_lst = []
tel_lst = []
qq_lst = []
mail_lst = []


# 定义为函数方便返回主菜单,需要返回的时候重新调用一次函数就好了
def func():
    while True:
        print('-1.新增名片\n-2.显示全部\n-3.查询名片\n-0.退出系统')   # 展示信息
        choice = input('请输入操作序号:\n')

        # 判断序号合法
        while not ('0' <= choice <= '3'):
            choice = input('输入错误,请重新输入:\n')

        # 根据序号进行相应功能操作
        if choice == '0':                                           # 0.退出系统
            print('感谢使用!')
            break

        elif choice == '1':                                         # 1.新增名片
            print('您选择新增列表,请根据提示输入内容')
            add_name = input('请输入姓名')
            while not add_name:                                     # 姓名合法
                add_name = input('姓名不能为空,请重新输入:')
            name_lst.append(add_name)
            tel_lst.append(input('请输入电话号码:'))
            qq_lst.append(input('请输入QQ号:'))
            mail_lst.append(input('请输入邮箱:'))
            print('新增名片成功。')

        elif choice == '2':                                         # 2.显示全部
            print(align('姓名',30),align('电话',30),align('QQ',30),align('邮箱',30))

            # 每个列表遍历一遍,因为每个列表同一下标就是同一个人的信息
            i = 0
            while i < len(name_lst):
                print(align(name_lst[i],30), align(tel_lst[i],30),
                      align(qq_lst[i],30), align(mail_lst[i],30))
                i += 1

        elif choice == '3':                                         # 3.查询名片
            find_name = input('请输入要查找的姓名:\n')
            while not (find_name in name_lst):              # 判断查找姓名输入合法
                find_name = input('您输入的客户不存在,请重新输入(输入Q或q退回主菜单):')
                if find_name == 'q' or find_name == 'Q':    # 为避免用户一直输入不对,可退出
                    func()

            # 找到要查找的名字在姓名列表的索引,然后将各列表对应索引输出
            name_index = name_lst.index(find_name)
            print(align('姓名', 30), align('电话', 30), align('QQ', 30), align('邮箱', 30))
            print(align(name_lst[name_index], 30), align(tel_lst[name_index], 30),
                  align(qq_lst[name_index], 30), align(mail_lst[name_index], 30))

            operate_num = input('您可以进行以下操作:\n【1】修改 【2】删除 '
                                '【0】返回上一级菜单\n请选择要执行的操作:')
            if operate_num == '0':                                  # 【0】返回上一级菜单
                func()
            elif operate_num == '1':                                # 【1】修改
                aim_name = input('您想要修改谁:')
                # 根据名字找到此人信息在各列表中的索引,集体修改各列表同一索引内容
                while not(name_lst.index(aim_name)):  # 该人不在则提示重新输入
                    aim_name = input('该人不存在,重新输入或输入Q、q退回主菜单:')
                    if aim_name == 'q' or aim_name == 'Q':
                        func()
                modified_index = name_lst.index(aim_name)
                name_lst[modified_index] = input('姓名修改为:')
                while not name_lst[modified_index]:
                    name_lst[modified_index] = input('姓名不能为空,请重新输入:')

                tel_lst[modified_index] = input('电话修改为:')
                qq_lst[modified_index] = input('QQ修改为:')
                mail_lst[modified_index] = input('邮箱修改为:')
            elif operate_num == '2':                                # 【2】删除
                del_name = input('您想要删除谁:')
                while not(del_name in name_lst):
                    del_name = input('该人不存在,重新输入或输入Q、q退回主菜单:')
                    if del_name == 'q' or del_name == 'Q':
                        func()
                # 根据名字找到此人信息在各列表中的索引,集体删除各列表同一索引内容
                del_index = name_lst.index(del_name)
                del name_lst[del_index]
                del tel_lst[del_index]
                del qq_lst[del_index]
                del mail_lst[del_index]


func()





 

你可能感兴趣的:(python)