#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <math.h>
char x_[20];
int x;
typedef struct {
int bianhao;
char Sweather[30];
char data[30];
float Htem;
float Ltem;
float avetem;
} num;
typedef struct node {
num hao;
char name[10];
struct node *next;
} Node;
typedef struct singlelist {
Node *first;
int n;
} SingleList;
typedef struct singlelist1 {
Node *first;
int n;
} SingleList1;
typedef struct {
float pT;
char tianqi[30];
char riqi[30];
} chayue;
void initialList(SingleList *mylist);
void initialList1(SingleList1 *mylist1);
void inputList(SingleList *mylist);
void inputList1(SingleList1 *mylist1);
void writetofile(SingleList *mylist);
void writetofile1(SingleList1 *mylist1);
void readfromfile(SingleList *mylist);
void insertList(SingleList1 *mylist1, int x);
Node *searchList(SingleList1 *mylist1, int x);
void readfromfile1(SingleList1 *mylist1);
void w(SingleList1 *mylist1);
void w2(SingleList1 *mylist1);
void w3(SingleList1 *mylist1);
void w4(SingleList1 *mylist1);
void w5(SingleList1 *mylist1);
void w6(SingleList1 *mylist1);
void printList1(SingleList1 *mylist1) {
Node *ptr2;
ptr2 = mylist1->first;
while (ptr2) {
printf("%d %s %.2f %.2f %.2f %s\n", ptr2->hao.bianhao, ptr2->hao.data, ptr2->hao.Htem, ptr2->hao.Ltem,ptr2->hao.avetem, ptr2->hao.Sweather);
ptr2 = ptr2->next;
}
}
int cmp(const void *a, const void *b) {
return (*(int *)a - * (int *)b);
}
int cmp1(const void *a, const void *b) {
const chayue *x = (const chayue *)a;
const chayue *y = (const chayue *)b;
if (x->pT > y->pT) {
return 1;
} else if (x->pT < y->pT) {
return -1;
} else {
return 0;
}
}
int main(void) {
FILE *fp;
Node *ptr;
int d;
SingleList mylist;
SingleList1 mylist1;
initialList(&mylist);
initialList1(&mylist1);
int n1;//n:输入的号码
n1 = 0;
do {
printf("城市天气信息档案管理系统\n");
printf("请输入编号0~7\n");
printf("……………………………………………………\n");
printf("1---选择城市名称\n");
printf("2---录入当日天气资料\n");
printf("3---查询历年天气资料\n");
printf("4---输出某年高温天气情况\n");
printf("5---输出某年低温天气情况\n");
printf("6---某年每月最高温度平均柱状图\n");
printf("7---某年每月最低温度平均柱状图\n");
printf("8---设置城市名称\n");
printf("0---退出系统\n");
printf("……………………………………………………\n");
scanf("%d", &n1);
switch (n1) {
case 0:
printf("感谢使用本软件!已正常退出,按任意键结束!");
exit(0);
case 1:
readfromfile(&mylist);
printf("请输入城市编号:\n");
scanf("%d", &x);
break;
case 2:
initialList1(&mylist1);
readfromfile1(&mylist1);
writetofile1(&mylist1);
printf("已有的天气信息为:\n");
printList1(&mylist1);
printf("\n");
printf("输入要插入的天气信息:");
ptr=searchList(&mylist1,x);
insertList(&mylist1, x);
writetofile1(&mylist1);
printf("添加后的信息:\n");
printList1(&mylist1);
printf("\n");break;
case 3: {
printf("选项1--查询历年某日天气情况\n选项2--查询历年某月天气情况\n");
scanf("%d", &d);
if (d == 1) {
w(&mylist1);
} else if (d == 2) {
w2(&mylist1);
}
break;
}
case 4:
w3(&mylist1);
break;
case 5:
w4(&mylist1);
break;
case 6:
w5(&mylist1);
break;
case 7:
w6(&mylist1);
break;
case 8:
inputList(&mylist);
writetofile(&mylist);
inputList1(&mylist1);
writetofile1(&mylist1);
break;
}
} while (n1 >= 0 && n1 <= 8);
return 0;
}
void initialList(SingleList *mylist) {
mylist->first = NULL;
mylist->n = 0;
}
void initialList1(SingleList1 *mylist1) {
mylist1->first = NULL;
mylist1->n = 0;
}
void inputList(SingleList *mylist) {
int j;
char temp[10];
Node *ptr, *ptr2, *ptr3;
while (scanf("%d%s", &j, temp) && j != -1) {
ptr = (Node *)malloc(sizeof(Node));
ptr->hao.bianhao = j;
strcpy(ptr->name, temp);
if (mylist->n == 0) {
mylist->first &#