国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于C++的企業(yè)電費(fèi)統(tǒng)計(jì)程序

2016-03-05 00:10:45施沫寒
無線互聯(lián)科技 2015年6期
關(guān)鍵詞:文件名峰谷電表

施沫寒

摘要:近年來,隨著信息技術(shù)的不斷普及,越來越多的生產(chǎn)單位需要-用計(jì)算機(jī)來自動(dòng)統(tǒng)計(jì)各種生產(chǎn)數(shù)據(jù)。這種方法不需要過多人為干涉,具有精確度高,速度快,保存質(zhì)量好,統(tǒng)計(jì)方便等優(yōu)秀特性。為生產(chǎn)生活提供了極大便利,為決策制定提供了有力依據(jù)。文章將從一個(gè)實(shí)際鋼鐵企業(yè)的實(shí)際需求出發(fā),說明如何實(shí)現(xiàn)一個(gè)基礎(chǔ)的電力數(shù)據(jù)統(tǒng)計(jì)程序。它將讀取電表提供的流式數(shù)據(jù),加以糾錯(cuò)和處理,最終生成方便統(tǒng)計(jì)人員處理查看的檔案數(shù)據(jù)文檔。該程序已經(jīng)通過該企業(yè)的立項(xiàng),正在實(shí)際使用中。

關(guān)鍵詞:數(shù)據(jù)統(tǒng)計(jì);C++

1 需求分析

眾所周知,伴隨著經(jīng)濟(jì)的快速發(fā)展用電需求的不斷攀升,分時(shí)電價(jià)作為電力需求管理的重要手段之一,而峰谷電價(jià)可有效地降低企業(yè)電能成本。北京首鋼京順軋輥有限公司使用智能型峰谷電表計(jì)量電度,電度表上下載的可以是.CSV格式的數(shù)據(jù),能夠記錄峰谷平各個(gè)時(shí)段電量信息,但不能隨時(shí)統(tǒng)計(jì)峰谷平各時(shí)段用電量及電費(fèi),使用戶感覺很不方便。計(jì)算機(jī)技術(shù)處理和保存數(shù)據(jù)已經(jīng)是信息科學(xué)的重要應(yīng)用。現(xiàn)在的數(shù)據(jù)保存早已離不開信息科學(xué)。信息科學(xué)保存數(shù)據(jù)具有方便,快速,可靠,保存時(shí)間長等特點(diǎn)。于是人們用e語言編寫電量電費(fèi)實(shí)時(shí)統(tǒng)計(jì)程序。

要實(shí)現(xiàn)的是從原始數(shù)據(jù)中提取數(shù)據(jù)并做處理。

客戶會(huì)提供電表數(shù)據(jù)。數(shù)據(jù)記錄了電表在各個(gè)時(shí)段電量(包括電流、電壓、有功功率無功功率等)的實(shí)時(shí)數(shù)據(jù)。而客戶最關(guān)心的是工廠在特定時(shí)間段所消耗的電能和花費(fèi)的電費(fèi)。一天中,電費(fèi)的計(jì)費(fèi)分峰時(shí),谷時(shí),平時(shí)3個(gè)時(shí)間段,谷時(shí)段電價(jià)只有峰時(shí)段電價(jià)的1/3,因此及時(shí)方便的統(tǒng)計(jì)出各個(gè)時(shí)段的用電量及電費(fèi)是企業(yè)降低生產(chǎn)成本的重要依據(jù)。

客戶提供的是一個(gè)采樣時(shí)間間隔最小5分鐘,每天24小時(shí),累計(jì)時(shí)間30天之內(nèi)的記錄了電壓、電流、電度、功率等含有大量數(shù)據(jù)的CSV文本文件,工人的下載時(shí)間是隨機(jī)的,意味著.CSV文件中的數(shù)據(jù)量是不定的。其中數(shù)據(jù)是字符的形式,每一條目以逗號(hào)隔開,每一條記錄以換行符隔開。其中有大家關(guān)心的數(shù)據(jù),也有大家不關(guān)心的數(shù)據(jù)。由于數(shù)據(jù)量很大,要從文件中選擇所需要的數(shù)據(jù)。很多時(shí)候記錄數(shù)據(jù)并不可靠??赡軙?huì)出現(xiàn)記錄缺失,亂碼。對(duì)于記錄缺失的情況,還要進(jìn)行容錯(cuò)處理,可以瀏覽前后的數(shù)據(jù)給出補(bǔ)救,對(duì)于后面情況,要中斷工作,告知用戶數(shù)據(jù)有問題。

用戶有8臺(tái)大用電量設(shè)備,每個(gè)設(shè)備有一個(gè)峰谷平智能電度表,每臺(tái)設(shè)備以1-8標(biāo)示。文件名的啟用規(guī)則以年月日時(shí)間命名并含有與設(shè)備編號(hào)一致的標(biāo)號(hào)信息,便于統(tǒng)計(jì)時(shí)歸納。

企業(yè)員工文化水平較低,操作者甚至不能做計(jì)算機(jī)基本操作。做的頁面要盡量友好、方便。

2 設(shè)計(jì)

本程序由C++設(shè)計(jì)算法邏輯。

C++是著名的高級(jí)程序設(shè)計(jì)語言,支持廣泛的多種程序風(fēng)格,也無需復(fù)雜的編程環(huán)境,因此具有十分廣泛的用途。同時(shí)C++效率高,保持了C語言接近匯編語言而得來的簡潔高效,又對(duì)c語言的系統(tǒng)進(jìn)行了改革和擴(kuò)充,因此比C語言的編譯更嚴(yán)格,也更安全。

程序的受眾文化程度低,不熟悉計(jì)算機(jī)操作,本程序又采用命令行界面,要盡量使說明和操作方式友好,讓用戶容易上手。

客戶交給我們CSV文件,我們也用CSV文件輸出。這種逗號(hào)分隔的文本格式可以直接用EXCEL打開,方便用戶使用。

3 流程設(shè)計(jì)

3.1 CSV源文件定位

筆者提供給了用戶兩種方式來定位目標(biāo)文件,一個(gè)是輸入文件名時(shí)從根目錄開始輸入文件目錄的方式。這個(gè)方式靈活,可以找到磁盤任何位置的文件。但要求目錄不能輸錯(cuò),否則找不到文件無法進(jìn)行下一步,考慮到用戶文化水平較低,正確的輸入目錄可能要費(fèi)一番功夫。所以改用光標(biāo)條選擇,實(shí)現(xiàn)了遍歷文件系統(tǒng),讓用戶從列表里選擇的功能。

第二種方式是遍歷程序當(dāng)前目錄,這樣只要用戶把文件和程序放到一起,所有的.CSV文件都會(huì)以有數(shù)字編號(hào)的形式列出,用戶輸入文件名時(shí)只需輸入數(shù)字編號(hào)就可以,很方便的找到文件又便于操作者操作而不會(huì)出錯(cuò)。

例如1.20150301-0302,只需輸入1就是要選的文件。

找到文件后,會(huì)回顯文件名讓用戶確認(rèn)。如果有錯(cuò)返回重新輸入。

3.2 文件糾錯(cuò)

由于電表數(shù)據(jù)并不完全可靠,可能會(huì)出現(xiàn)以下錯(cuò)誤:

第一,可能會(huì)出現(xiàn)大片亂碼情況。對(duì)于這種情況,我們檢測文件開始的一些字符,如果正常,則可排除大部分情況,如果不正常,中斷工作。

第二,可能出現(xiàn)數(shù)據(jù)缺失。由于數(shù)據(jù)條目是累計(jì)電量,一般情況下只要用再下一條數(shù)據(jù)減去上一條數(shù)據(jù)即可。但是如果分割時(shí)間段的那條數(shù)據(jù)缺失,由于單價(jià)不同的影響,可能會(huì)影響價(jià)格的計(jì)算。這時(shí)錯(cuò)誤不至于太大,程序照常執(zhí)行,但會(huì)提醒用戶可能會(huì)發(fā)生錯(cuò)誤。

3.3 數(shù)據(jù)采集

每條數(shù)據(jù)中,數(shù)據(jù)項(xiàng)按照給定序列排列,每項(xiàng)數(shù)據(jù)用逗號(hào)隔開,每條數(shù)據(jù)用換行符隔開。只要簡單的循環(huán)算法,就可以提取出數(shù)據(jù)。數(shù)據(jù)存在自定義的一個(gè)數(shù)據(jù)結(jié)構(gòu)中。這個(gè)數(shù)據(jù)結(jié)構(gòu)構(gòu)成一個(gè)線性表用來管理大量數(shù)據(jù)。數(shù)據(jù)結(jié)構(gòu)全部自行實(shí)現(xiàn)。

可是由于數(shù)據(jù)較多且不可靠,長度也不定,這里的算法是程序的核心。

由于用戶給的數(shù)據(jù)條目里不僅有人們關(guān)心的數(shù)據(jù),還有人們不關(guān)心的,要自行設(shè)計(jì)算法篩選需要的數(shù)據(jù)。

3.4 數(shù)據(jù)分析和輸出

采用一邊分析一邊輸出的模式,遍歷線性表,同時(shí)累加數(shù)據(jù),到了時(shí)間段分割點(diǎn)就輸出。這個(gè)算法比較簡單。

4 實(shí)現(xiàn)

4.1 界面設(shè)計(jì)

界面設(shè)計(jì)以簡潔明了為宜,采用了控制臺(tái)方式。

4.2 CSV文件定位

通過WinAPI實(shí)現(xiàn)。主要是遍歷文件系統(tǒng),方便用戶選擇文件。當(dāng)用戶確定一個(gè)路徑后,就會(huì)列出這個(gè)路徑下的所有文件,每一個(gè)文件對(duì)應(yīng)一個(gè)索引號(hào),用戶可以輸入多個(gè)索引號(hào)來實(shí)現(xiàn)多個(gè)文件的批次處理。主要通過FindFirstFile方法和FindNextFile用循環(huán)實(shí)現(xiàn)。這里給出關(guān)鍵的代碼。

這次遍歷用來向用戶展示文件,之后還將遍歷一次,用來存儲(chǔ)文件名。

4.3 數(shù)據(jù)采集

得到文件名后,通過C++的函數(shù)打開文件,得到的會(huì)是流式的文本文件。處理這些文件是程序的重點(diǎn)。

首先電表數(shù)據(jù)不一定可靠??赡軙?huì)出現(xiàn)大片亂碼的情況。這時(shí)檢測每條數(shù)據(jù)的前七個(gè)字符,應(yīng)該都是數(shù)字。如果符合這個(gè)條件,則可排除這種情況。

數(shù)據(jù)還可能缺少條目。這可能會(huì)損失結(jié)果的準(zhǔn)確性。這種情況不中斷工作,只提示用戶可能出現(xiàn)錯(cuò)誤。

之后就可以開始采集數(shù)據(jù)了。數(shù)據(jù)有如下特點(diǎn):

(1)每條數(shù)據(jù)第一項(xiàng)是日期,固定八位。

(2)第二項(xiàng)是時(shí)間,固定五位。

(3)第三項(xiàng)是累計(jì)電量。位數(shù)不定,以逗號(hào)結(jié)束。

(4)后面有若干不關(guān)心的數(shù)據(jù)項(xiàng),整條數(shù)據(jù)以換行結(jié)束。

經(jīng)過分析容易知道,只要設(shè)置兩個(gè)變量,一個(gè)計(jì)算當(dāng)前條目已得到數(shù)據(jù)的數(shù)量,另一個(gè)計(jì)算當(dāng)前數(shù)據(jù)項(xiàng)的字符數(shù),就能從原始文件中提取符合容易做進(jìn)一步處理的字符。這里給出關(guān)鍵代碼。

現(xiàn)在已經(jīng)得到了容易處理的字符型數(shù)據(jù),只要通過簡單的循環(huán)算法把它轉(zhuǎn)換為浮點(diǎn)型,在存到線性表里就行了。這里的代碼不再贅述。

4.4 數(shù)據(jù)分析輸出

最后只要逐條數(shù)據(jù)減去上一條,乘以單價(jià)然后輸出到文件就可以了。

由于有8臺(tái)設(shè)備,每臺(tái)設(shè)備都要統(tǒng)計(jì),最終要在一張電子表格中顯示出8臺(tái)設(shè)備各個(gè)時(shí)段的用電量及電費(fèi)情況,便于決策者統(tǒng)計(jì)管理,降低成本。設(shè)備號(hào)在客戶給出的源文件名中有標(biāo)示,在讀取時(shí)本程序已經(jīng)保存。輸出時(shí)單列出各個(gè)條目輸出即可。

5 結(jié)語

此程序基于純C++開發(fā),使用方便,效率高,用戶反饋良好。

猜你喜歡
文件名峰谷電表
巧判電表測量對(duì)象
電表“對(duì)”與“錯(cuò)”歸類巧掌握
湖南省峰谷分時(shí)電價(jià)分析及優(yōu)化策略研究
湖南電力(2021年1期)2021-04-13 01:37:02
右鍵調(diào)用多重更名更方便
電腦愛好者(2019年9期)2019-10-30 03:43:29
Excel輕松提取文件名
淺談峰谷時(shí)段的劃分方法
看電表
電動(dòng)汽車峰谷分時(shí)電價(jià)時(shí)段充電優(yōu)化模型
不讓長文件名成為“絆腳石”
電腦迷(2014年8期)2014-04-29 07:37:40
一種電表模擬軟件的應(yīng)用研究
河南科技(2014年6期)2014-02-27 14:06:30
乐东| 凤山市| 北安市| 阜城县| 宾阳县| 仙桃市| 江阴市| 平江县| 广安市| 彩票| 巴林左旗| 英德市| 石首市| 嘉峪关市| 长乐市| 新昌县| 聊城市| 扬中市| 繁峙县| 平阳县| 汾西县| 乡城县| 仙居县| 石泉县| 鱼台县| 大田县| 湄潭县| 呼伦贝尔市| 务川| 乐安县| 宜宾县| 商南县| 铜陵市| 翁源县| 安国市| 偃师市| 库尔勒市| 宁化县| 长泰县| 昔阳县| 于田县|