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#密码 ...
随机推荐
- 【Luogu】P1430序列取数(DP)
题目链接 博弈DP太喵了qwq 设f[i][j]表示剩下区间[i,j]要取,先手最大值 明显我们要从这区间里面拿个最大的 就等价于这段区间的前缀和,我们要给对手留下个最小的 就是f[i][j]=sum ...
- bzoj4717 改装 模拟+二分
Description [题目背景] 小Q最近喜欢上了一款游戏,名为<舰队connection>,在游戏中,小Q指挥强大的舰队南征北战,从而成为了一名dalao.在游戏中,不仅船只能力很重 ...
- JavaWeb学习总结(十七)——JSP中的九个内置对象(转)
一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...
- 【CF56E】Domino Principle(线性扫描,伪DP)
每块多米诺骨牌所在的位置设为x,每块多米诺骨牌高度为h.如果将x位置上的多米诺骨牌向右翻到,它就可以影响[x+1, x+h-1]范围内的所有多米诺骨牌,让他们也翻到,同时这些被翻到的多米诺骨牌还能影响 ...
- 标准C程序设计七---105
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- Android中沉浸式状态栏的应用
在Android5.0版本后,谷歌公司为Android系统加入了很多新特性,刷新了Android用户的体验度.而其中的一个新特性就是沉浸式状态栏.那么问题来了,很多非移动端的小伙伴就要问了,什么是沉浸 ...
- L1-2. 点赞【求多组数据中出现次数最多的】
L1-2. 点赞 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 微博上有个“点赞”功能,你可以为你喜欢的博文点个赞表示支持.每 ...
- 《从零开始搭建游戏服务器》项目管理工具Maven
简介 什么是Maven?Maven是一个项目管理和综合工具,提供了开发人员构建一个完整的生命周期框架. Maven使用标准的目录结构和默认构建生命周期,在多个开发团队环境时,Maven可以设置按标准在 ...
- [Inside HotSpot] Java分代堆
[Inside HotSpot] Java分代堆 1. 宇宙初始化 JVM在启动的时候会初始化各种结构,比如模板解释器,类加载器,当然也包括这篇文章的主题,Java堆.在hotspot源码结构中gc/ ...
- cf744
Codeforces Round #385 (Div. 1) <br > A.Hongcow Builds A Nation 贪心. 显然就是凑成一个最大的块即可 那么首先并查集处理已经确 ...