![物資管理系統(tǒng)(含代碼)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/16/e50862c3-8321-4698-9aee-b5fb6ce13bd1/e50862c3-8321-4698-9aee-b5fb6ce13bd11.gif)
![物資管理系統(tǒng)(含代碼)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/16/e50862c3-8321-4698-9aee-b5fb6ce13bd1/e50862c3-8321-4698-9aee-b5fb6ce13bd12.gif)
![物資管理系統(tǒng)(含代碼)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/16/e50862c3-8321-4698-9aee-b5fb6ce13bd1/e50862c3-8321-4698-9aee-b5fb6ce13bd13.gif)
![物資管理系統(tǒng)(含代碼)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/16/e50862c3-8321-4698-9aee-b5fb6ce13bd1/e50862c3-8321-4698-9aee-b5fb6ce13bd14.gif)
![物資管理系統(tǒng)(含代碼)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/16/e50862c3-8321-4698-9aee-b5fb6ce13bd1/e50862c3-8321-4698-9aee-b5fb6ce13bd15.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、青島理工大學(xué)琴島學(xué)院設(shè) 計(jì) 報(bào) 告課題名稱:物資管理系統(tǒng)學(xué) 院:青島理工大學(xué)琴島學(xué)院專業(yè)班級:嵌入式技術(shù)與應(yīng)用14-1班學(xué) 號:學(xué) 生: 指導(dǎo)教師: 青島理工大學(xué)琴島學(xué)院教務(wù)處 年 月 日學(xué) 生指導(dǎo)教師課題名稱物資管理系統(tǒng)設(shè)計(jì)時間設(shè)計(jì)地點(diǎn)8-212設(shè)計(jì)目的1. 使學(xué)生加深對講授知識的理解、能夠綜合應(yīng)用數(shù)組、函數(shù)、結(jié)構(gòu)體、指針、文件等知識解決實(shí)際問題;2. 培養(yǎng)學(xué)生獨(dú)立調(diào)試程序的能力,團(tuán)隊(duì)協(xié)作的能力;3累積編程經(jīng)驗(yàn),書寫設(shè)計(jì)報(bào)告的規(guī)范,為編寫項(xiàng)目打下良好基礎(chǔ)。指導(dǎo)教師評 語系部教研室意 見一、選題背景及意義物資管理是一般工業(yè)、商業(yè)企業(yè)生產(chǎn)管理環(huán)節(jié)中重要的一環(huán),需要對物資基本信息管理、物資調(diào)配信息
2、等進(jìn)行完整的監(jiān)控。物資入庫首先要登記物資的基本信息,包括物資的種類、名稱、型號、單位、單價(jià)等;然后登記物資入庫信息,包括物資基本信息、入庫地點(diǎn)、入庫人、經(jīng)辦人、數(shù)量等;根據(jù)物資的入庫、出庫過程的綜合,得到各種物資的余額信息,方便進(jìn)行后續(xù)工作。因此物資管理信息系統(tǒng)需要紀(jì)錄物資流通的全過程。 加強(qiáng)物資管理,不但有算得出、看得到的效益,還可以大大提高管理隊(duì)伍的素質(zhì),加強(qiáng)職工的增產(chǎn)節(jié)約意識、愛護(hù)財(cái)產(chǎn)意識和學(xué)習(xí)科技的意識,使科學(xué)管理形成共識,并可以減少物資設(shè)備各個環(huán)節(jié)上的矛盾。信息已成為繼勞動力、土地、資本之后的又一大資源。誰控制的信息越多,誰利用信息資源的效率越高,誰就會在各方面的競爭中占有一席之地,
3、誰就會有更多的優(yōu)勢。物資供應(yīng)部門是企業(yè)與生產(chǎn)單位之間的橋梁、紐帶,是企業(yè)正常生產(chǎn)的物資保障部門。正因?yà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ù)各三級單位所報(bào)材料明細(xì)逐個與庫存賬本對照查閱,進(jìn)行庫平,即庫中有其所需材料則開據(jù)料單從庫中領(lǐng)取,若庫中無,則通知采購人員采購。庫中物資
4、種類繁多,查對繁瑣,易出錯。(二)從開據(jù)發(fā)料單到每月結(jié)帳、清冊都是手工操作,計(jì)算器加算盤,效率低且準(zhǔn)確率不高。單位配備的計(jì)算機(jī)僅局限于打字,做報(bào)表,不能開單據(jù),計(jì)算機(jī)應(yīng)有的功能沒有充分發(fā)揮。所以想設(shè)計(jì)個系統(tǒng)來提高工作效率,為學(xué)校、企業(yè)節(jié)省大部分開支用來投資系統(tǒng)的開發(fā),這樣以來節(jié)省了人力物力,也節(jié)省了資源的消耗,實(shí)現(xiàn)了低碳發(fā)展。二、需求分析學(xué)校的計(jì)算機(jī)不僅可以安裝Windows和UNIX的運(yùn)行環(huán)境,而且有足夠的空間可以安裝運(yùn)行平臺JAVA虛擬機(jī)、數(shù)據(jù)庫ORACLE、服務(wù)器TOMCAT和各類編程工具例如ECLIPSE,NETBEANS,在編程環(huán)境上提供了可靠的支持;我們編程人員方面,可以運(yùn)用以前所
5、學(xué)的各種開發(fā)軟件的計(jì)算機(jī)知識和管理知識,加上不斷的學(xué)習(xí),為系統(tǒng)的開發(fā)提供了必要的技術(shù)保障。我們就應(yīng)用了JAVA EE企業(yè)級開發(fā)框架以及ORACLE 數(shù)據(jù)庫系統(tǒng)軟件。根據(jù)系統(tǒng)功能、性能及實(shí)現(xiàn)系統(tǒng)的各項(xiàng)約束條件,根據(jù)新系統(tǒng)目標(biāo)來衡量所需的技術(shù)是否具備,本系統(tǒng)是一個數(shù)據(jù)庫管理和查詢的系統(tǒng),現(xiàn)有的技術(shù)以較為成熟,硬件、軟件的性能要求、環(huán)境條件等各項(xiàng)條件良好,估計(jì)利用現(xiàn)有技術(shù)條件應(yīng)完全可以達(dá)到該系統(tǒng)的功能目標(biāo)。同時,考慮給予的開發(fā)期限也較為充裕,預(yù)計(jì)系統(tǒng)是可以在規(guī)定期限內(nèi)完成開發(fā)。系統(tǒng)的效益可以從經(jīng)濟(jì)效益和社會效益兩方面考慮。對于物資管理系統(tǒng)則應(yīng)著重分析其社會效益。例如,系統(tǒng)投入運(yùn)行后可以使物資管理實(shí)現(xiàn)
6、科學(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é)合知識管理、辦公自動化、項(xiàng)目管理等技術(shù),將人力資源管理提升到戰(zhàn)略級別
7、的管理層次,是一個針對企業(yè)"人力資源"的"設(shè)計(jì)"系統(tǒng)。 通過以上從技術(shù)、經(jīng)濟(jì)、實(shí)踐三方面的研究與調(diào)查,我們可以確定該物資管理系統(tǒng)是可行的。三、概要設(shè)計(jì)1、數(shù)據(jù)庫設(shè)計(jì)本系統(tǒng)中主要涉及數(shù)據(jù)表如下:物資信息表:主要包含編號、物資名稱、單價(jià)、數(shù)量等字段。其具體表結(jié)構(gòu)如圖所示:物資信息表字段名字段類型字段寬度字段說明num字符型10編號name字符型20物資名稱price數(shù)值型5單價(jià)count數(shù)值型5數(shù)量total數(shù)值型20總金額2、系統(tǒng)功能模塊概述本系統(tǒng)能夠?qū)崿F(xiàn)一個人機(jī)交互,操作簡單的物資管理系統(tǒng),主要分為兩個用戶角色,用戶和物資,主要功能如圖所示:輸入指令06
8、開始輸入記錄修改記錄查找記錄統(tǒng)計(jì)記錄刪除記錄排序記錄退出系統(tǒng) 系統(tǒng)功能模塊圖各功能模塊描述如下:(1)輸入記錄:本模塊主要完成物資記錄的輸入,主要包含編號、名稱、單價(jià)和數(shù)量,在輸入過程中要注意各個字段的類型,并且要進(jìn)行數(shù)據(jù)的合法性驗(yàn)證。(2)查找記錄:主要用來查找物資的信息,該模塊能夠通過物資編號來查找物資記錄信息。(3)刪除記錄:通過物資編號來進(jìn)行刪除物資信息。(4)修改記錄:通過編號修改物資信息。(5)排序記錄:按總金額進(jìn)行排序。(6)統(tǒng)計(jì)記錄:統(tǒng)計(jì)物資數(shù)量。(0)退出系統(tǒng)。四、詳細(xì)設(shè)計(jì) (一) 主函數(shù)一般是設(shè)計(jì)簡潔,只提供輸入,處理和輸出部分的函數(shù)調(diào)用。 (1) /*商品結(jié)構(gòu)體*/str
9、uct commdityint num; /編號char name20;/商品名稱double price;/單價(jià)double count;/數(shù)量double total;/總金額 ;struct commdity comm50;/定義結(jié)構(gòu)體數(shù)組(2)/*函數(shù)申明*/void in();/輸入物資信息函數(shù)void show();/顯示物資信息函數(shù)void order();/按總金額排隊(duì)函數(shù)void del();/刪除物資信息函數(shù)void modify();/修改物資信息函數(shù)void menu();/主菜單函數(shù)void total();/統(tǒng)計(jì)總物資數(shù)函數(shù)void search();/查找物資信息
10、函數(shù)(5)/*主函數(shù)*/void main() 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)計(jì)物資數(shù)量break;default:break;getch();menu();/返回菜單界面scanf("%d",
11、&n);return ;(二)各功能模塊設(shè)計(jì)(1)/菜單模塊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 排序記錄 (
12、按總金額) |n");printf("tt|t 6 統(tǒng)計(jì)記錄 |n");printf("tt|t 0 退出系統(tǒng) |n");printf("tt|*|n");printf("ttt 選擇(0-6):");(2)/顯示模塊/基本流程,先把文件中的數(shù)據(jù)依次讀入到物資結(jié)構(gòu)體中,/并依次顯示void show() FILE *fp; int i,m=0; fp=fopen("data.txt","a+"); while(!feof(fp)if(fread(&commm
13、 ,LEN,1,fp)=1) m+; fclose(fp); printf("編號 物資名稱 單價(jià) 數(shù)量 總金額tn"); for(i=0;i<m;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;char ch2;/以追加 和寫的方式打開文件if(fp=fopen("data.txt",&q
14、uot;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;
15、i<m;i+)if(num=commi.num)printf("已經(jīng)找到該記錄,是否顯示?(y/n)");scanf("%s",ch);if(strcmp(ch,"y")=0|strcmp(ch,"Y")=0)printf("編號 物資名稱 單價(jià) 數(shù)量 總金額tn");printf(FORMAT,DATA);break;elsereturn;/如果上面的循環(huán)語句執(zhí)行完都沒有找到 ,則會執(zhí)行本判斷語句if(i=m)printf("沒有找到相關(guān)記錄!n");(4)/刪除物資
16、模塊/本模塊的流程為先打開文件,并把數(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ù),最后關(guān)閉文件while(!feof(fp)if(fread(
17、&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;i<m;i+)if(num=commi.num)break;/沒找到用戶需要的記錄則返回if(i=m)printf("沒有找到相關(guān)記錄");getchar();return;/找到用戶需要的記
18、錄,要求用戶輸入選擇printf("該記錄已經(jīng)找到,是否刪除?(y/n)"); scanf("%s",ch);if(strcmp(ch,"y")=0|strcmp("ch","Y")=0) for(j=i;j<m;j+)/從找到的記錄起,依次把他后面的數(shù)據(jù)覆蓋前面的數(shù)據(jù)commj=commj+1;m-;/記錄條數(shù)減一個printf("成功刪除!n");/以寫的方式打開文件if(fp=fopen("data.txt","w")=NU
19、LL)printf("不能打開n");return;/把物資結(jié)構(gòu)體數(shù)組中的數(shù)據(jù)依次寫入文件for(j=0;j<m;j+)if(fwrite(&commj,LEN,1,fp)!=1) printf("保存出錯!n");return;printf("保存成功!n");fclose(fp);(5)/統(tǒng)計(jì)模塊void total() FILE *fp;int m=0;/以追加和讀的方式打開一個文件if(fp=fopen("data.txt","a+")=NULL)printf("
20、 不能打開文件n");return;/把文件中的內(nèi)容依次寫入緩沖區(qū),統(tǒng)計(jì)記錄條數(shù),并關(guān)閉文件while(!feof(fp) if(fread(&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)計(jì)六、遇到的問題及解決辦法1、書寫標(biāo)識符時,忽略了大小寫字母的區(qū)別
21、。解決辦法;編譯程序把C和c認(rèn)為是兩個不同的變量名,而顯示出錯信息。C語言認(rèn)為大寫字母和小寫字母是兩個不同的字符。2、書寫標(biāo)識符時,忽略了中英文標(biāo)點(diǎn)符號的不同,而顯示錯誤。C語言不讀取中文標(biāo)點(diǎn)符號報(bào)錯。3、忽略了變量的類型,進(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)實(shí)現(xiàn)了,對簡單的物資進(jìn)行管理,例如:輸入物資信息,修改物資信息
22、,刪除物資信息,對物資信息進(jìn)行排序等等,大大提高了我們的辦公效率,節(jié)省了人力物力,向綠色經(jīng)濟(jì)的方向靠近。對于這個系統(tǒng)還有很不不足之處,例如:給有給系統(tǒng)設(shè)置開啟密碼、排序后無法顯示排序后的物資列表等等,希望在以后的學(xué)習(xí)中,不斷改進(jìn)、完善這個系統(tǒng)。課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)技術(shù)發(fā)展的日新日異,當(dāng)今計(jì)算機(jī)應(yīng)用在是生活中可以說得是無處不在。因此作為二十一世紀(jì)的大學(xué)來說掌握計(jì)算機(jī)開發(fā)技術(shù)十分重要的?;仡櫰鸫舜握n程設(shè)計(jì),至今我仍感慨頗多,的確從拿到題目到完成整個編程,從理論到實(shí)踐,在整整半個
23、學(xué)期的日子里,可以學(xué)到很多很多的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實(shí)際動手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,比如說結(jié)構(gòu)體通過這次課程設(shè)計(jì)之后,一定把以前所學(xué)過的知識重新溫故。這次課程設(shè)計(jì)終于順利完成了,在設(shè)計(jì)中遇
24、到了很多編程問題,最后在郭老師的辛勤指導(dǎo)下,終于游逆而解。同時,在郭老師的身上我學(xué)得到很多實(shí)用的知識,在次我表示感謝!同時,對給過我?guī)椭乃型瑢W(xué)和各位指導(dǎo)老師再次表示忠心的感謝在課程設(shè)計(jì)過程中,我學(xué)到了很多人生的哲理,懂得怎么樣去制定計(jì)劃,怎么樣去實(shí)現(xiàn)這個計(jì)劃,并掌握了在執(zhí)行過程中怎么樣去克服心理上的不良情緒,黑夜過去了,我們收獲的是黎明。在本次實(shí)踐中,給我印象最為深刻的是在文件刪除程序的編譯過程中,先有我的各個子程序都已經(jīng)編輯成功,那么這最后的程序就將是我成功的關(guān)鍵。老天不會讓我太過順利,他在這最后的時刻設(shè)置的障礙,是要考驗(yàn)我的能力,他要置我于死地?在這個問題的解決上,我打了退堂鼓,我不能
25、忍受長時間的無功而反,時間正在消磨我的意志。沒有了柳暗花明的一天,那么我怎么能說經(jīng)受住了考驗(yàn)?謝謝老師的那句話,她說:人力有所不能及,然而,人的精神是不會敗倒的。我鼓起勇氣,到處問,到處查資料,黃天不負(fù)有心人,在一篇文章上,終于看到了我所特別要求的函數(shù),我實(shí)現(xiàn)了組合是關(guān)鍵的理論。不得不說這是精神的勝利,是永不言敗的精神讓我的程序重見天日。謝謝給我指點(diǎn)迷津的老師。我們的課程設(shè)計(jì)結(jié)束了,但是它留給我的印象是不可磨滅的。無論我以后會不會涉及到C語言程序編譯的研究,我想,我至少掌握了一種系統(tǒng)的研究方法,我們學(xué)習(xí)的目的就在于運(yùn)用,我們運(yùn)用這種研究方法的時候會很多,我最后要感謝課程設(shè)計(jì),它的確教會我很多。
26、參考書目:1 譚浩強(qiáng),C語言程序設(shè)計(jì)(第四版)M,清華大學(xué)出版社,2008年2 趙克林,C語言實(shí)例教程重慶:西南師范大學(xué)出版社,20063 楊正校,C語言程序設(shè)計(jì)南京:河海大學(xué)出版社,20084 謝樂軍,C語言程序設(shè)計(jì)及應(yīng)用北京:冶金工業(yè)出版社,2004源代碼/庫文件包含#include<stdio.h>/輸入輸出函數(shù)庫#include<stdlib.h>/常用錯誤控制程序庫#include<conio.h>/調(diào)用dos控制臺i/o庫#include<dos.h>/msdos和8086調(diào)用的一些常量和函數(shù)庫#include<string.h
27、>/串操作和內(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é)構(gòu)體struct commdityint num; /編號char name20;/物資名稱double price;/單價(jià)double count;/數(shù)量double total;/總金額 ;struct commdi
28、ty comm50;/定義結(jié)構(gòu)體數(shù)組/函數(shù)申明void in();/輸入物資信息函數(shù)void show();/顯示物資信息函數(shù)void order();/按總金額排隊(duì)函數(shù)void del();/刪除物資信息函數(shù)void modify();/修改物資信息函數(shù)void menu();/主菜單函數(shù)void total();/統(tǒng)計(jì)總物資數(shù)函數(shù)void search();/查找物資信息函數(shù)/主函數(shù)void main() int n;menu();scanf("%d",&n);while(n)switch(n)/問題switch()中的數(shù)據(jù)類型是什么?答案:是常量表達(dá)式,可以是
29、任何數(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)計(jì)物資數(shù)量break;default:break;getch();menu();/返回菜單界面scanf("%d",&n);return ;/被調(diào)函數(shù)體/菜單模塊void menu()system("CLS");/清屏函數(shù)print
30、f("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)計(jì)記錄 |n");printf("tt|t 0 退出系統(tǒng) |n&
31、quot;);printf("tt|*|n");printf("ttt 選擇(0-6):");/輸入信息模塊/基本的流程為先判斷是否存在記錄,/若存在則讀到物資結(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ù)組中,直
32、到全部讀取完畢while(!feof(fp)if(fread(&commm,LEN,1,fp)=1)m+;fclose(fp);/判斷讀取的數(shù)量,如果為0則表示沒有相關(guān)記錄,反之顯示記錄if(m = 0)printf("沒有找到記錄!n");else system("CLS");show(); /以輸入的方式打開 if(fp=fopen("data.txt","a")=NULL) printf("不能打開文件!n");return; printf("是否輸入?(y/n):&qu
33、ot;); scanf("%s",ch); while(strcmp(ch,"Y")=0|strcmp(ch,"y")=0)/判斷是否要輸入新信息printf("編號:");scanf("%d",&commm.num);/輸入物資編號for(i=0;i<m;i+) if(commi.num = commm.num)printf("該記錄已經(jīng)存在,按任意鍵繼續(xù)!");getch();fclose(fp);return;printf("物資名:"
34、);scanf("%s",); /輸入物資名稱printf("單價(jià):");scanf("%lf",&commm.price); /輸入物資單價(jià)printf("數(shù)量:");scanf("%lf",&commm.count); /輸入物資數(shù)量commm.total=commm.price * commm.count; /計(jì)算出總金額if(fwrite(&commm,LEN,1,fp)!=1) /將新輸入的信息寫入指定的磁盤文件printf("不能
35、保存!"); getch(); else printf("%s 已經(jīng)保存!n",);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
36、(fp)if(fread(&commm ,LEN,1,fp)=1) m+; fclose(fp); printf("編號 物資名稱 單價(jià) 數(shù)量 總金額tn"); for(i=0;i<m;i+) printf(FORMAT,DATA);/將信息按指定格式打印/排序模塊/基本流程,先把文件中的數(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(
37、"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ù)記錄條數(shù)做出相應(yīng)的選擇,沒記錄則返回,有記錄則排序 if(m=0) printf("沒有記錄!n");return;else /冒泡排序for(i=0;i<m-1;i+) for(j=i+1;j<m
38、;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;i<m;i+)if(fwrite(&commi ,LEN,1,fp)!=1) printf("%s 不能保存!n"); getch();return;fclose(
39、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)i
40、f(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;i<m;i+)if(num=commi.num)printf("已經(jīng)找到該記錄,是否顯示?(y/n)");scanf("%s",ch);if(s
41、trcmp(ch,"y")=0|strcmp(ch,"Y")=0)printf("編號 物資名稱 單價(jià) 數(shù)量 總金額tn");printf(FORMAT,DATA);break;elsereturn;/如果上面的循環(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ū)再次寫入文件voi
42、d 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
43、 /用戶輸入編號printf("請輸入編號:");scanf("%d",&num);/用循環(huán)語句來比較是否有用戶輸入的記錄for(i=0;i<m;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&qu
44、ot;)=0|strcmp("ch","Y")=0) for(j=i;j<m;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;j<m;j+)if(fwrite(&commj,LEN,1,fp)!=1) printf("保存出錯!n");return;printf("保存成功!n");fclose(fp);/修改物資模塊/本模塊流程為先打開文件讀物資結(jié)構(gòu)體數(shù)組緩沖區(qū)中/用戶輸入數(shù)據(jù)與緩沖區(qū)得數(shù)據(jù)進(jìn)行比較/有則先顯示,并修該對應(yīng)的緩沖區(qū)/把修改后的緩沖區(qū)寫入到文件void modify()FILE *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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度生態(tài)環(huán)保型護(hù)墻板設(shè)計(jì)與施工合同
- 2025年度會議現(xiàn)場攝影攝像及直播服務(wù)合同
- 2025版消防設(shè)備維修及更換勞務(wù)承包合同3篇
- 2025年度廣告公司室內(nèi)外裝修一體化合同正本
- 2025年度商業(yè)發(fā)布會場地租賃合同范本
- 2025年度網(wǎng)絡(luò)信息安全服務(wù)合同價(jià)款支付與保密條款
- 2025年度城市出租車公司司機(jī)勞動合同規(guī)范范本3篇
- 2025年度教育科技公司在線教育平臺借款合同范本
- 2025版淘寶商家與消費(fèi)者會員積分兌換合同3篇
- 二零二五年度學(xué)校場地設(shè)施維護(hù)與租賃合同3篇
- 2017年江蘇南京中考滿分作文《無情歲月有味詩》5
- 2024-2030年中國智慧水務(wù)行業(yè)應(yīng)用需求分析發(fā)展規(guī)劃研究報(bào)告
- 2024年中國南水北調(diào)集團(tuán)新能源投資限公司抽水蓄能項(xiàng)目崗位公開招聘高頻考題難、易錯點(diǎn)模擬試題(共500題)附帶答案詳解
- 中國2型糖尿病運(yùn)動治療指南 (2024版)
- 基礎(chǔ)構(gòu)成設(shè)計(jì)全套教學(xué)課件
- 城市道路交通安全評價(jià)標(biāo)準(zhǔn) DG-TJ08-2407-2022
- 統(tǒng)編版高中政治選擇性必修2《法律與生活》知識點(diǎn)復(fù)習(xí)提綱詳細(xì)版
- 急腹癥的診斷思路
- 2024小說推文行業(yè)白皮書
- 研究性成果及創(chuàng)新性成果怎么寫(通用6篇)
- 特殊感染手術(shù)管理考試試題及答案
評論
0/150
提交評論