题目

'''
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. Codeforces Round #443 Div. 1

    A:考虑每一位的改变情况,分为强制变为1.强制变为0.不变.反转四种,得到这个之后and一发or一发xor一发就行了. #include<iostream> #include<cst ...

  2. 微信小程序——引入背景图片【六】

    前言 之前写了一些小程序的博文只是看文档边看边写,了解下他,这次可是真枪真刀的做了! 框架使用的是美团的mpvue,我也是一边学习,一边写的,如有错误之处,还望大家指出. 在这里我有个问题,为什么微信 ...

  3. PHP——实现随机打乱一个二维数组

    <?php /* * @Author: wyy * @Date: 2019-01-28 10:26:29 * @Email: 2752154874@qq.com * @Last Modified ...

  4. 【BZOJ4555】【TJOI2016】【HEOI2016】求和 第二类斯特林数 NTT

    题目大意 求\(f(n)=\sum_{i=0}^n\sum_{j=0}^i2^j\times j!\times S(i,j)\\\) 对\(998244353\)取模 \(n\leq 100000\) ...

  5. fullcalendar 日历插件3.9.0 -- 基本插件使用

    以下主要结构,直接执行即可以使用 ,仅用参考: html: <!DOCTYPE html> <html> <head> <title>test</ ...

  6. MT【252】椭圆内接三角形内切圆半径

    已知椭圆$\dfrac{{{x^2}}}{{{a^2}}} + \dfrac{{{y^2}}}{{{b^2}}} = 1$($a > b > 0$),${F_1}$.${F_2}$为其左右 ...

  7. 「HDU6158」 The Designer(圆的反演)

    题目链接多校8-1009 HDU - 6158 The Designer 题意 T(<=1200)组,如图在半径R1.R2相内切的圆的差集位置依次绘制1,2,3,到n号圆,求面积之和(n< ...

  8. Centos 7.3 安装Grafana 6.0

    grafana简介 Grafana是一个完全开源的度量分析与可视化平台,可对来自各种各种数据源的数据进行查询.分析.可视化处理以及配置告警. Grafana支持的数据源: 官方:Graphite,In ...

  9. django从零开始-模型

    1.设置统计表 配置models.py from django.db import models # Create your models here. # 发布会 class Event(models ...

  10. 【算法】php实现斐波那契数列

    斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21.这个数列从第3项开始,每一项都等于前两项之和. 根据这个定义,斐波那契数列的递推公式是:f(n)=f(n-1)+f(n ...