Python学生信息管理系统-简易版(Python基础)

Python学生信息管理系统-简易版

  • 1.学生名片信息管理系统-普通版
  • 2.学生名片信息管理系统-字典版
  • 3.学生名片信息管理系统-函数版
  • 4.学生名片信息管理系统-文件版
  • 5.学生名片信息管理系统-异常版

1.学生名片信息管理系统-普通版

1、添加名片
2、删除名片
3、修改名片
4、查询名片
5、退出系统
6、要求:程序运行后,除非选择退出系统,否则重复执行功能
7、运行界面
Python学生信息管理系统-简易版(Python基础)_第1张图片
参考代码:

default = ['张三', '男', '18']
card_all = [default]
while True:
    print("************************** 名片管理器 **************************")
    print("-------------------------- 1.添加名片 --------------------------")
    print("-------------------------- 2.删除名片 --------------------------")
    print("-------------------------- 3.修改名片 --------------------------")
    print("-------------------------- 4.查询名片 --------------------------")
    print("-------------------------- 5.查询所有 --------------------------")
    print("-------------------------- 6.退出系统 --------------------------")
    print("************************** 名片管理器 **************************")
    action = int(input("请输入对应数字进行操作:"))
    print("-" * 30)  # 分隔线

    if action == 1:
        name = str(input("请输入姓名:"))
        gender = str(input("请输入性别:"))
        age = str(input("请输入年龄:"))
        print("-" * 30)  # 分隔线
        name_card = [name, gender, age]
        card_all.append(name_card)
        print("【Information】:名片添加成功!")
        print("-" * 30)  # 分隔线

    elif action == 2:
        ID = str(input("请输入管理员账号:"))
        password = str(input("请输入密码:"))
        print("-" * 30)  # 分隔线
        if ID == "admin" or password == "123456":
            name = str(input("请输入姓名:"))
            gender = str(input("请输入性别:"))
            age = str(input("请输入年龄:"))
            print("-" * 30)  # 分隔线
            name_card = [name, gender, age]
            if name_card in card_all:
                card_all.remove(name_card)
                print("删除成功!")
            else:
                print("【ERROR】:查无此人,请重新输入!")
        else:
            print("【ERROR】:账号或密码错误,请重新输入!")

    elif action == 3:
        ID = str(input("请输入管理员账号:"))
        password = str(input("请输入密码:"))
        print("-" * 30)  # 分隔线
        if ID == "admin" and password == "123456":
            name = str(input("请输入姓名:"))
            gender = str(input("请输入性别:"))
            age = str(input("请输入年龄:"))
            print("-" * 30)  # 分隔线
            name_card = [name, gender, age]
            if name_card in card_all:
                card_all.remove(name_card)
                new_name = str(input("请输入修改后的姓名:"))
                new_gender = str(input("请输入修改后的性别:"))
                new_age = str(input("请输入修改后的年龄:"))
                print("-" * 30)  # 分隔线
                new_name_card = [new_name, new_gender, new_age]
                card_all.append(new_name_card)
                print("修改成功!")
            else:
                print("【ERROR】:查无此人,请重新输入!")
        else:
            print("【ERROR】:账号或密码错误,请重新输入!")

    elif action == 4:
        ID = str(input("请输入管理员账号:"))
        password = str(input("请输入管理员密码:"))
        print("-" * 30)  # 分隔线
        if ID == "admin" and password == "123456":
            seek = str(input("请输入名字,性别,或年龄之一:"))
            print("-" * 40)  # 分隔线
            i = -1
            k = 1
            j = 1

            while k <= len(card_all):  # 可以用for循环直接找,不用这么麻烦,到下一版本修改
                k += 1
                i += 1
                card = card_all[i]
                if card.count(seek) == 0 and j < len(card_all):
                    j += 1
                    continue
                elif card.count(seek) == 0 and j >= len(card_all):
                    print("【ERROR】:没有找到,请重新输入!")
                else:
                    print(card)
        else:
            print("【ERROR】:账号或密码错误,请重新输入!")

    elif action == 5:
        ID = str(input("请输入管理员账号:"))
        password = str(input("请输入密码:"))
        print("-" * 30)  # 分隔线
        if ID == "admin" and password == "123456":
            print("【INFO】:所有学生信息如下:")
            print(card_all)
        else:
            print("【ERROR】:账号或密码错误,请重新输入!")

    elif action == 6:
        sign = input("【Information】:确定退出吗?(yes/no):")
        if sign == "yes":
            print("-" * 50)
            print("【Information】:谢谢使用,您已成功退出系统!")
            exit()  # break 也可以
        else:
            continue

    else:
        print("【ERROR】:输入有误,请重新输入!")

2.学生名片信息管理系统-字典版

将上述学生名片管理系统数据保存格式改成字典的形式
例如:
把: [[“关羽”, “40”, “男”],[“诸葛亮”, “45”, “男”]]
改成 [{“name”: “关羽”, “age”:“40”, “sex”: “男”},{“name”: “诸葛亮”, “age”:“45”, “sex”: “男”}]

参考答案:

info_list = []  # 用来存放所有学生数据,每一个学生的数据都是一个列表
username = "admin"
password = "123456"
while True:
    # 1、界面
    print("************************** 名片管理器 **************************")
    print("-------------------------- 1.添加名片 --------------------------")
    print("-------------------------- 2.删除名片 --------------------------")
    print("-------------------------- 3.修改名片 --------------------------")
    print("-------------------------- 4.查询名片 --------------------------")
    print("-------------------------- 5.查询所有 --------------------------")
    print("-------------------------- 6.退出系统 --------------------------")
    print("************************** 名片管理器 **************************")
    # 2、输入,接收用户的输入的数字,执行对应的操作
    command = int(input("请输入1到6之间的数字,进行对应操作:"))
    # 3、通过判断用户输入的数字是1,还是2,还是3... 执行对应的操作
    if command == 1:
        # 添加学生信息
        # 让用户输入姓名、年龄、性别
        name = input("请输入姓名:")
        age = input("请输入年龄:")
        sex = input("请输入性别:")
        # [name, age, sex]
        info_list.append({"name": name, "age": age, "sex": sex})
        print("【INFO】:添加成功!")

    elif command == 2:
        # 删除学生信息
        name = input("请输入姓名:")
        # 遍历info_list这个列表(要找到这个人)
        for i in info_list:
            if name in i.values():
                # 在这个列表中就执行删除#
                info_list.remove(i)
                print("【INFO】:删除成功!")
                break  # 已经找到这个人了,后面的人就不需要在遍历
        else:
            print("【ERROR】:查无此人!")
    elif command == 3:
        # 修改学生信息
        name = input("请输入姓名:")

        # 遍历info_list这个列表(要找到这个人)
        for i in info_list:
            if name in i.values():
                # 在这个列表中就执行修改
                age = input("请输入修改后的年龄:")
                sex = input("请输入修改后的性别:")
                # 格式:info_list[下标] =
                info_list[info_list.index(i)] = {"name": name, "age": age, "sex": sex}
                print("【INFO】:修改成功!")
                break  # 已经找到这个人了,后面的人就不需要在遍历
        else:
            print("【ERROR】:查无此人!")
    elif command == 4:
        # 查询学生信息
        name = input("请输入姓名:")

        # 遍历info_list这个列表(要找到这个人)
        for i in info_list:
            if name in i.values():
                print("【INFO】:此人信息如下:%s" % i)
                break  # 已经找到这个人了,后面的人就不需要在遍历
        else:
            print("【ERROR】:查无此人!")
    elif command == 5:
        # 查询所有学生信息
        uname = input("请输入管理员账号:")
        upwd = input("请输入管理员密码:")
        if uname == username and upwd == password:
            print("【INFO】:所有学生信息如下:")
            for i in info_list:
                for k in i.values():
                    print(k, end="\t")
                print()
        else:
            print("【ERROR】:账号或者密码错误!")
    elif command == 6:
        # 退出系统
        # print("【INFO】:退出成功!谢谢使用!")
        sign = input("【INFO】:确定要退出吗?(yes or no):")
        if sign == "yes":
            print("【INFO】:退出成功!谢谢使用!")
            break
        else:
            continue
    else:
        print("【ERROR】:请重新输入1到5之间的数字!")

3.学生名片信息管理系统-函数版

思路:
1.先定义全局变量
2.再定义函数
添加函数 add
查找函数 search
删除函数 remove
修改函数 alter
管理员账号密码验证函数 verify
3.完成主程序函数或界面,将所有内容整合打包
类似于:def main()

4.for  语句:
      if 条件:
          break
      else:
		  # for循环自然结束的时候才会执行这里的代码!!!!
		  # 如果通过break结束的循环,那么这里的代码是不会执行!

参考代码:

# 定义全局变量
info_list = [{"name": '张三', "gender": '男', "age": 27}]
admin_id = "python"
password = "123456"


def add_info_name():  # 输入姓名
    name = str(input("请输入姓名:"))
    return name


def add_info_gender():  # 输入性别
    while True:
        gender = str(input("请输入性别:"))
        if gender in "男女":
            return gender
        else:
            print("【ERROR_1】:性别输入有误,请输入男或女!")


def add_info_age():  # 输入年龄
    while True:
        age = str(input("请输入年龄:"))
        if age.isdigit() is True:
            return age
        else:
            print("【ERROR_2】:年龄输入有误,请输入纯数字!")


def search():  # 按姓名查找
    name = add_info_name()
    for i in info_list:
        if name in i.values():
            print(i)
            return
    else:
        print("【ERROR_3】:查无此人,请重新输入!")


def remove():  # 删除函数
    name = add_info_name()
    for i in info_list:
        if name in i.values():
            info_list.remove(i)
            print("【INFO_1】:删除成功!")
            return
    else:
        print("【ERROR_3】:查无此人,请重新输入!")


def alter():  # 修改函数
    name = add_info_name()
    for i in info_list:
        if name in i.values():
            info_list[info_list.index(i)] = {"name": name, "gender": add_info_gender(), "age": add_info_age()}
            print("【INFO_2】:修改成功!")
            return
    else:
        print("【ERROR_5】:查无此人,请重新输入!")


def verify():
    ad = str(input("请输入管理员账号:"))
    pd = str(input("请输入管理员密码:"))
    if ad == admin_id and pd == password:
        return True
    else:
        print("【ERROR_6】:管理员账号或密码错误,请重新输入!")


def main():
    while True:
        print("************************** 名片管理器 **************************")
        print("-------------------------- 1.添加名片 --------------------------")
        print("-------------------------- 2.删除名片 --------------------------")
        print("-------------------------- 3.修改名片 --------------------------")
        print("-------------------------- 4.查询名片 --------------------------")
        print("-------------------------- 5.查询所有 --------------------------")
        print("-------------------------- 6.退出系统 --------------------------")
        print("************************** 名片管理器 **************************")
        command = str(input("请输入对应数字进行操作:"))  # 采用字符串形式,避免用户输入时报错
        print("-" * 30)  # 分隔线
        if command == "1":  # 采用字符串形式,避免用户输入时报错
            dic = {"name": add_info_name(), "gender": add_info_gender(), "age": add_info_age()}
            info_list.append(dic)
            print("【INFO_3】:添加成功!")
        elif command == "2":
            if verify():
                remove()
            else:
                pass
        elif command == "3":
            if verify():
                alter()
            else:
                pass
        elif command == "4":
            if verify():
                search()
            else:
                pass
        elif command == "5":
            if verify():
                print("【INFO_4】:所有员工信息为:")
                print(info_list)
            else:
                pass
        elif command == "6":
            print("【INFO_5】:谢谢使用,您已成功退出系统!")
            exit()
        else:
            print("【ERROR_7】:输入有误,请重新输入相应数字进行操作!")

main()

4.学生名片信息管理系统-文件版

要求:将数据保存在txt文件中

参考代码:


# 定义全局变量
import os
info_list = []  # 用来存放所有学生数据,每个学生的数据都是一个列表
filename = "info.txt"
admin_id = "python"
password = "123456"


def load_info():  # 每次打开程序都有对文件夹里的信息进行读取,所以要有登陆界面
    global info_list
    f = open(filename, "r", encoding="utf-8")
    str1 = f.read()
    info_list = eval(str1)
    f.close()


def save_info():  # 添加信息后,退出程序时,需要将信息保存到文件夹
    f = open(filename, "w", encoding="utf-8")
    f.write(str(info_list))
    f.close()


def add_info_name():  # 输入姓名
    name = str(input("请输入姓名:"))
    return name


def add_info_gender():  # 输入性别
    while True:
        gender = str(input("请输入性别:"))
        if gender in "男女":
            return gender
        else:
            print("【ERROR_1】:性别输入有误,请输入男或女!")


def add_info_age():  # 输入年龄
    while True:
        age = str(input("请输入年龄:"))
        if age.isdigit() is True:
            return age
        else:
            print("【ERROR_2】:年龄输入有误,请输入纯数字!")


def search():  # 按姓名查找
    name = add_info_name()
    for i in info_list:
        if name in i.values():
            print(i)
            return
    else:
        print("【ERROR_3】:查无此人,请重新输入!")


def remove():  # 删除函数
    name = add_info_name()
    for i in info_list:
        if name in i.values():
            info_list.remove(i)
            print("【INFO_1】:删除成功!")
            return
    else:
        print("【ERROR_3】:查无此人,请重新输入!")


def alter():  # 修改函数
    name = add_info_name()
    for i in info_list:
        if name in i.values():
            info_list[info_list.index(i)] = {"name": name, "gender": add_info_gender(), "age": add_info_age()}
            print("【INFO_2】:修改成功!")
            return
    else:
        print("【ERROR_5】:查无此人,请重新输入!")


def verify():
    ad = str(input("请输入管理员账号:"))
    pd = str(input("请输入管理员密码:"))
    if ad == admin_id and pd == password:
        return True
    else:
        print("【ERROR_6】:管理员账号或密码错误,请重新输入!")


def main():
    if os.path.exists(filename):  # 判断这个文件是否存在,存在才加载
        load_info()
    else:  # 不存在就创建,创建后也要记得加载数据
        f = open(filename, "w")
        f.write("[]")
        f.close()
        load_info()
    while True:
        print("************************** 名片管理器 **************************")
        print("-------------------------- 1.添加名片 --------------------------")
        print("-------------------------- 2.删除名片 --------------------------")
        print("-------------------------- 3.修改名片 --------------------------")
        print("-------------------------- 4.查询名片 --------------------------")
        print("-------------------------- 5.查询所有 --------------------------")
        print("-------------------------- 6.退出系统 --------------------------")
        print("************************** 名片管理器 **************************")
        command = str(input("请输入对应数字进行操作:"))  # 采用字符串形式,避免用户输入时报错
        print("-" * 30)  # 分隔线
        if command == "1":  # 采用字符串形式,避免用户输入时报错
            dic = {"name": add_info_name(), "gender": add_info_gender(), "age": add_info_age()}
            info_list.append(dic)
            print("【INFO_3】:添加成功!")
        elif command == "2":
            if verify():
                remove()
            else:
                pass
        elif command == "3":
            if verify():
                alter()
            else:
                pass
        elif command == "4":
            if verify():
                search()
            else:
                pass
        elif command == "5":
            if verify():
                print("【INFO_4】:所有员工信息为:")
                print(info_list)
            else:
                pass
        elif command == "6":
            sign = input("确定要退出吗?是(y)或否(n):")
            if sign == "y":
                save_info()  # 退出时一定要记得保存信息
                print("【INFO_5】:谢谢使用,您已成功退出系统!")
                exit()
            else:
                continue
        else:
            print("【ERROR_7】:输入有误,请重新输入相应数字进行操作!")

main()

5.学生名片信息管理系统-异常版

要求:每次登陆时对文件夹里的信息进行读取,如果读取不到文件则抛出异常,通过 try…except…来完成。

参考代码:

# 定义全局变量
import os
info_list = []  # 用来存放所有学生数据,每个学生的数据都是一个列表
filename = "info.txt"
admin_id = "python"
password = "123456"


def load_info():  # 每次打开程序都有对文件夹里的信息进行读取,所以要有登陆界面
    global info_list
    try:
        f = open(filename, "r", encoding="utf-8")
    except FileNotFoundError:
        # 捕获到“找不到文件”这个异常
        # 创建文件
        f = open(filename, "w", encoding="utf-8")
        f.write("[]")
        f.close()
        f =open(filename, "r", encoding="utf-8")

    str1 = f.read()
    info_list = eval(str1)
    f.close()


def save_info():  # 添加信息后,退出程序时,需要将信息保存到文件夹
    f = open(filename, "w", encoding="utf-8")
    f.write(str(info_list))
    f.close()


def add_info_name():  # 输入姓名
    name = str(input("请输入姓名:"))
    return name


def add_info_gender():  # 输入性别
    while True:
        gender = str(input("请输入性别:"))
        if gender in "男女":
            return gender
        else:
            print("【ERROR_1】:性别输入有误,请输入男或女!")


def add_info_age():  # 输入年龄
    while True:
        age = str(input("请输入年龄:"))
        if age.isdigit() is True:
            return age
        else:
            print("【ERROR_2】:年龄输入有误,请输入纯数字!")


def search():  # 按姓名查找
    name = add_info_name()
    for i in info_list:
        if name in i.values():
            print(i)
            return
    else:
        print("【ERROR_3】:查无此人,请重新输入!")


def remove():  # 删除函数
    name = add_info_name()
    for i in info_list:
        if name in i.values():
            info_list.remove(i)
            print("【INFO_1】:删除成功!")
            return
    else:
        print("【ERROR_3】:查无此人,请重新输入!")


def alter():  # 修改函数
    name = add_info_name()
    for i in info_list:
        if name in i.values():
            info_list[info_list.index(i)] = {"name": name, "gender": add_info_gender(), "age": add_info_age()}
            print("【INFO_2】:修改成功!")
            return
    else:
        print("【ERROR_5】:查无此人,请重新输入!")


def verify():
    ad = str(input("请输入管理员账号:"))
    pd = str(input("请输入管理员密码:"))
    if ad == admin_id and pd == password:
        return True
    else:
        print("【ERROR_6】:管理员账号或密码错误,请重新输入!")


def main():
    load_info()

    while True:
        print("************************** 名片管理器 **************************")
        print("-------------------------- 1.添加名片 --------------------------")
        print("-------------------------- 2.删除名片 --------------------------")
        print("-------------------------- 3.修改名片 --------------------------")
        print("-------------------------- 4.查询名片 --------------------------")
        print("-------------------------- 5.查询所有 --------------------------")
        print("-------------------------- 6.退出系统 --------------------------")
        print("************************** 名片管理器 **************************")
        command = str(input("请输入对应数字进行操作:"))  # 采用字符串形式,避免用户输入时报错
        print("-" * 30)  # 分隔线
        if command == "1":  # 采用字符串形式,避免用户输入时报错
            dic = {"name": add_info_name(), "gender": add_info_gender(), "age": add_info_age()}
            info_list.append(dic)
            print("【INFO_3】:添加成功!")
        elif command == "2":
            if verify():
                remove()
            else:
                pass
        elif command == "3":
            if verify():
                alter()
            else:
                pass
        elif command == "4":
            if verify():
                search()
            else:
                pass
        elif command == "5":
            if verify():
                print("【INFO_4】:所有员工信息为:")
                print(info_list)
            else:
                pass
        elif command == "6":
            sign = input("确定要退出吗?是(y)或否(n):")
            if sign == "y":
                save_info()  # 退出时一定要记得保存信息
                print("【INFO_5】:谢谢使用,您已成功退出系统!")
                exit()
            else:
                continue
        else:
            print("【ERROR_7】:输入有误,请重新输入相应数字进行操作!")


if __name__ == "__main__":  # 只有本文件才能调用的判定
    main()  # 入口函数

你可能感兴趣的:(python,python,字典)