学生管理系统
1.1 设计背景
- 管理系统,主要任务就是使用计算机对学生的各种信息进行日常管理,如: 
  
- 添加
 - 删除
 - 修改
 - 查询
 - 退出系统
 
 - 程序设计思路

 
1.2 需求设计分析
- 打印 “学生管理系统” 的功能菜单,提示用户选择功能序号; 
  
- print_menu() 打印函数
 
 
1.3 具体编写程序步骤
1.3.1 输出提示界面
-  
程序的功能界面提示信息的作用就是,让用户根据提示进行操作。
- 注意保存学生信息列表。
 
#1.打印提示界面,将界面封装到一个方法中 def print_menu(): print('1. 添加学生信息') print('2. 删除学生信息') print('3. 修改学生信息') print('4. 显示学生信息') #print('6. 查询所有的学生信息') print('5. 退出系统') #2.将学生信息保存到列表中 student_list_info= [] 
1.3.2 管理系统框架搭建
-  
就是如何调用框架,相当于使用每个功能。
# 2.框架调用设计 # 使用循环重复执行 def main(): count = 0 # 界面计数 while True: print_menu() # 调用菜单显示信息 # 根据菜单信息选择相应提示 num = input("\t请输入操作编号: ") # 获取用户输入编号 count += 1 # 扩展:统计累计次数 if num == '1': # 调用添加函数 pass elif num == "2": # 调用删除函数 pass elif num == "3": # 调用修改函数 pass elif num == "4": # 调用显示学生信息函数 pass elif num == "0": # 退出循环 # 人性设计思路,细节展示 answer = input("亲,真心退出么? ") if answer == "真心": print("程序结束") # end break # 结束整个循环 else: print("输入有误,请重新输入") print(f"======跳转界面{count}次数=======") 
1.3.3 添加学生信息
- 将需要保存的学员信息保存到要保存的列表中 
student_list_info = []保存学员列表。- 添加方法
add_student(): 
 - 添加方法
 - 业务需求,保存学员信息时,需要考虑,如果重复添加情况,所以,学员姓名(学员id)不能重复。
# 3. 添加学生信息模块: def add_student(): # 3.1 添加学生姓名,性别,手机号 # 提示,添加学生信息 new_student_name = input("请录入学生姓名: ") # 提示,添加学生性别 new_student_sex = input("请录入学生性别: ") # 提示,添加学生手机号 new_student_phone = input("请录入学生手机号: ") # 3.2 存储信息 ,使用字典的,以键值对的方式 new_sturdent_info = {} # 注意: 加一个校验 ,变量成员变量(函数中有介绍) #student_list_info 列表字典信息. #通过key进行遍历 for student_key in student_list_info: if student_key['name'] == new_student_name: print(f"学生姓名 {new_student_name} 已存在,请输入其他姓名。") return # 3.2.1 将数据添加到字典,new_sturdent_info['key']=值 # 字典添加键值对的特点:,没有就添加,有就覆盖 new_sturdent_info['name'] = new_student_name new_sturdent_info['sex'] = new_student_sex new_sturdent_info['phone'] = new_student_phone # 3.3需要将新添加的学生信息添加到,学生列表中保存 # 列表中嵌套字典,每一个元素都是一个学生信息 student_list_info= [{},{},{},{}] student_list_info.append(new_sturdent_info) #验证调用: 姓名错误问题. #第一次添加 # add_student() # print(student_list_info) #第二次添加 # add_student() # print(student_list_info) 
1.3.4 删除学生信息
- 删除信息,以名字为主。 
  
- 删除方法 ,
delete_student()。 
 - 删除方法 ,
 - 业务需求: 
  
- 如果没有请提示信息 。
 
 
#1.预先设计调用
	#student_list_info= [{"name":'吴琼',"age":18},{"name":'吴琼2',"age":19}]
#4.删除学生信息
def delete_student():
    #姓名是唯一id不能重复
    key = input("请输入要删除学生的姓名: ")
    for student_info in student_list_info:
        if student_info['name'] == key:
            #如果相同则移除.
            student_list_info.remove(student_info)
            print("删除成功")
        else:
            print("姓名不存在")
            break #跳出即可
#删除
delete_student()
print(student_list_info)
 
1.3.5 修改学生信息
-  
根据学生姓名进行修改,然后将修改后的参数保存在 “列表中的字典”, 并将这些输入的信息替换字典中的旧信息。
- 修改方法 
update_student()。 
# 5. 修改学生信息 def update_student(): student_name = input("请输入要修改学生的姓名: ") # 遍历获取学生信息 for student_info in student_list_info: if student_info['name'] == student_name: new_name = input("请输入修改后的名字: ") new_sex = input("请输入修改后的性别: ") new_phone = input("请输入修改后的手机号: ") # 5.1 将修改的学生信息添加进入 student_info['name'] = new_name student_info['sex'] = new_sex student_info['phone'] = new_phone print("修改成功") break else: print("修改的姓名不存在") #调用函数 update_student() print(student_list_info) - 修改方法 
 
1.3.6 查询学生信息
-  
通过名字查询信息详情
- 查询单个方法 
search_student() 
#6显示学生信息 def search_student(): #根据学生信息查询 #定义一个标志变量 flag = False student_name = input("请输入要查询的学生名字: ") for student_info in student_list_info: if student_info['name'] == student_name: #默认查询到了 flag = True #输出信息 print(f"学生姓名 : {student_info['name']},性别 :{student_info['sex']},手机号:{student_info['phone']}") if flag==False: print("录入的学生姓名不存在!") #模拟方法调用 search_student() - 查询单个方法 
 -  
查询全部
- 相当于遍历全部
 
ef search_all(): for student_info in student_list_info: print(f"学生姓名 : {student_info['name']},性别 :{student_info['sex']},手机号:{student_info['phone']}") 
1.4 将所有方法进行组合
- 定义函数 print_info() , 打印提示信息. 
  
- 自定义while True循环逻辑, 实现: 用户录入什么数据, 就进行相应的操作
 - 自定义函数 add_student(), 实现: 添加学生,姓名必须唯一
 - 自定义函数 delete_student(), 实现: 删除学生, 根据姓名删除
 - 自定义函数 update_student(), 实现: 修改学生信息,根据姓名修改: 姓名, 手机号.
 - 自定义函数 search_student(), 实现: 查询某个学生信息,根据姓名查询
 - 自定义函数 search_all(), 实现: 查询所有学生的信息。
 
 
# 1.打印提示界面,将界面封装到一个方法中
def print_menu():
    print("====欢迎使用学生管理系统====")
    print('1. 添加学生信息')
    print('2. 删除学生信息')
    print('3. 修改学生信息')
    print('4. 显示学生信息')
    print('5. 查询所有的学生信息')
    print('0. 退出系统')
    print("=================")
# 1.1.学生信息保存到列表中
student_list_info = []
# 2.框架调用设计
# 使用循环重复执行
def main():
    count = 0  # 界面计数
    while True:
        print_menu()  # 调用菜单显示信息
        # 根据菜单信息选择相应提示
        num = input("\t请输入操作编号: ")  # 获取用户输入编号
        count += 1  # 扩展:统计累计次数
        if num == '1':
            print("=== 正在使用[添加学生信息] ===")
            # 调用添加函数
            add_student()
        elif num == "2":
            print("=== 正在使用[删除学生信息] ===")
            # 调用删除函数
            delete_student()
        elif num == "3":
            # 调用修改函数
            print("=== 正在使用[修改学生信息] ===")
            update_student()
        elif num == "4":
            print("=== 正在使用[查询单个学生信息] ===")
            # 调用显示学生信息函数
            search_student()
        elif num =="5":
            print("=== 正在使用[查询全部] ===")
            search_all()
        elif num == "0":  # 退出循环
            # 人性设计思路
            answer = input("亲,真心退出么? ")
            if answer == "真心":
                print("程序结束")  # end
                break  # 结束整个循环
        else:
            print("输入有误,请重新输入")
        print(f"======跳转界面{count}次数=======")
# 3. 添加学生信息模块:
def add_student():
    # 3.1 添加学生姓名,性别,手机号
    # 提示,添加学生信息
    new_student_name = input("请录入学生姓名: ")
    # 提示,添加学生性别
    new_student_sex = input("请录入学生性别: ")
    # 3.2 存储信息 ,使用字典的,以键值对的方式
    new_sturdent_info = {}
    # 注意: 加一个校验 ,变量成员变量(函数中有介绍)
    # student_list_info 列表字典信息.
    # 通过key进行遍历
    for student_key in student_list_info:
        if student_key['name'] == new_student_name:
            print(f"学生姓名 {new_student_name} 已存在,请输入其他姓名。")
            return
    # 3.2.1 将数据添加到字典,new_sturdent_info['key']=值
    # 字典添加键值对的特点:,没有就添加,有就覆盖
    new_sturdent_info['name'] = new_student_name
    new_sturdent_info['sex'] = new_student_sex
    # 3.3需要将新添加的学生信息添加到,学生列表中保存
    # 列表中嵌套字典,每一个元素都是一个学生信息  student_list_info= [{},{},{},{}]
    student_list_info.append(new_sturdent_info)
# 4.删除学生信息
def delete_student():
    # 姓名是唯一id不能重复
    key = input("请输入要删除学生的姓名: ")
    for student_info in student_list_info:
        if student_info['name'] == key:
            # 如果相同则移除.
            student_list_info.remove(student_info)
            print("删除成功")
            break
    else:
        print("姓名不存在")
# 5. 修改学生信息
def update_student():
    student_name = input("请输入要修改学生的姓名: ")
    # 遍历获取学生信息
    for student_info in student_list_info:
        if student_info['name'] == student_name:
            new_name = input("请输入修改后的名字: ")
            new_sex = input("请输入修改后的性别: ")
            # 5.1 将修改的学生信息添加进入
            student_info['name'] = new_name
            student_info['sex'] = new_sex
            print("修改成功")
            break
    else:
        print("修改的姓名不存在")
#6显示学生信息
def search_student():
    #根据学生信息查询
    #定义一个标志变量
    flag = False
    student_name = input("请输入要查询的学生名字: ")
    for student_info in student_list_info:
        if student_info['name'] == student_name:
            #默认查询到了
            flag =  True
            #输出信息
            print(f"学生姓名 : {student_info['name']},性别 :{student_info['sex']}")
    if flag==False:
        print("录入的学生姓名不存在!")
def search_all():
    for student_info in student_list_info:
        print(f"学生姓名 : {student_info['name']},性别 :{student_info['sex']}")
# 调用一个主方法
main()
                


















