C语言实现天气信息管理系统

本文实例为大家分享了C语言实现天气信息管理系统的具体代码,供大家参考,具体内容如下

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
#include<time.h>
#include<unistd.h>

#define TRUE 1
#define FALSE 0
#define OK  1
#define ERROR 0
#define OVERFLOW -1
typedef int Status;
typedef int ElemType;

typedef struct
{
 char Sweather[10];   //天气状况
 double Htem;     //最高温度
 double Ltem;  //最低温度
 double Stem;     //温度
 double Shum;     //湿度
}area;
typedef struct node
{
 int num;      //城市编号
 area weather;     //地区天气
 char name[5];      //地名
 struct node *next;    

}*LinkList,LNode;   //定义结构体

int NUM=0;     //全局变量 计算节点数目 

Status CreatList_L(LinkList &L,int n);      //信息录入
void Print_LinkList( LinkList H);       //查看信息
int login();            //登录
Status Delete_LinkList(LinkList &H);      //删除节点
Status GetElem_L(LinkList &L);       //查找
Status changeElem_L(LinkList &L);      //修改
int Clearlist(LinkList &L);       //整表删除,

void welcome(LinkList &L);       //welcome
void menu2(LinkList &L);        //管理员菜单
void menu1(LinkList &L);        //用户菜单
void printf_node(node*p);        //输出节点
void my_return(LinkList &L);       //return
void clothes(node *p);        //穿衣指数
void save_node(LinkList &L,int i);     //保存节点到文件
void read_node(LinkList &L) ;      //从文件读取
int Register();          //注册
int signin();          //登录 

void read_node(LinkList &L)       //从文件读取
{
 LNode *p,*pr;
 int i,n;
 pr=L;

 FILE *fp;
 if((fp=fopen("weatherinformation.txt","r"))==NULL)
 {
 printf("打开文件失败");
 exit(0);
 }

 fscanf(fp,"%d",&n); //从文件读出节点数目 

 for(i=1;i<=n;i++)
 {
 p=(LinkList)malloc(sizeof(LNode));
  fscanf(fp,"%d",&p->num);
 fscanf(fp,"%s",p->name);
 fscanf(fp,"%s",p->weather.Sweather);
 fscanf(fp,"%lf%lf",&p->weather.Ltem,&p->weather.Htem);
 p->weather.Stem=(p->weather.Htem+p->weather.Ltem)/2;
 fscanf(fp,"%lf",&p->weather.Shum);
  p->next=NULL;

 while(pr->next!=NULL){
  pr=pr->next;
 } 

 p->next=pr->next;
 pr->next=p;
 pr=pr->next;
  NUM++;
 }
 fclose(fp);
}

void save_node(LinkList &L)      //保存到文件
{ 

 LNode *p,*pr;
 pr=L;
 FILE *fp;
 if((fp=fopen("weatherinformation.txt","w"))==NULL)
 {
 printf("打开文件失败");
 exit(0);
 }
 fprintf(fp,"%d\n",NUM);
 while(pr->next!=NULL)
 {
 p=pr->next;
 fprintf(fp,"%d ",p->num);
  fprintf(fp,"%s ",p->name);
 fprintf(fp,"%s ",p->weather.Sweather);
 fprintf(fp,"%lf %lf ",p->weather.Ltem,p->weather.Htem);
 fprintf(fp,"%lf\n",p->weather.Shum);
 pr=pr->next;
 }
 printf("保存成功!!!");
 fclose(fp);
}

int Register()        //注册
{
 FILE* fp;
 char name[10],passworld[10];

 if((fp=fopen("demo.txt","a"))==NULL)
 {
 printf("打开文件失败");
 exit(0);
 }
 printf("请输入用户名:");
 scanf("%s",name);
 fprintf(fp,"%s ",name);
 printf("请输入密码:");
 scanf("%s",passworld);
 fprintf(fp,"%s\n",passworld);
 fclose(fp);
 printf("注册成功!");
 return OK;
}
int signin()         //登录
{ FILE* fp;
 char name[10],passworld[10];    //用户输入的账户密码
 char name1[10],passworld1[10];   //从文件读取的账户和密码
 int flag=0;

 if((fp=fopen("demo.txt","r"))==NULL)
 {
 printf("打开文件失败");
 exit(0);
 }

 printf("输入用户名:");
 scanf("%s",name);
 printf("输入密码:");
 scanf("%s",passworld); 

 while(!flag&&!feof(fp))
 {
 fscanf(fp,"%s",name1);
 fscanf(fp,"%s",passworld1);
 if(strcmp(name,name1)==0&&strcmp(passworld,passworld1)==0)
 flag=1;
 }
 fclose(fp);

 return flag;
}
int login()            //login
{
 char f;
 int H;
 char a[10],ah[10],am[10];
 char b[10],bh[10],bm[10];
 FILE *fp;

 printf("1.注册!\n");
 printf("2.登录!\n");
 scanf("%d",&H);
 if(H==1)
 {
 Register();

 while(1){
 printf("是否登录?y or n\n");
 getchar();
 scanf("%c",&f);
 system("cls");

 if(f=='n')
 exit(0);
 else if(f=='y')
 {
 if(signin())
 {
  printf("登录成功!\n");
  return OK;
 }
 else
 printf("密码或者用户错误!\n");
 }

 }
}
else if(H==2)
 while(1){

 if(signin())
 {
  printf("登录成功!\n");
  return OK;
 }
 else
 printf("密码或者用户错误!\n");

 }
 return 0;
}
void clothes(node *p)          //穿衣指数
{

 if(p->weather.Stem>=28)
 printf("夏季着装:轻棉织物制作的短衣、短裙、薄短裙、短裤\n\n");
 else if(p->weather.Stem>=24&&p->weather.Stem<28)
 printf("夏季着装:棉麻面料的衬衫、薄长裙、薄T恤\n\n");
 else if(p->weather.Stem>=21&&p->weather.Stem<24)
 printf("春秋过渡装:单层棉麻面料的短套装、T恤衫、薄牛仔衫裤、休闲服、职业套装\n\n");
 else if(p->weather.Stem>=18&&p->weather.Stem<21)
 printf("春秋过渡装:套装、夹衣、风衣、休闲装、夹克衫、西装、薄毛衣\n\n");
 else if(p->weather.Stem>=15&&p->weather.Stem<18)
 printf("春秋着装:风衣、大衣、夹大衣、外套、毛衣、毛套装、西装、防寒服\n\n");
 else if(p->weather.Stem>=11&&p->weather.Stem<15)
 printf("秋冬着装:毛衣、风衣、毛套装、西服套装\n\n");
 else if(p->weather.Stem>=6&&p->weather.Stem<11)
 printf("冬季着装:棉衣、冬大衣、皮夹克、厚呢外套、呢帽、手套、羽绒服、皮袄\n\n");
 else
 printf("冬季着装:棉衣、冬大衣、皮夹克、厚呢外套、呢帽、手套、羽绒服、皮袄\n\n");

}
Status CreatList_L(LinkList &L)        /* 信息录入 */
 {

 LNode *p,*pr;
 int i,n;
 printf("请输入地区数");
 scanf("%d",&n);

 pr=L;
 for(i=n;i>0;i--)
 {
  p=(LinkList)malloc(sizeof(LNode));
  printf("请输入城市编号\n");
 scanf("%d",&p->num);
 printf("请输入地名\n");
  scanf("%s",p->name);
 printf("请输入该地区的天气情况\n");
 scanf("%s",p->weather.Sweather);
 printf("最低温度和最高温度\n");
 scanf("%lf%lf",&p->weather.Ltem,&p->weather.Htem);
 p->weather.Stem=(p->weather.Htem+p->weather.Ltem)/2;
 printf("相对湿度\n");
 scanf("%lf",&p->weather.Shum);
 p->next=NULL;
 while(pr->next!=NULL){
  pr=pr->next;
 } 

 p->next=pr->next;
 pr->next=p;
 pr=pr->next;
 NUM++;
 }

 return OK;
 }
void printf_node(node*p)            //输出一个节点
{
  printf("%s的天气为:%s\n",p->name,p->weather.Sweather);
 printf("最低温度为:%.2lf度,最高温度为:%.2lf度,平均温度为:%.2lf度\n",p->weather.Ltem,p->weather.Htem,p->weather.Stem);
 printf("相对湿度为:%.1lf%%\n",p->weather.Shum);
 clothes(p);
}
void my_return(LinkList &L,int n)         //my_return
{
 char f;
 while(1){

 printf("是否返回菜单? y or n\n");
 getchar();
 scanf("%c",&f);
 if((f=='y'||f=='Y'))
 {
  if(n==1)
  menu1(L);
  else if(n==2)
  menu2(L);
 }

 else if(f=='n'||f=='N')
 {
 printf("bye-bye");
 exit(0);
 }
 }
}
void Print_LinkList( LinkList H)  /* 输出链式表 */
{
 LNode *p;
 p=H->next;
 if(p==NULL){
 printf("没有存入数据\n");
 return ;
 }

 while(p!=NULL)
 {
  printf_node(p);

 p=p->next;
 }
printf("\n");
 }

Status Delete_LinkList(LinkList &H) /* 删除表序号为i的记录 */
 {

 int i;
  int j=1;
  LNode *p,*pr;
  p=H;
  if(NUM==0){
 printf("没有存入数据\n");
 return 0;
 }
  printf("请输入城市编号\n");
  scanf("%d",&i);
  while(p&&i!=p->next->num)
  {
   p=p->next;

  }
  if(!p) {
  printf("没有这个城市\n");
  return ERROR;}
  pr=p->next;
  p->next=pr->next;
  free(pr);
  printf("删除成功!\n");
  NUM--;
  return OK;

}/* Delete_LinkList */

int Clearlist(LinkList &L)    //整表删除,
 {
 LNode *p,*q;
 system("cls");
 printf("请确认你是否已经获得最高权限?y or n\n");
 getchar();
 getchar();
 printf("ERROR!你没有最高权限!");
 exit(0);
 p=L->next;
 while(p)
 {
 q=p->next ;
 free(p);
 p=q;
 NUM--;
 }
 L->next=NULL;
 save_node(L);
 return 1;
 }
Status GetElem_L(LinkList &L)    //查找
{
 int num;
 char a[5];
 int j=1;
 printf("请输入城市名称\n");
 scanf("%s",&a);
 LinkList p;
 p=L->next;
 while(p&&strcmp(p->name,a)!=0)
 {
  p=p->next;

 }
 if(!p){
  printf("没有这个城市!");
 return ERROR;
 }

 printf_node(p);
 return OK;
}
Status changeElem_L(LinkList &L)           //修改
{
 int num;
 int j=1;
 printf("请输入城市编号\n");
 scanf("%d",&num);
 LinkList p;
 p=L->next;
 while(p&&num!=p->num)
 {
  p=p->next;

 }
 if(!p){printf("没有这个城市!\n");
 return ERROR;
 }
 printf_node(p);

  printf("请修改:\n");
 printf("请输入地名\n");
  scanf("%s",p->name);
  printf("请输入城市编号\n");
 scanf("%d",&p->num);
 printf("请输入该地区的天气情况\n");
 scanf("%s",p->weather.Sweather);
 printf("最高温度和最低温度\n");
 scanf("%lf%lf",&p->weather.Htem,&p->weather.Ltem);
 p->weather.Stem=(p->weather.Htem+p->weather.Ltem)/2;
 printf("相对湿度\n");
 scanf("%lf",&p->weather.Shum);

 printf("修改后的信息为:\n");
 printf_node(p);
 return OK;
}
void menu1(LinkList &L)            //用户菜单
{
 int choose;
 system("cls");

 printf("\n\n");
 printf("\t\t\t****************用户菜单****************\n");
 printf("\t\t\t*          *\n");
 printf("\t\t\t*   祝您使用愉快    *\n");
 printf("\t\t\t*          *\n");
 printf("\t\t\t* 查找信息请按 1 -- 全览请按 2  *\n");
 printf("\t\t\t*   退出请按 3    *\n");
 printf("\t\t\t*          *\n");
 printf("\t\t\t*          *\n");
 printf("\t\t\t****************************************\n");
 printf("\n\t\t\t\t 进入管理员菜单请按0\n");
 scanf("%d",&choose);

 switch(choose)
 {
 case 0:menu2(L);break;
 case 1:GetElem_L(L); my_return(L,1);break;
 case 2:Print_LinkList(L); my_return(L,1);break;
 case 3:exit(0) ;break;
 default:menu1(L);
 }
}
void menu2(LinkList &L)             //管理员菜单
{
 int choose;
 system("cls");

 printf("\n\n");
 printf("\t\t\t****************管理员菜单****************\n");
 printf("\t\t\t*          *\n");
 printf("\t\t\t*  信息录入请按 1 -- 删除信息请按 2 *\n");
 printf("\t\t\t*  信息查找请按 3 -- 信息修改请按 4 *\n");
 printf("\t\t\t*  查看信息请按 5 -- 保存并退出按 6 *\n");
 printf("\t\t\t*          *\n");
 printf("\t\t\t*  清除所有数据按8     *\n");
 printf("\t\t\t*          *\n");
 printf("\t\t\t******************************************\n");
 printf("\n\t\t\t\t 进入用户菜单请按0\n");
 scanf("%d",&choose);

 switch(choose)
 {
  case 0:menu1(L);break;
 case 1:CreatList_L(L) ;my_return(L,2);break;
 case 2:Delete_LinkList(L) ;my_return(L,2);break;
 case 3:GetElem_L(L) ;my_return(L,2);break;
 case 4:changeElem_L(L); my_return(L,2);break;
 case 5:Print_LinkList(L); my_return(L,2);break;
 case 6:save_node(L);exit(0);
 case 8:Clearlist(L);break;
 default :menu2(L);
 }
}
void welcome(LinkList &L)            //welcome
{
 int a;
 login();
 printf("用户登录请按1\n");
 printf("管理员登录请按2\n");
 while(3>2)
 {
 scanf("%d",&a);
 if(a==1)
 { menu1(L);
 break;
 }
 else if(a==2)
 {
 menu2(L);
 break;
 }
 else
 {
 printf("输入错误!请重新输入\n");
 continue;
 }
 }
}

int main()  //main
{
 int i=0;
 LinkList L;
 L=(LNode*)malloc(sizeof(LNode));
 L->next=NULL;
 printf("\n\n\n\n\t\t\t正在从文件中读取数据请稍后");
 read_node(L);
 while(i<3)
 { printf(".");
 sleep(1);
 i++;
 }
 printf("\n\n\t\t\t读取成功!!\n");
 system("pause");
 system("cls");
 welcome(L);
 return 0;
}

更多学习资料请关注专题《管理系统开发》。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C语言通讯录管理系统完整版

    C语言实现了通讯录的录入信息.保存信息.插入.删除.排序.查找.单个显示等功能.. 完整的代码如下: #include <stdio.h> #include <malloc.h> //得到指向大小为Size的内存区域的首字节的指针// #include <string.h> #include <stdlib.h> //标准库函数// #define NULL 0 #define LEN sizeof(struct address_list) //计算字节//

  • C语言学生管理系统源码分享

    本文实例为大家分享了C语言学生管理系统源码,供大家参考,具体内容如下 #include<stdio.h> #include<stdlib.h> //结构体可以存放的学生信息最大个数,不可变变量 int const MAX_LENGTH=100; //学生信息结构体数组,最多可以存放100个学生信息 struct student{ int id; //学号 char *name; //姓名 int age; //年龄 float c_score; //C语言成绩 float engl

  • C语言职工信息管理系统源码

    本文实例为大家分享了C语言职工信息管理系统的具体代码,供大家参考,具体内容如下 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> struct worker { char ID[20];//工号 char name[20];//姓名 char sex[5];//性别 char born[20];//生日 char edu[20];//学历 char po

  • 学生成绩管理系统C语言代码实现

    C语言实现了学生成绩管理系统,可以进行学生成绩的增加,删除,更新,查询,计算和展示. 完整代码如下: #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct person //定义结构体 { char num[10]; //学号 char name[20]; //姓名 float cyuyan; //C语言成绩 float en; //物理学成绩 float ji; //原子物理成绩

  • C语言图书管理系统简洁版

    DOS界面的图书管理系统,具体内容如下 程序分为两块:管理员操作(收录图书.删除图书等)和会员操作(注册.借书.还书等): 1.管理员操作界面 2.会员操作界面 global.h头文件:(程序中只使用了一个编写的头文件,在这里存放了所有的接口函数以及需要使用到的头文件,还有结构体的定义) #include "iostream" #include "string" #include "fstream" #include "conio.h&

  • C语言编写学生成绩管理系统

    用C语言编写学生成绩管理系统代码,供大家参考,具体内容如下 C语言实现学生成绩管理系统实战教学 https://www.jb51.net/article/154767.htm (1)给出所选课程设计题目以及本题目具体所要完成的功能要求说明. 1.课程设计题目:学生成绩管理系统 2.完成的功能要求: (1).主要实现的功能: 1---学生输入 2---学生插入 3---学生查询(按学号) 4---学生删除 5---学生输出 6---计算每名学生的平均分并输出 7---计算每科的平均分并输出 8--

  • 学生信息管理系统C语言版

    C语言学生信息管理系统包括以下功能: 1.学生信息的整体注册 2.学生信息的修改 3.学生成绩信息的录入 4.学生信息的添加 5.恢复误删的学生信息 6.学生信息的删除 7.密码修改保存函数 8.学生信息的查询 9.密码修改函数 10.学生信息管理系统的菜单函数 #include "stdio.h" #include "malloc.h" #include "string.h" #include "stdlib.h" #inc

  • C语言利用结构体数组实现学生成绩管理系统

    要求: 某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入).定义结构体类型描述学生信息,每个学生信息包括:学号.姓名.多门课的成绩.总成绩和平均成绩.用结构体数组作为函数参数,编程实现如下菜单驱动的学生成绩管理系统. (1) 录入每个学生的学号.姓名和各科考试成绩. (2) 计算每门课程的总分和平均分. (3) 计算每个学生的总分和平均分. (4) 按每个学生的总分由高到低排出名次表. (5) 按学号由小到大排出成绩表. (6) 按姓名的字典顺序排出成

  • C语言学生成绩管理系统源代码

    大学C语言实训课,C语言学生成绩管理系统,供大家参考,具体内容如下 #include<stdio.h> #include<string.h> #include<math.h> struct student { int num; char name[20]; float pingshi; float shiyan; float kaoshi; double zongping; }stu[4]; void main() { void a(); void b(); void

  • C语言实现天气信息管理系统

    本文实例为大家分享了C语言实现天气信息管理系统的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<windows.h> #include<time.h> #include<unistd.h> #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #defi

  • C语言实现学生信息管理系统(单链表)

    本文实例为大家分享了C语言实现学生信息管理系统的具体代码,供大家参考,具体内容如下 /*copyright(c)2016.烟台大学计算机学院 * All rights reserved, * 文件名称:text.Cpp * 作者:吴敬超 * 完成日期:2016年7月1日 * 版本号:codeblock * * 问题描述: 学生信息管理系统 * 输入描述: * 程序输出: 输出结果 */ #include <stdio.h> #include <stdlib.h> #include

  • C语言实现歌曲信息管理系统

    本文实例为大家分享了C语言实现歌曲信息管理系统的具体代码,供大家参考,具体内容如下 系统功能:该系统以菜单方式工作,歌曲信息包括:歌名.演唱者.作词.作曲.所属专辑.出版时间.出版公司.试设计一歌厅歌曲管理系统,使之能提供以下功能:歌曲信息录入.修改.插入.删除功能:歌曲排序浏览功能:按歌名查询.按演唱者查询等功能. 完整的实现代码如下: #include "stdio.h" #include "stdlib.h" #include "string.h&q

  • C语言实现学生信息管理系统(文件版)

    本文实例为大家分享了C语言实现学生信息管理系统的具体代码,供大家参考,具体内容如下 下面是我自己用写的学生信息管理系统,为了增加数据的利用率,分为学生端和教师端,同时实现账号密码登录,以文件的形式将其存入. 代码如下 #include <stdio.h> #include <string.h> #include <string> #include<Windows.h> #define USER "TOM" // 事先定义用户名,用于登录页

  • C语言版学生信息管理系统

    本文实例为大家分享了C语言版学生信息管理系统的具体代码,供大家参考,具体内容如下 一.题目分析 1.功能概述 1)查询学生信息 2)添加学生信息 3)修改学生信息 4)删除学生信息 5)刷新学生信息 6)保存学生信息 7)输出当前学生信息 2.题目要求: 1)使用结构体建立学生信息体制 2)实现七大基本功能 3)采用文件存储学生信息 二.算法构造 1.难点解析----对文件的操作 1.1文件读取 FILE * fp; if ((fp = fopen(filename, "r")) ==

  • C语言实现学生信息管理系统(多文件)

    本文实例为大家分享了C语言实现学生信息管理系统的具体代码,供大家参考,具体内容如下 elemtype.h /***************************** * 这是学生成绩管理系统中的记录结构文件. * 文件名:elemtype.h * 作者: * 创建日期:2012-12-05 * 完成日期:2012-12-07 * 版本:1.0 * 修改记录: * * ******************************/ #ifndef ELEMTYPE #define ELEMTYP

  • C语言实现车辆信息管理系统

    本文实例为大家分享了C语言实现车辆信息管理系统的具体代码,供大家参考,具体内容如下 车辆信息管理系统 问题描述:建立车辆信息管理系统,实现车辆信息的添加和维护管理. 系统存储数据要求:每台车辆至少需要包含以下属性,系统中保存多台车辆的信息: 车辆型号(如思域.卡罗拉.天籁等) 厂商(如广汽本田.一汽大众.东风日产等) 车型级别(如紧凑型车.中型车.SUV等) 座位数(如5座.7座等) 排量(如1.2T.1.4T.1.5T.1.6T等) 变速箱(如手动.手自一体.无级变速等) 车身颜色(白色.黑色

  • C语言实现超市信息管理系统

    本文实例为大家分享了C语言实现超市信息管理系统的具体代码,供大家参考,具体内容如下 设计要求:设计一个超市信息管理系统,利用结构体存储货物信息和所购买商品的信息,并使用链表保存购物车信息,能够完成建立库存信息以及文件自动建立库存信息,对购物车添加商品.结算并修改库存等操作,可以将库存信息保存在文件中,并且可以对文件中的库存信息进行读取与显示. 程序代码如下: /*ifndef/define/endif"主要目的是防止头文件的重复包含和编译*/ #ifndef MARKET_H #define M

  • C语言实现学生信息管理系统(单链表)

    本文实例为大家分享了C语言实现学生信息管理系统的具体代码,供大家参考,具体内容如下 /*copyright(c)2016.烟台大学计算机学院 * All rights reserved, * 文件名称:text.Cpp * 作者:吴敬超 * 完成日期:2016年7月1日 * 版本号:codeblock * * 问题描述: 学生信息管理系统 * 输入描述: * 程序输出: 输出结果 */ #include <stdio.h> #include <stdlib.h> #include

  • C语言实现超市信息管理系统课程设计

    本文实例为大家分享了C语言实现超市信息管理系统的具体代码,供大家参考,具体内容如下 一. 需求分析 目前商品市场的商品信息玲琅满目,货物信息的储存以及更新就变的越来越重要.因此,我们小组设计的“超市信息管理程序”旨在解决货物的信息和购买商品信息的储存问题以及实现建立库存信息,对购物车添加商品.结算并修改库存等操作,同时也能实现对库存信息的读取和显示. 我们设计的程序要实现以下要求: 1. 使用两个不同的结构体分别保存货物信息和购物车中的商品信息,可在商品信息结构体中嵌套货物信息结构体.2. 将货

随机推荐