工业数据分析与文件信息管理系统

  • 设计任务

工业数据往往数据量巨大,需要将它们筛选和分类以进行处理和分析,将需要分析的数据保存至文件中,一方面可以提高生产过程中的可操作性,另一方面也可以加强其可移植性。

  • 程序使用说明

此部分的目的是让使用者能够获得正确的程序运行结果,防止出现一旦未按设计者要求输入,将导致不可预料的程序退出,无法考核设计者完整设计情况。要求说明的清楚、简单、条理性强。说明内容如下:

      1. 程序设计语言与运行环境:本程序使用VS2019制作而成。
      2. 文件组成说明:程序由多个文件组成时,源文件easydemo.cpp,dataproc.cpp等;数据文件randu.txtsinuo.txt等,及文件管理信息文件fileinfo.dat,与源文件在同一文件夹下。
      3. 操作说明:本程序有说明操作,按照说明操作即可。
  • 程序设计与实现
    1. 程序结构

此处描述预期实现系统的设计方案或功能设计的组成结构,绘制一个系统程序组成框图。

图1. 工业数据处理与文件信息管理系统框图

    1. 数据描述

描述系统使用的核心数据结构。如:结构体类型定义及结构体成员含义说明;并说明所使用的数据存储方法,如使用数组实现等。

typedef struct The_users   //typedef 可以定义结构体别名

{

    char id[10]; //账号

    char pwd[21]; //密码

    char sex; //性别(性别为单个字符)

    char name[15];//姓名(姓名为字符串)

    long phone; //电话号码(电话号码为长整型)

}users;

typedef struct

{

  char filename[20]; //数据文件名

  int line;      //数据行数

  int row;       //数据列数

  float mean;     //均值

  float var;   //方差

  char status;     //文件状态:是否处理过

}FILEINFO;         //文件信息结构体类型

    1. 功能模块设计

此处描述所有自定义函数的函数名、函数功能、参数说明及算法描述。选择1~2个主要函数绘制规范流程图(或N-S图。应至少包括分支和循环控制的结构)。每个函数按如下格式说明。

为实现上述功能,系统实现自定义函数XXX个。具体如下:

      1. 函数名:void CreateFile()

函数功能:用户建立文件

入口参数:无

出口参数:无

算法描述:创建文件

      1. 函数名:void Register()

函数功能: 无

入口参数:无

出口参数:无

算法描述:注册用户写入文件

      1. ……. 函数名:void Find()

函数功能:找回密码

入口参数:无

出口参数: 无

算法描述:根据问题找回密码

      1. 函数名:void  Input_login()

函数功能:登录函数

入口参数:无

出口参数: 无

算法描述:安全模块

      1. 函数名:void menu()

函数功能:菜单栏

入口参数:无

出口参数: 无

算法描述:分支结构

      1. 函数名:int inform(FILEINFO* file)

函数功能:文件读入

入口参数:结构体一维数组首地址

出口参数: 读入个数

算法描述:将文件内容结构体数组

      1. 函数名:void save(char* filename, float* a, int n)

函数功能:内容保存

入口参数:文件名一维数组首地址,数据一维数组首地址,数据个数

出口参数: 无

算法描述:写入文件

      1. 函数名:float mean(float a[], int n)

函数功能:求取平均值

入口参数:数据一维数组首地址,数据个数

出口参数: 平均值

算法描述:平均值算法

      1. 函数名:float var(float a[], int n)

函数功能:求取方差

入口参数:数据一维数组首地址,数据个数

出口参数: 方差

算法描述:方差算法

      1. 函数名:void mafilter(float a[],int n, int size)

函数功能:平滑函数

入口参数:数据一维数组首地址,数据个数,数据内存占据量

出口参数: 无

算法描述:平滑算法

      1. 函数名:float scale(float a[], int n)

函数功能:求取数组的数值范围

入口参数:数据一维数组首地址,数据个数

出口参数:数组的取值范围

算法描述:极值减法

      1. 函数名:float min(float a[], int n)

函数功能:求极小值

入口参数:数据一维数组首地址,数据个数

出口参数:极小值

算法描述:“打擂台”算法,两两比较,循环结构

      1. 函数名:float max(float a[], int n)

函数功能:求极大值

入口参数:数据一维数组首地址,数据个数

出口参数: 极大值

算法描述:“打擂台”算法,两两比较,循环结构

  • 设计难点与解决方法

此程序实现过程中遇到的主要难点有以下几方面:

    1. 文件分析,解决思路是把文件读取到内存,按特征进行分割;
    2. 不同大小文件处理,解决思路是按块进行读取;
    3. 数据检索,数据检索主要考虑检索性能,解决思路是按特征对数据进行分类;

  • 运行效果与不足之处

此处描述系统运行效果,给出典型(源码QQ2193410903)运行效果图,并指出系统存在不足和需要进一步改进的地方。

系统运行典型效果图,如图所示。

  • 课程设计体会与收获

 1、熟悉程序开发环境、学习计算机系统的操作方法

  一个c语言程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行。所谓"环境"就是所用的计算机系统硬件、软件条件,只有学会使用这些环境,才能进行程序开发工作。通过上机实验,熟练地掌握c语言开发环境,为以后真正编写计算机程序解决实际问题打下基础。同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。

  2、学习上机调试程序

  完成程序的编写,决不意味着万事大吉。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。有时候一个消耗你几个小时时间的小小错误,调试高手一眼就看出错误所在。

  通过这次为数不多的几天计算机实习学习,我们了解了一些关于c语言的知识,理解巩固了我们c语言的理论知识,着对我们将来到社会工作将会有莫大的帮助。同时它让我知道,只要你努力,任何东西都不会太难。

  3、加深对课堂讲授内容的理解

  课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。然而要使用c语言这个工具解决实际问题,又必须掌握它。通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实习中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实习所致。

  学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。即把c语言作为工具,描述解决实际问题的步骤,由计算机帮助我们解题。只有通过上机才能检验自己是否掌握c语言、自己编写的程序是否能够正确地解题。

  通过上机实验来验证自己编制的程序是否正确,恐怕是大多数同学在完成老师作业时的心态。但是在程序设计领域里这是一定要克服的传统的、错误的想法。因为在这种思想支配下,可能你会想办法去"掩盖"程序中的错误,而不是尽可能多地发现程序中存在的问题。自己编好程序上机调试运行时,可能有很多你想不到的情况发生,通过解决这些问题,可以逐步提高自己对c语言的理解和程序开发能力。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2193410903

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值