1.练习要求:

2.数据文件(data_staff.txt)

  1. 1,Alex Li,22,13651054684,运维,2013-02-04
  2. 2,Jack Wang,20,13312331232,HR,2014-06-03
  3. 3,Mike Cao,20,15504231232,Sales,2013-05-06
  4. 4,Jack Chen,34,12404231232,HR,2011-02-01
  5. 5,Lu Haojie,21,15204231232,运维,2013-08-12

3.实现代码

A.主程序部分:采用字典类型来实现函数的调用(key对应的value是函数名,通过Name()语法可以调用函数执行),利用os模块的remove()和rename()实现文件的修改后的旧文件删除和新文件的重命名。

  1. import os
  2. msg_dict={
  3. '':Search,
  4. '':Add,
  5. '':Delete,
  6. '':Change,
  7. '':'退出'
  8. }
  9.  
  10. while True:
  11. print( """
  12. 1:查询
  13. 2:添加
  14. 3:删除
  15. 4:修改
  16. 5:退出
  17. """)
  18. choice=input('输入序号:')
  19. if choice not in msg_dict:
  20. print("输入错误,请重新输入")
  21. continue
  22. if int(choice)==5:
  23. exit()
  24. else:
  25. msg_dict[choice]()

B.查询函数:主要通过字符串常用操作的split()实现从字符串到列表的转换,join()实现列表到字符串的转换

  1. def Search():
  2. # 查询方式一:select * from staff_table where age >= 22
  3. # 查询方式二:select * from staff_table where dept = "IT"
  4. # 查询方式三:select * from staff_table where enroll_date like "2013"
  5.  
  6. data=input('输入您的查询信息:')
  7. data=data.split(' ')
  8. con=data[7]
  9. asp=data[5]
  10. count=0
  11. with open('data_staff','r',encoding='utf-8') as f:
  12. if asp=='age':
  13. for line in f:
  14. if int(line.split(',')[2])>=int(con):
  15. print(line)
  16. count+=1
  17. elif asp=='dept':
  18. for line in f:
  19. if line.split(',')[4] in con:
  20. print(line)
  21. count += 1
  22. else:
  23. for line in f:
  24. if line.split(',')[5].split('-')[0] in con:
  25. print(line)
  26. count += 1
  27. print('查询结束,共查到符合条件的信息 %d 条 ' % count)

C.添加函数:利用‘r+’的可读写模式来实现读写(注意这种方式下的write()是追加到文件末尾的)

  1. def Add():
  2. # 添加语法: name,age,phone,dept,enroll-date
  3. data=input('输入您要添加的员工信息:')
  4. list_data=data.strip().split(',')
  5. list_all=[]
  6. f=open('data_staff','r+')
  7. for line in f:
  8. list_all.append(line.strip().split(',')[3])
  9. if list_data[2] in list_all:
  10. print("该用户已经存在")
  11. f.close()
  12. else:
  13. for line in f:
  14. f.write(line)
  15. staff_id=str(len(list_all)+1)
  16. list_data.insert(0,str(staff_id))
  17. f.write('\n')
  18. f.write(','.join(list_data))
  19. f.close()
  20. print('添加成功')

D.删除函数:

  1. def Remove():
  2. # 删除语法:delete from staff_table where staff_id = 12
  3. staff_id=input("输入您要删除员工的Staff_id:")
  4. staff_id=staff_id.strip().split(' ')[6]
  5. f=open('data_staff','r')
  6. f1=open('new_data_staff','w')
  7. for line in f:
  8. in_list=line.split(',')
  9. if in_list[0]<staff_id:
  10. f1.write(line)
  11. elif in_list[0]>staff_id:
  12. in_list[0]=str(int(in_list[0])-1)
  13. f1.write(','.join(in_list))
  14. else:
  15. continue
  16. f.close()
  17. f1.close()
  18. os.remove('data_staff')
  19. os.rename('new_data_staff','data_staff')
  20. print('删除成功')

E.修改函数:

  1. def Change():
  2. # 修改请输入(注意空格和没有引号):UPDATE staff_table SET dept = IT where dept = 运维
  3. data=input("请输入您要修改的信息:")
  4. old=data.split(' ')[5]
  5. new=data.split(' ')[9]
  6. f=open('data_staff','r',encoding='utf-8')
  7. f1=open('new_data_staff','w',encoding="utf-8")
  8. for line in f:
  9. if old in line:
  10. line=line.replace(old,new)
  11. f1.write(line)
  12. f.close()
  13. f1.close()
  14. os.remove('data_staff')
  15. os.rename('new_data_staff','data_staff')
  16. print('修改成功')

Python3练习:对员工信息文件,实现增删改查操作的更多相关文章

  1. C#+Access 员工信息管理--简单的增删改查操作和.ini配置文件的读写操作。

    1.本程序的使用的语言是C#,数据库是Access2003.主要是对员工信息进行简单的增删改查操作和对.ini配置文件的读写操作. 2.代码运行效果如下: 功能比较简单.其中在得到查询结果后,在查询结 ...

  2. Java使用DOM4J对XML文件进行增删改查操作

    Java进行XML文件操作,代码如下: package com.founder.mrp.util; import java.io.File; import java.util.ArrayList; i ...

  3. python文件实现增删改查操作

    # coding = utf-8 import os import json import re ''' 本程序旨在将练习基础知识部分,包括: 列表,元组,字典,文件,函数,字符串等知识 实现的功能: ...

  4. MyBatis学习(二)、SQL语句映射文件(2)增删改查、参数、缓存

    二.SQL语句映射文件(2)增删改查.参数.缓存 2.2 select 一个select 元素非常简单.例如: <!-- 查询学生,根据id --> <select id=" ...

  5. MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存

    目录(?)[-] 二SQL语句映射文件2增删改查参数缓存 select insert updatedelete sql parameters 基本类型参数 Java实体类型参数 Map参数 多参数的实 ...

  6. 【练习】Python第四次:实现对文件的增删改查

    一,实现对文件的增删改查 (一),三级菜单的处理结构及退出技巧:使用TAG标记 tag=True while tag: print('leve1') choice=input("level1 ...

  7. 基于SpringMVC的文件(增删改查)上传、下载、更新、删除

    一.项目背景 摘要:最近一直在忙着项目的事,3个项目过去了,发现有一个共同的业务,那就是附件的处理,附件包括各种文档,当然还有图片等特殊文件,由于时间的关系,每次都是匆匆忙忙的搞定上线,称这项目的空档 ...

  8. 用dom4j解析xml文件并执行增删改查操作

    转自:https://www.aliyun.com/jiaocheng/1339446.html xml文件: <?xml version="1.0" encoding=&q ...

  9. java对xml文件做增删改查------摘录

    java对xml文件做增删改查 package com.wss; import java.io.File;import java.util.ArrayList;import java.util.Lis ...

  10. python3.6 使用 pymysql 连接 Mysql 数据库及 简单的增删改查操作

    1.通过 pip 安装 pymysql 进入 cmd  输入  pip install pymysql   回车等待安装完成: 安装完成后出现如图相关信息,表示安装成功. 2.测试连接 import ...

随机推荐

  1. 使用WdatePicker日期组件时,选择日期后,执行某个方法

    WdatePicker({onpicked:function(){alert(123);},dateFmt:'yyyy年MM月dd日',maxDate:'%y-%M-%d'}) 1.onpicked: ...

  2. Visio2010新建E-R图

    visio2010没有内置E-R图的模板,需要自己配置模具.步骤如下: 1.文件->新建->基本流程图->右键菱形->添加到新模具->命名为E-R图. 2.更多形状-&g ...

  3. 页面引入(include)方式的研究及性能比较

    1. 应用Html中的框架(iframe) 目前大多数门户网站都应用iframe来进行页面上广告的投放,就是将不同的广告分别应用iframe投放到主页面上,优点是效率高,互不影响,缺点是不符合网页标准 ...

  4. 解决因 RsFX devicer 而无法卸载 SQL Server 的问题

    到卸载 SQL Server 2008 R2 安装程序支持文件时,遇到了问题:“警告 26003.无法卸载 Microsoft SQL Server 2008 R2 安装程序支持文件,因为安装了以下产 ...

  5. windows时间同步脚本

    #!/usr/bin/env python# -*- coding:UTF-8 -*-# 脚本用于windows时间同步,设置window计划任务每五分钟执行一次 import timeimport ...

  6. php大文件上传失败的原因及解决方法

    为什么上传大文件总是失败,上传小文件就没有问题.关于PHP大文件上传失败的原因及解决方法如下: 第1种情况:文件上传时存放文件的临时目录必须是开启的并且是 PHP 进程所有者用户可写的目录.如果未指定 ...

  7. Jmeter(一)工具的简单介绍(z)

    一.JMeter介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态和动态资源的性能,例如:静态文件,J ...

  8. 关于tcp状态及一些延展

    1.常用的三个状态是:ESTABLISHED 表示正在通信,TIME_WAIT 表示主动关闭,CLOSE_WAIT 表示被动关闭. TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断 ...

  9. 51nod 1515 明辨是非 [并查集+set]

    今天cb巨巨突然拿题来问,感觉惊讶又开心,希望他早日康复!!坚持学acm!加油! 题目链接:51nod 1515 明辨是非 [并查集] 1515 明辨是非 题目来源: 原创 基准时间限制:1 秒 空间 ...

  10. Mongod启动失败修复方法

    可能的原因:上次服务未正常关闭 1.删除data/db目录下的mongo.lock文件 2.删除/tmp/mongodb-27017.sock文件