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. 从Linux访问Windows共享目录

    今天装备用VMWare装台Linux服务器来学习Oracle数据库,由于安装包是下载到本地的Windows系统,需要拷贝到Linux虚机里面去.搞了半天.想到虚机网络设成桥接,然后访问.百度了一下.最 ...

  2. [使用教程]cocostudio之UI编辑器动画模式

    有坑! 1. 使用 (1)点击动画模式按钮,进入动画模式 (2)[关键1]左下角动作列表,右键添加动画 (3)[关键2]渲染区选择要动画的控件,右键编辑动画 * 可以看到最下面多了关键帧 (4)在右边 ...

  3. 第六周 day6 python学习笔记

    1.Python面向对象编程OOP(Object Oriented Programming) 封装:可以隐藏实现细节,使代码模块化 继承:可以扩展已存在的代码模块,可以使代码实现重用 多态:一种接口, ...

  4. Webpack笔记(三)——一款破产版脚手架的开发

    前些天一直在学习入门Webpack,后来尝试了自己搭建一下一个简单的React开发环境,后来就在想可不可以自己写一个简单的脚手架,以免每次搭建一个简单的开发环境都需要自己一个个的配置,这样很麻烦,使用 ...

  5. 魅族首页导航效果(不兼容IE)

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  6. Intellij IDEA 代码提示忽略大小写

    1.0 File >>Settings 2.0 Editor >> General >> Code Completion 如下图 选择 None

  7. 【转】Windows Error Code(windows错误代码详解)

    本文来自: http://blog.sina.com.cn/s/blog_5e45d1be0100i0dr.html http://blog.sina.com.cn/s/blog_5e45d1be01 ...

  8. 安装MySql-Python遇到的错误及解决方法

    用pip安装mysql-python时报错: _mysql.c _mysql.c(42) : fatal error C1083: Cannot open include file: 'config- ...

  9. HTML5 classList API

    Having thrust myself into the world of JavaScript and JavaScript Libraries, I've often wondered: Whe ...

  10. BZOJ2440:[中山市选2011]完全平方数(莫比乌斯函数)

    Description 小 X 自幼就很喜欢数.但奇怪的是,他十分讨厌完全平方数.他觉得这些数看起来很令人难受.由此,他也讨厌所有是完全平方数的正整数倍的数.然而这丝毫不影响他对其他数的热爱. 这天是 ...