在写这个博客的时候,这个故事已经过去挺久了

但是我还是决定写一篇博客记录这件事情

图片取自CSDN

经过几个CSDN热心网友的转发以及一些机缘巧合,我看到了这个初三学生的求助

而内容是制作一个可以统计时间和金额的折线图的小工具

反正闲着也是闲着,我就准备开始入手

1.整理思路

首先,整理下制作的思路

问题中的自动连线生成折线图,让我想到了Python中,Pyecharts模块的Line

于是决定,用Python来完成这次制作

以及问题中,每天输入一个数据,代表了我需要做一个存储数据的容器

先从理论上建立工具使用的流程:

图像为原创

2.构建工具框架

从整理的框架上来看,制作这个工具需要用到一下几个模块

1. Pyecharts模块中的Line功能 构图(程序的主体)

2.os模块 数据文件的查询以及创建

3.time模块 部分地方的停顿

首先,导入3个必要的模块

from pyecharts.charts import Line
import time
import os

然后,分别创建3个函数,来负责工具需要的3个功能

def programme():      #数据库的查询以及创建
def programme2():     #必要信息的输入
def programme3():     #折线图的制作
(懒得给函数想名字了,随便取个凑合着看吧)

至此,框架以及搭建好了

3.完善小工具的各个功能

先从第一个模块开始

数据库的查询以及创建:

def programme():
    try:
        os.mkdir('data')
        print('发现暂没数据目录文件')
        print('正在创建...')
        time.sleep(2)
        print('创建完毕')
    except:
        pass

直接利用try...except...函数,尝试创建文件夹

减少了查找是否有文件夹的步骤

然后下下一个模块

必要信息的输入:

这里我们大胆的再进行添加元素

如果一个图标画完了,需要构造第二个图标

那我们还需要写一个删除数据文件的命令

def programme2():
    print('输入1:添加新行情')
    print('输入2:清空行情')
    try:
        b = int(input('现在,请你输入:'))
    except:
        b = 999999   #这里随便输入一个不包括1和2的数即可,只是为了防止使用者随便输入
    #添加数据
    if b == 1:
        print('请输入记录时间和数值。')
        Time = input('现在,请你输入时间:') + '\n'
        dat = input('现在,请你输入数值:')
        try:
            int(dat)
            data = dat + '\n'
            print('正在记录,请稍等。。。')
            Times = open('data/times.ini','a')
            Times.write(Time)
            Times.close()
            datas = open('data/datas.ini','a')
            datas.write(data)
            datas.close()
        except:
            print('你输入的数值有问题,请输入数字')
            print('请在3秒后重新输入...')
            time.sleep(3)
    #清空数据
    elif b == 2:
        print('正在清空数据,请稍后...')
        if(os.path.exists(dirPath+"times.ini")) and (os.path.exists(dirPath+"datas.ini")):
            os.remove(dirPath+"times.ini")
            os.remove(dirPath+"datas.ini")
            time.sleep(3)
            print('清空完毕')
            time.sleep(3)
        else:
            print('没有可以清空的数据')
    else:
        pass

至此,3个模块已经写好了2个,我们继续完成最后一个模块

折线图的制作:

折线图制作的时候,也需要查询是否有数据文件

如果没有数据文件,直接开始制作,制作的过程中将会出错

所以这里我们用到os模块的path路径查询

已经制作折线图时,金额的大小必须要数字

还需要要求输入的内容为数字

def programme3():
    #查询数据是否存在
    print('正在查询数据...')
    time.sleep(2)
    if (os.path.exists(dirPath+"times.ini")) and (os.path.exists(dirPath+"datas.ini")):
        timelist = []
        dataslist = []
        with open(dirPath + 'times.ini','r') as file:
            number = 0
            while True:
                number += 1
                line = file.readline()
                if line == '':
                    break
                timelist.append(line)
        with open(dirPath + 'datas.ini','r') as file:
            number = 0
            while True:
                number += 1
                line = file.readline()
                if line == '':
                    break
                dataslist.append(line)
        print('即将开始制作表格...')
        time.sleep(2)
        print('正在制作表格...')
        line = Line()
        line.add_xaxis(timelist)
        line.add_yaxis("销量",dataslist)
        line.render()
        if (os.path.exists("index.html")):
            print('查询到原有表格,正在删除...')
            time.sleep(1)
            os.remove('index.html')
            print('删除完毕...')
        else:
            pass
        os.rename('render.html', 'index.html')
        print('表格制作完毕...')
        print('请在目录文件中,index.html处查看')
        time.sleep(2)
    #数据不存在,运行失败
    else:
        print('没有数据,请输入数据后再进行制作')
        time.sleep(3)

好的,工具需要的3个函数,都已经制造完毕

最后就只需要构建一个索引,把3个函数连起来

工具的制作就完成了

4.索引制作

既然写了3个函数,小编也准备把索引,分成搜集数据图标制作两块

废话不多说,上代码

#索引
while True:
    programme()
    print('------------------------------')
    print('行情记录工具')
    print('------------------------------')
    print('输入1:行情修改')
    print('输入2:行情表查询')
    print('输入3,退出程序')
    try:
        a = int(input('现在,请你输入:'))
    except:
        a = 4
    #程序开始
    if a == 1:
        programme2()
    elif a == 2:
        programme3()
    elif a == 3:
        print('即将退出程序')
        time.sleep(3)
        break
    else:
        closewin += 1
        if closewin == 2:#乱进行使用,程序将关闭
            print('程序关闭!')
            time.sleep(3)
            break
        else:
            print('抱歉,请按照规则输入,否则程序将关闭')
            print('请在3秒后重试')
            time.sleep(3)

嘿嘿,小编在代码里,悄悄的增加了防止熊孩子在索引里随便乱输入代码

如果熊孩子不按规则使用,,,

那么,,,程序就会自己关闭啦

最后,附上工具源码的链接: 下载地址

最后修改:2021 年 02 月 01 日 09 : 40 AM
如果觉得我的文章对你有用,请随意赞赏