Python实现名片管理系统======增删改查操作

目录

 

1.题目:

(1)显示所有功能菜单

(2)退出系统功能

(3)新增学员功能

(4)显示所有学员功能

(5)查询学员功能

查到的话,则输出学员的全部信息,并选择你要进行的操作

 查不到的话,则提示没有这个学员

2.效果:

(1)项目构架:

(2)显示所有功能菜单

(3)退出系统功能

(4)新增学员功能

(5)显示所有学员功能

(6)查询学员功能

(7)查到学员以后选择对学员要进行的操作

输入 1 为修改学员信息

输入 2 为删除学员信息

输入 0 为返回上一级菜单

(8)把学员信息都对齐,使得界面美观一点

3.思路:

(1)首先这种系统应该分成几个模块来进行

(2)显示所有功能菜单   show_menu()

(3)退出系统功能 

(4)新增学员功能  add_student()

(5)显示所有学员功能   show_all_student()

(6)查询学员功能  search_student_by_name()

(7)处理学员信息功能  deal_student()

1.如果用户输入 1 的话,修改学员信息

2.如果用户输入 2的话, 删除学员信息

3.如果用户输入 0 的话,返回上一级目录

(8)修改学员信息功能   modify_student()

(9)美化界面,每条信息对齐    alignment()

4.代码:

(1)整体框架

(2)show_menu()

(3)add_student()

(4)show_all_stuent()

(5)search_student_by_name()

(6)deal_stuent()

(7)modify_student()

(8)alignment()

(9)search_student_by_name()函数经过添加对学员信息的操作功能,以及美化界面之后的代码

(10)show_all_student()经过美化界面之后的代码:

(11)最后的整体代码:



1.题目:

本项目要实现以下功能:

(1)显示所有功能菜单

(2)退出系统功能

(3)新增学员功能

姓名,年龄,性别,手机号码

(4)显示所有学员功能

name   age    gender   tel

(5)查询学员功能

      按照姓名查找学员,

  • 查到的话,则输出学员的全部信息,并选择你要进行的操作

        【1】修改学员信息 【2】删除学员信息 【0】返回上一级目录

  •  查不到的话,则提示没有这个学员


2.效果:

(1)项目构架:

(2)显示所有功能菜单

(3)退出系统功能

(4)新增学员功能

(5)显示所有学员功能


(6)查询学员功能


(7)查到学员以后选择对学员要进行的操作

输入 1 为修改学员信息

输入 2 为删除学员信息

输入 0 为返回上一级菜单


(8)把学员信息都对齐,使得界面美观一点


3.思路:

(1)首先这种系统应该分成几个模块来进行

(2)显示所有功能菜单   show_menu()

             新增学员请按【1】

             显示全部请按【2】

            查询学员请按【3】

           退出系统请按【0】

(3)退出系统功能 

        如果用户输入 0 的话:结束程序

(4)新增学员功能  add_student()

如果用户输入 1 的话:提示用户题词输入学员的姓名,年龄,性别,电话号码

把每个学员的信息都保存在一个字典中

把所有学员的信息保存在列表中

采用列表里面套字典的结构:

student_info_lst=[{'name':'zs','age':10,'gender':'男','tel':'123456'},

                            {'name':'ls','age':32,'gender':'男','tel':'133443256'},.......]

(5)显示所有学员功能   show_all_student()

如果用户输入 2 的话,遍历列表把每个学员的信息打印出来:

for dic in student_info_lst:

    name=dic['name']

    age=dic['age']

    gender=dic['gender]

    tel=dic['tel]

    print('{}\t{}\t{}\t{}'.format(name,age,gender,tel))

(6)查询学员功能  search_student_by_name()

如果用户输入 3 的话,就提示用户输入要查询的学员的姓名;

  •        如果系统里面学员信息的姓名和输入的姓名有一样的话,则输出改名学员的所有信息,并对该名学员的信息进行操作

             (修改,删除,返回上一级菜单),此时调用 deal_stuent()函数

  •         如果没有,则提示这名学员不存在

(7)处理学员信息功能  deal_student()

1.如果用户输入 1 的话,修改学员信息

调用 modify_student()函数

2.如果用户输入 2的话, 删除学员信息

把该名学员的信息从整个系统的列表中删除   student_info_lst.remove(dic)

3.如果用户输入 0 的话,返回上一级目录

(8)修改学员信息功能   modify_student()

用户输入要修改的信息,并保存在列表中,没有修改的仍然是之前的数据

(9)美化界面,每条信息对齐    alignment()

因为GBK编码和UTF-8编码不同,GBK编码:一个汉字占两个字节,UTF-8编码:一个简单字占3个字节

GBK和UTF-8都是一个字符占一个字节。编码方式不同,肯定在排版上会出现问题

https://blog.csdn.net/g_optimistic/article/details/85310823

接下来是alignment()函数的实现:

首先解决编码问题,把输进去的东西按照GBK编码,获取输入内容的长度,要让每一个数据对齐,我们需要限定一个长度,比如说是20,用20个位置减去输入内容的长度,就是需要输入的空格的个数。


4.代码:

(1)整体框架


while True:
    show_menu()
    action_str = input('请输入您要选的数字:')
    lst = ['0', '1', '2', '3']
    if action_str in lst:
        if action_str == '1':
            add_student()
        elif action_str == '2':
            show_all_student()
        elif action_str == '3':
            search_student_by_name()
        elif action_str == '0':
            print('三位慢走,欢迎下次光临')
            break

    else:
        print('---------输错了,请重新输入------------')

(2)show_menu()

def show_menu():
    '''这是显示菜单界面'''
    print('------------------欢迎来到名片管理系统--------------------')
    print('新增学员请按[1]')
    print('显示学员请按[2]')
    print('查询学员请按[3]')
    print('退出系统请按[0]')

(3)add_student()

student_info_lst = []  # 保存所有学生的信息
'''
[{'name':'zs',.......},
 {'name':'ls',.......},
]
'''


def add_student():
    '''这是新增学员功能'''
    print('-------------这是新增学员功能----------------')
    name = input('请输入姓名:')
    age = input('请输入年龄:')
    gender = input('请输入性别:')
    tel = input('请输入手机号码:')
    # print(name, age, gender, tel)
    # 将用户输入的信息保存到一个字典中
    dic = {}
    dic['name'] = name
    dic['age'] = age
    dic['gender'] = gender
    dic['tel'] = tel
    # print(dic)
    # 注意:将用户的信息保存到一个全局变量 student_info_lst 中
    # 列表中,让其他功能使用列表中的数据
    student_info_lst.append(dic)
    # print(lst)

(4)show_all_stuent()

def show_all_student():
    print('-----------显示所有的学员功能---------------')
    if not student_info_lst:
        print('还没有学员呢,请添加学员')
        return
    # 显示学员信息
    # print('name\tage\tgender\tel')
    print('name', 16 * ' ', 'age', 17 * ' ', 'gender', 15 * ' ', 'tel')
    for dic in student_info_lst:
        name = dic['name']
        age = dic['age']
        gender = dic['gender']
        tel = dic['tel']
        # print('{}\t{}\t{}\t{}'.format(name, age, gender, tel))
        print(name, (20 - len(name)) * ' ', age, (20 - len(name)) * ' ', gender, (20 - len(name)) * ' ', tel,
              (20 - len(tel)) * ' ')

(5)search_student_by_name()

def search_student_by_name():
    print('--------------欢迎来到查询学员功能----------------')
    if student_info_lst:
        name = input('请输入要查询的学生的姓名:')
        for dic in student_info_lst:
            if dic['name'] == name:
                # print('name\tage\tgender\tel')
                print('name', 16 * ' ', 'age', 17 * ' ', 'gender', 15 * ' ', 'tel')
                name = dic['name']
                age = dic['age']
                gender = dic['gender']
                tel = dic['tel']
                # print('{}\t{}\t{}\t{}'.format(dic['name'], dic['age'], dic['gender'], dic['tel']))
                print(name, (20 - len(name)) * ' ', age, (20 - len(name)) * ' ', gender, (20 - len(name)) * ' ', tel,
                      (20 - len(tel)) * ' ')

                break
        else:
            print('have not this stuent,please add this student')
            add_student()
    else:
        print('have not atudent,please add student')
        add_student()

(6)deal_stuent()

def deal_student(dic):
    '''修改和删除学员信息'''
    action_str = input('【1】修改 【2】删除 【0】返回上一级菜单,请选择要执行的操作:')
    if action_str == '1':
        '''修改学员信息'''
        # name = input('请输入姓名:')
        # age = input('请输入年龄:')
        # gender = input('请输入性别:')
        # tel = input('请输入手机号码:')
        name = modify_student(dic['name'], '请输入姓名:')
        age = modify_student(dic['age'], '请输入年龄:')
        gender = modify_student(dic['gender'], '请输入性别:')
        tel = modify_student(dic['tel'], '请输入手机号码:')
        dic['name'] = name
        dic['age'] = age
        dic['gender'] = gender
        dic['tel'] = tel


    elif action_str == '2':
        '''删除该学员'''
        student_info_lst.remove(dic)
        # del student_info_lst[dic]
        print('-------------删除成功了--------------')
    elif action_str == '0':
        '''返回上一级菜单'''
        pass

(7)modify_student()

def modify_student(old_value, msg):
    new_value = input(msg)
    if new_value.strip():
        '''msg有内容'''
        return new_value
    else:
        '''msg有内容'''
        return old_value

(8)alignment()

def alignment(s, space):
    '''动态获取长度'''
    s1 = s.encode('gbk')
    lenght = len(s1)
    space = space - lenght
    s = s + space * ' '
    return s

(9)search_student_by_name()函数经过添加对学员信息的操作功能,以及美化界面之后的代码

其中在search_student_by_name()中调用deal_student()

在deal_student()函数中调用modify_student()

def search_student_by_name():
    print('--------------欢迎来到查询学员功能----------------')
    if student_info_lst:
        name = input('请输入要查询的学生的姓名:')
        for dic in student_info_lst:  # 获取所有学员
            if dic['name'] == name:  # 比较学员姓名
                # print('name\tage\tgender\tel')
                # print('name', 16 * ' ', 'age', 17 * ' ', 'gender', 15 * ' ', 'tel')
                name = alignment('name', 15)
                age = alignment('age', 15)
                gender = alignment('gender', 15)
                tel = alignment('tel', 15)
                print(name, age, gender, tel)
                name = dic['name']
                age = dic['age']
                gender = dic['gender']
                tel = dic['tel']
                # print('{}\t{}\t{}\t{}'.format(dic['name'], dic['age'], dic['gender'], dic['tel']))
                # print(name, (20 - len(name)) * ' ', age, (20 - len(name)) * ' ', gender, (20 - len(name)) * ' ', tel)
                name = alignment(dic['name'], 15)
                age = alignment(dic['age'], 15)
                gender = alignment(dic['gender'], 15)
                tel = alignment(dic['tel'], 15)
                print('{}\t{}\t{}\t{}'.format(name, age, gender, tel))
                # 修改学员信息
                # 需要将学员的信息传递到函数
                deal_student(dic)

                break
        else:
            print('have not this stuent')
            # add_student()
    else:
        print('have not atudent,please add student')
        add_student()

(10)show_all_student()经过美化界面之后的代码:

def show_all_student():
    print('-----------显示所有的学员功能---------------')
    if not student_info_lst:
        print('还没有学员呢,请添加学员')
        return
    # 显示学员信息
    # print('name\tage\tgender\tel')
    # print('name', 16 * ' ', 'age', 17 * ' ', 'gender', 15 * ' ', 'tel')
    name = alignment('name', 15)
    age = alignment('age', 15)
    gender = alignment('gender', 15)
    tel = alignment('tel', 15)
    print(name, age, gender, tel)
    for dic in student_info_lst:
        name = dic['name']
        age = dic['age']
        gender = dic['gender']
        tel = dic['tel']
        # print('{}\t{}\t{}\t{}'.format(name, age, gender, tel))
        # print(name, (20 - len(name)) * ' ', age, (20 - len(name)) * ' ', gender, (20 - len(name)) * ' ', tel)
        name = alignment(dic['name'], 15)
        age = alignment(dic['age'], 15)
        gender = alignment(dic['gender'], 15)
        tel = alignment(dic['tel'], 15)
        print('{}\t{}\t{}\t{}'.format(name, age, gender, tel))

(11)最后的整体代码:

student_info_lst = []  # 保存所有学生的信息
'''
[{'name':'zs',.......},
 {'name':'ls',.......},
]
'''


def show_menu():
    '''这是显示菜单界面'''
    print('------------欢迎来到学生管理系统--------------')
    print('新增学员请按[1]')
    print('显示全部请按[2]')
    print('查询学员请按[3]')
    print('退出系统请按[0]')


def add_student():
    '''这是新增学员功能'''
    print('-------------这是新增学员功能----------------')
    name = input('请输入姓名:')
    age = input('请输入年龄:')
    gender = input('请输入性别:')
    tel = input('请输入手机号码:')
    # print(name, age, gender, tel)
    # 将用户输入的信息保存到一个字典中
    dic = {}
    dic['name'] = name
    dic['age'] = age
    dic['gender'] = gender
    dic['tel'] = tel
    # print(dic)
    # 注意:将用户的信息保存到一个全局变量 student_info_lst 中
    # 列表中,让其他功能使用列表中的数据
    student_info_lst.append(dic)
    # print(lst)


def alignment(s, space):
    '''动态获取长度'''
    s1 = s.encode('gbk')
    lenght = len(s1)
    space = space - lenght
    s = s + space * ' '
    return s


def show_all_student():
    print('-----------显示所有的学员功能---------------')
    if not student_info_lst:
        print('还没有学员呢,请添加学员')
        return
    # 显示学员信息
    # print('name\tage\tgender\tel')
    # print('name', 16 * ' ', 'age', 17 * ' ', 'gender', 15 * ' ', 'tel')
    name = alignment('name', 15)
    age = alignment('age', 15)
    gender = alignment('gender', 15)
    tel = alignment('tel', 15)
    print(name, age, gender, tel)
    for dic in student_info_lst:
        name = dic['name']
        age = dic['age']
        gender = dic['gender']
        tel = dic['tel']
        # print('{}\t{}\t{}\t{}'.format(name, age, gender, tel))
        # print(name, (20 - len(name)) * ' ', age, (20 - len(name)) * ' ', gender, (20 - len(name)) * ' ', tel)
        name = alignment(dic['name'], 15)
        age = alignment(dic['age'], 15)
        gender = alignment(dic['gender'], 15)
        tel = alignment(dic['tel'], 15)
        print('{}\t{}\t{}\t{}'.format(name, age, gender, tel))


def modify_student(old_value, msg):
    new_value = input(msg)
    if new_value.strip():
        '''msg有内容'''
        return new_value
    else:
        '''msg有内容'''
        return old_value


def deal_student(dic):
    '''修改和删除学员信息'''
    action_str = input('【1】修改 【2】删除 【0】返回上一级菜单,请选择要执行的操作:')
    if action_str == '1':
        '''修改学员信息'''
        # name = input('请输入姓名:')
        # age = input('请输入年龄:')
        # gender = input('请输入性别:')
        # tel = input('请输入手机号码:')
        name = modify_student(dic['name'], '请输入姓名:')
        age = modify_student(dic['age'], '请输入年龄:')
        gender = modify_student(dic['gender'], '请输入性别:')
        tel = modify_student(dic['tel'], '请输入手机号码:')
        dic['name'] = name
        dic['age'] = age
        dic['gender'] = gender
        dic['tel'] = tel


    elif action_str == '2':
        '''删除该学员'''
        student_info_lst.remove(dic)
        # del student_info_lst[dic]
        print('-------------删除成功了--------------')
    elif action_str == '0':
        '''返回上一级菜单'''
        pass



def search_student_by_name():
    print('--------------欢迎来到查询学员功能----------------')
    if student_info_lst:
        name = input('请输入要查询的学生的姓名:')
        for dic in student_info_lst:  # 获取所有学员
            if dic['name'] == name:  # 比较学员姓名
                # print('name\tage\tgender\tel')
                # print('name', 16 * ' ', 'age', 17 * ' ', 'gender', 15 * ' ', 'tel')
                name = alignment('name', 15)
                age = alignment('age', 15)
                gender = alignment('gender', 15)
                tel = alignment('tel', 15)
                print(name, age, gender, tel)
                name = dic['name']
                age = dic['age']
                gender = dic['gender']
                tel = dic['tel']
                # print('{}\t{}\t{}\t{}'.format(dic['name'], dic['age'], dic['gender'], dic['tel']))
                # print(name, (20 - len(name)) * ' ', age, (20 - len(name)) * ' ', gender, (20 - len(name)) * ' ', tel)
                name = alignment(dic['name'], 15)
                age = alignment(dic['age'], 15)
                gender = alignment(dic['gender'], 15)
                tel = alignment(dic['tel'], 15)
                print('{}\t{}\t{}\t{}'.format(name, age, gender, tel))
                # 修改学员信息
                # 需要将学员的信息传递到函数
                deal_student(dic)

                break
        else:
            print('have not this stuent')
            # add_student()
    else:
        print('have not atudent,please add student')
        add_student()


while True:
    show_menu()
    action_str = input('请输入您要选的数字:')
    lst = ['0', '1', '2', '3']
    if action_str in lst:
        if action_str == '1':
            '''添加新增学员'''
            add_student()
        elif action_str == '2':
            '''显示所有学员信息'''
            show_all_student()
        elif action_str == '3':
            '''查询学员'''
            search_student_by_name()
        elif action_str == '0':
            '''退出系统'''
            print('三位慢走,欢迎下次光临')
            break

    else:
        print('---------输错了,请重新输入------------')

猜你喜欢

转载自blog.csdn.net/g_optimistic/article/details/86253127