Problem I: 实现一种电厂小型实时数据库系统

116 篇文章 2 订阅
20 篇文章 0 订阅
该文描述了一个小型数据库系统的设计,用于存储电厂控制系统的模拟量和开关量数据。系统支持INSERT(插入)、QUERY(查询)、MODIFY(修改)和DELETE(删除)四种操作,并对操作失败的情况给出了错误提示。提供的代码示例展示了如何处理这些操作。
摘要由CSDN通过智能技术生成

Problem Description

电厂控制系统的设备有很多监测点,监测点的传感器将监测到的实时数据传送到厂级监控中心,使工程师能方便的分析电厂设备的运行状态。厂级监控中心需要将这些数据存入数据库(INSERT),并且能查询(QUERY),修改(MODIFY),删除(DELETE)这些数据。
这些数据只有两种类型:模拟量(AI,浮点数, 3 位小数,例如电流,温度等 ),开关量(DI,值为 0 或 1 的数,例如开关的闭合等)。每种数据有三个属性:监测点的名称(最长20 个字符),监测到的值,数据类型。
现在需要你实现这个小型的数据库系统支持以上四种操作。
现定义以上四种操作的格式为:
OPERATION TYPE NAME VALUE(可选)。
例如删除一条数据的操作为:DELETE DI Temperature
查询为: QUERY DI Temperature
修改: MODIFY DI Temperature 1
存入为: INSERT DI Temperature 0
当以上操作失败时给出提示信息: OPERATION ERROR,例如查询,修改,删除的数据不存在,插入已经存在过的一条数据(名称和类型都重复的数据),都会失败。否则给出成功提示SUCCESSED。

 

 Input Description

 第一行为一个整数n,表示接下来有n 行输入,每一行为以上四种操作之一。

 

 Output Description

 对每行的操作输出相应的操作结果。

Sample Input

7
INSERT DI Temperature 1
INSERT AI Switch 500.500
QUERY DI Temperature
MODIFY DI Temperature 0
DELETE DI Temperature
QUERY DI Temperature
INSERT AI Switch 63.333

 Sample Output

SUCCESSED
SUCCESSED
1
SUCCESSED
SUCCESSED
OPERATION ERROR
OPERATION ERROR

 Hint

 我的想法:

 我的代码:



if __name__ == '__main__':
    while True:
        try:
            n = int(input())
        except:
            break
        data_base = []
        for i in range(0, n):
            line = input().split(" ")
            data_one = []
            out = []
            if line[0] == "INSERT":
                flag = True
                for item in data_base:
                    if line[1] in item and line[2] in item:
                        flag = False
                        out.append("OPERATION ERROR")
                        break
                if flag:
                    out.append("SUCCESSED")
                    data_one.append(line[1])
                    data_one.append(line[2])
                    data_one.append(line[3])
                    data_base.append(data_one)
            elif line[0] == "QUERY":
                flag = True
                for item in data_base:
                    if line[1] in item and line[2] in item:
                        flag = False
                        out.append(item[2])
                        break
                if flag:
                    out.append("OPERATION ERROR")
            elif line[0] == "DELETE":
                flag = True
                for item in data_base:
                    if line[1] in item and line[2] in item:
                        flag = False
                        data_base.remove(item)
                        out.append("SUCCESSED")
                        break
                if flag:
                    out.append("OPERATION ERROR")
            elif line[0] == "MODIFY":
                flag = True
                for item in data_base:
                    if line[1] in item and line[2] in item:
                        flag = False
                        data_base[int(data_base.index(item))][2] = line[3]
                        out.append("SUCCESSED")
                        break
                if flag:
                    out.append("OPERATION ERROR")

            for it in out:
                print(it)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小木苓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值