公司庫存管理系統(tǒng)C_第1頁
公司庫存管理系統(tǒng)C_第2頁
公司庫存管理系統(tǒng)C_第3頁
公司庫存管理系統(tǒng)C_第4頁
公司庫存管理系統(tǒng)C_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、設(shè)計內(nèi)容 公司庫存管理系統(tǒng)一、設(shè)計要求1目的和要求(1)要求學(xué)生熟練掌握C+語言的基本知識和技能; (2)要求利用面向?qū)ο蟮姆椒ㄒ约癈+的編程思想來完成系統(tǒng)的設(shè)計,在設(shè)計的過程中,建立清晰的類層次; (3)基本掌握面向?qū)ο蟪绦蛟O(shè)計的基本思路和方法; (4)在系統(tǒng)中定義類,每個類中要有各自的屬性和方法; (5)在系統(tǒng)的設(shè)計中,至少要用到面向?qū)ο蟮囊环N機(jī)制。 (6)能夠利用所學(xué)的基本知識和技能,解決簡單的面向?qū)ο蟪绦蛟O(shè)計問題。 (7)寫出設(shè)計說明書2設(shè)計內(nèi)容1、問題描述(功能要求): 某公司現(xiàn)有以下設(shè)備:普通電視機(jī)、DVD、帶DVD的電視機(jī),帶DVD的電視機(jī)的售價為普通電視機(jī)和DVD單價之和的80

2、%,要求對所有的庫存設(shè)備都能按照品名進(jìn)行顯示、查找、入庫和出庫、保存的功能。普通電視機(jī)有下列屬性:尺寸、類型(液晶或等離子) 、售價、重量、品牌、入庫數(shù)量、入庫編號DVD有下列屬性:規(guī)格(高清、藍(lán)光高清、普通)、售價、重量、品牌、入庫數(shù)量、入庫編號帶DVD的電視機(jī)是上兩者的派生類,但請注意有些屬性的重復(fù)問題。要求生成的相關(guān)庫存數(shù)據(jù)結(jié)果以文件方式存放在硬盤中,或用鏈表、數(shù)組來進(jìn)行管理。2、問題的解決方案: 根據(jù)系統(tǒng)功能要求,可以將問題解決分為以下步驟: (1)寫出需求分析(做什么),建立該系統(tǒng)的功能模塊框圖;(2)分析系統(tǒng)中的各個實體之間的關(guān)系及其屬性和行為; (3)根據(jù)問題描述,設(shè)計系統(tǒng)的類層

3、次; (4)完成類層次中各個類的描述(包括屬性和方法); (5)完成類中各個成員函數(shù)的定義; (6)完成系統(tǒng)的應(yīng)用模塊; (7)功能調(diào)試; (8)完成系統(tǒng)總結(jié)報告以及系統(tǒng)使用說明書。3設(shè)計環(huán)境Windows操作系統(tǒng)、VC+6.0、C語言4個人承擔(dān)任務(wù)主要負(fù)責(zé)系統(tǒng)的顯示、查找、入庫、出庫主要功能實現(xiàn)和系統(tǒng)封裝。二、系統(tǒng)需求分析公司庫存管理系統(tǒng)程序中,系統(tǒng)要求我們設(shè)計四個類:一個基礎(chǔ)類Device,由Device類派生出來的普通電視機(jī)類和DVD類;再由普通電視機(jī)類和DVD類共同派生出來的帶DVD的普通電視機(jī)類。在這個系統(tǒng)中我們需要實現(xiàn)主要的五個功能:1、顯示物品功能;2、查找物品功能;3、入庫物品

4、功能;4、出庫物品功能;5、保存物品功能。公司庫存管理系統(tǒng)主要是為了讓用戶根據(jù)自己的需要自己想輸入的一些物品,然后將其保存,當(dāng)用戶想查看所有物品時可以查看,想添加物品時可以添加自己想添加的相關(guān)物品信息;當(dāng)用戶根據(jù)實際物品的庫存調(diào)整時,可以進(jìn)行出入庫操作,并且記錄每一次的出入庫的時間和數(shù)量,以便日后查看;當(dāng)用戶想查找某一物品時,用戶可以輸入這一物品的名稱或入庫編碼,然后搜索并查看這一物品的所有信息。在這個系統(tǒng)中,用戶可以根據(jù)系統(tǒng)的提示分別執(zhí)行用戶自己想實現(xiàn)的功能,比如:在顯示物品功能中用戶可以查看用戶所保存的所有物品信息;在查找物品功能中用戶可以根據(jù)自己的需要輸入自己想查找的物品名稱或入庫編碼,

5、然后查找用戶想查找的物品的所有相關(guān)信息;在出、入庫物品功能中用戶可以根據(jù)自己的需要輸入自己想要出、入庫的物品名稱或入庫編碼,然后進(jìn)行出、入庫操作;在物品保存功能中,凡是用戶每對庫存系統(tǒng)內(nèi)部的信息進(jìn)行一次操作,系統(tǒng)就會自動保存并記錄相關(guān)信息。三、程序設(shè)計思路1、系統(tǒng)功能模塊圖:從系統(tǒng)的需求中我們可以看到:該系統(tǒng)要對產(chǎn)品進(jìn)行顯示、查找、入庫、出庫和保存功能。這就意味著這個系統(tǒng)需要一個show函數(shù)(通過cout將數(shù)據(jù)顯示在屏幕上)來實現(xiàn)顯示功能,而其他各個功能需要不同的模塊來實現(xiàn),也就意味著這個系統(tǒng)需要五個不同的功能模塊。菜單1、顯示物品信息2、查找物品信息3、入庫物品信息4、出庫物品信息5、退出系

6、統(tǒng)派生派生2、公司庫存管理系統(tǒng)中各功能模塊的實現(xiàn): a. 顯示物品模塊:在輸入好庫存信息后,庫存信息就會被保存到“庫存清單。txt”文本中,然后根據(jù)菜單顯示選擇“1、顯示物品信息”,就會直接調(diào)用文本文件中的所有信息并加以顯示。b.查找物品信息:查找物品信息查找類型查找名稱顯示物品信息顯示物品出、入庫記錄c.入庫物品信息:選擇“3、入庫物品信息”后,首先刷屏顯示現(xiàn)有庫存信息的全部內(nèi)容,方便用戶觀察需要入庫的產(chǎn)品信息和具體庫存數(shù)量。之后,可以根據(jù)選擇入庫編碼或者設(shè)備名稱來查找需要入庫的具體設(shè)備。如果該設(shè)備存在于庫存當(dāng)中,則輸入入庫數(shù)量,提示入庫成功;如果倉庫中沒有該種設(shè)備,則提示“對不起,沒有找到

7、該庫存物品?!比霂斐晒?,該物品庫存數(shù)量增加,庫存記錄增加。如圖:d.出庫物品信息:出庫物品信息和入庫物品信息操作原理一樣,顯示相同;只不過一個增加一個減少,在此就不再贅述。e.保存效果:3、具體程序代碼書寫思路:因為用的c+編程語言和環(huán)境,所以針對于面向?qū)ο蟮某绦驎鴮懤砟睢N覍⒊绦蚰K化,把類的實現(xiàn)進(jìn)行了封裝,運用創(chuàng)建一個工程的方式把程序做的更為具體和清晰。在關(guān)鍵地方,在程序后面做有注釋,便于其他人閱讀和分析。四、總結(jié)本公司庫存管理系統(tǒng)很好的實現(xiàn)了“顯示、查找、入庫、出庫、保存”的主要功能,較為完美的實現(xiàn)了本次程序設(shè)計的主要要求。除此之外,我還在程序中增加了一定的糾錯能力,比如當(dāng)出庫數(shù)量大于

8、現(xiàn)有庫存是會提示“庫存不足,請重新輸入”的提示,直到用戶輸入正確的數(shù)值為止。而且,在用戶對于菜單的屬于操作出現(xiàn)失誤時,系統(tǒng)也會根據(jù)具體情況進(jìn)行相應(yīng)的提示,避免了死循環(huán)的出現(xiàn),方便了用戶的操作、增加了系統(tǒng)的健壯性。對于程序的書寫,可以說這個程序的封裝以及模塊化結(jié)構(gòu)做的很好,主程序很簡單,需要運用函數(shù)的時候直接調(diào)用相應(yīng)部分即可。這對于程序書寫時的修改、校正也極為方便,避免了“牽一發(fā)而動全身”的麻煩。我覺得這種模塊化的思想應(yīng)該繼續(xù)保持,運用到今后的程序設(shè)計當(dāng)中,既避免了主程序過于繁雜的麻煩,也為其他人的閱讀、分析和今后的程序改良提供了方便。在程序應(yīng)用中,菜單選項僅是對于現(xiàn)有庫存的各種操作和處理,但并

9、沒有提供外部接口讓用戶主動添加其它的物品信息。對于此,我們特意增加了文本修改功能,可以從后臺的地方增加或刪減現(xiàn)有庫存信息。彌補了庫存不可變動的缺陷。也體現(xiàn)了,重要信息需要掌握在公司內(nèi)部人員手中,而不能隨意進(jìn)行修改的理念。五、調(diào)試及其測試(調(diào)試出現(xiàn)的主要問題,編譯語法錯誤及修改,重點是運行邏輯問題修改和調(diào)整)1、 由于本次設(shè)計用到了類,而類中有受保護(hù)的對像和私有對象,他們都不可以在類外使用。于是使得下邊一些數(shù)據(jù)不能使用。最后我只能將數(shù)據(jù)全改成公有數(shù)據(jù)。這樣也讓繼承的時候不會出現(xiàn)問題。2、 本次程序幾經(jīng)修改才做到了現(xiàn)在這個樣子,起初是一個長達(dá)700多行的程序,沒有運用封裝和工程,顯得程序比較冗長。

10、但是有個嚴(yán)重的問題就是每次程序重新啟動的時候上次錄入的信息和記錄就全部清零,必須重新錄入才可以進(jìn)行出、入庫處理,這樣就使程序喪失了實用性,所以針對這個問題我特意書寫的錄入代碼,讓程序可以在一開始運行的時候就把庫存清單里的信息先讀入系統(tǒng),然后再在這個基礎(chǔ)上進(jìn)行添加刪除等操作,這樣才能真正做到一個實用的系統(tǒng)。3、 因為系統(tǒng)要求必須把庫存的信息保存到文本文件,這個操作我們課上只做了簡單的介紹,而且憑借現(xiàn)有的知識還有所欠缺,我在查閱了大量資料和請教他人之后才逐步搞懂了這個環(huán)節(jié)。由此經(jīng)過修改寫出了第二個程序,能夠調(diào)用文本文件并且可以進(jìn)行復(fù)雜操作的程序。4、 除此之外,一開始我保存和顯示庫存信息的文件方式

11、也有所欠缺,沒有做到空間的合理利用,經(jīng)過老師的點撥和修改后,我設(shè)立了“string”字符串,讓所有信息以字符串的形式顯示和保存,并控制了每一個字段的長度,這樣在現(xiàn)實的時候就顯得十分美觀,也便于讀取和觀察。5、 之后,我又在這個程序的基礎(chǔ)上,進(jìn)行了進(jìn)一步的延伸。因為程序要求必須把每一個庫存信息都要儲存,為了避免重復(fù)與不好記錄的方面,我只好把添加信息的菜單隱藏,放于后臺處理。對于用戶界面只對現(xiàn)有庫存信息進(jìn)行顯示、查找、入庫、出庫的操作。如果想要添加信息,那就得在“庫存菜單.txt”的這個文件里直接進(jìn)行輸入。這樣修改的好處在于,我可以把信息做的系統(tǒng)化,并且能夠記錄每一次的出、入庫記錄,并加以顯示。6

12、、 最后,我將四個類封裝處理,設(shè)立工程,程序模塊化設(shè)計,真正的體現(xiàn)了一個c+程序設(shè)計的思想。六、用戶手冊1、顯示菜單在這里輸入“1、2、3、4、5”進(jìn)行菜單操作,每一步都會有系統(tǒng)字樣提示,根據(jù)提示進(jìn)行信息錄入即可。如果錄入錯誤,系統(tǒng)會有自動提示,重新錄入正確信息即可。2、顯示信息。 在主菜單中直接輸入數(shù)字1,進(jìn)行菜單顯示,因為顯示信息較多,所以最好調(diào)整一下顯示框大小,避免出現(xiàn)顯示錯位的現(xiàn)象。 顯示后,根據(jù)菜單提示輸入“1”返回主菜單,輸入“2”退出程序。(以下相同,不再提示)3、查找物品信息在主菜單中直接輸入數(shù)字2,進(jìn)行物品查找,在查找選項中可以通過入庫編碼和設(shè)備名稱兩樣分別進(jìn)行查找。查找后,

13、顯示該物品的詳細(xì)信息并且顯示近期來針對于本物品的出、入庫信息。4、出、入庫物品信息在主菜單中直接輸入數(shù)字3或4,進(jìn)行物品出、入庫。選擇物品出、入庫后,系統(tǒng)會自動把所有庫存信息進(jìn)行顯示,讓用戶可以看到能夠入庫的設(shè)備名稱和入庫編碼,然后進(jìn)行選擇。首先要選擇進(jìn)行出、入庫的設(shè)備,之后按提示輸入出、入庫的數(shù)量。(注:在出庫時,如果出庫數(shù)量大于現(xiàn)有庫存就會提示“庫存不足”)。等到屏幕顯示“入(出)庫成功!”時,物品入(出)庫成功。5、退出程序在主菜單中直接輸入數(shù)字5,退出程序。七、附錄: (程序源代碼)1、Device類#include<iostream>#include<fstream

14、>#include<cstring>#include<windows.h>#include<string>using namespace std;class Device public:bool mask11;/定義字段是否應(yīng)該被屏蔽(true:字段無效,false:字段有效)void *fs;/指向全局fileSystem對象的指針string strCategory; /設(shè)備分類:1-普通電視機(jī), 2-DVD, 3-DVD電視機(jī)string strName; /貨物名稱string strDate; /日期/string strSize;/僅對TV

15、有效,TV尺寸/string strType;/僅對TV有效,TV類型/string strCharactor;/僅對DVD有效,DVD規(guī)格string strWeight; /重量string strPrice; /價格string strBrand; /品牌int nTotal; /數(shù)量 string strCode; /入庫編碼Device();virtual Device();virtual void Update(int n) = 0;/ 出入庫n臺設(shè)備的操作,n>0:入庫;n<0:出庫virtual void Show() = 0;/ 展示當(dāng)前庫存和出入庫記錄;#inc

16、lude "stdafx.h"#include "Device.h"Device:Device()Device:Device()2、DVD類#include "Device.h"class DVD : virtual public Device public:string strCharactor;/僅對DVD有效,規(guī)格DVD();virtual DVD();void Update(int n);/ 入庫n臺設(shè)備的操作void Show();/ 展示當(dāng)前庫存和出入庫記錄;#include "stdafx.h"#in

17、clude "DVD.h"#include "fileSystem.h"DVD:DVD()strCategory = "DVD"for (int i = 0; i < FIELDNUM; i +)maski = false;mask3 = true;mask4 = true;DVD:DVD()void DVD:Update(int n)/ 出入庫n臺設(shè)備的操作nTotal += n;char bufBUFSIZE;if (n > 0) sprintf(buf, "%s (%s) 入庫 %d 臺。 ",

18、strName.c_str(), strCategory.c_str(), n); else sprintf(buf, "%s (%s) 出庫 %d 臺。 ", strName.c_str(), strCategory.c_str(), -n);(fileSystem *)fs)->Save(buf);/進(jìn)行物品記錄保存void DVD:Show()/ 展示當(dāng)前庫存和出入庫記錄/顯示當(dāng)前庫存/顯示標(biāo)題行for(int i = 0; i < FIELDNUM; i +)if (maski) continue;cout << (fileSystem *)

19、fs)->strTitlesi;cout << endl;/顯示全部數(shù)據(jù)string valuesFIELDNUM;char totalBUFSIZE;values0 = strCategory;values1 = strName;values2 = strDate;values6 = strPrice;values7 = strWeight;values8 = strBrand;sprintf(total, "%d", nTotal);values9 = total;values10 = strCode;values3 = "NA"v

20、alues4 = "NA"values5 = strCharactor;for(int ii = 0; ii < FIELDNUM; ii +)if (maskii) continue;for(int j = valuesii.size(); j < COL_WIDTH; j +) valuesii.append(" ");cout << valuesii;cout << endl;/顯示出入庫記錄cout << endl << "出入庫記錄如下:" << end

21、l;(fileSystem *)fs)->ShowLog(strName);3、TV類#include "Device.h"#include<cstring>#include<windows.h>#include<string>class TV : virtual public Device public:string strSize;/僅對TV有效, 尺寸string strType;/僅對TV有效,類型TV();virtual TV();void Update(int n);/ 出入庫n臺設(shè)備的操作,n>0:入庫;n<

22、;0:出庫void Show();/ 展示當(dāng)前庫存和出入庫記錄;#include "stdafx.h"#include "TV.h"#include "fileSystem.h"TV:TV()strCategory = "普通電視機(jī)"for (int i = 0; i < FIELDNUM; i +)maski = false;mask5 = true;TV:TV()void TV:Update(int n)/ 出入庫n臺設(shè)備的操作nTotal += n;char bufBUFSIZE;if (n >

23、0) sprintf(buf, "%s (%s) 入庫 %d 臺。 ", strName.c_str(), strCategory.c_str(), n); else sprintf(buf, "%s (%s) 出庫 %d 臺。 ", strName.c_str(), strCategory.c_str(), -n);(fileSystem *)fs)->Save(buf);void TV:Show()/ 展示當(dāng)前庫存和出入庫記錄/顯示當(dāng)前庫存/顯示標(biāo)題行for(int i = 0; i < FIELDNUM; i +)if (maski)

24、continue;cout << (fileSystem *)fs)->strTitlesi;cout << endl;/顯示全部數(shù)據(jù)string valuesFIELDNUM;char totalBUFSIZE;values0 = strCategory;values1 = strName;values2 = strDate;values6 = strPrice;values7 = strWeight;values8 = strBrand;sprintf(total, "%d", nTotal);values9 = total;values1

25、0 = strCode;values3 = strSize;values4 = strType;values5 = "NA"for(int ii = 0; ii < FIELDNUM; ii +)if (maskii) continue;for(int j = valuesii.size(); j < COL_WIDTH; j +) valuesii.append(" ");cout << valuesii;cout << endl;/顯示出入庫記錄cout << endl << "出

26、入庫記錄如下:" << endl;(fileSystem *)fs)->ShowLog(strName);4、TV_DVD類#include "DVD.h"#include "TV.h"class TV_DVD : virtual public TVpublic:DVD innerDvd;TV_DVD();virtual TV_DVD();void Show();/ 展示當(dāng)前庫存和出入庫記錄;#include "stdafx.h"#include "TV_DVD.h"#include &

27、quot;fileSystem.h"TV_DVD:TV_DVD()strCategory = "DVD電視機(jī)"for (int i = 0; i < FIELDNUM; i +)maski = false;TV_DVD:TV_DVD()void TV_DVD:Show()/ 展示當(dāng)前庫存和出入庫記錄/顯示當(dāng)前庫存/顯示標(biāo)題行for(int i = 0; i < FIELDNUM; i +)if (maski) continue;cout << (fileSystem *)fs)->strTitlesi;cout << en

28、dl;/顯示全部數(shù)據(jù)string valuesFIELDNUM;char totalBUFSIZE;values0 = strCategory;values1 = strName;values2 = strDate;values6 = strPrice;values7 = strWeight;values8 = strBrand;sprintf(total, "%d", nTotal);values9 = total;values10 = strCode;values3 = strSize;values4 = strType;values5 = innerDvd.strCh

29、aractor;for(int ii = 0; ii < FIELDNUM; ii +)if (maskii) continue;for(int j = valuesii.size(); j < COL_WIDTH; j +) valuesii.append(" ");cout << valuesii;cout << endl;/顯示出入庫記錄cout << endl << "出入庫記錄如下:" << endl;(fileSystem *)fs)->ShowLog(strNam

30、e);5、fileSystem函數(shù)#include<iostream>#include<fstream>#include<cstring>#include<windows.h>#include<string>using namespace std;#define FIELDNUM11/庫存數(shù)據(jù)文件的字段數(shù)量#define BUFSIZE100/庫存數(shù)據(jù)文件的每行最大字?jǐn)?shù)#define COL_WIDTH 12 /用于顯示的列寬#define MAXDEVICE20/系統(tǒng)最大允許設(shè)備數(shù)量#include "Device.h&q

31、uot;#include "TV.h"#include "DVD.h"#include "TV_DVD.h"#include "time.h"#include "stdio.h"class fileSystem public:void ShowLog(string strName);void Save(string strMsg);void Show();string strTitlesFIELDNUM;void InitAllDevices();void * devsMAXDEVICE;int

32、 devsCategoryMAXDEVICE;/設(shè)備分類:1-普通電視機(jī), 2-DVD, 3-DVD電視機(jī)int nDevs;/庫存設(shè)備個數(shù)string strKCFileName;/庫存數(shù)據(jù)文件名string strLogFileName;/出入庫日志文件名fileSystem();virtual fileSystem();private:void release();string strValuesFIELDNUM;#include "stdafx.h"#include "fileSystem.h"using namespace std;fileSy

33、stem:fileSystem()strKCFileName = "庫存清單.txt"strLogFileName = "出入庫日志.txt"nDevs = 0;InitAllDevices();/Show();/Save("save");/ShowLog("A型電視機(jī)");/(DVD *)devs5)->Update(-5);/(TV *)devs5)->Show();fileSystem:fileSystem()release();void fileSystem:InitAllDevices()re

34、lease();ifstream in(strKCFileName.c_str();/ 第一行是字段標(biāo)題for (int i = 0; i < FIELDNUM; i +) in >> strTitlesi;for(int j = strTitlesi.size(); j < COL_WIDTH; j +) strTitlesi.append(" ");/cout << strTitlesi;/cout << endl;/ 讀取全部庫存記錄nDevs = 0; bool bRead = true;while (bRead) f

35、or (int i = 0; i < FIELDNUM; i +) in >> strValuesi;if (strValuesi.size() = 0) bRead = false;break;/cout << strValuesi;if (!bRead) break;if (strValues5 = "NA") / create TV classTV *tvTemp = new TV();devsnDevs = tvTemp;tvTemp->strName = strValues1;tvTemp->strDate = strVa

36、lues2;tvTemp->strSize = strValues3;tvTemp->strType = strValues4;tvTemp->strPrice = strValues6;tvTemp->strWeight = strValues7;tvTemp->strBrand = strValues8;tvTemp->nTotal = atoi(strValues9.c_str();tvTemp->strCode = strValues10;devsCategorynDevs = 1;tvTemp->fs = this; else if (

37、strValues3 = "NA") / create DVD classDVD *dvdTemp = new DVD();devsnDevs = dvdTemp;dvdTemp->strName = strValues1;dvdTemp->strDate = strValues2;dvdTemp->strCharactor = strValues5;dvdTemp->strPrice = strValues6;dvdTemp->strWeight = strValues7;dvdTemp->strBrand = strValues8;d

38、vdTemp->nTotal = atoi(strValues9.c_str();dvdTemp->strCode = strValues10;devsCategorynDevs = 2;dvdTemp->fs = this; else / create TV_DVD classTV_DVD *tdTemp = new TV_DVD();devsnDevs = tdTemp;tdTemp->strName = strValues1;tdTemp->strDate = strValues2;tdTemp->strSize = strValues3;tdTemp

39、->strType = strValues4;tdTemp->strPrice = strValues6;tdTemp->strWeight = strValues7;tdTemp->strBrand = strValues8;tdTemp->nTotal = atoi(strValues9.c_str();tdTemp->strCode = strValues10;tdTemp->innerDvd.strCharactor = strValues5;devsCategorynDevs = 3;tdTemp->fs = this;/cout &l

40、t;< endl;nDevs +;in.close();/Show();void fileSystem:release()for (int i = 0; i < nDevs; i +) delete(devsi);devsi = 0;devsCategoryi = 0;nDevs = 0;void fileSystem:Show()/顯示標(biāo)題行for(int i = 0; i < FIELDNUM; i +)cout << strTitlesi;cout << endl;/顯示全部數(shù)據(jù)for (int n = 0; n < nDevs; n +)

41、 string valuesFIELDNUM;char totalBUFSIZE;switch (devsCategoryn) case 1: values0 = (TV *)devsn)->strCategory;values1 = (TV *)devsn)->strName;values2 = (TV *)devsn)->strDate;values6 = (TV *)devsn)->strPrice;values7 = (TV *)devsn)->strWeight;values8 = (TV *)devsn)->strBrand;sprintf(to

42、tal, "%d", (TV *)devsn)->nTotal);values9 = total;values10 = (TV *)devsn)->strCode;values3 = (TV *)devsn)->strSize;values4 = (TV *)devsn)->strType;values5 = "NA"break;case 2:values0 = (DVD *)devsn)->strCategory;values1 = (DVD *)devsn)->strName;values2 = (DVD *)de

43、vsn)->strDate;values6 = (DVD *)devsn)->strPrice;values7 = (DVD *)devsn)->strWeight;values8 = (DVD *)devsn)->strBrand;sprintf(total, "%d", (DVD *)devsn)->nTotal);values9 = total;values10 = (DVD *)devsn)->strCode;values3 = "NA"values4 = "NA"values5 = (DV

44、D *)devsn)->strCharactor;break;case 3:values0 = (TV_DVD *)devsn)->strCategory;values1 = (TV_DVD *)devsn)->strName;values2 = (TV_DVD *)devsn)->strDate;values6 = (TV_DVD *)devsn)->strPrice;values7 = (TV_DVD *)devsn)->strWeight;values8 = (TV_DVD *)devsn)->strBrand;sprintf(total, &q

45、uot;%d", (TV_DVD *)devsn)->nTotal);values9 = total;values10 = (TV_DVD *)devsn)->strCode;values3 = (TV_DVD *)devsn)->strSize;values4 = (TV_DVD *)devsn)->strType;values5 = (TV_DVD *)devsn)->innerDvd.strCharactor;break;default:break;for(int i = 0; i < FIELDNUM; i +)for(int j = va

46、luesi.size(); j < COL_WIDTH; j +) valuesi.append(" ");cout << valuesi;cout << endl;void fileSystem:Save(string strMsg)/將全部庫存數(shù)據(jù)更新至文件ofstream out(strKCFileName.c_str() );/顯示標(biāo)題行for(int i = 0; i < FIELDNUM; i +)for(int j = strTitlesi.size(); j < COL_WIDTH; j +) strTitlesi.

47、append(" ");out << strTitlesi;out << endl;/顯示全部數(shù)據(jù)for (int n = 0; n < nDevs; n +) string valuesFIELDNUM;char totalBUFSIZE;switch (devsCategoryn) case 1: values0 = (TV *)devsn)->strCategory;values1 = (TV *)devsn)->strName;values2 = (TV *)devsn)->strDate;values6 = (TV

48、*)devsn)->strPrice;values7 = (TV *)devsn)->strWeight;values8 = (TV *)devsn)->strBrand;sprintf(total, "%d", (TV *)devsn)->nTotal);values9 = total;values10 = (TV *)devsn)->strCode;values3 = (TV *)devsn)->strSize;values4 = (TV *)devsn)->strType;values5 = "NA"bre

49、ak;case 2:values0 = (DVD *)devsn)->strCategory;values1 = (DVD *)devsn)->strName;values2 = (DVD *)devsn)->strDate;values6 = (DVD *)devsn)->strPrice;values7 = (DVD *)devsn)->strWeight;values8 = (DVD *)devsn)->strBrand;sprintf(total, "%d", (DVD *)devsn)->nTotal);values9 =

50、 total;values10 = (DVD *)devsn)->strCode;values3 = "NA"values4 = "NA"values5 = (DVD *)devsn)->strCharactor;break;case 3:values0 = (TV_DVD *)devsn)->strCategory;values1 = (TV_DVD *)devsn)->strName;values2 = (TV_DVD *)devsn)->strDate;values6 = (TV_DVD *)devsn)->st

51、rPrice;values7 = (TV_DVD *)devsn)->strWeight;values8 = (TV_DVD *)devsn)->strBrand;sprintf(total, "%d", (TV_DVD *)devsn)->nTotal);values9 = total;values10 = (TV_DVD *)devsn)->strCode;values3 = (TV_DVD *)devsn)->strSize;values4 = (TV_DVD *)devsn)->strType;values5 = (TV_DVD

52、*)devsn)->innerDvd.strCharactor;break;default:break;for(int i = 0; i < FIELDNUM; i +)for(int j = valuesi.size(); j < COL_WIDTH; j +) valuesi.append(" ");out << valuesi;out << endl;out.close();/增加一條出入庫記錄ifstream log(strLogFileName.c_str(), ios:in | ios:out);ostream olog

53、(log.rdbuf();olog.seekp(0, ios:end);time_t t = time(0);char tmp64;strftime(tmp, sizeof(tmp), " %Y-%m-%d %H:%M:%S", localtime(&t);olog << strMsg << tmp << endl;log.close();/ 顯示指定名稱設(shè)備的全部出入庫記錄void fileSystem:ShowLog(string strName)strName += " "ifstream in(strL

54、ogFileName.c_str();char bufBUFSIZE;char nameBUFSIZE;string strTemp = ""while (in.getline(buf, BUFSIZE) strncpy(name, buf, strName.size();namestrName.size() = 0;if (strName = name) cout << buf << endl;in.close();6、主函數(shù)#include "stdafx.h"#include<iostream>#include<fstream>#include<cstring>#include<windows.h>#include<stri

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論