一、问题描述
智能家居系统创建一个家居环境参数表,包含“日期、时间、地点、温度、湿度”等信息。程序能够完成如下功能:
(1) 能够逐条输入信息,创建表;
(2) 能够显示表中的所有信息;
(3) 根据时间和地点进行查找,返回相关参数信息;
(4) 给定一条环境参数信息,按照日期和时间顺序插入到表中指定的位置;
(5) 删除指定日期的记录;
二、算法设计
| 序号 | 名称 | 函数表示符 | 操作说明 |
| 1 | 顺序表初始化 | InitList | 初始化一个顺序表 |
| 2 | 顺序表创建 | ListCreate | 可以输入信息 |
| 3 | 顺序表查找 | Locate | 按照时间和地点查找 |
| 4 | 顺序表插入 | ListInsert | 在指定位置插入顺序表 |
| 5 | 顺序表删除 | ListDelete | 删除指定位置的顺序表 |
| 6 | 主函数 | Main | 主函数 |
三、代码实现
#include#include #include #define MAXSIZE 100 #define OK 1 #define ERROR 0 #define OVERFLOW -2 using namespace std; typedef struct//定义一个message的信息表 { char date[20]; char time[20]; char place[20]; int temp; int hum; }message; typedef struct//定义一个顺序表 { message *p; int length; }SqList; //能够逐条输入信息,创建表 int InitList(SqList &L)//初始化 { L.p=new message[MAXSIZE];//分配存储空间 if(!L.p) exit(OVERFLOW); L.length=0;//空表长度为0 return OK; } int ListCreate(SqList &L,int j,message e)//输入信息 { if(j<0||j>MAXSIZE) return ERROR; if(L.length==MAXSIZE) return OVERFLOW; strcpy(L.p[j].date,e.date); strcpy(L.p[j].time,e.time); strcpy(L.p[j].place,e.place); L.p[j].temp=e.temp; L.p[j].hum=e.hum; L.length++; return OK; } int Locate(SqList L,char e[],char f[])//按时间和地点查找 { int i; for(i=0;i L.length+1)) return ERROR; if(L.length==MAXSIZE) return ERROR; for(j=L.length-1;j>=i-1;j--)//插入位置及以后的元素后移 { strcpy(L.p[j+1].date,L.p[j].date); strcpy(L.p[j+1].time,L.p[j].time); strcpy(L.p[j+1].place,L.p[j].place); L.p[j+1].temp=L.p[j].temp; L.p[j+1].hum=L.p[j].hum; } //将新的元素插到第i个位置去 strcpy(L.p[i-1].date,e.date); strcpy(L.p[i-1].time,e.time); strcpy(L.p[i-1].place,e.place); L.p[i-1].temp=e.temp; L.p[i-1].hum=e.hum; ++L.length; return OK; } int ListDelete(SqList &L,int i)//删除一条信息 { int j; if((i<1)||(i>L.length)) return ERROR; for(j=i;j<=L.length-1;j++)//被删除之后的元素前移 { strcpy(L.p[j-1].date,L.p[j].date); strcpy(L.p[j-1].time,L.p[j].time); strcpy(L.p[j-1].place,L.p[j].place); L.p[j-1].temp=L.p[j].temp; L.p[j-1].hum=L.p[j].hum; } --L.length; return OK; } int main() { cout << "欢迎来到南南的顺序表!" << endl; int i,n,k,x; message e,g; SqList L; InitList(L); char str[20]; char strr[20]; cout<<"请输入要创建的表的个数:"; cin>>n; for(i=0;i >e.date; cout<<"第"<>e.time; cout<<"第"<>e.place; cout<<"第"<>e.temp; cout<<"第"<>e.hum; ListCreate(L,i,e); } for(i=0;i >str>>strr; Locate(L,str,strr); cout<<"请输入待插入的信息"< >k; cout<<"待插入信息的日期是"; cin>>g.date; cout<<"待插入信息的时间是"; cin>>g.time; cout<<"待插入信息的地点是"; cin>>g.place; cout<<"待插入信息的温度是"; cin>>g.temp; cout<<"待插入信息的湿度是"; cin>>g.hum; ListInsert(L,k,g); cout<<"插入操作后的所有的信息如下:"< >x; ListDelete(L,x); cout<<"删除操作后的所有的信息如下:"< 四、运行说明



