python第二次周末大作业
题目
'''
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第二次周末大作业的更多相关文章
- python第三次周末大作业
''' s18第三周周末⼤作业 模拟博客园系统: 1. 启动程序, 显⽰菜单列表 菜单: 1. 登录 2. 注册 3. ⽂章 4. ⽇记 5. 退出 2. ⽤户输入选项, ⽂章和⽇记必须在登录后才可以 ...
- python第一次周末大作业
#############################作业############################# 1. 三次登录验证 完成用户登录验证 要求: 1. 系统自动生成4位随机数. ...
- python第四次周末大作业
''' 选课系统开发 系统登录需要有两类用户:学生.管理员,针对不用用户提供不同功能: 学生用户 :对于学生用户来说,登陆之后有三个功能 1.查看所有课程 2.选择课程 3.查看所选课程 4.删除已选 ...
- python第二十四天-----作业终于完成啦
作业 1, ATM:模拟实现一个ATM + 购物商城程序 额度 15000或自定义实现购物商城,买东西加入 购物车,调用信用卡接口结账可以提现,手续费5%支持多账户登录支持账户间转账记录每月日常消费流 ...
- python第二十二天-----在做作业当中............
作业 1, ATM:模拟实现一个ATM + 购物商城程序 额度 自定义实现购物商城,买东西加入 购物车,调用信用卡接口结账可以提现,手续费5%支持多账户登录支持账户间转账记录每月日常消费流水提供还款接 ...
- 数据库大作业--由python+flask
这个是项目一来是数据库大作业,另一方面也算是再对falsk和python熟悉下,好久不用会忘很快. 界面相比上一个项目好看很多,不过因为时间紧加上只有我一个人写,所以有很多地方逻辑写的比较繁琐,如果是 ...
- 爬虫综合大作业——网易云音乐爬虫 & 数据可视化分析
作业要求来自于https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3075 爬虫综合大作业 选择一个热点或者你感兴趣的主题. 选择爬取的对象 ...
- 【大数据应用技术】作业十二|Hadoop综合大作业
本次作业的要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3339 前言 本次作业是在<爬虫大作业>的基础上进行的 ...
- python九周周末总结
python九周周末总结 UDP协议 udp协议的交互模式服务端不需要考虑客户端是否退出,你发多少那么他就会按照你发的东西直接去传输给客户端不存在黏包现象 服务端: import socket ser ...
随机推荐
- JavaScript——JS屏蔽F12和右键
键盘表 来源:http://www.phpweblog.net/kiyone/archive/2007/04/19/1138.html 通过onkeydowm监听键盘按下事件,并修改键盘码 //禁止F ...
- LeetCode:152_Maximum Product Subarray | 最大乘积连续子数组 | Medium
题目:Maximum Product Subarray Find the contiguous subarray within an array (containing at least one nu ...
- Android Dialog 简单封装
转载:https://www.cnblogs.com/zjjne/archive/2013/10/03/3350382.html public class MyAlertDialog { //regi ...
- Paths on a Grid POJ - 1942 组合数学 (组合数的快速计算)
题意:格路问题 没什么难度 难点在于如何快速计算相对较大的组合数 思路:运用手写计算组合数的方式进行计算 如c(8,3) 如果手算就是 8*7*6/(3*2*1)这样可以很快得解出 计算代码为: ...
- BZOJ1001 洛谷4001 [BJOI2006]狼抓兔子 题解
题目 这个题目有多种解法,这个题也是一个比较经典的题了,正是因为他的多样的做法,这个题主要难在建图和优化,因为这是一个网格图,所以spfa肯定过不去,所以用最短路解法的话,只能用dij,而网络流也是要 ...
- 【BZOJ3379】【USACO2004】交作业 区间DP
题目描述 数轴上有\(n\)个点,你要从位置\(0\)去位置\(B\),你每秒钟可以移动\(1\)单位.还有\(m\)个限制,每个限制\((x,y)\)表示你要在第\(t\)秒之后(可以是第\(t\) ...
- 【支付宝】支付 系统繁忙,请稍后再试(ALIN10146)
https://openclub.alipay.com/read.php?tid=6918&fid=60 我碰到的是这个问题导致 把signType 改为 RSA2 改成
- 【刷题】BZOJ 2759 一个动态树好题
Description 有N个未知数x[1..n]和N个等式组成的同余方程组: x[i]=k[i]*x[p[i]]+b[i] mod 10007 其中,k[i],b[i],x[i]∈[0,10007) ...
- rt-thread之 for (fn_ptr = &__rt_init_rti_board_start; fn_ptr < &__rt_init_rti_board_end; fn_ptr++) 理解
@2019-01-30 [小记] 利用宏 INIT_EXPORT() --- __attribute__() 将函数重新放置在自定义段,执行时去该段获取函数地址 RT-Thread 的 INIT_BO ...
- 生产者&消费者.py
1.最简单的 --生产者消费者 send.py# !/usr/bin/env python3.5# -*- coding:utf-8 -*-# __author__ == 'LuoTianShuai' ...