pp836 2021-03-25 16:00 采纳率: 0%
浏览 50

python:抄表小程序——如何为每一位用户创建独立的csv文档读取数据

我在尝试开发一个复印机抄表小程序时遇到了如下困难:

想增加一个功能:为每一个甲方用户建立独立的csv文档记录数据。举例:当输入‘张三’的时候,程序生成一个张三的csv文档,记录数据。并且可以通过执行menu()函数实现:1. 查询‘张三’的历史数据 2. 添加新数据 3. 跳出循环-询问是否建立新的用户档案

import csv

with open('wenbo.csv', 'a', newline='',encoding = 'GBK') as csvfile:

    writer = csv.writer(csvfile, dialect='excel')

    header=['甲方全称','机器管理编号', '开始张数黑', '开始张数彩','每月租赁费', '包含张数黑','包含张数彩', '等级一收费黑','等级一收费彩', '等级一区间黑','等级一区间彩', '等级二收费黑','等级二收费彩','等级二区间黑','等级二区间彩']

    writer.writerow(header)

class data():

    def newdatalog(self):

        a = input('请输入甲方全称')

        b = input('请输入机器管理编号')

        c = input('请输入开始张数黑:')

        c = float(c)

        c1 = input('请输入开始张数彩:')

        c1 = float(c1)

        d = input('请输入机器租赁费用')

        e = input('请输入包含张数黑:')

        e = float(e)

        e1 = input('请输入包含张数彩:')

        e1 = float(e1)

        f = input('请输入等级一收费标准黑')

        f = float(f)

        f1= input('请输入等级一收费标准彩')

        f1 = float(f1)

        g = input('请输入区间一最大张数黑')

        g = float(g)

        g1 = input('请输入区间一最大张数彩')

        g1 = float(g1)

        h = input('请输入等级二收费标准黑')

        h = float(h)

        h1= input('请输入等级二收费标准彩')

        h1 = float(h1)

        i = input('请输入等级二最大张数黑')

        i =float(i)

        i1= input('请输入等级二最大张数彩')

        i1 = float(i1)

 

        if i-c-g > 0:

            month1B = (i-e-g-c)*h + g*f

            month1C = (i1-e1-g1-c1)*h1 + g1*f1

        elif i-c-g <= 0:

            month1B = (i-c-e)*f

            month1C = (i1-c1-e1)*f

        print(month1B)

        print(month1C)

 

        with open('wenbo.csv', 'a', newline='',encoding = 'GBK')as csvfile:

            writer = csv.writer(csvfile, dialect='excel')

            writer.writerow([a,b,c,c1,d,e,e1,f,f1,g,g1,h,h1,i,i1,month1B,month1C])

    def checkdata(self):

        with open('wenbo.csv','r',newline='',encoding = 'GBK') as csvfile:

            file_reader = csv.reader(csvfile)

            column1 = []

            column2 = []

            for row in file_reader:

                column1.append(row[2])

                column2.append(row[3])

            print('开始张数黑:',column1)

            print('开始张数彩:',column2)

      

    def menu(self):

        print('欢迎使用抄表小程序,希望我能为您的工作带来便利!')

        while True:

                print('1.查询抄表数据\n2.录入新数据\n3.退出系统\n')

                choice = int(input('请输入数字选择对应的功能:'))

                if choice == 2:

                    self.newdatalog()

                elif choice ==1:

                    self.checkdata()

                elif choice == 3:

                    print('感谢使用!愿你工作顺利,保持愉快好心情!')

                    break

data1 = data()

data1.menu()

 

  • 写回答

3条回答 默认 最新

  • CSDN专家-HGJ 2021-03-25 17:00
    关注

    你需要在类中定义一个变量name,去掉开始csv写入代码,整合到newdatalog()中。示例如下,其他部分自行添加。

    import csv
    
    class data:
        def __init__(self,name):
            self.name=name
        def newdatalog(self):
    
            a = input('请输入甲方全称')
    
            b = input('请输入机器管理编号')
    
            c = input('请输入开始张数黑:')
    
            c = float(c)
            with open(f'{self.name}.csv', 'a', newline='', encoding='GBK') as csvfile:
                writer = csv.writer(csvfile, dialect='excel')
    
                header = ['甲方全称', '机器管理编号', '开始张数黑']
    
                writer.writerow(header)
    
                writer.writerow([a, b, c])
    
        def checkdata(self):
    
            with open(f'{self.name}.csv', 'r', newline='', encoding='GBK') as csvfile:
    
                file_reader = csv.reader(csvfile)
    
                column1 = []
    
                column2 = []
    
                for row in file_reader:
    
                    column1.append(row[1])
    
                    column2.append(row[2])
    
                print('开始张数黑:', column1)
    
                print('开始张数彩:', column2)
    
        def menu(self):
    
            print('欢迎使用抄表小程序,希望我能为您的工作带来便利!')
    
            while True:
    
                print('1.查询抄表数据\n2.录入新数据\n3.退出系统\n')
    
                choice = int(input('请输入数字选择对应的功能:'))
    
                if choice == 2:
    
                    self.newdatalog()
    
                elif choice == 1:
    
                    self.checkdata()
    
                elif choice == 3:
    
                    print('感谢使用!愿你工作顺利,保持愉快好心情!')
    
                    break
    
    name=input('name: ')
    data1 = data(name)
    data1.menu()
    评论

报告相同问题?

悬赏问题

  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧