python实现员工管理系统


Posted in Python onJanuary 11, 2018

这是一个简易的员工管理系统,实现最简单的功能:

1.登录用户密码验证(错误三次自动退出)
2.支持文本员工的搜索、添加、删除、修改
3.一级层级多个选项、二级层级多个选项,都支持判空、退出、返回上一层级
4.针对删除和修改有员工当前自动搜索到的结果进行参照修改和特殊提醒是否删除

用到的基础知识点比较多:

1.计数器
2.while True 以及给while做退出层级标记
3.if…elif…else 的嵌套使用
4.continue 和 break 以及简单函数定义def
5.键盘抓取 raw_input 以及通过 os.system(‘clear')来调用linux中shell下的命令。
6.文本的读取写入原理(单读的不能实际写入,只能通过转存文本覆盖写入。)
如果是‘a+'则只为读取并可通过'writelines()'来写入,是追加写入
如果是‘w+'则为写入,可通过‘writelines()'来写入,是覆盖写入
7.列表的构成原理,列表的转换,列表的定位以及下标获取 listname.index(line)
8.特别需要注意程序执行前后顺序以及严格的缩进格式

python实现员工管理系统

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
import sys
import os

#系统的用户登录
#os.system('clear')
time = 0
while True: #this is login
  if time < 3:
    name = raw_input("\033[1mplease input your login account:").strip()
    passwd = raw_input("\033[1mplease input your login password:").strip()
    if len(name) == 0:        #.strip()意为去除空格
      print("\033[31mIt's not allow empty input!\n")
      continue
    elif name == 'zhangjun' and passwd == '123.com':
      print("\033[32mYour account and password right!")
      pass
    else:
      print("\033[31mYour account or password error!")
      time += 1
      continue
    break
  else:
    print("\033[31mYou are wrong three times, has already quit from the system!")
    sys.exit()

#系统的选择界面
#os.system('clear')
print ('\n')
def display(): #进行登陆后界面的函数定义,方便在下面的选用层级后,返回上一层时,依然可以看到选择大屏。
 print("\033[34m########################################################################")
 print("\033[34m\t######### \033[1;32mWelcome to this employee search system!\033[0;34m #########")
 print("\033[34m\t\t#################################################")
 print("\n")
 print("\033[32m\033[1m\t\t\t1\033[33m\033[1m.Search.(you can search the infomation for employee!)\n")
 print("\033[32m\033[1m\t\t\t2\033[33m\033[1m.Add.(Add a user into this employee system!)\n")
 print("\033[32m\033[1m\t\t\t3\033[33m\033[1m.Delete.(Delete a user from this employee system!)\n")
 print("\033[32m\033[1m\t\t\t4\033[33m\033[1m.Modify.(You can modify something infomation in this employee system!)\n")
 print("\033[32m\033[1m\t\t\t5\033[33m\033[1m.Quit.(quit this employee system!)\n")
 print("\n")
 dict ()
#指定文件路径
path = 'D:\Users\Franzhang\employee_list.txt'
#定义while层级标记break_tag1 = 0 以及登陆初始提示
break_tag1 = 0
while break_tag1 == 0:
 display()
 select_input = raw_input ("\033[37m\033[1mplease input you want to select items:").strip ()
 if len(select_input) == 0:
  continue
 elif select_input == 'quit':
  sys.exit ()
 #选项1进行模糊搜索
 elif int(select_input) == 1:
  # os.system('clear')
  break_tag2 = 0
  while break_tag2 == 0:
   content_open = open (path)
   search_input = raw_input ("please input your need (SEARCH MODE):").strip ()
   for line in content_open:
    if len (search_input) == 0:
     continue
    elif search_input in line:
     print line
    else:
     if search_input == 'all': #展示文本目前所有员工
      print line
     elif search_input == 'quit':
      break_tag2 = 1 #返回上一层级选择项
 #选项2进行员工信息添加(其实是添加了一行列表)
 elif int(select_input) == 2:
  # os.system('clear')
  content_write = file (path, 'a+') #读入文本
  break_tag3 = 0
  while break_tag3 == 0:
   addid_input = raw_input ("please input your need (ADD_ID):").strip ()
   if len (addid_input) == 0:
    continue
   elif addid_input == 'quit':
    break_tag3 = 1
    content_write.close () #文本使用完毕后需要关闭,以免占用内存。
    break
   addname_input = raw_input ("please input your need (ADD_NAME):").strip ()
   if len (addid_input) == 0:
    continue
   elif addname_input == 'quit':
    break_tag3 = 1
    content_write.close ()
    break
   addage_input = raw_input ("please input your need (ADD_AGE):").strip ()
   if len (addid_input) == 0:
    continue
   elif addage_input == 'quit':
    break_tag3 = 1
    content_write.close ()
    break
   adddpt_input = raw_input ("please input your need (ADD_DPT):").strip ()
   if len (addid_input) == 0:
    continue
   elif adddpt_input == 'quit':
    break_tag3 = 1
    content_write.close ()
    break
   addphone_input = raw_input ("please input your need (ADD_phone):").strip ()
   if len (addid_input) == 0:
    continue
   elif addphone_input == 'quit':
    break_tag3 = 1
    content_write.close ()
    break
   list_add = [addid_input, '\t', addname_input, '\t', addage_input, '\t', adddpt_input, '\t', addphone_input,'\n'] #将上面的单项录入写入列表list_add
   content_write.writelines (list_add) #将列表追加写入文本
   print("It's already insert the list!")
   continue
 #选项3进行员工删除
 elif int(select_input) == 3:
  # os.system('clear')
  break_tag4 = 0
  while break_tag4 == 0:
   content_opend = open (path)
   delete_input = raw_input ("please input your need (DELETE):").strip ()
   if len (delete_input) == 0:
    continue
   elif delete_input == 'quit':
    break_tag4 = 1
   for line in content_opend:
    if delete_input in line:
     print line
     sure = raw_input ("Are you sure delete this account line ? (yes/no):").strip ()
     if len (sure) == 0:
      continue
     elif sure == 'yes':
      inside = file (path, 'a+') 
      bebe = inside.readlines () #按行读入文本并转换为列表data
      data = list (bebe) 
      for i in data:
       if delete_input in i: 
        w = data.index (i) #获取输入的员工在整个文本列表的位置
        del data[w] #删除单行
      data_in = data #转存删除后的文本列表(这个时候被读取的经过删除后的内容还在内存中。)
      inside.close () #转存后在关闭文本,否则导致转存因提前关闭而无效。
      inside_w = file (path, 'w+') #再次以覆盖写入方式读取文本
      inside_w.writelines (data_in) #将刚才转存的文本写入
      inside_w.close () #关闭文本后会自动保存写入
      break
     elif sure == 'no':
      break
    continue
 #选项4进行员工信息更改(整条员工信息的更改)
 elif int(select_input) == 4:
  break_tag5 = 0
  while break_tag5 == 0:
   modify_input = raw_input ("please input your modify item:").strip ()
   if len (modify_input) == 0:
    continue
   elif modify_input == 'quit':
    break
   content_modify = file (path, 'a+')
   modify_line = content_modify.readlines ()
   modata = list (modify_line)
   for i in modata:
    if modify_input in i:
     ms = modata.index (i)#获取输入变量的最终列表定位
     print i
     mosure = raw_input ("Are you sure to change this user ? (yes/no):").strip ()
     if len (mosure) == 0:
      continue
     elif mosure == 'yes':
      break_tag6 = 0
      while break_tag6 == 0:
       sureid_input = raw_input ("please input you will change this user id: ").strip ()
       if len(sureid_input) == 0:
        continue
       elif sureid_input == 'quit':
        break
       surename_input = raw_input ("please input you will change this user name:").strip ()
       if len(surename_input) == 0:
        continue
       elif surename_input == 'quit':
        sureid_input = None #此处赋空值,为了防止中途退出,而出现个别写入
        surename_input = None
        break
       sureage_input = raw_input ("please input you will change this user age:").strip ()
       if len(sureage_input) == 0:
        continue
       elif sureage_input == 'quit':
        sureid_input = None
        surename_input = None
        sureage_input = None
        break
       suredep_input = raw_input ("please input you will change this user department:").strip ()
       if len(suredep_input) == 0:
        continue
       elif suredep_input == 'quit':
        sureid_input = None
        surename_input = None
        sureage_input = None
        suredep_input = None
        break
       surephone_input = raw_input ("please input you will change this user phone:").strip ()
       if len(surephone_input) == 0:
        continue
       elif surephone_input == 'quit':
        sureid_input = None
        surename_input = None
        sureage_input = None
        suredep_input = None
        surephone_input = None
        break
       later_sure = [sureid_input, '\t', surename_input, '\t\t', sureage_input, '\t', suredep_input,'\t', surephone_input, '\n']#将上面的值放入列表
       del modata[ms] #当整个输入完成以后再进行删除,防止中途退出未完成状体的删除。
       modata_one = modata
       content_modify.close () #这里还是使用了删除、转存、重新写入的原理
       content_modify_list = file (path, 'w+')
       content_modify_list.writelines (modata_one)
       content_modify_list.close ()
       content_modify_list_one = file (path, 'a+')
       content_modify_list_one.writelines (later_sure)
       content_modify_list_one.close ()
       break
     elif mosure == 'quit' or 'no':
      break
 elif int (select_input) == 5:
  print("Thank you for use this employee system, write by franzhang!")
  sys.exit()

employee_list.txt:

python实现员工管理系统

更多学习资料请关注专题《管理系统开发》。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python Web框架Flask信号机制(signals)介绍
Jan 01 Python
Python运用于数据分析的简单教程
Mar 27 Python
Python脚本实现虾米网签到功能
Apr 12 Python
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
Jun 07 Python
放弃 Python 转向 Go语言有人给出了 9 大理由
Oct 20 Python
python linecache 处理固定格式文本数据的方法
Jan 08 Python
python实战串口助手_解决8串口多个发送的问题
Jun 12 Python
python3.4 将16进制转成字符串的实例
Jun 12 Python
使用Python串口实时显示数据并绘图的例子
Dec 26 Python
python logging.info在终端没输出的解决
May 12 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
Jun 04 Python
python 调用js的四种方式
Apr 11 Python
Python使用base64模块进行二进制数据编码详解
Jan 11 #Python
Python实现备份MySQL数据库的方法示例
Jan 11 #Python
教你用Python写安卓游戏外挂
Jan 11 #Python
python实现学生管理系统
Jan 11 #Python
linecache模块加载和缓存文件内容详解
Jan 11 #Python
Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法
Jan 11 #Python
python+django+sql学生信息管理后台开发
Jan 11 #Python
You might like
php+mysql开源XNA 聚合程序发布 下载
2007/07/13 PHP
PHP中的output_buffering详细介绍
2014/09/27 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
2015/10/26 PHP
Yii中Model(模型)的创建及使用方法
2015/12/28 PHP
form表单传递数组数据、php脚本接收的实例
2017/02/09 PHP
详解php用static方法的原因
2018/09/12 PHP
js substr支持中文截取函数代码(中文是双字节)
2013/04/17 Javascript
jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果
2015/10/28 Javascript
Bootstrap实现带动画过渡的弹出框
2016/08/09 Javascript
微信小程序  网络请求API详解
2016/10/25 Javascript
深入理解Angularjs中的$resource服务
2016/12/31 Javascript
使用JS动态显示文本
2017/09/09 Javascript
基于zTree树形菜单的使用实例
2017/12/25 Javascript
微信小程序App生命周期详解
2018/01/31 Javascript
解决iview打包时UglifyJs报错的问题
2018/03/07 Javascript
详解Vue用cmd创建项目
2019/02/12 Javascript
Vue toFixed保留两位小数的3种方式
2020/10/23 Javascript
解决vue项目运行npm run serve报错的问题
2020/10/26 Javascript
[46:12]完美世界DOTA2联赛循环赛 DM vs Matador BO2第一场 11.04
2020/11/04 DOTA
[01:07:57]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第二场 1月19日
2021/03/11 DOTA
Python中实现字符串类型与字典类型相互转换的方法
2014/08/18 Python
Python实现抓取网页生成Excel文件的方法示例
2017/08/05 Python
python pandas 对时间序列文件处理的实例
2018/06/22 Python
Django实现分页功能
2018/07/02 Python
树莓派与PC端在局域网内运用python实现即时通讯
2019/06/22 Python
flask框架json数据的拿取和返回操作示例
2019/11/28 Python
Python调用shell cmd方法代码示例解析
2020/06/18 Python
Dockers美国官方网站:卡其裤、男士服装、鞋及配件
2016/11/22 全球购物
测试时代收集的软件测试面试题
2013/09/25 面试题
腾讯公司的一个sql题
2013/01/22 面试题
工程类专业自荐信范文
2014/03/09 职场文书
导师推荐信范文
2014/05/09 职场文书
硕士生找工作求职信
2014/07/05 职场文书
本溪关门山导游词
2015/02/09 职场文书
博士导师推荐信
2015/03/25 职场文书
初中政治教学反思
2016/02/23 职场文书