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

发布时间 2023-04-29 21:14:46作者: hangsingplus

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
  ac代码:
 
 1 def find(p,lines):
 2     for i in lines:
 3         if p in i :
 4             return 1
 5     return 0
 6 def delete(p,lines):
 7     for i in lines:
 8         if p in i :
 9             lines.remove(i)
10             print('SUCCESSED')
11             return 1
12     return 0
13 def modify(p,lines,y):
14     for i in lines:
15         if p in i :
16             i[3] = y
17             print('SUCCESSED')
18             return 1
19     return 0
20 def query(p,lines):
21     for i in lines:
22         if p in i :
23             print(i[3])
24             return 1
25     return 0
26 n = int(input())
27 lines = []
28 i = 0
29 for i in range(n):
30     x = []
31     x = input().split()
32     if x[0]=='INSERT':
33         if find(x[1],lines) and find(x[2],lines):
34             print('OPERATION ERROR')
35             continue
36         else:
37             lines.append(x)
38             print('SUCCESSED')
39     elif x[0] == 'QUERY' and find(x[2],lines) and find(x[1],lines) :
40         query(x[2],lines)
41     elif x[0] == 'MODIFY' and find(x[2], lines) and find(x[1],lines):
42         modify(x[2],lines,x[3])
43     elif x[0] == 'DELETE' and find(x[2], lines) and find(x[1],lines):
44         delete(x[2],lines)
45     else :
46         print('OPERATION ERROR')
47         continue