轨迹-147 2023-04-20 22:40 采纳率: 33.3%
浏览 13

气象数据处理系统之数据查询c语言

img


本人第一次搞,气象数据处理系统的数据查询部分,这是我朋友的,求分析(越详细越好)

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-04-21 10:35
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7733244
    • 这篇博客你也可以参考下:【c】在C语言中使用顺序表了实现一个通讯录,实现对联系人信息的增删改查(主要用到动态开辟内存,文件读写,结构体指针)
    • 同时,你还可以查看手册:c语言-内存模型与数据竞争 中的内容
    • 除此之外, 这篇博客: 走好每一步,基于C实现机器人运动学建模与标定、运动规划、轨迹规划算法中的 类成员的访问权限(封装) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

        C++通过public、protected、private 三个关键字来控制成员变量和成员函数的访问权限,它们分别表示公有的、受保护的、私有的,被称为成员访问限定符。所谓访问权限,就是你能不能使用该类中的成员。
        在类的内部(定义类的代码内部),无论成员被声明为 public、protected 还是 private,都是可以互相访问的,没有访问权限的限制。
        在类的外部(定义类的代码之外),只能通过对象访问成员,并且通过对象只能访问 public 属性的成员,不能访问 privateprotected 属性的成员。
        本节重点讲解 public 和 private,protected将在继承中讲解。
        下面通过一个 Student 类来演示成员的访问权限:

      #include <iostream>
      using namespace std;
      //类的声明
      class Student{
      private:  //私有的
          char *m_name;
          int m_age;
          float m_score;
      public:  //共有的
          void setname(char *name);
          void setage(int age);
          void setscore(float score);
          void show();
      };
      //成员函数的定义
      void Student::setname(char *name){
          m_name = name;
      }
      void Student::setage(int age){
          m_age = age;
      }
      void Student::setscore(float score){
          m_score = score;
      }
      void Student::show(){
          cout<<m_name<<"的年龄是"<<m_age<<",成绩是"<<m_score<<endl;
      }
      int main(){
          //在栈上创建对象
          Student stu;
          stu.setname("小明");
          stu.setage(15);
          stu.setscore(92.5f);
          stu.show();
          //在堆上创建对象
          Student *pstu = new Student;
          pstu -> setname("李华");
          pstu -> setage(16);
          pstu -> setscore(96);
          pstu -> show();
          return 0;
      }
      

        运行结果:

      小明的年龄是15,成绩是92.5
      李华的年龄是16,成绩是96
      

        类的声明和成员函数的定义都是类定义的一部分,在实际开发中,我们通常将类的声明放在头文件中,而将成员函数的定义放在源文件中。
        类中的成员变量 m_name、m_age 和m_ score 被设置成 private 属性,在类的外部不能通过对象访问。也就是说,私有成员变量和成员函数只能在类内部使用,在类外都是无效的。
        成员函数setname()、setage() 和 setscore()被设置为public属性,是公有的,可以通过对象访问。
        private后面的成员都是私有的,直到有 public出现才会变成共有的;public之后再无其他限定符,所以 public 后面的成员都是共有的。
        成员变量大都以m_开头,这是约定成俗的写法,不是语法规定的内容。以m_开头既可以一眼看出这是成员变量,又可以和成员函数中的形参名字区分开。
        以 setname()为例,如果将成员变量m_name的名字修改为name,那么 setname()的形参就不能再叫name了,得换成诸如name1、_name这样没有明显含义的名字,否则name=name;这样的语句就是给形参name赋值,而不是给成员变量name赋值。
        因为三个成员变量都是私有的,不能通过对象直接访问,所以必须借助三个public 属性的成员函数来修改它们的值。下面的代码是错误的:

      Student stu;
      //m_name、m_age、m_score 是私有成员变量,不能在类外部通过对象访问
      stu.m_name = "小明";
      stu.m_age = 15;
      stu.m_score = 92.5f;
      stu.show();
      

        简单地谈类的封装
        private 关键字的作用在于更好地隐藏类的内部实现,该向外暴露的接口(能通过对象访问的成员)都声明为public,不希望外部知道、或者只在类内部使用的、或者对外部没有影响的成员,都建议声明为 private
        根据C++软件设计规范,实际项目开发中的成员变量以及只在类内部使用的成员函数(只被成员函数调用的成员函数)都建议声明为 private,而只将允许通过对象调用的成员函数声明为 public
        另外还有一个关键字 protected,声明为 protected 的成员在类外也不能通过对象访问,但是在它的派生类内部可以访问,这点我们将在后续章节中介绍,现在你只需要知道 protected 属性的成员在类外无法访问即可。
        有读者可能会提出疑问,将成员变量都声明为 private,如何给它们赋值呢,又如何读取它们的值呢?
        我们可以额外添加两个public 属性的成员函数,一个用来设置成员变量的值,一个用来修改成员变量的值。上面的代码中,setname()、setage()、setscore()函数就用来设置成员变量的值;如果希望获取成员变量的值,可以再添加三个函数getname()、getage()、getscore()
        给成员变量赋值的函数通常称为 set 函数,它们的名字通常以set开头,后跟成员变量的名字;读取成员变量的值的函数通常称为 get 函数,它们的名字通常以get开头,后跟成员变量的名字。
        除了 set函数和 get函数,在创建对象时还可以调用构造函数来初始化各个成员变量,我们将在《C++构造函数》一节中展开讨论。不过构造函数只能给成员变量赋值一次,以后再修改还得借助 set函数。
        这种将成员变量声明为 private、将部分成员函数声明为 public 的做法体现了类的封装性。所谓封装,是指尽量隐藏类的内部实现,只向用户提供有用的成员函数。
        有读者可能会说,额外添加 set 函数和 get函数多麻烦,直接将成员变量设置为 public 多省事!确实,但将成员变量设置为 private 是一种软件设计规范,尤其是在大中型项目中,还是请大家尽量遵守这一原则。
        为了减少代码量,方便说明问题,本教程中的类可能会将成员变量设置为public,请读者不要认为这是一种错误。
        对privatepublic的更多说明
        声明为 private 的成员和声明为public 的成员的次序任意,既可以先出现 private 部分,也可以先出现 public 部分。如果既不写 private 也不写 public,就默认为 private
        在一个类体中,privatepublic 可以分别出现多次。每个部分的有效范围到出现另一个访问限定符或类体结束时(最后一个右花括号)为止。但是为了使程序清晰,应该养成这样的习惯,使每一种成员访问限定符在类定义体中只出现一次。
        下面的类声明也是完全正确的:

      class Student{
      private:
          char *m_name;
      private:
          int m_age;
          float m_score;
      public:
          void setname(char *name);
          void setage(int age);
      public:
          void setscore(float score);
          void show();
      };
      

    • 您还可以看一下 CSDN讲师老师的C语言精髓之编译过程视频教程课程中的 计算机的组成部分,栈内存的特点;画出内存图,引入指针的概念小节, 巩固相关知识点
    • 以下回答来自chatgpt: 当然可以帮您解答,您提出的问题是关于气象数据查询系统的分析,那我需要了解更具体的信息才能帮您解决该问题,请问您遇到了哪些具体的问题呢? 1. 程序的基本功能是什么? 首先我们需要了解该程序的基本功能,是用来查询那些气象数据?比如说是温度,湿度等等,这样我们才能更好的深入分析程序的具体实现。 2. 程序的数据结构是什么? 在编写程序时我们需要用到数据结构,因此了解程序的具体数据结构也是非常关键的一步。常见的数据结构包括数组,链表,栈,队列等等,确定程序数据结构之后才能更好的进行后续的分析。 3. 如何解析气象数据? 在处理气象数据时,我们需要了解如何从数据源中提取所需的数据,比如说温度,湿度等数据,这个过程包括解析气象数据的格式,数据采集,数据存储等等,需要对具体情况进行分析。 4. 如何对气象数据进行查询? 结合前面的数据结构和数据解析的过程,我们需要进一步了解查询气象数据的具体实现。比如说使用何种算法,如何优化查询速度等等。 5. 程序的性能问题如何解决? 程序的性能非常重要,在处理大量气象数据的情况下,可能会出现程序运行速度过慢等问题,因此我们需要进一步分析性能问题,优化代码,提高程序运行效率。一些具体的解决方案可能包括优化算法,使用高性能数据结构,利用并行编程等等。 希望这些解答能够帮您更好的分析气象数据查询系统,如果您有其他具体的问题或者想要了解更多的信息,请告诉我,我会尽可能的为您提供帮助。

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 4月20日