C語言課程設(shè)計(jì)報(bào)告-物資管理系統(tǒng).doc
《C語言課程設(shè)計(jì)報(bào)告-物資管理系統(tǒng).doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《C語言課程設(shè)計(jì)報(bào)告-物資管理系統(tǒng).doc(20頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、C語言課程設(shè)計(jì)目 錄1、需求分析;2、系統(tǒng)總框圖;3、每個(gè)模塊的設(shè)計(jì)分析;4、列出所有定義的函數(shù)及說明;5、舉例說明1、2個(gè)比較有特點(diǎn)的算法;6、數(shù)據(jù)分析。完備性、健壯性等;7、存在的問題與不足及對(duì)策;8、使用說明(操作手冊(cè));9、學(xué)習(xí)心得前 言計(jì)算機(jī)科學(xué)技術(shù)的發(fā)展,不僅極大地促進(jìn)了整個(gè)科學(xué)技術(shù)的發(fā)展,而且明顯地加快了經(jīng)濟(jì)信息化和社會(huì)信息化的進(jìn)程。因此,計(jì)算機(jī)教育在全國備受重視,計(jì)算機(jī)知識(shí)與能力已成為21世紀(jì)人才素質(zhì)的基本要素之一。如今,高等教育的計(jì)算機(jī)教育發(fā)展十分迅速。十多年前,只有部分理工科專業(yè)開設(shè)計(jì)算機(jī)課程。今天,幾乎所有高校的所有專業(yè)都開設(shè)了程度不同的計(jì)算機(jī)課程。人們已經(jīng)認(rèn)識(shí)到,計(jì)算機(jī)
2、知識(shí)已成為當(dāng)代知識(shí)分子知識(shí)結(jié)構(gòu)中不可缺少的重要組成部分。而除了掌握計(jì)算機(jī)的基礎(chǔ)知識(shí)和操作的基本能力外,掌握一門高級(jí)編程語言,并可以熟練運(yùn)用它,已成為當(dāng)代大學(xué)生綜合能力必要組成。計(jì)算機(jī)技術(shù)發(fā)展如此迅猛,計(jì)算機(jī)應(yīng)用如此廣泛,需要學(xué)習(xí)的東西愈來愈多,而我們的總學(xué)時(shí)是有限的。一般來說,計(jì)算機(jī)課程學(xué)習(xí)可以分為兩部分:一部分是理論課程學(xué)習(xí),一部分是上機(jī)應(yīng)用實(shí)習(xí)。根據(jù)我們專業(yè)的性質(zhì)和要求,則應(yīng)側(cè)重于上機(jī)操作運(yùn)用。為此,學(xué)校特意在暑期最后一星期安排了32個(gè)學(xué)時(shí)的上機(jī)實(shí)習(xí)?,F(xiàn)將一星期的實(shí)習(xí)內(nèi)容及結(jié)果分析分列如下:物資管理系統(tǒng)一 題目要求1 編輯一個(gè)物資管理系統(tǒng),能進(jìn)行物資信息的錄入,查詢,打印和數(shù)據(jù)的修改。(1
3、)物資信息錄入:包括物資名稱、編號(hào)、規(guī)格、入庫時(shí)間、最大庫存、最小庫存、實(shí)際庫存。(2)物資信息查詢:可以分別以名稱、日期、名稱和規(guī)格查詢。(3)新料入庫:將新料的信息與以前儲(chǔ)存的信息存在一起。(4)物資領(lǐng)?。涸陬I(lǐng)料之后改變實(shí)際庫存量。(5)物資打?。捍蛴〕鰩齑娴乃形镔Y。2在課本要求的基礎(chǔ)上,我在實(shí)習(xí)過程中又補(bǔ)充了一個(gè)功能即物資數(shù)據(jù)的更新,這主要是為了滿足如果在信息錄入的過程中將數(shù)據(jù)輸錯(cuò),可以在查詢到錯(cuò)誤后進(jìn)行更改,同時(shí)如果新入庫的物資是以前存在的,那么也可以用此功能進(jìn)行入庫數(shù)據(jù)輸入。3要求數(shù)據(jù)以dat格式存放在硬盤上便于長期保存。二 需求分析根據(jù)題目要求,數(shù)據(jù)以dat的形式存儲(chǔ)在硬盤上,所
4、以應(yīng)提供文件的輸入,輸出等操作;還需要文件具有查找,替換,修改數(shù)據(jù)的功能??傮w設(shè)計(jì)根據(jù)上面的需求分析,可以將這個(gè)系統(tǒng)的設(shè)計(jì)分為如下七大模塊:一、信息錄入:在每次輸入信息時(shí)提供必要的友情提示。提示包括:1.如果選擇此項(xiàng)功能,那么之前的數(shù)據(jù)將被刪除,只將此次數(shù)據(jù)存儲(chǔ);2.需要輸入的數(shù)目,保證輸入能夠終止;3.輸入信息時(shí)提示這是輸入的第幾個(gè)物資的信息。輸入結(jié)束后以文件的形式儲(chǔ)存。二、信息查找:按查詢條件分為三個(gè)小模塊。分別為以名稱、日期、名稱和規(guī)格查詢模塊。此模塊只包含查詢的目錄和選擇,然后分別進(jìn)入每個(gè)小模塊。1以名稱查詢:輸入要查詢物資的名稱,系統(tǒng)將其與文件里的物資名稱進(jìn)行比較,如果找到匹配的那么
5、將其打印出來,最后統(tǒng)計(jì)匹配物資數(shù)量。2.以日期查詢:按要求輸入查詢物資入庫日期,系統(tǒng)將其與文件里的物資入庫時(shí)間進(jìn)行比較,如果找到匹配的那么將其打印出來,最后統(tǒng)計(jì)匹配物資數(shù)量。3.以名稱和規(guī)格查詢:按要求輸入要查詢物資的名稱和規(guī)格,系統(tǒng)將其與文件里的物資的名稱和規(guī)格進(jìn)行比較,如果找到匹配的那么將其打印出來,最后統(tǒng)計(jì)匹配物資數(shù)量。三、新料入庫:打開文件,按要求輸入數(shù)據(jù)后提供是否確定或從新輸入的選擇,輸入數(shù)據(jù)在確定的情況下儲(chǔ)存在原來已經(jīng)存在的數(shù)據(jù)的后面。每次只能輸入一個(gè)物資的數(shù)據(jù)。四、物資領(lǐng)?。狠斎胍〕鑫镔Y的名稱、規(guī)格、入庫時(shí)間,如果找到匹配的那么將庫存實(shí)際量數(shù)據(jù)改變,輸入要取出的量不能大于實(shí)際的
6、庫存量,否則輸入數(shù)據(jù)無效。五、物資打印:打印出庫存的物資的所有信息,便于使用者了解整體情況。六、數(shù)據(jù)更新:如果查詢到庫存信息有誤,那么可以對(duì)其進(jìn)行更改。如果需要入庫的物資已經(jīng)存在,那么只需要更改相應(yīng)數(shù)據(jù)即可。也就是可以用此功能對(duì)已經(jīng)存儲(chǔ)的所有信息進(jìn)行更改。七、退出:退出整個(gè)系統(tǒng)。物資管理系統(tǒng)信息錄入信息查詢新料入庫物資打印數(shù)據(jù)更新退出物資領(lǐng)取三 詳細(xì)設(shè)計(jì)1 主函數(shù)為了各模塊的獨(dú)立性,主函數(shù)設(shè)計(jì)得比較簡單,本系統(tǒng)主要用主函數(shù)打開做一個(gè)封面的打印,包含我的個(gè)人信息,然后進(jìn)入主菜單選擇操作。流程圖打印出我的資料,任意鍵繼續(xù)進(jìn)入主菜單函數(shù)程序/*主函數(shù)*/main() /*主函數(shù)*/ puts(nnn
7、ntt歡迎使用物資管理系統(tǒng)); puts(ttName:楊超 ); puts(ttNumber:20071001560 ); puts(ttE-mail: ); puts(ttTel:15872351704 ); puts(tt ); puts(tt*楊超 ); puts(tt*2009.1.2 ); puts(tt); printf(nttt 按任意鍵繼續(xù)); getch(); menu();2 主菜單函數(shù)流程圖顯示一系列功能選項(xiàng)輸入n,判斷n是否是1-7根據(jù)n的值調(diào)用各功能模塊函數(shù)是否程序menu() /*菜單函數(shù)*/ int n,m; do puts(ntt*菜單*nn); puts(t
8、tt1.物資信息錄入); puts(ttt2.物資信息查詢); puts(ttt3.新料入庫); puts(ttt4.物資領(lǐng)取); puts(ttt5.物資打印); puts(ttt6.物資數(shù)據(jù)更新); puts(ttt7.退出); puts(nntt*n); puts(tt*楊超n); puts(tt*2009.1.2n); printf(選擇操作 1-7: bb); scanf(%d,&n); if(n7) m=1;getchar(); else m=0; while(m=1);switch(n) /*分別進(jìn)入各函數(shù)*/ case 1:write();break; /*錄入函數(shù)*/ cas
9、e 2:search();break; /*查詢函數(shù)*/ case 3:insert();break; /*新料入庫函數(shù)*/ case 4:lend();break; /*領(lǐng)料函數(shù)*/ case 5:print();break; /*打印函數(shù)*/ case 6:rewrite();break; /*信息更改*/ case 7:exit(0); /*退出*/ 各功能模塊設(shè)計(jì)(1) 物資信息錄入/*物資信息錄入函數(shù)*/建立一個(gè)write函數(shù)用于第一次存儲(chǔ)信息。用printf函數(shù)打印出提示語(提示:請(qǐng)確定這是你第一次錄入信息,因?yàn)橹氨4娴臄?shù)據(jù)將被刪除),然后用scanf函數(shù)接受一個(gè)數(shù)據(jù)給k,用if
10、語句判斷k是否為0。如果繼續(xù)則輸入0,那么此時(shí)if(k!=0)為假,不執(zhí)行if后面的語句。否則用printf_back()調(diào)回到主目錄。選擇繼續(xù)之后,用printf函數(shù)提示輸入需用錄入的物資的數(shù)量,同時(shí)提示最大數(shù)字。然后用printf提示現(xiàn)在開始輸入信息,執(zhí)行input()函數(shù)開始輸入相關(guān)信息。輸入信息執(zhí)行后,用if(i!=0)判斷是否已經(jīng)輸入信息,如果輸入有數(shù)據(jù)那么i執(zhí)行了循環(huán),則if(i!=0)語句為真,執(zhí)行save函數(shù)進(jìn)行保存。沒有執(zhí)行i循環(huán)則if(i!=0)為假,直接執(zhí)行printf函數(shù)跳到主目錄。代碼如下:write()int i,n,k; printf(nnt提示:請(qǐng)確定這是你第一
11、次錄入信息,因?yàn)橹氨4娴臄?shù)據(jù)將被刪除!nn); printf(ttt是否繼續(xù)!nnttt0 *是nnttt其它 *否 bb); scanf(%d,&k); if(k!=0) printf_back(); printf(n需要錄入物資數(shù)量(0-%d)?:,N-1); /*N是宏定義,可以隨時(shí)改變其值*/ scanf(%d,&n); printf(n現(xiàn)在輸入信息nn); for(i=0;in;i+) printf(n現(xiàn)在輸入第 %d個(gè)物資的信息:n,i+1); input(i); if(i!=0)save(n); printf_back(); /*查詢函數(shù)*/本函數(shù)只包含跳轉(zhuǎn)到查詢目錄函數(shù),然后
12、執(zhí)行查詢目錄。打碼如下:search() searchmenu();物資信息查詢:1、/*以日期查詢函數(shù)*/建立日期結(jié)構(gòu)體。struct search_dateint year; int month; int day;s;search_by_date()int j,n,m=0;打開文件到內(nèi)存,使可以對(duì)數(shù)據(jù)進(jìn)行操作。 n=load(); 提示語:printf(n輸入你所查詢信息的日期!ndate:); 輸入數(shù)據(jù)分別賦值給日期中的年月日。scanf(%d.%d.%d,&s.year,&s.month,&s.day);用for循環(huán)使輸入的日期與數(shù)據(jù)中的每一個(gè)日期進(jìn)行比較。 for(j=0;jn;j+
13、)判斷輸入的日期與當(dāng)前物資的日期是否相同,如果相同則if為真,用m統(tǒng)計(jì)相同日期的物資的個(gè)數(shù)。打印出滿足條件的物資的信息。if(s.year=proj.in_date.year)&(s.month=proj.in_date.month)&(s.day=proj.in_date.day) m+; printf_data(j);打印出滿足條件物資的數(shù)量。printf(n有%d種物資與查詢相匹配!,m);按任意鍵返回到主函數(shù)。getch();menu();/*以名稱查詢函數(shù)*/search_by_name()int j,n,m=0;char a20;打開文件,使能對(duì)文件中的數(shù)據(jù)進(jìn)行操作。 n=load
14、(); 提示語言printf(n輸入你所查詢信息的名稱!nname:); 輸入一個(gè)字符數(shù)據(jù)賦值給ascanf(%s,a);用for循環(huán)使a與文件中的每一個(gè)數(shù)據(jù)進(jìn)行判斷,如果相同則打印出來同時(shí)用m統(tǒng)計(jì)相同的個(gè)數(shù)。 for(j=0;jn;j+) if(strcmp(a,proj.p_name)=0) m+; printf_data(j); 打印出相同個(gè)數(shù)的數(shù)量。printf(n有%d種物資與查詢相匹配!,m);任意鍵返回getch();menu();/*以名稱和規(guī)格查詢函數(shù)*/search_by_nameandsize()int j,n,m=0;char a20,b4;打開文件使能對(duì)數(shù)據(jù)進(jìn)行操作。
15、 n=load(); 提示輸入語,將輸入的字符數(shù)據(jù)賦值給aprintf(n輸入你所查詢信息的名稱!nname:); scanf(%s,a);提示輸入語,使輸入的字符數(shù)據(jù)賦值給b printf(n輸入你所查詢信息的規(guī)格!nsize:); scanf(%s,b);用for語句使輸入的名稱和規(guī)格數(shù)據(jù)與內(nèi)存中的每一個(gè)數(shù)據(jù)進(jìn)行比較。 for(j=0;jn;j+)如果數(shù)據(jù)與當(dāng)前數(shù)據(jù)相同,打印出數(shù)據(jù),同時(shí)用m統(tǒng)計(jì)相同個(gè)數(shù)。 if(strcmp(a,proj.p_name)=0)&(strcmp(b,proj.size)=0) m+; printf_data(j); 打印出匹配物資的個(gè)數(shù)。printf(n有%
16、d種物資與查詢相匹配!,m);任意鍵返回主菜單。getch();menu();新料入庫/*新料入庫函數(shù)*/insert()int n,c;打開文件使能對(duì)數(shù)據(jù)進(jìn)行操作。 n=load(); puts(n請(qǐng)輸入相關(guān)信息:n);用dowhile循環(huán)判斷是否從新輸入。 do 進(jìn)入input函數(shù)輸入新料的相關(guān)數(shù)據(jù)。input(n);調(diào)用printf_data函數(shù)打印出剛輸入的新料的相關(guān)數(shù)據(jù)。 printf_data(n);按提示語進(jìn)行下一步操作。 printf(nn是否確定輸入n1 ).是n2 ).從新輸入n其它).返回 bb);接受一個(gè)數(shù)據(jù)賦值給c,如果c=1,那么將新輸入的數(shù)據(jù)保存。如果c!=1且c
17、!=2,那么返回到主函數(shù),如果c=2那么從新輸入新料的數(shù)據(jù)。 scanf(%d,&c); if(c=1) save(n+1);printf_back(); else if(c!=2)menu(); while(c=2);物資領(lǐng)取/*領(lǐng)料函數(shù)*/lend()int j,n,k=0;打開文件使能對(duì)數(shù)據(jù)進(jìn)行操作。 n=load();由于數(shù)據(jù)類型很重要,因此輸出提示語,使按照提示操作。 printf(n請(qǐng)輸入你需要物資內(nèi)容的相關(guān)信息!); printf(n名稱(1-20字母)t規(guī)格(1-4字母)t入庫日期t領(lǐng)取數(shù)量n);輸入數(shù)據(jù),分別賦值給名稱、規(guī)格和入庫日期,同時(shí)輸入領(lǐng)取量。scanf(%st%st
18、%d.%d.%dt%d,&take.p_name,&take.size,&take.one_date.year,&take.one_date.month,&take.one_date.day,&take.total);用for循環(huán)判斷要領(lǐng)取的物資是否存在與庫中,同時(shí)判斷領(lǐng)取量是否小于庫存量。 for(j=0;jn;j+)if(strcmp(take.p_name,proj.p_name)=0)&(strcmp(take.size,proj.size)=0)&(take.one_date.year=proj.in_date.year)&(take.one_date.month=proj.in_d
19、ate.month)&(take.one_date.day=proj.in_date.day)&(take.total=proj.real_s)如果存在物資,那么領(lǐng)取物資,庫存的實(shí)際數(shù)量更新,打印出領(lǐng)料后物資的信息,同時(shí)使k=1。 proj.real_s-=take.total; printf_data(j); k=1; 如果不存在物資,那么k的值不變?yōu)?,則執(zhí)行if語句返回到主菜單。if(k=0) printf(輸入數(shù)據(jù)未找到!);getch();menu();領(lǐng)料后保存數(shù)據(jù),返回到主菜單。save(n);printf_back();物資打印/*打印函數(shù)*/print()int i,n;將文
20、件的數(shù)據(jù)讀到內(nèi)存中,使能對(duì)數(shù)據(jù)進(jìn)行處理。 n=load();用for循環(huán)打印出從文件中讀出的每一個(gè)數(shù)據(jù)。 for(i=0;in;i+) printf_data(i);任意鍵返回。 puts(nnttt任意鍵返回); getch(); menu();物資數(shù)據(jù)更新/*信息更改函數(shù)*/rewrite()char p_name20;long int p_num; char size4;int m,n,j,k=0;讀入文件中的數(shù)據(jù),使能對(duì)其進(jìn)行操作。 n=load();用dowhile語句執(zhí)行循環(huán)輸入。 do puts(n要更改物資的信息:名稱 編號(hào) 規(guī)格);賦值給名稱、編號(hào)、規(guī)格,打印出輸入的信息,接
21、受數(shù)據(jù)判斷選擇操作。 scanf(%s%ld%s,&p_name,&p_num,&size); printf(名稱:%stt編號(hào):%ldtt規(guī)格:%s,&p_name,p_num,&size); printf(nnnnttt是否繼續(xù)!nnttt0 *是nnttt1 *退出nnttt其它 *重新輸入 bb);根據(jù)提示信息輸入一個(gè)值給m,如果退出則輸入1,那么if(m=1)為真,返回到主菜單;如果要繼續(xù)則輸入為0,k賦值為1,那么while語句為假,進(jìn)行后面的操作;重新輸入則輸入除0和1以外的數(shù)據(jù),那么k=0,while(k!=1)為真,執(zhí)行重新輸入。 scanf(%d,&m); if(m=1)
22、printf_back(); else if(m=0) k=1; while(k!=1);用for循環(huán)判斷要更改的物資是否存在,如果存在調(diào)入input函數(shù),重新輸入物資的信息,保存新信息,返回到主菜單。 for(j=0;jn;j+) if(strcmp(p_name,proj.p_name)=0)&(p_num=proj.p_num)&(strcmp(size,proj.size)=0) puts(n請(qǐng)重新輸入信息n); input(j); save(n); printf_back(); 如果沒有一個(gè)匹配,提示未找到返回主菜單。 puts(未找到n按任意鍵返回!); getch(); menu
23、();退出如果輸入為7那么直接用exit(0);結(jié)束整個(gè)程序。各函數(shù)及說明main() 包括個(gè)人說明和調(diào)入menu()函數(shù)。menu() 打印出各個(gè)功能菜單,選擇需要操作的功能,進(jìn)入各功能。input() 輸入物資的名稱、編號(hào)、規(guī)格、入庫時(shí)間、庫存最大最小和實(shí)際量。代碼如下:input(int i) /*輸入函數(shù)*/printf(n名稱(1-20字母):); scanf(%s,&proi.p_name); printf(n編號(hào)(1-7數(shù)字):); scanf(%d,&proi.p_num); printf(n規(guī)格(1-4字母):); scanf(%s,&proi.size); printf(n
24、入庫日期(年.月.日):); scanf(%d.%d.%d,&proi.in_date.year,&proi.in_date.month,&proi.in_date.day); printf(n數(shù)量庫存最小-實(shí)際-最大:); scanf(%d-%d-%d,&proi.min_s,&proi.real_s,&proi.max_s);insert() 新料入庫函數(shù),調(diào)入input()函數(shù),將輸入的信息存儲(chǔ)在原信息的后面,提供是否繼續(xù)的選擇操作。lend() 領(lǐng)料入庫函數(shù),輸入物料信息,查找物料是否存在,如果存在則取出相應(yīng)數(shù)量的物料,改變相應(yīng)庫存信息并保存,若不存在,打印出提示。load() 從文件
25、中讀入物資庫存信息到內(nèi)存,使可以對(duì)數(shù)據(jù)進(jìn)行操作。代碼如下:load() /*從文件讀入函數(shù)*/ FILE*fp; /*定義指針*/ int k; if(fp=fopen(pro.dat,rb)=NULL) /*以只讀方式打開一個(gè)二進(jìn)制文件,打開失敗給出提示*/ printf(n文件打開失?。); return NULL; for(k=0;!feof(fp);k+) /*打開成功將其所有數(shù)據(jù)讀入一次到內(nèi)存中*/ fread(&prok,sizeof(struct product),1,fp); fclose(fp); /*關(guān)閉指針*/ return(k-1); /*給出返回值使能對(duì)讀入的數(shù)據(jù)進(jìn)
26、行準(zhǔn)確操作*/print() 打印出庫存每一條信息。代碼如下:print()int i,n; n=load(); for(i=0;in;i+) printf_data(i); puts(nnttt任意鍵返回); getch(); menu();print_back() 操作完成后返回到主菜單的函數(shù)。代碼如下:printf_back() /*返回提示函數(shù)*/printf(nn操作完成nn按任意鍵返回!n); getch(); menu();print_data() 打印出名稱、編號(hào)、規(guī)格、日期、庫存最小-實(shí)際-最大。代碼如下:printf_data(int i) /*打印函數(shù)*/printf(n
27、名稱tt編號(hào)t規(guī)格t日期tt庫存最小-實(shí)際-最大n);printf(%stt%dt%st%d.%d.%dtt%d-%d-%d,proi.p_name,proi.p_num,proi.size,proi.in_date.year,proi.in_date.month,proi.in_date.day,proi.min_s,proi.real_s,proi.max_s);rewrite() 信息更改函數(shù),可更改庫存中的人以信息。save() 將內(nèi)存中的數(shù)據(jù)保存到硬盤中。代碼如下:save(int n) /*保存函數(shù)*/FILE*fp; /*定義指針*/ int k; if(fp=fopen(pro
28、.dat,wb)=NULL) /*以只寫的方式打開一個(gè)二進(jìn)制文件,文件名為pro.dat printf(n文件打開失敗!n); 如果打開失敗給出提示*/ return NULL; for(k=0;kn;k+) /*打開成功則將內(nèi)存中的物資信息存到硬盤上*/ if(prok.real_s!=0) if(fwrite(&prok,sizeof(struct product),1,fp)!=1) printf(文件存儲(chǔ)失敗n); /*存儲(chǔ)失敗給出提示*/ fclose(fp);search() 調(diào)入查詢菜單函數(shù)。search_by_name() 以名稱為條件查詢函數(shù),找到名稱相同的物料,調(diào)用prin
29、t_data()函數(shù)打印出匹配的物料信息。search_by_date()以日期為條件查詢函數(shù),找到入庫時(shí)間相同的物料,調(diào)用print_data()函數(shù)打印出匹配的物料信息。search_by_nameandsize()以名稱和規(guī)格為條件查詢函數(shù),找到信息相同的物料,調(diào)用print_data()函數(shù)打印出匹配的物料信息。searchmenu() 打印出提示信息,使按要求操作,根據(jù)輸入的信息不同進(jìn)入各個(gè)不同查詢條件函數(shù)。searchmenu()int n,w2; do puts(ntt*查詢目錄*nn); puts(ttt1.以名稱查詢); puts(ttt2.以日期查詢); puts(ttt3
30、.以名稱和規(guī)格查詢); puts(ttt4.返回); puts(nntt*n); printf(選擇命令 1-4: bb); scanf(%d,&n); if(n4) w2=1;getchar(); else w2=0; while(w2=1); switch(n) /*跳轉(zhuǎn)到查詢函數(shù)*/ case 1:search_by_name();break; /*轉(zhuǎn)入以名稱查詢函數(shù)*/ case 2:search_by_date();break; /*轉(zhuǎn)入以日期查詢函數(shù)*/ case 3:search_by_nameandsize();break; /*轉(zhuǎn)入以名稱和規(guī)格查詢函數(shù)*/ case 4:ge
31、tch();menu(); /*跳轉(zhuǎn)到菜單函數(shù)*/ write() 將物資信息讀入到內(nèi)存中并保存在硬盤中。時(shí)間結(jié)構(gòu)體struct dateint year; int month; int day;領(lǐng)料時(shí)需要輸入的產(chǎn)品信息結(jié)構(gòu)體struct one_prochar p_name20;long int p_num; char size4; struct date one_date; long int total; struct one_pro *next;take;保存文件的產(chǎn)品信息結(jié)構(gòu)體struct productchar p_name20; long int p_num; char size4
32、; struct date in_date; long int max_s; long int min_s; long int real_s; struct product *next;proN;查詢?nèi)掌诘慕Y(jié)構(gòu)體struct search_dateint year; int month; int day;s;操作展示截圖:開始界面:提示語后輸入信息:輸入信息后選擇打印結(jié)果:a的編號(hào)為1000規(guī)格為xxl入庫日期為2009.1.8庫存實(shí)際量為58。以名稱查詢結(jié)果:以日期查詢結(jié)果:以名稱和規(guī)格查詢結(jié)果:新料入庫界面:領(lǐng)取a物資5個(gè)單位后,a的庫存實(shí)際量為53物資數(shù)據(jù)更新后,a名稱改為aa,編號(hào)為1
33、008,規(guī)格為xxx,入庫日期為2009.1.10,庫存信息也相應(yīng)改變,同時(shí)上次輸入的新料的信息也存儲(chǔ)了進(jìn)去:程序特點(diǎn)和個(gè)人總結(jié): 本程序是自己的勞動(dòng)結(jié)果,由于是第一次學(xué)習(xí)程序語言,接觸程度不深,因此編寫的語言非常簡單,全部使用的是一些常見的語言結(jié)構(gòu),讀起來也比較容易。同時(shí)由于是初學(xué),因此寫出的程序代碼也顯得比較淺略,對(duì)于編程高手來說顯得平淡如水,這是今后需要改正的地方。但是由于程序是分模塊編寫的,看起來也比較簡練,不會(huì)顯得雜亂。同時(shí)有一個(gè)問題還沒有解決。問題如下:menu() int n,m; do puts(ntt*菜單*nn); puts(ttt1.物資信息錄入); puts(ttt2.
34、物資信息查詢); puts(ttt3.新料入庫); puts(ttt4.物資領(lǐng)取); puts(ttt5.物資打印); puts(ttt6.物資數(shù)據(jù)更新); puts(ttt7.退出); puts(nntt*n); puts(tt*楊超n); puts(tt*2009.1.2n); printf(選擇操作 1-7: bb); scanf(%d,&n); if(n7) m=1;getchar(); else m=0; while(m=1);開始沒有加入getchar函數(shù),程序陷入死循環(huán),分析了很久也沒有找到原因。后來在網(wǎng)上搜索了一個(gè)相似的代碼,依葫蘆畫瓢加上getchar()問題才解決。但是在北區(qū)的機(jī)房調(diào)試程序時(shí),沒有g(shù)etchar()也沒有陷入死循環(huán)。 程序中使用漢字時(shí)有時(shí)會(huì)無故失靈,不改變程序重新調(diào)試又正常運(yùn)行,這也是自己需要學(xué)習(xí)的一點(diǎn)。使用說明:本程序交互性很強(qiáng),在每次輸入數(shù)據(jù)時(shí)都有提示,因此完全可以在程序中操作自如。但需要注意的一點(diǎn)是,輸入數(shù)據(jù)時(shí),一定要保證與提示的類型相同,否則將出現(xiàn)無法預(yù)料的結(jié)果。如下:按日期查詢數(shù)據(jù)時(shí)輸入日期為we時(shí),出現(xiàn)的結(jié)果就顯得莫名其妙。
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《比的意義》教學(xué)課件
- (精品)我們?cè)谛袆?dòng) (2)
- 孤立奇點(diǎn)留數(shù)習(xí)題課
- 七年級(jí)語文下冊(cè)(人教版)13-葉圣陶先生二三事(作業(yè))課件
- 《童年》教學(xué)課件
- 61源遠(yuǎn)流長的中華文化
- 浙江中醫(yī)雜志投稿須知
- 底盤與主動(dòng)安全性系統(tǒng)
- 中國臨床解剖學(xué)雜志簡介及來稿須知
- 5《爺爺和小樹》
- (蘇教版)四年級(jí)語文上冊(cè)課件+桂花雨+1
- 氣管插管病人的醫(yī)療護(hù)理
- 小學(xué)道德講堂“六個(gè)一”模板
- 第29課《詩詞五首-長相思》PPT課件
- 湘科版四年級(jí)科學(xué)上冊(cè)全冊(cè)ppt課件