题目

'''
HR人力资源管理.
1. 菜单: ("查看员⼯信息","添加员⼯信息", "修改员⼯信息", "删除员⼯信息", "退出")
2. 添加员⼯信息:
⽤户输⼊员⼯的基本信息(id, name, birthday, salary, input_time),
将员⼯信息写⼊到⽂件emp.db⽂件内
3. 修改员⼯信息:
显示所有员⼯信息. 然后让⽤户选择要修改的员⼯的id. 然后让⽤户输⼊员⼯的
⼯资, 将员⼯的⼯资修改为⽤户输⼊的⼯资. 其余内容不做改动
4. 删除员⼯信息:
显示所有员⼯信息. 然后⽤户选择要删除的员⼯id, 根据⽤户输⼊的id删除该员
⼯的全部信息
5. 查看员⼯信息:
显示出所有员⼯的基本信息.
以上操作都需要围绕着emp.db来完成.
关于时间的处理: ⾃⼰搜索time模块. 主要是针对input_time. birthday不⽤处理. ⽤户
输⼊什么就是什么.
扩展(升级题):
⽤户的每⼀次操作成功都要将⽤户执⾏的操作记录在emp.log⽂件中(查看员⼯信息除外).
例如:
⽤户选择"添加员⼯信息". 当添加动作执⾏完毕, 在emp.log中记录⼀句话: 管理
员在xxxx-xx-xx hh:mm:ss时间执⾏了添加员⼯信息操作. 添加的员⼯信息为: xxx
以此类推. 每次操作成功后都要记录信息. (查看员⼯信息除外)
emp.db ⽂件中的内容格式⾃⼰定义. 这个没有要求. 但是要符合你⾃⼰的设计需求.
'''
import time
import os
print("欢迎来到HR⼈⼒资源管理系统")
menu = ("查看员⼯信息", "添加员⼯信息", "修改员⼯信息", "删除员⼯信息", "退出")
#  ("查看员⼯信息","添加员⼯信息", "修改员⼯信息", "删除员⼯信息", "退出")
import time
import os def log(content):
f = open("emp.log", mode="a", encoding="utf-8")
f.write(content+"\n")
f.flush()
f.close() def chakan(): # 第二个
print("编号\t\t名字\t\t生日\t\t收入\t\t录入时间")
f = open("emp.db", mode="r", encoding="utf-8")
for line in f:
lst = line.strip().split("_")
print(lst[0]+"\t"+lst[1]+"\t"+lst[2]+"\t"+lst[3]+"\t"+lst[4])
print("查看完毕!!!!") def tianjia(): # 第一个
flag = True
while flag:
id = input("请输入员工的id:")
# 判定id是否可用
f = open("emp.db", mode="r", encoding="utf-8")
for line in f:
if id == line.strip().split("_")[0]:
print("对不起. id已经重复了. 不可用. 请重新输入")
break
else:
print("id不重复,可以使用")
flag = False name = input("请输入员工的name:")
birthday = input("请输入员工的birthday:")
salary = input("请输入员工的salary:")
input_time = time.strftime("%Y-%m-%d %H:%M:%S") # 获取系统时间 f = open("emp.db", mode="a", encoding="utf-8")
f.write(id+"_"+name+"_"+birthday+"_"+salary+"_"+input_time+"\n")
f.flush()
f.close()
print("添加成功!!!") log(f"管理员xxx在{input_time}添加了一个员工, 该员工信息为: {id}_{name}_{birthday}_{salary}_{input_time}") def xiugai(): # 第四个
flag = True
while flag:
id = input("请输入你要修改的员工的id:") f = open("emp.db", mode="r", encoding="utf-8")
for line in f:
lst = line.strip().split("_")
if id == lst[0]:
print("当前员工的信息是: %s\t%s\t%s\t%s\t%s" % (lst[0], lst[1], lst[2],lst[3],lst[4]) )
flag = False
break
else:
print("id不存在,请重新输入")
f.flush()
f.close() salary = input("请输入该员工的最新工资") with open("emp.db", mode="r", encoding="utf-8") as f1, \
open("emp.db_副本", mode="w", encoding="utf-8") as f2:
for line in f1:
lst = line.strip().split("_")
if id == lst[0]:
line = f"{id}_{lst[1]}_{lst[2]}_{salary}_{time.strftime('%Y-%m-%d %H:%M:%S')}"
f2.write(line) # 修改 os.remove("emp.db")
os.rename("emp.db_副本", "emp.db") print("修改员工信息完毕!!!") def shanchu(): # 第三个
id = input("请输入你要删除的员工的id")
with open("emp.db", mode="r", encoding="utf-8") as f1, \
open("emp.db_副本", mode="w", encoding="utf-8") as f2:
for line in f1:
if id == line.strip().split("_")[0]:
continue
f2.write(line) # 不要删除的数据 os.remove("emp.db")
os.rename("emp.db_副本", "emp.db")
print("删除完毕!!!!") menu = ("查看员工信息","添加员工信息", "修改员工信息", "删除员工信息", "退出") while 1:
for i in range(len(menu)):
print(i + 1, menu[i]) n = input("请输入你要执行的菜单:")
if n == '':
chakan()
elif n == '':
tianjia()
elif n == "":
xiugai()
elif n == "":
shanchu()
elif n == "":
print("程序退出")
exit()
else:
print("对不起. 您输入的菜单不存在. 请重新输入")

python第二次周末大作业的更多相关文章

  1. python第三次周末大作业

    ''' s18第三周周末⼤作业 模拟博客园系统: 1. 启动程序, 显⽰菜单列表 菜单: 1. 登录 2. 注册 3. ⽂章 4. ⽇记 5. 退出 2. ⽤户输入选项, ⽂章和⽇记必须在登录后才可以 ...

  2. python第一次周末大作业

    #############################作业############################# 1. 三次登录验证 完成用户登录验证 要求: 1. 系统自动生成4位随机数. ...

  3. python第四次周末大作业

    ''' 选课系统开发 系统登录需要有两类用户:学生.管理员,针对不用用户提供不同功能: 学生用户 :对于学生用户来说,登陆之后有三个功能 1.查看所有课程 2.选择课程 3.查看所选课程 4.删除已选 ...

  4. python第二十四天-----作业终于完成啦

    作业 1, ATM:模拟实现一个ATM + 购物商城程序 额度 15000或自定义实现购物商城,买东西加入 购物车,调用信用卡接口结账可以提现,手续费5%支持多账户登录支持账户间转账记录每月日常消费流 ...

  5. python第二十二天-----在做作业当中............

    作业 1, ATM:模拟实现一个ATM + 购物商城程序 额度 自定义实现购物商城,买东西加入 购物车,调用信用卡接口结账可以提现,手续费5%支持多账户登录支持账户间转账记录每月日常消费流水提供还款接 ...

  6. 数据库大作业--由python+flask

    这个是项目一来是数据库大作业,另一方面也算是再对falsk和python熟悉下,好久不用会忘很快. 界面相比上一个项目好看很多,不过因为时间紧加上只有我一个人写,所以有很多地方逻辑写的比较繁琐,如果是 ...

  7. 爬虫综合大作业——网易云音乐爬虫 & 数据可视化分析

    作业要求来自于https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3075 爬虫综合大作业 选择一个热点或者你感兴趣的主题. 选择爬取的对象 ...

  8. 【大数据应用技术】作业十二|Hadoop综合大作业

    本次作业的要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3339 前言 本次作业是在<爬虫大作业>的基础上进行的 ...

  9. python九周周末总结

    python九周周末总结 UDP协议 udp协议的交互模式服务端不需要考虑客户端是否退出,你发多少那么他就会按照你发的东西直接去传输给客户端不存在黏包现象 服务端: import socket ser ...

随机推荐

  1. 安卓Android基础—第二天

    测试的相关概念 好的软件不是开发出来的,是不断测试出回来的 根据是否知道源代码 黑盒测试 白盒测试 根据测试的粒度 方法测试 单元测试 集成测试 系统测试 根据测试的暴力程度 压力测试(谷歌工程师提供 ...

  2. 如何简单实现接口自动化测试(基于 python) 原博主地址https://blog.csdn.net/gitchat/article/details/77849725

    如何简单实现接口自动化测试(基于 python) 2017年09月05日 11:52:25 阅读数:9904 GitChat 作者:饿了么技术社区 原文:如何简单实现接口自动化测试(基于 python ...

  3. Jdk1.6编译,1.7执行,1.7中没有需要的类,为何不会报错

      今天发现一个非常奇怪的问题   import sun.misc.BASE64Decoder; 我在本地引入了jdk1.6中的包,编译也用1.6没问题,但是实际上jdk1.7并没有这个包.在Linu ...

  4. Netty如何实现Reactor模式

    在前面的文章中(Reactor模型详解),我们讲解了Reactor模式的各种演变形式,本文主要讲解的则是Netty是如何实现Reactor模式的.这里关于Netty实现的Reactor模式,需要说明的 ...

  5. 【BZOJ1022】小约翰的游戏(博弈论)

    [BZOJ1022]小约翰的游戏(博弈论) 题面 BZOJ 题解 \(Anti-SG\)游戏的模板题目. #include<iostream> #include<cstdio> ...

  6. [CF52C]Circular RMQ【线段树】

    题目大意 给你一个环形数列,完成环形数列上区间加法和区间求最小值. 分析 算是一道比较水的线段树模板题. 如果l>r的话,那么修改l,n和1,r区间. 不然的话那么就修改l,r区间. 其他的基础 ...

  7. 152. Maximum Product Subarray 以及 讨论【最大连续子序列】

    题目大意: 连续最大子段积 题目思路: 最大值只能产生在一个正数x一个正数,一个负数乘一个负数,所以维护两个值,一个区间最大值,一个最小值 其他的话: 在讨论这个问题之前,我先来说一说大一刚开学就学了 ...

  8. 队列模式&主题模式

    # RabbitMQ 消息中间件 **Advanced Message Queuing Protocol (高级消息队列协议** The Advanced Message Queuing Protoc ...

  9. POJ - 3984迷宫问题(最短路径输出)

    题目链接:http://poj.org/problem?id=3984 题目: 迷宫问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submiss ...

  10. map映照容器

    //map映照容器是由一个键值和一个映照数据组成的,键值与映照数据之间具有一一映照的关系 //map映照容器的键值不允许重复 ,比较函数值对元素 //的键值进行比较,元素的各项数据可通过键值检索出来 ...