超市商品管理c語言_第1頁
超市商品管理c語言_第2頁
超市商品管理c語言_第3頁
超市商品管理c語言_第4頁
已閱讀5頁,還剩18頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、。實訓報告題目:超市商品管理院系:信息科技學院專業:通信工程姓名:XXX學號:1251100XXX指導教師:楊永清日期:2013年 9月 15日桂林電子科技大學信息科技學院。1。超市商品管理本題目設計目的是訓練學生的基本編程能力,了解管理信息系統的開發流程,熟悉C語言的文件和單鏈表的各種基本操作。本程序中涉及結構體、單鏈表、文件等方面的知識。通過本程序的訓練,使學生能對C語言的文件操作有一個更深刻的了解,掌握利用單鏈表存儲結構實現對學生成績管理的原理,為進一步開發出高質量的管理信息系統打下堅實的基礎。1、程序簡介本程序用VC+6.0 編譯,運行于windows 系統下。1.1 、本程序應具有以

2、下功能:1、 文件操作功能文件操作:可建立、打開、保存、關閉數據文件。如果是新建的文件,可輸入商品信息數據:數據包括商品編號、商品名、商品類別、商品數量、商品價格等。2、數據輸入功能輸入信息:輸入商品編號、數量完成進貨操作。3、數據添加、修改、刪除功能添加:添加一種或多種新商品,并能輸入其商品信息。修改:修改商品信息,可包括商品編號、名稱、種類、數量和單價。刪除:刪除一類或多類商品的所有信息。4、計算功能。2??赏ㄟ^查詢商品信息功能,自動計算并輸出需要進貨的商品信息。通過商品數量及單價,自動計算出商品總價。5、查詢功能可分別按商品編號和需要進貨的商品進行查詢。6、排序功能可分別按商品編號、金額

3、等進行排序。7、數據顯示功能可分別瀏覽輸入、查詢和排序后的商品信息。2、總體設計圖采用模塊化程序設計方法, 將較大任務按一定規則分成一些較小任務, 各個模塊之間既獨立又相關。超市商品管理系統輸入記錄查詢排序記錄更新記錄文文按按顯按按修刪件件是編示庫總改除讀寫否號所存金記記取入缺查有排額錄錄貨詢記序排查錄序詢商品超市管理模塊圖。3。2.1 界面設計主菜單輸入界面:。4。信息顯示界面:2.2 詳細設計:(以下為部分代碼)2.2.1 數據結構設計struct goodsint num;/ 編號char name15;/ 名稱double price;/ 單價double count;/ 數量doub

4、le total;/ 總金額;struct goods comm50;/ 定義結構體數組結構體 struct goods將用于存儲商品的基本信息1、主函數 main()。5。定義主函數為空類型 (void);利用選擇結構 (switch)實現在在主函數中的調用各個子函數。main() 函數執行流程system("color f3");改變顏色system("title超市商品信息管理系統"); 修改窗口名稱輸出菜單switch1輸入商品信息2查找商品信息3刪除商品信息4修改商品信息5按總金額排序商品信息6按庫存商品信息7查詢缺貨商品8瀏覽商品信息0退出清

5、屏幕int main(void)int n;system("color f3");/ 改變顏色system("title超市商品信息管理系統 ");/ 修改窗口名稱menu();/ 顯示主菜單scanf("%d",&n);/ 輸入選擇功能的編號while(n)switch(n)case 1 : in();break;/ 輸入商品信息case 2 : find();break;/ 查找商品信息case 3 : del();break;/ 刪除記錄case 4 : modify();break;/ 修改記錄case 5 : ord

6、er();break;/ 按總金額排序case 6 : orderstock(); break;/ 按庫存排序case 7 : findOOS();break;/out of Stock,查找無庫存商品case 8 : show();break;/ 顯示商品信息default:break;。6。getch();menu(); / 執行完功能再次顯示主菜單 scanf("%d",&n);return 0;2、子函數( 1)voidin();錄入商品信息用while 語句循環,直到用戶輸入n結束錄入;void in()int i,a,m=0;/m 記錄的條數char c

7、,h;FILE *fp;/ 定義文件指針if(fp=fopen("data.txt","a+")=NULL)/打開文件printf("不能打開 n");return;while(!feof(fp)if(fread(&commm,len,1,fp)=1)m+;fclose(fp);if(m=0)printf("沒有找到 n");elsesystem("cls");if(fp=fopen("data.txt","wb")=NULL)printf(&qu

8、ot;不能打開 ");return;。7。for(i=0;i<m;i+)fwrite (&commi,len,1,fp);/ 向指定磁盤文件寫入信息while(1)a=0;printf("請輸入 n");printf("編號: ");scanf("%d",&commm.num);/ 商品編號for(i=0;i<m;i+)if(commi.num=commm.num) a=1;printf(" 該記錄已存在,按 q返回主菜單,按任意鍵重新輸入 "); scanf("%s

9、",&c);break;if(a=1&&(c=113|c=81)/ 判斷 q是否被按下break;elseif(a=1&&(c!=113|c!=81)system("cls");continue;printf("商品名 :");scanf("%s",);/ 輸入商品名稱printf("單價 :");scanf("%lf",&commm.price);/ 輸入商品單價printf("數量 :");sc

10、anf("%lf",&commm.count);/ 輸入商品數量commm.total=commm.price*commm.count;/ 計算出總金額if(fwrite(&commm,len,1,fp)!=1)/ 將新錄入的信息寫入指定的磁盤文件printf("不能保存 !");getch();。8。elseprintf("%s已經保存 !n",);m+;printf("是否繼續 ?(y/n):");/ 詢問是否繼續scanf("%s",&h);if

11、(h=121|h=89)continue;elsebreak;fclose(fp);printf("OK!n");( 2) void find()用戶輸入商品編號進行查找,找到則顯示,找不到則返回主菜單;FILE *fp;int snum,i,m=0;char c;if(fp=fopen("data.txt","rb")=NULL)printf("不能打開文件 n");return;while(!feof(fp)if(fread(&commm,len,1,fp)=1)m+;fclose(fp);if(m=0

12、)printf(" 沒有記錄 , 請使用 “輸入記錄 ”功能添加記錄 n"); return;printf("請輸入編號 :");scanf("%d",&snum);。9。for(i=0;i<m;i+)if(snum=commi.num)/ 查找輸入的編號是否在記錄中printf("已經找到該記錄,是否顯示?(y/n)");scanf("%s",&c);if(c=121|c=89)/ 判斷 y是否被按下printf("編號商品名稱單價數量總金額 tn")

13、;printf(form,data);/ 將查找出的結果按指定格式輸出break;elsereturn;if(i=m)printf("沒有找到相應的記錄!n");/ 未找到要查找的信息( 3) void del()刪除函數,輸入商品編號刪除相關商品;void del()FILE *fp;int snum,i,j,m=0;char a;if( (fp=fopen("data.txt","r+") )=NULL)/ 打開文件printf("不能打開文件 n");return;while(!feof(fp)if(frea

14、d(&commm,len,1,fp)=1)m+;fclose(fp);if(m=0)。10。printf("沒有記錄 !n");return;printf("請輸入編號 :");scanf("%d",&snum);for(i=0;i<m;i+)if(snum=commi.num)break;if(i=m)printf("沒有找到 !");getchar();return;printf("已經找到該記錄,是否刪除?(y/n)");scanf("%s",&a

15、mp;a);if(a=121|a=89)/ 判斷是否要進行刪除for(j=i;j<m;j+)commj=commj+1;/ 將后一個記錄移到前一個記錄的位置m-;/ 記錄的總個數減 1printf("成功刪除 !");if( (fp=fopen("data.txt","wb") )=NULL)printf("不能打開 !n");return;for(j=0;j<m;j+)/ 將更改后的記錄重新寫入指定的磁盤文件中if(fwrite(&commj ,len,1,fp)!=1)printf(&quo

16、t;不能保存 !n");getch();fclose(fp);。11。(4) void modify()修改函數,輸入商品編號用for 循環與 if 語句找到該商品信息并進行修改;FILE *fp;int i,j,m=0,snum;if( (fp=fopen("data.txt","r+") )=NULL)/ 打開文件printf("不能打開文件 !n");return;while(!feof(fp)if(fread(&commm,len,1,fp)=1)m+;if(m=0)printf("沒有記錄 !n&

17、quot;);fclose(fp);return;printf("請輸入要修改的記錄信息的編號n 編號 :");scanf("%d",&snum);for(i=0;i<m;i+)/ 檢索記錄中是否有要修改的信息if(snum=commi.num)break;if(snum!=commi.num)/ 判斷是否有記錄printf("沒有找到記錄,請重試 n");return;printf("已經找到該記錄,可以進行修改!n");printf("商品名 :");scanf("%

18、s",);/ 輸入名字printf("單價 :");scanf("%lf",&commi.price);/ 輸入商品單價printf("數量 :");。12。scanf("%lf",&commi.count);/ 輸入商品數量printf("修改成功 !");commi.total=commi.price*commi.count;if( (fp=fopen("data.txt","wb") )=NULL)pri

19、ntf("不能打開文件 n");return;for(j=0;j<m;j+)/ 將新修改的信息寫入指定的磁盤文件中if(fwrite(&commj ,len,1,fp)!=1)printf("不能保存 !");getch();fclose(fp);( 5)void findOOS()查找無貨商品,用for 循環與 if 語句找到該商品信息,并顯示;FILE *fp;int i,m=0;if ( (fp=fopen("data.txt","rb") )=NULL)/ 打開文件printf("不

20、能打開文件 n");return;while(!feof(fp)if(fread (&commm,len,1,fp) =1)m+;fclose(fp);if(m=0)printf(" 沒有記錄 , 請使用 “輸入記錄 ”功能添加記錄 n"); return;。13。printf("以下商品缺貨: nn 編號商品名稱單價數量總金額 tn");for(i=0;i<m;i+)if (0.0=commi.count)/ 查找是否有誤庫存商品printf(form,data);/ 將查找出的結果按指定格式輸出if (i=m)printf(&

21、quot;查找完畢 n");/ 完成查找(6) void order()按金額對商品進行由多到少排序FILE *fp;struct goods t;int i=0,j=0,m=0;if ( (fp=fopen("data.txt","r+") )=NULL)/ 打開文件printf("can not open!n");return;while(!feof(fp)if(fread (&commm ,len,1,fp) =1)m+;fclose(fp);if(m=0)printf("no record!n&qu

22、ot;);return;if( (fp=fopen("data.txt","wb") )= NULL)printf("can not openn");return;for(i=0;i<m-1;i+)。14。for(j=i+1;j<m;j+)/ 雙重循環實現比較并交換if(commi.total<commj.total)t=commi;commi=commj;commj=t;if( (fp=fopen("data.txt","wb") )= NULL)printf("c

23、an not openn");return;for(i=0;i<m;i+)/ 將重新排好序的內容重新寫入指定的磁盤文件中if(fwrite(&commi ,len,1,fp)!=1)printf("%s can not save!n");getch();fclose(fp);printf("保存成功 !n");(7) void orderstock()按商品數量對商品進行由多到少排序FILE *fp;/ 定義文件指針struct goods t;int i=0,j=0,m=0;if( (fp=fopen("data.tx

24、t","r+") )= NULL)/ 打開文件printf("無法打開 n");return;while(!feof(fp)if(fread(&commm ,len,1,fp)=1)m+;。15。fclose(fp);if(m=0)printf("no record!n");return;if( (fp=fopen("data.txt","wb") )=NULL)printf("無法打開 n");return;for(i=0;i<m-1;i+)for(

25、j=i+1;j<m;j+) / 雙重循環實現比較并交換 if(commi.count<commj.count)t=commi;commi=commj;commj=t;if( (fp=fopen ("data.txt","wb") )= NULL)printf("無法打開 n");return;for(i=0;i<m;i+)/ 將重新排好序的內容重新寫入指定的磁盤文件中if(fwrite (&commi ,len,1,fp) !=1)printf("%s無法保存 n");getch();fc

26、lose(fp);printf("保存成功 !n");(8) void show()顯示商品信息FILE *fp;int i,m=0;。16。if( (fp=fopen("data.txt","rb") )= NULL )/ 打開文件printf("不能打開文件 n");return;while(!feof(fp)if (fread(&commm,len,1,fp)=1)m+;fclose(fp);if(m=0)printf(" 沒有記錄 , 請使用 “輸入記錄 ”功能添加記錄 n");

27、 return;printf("商品信息: nn 編號商品名稱單價數量總金額 tn");for ( i=0 ; i<m ; i+ )printf(form,data);/ 將商品信息按指定格式輸出printf("n");printf("顯示完畢,按任意鍵返回主菜單n");/ 完成查找3、 程序測試在主菜單中選擇1當用戶輸入 1并按回車鍵后,即可進入數據輸入界面。若是第一次運行該程序,應能實現從鍵盤輸入學生信息到文件中, 當輸入的編號重復時, 應能不予接收, 當輸入完時提示是否繼續,按 y繼續,按 n結束輸入,返回主菜單界面。若非第一次運行該程序,應能實現從文件中讀入商品信息,并進入增加商品記錄畫面。其輸入記錄過程如下圖所示。17。在主菜單中選擇

溫馨提示

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

評論

0/150

提交評論