1.练习要求:

2.数据文件(data_staff.txt)

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

3.实现代码

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

 import os
msg_dict={
'':Search,
'':Add,
'':Delete,
'':Change,
'':'退出'
} while True:
print( """
1:查询
2:添加
3:删除
4:修改
5:退出
""")
choice=input('输入序号:')
if choice not in msg_dict:
print("输入错误,请重新输入")
continue
if int(choice)==5:
exit()
else:
msg_dict[choice]()

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

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

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

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

D.删除函数:

 def Remove():
# 删除语法:delete from staff_table where staff_id = 12
staff_id=input("输入您要删除员工的Staff_id:")
staff_id=staff_id.strip().split(' ')[6]
f=open('data_staff','r')
f1=open('new_data_staff','w')
for line in f:
in_list=line.split(',')
if in_list[0]<staff_id:
f1.write(line)
elif in_list[0]>staff_id:
in_list[0]=str(int(in_list[0])-1)
f1.write(','.join(in_list))
else:
continue
f.close()
f1.close()
os.remove('data_staff')
os.rename('new_data_staff','data_staff')
print('删除成功')

E.修改函数:

 def Change():
# 修改请输入(注意空格和没有引号):UPDATE staff_table SET dept = IT where dept = 运维
data=input("请输入您要修改的信息:")
old=data.split(' ')[5]
new=data.split(' ')[9]
f=open('data_staff','r',encoding='utf-8')
f1=open('new_data_staff','w',encoding="utf-8")
for line in f:
if old in line:
line=line.replace(old,new)
f1.write(line)
f.close()
f1.close()
os.remove('data_staff')
os.rename('new_data_staff','data_staff')
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. 使用 Load Balancer,Corosync,Pacemaker 搭建 Linux 高可用集群

    由于网络架构的原因,在一般虚拟机或物理环境中常见的用 VIP 来实现双机高可用方案,无法照搬到 Azure 平台.但利用 Azure 平台提供的负载均衡或者内部负载均衡功能,可以达到类似的效果. 本文 ...

  2. Oracle GoldenGate 详解

    一.Oracle GoldenGate介绍 GoldenGate软件是一种基于日志的结构化数据复制软件.GoldenGate 能够实现大量交易数据的实时捕捉.变换和投递,实现源数据库与目标数据库的数据 ...

  3. Dapper进行增删改查 z

    http://www.cnblogs.com/huangkaiyan10/p/4640548.html 项目背景 前一段时间,开始做一个项目,在考虑数据访问层是考虑技术选型,考虑过原始的ADO.NET ...

  4. Jenkins的job执行arquilian test时总是报JBoss启动失败错误

    我的Jenkins环境是一个Master+一个slave,Job的执行主要由slave来进行.Master只负责调度. slave上安装有JDK7.JDK8.slave agent用的是java we ...

  5. January 21 2017 Week 3 Saturday

    Courage is grace under pressure. 勇气就是压力下的优雅. In the face of stress, can you deal with your task smoo ...

  6. mongodb在windows平台安装和启动

    mongodb 官网:https://www.mongodb.com mongodb 官网下载: mongodb-win32-x86_64-2008plus-ssl-3.4.2-signed.msi ...

  7. thinkphp清除缓存

    前台 //清除缓存 $(function(){ $("#cache").click(function(){ layer.confirm('你确定要清除缓存吗?', {icon: 3 ...

  8. sql注入二

    大家早上好!今天由我给大家带来<web安全之SQL注入篇>系列晨讲,首先对课程进行简单介绍,SQL注入篇一共分为三讲:        第一讲:“纸上谈兵:我们需要在本地架设注入环境,构造注 ...

  9. Jmeter关于数据库的测试(mysql数据库)

    建立jdbc链接:创建JDBC Connection Configuration. 添加——配置元件——JDBC Connection configuration: 配置JDBC Connection ...

  10. loading等待效果

    效果预览:这两个球一直在转,不能进行其他操作 div放在最外层 <div id="loadingImg" style="height: 100%;width: 10 ...