作业要求
Alex 100000 Rain 80000 Egon 50000 Yuan 30000 -----以上是info.txt文件----- 实现效果: 从info.txt文件中读取员工及其工资信息,最后将修改或增加的员工工资信息也写入原info.txt文件。 效果演示: 1. 查询员工工资 2. 修改员工工资 3. 增加新员工记录 4. 退出 >>:1 请输入要查询的员工姓名(例如:Alex):Alex Alex的工资是:100000。 1. 查询员工工资 2. 修改员工工资 3. 增加新员工记录 4. 退出 >>:2 请输入要修改的员工姓名和工资,用空格分隔(例如:Alex 10):Alex 10 修改成功! 1. 查询员工工资 2. 修改员工工资 3. 增加新员工记录 4. 退出 >>:3 请输入要增加的员工姓名和工资,共空格分割(例如:Eric 100000):Eric 100000 增加成功! 1. 查询员工工资 2. 修改员工工资 3. 增加新员工记录 4. 退出 >>:4 再见!
知识点
1. 函数的基础知识:形参,实参,函数本身
2. 文件的读写,序列化文件,or open文件
- json 文件处理
- txt 文件处理
3. 列表/字典/集合的基础知识
4. 如何让字典简单的序列化
5. 高阶函数
6. 函数的返回值
7. 默认参数和动态参数
8. 三元公式
9. lamda 公式
问题集
1. 高阶函数的调用。在字典中,函数不写()。
main_menu = { "1": ["查询员工工资", search_user], "2": ["修改员工工资", modify_user], "3": ["增加新员工记录", add_user], "4": ["删除员工记录", del_user], "5": ["退出系统", exit] }
但是,在下方调用时,要记得加()
if main_choice in main_menu: main_menu[main_choice][1]()
2. 关于 string.strip() , 如果输入string 中间有空格,这个空格会留存。
staff_info = input('请输入要修改的员工姓名和工资,用空格分隔(例如:Alex 10):').strip() print(staff_info)
请输入要修改的员工姓名和工资,用空格分隔(例如:Alex 10):alex 10
alex 10
3. 添加数字到字典的value中时,记得要写int()。 否在添加的将是个string
My Work
#!usr/bin/env python # -*- coding:utf-8 -*- # __author__ = "JaneY" import sys import json def read_json_db(filename="staff_info.json"): # 读取json文件 with open(filename, "r+", encoding="utf-8") as f: staff_dic = json.load(f) return staff_dic def write_json_db(staff_dic, filename="staff_info.json"): # 写入json文件, save with open(filename, "w+", encoding='utf-8') as f: json.dump(staff_dic, f) def add_user(): # 增加员工 staff_dic = read_json_db() staff_info = input('请输入要增加的员工姓名和工资,共空格分割(例如:Eric 100000):').strip() staff_info_list = staff_info.split(' ') # 返回为: ["Eric", "100000"] staff_name = staff_info_list[0] staff_dic[staff_name] = int(staff_info_list[1]) write_json_db(staff_dic) print("增加成功。新员工{}的工资为:{}".format(staff_name, staff_dic[staff_name])) main() def del_user(): # 删除员工 staff_dic = read_json_db() staff_name = input("请输入要删除的员工姓名(例如:Eric):").strip() if staff_name in staff_dic: del staff_dic[staff_name] write_json_db(staff_dic) print("删除成功") else: print("系统无该员工信息") main() def search_user(): # 查询员工 staff_dic = read_json_db() staff_name = input('请输入要查询的员工姓名(例如:Alex):').strip() if staff_name in staff_dic: print('{}的工资是:{}'.format(staff_name, staff_dic[staff_name])) else: print("无此员工信息") main() def exit(): print('再见') sys.exit() def modify_user(): # 修改信息 staff_dic = read_json_db() staff_info = input('请输入要修改的员工姓名和工资,用空格分隔(例如:Alex 10):').strip() staff_info_list = staff_info.split(" ") # string转为list: ["Alex","10"] staff_name = staff_info_list[0] if staff_name in staff_dic: staff_dic[staff_name] = int(staff_info_list[1]) # 此处必须加 int, 否则在json文件中工资将显示为"10" write_json_db(staff_dic) print("修改成功,{}的工资为{}".format(staff_name, staff_dic[staff_name])) else: print('无此员工信息') main() def main(): # 主逻辑函数 main_menu = { "1": ["查询员工工资", search_user], "2": ["修改员工工资", modify_user], "3": ["增加新员工记录", add_user], "4": ["删除员工记录", del_user], "5": ["退出系统", exit] } print('工资管理系统'.center(25, '-')) for i in main_menu: print(i, main_menu[i][0]) while True: main_choice = input('Dear supervisor, please input your choice 33[31m>>>