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. shell编程报错:“syntax error near unexpected token `”

    今天写了个shell脚本,在自己机器上运行正常,给同事,运行报错syntax error near unexpected token `,左看右看shell脚本没有问题,没有办法google搜索,发现 ...

  2. mongodb 3.4复制集配置

    1:启动三个实例 /bin/mongod --config /home/mongodb/db27017/mongodb27017.conf /bin/mongod --config /home/mon ...

  3. 如何避免在EF自动生成的model中的DataAnnotation被覆盖掉

    摘自ASP.NET MVC 5 网站开发之美 6.4 Metadata与数据验证 如果使用Database-First方式生成*.edms,那么所生成的类文件会在*.tt文件的层级之下,扩展名tt是一 ...

  4. FZEasyFile的使用

    FZEasyFile的使用 https://github.com/jiecao-fm/FZEasyFile 操作沙盒文件很恶心,但用上FZEasyFile就变得简单了. 以前你需要这么做才行: NSF ...

  5. 学习Road map Part 02 机器学习和图像识别

    方法:结合项目.竞赛.mentor计划

  6. memcached 相关

    今天用了下memcached,把一个日志分析结果的大数组缓存起来,由于实时性跟准确性要求不高,所以缓存一周:因为日志越来越多,不缓存的话每次查看页面会比较慢.(其实可以先离线定期计算好结果存起来).以 ...

  7. phpcms利用表单向导创建留言板(可以回复)

    这篇博客写的很详细,可跳转到如下链接: http://blog.aiwebcom.com/%E7%BD%91%E7%AB%99%E5%BB%BA%E8%AE%BE/phpcms/456.html 注: ...

  8. _bstr_t可接受多字节、UNICODE字符串,方便用以字符集转换

    使用_bstr_t需要包含的头文件: #include <comutil.h> #include <comdef.h> // test.cpp : 定义控制台应用程序的入口点. ...

  9. 十七、IntelliJ IDEA 中的 Maven 项目初体验及搭建 Spring MVC 框架

    我们已经将 IntelliJ IDEA 中的 Maven 项目的框架搭建完成.接着上文,在本文中,我们更近一步,利用 Tomcat 运行我们的 Web 项目. 如上图所示,我们进一步扩展了项目的结构, ...

  10. C# abstract,virtual 修饰符

    abstract(抽象):该abstract修饰符指示要修改的东西有缺失或不完整的实现.abstract修饰符可以与类,方法,属性,索引器和事件一起使用.abstract在类声明中使用修饰符来指示类仅 ...