Python作业之工资管理
作业之工资管理
工资管理实现要求:
工资管理系统
Alex 100000
Rain 80000
Egon 50000
Yuan 30000
-----以上是info.txt文件-----
实现效果:
从info.txt文件中读取员工及其工资信息,最后将修改或增加的员工工资信息也写入原info.txt文件。
效果演示:
1. 查询员工工资
2. 修改员工工资
3. 增加新员工记录
4. 退出
>>:1
请输入要查询的员工姓名(例如:Alex):Alex
Alex的工资是:100000。
1. 查询员工工资
2. 修改员工工资
3. 增加新员工记录
4. 退出
>>:2
请输入要修改的员工姓名和工资,用空格分隔(例如:Alex 10):Alex 10
修改成功!
1. 查询员工工资
2. 修改员工工资
3. 增加新员工记录
4. 退出
>>:3
请输入要增加的员工姓名和工资,共空格分割(例如:Eric 100000):Eric 100000
增加成功!
1. 查询员工工资
2. 修改员工工资
3. 增加新员工记录
4. 退出
>>:4
再见!
具体代码如下:
方法1:
import os
if not os.path.exists('d:\\users\\info.txt'):
f = open('d:\\users\\info.txt','w')
f.write('工资管理系统\nAlex 100000\nRain 80000\nEgon 50000\nYuan 30000\n')
f.close()
menu = ['查询员工工资','修改员工工资','增加新员工记录','退出']
while True:
print('欢迎来到工资管理系统!'.center(30,'*'))
for index,option in enumerate(menu,1):#枚举并遍历菜单
print(index,option)
choice = input('请选择:').strip()
if choice == str(1):
name_c = input('请输入要查询的员工姓名(例如:Alex):').strip()
f = open('d:\\users\\info.txt')
f.readline()#先读取第一行内容(标题中间无空格,因此先读取标题)
names = []#声明一个存储用户名的空列表
salary = []#声明一个存储工资的空列表
for line in f:#遍历文件内容
names.append(line.strip().split()[0])#把文件中每行内容空格前面的内容添加到列表中
salary.append(line.strip().split()[1])#把文件中每行内容空格后面的内容添加到列表中
if name_c in names:
print('%s的工资为:%s'%(name_c,salary[names.index(name_c)]))
f.close()
if choice == str(2):
name_m = input('请输入要修改的员工姓名和工资,用空格分隔(例如:Alex 10):')
f = open('d:\\users\\info.txt')
f.readline()
if name_m.strip().split()[0] in [name.strip().split()[0] for name in f]:#判断输入的用户名是否存在于文件中
modify = []#声明一个列表存储文件每行内容
f.seek(0)#由于上述判断读取了文件,因此需要把指针跳指开始
for line in f:
if name_m.strip().split()[0] == line.strip().split()[0]:#判断输入的用户名是否存在该行内容中
line = name_m.strip()+'\n'
modify.append(line)
f.close()#关闭只读模式的文件
print(modify)
f = open('d:\\users\\info.txt','w')#再次打开文件,只写模式
for m_line in modify:#编历列表,把每行内容写入到文件中
f.write(m_line)
f.close()
if choice == str(3):
name_a = input('请输入要增加的员工姓名和工资,用空格分隔(例如:Mary 10):')
f = open('d:\\users\\info.txt','a')
f.write(name_a.strip()+'\n')
f.close()
print('增加成功!')
if choice == str(4):
print('再见!')
break
注:该代码在修改用户工资时只使用原文件,需要把文件内容先保存到内存中,如果文件比较大,速度会比较慢,不推荐使用!
方法2:
import os
if not os.path.exists('d:\\users\\info.txt'):
f = open('d:\\users\\info.txt','w')
f.write('工资管理系统\nAlex 100000\nRain 80000\nEgon 50000\nYuan 30000\n')
f.close()
menu = ['查询员工工资','修改员工工资','增加新员工记录','退出']
while True:
print('欢迎来到工资管理系统!'.center(30,'*'))
for index,option in enumerate(menu,1):#枚举并遍历菜单
print(index,option)
choice = input('请选择:').strip()
if choice == str(1):
name_c = input('请输入要查询的员工姓名(例如:Alex):').strip()
f = open('d:\\users\\info.txt')
f.readline()#先读取第一行内容(标题中间无空格,因此先读取标题)
names = []#声明一个存储用户名的空列表
salary = []#声明一个存储工资的空列表
for line in f:#遍历文件内容
names.append(line.strip().split()[0])#把文件中每行内容空格前面的内容添加到列表中
salary.append(line.strip().split()[1])#把文件中每行内容空格后面的内容添加到列表中
if name_c in names:
print('%s的工资为:%s'%(name_c,salary[names.index(name_c)]))
f.close()
if choice == str(2):
name_m = input('请输入要修改的员工姓名和工资,用空格分隔(例如:Alex 10):')
f1 = open('d:\\users\\info.txt')
f2 = open('d:\\users\\info2.txt','w')
if name_m.strip().split()[0] in [i.strip().split()[0] for i in f1]:#判断输入的用户名是否存在于文件中
f1.seek(0)#由于上述判断读取了文件,因此需要把指针跳指开始
for line in f1:
if name_m.strip().split()[0] == line.strip().split()[0]:#判断输入的用户名是否存在该行内容中
line = name_m.strip()
f2.write(line+'\n')
print('修改成功!')
f1.close()
f2.close()
f1 = open('d:\\users\\info.txt','w')
f2 = open('d:\\users\\info2.txt')
for line in f2:#遍历文件把f2文件中的内容覆盖性地写入到f1文件中
f1.write(line)
f1.close()
f2.close()
if choice == str(3):
name_a = input('请输入要增加的员工姓名和工资,用空格分隔(例如:Mary 10):')
f = open('d:\\users\\info.txt','a')
f.write(name_a.strip()+'\n')
f.close()
print('增加成功!')
if choice == str(4):
print('再见!')
break
注:该代码在修改用户工资时使用到两个文件,然后把新创建的文件内容覆盖性写入到原文件,当文件比较大时,该方法比方法1速度要快。
Python作业之工资管理的更多相关文章
- Python作业之用户管理
作业 流程图没有画,懒,不想画 readme没有写,懒,不想写.看注释吧233333 #! /usr/bin/env python # -*- coding: utf-8 -*- # __author ...
- Python作业-选课系统
目录 Python作业-选课系统 days6作业-选课系统: 1. 程序说明 2. 思路和程序限制 3. 选课系统程序目录结构 4. 测试帐户说明 5. 程序测试过程 title: Python作业- ...
- python作业ATM(第五周)
作业需求: 额度 15000或自定义. 实现购物商城,买东西加入 购物车,调用信用卡接口结账. 可以提现,手续费5%. 支持多账户登录. 支持账户间转账. 记录每月日常消费流水. 提供还款接口. AT ...
- Python黑帽编程1.3 Python运行时与包管理工具
Python黑帽编程1.3 Python运行时与包管理工具 0.1 本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Attack and ...
- 【淘淘】Quartz作业存储与管理
一.Quartz作业管理和存储方式简介: 作业一旦被调度,调度器需要记住并且跟踪作业和它们的执行次数.如果你的作业是30分钟后或每30秒调用,这不是很有用.事实上,作业执行需要非常准确和即时调用在被调 ...
- python with语句上下文管理的两种实现方法
在编程中会经常碰到这种情况:有一个特殊的语句块,在执行这个语句块之前需要先执行一些准备动作:当语句块执行完成后,需要继续执行一些收尾动作.例如,文件读写后需要关闭,数据库读写完毕需要关闭连接,资源的加 ...
- supervisor python开发的进程管理工具
Supervisor (http://supervisord.org) 是一个用 Python 写的进程管理工具,可以很方便的用来启动.重启.关闭进程(不仅仅是 Python 进程).除了对单个进程的 ...
- python操作三大主流数据库(6)python操作mysql⑥新闻管理后台功能的完善(增、ajax异步删除新闻、改、查)
python操作mysql⑥新闻管理后台功能的完善(增.删.改.查)安装表单验证D:\python\python_mysql_redis_mongodb\version02>pip instal ...
- Python作业第一课
零基础开始学习,最近周边的同学们都在学习,我也来试试,嘿嘿,都写下来,下次不记得了还能来看看~~ Python作业第一课1)登陆,三次输入锁定,下次不允许登陆2)设计一个三级菜单,菜单内容可自行定义, ...
随机推荐
- nyoj 鸡兔同笼
鸡兔同笼 时间限制:3000 ms | 内存限制:65535 KB 难度:1 描述 已知鸡和兔的总数量为n,总腿数为m.输入n和m,依次输出鸡和兔的数目,如果无解,则输出"No an ...
- JAVA_SE基础——33.this关键字的练习
需求:使用java定义的一个人类,人具备 id ,name ,age 三个属性,还具备一个比较年龄的方法. 要求:必须要写上构造函数,构造函数也必须要使用上this关键字. class Person{ ...
- js数组string对象api常用方法
charAt() 方法可返回指定位置的字符. stringObject.charAt(index) indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置. stringObject ...
- LAMP 搭建
p { margin-bottom: 0.25cm; line-height: 120% } LAMP 搭建 承 Ubuntu 17.10.1安装, 定制. 参考 电子工业出版社, Ubuntu完美应 ...
- 如何在Java中避免equals方法的隐藏陷阱
摘要 本文描述重载equals方法的技术,这种技术即使是具现类的子类增加了字段也能保证equal语义的正确性. 在<Effective Java>的第8项中,Josh Bloch描述了当继 ...
- MQTT和paho(一)
参考链接:http://blog.csdn.net/yangzl2008/article/details/8861069 一.mqtt 1.简单介绍 http://mqtt.org/software ...
- HTTP协议扫盲(八 )响应报文之 Transfer-Encoding=chunked方式
一.什么是chunked编码? 分块传输编码(Chunked transfer encoding)是只在HTTP协议1.1版本(HTTP/1.1)中提供的一种数据传送机制.以往HTTP的应答中数据是整 ...
- Spring Security 入门(3-11)Spring Security 的登录密码验证过程 UsernamePasswordAuthenticationFilter
认证过程如下 一.先判断请求(请求必须是post请求)地址是否为配置的 login-processing-url 值(默认/j_spring_security_check),如果不是,则放行,进入下一 ...
- python 保障系统(一)
python 保障系统 from django.shortcuts import render,redirect,HttpResponse from app01 import models from ...
- POJ1017 Packets---贪心
题目链接: https://vjudge.net/problem/POJ-1017 题目大意: 公司共有底面面积为1*1.2*2.3*3.4*4.5*5.6*6,高度同为H的六种产品,现在需要用最少的 ...