python 工资管理软件_python作业之day3(工资管理系统)

day3新作业:工资管理系统

作者:LiYan(李岩)

环境:

系统环境:Windows 10 专业版

python版本:3.6.0

pycharm版本:2017.1.3

作业内容:

从info.txt文件中读取员工及其工资信息,最后将修改或增加的员工工资信息也写入原info.txt文件

查询员工工资

增加新员工记录

修改员工工资

删除员工记录

退出

实现需求:

实现对文件做增、删、改、查的操作

流程图:

789758-20170616005240603-39045601.png

代码结构:

整体操作共有五个选项,分别是:

查询:

员工姓名不存在,重新输入

员工姓名存在,输出其对应的工资

新增:

员工姓名存在,重新输入

员工姓名不存在,添加信息到文件

修改:

员工姓名不存在,重新输入

员工姓名存在,修改工资,把修改前、修改中、修改后的信息一起写入到新文件

删除原文件,重命名新文件

删除:

员工姓名不存在,重新输入

员工姓名存在,删除信息,把剩余信息写入到新文件

删除原文件,重命名新文件

退出:退出操作;

直接退出程序

文件结构:

salary.py:主程序

info.txt:员工信息存储文件

ReadMe.md:说明文档

png文件:流程图

测试:

程序运行之后输入(1,2,3,4,5)进行相关操作:

选择1和4,只需要输入员工姓名

选择2和3,需要输入员工姓名和工资,中间以空格分开

选择5,程序直接退出

小结:

难点

中间有很多重复的代码,不知道该怎么优化

文件增、删、改的操作比较难理解

空行的格式化比较难

问题

选择添加和修改时,只输入员工姓名也是可以成功的

无法判断输入的信息属于哪种类型

修改最后一条记录时,写不进去数据

删除最后一条记录时,会多出一行空行

员工信息存储文件(info.txt):

Alex 11111

Rain 80000

Egon 50000

Yuan 30000

liyan 88888888

yy 999999999

yange 6666

yan 1

代码:

#! /usr/bin/env python

# -*- coding: utf-8 -*-

# __Author__ = Yan Li

# 导入模块

import sys

import os

# 员工信息存储文件

filename = 'info.txt'

# 过滤空行后的员工信息文件

new_filename = 'new_info.txt'

# 员工姓名列表

info_dict = {}

# 员工工资列表

user_dict = {}

# 提取用户信息

def info():

with open(filename, 'r') as f:

for i in f:

if not i.startswith('\n'):

i = i.strip()

# 把员工和工资信息加入字典

info_dict[i.split(' ')[0]] = i.split(' ')[1]

# 删除和移动文件

def file():

# 把原文件删除

os.remove(filename)

# 把新文件重命名为原文件名

os.rename(new_filename, filename)

# 查询

def select():

while True:

info()

user_info = input('请输入员工姓名:').strip()

if user_info in info_dict.keys():

print('%s的工资是:%s' % (user_info, info_dict[user_info]))

break

else:

print('用户不存在!!!')

# 新增

def insert():

while True:

info()

user_info = input('请输入要增加的员工姓名和工资:').strip()

# 把新员工的姓名和工资加入字典

user_dict[user_info.split(' ')[0]] = user_info.split(' ')[1]

# 把新员工信息转为列表

user_list = user_info.split(' ')

# 当新员工在当前员工信息文件中不存在

if user_list[0] not in info_dict.keys():

user_info = '\n' + user_info + '\n'

# 写入新员工信息到文件中

with open(filename, 'a+') as f:

f.write(user_info)

print('%s 添加成功!' % user_list[0])

break

else:

# 当新员工在当前员工信息文件中存在

print('用户已存在!!!')

# 修改

def update():

while True:

info()

user_info = input('请输入要修改的员工姓名和工资:').strip()

# user_dict[user_info.split(' ')[0]] = user_info.split(' ')[1]

# 把新员工信息转为列表

user_list = user_info.split(' ')

# 当前需要修改的员工信息

user_now = '%s %s' % (user_list[0], info_dict[user_list[0]])

# 当新员工在当前员工信息文件中存在

if user_list[0] in info_dict.keys():

with open(filename, 'r') as fr, open(new_filename, 'w') as fw:

tag = False

for i in fr:

if i.strip() == user_now:

tag = True

continue

if not tag:

fw.write(i)

else:

fw.write(user_info + '\n\n')

if tag and i.startswith('\n'):

tag = False

file()

print('%s 修改成功!' % user_list[0])

break

else:

# 当新员工在当前员工信息文件中不存在

print('用户不存在!!!')

# 删除

def delete():

while True:

info()

user_info = input('请输入要删除的员工姓名:').strip()

# 当前需要修改的员工信息

user_now = '%s %s' % (user_info, info_dict[user_info])

# 当删除的员工在当前员工信息文件中存在

if user_info in info_dict.keys():

with open(filename, 'r') as fr, open(new_filename, 'w') as fw:

tag = False

for i in fr:

if i.strip() == user_now:

tag = True

continue

if not tag:

fw.write(i)

if tag and i.startswith('\n'):

tag = False

file()

print('%s 删除成功!' % user_info)

break

else:

# 当删除的员工在当前员工信息文件中不存在

print('用户不存在!!!')

choose_msg = '''

1: 查询

2: 新增

3: 修改

4: 删除

5: 退出

'''

salary = {

'1': select,

'2': insert,

'3': update,

'4': delete,

'5': sys.exit,

}

while True:

print(choose_msg)

# 选择操作

choose = input('\033[31;1m请输入操作选项:\033[0m').strip()

if choose not in salary.keys():

continue

salary[choose]()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值