物資管理系統(tǒng)(含代碼)_第1頁
物資管理系統(tǒng)(含代碼)_第2頁
物資管理系統(tǒng)(含代碼)_第3頁
物資管理系統(tǒng)(含代碼)_第4頁
物資管理系統(tǒng)(含代碼)_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上青島理工大學(xué)琴島學(xué)院設(shè) 計 報 告課題名稱:物資管理系統(tǒng)學(xué) 院:青島理工大學(xué)琴島學(xué)院專業(yè)班級:嵌入式技術(shù)與應(yīng)用14-1班學(xué) 號:學(xué) 生: 指導(dǎo)教師: 青島理工大學(xué)琴島學(xué)院教務(wù)處 年 月 日學(xué) 生指導(dǎo)教師課題名稱物資管理系統(tǒng)設(shè)計時間設(shè)計地點8-212設(shè)計目的1. 使學(xué)生加深對講授知識的理解、能夠綜合應(yīng)用數(shù)組、函數(shù)、結(jié)構(gòu)體、指針、文件等知識解決實際問題;2. 培養(yǎng)學(xué)生獨立調(diào)試程序的能力,團(tuán)隊協(xié)作的能力;3累積編程經(jīng)驗,書寫設(shè)計報告的規(guī)范,為編寫項目打下良好基礎(chǔ)。指導(dǎo)教師評 語系部教研室意 見一、選題背景及意義物資管理是一般工業(yè)、商業(yè)企業(yè)生產(chǎn)管理環(huán)節(jié)中重要的一環(huán),需要對物資

2、基本信息管理、物資調(diào)配信息等進(jìn)行完整的監(jiān)控。物資入庫首先要登記物資的基本信息,包括物資的種類、名稱、型號、單位、單價等;然后登記物資入庫信息,包括物資基本信息、入庫地點、入庫人、經(jīng)辦人、數(shù)量等;根據(jù)物資的入庫、出庫過程的綜合,得到各種物資的余額信息,方便進(jìn)行后續(xù)工作。因此物資管理信息系統(tǒng)需要紀(jì)錄物資流通的全過程。 加強(qiáng)物資管理,不但有算得出、看得到的效益,還可以大大提高管理隊伍的素質(zhì),加強(qiáng)職工的增產(chǎn)節(jié)約意識、愛護(hù)財產(chǎn)意識和學(xué)習(xí)科技的意識,使科學(xué)管理形成共識,并可以減少物資設(shè)備各個環(huán)節(jié)上的矛盾。信息已成為繼勞動力、土地、資本之后的又一大資源。誰控制的信息越多,誰利用信息資源的效率越高,誰就會在各

3、方面的競爭中占有一席之地,誰就會有更多的優(yōu)勢。物資供應(yīng)部門是企業(yè)與生產(chǎn)單位之間的橋梁、紐帶,是企業(yè)正常生產(chǎn)的物資保障部門。正因為供應(yīng)部門是關(guān)鍵的中轉(zhuǎn)環(huán)節(jié),建立一套物資管理信息系統(tǒng)對于如何有效的把本單位生產(chǎn)所需的生產(chǎn)資料及時、保質(zhì)保量的供應(yīng)上去,有著重要的意義。從微觀上講,建立一套物資管理信息系統(tǒng)能夠加快物資的周轉(zhuǎn)速度,提高生產(chǎn)效率,從而加強(qiáng)了管理的信息化手段,提高了本單位的經(jīng)濟(jì)效益。從宏觀上講,順應(yīng)了社會的信息化、社會化潮流,縮短了整個社會化大生產(chǎn)的周期。目前存在的主要問題是:(一)根據(jù)各三級單位所報材料明細(xì)逐個與庫存賬本對照查閱,進(jìn)行庫平,即庫中有其所需材料則開據(jù)料單從庫中領(lǐng)取,若庫中無,則

4、通知采購人員采購。庫中物資種類繁多,查對繁瑣,易出錯。(二)從開據(jù)發(fā)料單到每月結(jié)帳、清冊都是手工操作,計算器加算盤,效率低且準(zhǔn)確率不高。單位配備的計算機(jī)僅局限于打字,做報表,不能開單據(jù),計算機(jī)應(yīng)有的功能沒有充分發(fā)揮。所以想設(shè)計個系統(tǒng)來提高工作效率,為學(xué)校、企業(yè)節(jié)省大部分開支用來投資系統(tǒng)的開發(fā),這樣以來節(jié)省了人力物力,也節(jié)省了資源的消耗,實現(xiàn)了低碳發(fā)展。二、需求分析學(xué)校的計算機(jī)不僅可以安裝Windows和UNIX的運(yùn)行環(huán)境,而且有足夠的空間可以安裝運(yùn)行平臺JAVA虛擬機(jī)、數(shù)據(jù)庫ORACLE、服務(wù)器TOMCAT和各類編程工具例如ECLIPSE,NETBEANS,在編程環(huán)境上提供了可靠的支持;我們編

5、程人員方面,可以運(yùn)用以前所學(xué)的各種開發(fā)軟件的計算機(jī)知識和管理知識,加上不斷的學(xué)習(xí),為系統(tǒng)的開發(fā)提供了必要的技術(shù)保障。我們就應(yīng)用了JAVA EE企業(yè)級開發(fā)框架以及ORACLE 數(shù)據(jù)庫系統(tǒng)軟件。根據(jù)系統(tǒng)功能、性能及實現(xiàn)系統(tǒng)的各項約束條件,根據(jù)新系統(tǒng)目標(biāo)來衡量所需的技術(shù)是否具備,本系統(tǒng)是一個數(shù)據(jù)庫管理和查詢的系統(tǒng),現(xiàn)有的技術(shù)以較為成熟,硬件、軟件的性能要求、環(huán)境條件等各項條件良好,估計利用現(xiàn)有技術(shù)條件應(yīng)完全可以達(dá)到該系統(tǒng)的功能目標(biāo)。同時,考慮給予的開發(fā)期限也較為充裕,預(yù)計系統(tǒng)是可以在規(guī)定期限內(nèi)完成開發(fā)。系統(tǒng)的效益可以從經(jīng)濟(jì)效益和社會效益兩方面考慮。對于物資管理系統(tǒng)則應(yīng)著重分析其社會效益。例如,系統(tǒng)投

6、入運(yùn)行后可以使物資管理實現(xiàn)科學(xué)化、規(guī)范化。增強(qiáng)了工作人員對物資管理能力、提高了工作效率。企業(yè)間的競爭說到底是人的競爭,但人力資源是企業(yè)中最難管理的資源,它涉及到企業(yè)的組織機(jī)構(gòu)、企業(yè)文化、人的心理等方方面面;從強(qiáng)調(diào)對物的管理轉(zhuǎn)向?qū)θ说墓芾?,是企業(yè)管理的一個劃時代的進(jìn)步。如何刻意挖掘蘊(yùn)藏在員工當(dāng)中的巨大能力,發(fā)掘充滿活力和生機(jī)的人力資源,將人視為可以開發(fā)和增值的資源去投資和經(jīng)營,是當(dāng)前企業(yè)急需解決的課題。 傳統(tǒng)的人事管理對人力資源的管理是非量化的,是人事部門最基礎(chǔ)業(yè)務(wù)的信息管理;而真正的人力資源管理系統(tǒng)將人力資源管理過程數(shù)字化,并結(jié)合知識管理、辦公自動化、項目管理等技術(shù),將人力資源管理提升到戰(zhàn)略級

7、別的管理層次,是一個針對企業(yè)人力資源的設(shè)計系統(tǒng)。 通過以上從技術(shù)、經(jīng)濟(jì)、實踐三方面的研究與調(diào)查,我們可以確定該物資管理系統(tǒng)是可行的。三、概要設(shè)計1、數(shù)據(jù)庫設(shè)計本系統(tǒng)中主要涉及數(shù)據(jù)表如下:物資信息表:主要包含編號、物資名稱、單價、數(shù)量等字段。其具體表結(jié)構(gòu)如圖所示:物資信息表字段名字段類型字段寬度字段說明num字符型10編號name字符型20物資名稱price數(shù)值型5單價count數(shù)值型5數(shù)量total數(shù)值型20總金額2、系統(tǒng)功能模塊概述本系統(tǒng)能夠?qū)崿F(xiàn)一個人機(jī)交互,操作簡單的物資管理系統(tǒng),主要分為兩個用戶角色,用戶和物資,主要功能如圖所示:輸入指令06開始輸入記錄修改記錄查找記錄統(tǒng)計記錄刪除記錄排

8、序記錄退出系統(tǒng) 系統(tǒng)功能模塊圖各功能模塊描述如下:(1)輸入記錄:本模塊主要完成物資記錄的輸入,主要包含編號、名稱、單價和數(shù)量,在輸入過程中要注意各個字段的類型,并且要進(jìn)行數(shù)據(jù)的合法性驗證。(2)查找記錄:主要用來查找物資的信息,該模塊能夠通過物資編號來查找物資記錄信息。(3)刪除記錄:通過物資編號來進(jìn)行刪除物資信息。(4)修改記錄:通過編號修改物資信息。(5)排序記錄:按總金額進(jìn)行排序。(6)統(tǒng)計記錄:統(tǒng)計物資數(shù)量。(0)退出系統(tǒng)。四、詳細(xì)設(shè)計 (一) 主函數(shù)一般是設(shè)計簡潔,只提供輸入,處理和輸出部分的函數(shù)調(diào)用。 (1) /*商品結(jié)構(gòu)體*/struct commdityint num; /編

9、號char name20;/商品名稱double price;/單價double count;/數(shù)量double total;/總金額 ;struct commdity comm50;/定義結(jié)構(gòu)體數(shù)組(2)/*函數(shù)申明*/void in();/輸入物資信息函數(shù)void show();/顯示物資信息函數(shù)void order();/按總金額排隊函數(shù)void del();/刪除物資信息函數(shù)void modify();/修改物資信息函數(shù)void menu();/主菜單函數(shù)void total();/統(tǒng)計總物資數(shù)函數(shù)void search();/查找物資信息函數(shù)(5)/*主函數(shù)*/void main()

10、 int n;menu();scanf(%d,&n);while(n)數(shù)據(jù)類型case 1:in();/輸入物資信息break;case 2:search();/尋找物資信息break; case 3:del(); /刪除物資信息break;case 4:modify();/修改物資信息break;case 5:order();/排序物資break;case 6:total();/統(tǒng)計物資數(shù)量break;default:break;getch();menu();/返回菜單界面scanf(%d,&n);return ;(二)各功能模塊設(shè)計(1)/菜單模塊void menu()system(CLS

11、);/清屏函數(shù)printf(nnnnn);printf(tt|*物資管理系統(tǒng)*|n);printf(tt|t 1 輸入記錄 |n);printf(tt|t 2 查找記錄 |n);printf(tt|t 3 刪除記錄 |n);printf(tt|t 4 修改記錄 |n);printf(tt|t 5 排序記錄 (按總金額) |n);printf(tt|t 6 統(tǒng)計記錄 |n);printf(tt|t 0 退出系統(tǒng) |n);printf(tt|*|n);printf(ttt 選擇(0-6):);(2)/顯示模塊/基本流程,先把文件中的數(shù)據(jù)依次讀入到物資結(jié)構(gòu)體中,/并依次顯示void show() F

12、ILE *fp; int i,m=0; fp=fopen(data.txt,a+); while(!feof(fp)if(fread(&commm ,LEN,1,fp)=1) m+; fclose(fp); printf(編號 物資名稱 單價 數(shù)量 總金額tn); for(i=0;im;i+) printf(FORMAT,DATA);/將信息按指定格式打?。?)/查找記錄模塊/本模塊的流程是先打開文件并讀取里面的數(shù)據(jù)到物資結(jié)構(gòu)體數(shù)組緩沖區(qū)中/用戶輸入編號與物資結(jié)構(gòu)體中緩沖區(qū)的數(shù)據(jù)進(jìn)行比較,如果有則顯示,沒有則輸出提示信息void search()FILE *fp;int num,i,m=0;c

13、har ch2;/以追加 和寫的方式打開文件if(fp=fopen(data.txt,a+)=NULL)printf(不能打開文件!n);return ;/把文件中的數(shù)據(jù)依次讀入到結(jié)構(gòu)體中,并關(guān)閉文件while(!feof(fp)if(fread(&commm,LEN,1,fp)=1)m+;fclose(fp);/如果沒有記錄,則返回,否則執(zhí)行顯示操作if(m=0)printf( 沒有記錄!n);return;else/用戶輸入編號 printf(請輸入編號:);scanf(%d,&num);/用循環(huán)語句來比較用戶輸入的編號是否存在for(i=0;im;i+)if(num=commi.num)

14、printf(已經(jīng)找到該記錄,是否顯示?(y/n));scanf(%s,ch);if(strcmp(ch,y)=0|strcmp(ch,Y)=0)printf(編號 物資名稱 單價 數(shù)量 總金額tn);printf(FORMAT,DATA);break;elsereturn;/如果上面的循環(huán)語句執(zhí)行完都沒有找到 ,則會執(zhí)行本判斷語句if(i=m)printf(沒有找到相關(guān)記錄!n);(4)/刪除物資模塊/本模塊的流程為先打開文件,并把數(shù)據(jù)寫到物資結(jié)構(gòu)體數(shù)組緩沖區(qū)中去/用戶輸入相關(guān)編號與結(jié)構(gòu)體數(shù)組中的數(shù)據(jù)相比較,如果存在則把結(jié)構(gòu)體數(shù)組緩沖區(qū)進(jìn)行修改/把修改后的結(jié)構(gòu)體數(shù)組緩沖區(qū)再次寫入文件void

15、 del()FILE *fp;int num,i,j,m=0;char ch2;/以追加和讀的方式打開文件if(fp=fopen(data.txt,a+)=NULL)printf(不能打開文件n);return;/把文件中的內(nèi)容依次寫到物資結(jié)構(gòu)體數(shù)組中,并記錄信息條數(shù),最后關(guān)閉文件while(!feof(fp)if(fread(&commm,LEN,1,fp)=1)m+;fclose(fp);/根據(jù)物資信息條數(shù)進(jìn)行相應(yīng)的處理if(m=0)printf(沒有記錄!n);return;else /用戶輸入編號printf(請輸入編號:);scanf(%d,&num);/用循環(huán)語句來比較是否有用戶輸

16、入的記錄for(i=0;im;i+)if(num=commi.num)break;/沒找到用戶需要的記錄則返回if(i=m)printf(沒有找到相關(guān)記錄);getchar();return;/找到用戶需要的記錄,要求用戶輸入選擇printf(該記錄已經(jīng)找到,是否刪除?(y/n)); scanf(%s,ch);if(strcmp(ch,y)=0|strcmp(ch,Y)=0) for(j=i;jm;j+)/從找到的記錄起,依次把他后面的數(shù)據(jù)覆蓋前面的數(shù)據(jù)commj=commj+1;m-;/記錄條數(shù)減一個printf(成功刪除!n);/以寫的方式打開文件if(fp=fopen(data.txt,

17、w)=NULL)printf(不能打開n);return;/把物資結(jié)構(gòu)體數(shù)組中的數(shù)據(jù)依次寫入文件for(j=0;jm;j+)if(fwrite(&commj,LEN,1,fp)!=1) printf(保存出錯!n);return;printf(保存成功!n);fclose(fp);(5)/統(tǒng)計模塊void total() FILE *fp;int m=0;/以追加和讀的方式打開一個文件if(fp=fopen(data.txt,a+)=NULL)printf( 不能打開文件n);return;/把文件中的內(nèi)容依次寫入緩沖區(qū),統(tǒng)計記錄條數(shù),并關(guān)閉文件while(!feof(fp) if(fread

18、(&commm,LEN,1,fp)=1)m+;fclose(fp);/根據(jù)記錄條數(shù)做出相應(yīng)選擇if(m=0)printf(沒有記錄n);return;printf(共有%d條記錄n,m);五、運(yùn)行與測試1、系統(tǒng)主界面2、對物資信息的輸入3、對物資信息的查找4對物資信息的刪除5、對物資信息的修改6、對物資信息排序7、對物資信息統(tǒng)計六、遇到的問題及解決辦法1、書寫標(biāo)識符時,忽略了大小寫字母的區(qū)別。解決辦法;編譯程序把C和c認(rèn)為是兩個不同的變量名,而顯示出錯信息。C語言認(rèn)為大寫字母和小寫字母是兩個不同的字符。2、書寫標(biāo)識符時,忽略了中英文標(biāo)點符號的不同,而顯示錯誤。C語言不讀取中文標(biāo)點符號報錯。3、

19、忽略了變量的類型,進(jìn)行了不合法的運(yùn)算。解決辦法;%是求余運(yùn)算,得到a/b的整余數(shù)。4、在編寫程序是,消耗內(nèi)存較大。解決方法:編寫程序是,打開一個文件夾后,編輯完一定要緊跟著關(guān)閉文件夾,否則打開的文件夾都會占用內(nèi)存5、在編程當(dāng)中,由于要輸入大量的程序,所以經(jīng)常出現(xiàn)很多不讓人注意的小錯誤。 例如大小寫 int寫成Int.總 結(jié)這個系統(tǒng)實現(xiàn)了,對簡單的物資進(jìn)行管理,例如:輸入物資信息,修改物資信息,刪除物資信息,對物資信息進(jìn)行排序等等,大大提高了我們的辦公效率,節(jié)省了人力物力,向綠色經(jīng)濟(jì)的方向靠近。對于這個系統(tǒng)還有很不不足之處,例如:給有給系統(tǒng)設(shè)置開啟密碼、排序后無法顯示排序后的物資列表等等,希望在

20、以后的學(xué)習(xí)中,不斷改進(jìn)、完善這個系統(tǒng)。課程設(shè)計是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)技術(shù)發(fā)展的日新日異,當(dāng)今計算機(jī)應(yīng)用在是生活中可以說得是無處不在。因此作為二十一世紀(jì)的大學(xué)來說掌握計算機(jī)開發(fā)技術(shù)十分重要的?;仡櫰鸫舜握n程設(shè)計,至今我仍感慨頗多,的確從拿到題目到完成整個編程,從理論到實踐,在整整半個學(xué)期的日子里,可以學(xué)到很多很多的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)

21、的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,比如說結(jié)構(gòu)體通過這次課程設(shè)計之后,一定把以前所學(xué)過的知識重新溫故。這次課程設(shè)計終于順利完成了,在設(shè)計中遇到了很多編程問題,最后在郭老師的辛勤指導(dǎo)下,終于游逆而解。同時,在郭老師的身上我學(xué)得到很多實用的知識,在次我表示感謝!同時,對給過我?guī)椭乃型瑢W(xué)和各位指導(dǎo)老師再次表示忠心的感謝在課程設(shè)計過程中,我學(xué)到了很

22、多人生的哲理,懂得怎么樣去制定計劃,怎么樣去實現(xiàn)這個計劃,并掌握了在執(zhí)行過程中怎么樣去克服心理上的不良情緒,黑夜過去了,我們收獲的是黎明。在本次實踐中,給我印象最為深刻的是在文件刪除程序的編譯過程中,先有我的各個子程序都已經(jīng)編輯成功,那么這最后的程序就將是我成功的關(guān)鍵。老天不會讓我太過順利,他在這最后的時刻設(shè)置的障礙,是要考驗我的能力,他要置我于死地?在這個問題的解決上,我打了退堂鼓,我不能忍受長時間的無功而反,時間正在消磨我的意志。沒有了柳暗花明的一天,那么我怎么能說經(jīng)受住了考驗?謝謝老師的那句話,她說:人力有所不能及,然而,人的精神是不會敗倒的。我鼓起勇氣,到處問,到處查資料,黃天不負(fù)有心

23、人,在一篇文章上,終于看到了我所特別要求的函數(shù),我實現(xiàn)了組合是關(guān)鍵的理論。不得不說這是精神的勝利,是永不言敗的精神讓我的程序重見天日。謝謝給我指點迷津的老師。我們的課程設(shè)計結(jié)束了,但是它留給我的印象是不可磨滅的。無論我以后會不會涉及到C語言程序編譯的研究,我想,我至少掌握了一種系統(tǒng)的研究方法,我們學(xué)習(xí)的目的就在于運(yùn)用,我們運(yùn)用這種研究方法的時候會很多,我最后要感謝課程設(shè)計,它的確教會我很多。參考書目:1 譚浩強(qiáng),C語言程序設(shè)計(第四版)M,清華大學(xué)出版社,2008年2 趙克林,C語言實例教程重慶:西南師范大學(xué)出版社,20063 楊正校,C語言程序設(shè)計南京:河海大學(xué)出版社,20084 謝樂軍,C

24、語言程序設(shè)計及應(yīng)用北京:冶金工業(yè)出版社,2004源代碼/庫文件包含#include/輸入輸出函數(shù)庫#include/常用錯誤控制程序庫#include/調(diào)用dos控制臺i/o庫#include/msdos和8086調(diào)用的一些常量和函數(shù)庫#include/串操作和內(nèi)存操作函數(shù)庫/宏定義#define LEN sizeof(struct commdity)#define FORMAT %-8d%-15s%-12.1lf%-12.1lf%-12.1lf%n#define DATA commi.num,,commi.price,commi.count,commi.total/物資結(jié)

25、構(gòu)體struct commdityint num; /編號char name20;/物資名稱double price;/單價double count;/數(shù)量double total;/總金額 ;struct commdity comm50;/定義結(jié)構(gòu)體數(shù)組/函數(shù)申明void in();/輸入物資信息函數(shù)void show();/顯示物資信息函數(shù)void order();/按總金額排隊函數(shù)void del();/刪除物資信息函數(shù)void modify();/修改物資信息函數(shù)void menu();/主菜單函數(shù)void total();/統(tǒng)計總物資數(shù)函數(shù)void search();/查找物資信息函

26、數(shù)/主函數(shù)void main() int n;menu();scanf(%d,&n);while(n)switch(n)/問題switch()中的數(shù)據(jù)類型是什么?答案:是常量表達(dá)式,可以是任何數(shù)據(jù)類型case 1:in();/輸入物資信息break;case 2:search();/尋找物資信息break; case 3:del(); /刪除物資信息break;case 4:modify();/修改物資信息break;case 5:order();/排序物資break;case 6:total();/統(tǒng)計物資數(shù)量break;default:break;getch();menu();/返回菜單界

27、面scanf(%d,&n);return ;/被調(diào)函數(shù)體/菜單模塊void menu()system(CLS);/清屏函數(shù)printf(nnnnn);printf(tt|*物資管理系統(tǒng)*|n);printf(tt|t 1 輸入記錄 |n);printf(tt|t 2 查找記錄 |n);printf(tt|t 3 刪除記錄 |n);printf(tt|t 4 修改記錄 |n);printf(tt|t 5 排序記錄 (按總金額) |n);printf(tt|t 6 統(tǒng)計記錄 |n);printf(tt|t 0 退出系統(tǒng) |n);printf(tt|*|n);printf(ttt 選擇(0-6):)

28、;/輸入信息模塊/基本的流程為先判斷是否存在記錄,/若存在則讀到物資結(jié)構(gòu)體中,并顯示之。/ 根據(jù)用戶選擇在文件后面輸入記錄void in()int i,m = 0;char ch2;FILE *fp;/以讀寫可追加的方式打開文件,如果不存在則新建文件if(fp = fopen(data.txt,a+)=NULL)printf(不能打開文件!n);return; /讀取文件到物資結(jié)構(gòu)體數(shù)組中,直到全部讀取完畢while(!feof(fp)if(fread(&commm,LEN,1,fp)=1)m+;fclose(fp);/判斷讀取的數(shù)量,如果為0則表示沒有相關(guān)記錄,反之顯示記錄if(m = 0)

29、printf(沒有找到記錄!n);else system(CLS);show(); /以輸入的方式打開 if(fp=fopen(data.txt,a)=NULL) printf(不能打開文件!n);return; printf(是否輸入?(y/n):); scanf(%s,ch); while(strcmp(ch,Y)=0|strcmp(ch,y)=0)/判斷是否要輸入新信息printf(編號:);scanf(%d,&commm.num);/輸入物資編號for(i=0;im;i+) if(commi.num = commm.num)printf(該記錄已經(jīng)存在,按任意鍵繼續(xù)!);getch()

30、;fclose(fp);return;printf(物資名:);scanf(%s,); /輸入物資名稱printf(單價:);scanf(%lf,&commm.price); /輸入物資單價printf(數(shù)量:);scanf(%lf,&commm.count); /輸入物資數(shù)量commm.total=commm.price * commm.count; /計算出總金額if(fwrite(&commm,LEN,1,fp)!=1) /將新輸入的信息寫入指定的磁盤文件printf(不能保存!); getch(); else printf(%s 已經(jīng)保存!n,)

31、;m+;printf(是否繼續(xù)?(y/n):);/詢問是否繼續(xù)scanf(%s,ch); fclose(fp); printf(OK!n);/顯示模塊/基本流程,先把文件中的數(shù)據(jù)依次讀入到物資結(jié)構(gòu)體中,/并依次顯示void show() FILE *fp; int i,m=0; fp=fopen(data.txt,a+); while(!feof(fp)if(fread(&commm ,LEN,1,fp)=1) m+; fclose(fp); printf(編號 物資名稱 單價 數(shù)量 總金額tn); for(i=0;im;i+) printf(FORMAT,DATA);/將信息按指定格式打印/

32、排序模塊/基本流程,先把文件中的數(shù)據(jù)讀到物資結(jié)構(gòu)體數(shù)組緩沖區(qū)中,/然后進(jìn)行冒泡排序,/最后寫入文件,/在關(guān)閉文件void order() FILE *fp; struct commdity t;/用來作為交換時的中間變量 int i=0,j=0,m=0;/以輸入,讀寫的方式打開文件 if(fp=fopen(data.txt,a+)=NULL) printf(不能打開文件!n);return;/先把文件中的數(shù)據(jù)讀到結(jié)構(gòu)體數(shù)組中去。并得到文件中記錄的個數(shù),再關(guān)閉文件 while(!feof(fp) if(fread(&commm ,LEN,1,fp)=1) m+; fclose(fp); /根據(jù)記

33、錄條數(shù)做出相應(yīng)的選擇,沒記錄則返回,有記錄則排序 if(m=0) printf(沒有記錄!n);return;else /冒泡排序for(i=0;im-1;i+) for(j=i+1;jm;j+) if(commi.total commj.total) t=commi;commi=commj; commj=t;/以寫的方式打開文件if(fp=fopen(data.txt,w)=NULL) printf(不能打開n);return; /將重新排好序的內(nèi)容重新寫入指定的磁盤文件中,并關(guān)閉文件for(i=0;im;i+)if(fwrite(&commi ,LEN,1,fp)!=1) printf(%

34、s 不能保存!n); getch();return;fclose(fp);printf(保存成功n);/查找記錄模塊/本模塊的流程是先打開文件并讀取里面的數(shù)據(jù)到物資結(jié)構(gòu)體數(shù)組緩沖區(qū)中/用戶輸入編號與物資結(jié)構(gòu)體中緩沖區(qū)的數(shù)據(jù)進(jìn)行比較,如果有則顯示,沒有則輸出提示信息void search()FILE *fp;int num,i,m=0;char ch2;/以追加 和寫的方式打開文件if(fp=fopen(data.txt,a+)=NULL)printf(不能打開文件!n);return ;/把文件中的數(shù)據(jù)依次讀入到結(jié)構(gòu)體中,并關(guān)閉文件while(!feof(fp)if(fread(&commm,

35、LEN,1,fp)=1)m+;fclose(fp);/如果沒有記錄,則返回,否則執(zhí)行顯示操作if(m=0)printf( 沒有記錄!n);return;else/用戶輸入編號 printf(請輸入編號:);scanf(%d,&num);/用循環(huán)語句來比較用戶輸入的編號是否存在for(i=0;im;i+)if(num=commi.num)printf(已經(jīng)找到該記錄,是否顯示?(y/n));scanf(%s,ch);if(strcmp(ch,y)=0|strcmp(ch,Y)=0)printf(編號 物資名稱 單價 數(shù)量 總金額tn);printf(FORMAT,DATA);break;else

36、return;/如果上面的循環(huán)語句執(zhí)行完都沒有找到 ,則會執(zhí)行本判斷語句if(i=m)printf(沒有找到相關(guān)記錄!n);/刪除物資模塊/本模塊的流程為先打開文件,并把數(shù)據(jù)寫到物資結(jié)構(gòu)體數(shù)組緩沖區(qū)中去/用戶輸入相關(guān)編號與結(jié)構(gòu)體數(shù)組中的數(shù)據(jù)相比較,如果存在則把結(jié)構(gòu)體數(shù)組緩沖區(qū)進(jìn)行修改/把修改后的結(jié)構(gòu)體數(shù)組緩沖區(qū)再次寫入文件void del()FILE *fp;int num,i,j,m=0;char ch2;/以追加和讀的方式打開文件if(fp=fopen(data.txt,a+)=NULL)printf(不能打開文件n);return;/把文件中的內(nèi)容依次寫到物資結(jié)構(gòu)體數(shù)組中,并記錄信息條數(shù)

37、,最后關(guān)閉文件while(!feof(fp)if(fread(&commm,LEN,1,fp)=1)m+;fclose(fp);/根據(jù)物資信息條數(shù)進(jìn)行相應(yīng)的處理if(m=0)printf(沒有記錄!n);return;else /用戶輸入編號printf(請輸入編號:);scanf(%d,&num);/用循環(huán)語句來比較是否有用戶輸入的記錄for(i=0;im;i+)if(num=commi.num)break;/沒找到用戶需要的記錄則返回if(i=m)printf(沒有找到相關(guān)記錄);getchar();return;/找到用戶需要的記錄,要求用戶輸入選擇printf(該記錄已經(jīng)找到,是否刪除?(y/n)); scanf(%s,ch);if(strcmp(ch,y)=0|strcmp(ch,Y)=0) for(j=i;jm;j+)/從找到的記錄起,依次把他后面的數(shù)據(jù)覆蓋前面的數(shù)據(jù)commj=commj+1;m-;/記錄條數(shù)減一個printf(成功刪除!n);/以寫的方式打開文件if(fp=fopen(data.txt,w)=NULL)printf(不能打開n);return;/把物資結(jié)構(gòu)體數(shù)組中的數(shù)據(jù)依次寫入文件for(j=0;jm;j+)if(fwrite(&commj,LEN,1,fp)

溫馨提示

  • 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

提交評論