首页 技术 正文
技术 2022年11月18日
0 收藏 791 点赞 3,695 浏览 4931 个字
  • 功能要求
  1. 登录系统用户认证通过后才能列出下一级菜单员工信息表
  2. 登录系统要有用户登录、注册账号、删除账号、修改密码、退出
  3. 登录密码要有加密功能
  4. 从info.txt文件读取员工及工资信息,最后通过增加,修改员工信息写入原info.txt文件
  • 开发环境
  1. python 3.6.1
  2. PyCharm 2016.2.3
  • 目录结构
 project
|--day2
|--login.py
|--PayrollStstem.py
|--log.txt
|--info.txt
  • 程序设计
 #!/usr/bin/env python
#coding=utf-8
__author__ = 'yinjia' import hashlib
import sys
from project.day2 import PayrollSystem #存储文件
filename = 'log.txt'
#账号信息表
result = {} def md5(arg):
"""
密码进行md5加密
:param arg: 用户的密码
:return: 返回进行加密后的密码
"""
result = hashlib.md5(bytes("k1:1a2 k2:688",encoding='utf-8'))
result.update(bytes(arg,encoding='utf-8'))
return result.hexdigest() def login(username,password):
"""
用于验证用户密码
:param username:用户名
:param password:密码
:return: True,用户名验证成功;False,用户验证失败
""" with open(filename,"r") as f:
for line in f:
u,p = line.strip().split(":")
if username == u and md5(password) == p:
return True
return False def register(username,password):
"""
用户注册
:param username: 用户名
:param password: 密码
:return: True,用户注册成功;
""" with open(filename,"a") as f:
temp = "\n" + username + ":" + md5(password)
f.write(temp)
return True def user_exist(username):
"""
检查用户名是否存在
:param username: 用户名
:return: True,用户名存在; False,用户名不存在
"""
with open(filename,"r") as f:
for line in f:
line = line.strip()
line_list = line.split(":")
if username == line_list[0]:
return True
return False def delete(username):
"""
删除用户名
:param username: 用户名
:return: True,删除成功; False,删除失败
"""
info()
del result[username]
with open(filename,'w') as f:
for key,value in result.items():
f.write("%s%s%s\n" % (key,":",value))
return True def edit(username,old_password,new_password):
"""
修改密码
:param username:用户名
:param old_password:旧密码
:param new_password:新密码
:return:True,修改成功;False,修改失败
"""
info()
ret = result[username]
if ret == md5(old_password):
result[username] = md5(new_password)
with open(filename, 'w') as f:
for key, value in result.items():
f.write("%s%s%s\n" % (key, ":", value))
return True def info():
"""
提取账号信息
:return: 返回账号信息表
"""
with open(filename,'r') as f:
for line in f:
line = line.strip()
result[line.split(":")[0]] = line.split(":")[1]
return result def main():
info_msg = """
1、登录系统
2、注册账号
3、删除账号
4、修改密码
""" print('\033[32;1m')
print('*' * 50)
print('\t\t\t\t欢迎登录工资管理系统')
print('*' * 50)
print('\033[0m')
print(info_msg)
pingtai = str(input("\033[1;34;1m请选择操作(退出请输入q|Q):\033[0m")).strip()
if pingtai == "":
user = input("请输入用户名:")
pwd = input("请输入密码:")
ret = login(user,pwd)
if ret:
print("\033[1;31;1m<<<<<<<<登录成功>>>>>>>>>\033[0m")
info = PayrollSystem.salary()
info.comm()
else:
print("\033[1;31;1m<<<<<<<<登录失败>>>>>>>>>\033[0m")
elif pingtai == "":
user = input("请输入用户名:")
pwd = input("请输入密码:")
ret = user_exist(user)
if ret:
print("\033[1;31;1m用户名已存在,不能注册!\033[0m")
else:
add_user = register(user,pwd)
if add_user:
print("注册成功")
else:
print("注册失败")
elif pingtai == "":
user = input("请输入用户名:")
del_user1 = user_exist(user)
if del_user1:
del_user2 = delete(user)
if del_user2:
print("删除成功!")
else:
print("删除失败!")
else:
print("\033[1;31;1m用户名不存在,无法删除!\033[0m") elif pingtai == "":
user = input("请输入用户名:")
pas1 = input('请输入旧密码:')
pas2 = input('请输入新密码:')
del_user = user_exist(user)
if del_user:
edit_user = edit(user,pas1,pas2)
if edit_user:
print("修改密码成功!")
else:
print("\033[1;31;1m旧密码错误,修改密码失败!\033[0m")
else:
print("\033[1;31;1m用户名不存在,无法修改!\033[0m")
elif str(pingtai).lower() == "q":
print("GoodBye!")
sys.exit()
else:
print("\033[1;31;1m非法输入!\033[0m") if __name__ == "__main__":
main()

系统登录

 #!/usr/bin/env python
# _*_ coding:utf-8 _*_
__author__ = 'Yin Jia' import sys # 员工存储文件
filename = "info.txt"
#提取姓名信息表
info_dict = {} class salary: def Query(self):
"""
查询员工
:return:输出员工的工资
"""
while True:
self.info()
user = input("请输入要查询的员工姓名(例如:Jon)").strip()
if user in info_dict.keys():
print('%s的工资:%s' % (user,info_dict[user]))
break
else:
print('用户不存在!') def Insert(self):
while True:
self.info()
user = input("请输入要增加的员工姓名和工资,共空格分割(例如:Eric 100000):").strip()
# 转换成列表
u, p = user.split(" ")
if u not in info_dict.keys():
info_dict[u] = p
with open(filename, 'w') as f:
# 循环读取字典信息并写入文件
for key, value in info_dict.items():
f.write("%s%s%s\n\n" % (key, " ", value))
print('%s 新增成功!' % u)
break
else:
print('用户已存在,不能增加!') def Update(self):
while True:
self.info()
user = input("请输入要修改的员工姓名和工资,用空格分隔(例如:Jon 100):").strip()
#转换成列表
u,p = user.split(" ")
if u in info_dict.keys():
info_dict[u] = p
with open(filename,'w') as f:
# 循环读取字典信息并写入文件
for key,value in info_dict.items():
f.write("%s%s%s\n\n" % (key," ",value))
print('%s 修改成功!' % u)
break
else:
print('用户不存在!') def Delete(self):
while True:
self.info()
user = input("请输入要删除的员工姓名(例如:Jon):").strip()
if user in info_dict.keys():
del info_dict[user]
with open(filename, 'w') as f:
# 循环读取字典信息并写入文件
for key, value in info_dict.items():
f.write("%s%s%s\n\n" % (key, " ", value))
print('%s 删除成功!' % user)
break
else:
print('用户不存在!') def info(self):
"""
读取员工信息表
:return: 返回员工信息表
"""
with open(filename,'r',encoding='utf-8') as f:
for i in f:
if not i.startswith("\n"):
u,p = i.strip().split(" ")
info_dict[u] = p
return info_dict def Exit(self):
print('GoodBye!')
sys.exit()
def comm(self):
info_msg = """
1. 查询员工工资
2. 修改员工工资
3. 增加新员工记录
4、删除员工记录
5、退出
"""
payroll = salary() info_payroll = {
'': payroll.Query,
'': payroll.Update,
'': payroll.Insert,
'': payroll.Delete,
'': payroll.Exit
} while True:
print('\033[32;1m')
print('*' * 50)
print('\t\t\t\t员工工资信息表')
print('*' * 50)
print('\033[0m')
print(info_msg)
choose = input('\033[1;31;1m请输入操作选项>>>:\033[0m').strip()
if choose not in info_payroll.keys():
print("不合法,请重新录入!")
continue
info_payroll[choose]()

工资信息表

  • 效果演示

部分效果截图展示:

python【项目】:工资管理(简易版)

python【项目】:工资管理(简易版)

python【项目】:工资管理(简易版)

python【项目】:工资管理(简易版)

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,072
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,550
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,398
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,175
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,810
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,891