python学习day15 员工信息管理系统编译及思路

员工管理系统,顾名思义,应该具有增删查改功能。拿到需求后,应该按照一定的流程依次编写,最后达到程序的统一和兼容。

系统需求如下:

文件存储格式如下:
 id,name,age,phone,job
 1,Alex,22,13651054608,IT
 2,Egon,23,13304320533,Tearcher
 3,nezha,25,1333235322,IT

现在需要对这个员工信息文件进行增删改查。
基础必做:
a.可以进行查询,支持三种语法:
select 列名1,列名2,… where 列名条件
支持:大于小于等于,还要支持模糊查找。
示例:
select name,age where age>22   #> <
select * where job=IT          # =
select * where phone like 133  #看起来像   ‘abc’in ‘1232abcahj’

#充分的利用函数
#文件处理 字符串处理
#str  #where split

进阶选做:
b.可创建新员工记录,id要顺序增加
c.可删除指定员工记录,直接输入员工id即可
d.修改员工信息
语法:set 列名=“新的值”  where 条件
#先用where查找对应人的信息,再使用set来修改列名对应的值为“新的值”

注意:要想操作员工信息表,必须先登录,登陆认证需要用装饰器完成
     其他需求尽量用函数实现

-----------------------------------------------------------------------------------------------------------------------这样我们拿到了需求,首先应该按照需求来设计流程,然后按照流程再编写程序。首先应该想到的就是查询功能的实现。代码如下:def cha():        f = open(‘员工信息‘,encoding=‘utf-8‘)     #打开文件,编码格式utf-8,文件名员工信息,存储格式按需求        def chaxun(a):            xinxi,tiaojian=a.split(‘where‘)    #将获取到的内容进行分割,分割标志是‘where‘,分割原因就是由where分别可以分割出条件和信息            xinxi = xinxi.strip().strip(‘select‘)  #将信息去空格去掉select  这样可以得到查询的信息了            if ‘*‘in xinxi and ‘job‘in tiaojian:   #如果得到的信息中含有*而且条件中含有job                j,d=tiaojian.strip().split(‘=‘)     #那么条件按等号分割,将条件d分割出来                d = d.strip()                for line in f:                     #循环每一行内容                    i = line.strip().split(‘,‘)    #内容去空格,按照逗号分割                    #print(line)                               job = i[4]                     #job在第五位                    if job==d:                      #拿出第四位数据对比,如果相等                        print(line)                #打印这行数据,就是查询的,因为前面的循环循环打印所有符合条件的数据                    else:                        continue            elif ‘*‘in xinxi and ‘phone‘in tiaojian:  #如果*在信息中,然后phone 在条件中                j, d = tiaojian.strip().split(‘like‘)  #按照like将条件分割                d = d.strip()                                         for line in f:                    i = line.strip().split(‘,‘)                          # print(line)                                       phone = i[3]                  #phone在数据第四位                    if d in phone:                #如果分割出的条件在phone数据中                        print(line)               #打印这条数据                    else:                        continue

else:                for line in f:                   #如果不在两个条件中,进入第三个语法                    i = line.strip().split(‘,‘)                      age = i[2]                   #age数据在第三位                    age = int(age)               #将age数据变成int整型,才能继续接下来的判断                    if eval(tiaojian):           #用eval直接将条件信息转化成可以用的条件,就可以直接调用之前int的age                        print(line)              #打印查询到的年龄数据                    else:                        continue        chaxun_shuru=input(‘请输入查询语法‘)       #input让用户键入条件        v = chaxun(chaxun_shuru)                    return vif n==1:                                        #主界面中要用到的启动条件    cha()---------------------------------------------------------------------------------------------------------------------------------查询部分的代码写完了,就可以注释了,因为这样编写其他部分代码的时候会妨碍运行,接下来按照客户需求,编写创建新员工信息部分的代码代码如下:
def chuang():    f = open(‘员工信息‘,encoding=‘utf-8‘,mode=‘r‘)     #同上,首先要处理员工信息的文件首先要调用文件数据    def cha():        print(‘请输入要创建的员工记录格式如Alex,22,13651054608,IT‘              ‘name,age,phone,job‘)        yuangong = input(‘输入:‘)        #用户按照创建格式来输入创建的员工信息        i=1                              #先设定一个变量值为1        li=[]                            #设定一个空列表        print(f)        for lin in f:            i+=1                        #每次读取了一行文件中的数据,i就+1            li.append(i)                #将加的1放进列表中        i =li[-1]+1                     #最后得出了一个列表li,最后一位+1就是下一位的ID        i = str(i)                      #将i变成字符串才可以跟字符串一起添加到信息中        if ‘\n‘not in lin:              #如果这行数据中没有\n的话          y = (‘\n‘+i+‘,‘+yuangong)     #就将i和用户输入的员工信息还有前置的\n一起加入到数据中       ps:做这行的目的不是多余的,因为添加的数据,前面有\n下次添加就会隔一行        else:                                                                                   而且添加数据按行来读ID,删除了的话还空了一行这样有bug,没\n就在上一条末尾了            y=(i+‘,‘+yuangong)          #如果有的话直接添加数据不用加\n        f.close()        f1 = open(‘员工信息‘, encoding=‘utf-8‘, mode=‘a‘)        f1.write(y)        f1.close()    cha()if n==2:  chuang()-------------------------------------------------------------------------------------------------------------------------------------------------------------------编写完了创建功能,接下来就要完成客户需要的删除功能。同样,要按照ID删的话,思路要清晰,要想尽办法获取到信息中的ID,然后再想办法怎么调用这个ID来处理数据
def shan():    import os    f=open(‘员工信息‘,encoding=‘utf-8‘,mode=‘r‘)    v = f.readlines()                        #v接收到的是文件中每行的信息    f.close()    y = input(‘请输入要删除的员工ID‘)           #用户输入要删除的员工ID    for item in v:                           #for循环得到的文件数据        if item:                                         if item[0] ==y:                  #如果循环的数据中含有用户要删除的ID                o=v.index(item)              #那么用o来接收,用index来查找这一行数据的索引                v[o]=v[o].lstrip(‘\n‘)       #索引取出,按照v来取出这个值去掉左侧的\n否则删除的时候是不会删除\n的                del v[o]                     #删除这条数据    f1=open(‘员工信息2‘,encoding=‘utf-8‘,mode=‘w‘)    f1.writelines(v)                         #新建文件写入除了删掉的数据的所有数据    f1.close()    os.remove(‘员工信息‘)                     #移除旧的文件    os.rename(‘员工信息2‘,‘员工信息‘)          #将新文件名改成旧文件,做成更新状态    f3=open(‘员工信息2‘,encoding=‘utf-8‘,mode=‘w‘)          #再创建一个同名新文件,以备下次使用    f3.close()if n==3:   shan()
-------------------------------------------------------------------------------------------------------------------------------------------------------删除员工信息写完了,主要的工作就是寻找关键ID,然后写入新文件删除旧文件,以及创建一个下次使用的新文件。接下来编写最后一项功能,修改员工信息的功能。代码如下:
def gai():    import os    j=input(‘请输入想要修改的信息,语法为set 列名 =新的值 where 条件‘)   #让用户按键规则输入修改信息    lieming,tiaojian=j.strip().split(‘where‘)         #按照where分割用户输入的信息    tiaojian=tiaojian.strip()               lieming,zhi=lieming.strip().split(‘=‘)            #按照等号分割列名,取出列名和值,列名是要修改的内容属性,值是修改后的新值    zhi=zhi.strip()          zhi=str(zhi)                                      #将值的数据类型改为字符串    lieming= lieming.strip().lstrip(‘set‘)            #将列名去掉左侧的set    lieming=lieming.strip()                               f=open(‘员工信息‘,encoding=‘utf-8‘,mode=‘r‘)         v=f.readlines()    for line in v:        x=v.index(line)                              #用x接受line的索引值        if tiaojian in line:                         #如果条件值在line数据中            if lieming in ‘name‘:                    #如果用户输入的列名是name的话                line=line.replace(tiaojian,zhi)      #将这一行数据中用replace方法将条件值替换成修改新值                v[x]=line                            #将这一行新的数据按照索引值替换v中的原数据            elif lieming in ‘age‘:                line = line.replace(tiaojian, zhi)                v[x] = line            elif lieming in ‘phone‘:                line = line.replace(tiaojian, zhi)                v[x] = line            elif lieming in ‘job‘:                line = line.replace(tiaojian, zhi)                v[x] = line    f.close()    f2=open(‘员工信息2‘,encoding=‘utf-8‘,mode=‘w‘)    f2.writelines(v)    f2.close()    os.remove(‘员工信息‘)    os.rename(‘员工信息2‘,‘员工信息‘)    f3=open(‘员工信息2‘,encoding=‘utf-8‘,mode=‘w‘)    f3.close()if n==4:    gai()
-----------------------------------------------------------------------------------------------------------------------------------------------

写完了所有功能的程序,分别写完后接下来就是整合,想要用户循环使用的话,那就要加上循环加上退出。代码如下放在开头包含所有功能函数:
while True:    print(‘员工信息管理系统‘)    print(‘1.查找员工信息‘)    print(‘2.创建新员工记录‘)    print(‘3.删除指定员工记录‘)    print(‘4.修改员工信息‘)    print(‘5.退出‘)    n = input(‘请输入功能序号‘)    n=int(n)
让用户按照功能序号进行功能选择,还包含了退出功能所有功能及循环都完成了,那么久要用装饰器来装饰一下,只用登录一次的登录系统----------------------------------------------------------------------------------------------------------------------------------------------
flag = Falsedef login(func):    def inner(*args,**kwargs):        global flag        while True:            if not flag:                a = input(‘username:‘)                b = input(‘password‘)                with open(‘用户登录‘,encoding=‘utf-8‘) as f:                    for line in f:                        name,pwd=line.strip().split(‘|‘)                        if name == a and pwd ==b:                            print(‘登录成功‘)                            flag = True            if flag:                res=func(*args,**kwargs)                return res

return inner
用法在前面的博客有说明

用语法糖将装饰器添加到所有函数中,这样,员工信息管理系统就完成了
时间: 2024-11-05 12:56:40

python学习day15 员工信息管理系统编译及思路的相关文章

员工信息管理系统需求分析

员工信息管理系统"可以是面向企业或事业单位的科学.全面.高效进行人事管理的系统,可以根据企业或事业单位人事管理的实际情况,进行科学的.具体的.实用性的系统设计.内容包括机构的建立和维护,人员信息的录入和输出,各种实用信息的浏览,个人信息相关信息的添加,工资的调整和发放以及各类报表的绘制和输出等功能.系统简便灵活实用或者自动化功能较强均可. 系统设计分析 用于小型企业,其功能主要分为: 用户管理:用于对用户的添加,删除,修改. 帮助信息:用于对本系统的具体操作进行详解. 本系统性能力求易于使用,具

python学习之-员信息增删改查

python学习之-成员信息增删改查 主要实现了成员信息的增加,修改,查询,和删除功能,写着玩玩,在写的过程中,遇到的问题,旧新成员信息数据的合并,手机号和邮箱的验证, #!/usr/bin/env python# coding=utf8#author:[email protected] import os, sys, time,jsonimport re member_dict = \ {}member_name_list = []member_list = []def handler_mem

大数据技术之_16_Scala学习_11_客户信息管理系统+并发编程模型 Akka+Akka 网络编程-小黄鸡客服案例+Akka 网络编程-Spark Master Worker 进程通讯项目

第十五章 客户信息管理系统15.1 项目的开发流程15.2 项目的需求分析15.3 项目的界面15.4 项目的设计-程序框架图15.5 项目的功能实现15.5.1 完成 Customer 类15.5.2 完成显示主菜单和退出软件功能15.5.3 完成显示客户列表的功能15.5.4 完成添加客户的功能15.5.5 完成删除客户的功能15.5.6 完善退出确认功能15.5.7 完善删除确认功能15.5.8 完成修改客户的功能第十六章 并发编程模型 Akka16.1 Akka 的介绍16.2 Acto

python练习——moudule02——员工信息增删改查

#作业名称:员工信息的增删改查 #作业需求: 1.可进行模糊查询,语法至少支持下面3种: select name,age from staff_table where age > 22 select * from staff_table where dept = "IT" select * from staff_table where enroll_date like "2013" 查到的信息,打印后,最后面还要显示查到的条数 2.可创建新员工纪录,以phon

员工信息管理系统

/********************************************************** ????作者: 刘家 ????时间:2015年12月24日02:44:48 ????编译器:dev ***********************************************************/ ? # include <stdio.h> # include <stdlib.h> # include <string.h> ?

python Day 4 :员工信息表程序

员工信息表程序,实现增删改查操作: 可进行模糊查询,语法至少支持下面3种: select name,age from staff_table where age > 22 select  * from staff_table where dept = "IT" select  * from staff_table where enroll_date like "2013" 查到的信息,打印后,最后面还要显示查到的条数 可创建新员工纪录,以phone做唯一键,s

python基础之员工信息表作业

周末大礼包 文件存储格式如下: id, name, age, phone, job 1, Alex, 22, 13651054608, IT 2, Egon, 23, 13304320533, Tearcher 3, nezha, 25, 1333235322, IT 现在需要对这个员工信息文件进行增删改查 一. 基础必做: 可以进行查询,支持三种语法: select 列名1,列名2,… where 列名条件 支持:大于小于等于,还要支持模糊查找. 示例: select name, age wh

Python学习day15 CMDB

Created on 2017年6月6日 @author: louts 第1课 上节作业 10minutes 显示页面时,只有登录了才能显示,没登录会弹出一个登录框,就是一个遮挡层 第2课 自动化之路和CMBD地位 22minutes CMDB: 自动安装 配置管理系统 CMDB运维资产管理系统(所有系统都需要调用这里的信息)---核心所在 highchats echats CMDB: 采集硬件数据 API汇报----开放给所有外部,收集信息,通过API写入到数据库 页面管理 大概流程:Clie

小菜鸟的python学习之路----信息查询系统

功能说明: (1)用户认证功能,只有输入对的用户名和密码后才能查询(2)可以查员工的ID,Name,部门,电话(3)查询的接口关键字是姓名,用户通过姓名来查其他关联相关信息.(4)查完了输出用户信息,如果查询失败,报没有这个用户,然后循环起来 python源代码如下(通过读取外部文件来导入数据) #!/usr/bin/env python # encoding=utf-8 # author:sihaogongyuan # date:2015-4-5 # desc:2015-4-5 test im