2017-6-16 周末作业

import os                                                       #调用os,time模块
import time

def file_oper():                                                        #定义file_oper()对文件进行操作
    with open(‘staff_table.txt‘,‘r‘,encoding=‘utf-8‘) as f:              #打开文件,生成两个列表
        file_opers = []
        file_oper1 = []
        for line in f:
            file_opers.append(line.strip().split(‘,‘))
            file_oper1.append(line)
        file_opera = [file_opers,file_oper1]                             #将两个列表添加到list中
        return  file_opera                                              #返回list的值

def list():                                                             #定义list函数
    file_opers = file_oper()[0]                                         #调用file_oper函数,将file_opers赋值
    index = []                                                          #定义空列表
    staffids = []
    names = []
    ages = []
    phones = []
    depts = []
    enroll_datas = []
    for (v,i) in enumerate(file_opers):                                #获取下标
        index.append(v)                                                 #将下标添加到index列表中
    for v in index:                                                     #将每个列表中下标相同的元素放到一个列表中
        staffids.append(file_opers[v][0])
        names.append(file_opers[v][1])
        ages.append(file_opers[v][2])
        phones.append(file_opers[v][3])
        depts.append(file_opers[v][4])
        enroll_datas.append(file_opers[v][5])
    value =  [staffids,names,ages,phones,depts,enroll_datas]           #将所有列表添加到新的列表value
    return value                                                       #返回列表value的值

def title():                                                            #定义title函数
    print(‘您当前可操作的对象为:‘)                                    #打印可操作对象
    print(‘------------------------------------‘)
    for x in file_oper()[1]:
        print(x.strip())
    print(‘------------------------------------‘)

def example():                                                           #定义exmaple函数,打印语句示例
    oper = [‘增:create zhang san,23,1388888888,Market,2018-03-31‘,            ‘删:delete 1‘,            ‘改:update staff_table SET dept="Market" WHERE where dept = "IT"‘,            ‘查:select name,age from staff_table where age > 22,            \nselect  * from staff_table where dept = "IT",            \nselect  * from staff_table where enroll_date like "2013"‘]
    print(‘--------操作语句示例---------‘)
    for i in oper:
        print(i)
    print(‘-----------------------------‘)

def rename(func):                                                        #定义rename装饰器,对操作的文件进行备份
    def wapper(*args,**kwargs):
        func(*args,**kwargs)
        os.rename(‘message.txt‘, ‘message_%s.bak‘ % time.strftime(‘%Y%m%d%H%M%S‘))
        os.rename(‘message_1.txt‘, ‘message.txt‘)
    return wapper

@rename                                                                    #调用装饰器
def create(str1):                                                          #定义create函数
    phones = list()[3]                                                      #调用函数并赋值
    staff_id = list()[0]
    list1 = file_oper()[1]
    createdata = str1.split(‘ ‘)                                            #对输入语句进行split操作,取得需要的phone值
    staff = createdata[-1]
    staff_a = staff.split(‘,‘)
    with open(‘message_1.txt‘, ‘w+‘, encoding=‘utf-8‘) as add_file:     #打开文件
        if staff_a[2] not in phones:                                        #判断输入是否在phones列表中
            index1 = int(staff_id[-1])+1                                     #存在则将staff_id+1,存入message_1.txt中
            staff_all = ‘\n‘ + str(index1) + ‘,‘ + staff
            list1.append(staff_all)
            print(‘-----------------------‘)
            print(‘写入成功!‘)
        else:                                                               #不存在文件重新写入
            print(‘信息已存在或输入错误,请重新输入‘)
        for i in list1:
            add_file.write(i)

@rename                                                                 #调用装饰器
def delete(str1):                                                       #定义delete函数
    staffids = list()[0]                                                #调用函数并赋值
    list1 = file_oper()[1]
    deldata = str1.split(‘ ‘)                                           #对输入语句进行split操作,取得需要的staff_id值
    staff_id = deldata[-1]
    with open(‘message_1.txt‘, ‘w+‘, encoding=‘utf-8‘) as del_file:    #打开文件
        if staff_id in staffids:                                        #判断文件是否存在于staffids列表中
            index = staffids.index(staff_id)                            #存在删除
            del staffids[int(index)]
            del list1[int(index)]
            print(‘-----------------------‘)
            print(‘删除成功!‘)
        else:                                                               #不存在
            print(‘文件中不存在对应的staffid!‘)
        for i in list1:
            del_file.write(i)

@rename                                                                     #调用装饰器
def update(str1):                                                           #定义update函数
    depts = list()[4]                                                       #调用函数并赋值
    file_opers = file_oper()[0]
    list1 = file_oper()[1]
    update_data = str1                                                      #对输入语句进行split操作,取得dept值
    update_datas = update_data.split(‘"‘)
    with open(‘message_1.txt‘, ‘w+‘, encoding=‘utf-8‘) as up_file:     #打开文件
        if update_datas[3] in depts:                                        #判断dept是否depts列表中
            for i in file_opers:                                            #存在修改
                if update_datas[3] in i:
                    i[i.index(update_datas[3])] = update_datas[1]
            i = ",".join(i)
            up_file.write(str(i) + "\n")
            print(‘------------------------------‘)
            print(‘更改成功!‘)
        else:                                                               #不存在打印提示
            for i in list1:
                up_file.write(i)
            print(‘所输入的值不在文件中!‘)

def select(str1):                                                           #定义select函数
    list1 = file_oper()[0]                                                  #调用函数并赋值
    choise = str1                                                           #将输入的字符串进行split操作,取得需要的值
    choise1 = choise.split(‘where‘)
    value = choise1[-1].strip()
    if value.startswith(‘age‘):                                             #输入的值为age则查找文件中对应的age信息
        choise_age = value.split(">")
        age = choise_age[-1].strip()
        print(‘---------------------‘)
        for i in list1:
            if int(age) < int(i[2]) :
                i = ",".join(i)
                print(i)
        print(‘---------------------‘)
        print(‘以上为查找到的信息!‘)
    if value.startswith(‘dept‘):                                        #输入的值为dept则查找文件中对应的dept信息
        choise_dept = value.split(‘"‘)
        print(‘---------------------‘)
        for i in list1:
            if choise_dept[1] in i:
                i = ",".join(i)
                print(i)
        print(‘---------------------‘)
        print(‘以上为查找到的信息!‘)
    if value.startswith(‘enroll_date‘):                              #输入的值enroll_date为则查找文件中对应的信息
        choise_enroll = value.split(‘"‘)
        print(‘---------------------‘)
        for i in list1:
            if i[-1].startswith(choise_enroll[1]) :
                i = ",".join(i)
                print(i)
        print(‘---------------------‘)
        print(‘以上为查找到的信息!‘)

def mains():                                                       #定义mains函数
    example()                                                       #打印示例
    while True:
        title()                                                     #打印可操作语句
        choise = input(‘请输入操作语句(按q退出):‘)                #请用户输入语句
        if choise.startswith(‘select‘):                             #根据开头输入单词,调用对应的函数,输入q为退出
            select(choise)
        if choise.startswith(‘update‘):
            update(choise)
        if choise.startswith(‘delete‘):
            delete(choise)
        if choise.startswith(‘create‘):
            create(choise)
        if choise == ‘q‘:
            print(‘退出成功!‘)
            break

mains()                                                              #调用mains函数

  

时间: 2024-08-01 17:50:20

2017-6-16 周末作业的相关文章

【2016.3.16】作业 VS2015安装&单元测试(1)

首先说下本机配置. CPU:Intel Atom x5-z8300 @1.44GHz 内存:2GB 操作系统:Windows10 家庭版 32位 硬盘:32GB 然后开始怒装visual studio 2015 专业版. 首先会看到一个.iso文件的镜像,在Windows10 下可以直接用资源管理器打开. 打开后运行vs_professional. 然后出现下图界面 等了10分钟 安装位置建议不变,安装类型要选择自定义,如果选择默认,只安装了C#/VB Web,使用win32控制台要重新下载插件

信息系统项目3月16日作业

3月16日作业: 一,本章课程重点: 项目整体管理的过程包括如下内容: 项目启动 制定初步的范围说明书 制定项目管理计划 指导和管理项目的执行 监督和控制项目 整体变更控制 项目收尾 启动前加入背景介绍 收尾后加入经验教训就是论文论项目整体管理大纲 项目启动:项目立项以后就要正式启动项目,启动是以书面的.正式的形式肯定项目的成立于存在,同时以书面正式的形式为项目经理进行授权 项目正常的作用和内容 项目章程是正式批准一个项目的文档,或者是批准现行现行项目是否进入下一阶段的文档.项目章程应当由项目组

2016年3月16日作业

软考中高项学员:2016年3月16日作业 1.请根据授课内容,梳理出今晚讲的重点. 项目整体管理 1.项目整体管理的过程包括如下内容:1.项目启动,制定项目章程.2.制定初步的项目范围说明书.3.制定项目管理计划.4.指导和管理项目的执行.5.监督和控制项目.6.整体变更控制.7.项目收尾.2.项目章程应当由项目组织以外的项目发起人发布,或者由投资人发布.项目章程为项目经理使用组织资源进行项目活动提供了授权.3.项目章程应当包括以下内容:1.基于项目干系人的需求和期望提出的要求.2.项目必须满足

2017面向对象程序设计寒假作业3!

实现简单电梯调度(2) GitHub:pullself 承接上文:2017面向对象程序设计寒假作业2! 上文调度方式的更新与优化 由于现在电梯可以在任意楼层停靠并且上下人.进行对应的修改. 建立在上文所使用的调度方式为基础,继续给出以预知和非预知为条件的两个程序. 代码行数 调试bug 编码时间 ?行 ?个 ?h ?行 ?个 ?h 预知版本 通过分析,我们可以知道,只需要对搜索方式进行修改即可,修改为通过接受到的请求,动态增加所需要搜索节点. 具体实现方式: 在搜索过程中加入目的地判断与记录.

2017.3.16作业

作业一: 1)  将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) 2)  将用户信息数据库文件和用户密码数据库文件纵向合并为一个文件/2.txt(追加) 3)  将/1.txt./2.txt两个文件打包为/1.tar 4)  使用gzip命令压缩1.txt文件名为1.txt.gz 5)  解压缩1.txt.gz 6)  使用bzip2压缩1.txt压缩后文件名为1.txt.bz2 7)  解压缩1.txt.bz2 8)  解包1.tar,解包后文件存放到/tmp目录

【周末作业】2015.7.15 第二周 css作业及答案

[作业题] 一.问答题 1. CSS选择器以及引入方式哪几种,CSS选择器有哪些以及它们的优先级 2. 行内元素和块级元素的区别,分别举出6个行内元素和块级元素,块级元素的特点是什么 3. 改变元素外边距是什么属性,改变元素内边距是什么属性 4. 如何让一个div在页面中居中 5. 如何隐藏一个div 6. CSS的注释是什么 7. 怎样定义li列表项目符号为实心矩形 8. margin:5px 2px; 表示什么 9. CSS产生浏览器兼容性问题的原因是什么,举出三个处理浏览器兼容性问题的例子

2017年1-6月流水帐

2017年 1月 ======================================== 2日,实现C++,AOB(Array of Byte)字节数组文件扫描,类似CheatEngine的AOB内存,只不过我扫的是硬盘文件,如某文件包含16进制特征码AA BB CC DD 11 33 58 99就可以扫出来,可以简单的对某类文件,比如bmp,dds,ogg之类的, 直接序列化打包的文件进行扫描,不知道有没有什么类似的软件,反正自己写了个,WinHex可以单个文件扫,但是没有批量扫描功

2017秋-软件工程第一次作业

1 自我介绍 我叫翟宇豪,目前是东北师范大学2017级研究生,本科专业是计算机科学与技术专业,研究生专业是计算机技术.选择计算机专业的初衷其实非常简单,高考之后,在当时的情况下,家人.长辈的推荐下,我认为金融行业和计算机行业将是最有发展的两个领域.我希望去沿海城市.南方城市.但是因为分数限制无奈选择了哈尔滨工程大学就读.我备选专业中大部分都和金融专业相关,但是哈工程是工科类院校,所以我选择了理工类的计算机这个专业由此走上了程序猿之路. 2对计算机专业的畅想 在本科学习过程中,有很多课程是与计算机

2017第1次作业—刘少帅

第一部分:结缘计算机 计算机是你喜欢的领域吗?是你擅长的领域吗? 我对计算机的认识是把它当成一种工具,因为在之前的学习.工作中很多方面都离不开计算机,但我对计算机的操作仅停留在一些办公软件的使用上,对于计算机领域的程序代码之类的总是请专业人员来搞.因为还不是很了解,所以不能说喜欢或不喜欢,更谈不上擅长.现在有幸能对计算机深入学习,心里还是很高兴,同时也感到压力山大.自己之前有过跨专业学习的情况,通过努力取得了相对满意的结果,也希望继续努力下去学好计算机方面的内容.正如在博客I中的老师所说的:"做

2017.1.16 进度 项目4开头

今天的大部分时间都用在想UI怎么设计以及,如何把button放在title bar上,结果后者怎么也实现不了,于是只好先放弃在这次的这个音乐播放半成品里面使用了. 其实想想也是,这次的主要考察对象是activity之间的转换,我总是把它的重点跑偏-- 放上代码存个档: activity_main.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android=&q