1. import os
  2. import time
  3. def emplog(content): #记录操作的一个函数,在删除,添加,修改都会用到这一操作,
  4. f=open("emp.log",mode="a",encoding="utf-8") #所以就提取出来
  5. f.write(content+"\n")
  6. f.flush()
  7. f.close()
  8.  
  9. def tianjia():
  10. while 1:
  11. id = input("请输入员工编号") #添加之前要判断员工编号是否已经存在
  12. f=open("emp.db",mode="r",encoding="utf-8")
  13. for line in f:
  14. d=eval(line.strip())
  15. if d["id"]==id:
  16. print("编号已存在,请重新输入")
  17. break # 存在就跳出循环
  18. else:
  19. f=open("emp.db",mode="a",encoding="utf-8") #不存在走这边
  20. name=input("请输入员工姓名")
  21. birthday=input("请输入员工生日")
  22. salary=input("请输入员工薪水") #把员工信息整合成一个字典
  23. dic={"id":id,"name":name,"birthday":birthday,"salary":salary}
  24. f.write(str(dic)+"\n") #写入文件
  25. f.flush()
  26. f.close()
  27. print("添加成功") #记录所进行的操作,必须在return之前,要不然不会记录
  28. emplog("管理员在%s添加了一名员工,该员工信息为%s"%(time.strftime("%Y-%m-%d %H:%M:%S"),str(dic )))
  29. return
  30. f.close()
  31.  
  32. def chakan(): #查看看功能
  33. f=open("emp.db",mode="r",encoding="utf-8")
  34. print("员工编号\t员工姓名\t员工生日\t员工薪水")
  35. for line in f:
  36. d=eval(line.strip()) #占位符的格式化输出
  37. print("%s\t%s\t%s\t%s"%(d["id"],d["name"],d["birthday"],d["salary"]))
  38. #print(f"{d['empno']}\t{d['name']}\t{d['salary']}\t{d['birthday']}\t")
  39. #真正的格式化输出
  40. f.close()
  41.  
  42. def shanchu(): #删除员工信息
  43. chakan()
  44. id=input("请输入你要删除的员编号")
  45. with open("emp.db",mode="r",encoding="utf-8") as f1,\
  46. open("emp.db_副本",mode="w",encoding="utf-8") as f2:
  47. for line in f1:
  48. d=eval(line.strip())
  49. if d["id"]==id: #删除要记录,也要在continue之前才会被记录到
  50. emplog("管理员在%s删除了一名员工,该员工信息为%s" % (time.strftime("%Y-%m-%d %H:%M:%S"), str(d)))
  51. continue
  52. f2.write(str(d)+"\n")
  53. os.remove("emp.db")
  54. os.rename("emp.db_副本","emp.db")
  55.  
  56. def xiugai(): #修改用工信息
  57. id=input("请输入你要修改的员工的编号")
  58. f=open("emp.db",mode="r",encoding="utf-8")
  59. for line in f: #修改之前要判断员工是否存在
  60. d = eval(line.strip())
  61. if d["id"] == id:
  62. break #存在就跳出循环,进行修改操作
  63. else :
  64. print("没有此员工")
  65. return
  66. f.close()
  67.  
  68. salary=input("请输入员工新的薪水")
  69. with open("emp.db",mode="r",encoding="utf-8") as f1,\
  70. open("emp.db_副本",mode="w",encoding="utf-8") as f2:
  71. for line in f1:
  72. d = eval(line.strip())
  73. if d["id"] == id:
  74. d["salary"]=salary
  75. emplog("管理员在%s修改了一名员工,该员工信息为%s" % (time.strftime("%Y-%m-%d %H:%M:%S"),str(d)))
  76. f2.write(str(d)+"\n")
  77. os.remove("emp.db")
  78. os.rename("emp.db_副本","emp.db")
  79.  
  80. while 1:
  81. menu=("添加员工信息","查看员工信息","删除员工信息","修改员工信息","退出")
  82. for i,j in enumerate(menu,1):
  83. print(i,j)
  84. option=input("请输入相应的编号进行操作")
  85. if option=="":
  86. tianjia()
  87. elif option=="":
  88. chakan()
  89. elif option=="":
  90. shanchu()
  91. elif option=="":
  92. xiugai()
  93. elif option=="":
  94. print("系统退出")
  95. exit()
  96. else:
  97. print("没有这项操作")

函数之-------------------------HR管理操作的更多相关文章

  1. [图形学] Chp9 三维几何变换--栈处理函数与矩阵管理函数的区别

    矩阵管理函数:glLoadIdentity()是把当前活动矩阵设置为单位矩阵. 栈处理函数:glPushMatrix()是将当前活动的变换矩阵复制一份,压入栈顶:glPopMatrix()是破坏当前活 ...

  2. Go语言 函数,工程管理

    Go语言 函数,工程管理 1.无参无返回值函数的使用 package main import "fmt" func main() { // 无参无返回值函数的调用:函数名() fu ...

  3. 解析Linux内核的基本的模块管理与时间管理操作---超时处理【转】

    转自:http://www.jb51.net/article/79960.htm 这篇文章主要介绍了Linux内核的基本的模块管理与时间管理操作,包括模块加载卸载函数的使用和定时器的用法等知识,需要的 ...

  4. LESS是一个CSS预处理器,跨浏览器友好,提供诸如变量,函数, mixins 和操作等功能,可以构建动态CSS

    什么是LESS? LESS是一个CSS预处理器,可以为网站启用可自定义,可管理和可重用的样式表. LESS是一种动态样式表语言,扩展了CSS的功能. LESS也是跨浏览器友好. CSS预处理器是一种脚 ...

  5. C#开发微信门户及应用(6)--微信门户菜单的管理操作

    前面几篇继续了我自己对于C#开发微信门户及应用的技术探索和相关的经验总结,继续探索微信API并分享相关的技术,一方面是为了和大家对这方面进行互动沟通,另一方面也是专心做好微信应用的底层技术开发,把基础 ...

  6. Linux用户和组的管理操作

    用户和组的管理操作 命令中涉及的单词和简写: 用户:user:组:group : 增加:add :  修改:modify  mod ;  删除 : delete  del 增加用户     /etc/ ...

  7. C#-MVC开发微信应用(4)--微信门户菜单的管理操作

    最近对微信接口进行深入的研究,通过把底层接口一步步进行封装后,逐步升级到自动化配置.自动化应答,以及后台处理界面的优化和完善上,力求搭建一个较为完善.适用的微信门户应用管理系统. 在微信门户系统里面, ...

  8. Tensorflow BatchNormalization详解:4_使用tf.nn.batch_normalization函数实现Batch Normalization操作

    使用tf.nn.batch_normalization函数实现Batch Normalization操作 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 吴恩达deeplearnin ...

  9. (转)C#开发微信门户及应用(6)--微信门户菜单的管理操作

    http://www.cnblogs.com/wuhuacong/p/3701961.html 前面几篇继续了我自己对于C#开发微信门户及应用的技术探索和相关的经验总结,继续探索微信API并分享相关的 ...

随机推荐

  1. windows安装和配置JDK

    安装完JDK后配置环境变量  计算机→属性→高级系统设置→高级→环境变量   系统变量→新建 JAVA_HOME 变量 . 变量值填写jdk的安装目录(本人是 E:\Java\jdk1.7.0)   ...

  2. JAVA基础知识总结13(同步)

    好处:解决了线程安全问题. 弊端:相对降低性能,因为判断锁需要消耗资源,还容易产生了死锁. 定义同步是有前提的: 1,必须要有两个或者两个以上的线程,才需要同步. 2,多个线程必须保证使用的是同一个锁 ...

  3. Mysql学习—查看表结构、修改和删除数据表

    原文出自:http://blog.csdn.net/junjieguo/article/details/7668775 查看表结构 查看表结构可以用语句DESCRIBE或SHOW CREATE TAB ...

  4. 【总结整理】IFeatureBuffer

    IFeatureBuffer pRowBuffer = objTabWYDCQ_Tar.CreateFeatureBuffer(); pRowBuffer.Shape = SourceRow.Shap ...

  5. css知多少(4)——解读浏览器默认样式(转)

    css知多少(4)——解读浏览器默认样式   上一节<css知多少(3)——样式来源与层叠规则>介绍了样式的五种来源,咱们再通过一张图回顾一下. 对于上面的三层,咱们大概都比较熟悉了.下面 ...

  6. php验证是否建立数据库,否,则自动建立

    <?php /* 默认建立的数据库为test,数据表为admin,管理员只需要修改DB_PWD(即本地的服务器密码)即可,用户密码采用md5加密 */ define(DB_HOST," ...

  7. vue 滚动加载数据

    参考链接:https://www.npmjs.com/package/vue-infinite-scroll

  8. ueditor 1.2.6使用方法

    本文以php版本为例: 文件下载:http://ueditor.baidu.com/website/download.html 还可以自己先定义内容,然后下载,这样可以帮助我们精简不少东西. 以本地p ...

  9. nginx关闭php报错页面显示

    默认情况下nginx是会显示php的报错的,如果要关闭报错显示,需要在/usr/local/php7/etc/php-fpm.d/www.conf文件里面设置,貌似默认情况下在php.ini关闭没效果 ...

  10. ZROI2018提高day1t3

    传送门 分析 考场上想到了先枚举p的长度,在枚举这个长度的所有子串,期望得分40~50pts,但是最终只得了20pts,这是因为我写的代码在验证中总是不断删除s'中的第一个p,而这种方式不能解决形如a ...