一、问题描述
智能家居系统创建一个家居环境参数表,包含“日期、时间、地点、温度、湿度”等信息。程序能够完成如下功能:
(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;iL.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<<"删除操作后的所有的信息如下:"<
四、运行说明
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)