#include <stdio.h>
#include <string.h>
#include <iostream>
#include <stdlib.h>
using namespace std;
int ij=1,ji=1,bh;//全局变量
struct city{
int year;
int month;
int day;
int max;
int min;
int average;
char tianqi[5];
};
struct chengs{
int bianhao;
char name[10];
};
struct city cs[1000][1000];
struct city orx[1000][1000];
struct chengs chengshi[1000];
struct chengs qj[1000];
void caidan()//打印菜单
{
puts(".................................................");
puts(" 城市天气信息档案管理系统 ");
puts(" ");
puts(" .. .. .. "); //打印与天气有关的图像
puts(" .. .. ");
puts(" .. .. ");
puts(" .. .. ");
puts(" .. .. ");
puts(" .... .... ");
puts(" .. .. ");
puts(" .. .. ");
puts(" .. 云朵 .. ");
puts(" .. .. ");
puts(" .. .. .. .. ... .. .. .. .. ");
puts(" ");
puts(" 请输入选项编号(0~8) ");
puts(".................................................");
puts(". 1--设置城市名称 .");
puts(". 2--选择城市 .");
puts(". 3--录入当日天气资料 .");
puts(". 4--查询历年天气资料 .");
puts(". 5--输出某年高温天气情况 .");
puts(". 6--输出某年低温天气情况 .");
puts(". 7--某年某月最高温度平均值柱形图 .");
puts(". 8--某年某月最低温度平均值柱形图 .");
puts(". 9--读取数据库资料 .");
puts(". 0--退出系统 .");
puts(".................................................");
printf("(注意:请先选择城市编号再进行选项3及其他操作.)\n") ;
printf("请输入选项编号:");
}
void zicaidan()//打印子菜单
{
printf("\n\n");
puts(".......................................");
puts("请输入选项编号 ");
puts("选项10--查询历年某日天气情况 ");
puts("选项11--查询历年某月天气情况 ");
puts("选项12--返回上一级菜单 ");
puts("选项13--清空所有文件内容 ");
puts("选项0--退出系统 ");
puts(".......................................");
printf("\n");
printf("请输入选项编号:");
}
void shujuku()//读取数据库
{
FILE *fp1;
fp1=fopen("wearther.txt","r");
int year,month,day,max,min,average,x,i,j;
char tianqi[2000];
while(fscanf(fp1,"%d %d %d %d %d %d %d %s",&x,&year,&month,&day,&max,&min,&average,tianqi)!=EOF)
{
if(x==bh)
{
cs[bh][ji].year=year;
cs[bh][ji].month=month;
cs[bh][ji].day=day;
cs[bh][ji].max=max;
cs[bh][ji].min=min;
cs[bh][ji].average=average;
strcpy(cs[bh][ji].tianqi,tianqi);
ji++;
}
for(j=1;j<=ji-1;j++) //从高到低排序
{
for(i=1;i<=ji-j-1;i++)
{
if(cs[bh][i].average<cs[bh][i+1].average)
{
orx[bh][i]=cs[bh][i];
cs[bh][i]=cs[bh][i+1];
cs[bh][i+1]=orx[bh][i];
}
}
}
}
}
void shezhi()
{
FILE *fp;
fp=fopen("city.txt","a+");
int bianhao;
char name[5];
printf("请输入城市编号与名称:");
scanf("%d %s",&bianhao,name);
fprintf(fp,"%d ",bianhao);
fprintf(fp,"%s\n",name);
fclose(fp);
printf("设置成功\n");
caidan();
}
void xuanze()
{
FILE *fp;
fp=fopen("city.txt","a+");
int i,bianhao;
char name[20];
while(fscanf(fp,"%d %s",&bianhao,name)!=EOF)
{
chengshi[ij].bianhao=bianhao;
strcpy(chengshi[ij].name,name);
ij++;
}
for(i=1;i<=ij;i++) //显示文件中所有城市编号与名称
{
printf("%d %s \n",chengshi[i].bianhao,chengshi[i].name);
}
printf("请输入选择的城市编号:");
scanf("%d",&bh); //存放全局变量
qj[bh].bianhao=chengshi[bh].bianhao;
strcpy(qj[bh].name,chengshi[bh].name);
printf("当前城市:%d %s\n",qj[bh].bianhao,qj[bh].name);
caidan();
memset(chengshi,0,sizeof chengshi);
ij=1;
fclose(fp);
}
void luru()
{
FILE *fp1;
fp1=fopen("wearther.txt","a+");
int year,month,day,max,min,average,x;
char tianqi[2000];
printf("请按顺序输入年、月、日、最高温度、最低温度、平均温度、天气情况:");
scanf("%d %d %d %d %d %d %s",&year,&month,&day,&max,&min,&average,tianqi);
fprintf(fp1,"%d",bh); //城市天气情况标记符
fprintf(fp1," %d ",year);
fprintf(fp1," %d ",month);
fprintf(fp1," %d ",day);
fprintf(fp1,"%d",max);
fprintf(fp1," %d ",min);
fprintf(fp1," %d ",average);
fprintf(fp1," %s\n",tianqi);
fclose(fp1);
printf("录入成功!\n");
printf("当前城市:%d %s\n",qj[bh].bianhao,qj[bh].name);
printf("资料录入完毕请先进行选项9读取数据库,以便进行其他操作。\n");
caidan();
}
void mouri()
{
int day,i;
printf("请输入日期:");
scanf("%d",&day);
printf("当前城市:%d %s\n",qj[bh].bianhao,qj[bh].name);
for(i=1;i<ji;i++)
{
if(cs[bh][i].day==day)
{
printf("%d年%d月%d日 最高温度:%d最低温度:%d平均温度:%d天气情况:%s\n",cs[bh][i].year,cs[bh][i].month,cs[bh][i].day,cs[bh][i].max,cs[bh][i].min,cs[bh][i].average,cs[bh][i].tianqi);
}
}
zicaidan();
}
void mouyue()
{
int month,i;
printf("请输入月份:");
scanf("%d",&month);
printf("当前城市:%d %s\n",qj[bh].bianhao,qj[bh].name);
for(i=1;i<=ji;i++)
{
if(cs[bh][i].month==month) //在读入数据库时已从高到低排序
{
printf("%d年%d月%d日 最高温度:%d最低温度:%d平均温度:%d天气情况:%s\n",cs[bh][i].year,cs[bh][i].month,cs[bh][i].day,cs[bh][i].max,cs[bh][i].min,cs[bh][i].average,cs[bh][i].tianqi);
}
}
zicaidan();
}
void gaowen()
{
int i;
printf("\n当前城市:%d %s\n",qj[bh].bianhao,qj[bh].name);
for(i=1;i<=ji;i++)
{
if(cs[bh][i].average>=38)
{
printf("%d年%d月%d日 最高温度:%d最低温度:%d平均温度:%d天气情况:%s\n",cs[bh][i].year,cs[bh][i].month,cs[bh][i].day,cs[bh][i].max,cs[bh][i].min,cs[bh][i].average,cs[bh][i].tianqi);
}
}
}
void diwen()
{
int i;
printf("\n当前城市:%d %s\n",qj[bh].bianhao,qj[bh].name);
for(i=ji-1;i>0;i--)
{
if(cs[bh][i].average<=5)
{
printf("%d年%d月%d日 最高温度:%d最低温度:%d平均温度:%d天气情况:%s\n",cs[bh][i].year,cs[bh][i].month,cs[bh][i].day,cs[bh][i].max,cs[bh][i].min,cs[bh][i].average,cs[bh][i].tianqi);
}
}
}
void zuigaowen()
{
int exit=-1;
int year,i,j,k,x;
int a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0,a8=0,a9=0,a10=0,a11=0,a12=0;
int a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,l=0,m=0,n=0,o=0;
printf("\n");
printf("\n当前城市:%d %s\n",qj[bh].bianhao,qj[bh].name);
printf("请输入要查询的年份:");
scanf("%d",&year);
for(k=1; k<=ji; k++) {
if((cs[bh][k].year==year)){
exit=k;
}
}
if(exit==-1)
{
printf("找不到相关数据。\n");
caidan();
}else{
for(k=1; k<=ji; k++) {
if(cs[bh][k].year==year) {
if(cs[bh][k].month==1) a1+=cs[bh][k].max,a++;
else if(cs[bh][k].month==2) a2+=cs[bh][k].max,b++;
else if(cs[bh][k].month==3) a3+=cs[bh][k].max,c++;
else if(cs[bh][k].month==4) a4+=cs[bh][k].max,d++;
else if(cs[bh][k].month==5) a5+=cs[bh][k].max,e++;
else if(cs[bh][k].month==6) a6+=cs[bh][k].max,f++;
else if(cs[bh][k].month==7) a7+=cs[bh][k].max,g++;
else if(cs[bh][k].month==8) a8+=cs[bh][k].max,h++;
else if(cs[bh][k].month==9) a9+=cs[bh][k].max,l++;
else if(cs[bh][k].month==10) a10+=cs[bh][k].max,m++;
else if(cs[bh][k].month==11) a11+=cs[bh][k].max,n++;
else if(cs[bh][k].month==12) a12+=cs[bh][k].max,o++;
}
}
int pingjun[13]= {a1/max(1,a),a2/max(1,b),a3/max(1,c),a4/max(1,d),a5/max(1,e),a6/max(1,f),a7/max(1,g),a8/max(1,h),a9/
评论0