python--简易员工信息系统编写
补充内容:
eval 将字符串变成变量名
locals 看输入的是否是字典中的一个key
func.__name____怎么看变量名的数据类型
斐波那契数列
li=[1,1]
while li[-1]<1000000:
li.append(li[-1]+li[-2])
print(li) li=[1,1]
while len(li)<50:
li.append(li[-1]+li[-2])
print(li)
最后两个数相加变成下个数,判断什么时候停下来
员工信息系统编译思路
在编译程序之前,先将用户的需求考虑清楚,然后开始判断从哪方面先入手。
因为函数装饰器比较好写,并且大体都要用在装饰函数上,所以决定最后搞定。
先编写了一个界面,方便用户操作,让用户根据界面上的操作提醒来进行操作。
大致的编写思路就是讲功能列出,然后添加一个退出,用来代表程序的全部功能和结束。用input来进行用户的指令输入
写完界面之后就可以注释了,方便接下来的编译
先进行查询功能的编译。写了一个函数首先要想到的就是从文件中取出数据来,
这样,我就先将文件打开然后取出数据,然后根据用户需求的公式,来进行用户指令的获取,
根据用户的指令,将得到的数据进行判断,比如当*和job是否在数据中时才进行下一项程序,将数据取出之后判断是否与查询条件相符合,然后输出查询结果。
这部分代码编写时主要的难度就是用户指令中真正意图和关键字的获取,还有利用关键字对数据进行判断,要思考怎样才能取出用户需要的数据。
根据用户的需求,一共有三种语法,那么久进行逐一编写,全部拿来与取出的数据进行对比,在这里用的方法是如果用户查询的数据在数据line里面就取出这一条line
接下来开始写创建
在写创建之前也是先要打开文件,这时候要想的是创建新数据的话,肯定就是文件操作中的追加。然后根据这个思路进行编写
难点在于添加数据时候要按照编号,我的方法是令i初始值为,然后每次循环line数据,就令i+1并且将这个i添加到列表li中,然后最后取出列表的最后一个值,也就是上一条数据的值了,然后将他+1就是下一条数据的ID
有个困难就是追加的话是不带换行的,直接在上一条数据后面进行添加,所以每次添加都要在前面加一个\n,然而在删除数据的时候,这种方法的弊端也出现了
因为每次删除数据是不会删除\n的,所以每次添加数据都会多隔一行,然后获取数据的ID是根据行来判断数字的,这样数字就会发生混乱。发生了这个bug之后开始思考解决办法。
最后的解决办法是加一个判断,如果上一条数据中没有\n的话就添加\n,也就是说第一次添加的时候会有一个\n吓一跳数据添加时候如果上一行里面有\n也就是删除数据没有删去的\n就不添加\n的话就添加\n,也就是说第一次添加的时候会有一个\n吓一跳数据添加时候如果上一行里面有\n也就是删除数据没有删去的\n就不添加\n
解决了问题
然后就是删除数据
删除员工信息用户的需求是按员工信息的ID,这样的话就要将重心放在信息的首位,也就是ID上,所以每次循环信息的时候,倒要取这列数据的头一个数据,也就是ID来进行判断
我的方法是取出数据之后如果和用户输入的需求ID相同,那就删除他,然后重新写一个文件,上述方法也是一样,每次修改了数据,除了创建和查询,都是要在结尾将这个文件删除,重新创建一个同名文件进行更新
当然,一个文件更新完了,改名成修改数据的文件,那么这个文件就不存在,下次操作就会报错。所以在结尾又会添加一个相同的文件,预备下次操作的更新
最后一个写的修改,同样,也是读文件拿出 数据,然后判断用户输入的条件是否在这列数据中,如果在的话就可以用,用字符串修改方法,将用户条件替换旧的信息。
同样创建新文件改名,移除旧的,编译完成。
最后就是编译器了,用语法糖每个都添加,然后写登录程序,利用改变全局变量的方法,就可以完成用户需求。
f = open('用户登录','r',encoding='utf-8')
m = f.read() //获取文件中用户信息
f.close()
a,b = m.split('\n') //用户名和密码分割
flag=1
def yanzheng(func):
def inner(*args,**kwargs):
global flag //声明改变全局变量
if flag==1: //第一次进来全局变量为1
while True:
n =input('请输入用户名')
if n ==a:
while True:
z = input('请输入密码')
if z == b:
print('验证成功')
func(*args, **kwargs)
flag =2 //验证成功的话全局变量变成2
break
else:
print('密码错误')
break
else:
print('用户名错误')
else:
func(*args, **kwargs) //全局变量变成2,这样第二次往后的判断就会直接走else
return inner
@yanzheng
def jisuan():
for i in range(0,10):
print(i)
@yanzheng
def shuchu():
print('老板')
jisuan()
shuchu()
利用全局变量的特点,global修改全局变量下次再进来的时候全局变量已经变了,函数中添加全局变量的判断
然后根据条件来判断是否需要再次进行登录程序。
python--简易员工信息系统编写的更多相关文章
- [源码]Python简易http服务器(内网渗透大文件传输含下载命令)
Python简易http服务器源码 import SimpleHTTPServerimport SocketServerimport sysPORT = 80if len(sys.argv) != 2 ...
- C#中一道关于员工信息系统的题(主要考察LinQ和正则表达式验证)
今天上午进行了公司的C# C level考核,最后一道编程题是关于员工信息系统的,题目的要求大概是这样的:1.要可以保存员工信息(XXXXX),并且要用正则表达式对输入信息进行验证:2.要可以对员工信 ...
- python的单元测试代码编写流程
单元测试: 单元测试是对单独的代码块分别进行测试, 以确保它们的正确性, 单元测试主要还是由开发人员来做, 其余的集成测试和系统测试由专业的测试人员来做. python的单元测试代码编写主要记住以下几 ...
- Python 简易web日志查看工具&可改装为命令行工具
Python 简易web日志查看工具&可改装为命令行工具 效果图 原理 利用python的paramiko库模拟ssh登录操作,并执行tail命令 所需库 flask.paramiko.gev ...
- python 正则的使用 —— 编写一个简易的计算器
在 Alex 的博客上看到的对正则这一章节作业是编写一个计算器,要求能计算出下面的算式. 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 + ...
- Python turtle 模块可以编写游戏,是真的吗?
1. 前言 turtle (小海龟) 是 Python 内置的一个绘图模块,其实它不仅可以用来绘图,还可以制作简单的小游戏,甚至可以当成简易的 GUI 模块,编写简单的 GUI 程序. 本文使用 tu ...
- python 进度条的编写
背景: 在执行一些Python脚本时,经常出现执行脚本的过程当中,不知道脚本执行了百分之多少,这个问题一直都让我很苦恼.所以特意总结一下,进度条的编写. #!/usr/bin/env python2. ...
- python简易爬虫来实现自动图片下载
菜鸟新人刚刚入住博客园,先发个之前写的简易爬虫的实现吧,水平有限请轻喷. 估计利用python实现爬虫的程序网上已经有太多了,不过新人用来练手学习python确实是个不错的选择.本人借鉴网上的部分实现 ...
- python之购物车的编写(熬夜撸代码中。。。)
购物车的编写对于我这种不是很精通函数的小白来说,简直太难了.各种坑,各种无奈啊!不过总算也是写出来了! 不多说,直接上代码! #!/usr/bin/env python#用户名 sanjiang#密码 ...
随机推荐
- Eclipse项目类型转换
例如,将一个普通java项目改为动态Web项目: 在eclipse的项目上点右键,刷新项目. 在项目上点右键,进入属性(properties) 在左侧列表项目中点击选择“Project Facets” ...
- maven项目中配置mvn源
在pom.xml中配置 <repositories> <!--for others--> <repository> <id>alimaven</i ...
- es6模板语法使用上的一点问题
var str = "test"; console.log(str); // test console.log(`str`) //str 这里的str是模板语法里面的,而不是变量s ...
- SpringBoot使用Junit4单元测试
SpringBoot2.0笔记 本篇介绍Springboot单元测试的一些基本操作,有人说一个合格的程序员必须熟练使用单元测试,接下来我们一起在Springboot项目中整合Junit4单元测试. 本 ...
- jQuery设置 select、radio、checkbox 默认选中的值
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- dedecms--二次开发之会员帐号过期无法登录
最近在二次开发织梦系统的会员功能:要求会员帐号有期限,开始时间以会员添加时间为开始,这样登录的时候需要判断帐号是否过期,原本的织梦系统中是通过$rs = $cfg_ml->CheckUser($ ...
- npm-debug.log文件出现原因
项目主目录下总是会出现这个文件,而且不止一个,原因是npm i 的时候,如果报错,就会增加一个此文件来显示报错信息,npm install的时候则不会出现.
- tomcat 项目迁移到jboss5.1
1.拷贝tomcat\bin目录下两个jar到项目lib 目的:解决jboss java.lang.NoClassDefFoundError: org/apache/juli/logging/LogF ...
- javascript中实现类似php 的var_dump
javascript语言中的调试功能少得可怜,如果涉及到第三方返回的对象数据更是使得开发程度加大.想到php中的var_dump,print_r简单好用,极大程序上方便了开发工作,在网上乱找一通,终于 ...
- Codeforces 597B Restaurant(离散化 + 贪心)
题目链接 Restaurant 题目意思就是在$n$个区间内选出尽可能多的区间,使得这些区间互不相交. 我们先对这$n$个区间去重. 假如有两个区间$[l1, r1],[l2, r2]$ 若满足$l1 ...