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. 使用WdatePicker日期组件时,选择日期后,执行某个方法

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

  2. hdu 6216 A Cubic number and A Cubic Number【数学题】

    hdu 6216 A Cubic number and A Cubic Number[数学] 题意:判断一个素数是否是两个立方数之差,就是验差分.. 题解:只有相邻两立方数之差才可能,,因为x^3-y ...

  3. INFORMATICA 操作流程

  4. Django 玩转API

    现在,让我们进入Python的交互式shell,玩转这些Django提供给你的API. 使用如下命令来调用Python shell: $ python manage.py shell 我们使用上述命令 ...

  5. C++禁止使用拷贝构造函数和赋值运算符方法

    1.将拷贝构造函数和赋值运算符声明为私有,并不予实现 class Uncopyable { private: Uncopyable(const Uncopyable &); // 阻止copy ...

  6. 443M衣架遥控arduino代码备档

    ] = {,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,}; ] = {,,,,,,,,,,,,,,,,,,,,,,, ...

  7. linux内核自己添加模块(内核版本:3.0.101)

    做内核驱动第一步都是学习如何添加模块,这是基础,有了这个基础,剩下就是写代码了. 由于2.4到2.6内核版本的更新,无论是系统调用还是模块添加机制都有了巨大的变化,本人也因此饱经挫折,最后在3.0.1 ...

  8. java中数据类型的范围

    前言:最近:本菜鸡在准备pat,可以每次遇到数据类型的时候都得去查找范围,因此本着学习的目的,来总结一下java中的数据类型. 因此我用mindManager做了一个思维图

  9. python入门基础:文件的读写

    文件的读写操作运用广泛,无论是何种语言都会涉及到文件的输入输出. 下面简单的总结一下文件的读写: 1:open()函数 f = open('workfile', 'w') 函数 open()返回文件的 ...

  10. Learning by doing——获黄色领骑衫之感

    获奖感言 能拿到这件黄色的领骑衫,心里真的非常高兴.仔细看了一下,扣子.领子.各种图案各种细节十分精致.可以说这件领骑衫既有纪念意义,又有实用意义,真的很棒. 背后的故事 其实开始接触博客的时候,我是 ...