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中的map、reduce和filter浅析
Apr 26 Python
python 信息同时输出到控制台与文件的实例讲解
May 11 Python
Python读写及备份oracle数据库操作示例
May 17 Python
用python实现k近邻算法的示例代码
Sep 06 Python
Python shutil模块用法实例分析
Oct 02 Python
使用python 对验证码图片进行降噪处理
Dec 18 Python
python使用ctypes调用扩展模块的实例方法
Jan 28 Python
django rest framework使用django-filter用法
Jul 15 Python
Python 防止死锁的方法
Jul 29 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
Dec 13 Python
python之openpyxl模块的安装和基本用法(excel管理)
Feb 03 Python
python实现高效的遗传算法
Apr 07 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中var_dump,var_export,print_r三个函数的区别
2013/06/21 PHP
PHP中的多行字符串传递给JavaScript的两种方法
2014/06/19 PHP
php实现的Captcha验证码类实例
2014/09/22 PHP
初识Laravel
2014/10/30 PHP
PHP中is_dir()函数使用指南
2015/05/08 PHP
PHP基于接口技术实现简单的多态应用完整实例
2017/04/26 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
FF IE浏览器修改标签透明度的方法
2014/01/27 Javascript
javacript使用break内层跳出外层循环分析
2015/01/12 Javascript
简述AngularJS的控制器的使用
2015/06/16 Javascript
Node.js中防止错误导致的进程阻塞的方法
2016/08/11 Javascript
nodejs操作mongodb的填删改查模块的制作及引入实例
2018/01/02 NodeJs
微信小程序自定义组件之可清除的input组件
2018/07/17 Javascript
仿ElementUI实现一个Form表单的实现代码
2019/04/23 Javascript
jquery树形插件zTree高级使用详解
2019/08/16 jQuery
jQuery开发仿QQ版音乐播放器
2020/07/10 jQuery
使用Python生成随机密码的示例分享
2016/02/18 Python
简单谈谈Python中函数的可变参数
2016/09/02 Python
详解python的webrtc库实现语音端点检测
2017/05/31 Python
Django中url的反向查询的方法
2018/03/14 Python
Python使用MD5加密算法对字符串进行加密操作示例
2018/03/30 Python
python实现画一颗树和一片森林
2018/06/25 Python
基于数据归一化以及Python实现方式
2018/07/11 Python
Python3.6使用tesseract-ocr的正确方法
2018/10/17 Python
python实现opencv+scoket网络实时图传
2020/03/20 Python
pandas to_excel 添加颜色操作
2020/07/14 Python
几个数据库方面的面试题
2016/07/01 面试题
英文版餐饮业求职信
2013/10/18 职场文书
老师自我鉴定范文
2013/12/25 职场文书
警察群众路线整改措施
2014/09/26 职场文书
师范生见习报告
2014/10/31 职场文书
课堂打架检讨书200字
2014/11/21 职场文书
2016小学新学期寄语
2015/12/04 职场文书
研究生学习计划书应该怎么写?
2019/09/10 职场文书
《悬崖边的树》读后感2篇
2019/12/02 职场文书
Mybatis 一级缓存和二级缓存原理区别
2022/09/23 Java/Android