C語言課程設計商場商品信息管理系統_第1頁
C語言課程設計商場商品信息管理系統_第2頁
C語言課程設計商場商品信息管理系統_第3頁
C語言課程設計商場商品信息管理系統_第4頁
C語言課程設計商場商品信息管理系統_第5頁
已閱讀5頁,還剩22頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、目 錄1 系統分析21.1 課程設計內容21.2 系統功能需求分析21.3 數據結構設計32 系統設計32.1 總體設計32.2 詳細設計42.2.1 界面設計42.2.2 各功能模塊的設計63 系統編碼設計93.1 main函數94 系統運行225 總結2627 / 27文檔可自由編輯打印1 系統分析1.1 課程設計內容商場商品信息管理系統1.2 系統功能需求分析本系統應具有以下功能:1、 文件操作功能 文件操作:可建立、打開、保存、關閉數據文件。如果是新建的文件,可輸入商品信息數據:數據包括商品編號、商品名、商品類別、商品數量、商品價格等。2、數據輸入功能輸入進貨信息:輸入商品編號、數量完

2、成進貨操作。輸入銷售信息:輸入商品編號、數量完成銷售操作,注意當銷售數量大于商品數量時,應出現錯誤提示。3、 數據添加、修改、刪除功能添加:添加一種或多種新商品,并能輸入其商品信息。修改:修改商品信息,可包括商品編號、名稱、種類、數量和單價。刪除:刪除一類或多類商品的所有信息。4、 計算功能 可通過查詢商品信息功能,自動計算并輸出需要進貨的商品信息。5、 查詢功能 可分別按商品編號、名稱、類別和需要進貨的商品進行查詢。6、 排序功能 可分別按商品編號、名稱、類別等進行排序。7、 數據顯示功能 可分別瀏覽輸入、查詢和排序后的商品信息。1.3 數據結構設計struct goods /*商品結構體*

3、/ long int num; /*商品編號*/ char name20; /*商品名稱*/ char sort20; /*商品類別*/ long int count; /*商品庫存量*/ long int price; /*商品單價*/ goods200; /*最多200個商品*/2 系統設計2.1 總體設計按系統分析的功能要求將系統劃分為以下幾個主要功能模塊:1、 文件管理n 文件打開、關閉:對于剛輸入或進行操作后的商品信息,在建立新的商品庫存量后,可以把其保存在一個文件中,并對該文件可進行打開和關閉操作。2、 進出貨管理n 商品進貨: 輸入數據后商品信息能自動更新進行添加n 商品銷售:

4、輸入數據后商品信息能自動更新進行減少三、商品數據管理n 增加/刪除商品: 添加或刪除某條商品的信息n 修改商品信息: 對某條商品的信息進行修改四、瀏覽商品信息管理n 查詢商品信息:可分別按商品編號、名稱、類別或需要進貨商品查詢n 排序商品信息: 可按商品編號、名稱、類別分別排排序n 瀏覽商品信息:可瀏覽輸入、查詢或排序后的數據。(此處可用圖形描述功能模塊劃分,類似下圖)商場商品信息管理系統商品數據管理瀏信覽息商管品理文件管理進出貨管理打開關閉保存查詢數據輸入數據排序數據修改添加出貨進貨刪除2.2 詳細設計2.2.1 界面設計1、 菜單設計n 歡迎界面:n 系統提示:n 菜單設計:2、 輸入界面

5、的設計3、 信息顯示界面的設計2.2.2 各功能模塊的設計根據劃分的功能模塊,定義以下函數實現各功能:(這部分應介紹各函數的原型,各功能模塊實現所用的算法,可用流程圖描述)1、 主函數main()定義主函數為空類型(void);利用選擇結構(switch)實現在在主函數中的調用各個子函數,利用goto 和子函數中的return語句實現返回主菜單的循環。聲明各個子函數輸出歡迎界面輸出菜單switch(m)1輸入商品信息2排序商品信息3輸入商品進貨信息4輸入商品銷售信息5增加/刪除商品6修改商品信息7查詢商品信息8瀏覽商品信息9保存商品信息清屏幕2、 子函數(1) void input():<

6、; 輸入函數 >確定新的庫存量n,輸入商品信息,用for循環語句直到輸入商品種類等于n,結束輸入;scanf(n)for(i=0;i<=n;i+) 將數據存入結構體成員return(2) void sequence():< 排序函數 >對已有的商品進行排序,可按商品編號、名稱、類別進行排序;long temp; char p130,p230;按編號排序for(k=0;k<n-1;k+);for(i=0;i<n-k-1;i+)if(goodsi.num>goodsi+1.num) 是 排序輸出排序后結果按名稱排序for(k=0;k<n-1;k+)

7、for(i=0;i<n-k-1;i+)if(strcmp(,goodsi+1.name)>0) 是 排序輸出排序后結果按類別排序for(k=0;k<n-1;k+) for(i=0;i<n-k-1;i+)if(strcmp(goodsi.sort,goodsi+1.sort)>0) 是 排序輸出排序后結果(3) void purchase():< 進貨函數 >進貨函數主要是針對已有庫存的商品,在原來的商品數量再增加: for(i=0;i<n;i+)if(temp=goodsi.num); 是 輸入數量 Return (4) v

8、oid sale():< 銷售函數 >要求用戶輸入所銷售的編號,系統用for 循環查詢該商品是否存在,不存在要求再進行輸入,直到輸入正確,輸出銷售商品: for(i=0;i<n;i+)if(k=goodsi.num)if(a>goodsi.count) 出現輸入錯誤提示;重新輸入scanf; for(i=0;i<n;i+) 輸出銷售商品(5) void edit():< 添加/刪除商品 >因為在進貨函數已經實現對已有商品的數量的增加,此模塊函數主要實現對新商品的添加或對舊商品的刪除,并自動處理數據,可以在瀏覽中輸出,用選擇語句switch進行倆者操作的

9、選擇:定義變量long temp; 聲明函數void add(); void dele();switch(k) k=1 k=2 add(); dele(); break; break;(6) void correct():< 修改數據函數 >對有錯誤信息商品進行修改,輸入需要修改的商品編號,用for 循環與if語句找到此商品,重新輸入該商品的新信息,并輸出: long temp; scanf(temp); for(i=0;i<n;i+)if(temp=goodsi.num)輸入新信息 for(i=0;i<n;i+) 輸出修改后商品信息(7) void search():

10、< 查詢函數 >用switch(k)語句可分別按商品編號、名稱、類別或需要進貨商品查詢;每個case選擇中均用for語句查找要查詢的商品,并輸出查詢結果。 long temp1;char temp220,temp320; switch(k) case(k) 輸出查詢商品信息(8) void scan():< 瀏覽商品函數 >可分別進行瀏覽輸入的商品信息、查詢的商品信息、排序后商品信息,用switch 進行這三種方式的選擇。 scnaf ( ) switch(k) case for(i=0;i<n;i+) 輸出所要瀏覽信息; break;(9) void reser

11、ve():< 保存文件 >建立文件FILE *fp;char 用來存放文件保存路徑以及文件名,進行清屏,輸入文件路徑及文件名,利用fp=fopen("file","w+")實現創建并打開一個文件,并得到該文件的地址的功能,顯示fprintf(fp,"商品編號t商品名 t商品類別t商品數量t商品價格n"); 最后輸出已保存文件,程序中是由PR("商品編號t商品名 t商品類別t商品數量t商品價格n");語句執行。scanf(n)for(i=0;i<=n;i+) 將數據存入結構體成員return3 系統

12、編碼設計(這部分將代碼列出,注意,每個函數開始處要介紹函數的功能,重要的代碼應有注釋,代碼格式按鋸齒式編排)3.1 main函數#include "stdio.h"#include "string.h"#include "stdlib.h"#define PR printf#define SC scanf struct goods long int num; char name20; char sort20; long int count; long int price; goods200; int k,n,i; void main

13、() void input();void sequence();void purchase(); void sell(); void edit(); void correct(); void search(); void scan(); void reserve(); void exit(); PR("n *n *tttttttt *n");PR(" * *");PR("n *tttttttt *n * Welcometttttt *n *tttttttt *n");PR(" *tt to go into .tttt * &

14、quot;);PR("n *tttttttt *n");PR(" * -the Goods Information Manageaent System- *n *tttttttt *n ");PR(" * *n");PR(" *tttttttt *n *");PR("nntPlease press any key to continue:");getch(); system("cls");PR("nn -$-$-$-$-$-$-$-$-$-");PR(&q

15、uot;n 系統使用-溫馨提示:nn 商品編號、數量、單價:采用十進制數,規定長度最長為8位;nn 商品名稱為26位字母組成字符串,長度最長為20位;nnt 商品類別:以26個小寫字母分別代表著26種商品類別;nnt 該商品需要進貨的庫存量:count<50;n");PR(" -$-$-$-$-$-$-$-$-$-");PR(" nplease press any key to continue");getch();system("cls"); /*清屏*/ lp: for(i=0;i<1;i+) PR(&quo

16、t;nnn"); PR("nttt 商品信息管理系統tnn"); PR("t 1 輸入商品信息nn"); PR("t 2 排序商品信息nn"); PR("t 3 輸入進貨信息tt6 修改商品信息nn"); PR("t 4 輸入銷售信息tt7 查詢商品信息nn"); PR("t 5 增加/刪除商品tt8 瀏覽商品信息nn"); PR("ttttt9 保存商品信息nn"); PR(" tt ");/*菜單選擇界面*/ PR(&qu

17、ot;nn"); PR("t請選擇您所要的操作(或選擇(0)退出):"); SC("%d",&k); system("cls"); switch(k) /*用switch語句實現功能選擇*/ case 1: input();break; case 2: sequence();break; case 3: purchase();break; case 4: sell();break; case 5: edit();break; case 6: correct();break; case 7: search();brea

18、k; case 8: scan();break; case 9: reserve();break; case 0: PR("nnt / / / / / _ nnt謝謝使用,歡迎再來,再見O(_)O");exit(0); /*退出系統*/ default: puts("輸入錯誤,請按任意健返回主菜單:n"); break; system("cls"); /*清屏*/ goto lp; /*返回主界面*/ void input() /*功能1:輸入商品信息*/ PR("n 請輸入需要建立新庫存的商品種類數量:"); S

19、C("%d",&n); system("cls"); PR("n n"); for(i=0;i<n;i+) /*用循環實現輸入n個商品*/ PR("nt*請輸入商品的編號:"); SC("%ld",&goodsi.num); PR("nt 請輸入商品的名稱:"); SC("%s",); PR("nt 請輸入商品的種類:"); SC("%s",goodsi.sort); PR

20、("nt 請輸入商品的數量:"); SC("%d",&goodsi.count); PR("nt 請輸入商品的單價:"); SC("%d",&goodsi.price); PR("n n"); PR("tPlease press any key to continue:"); getch(); return; /*返回主界面*/ void sequence() /*功能2:排序商品信息*/ long temp; char p130,p230; for(k=0;

21、k<n-1;k+) /*(1): 按編號排序*/ for(i=0;i<n-k-1;i+) /*用起泡法排序*/ if(goodsi.num>goodsi+1.num) /*按編號由小到大排序*/ temp=goodsi.num; goodsi.num=goodsi+1.num; goodsi+1.num=temp; strcpy(p1,); strcpy(,goodsi+1.name); strcpy(goodsi+1.name,p1); strcpy(p2,goodsi.sort); strcpy(goodsi.sort,good

22、si+1.sort); strcpy(goodsi+1.sort,p2); PR("-"); PR("ntt按商品編號排序后的商品信息nn"); PR("t商品編號 商品名稱 商品類別 商品數量 商品單價n"); /*輸出排序后商品信息*/ for(i=0;i<n;i+) PR("t %5ld %5s %5s %5ld %5ldn",goodsi.num,,goodsi.sort,goodsi.count,goodsi.price); for(k=0;k<n-1;k+) /*(2)

23、: 按商品名稱排序*/ for(i=0;i<n-k-1;i+) if(strcmp(,goodsi+1.name)>0) strcpy(p1,); strcpy(,goodsi+1.name); strcpy(goodsi+1.name,p1); temp=goodsi.num; goodsi.num=goodsi+1.num; goodsi+1.num=temp; strcpy(p2,goodsi.sort); strcpy(goodsi.sort,goodsi+1.sort); strcpy(goodsi+1.s

24、ort,p2); PR("-"); PR("ntt按商品名稱排序后的商品信息n"); PR("nt商品名稱 商品編號 商品類別 商品數量 商品單價n"); /*輸出排序后商品信息*/ for(i=0;i<n;i+) PR("t %5s %5ld %5s %5ld %5ldn",,goodsi.num,goodsi.sort,goodsi.count,goodsi.price); for(k=0;k<n-1;k+) /*(3): 按商品類別排序*/ for(i=0;i<n-k-

25、1;i+) /*用起泡法排序*/ if(strcmp(goodsi.sort,goodsi+1.sort)>0) strcpy(p2,goodsi.sort); strcpy(goodsi.sort,goodsi+1.sort); strcpy(goodsi+1.sort,p2); temp=goodsi.num; goodsi.num=goodsi+1.num; goodsi+1.num=temp; strcpy(p1,); strcpy(,goodsi+1.name); strcpy(goodsi+1.name,p1); PR("

26、-"); PR("ntt按商品類別排序后的商品信息nn"); PR("t商品類別 商品編號 商品名稱 商品數量 商品單價n"); /*輸出排序后商品信息*/ for(i=0;i<n;i+) PR("t %5s %5ld %5s %5ld %5ldn",goodsi.sort,goodsi.num,,goodsi.count,goodsi.price); PR("-"); PR("please press any key to continue:"); get

27、ch(); return; /*返回主界面*/ void purchase() /*功能3:進貨商品信息*/ long temp; /*定義臨時變量表示剛進貨的商品編號*/ int j; PR("nt5請輸入剛進貨的商品編號:"); SC("%ld",&temp); PR("nt5請輸入剛進貨的商品數量:"); SC("%d",&j); PR("nnntpress any key to contiue:"); getch(); system("cls"); P

28、R("nt輸出進貨后的商品信息:"); for(i=0;i<n;i+) /*循環,尋找與進貨相同的商品信息*/ if(temp=goodsi.num) goodsi.count=goodsi.count+j; /*自動更改商品數量*/ PR("nt商品編號 商品名 商品類別 商品數量 商品價格"); for(i=0;i<n;i+) /*循環,輸出進貨后的商品信息*/ PR("nt %4ld %4s %4s %ld %4ld",goodsi.num,,goodsi.sort,goodsi.count,g

29、oodsi.price); PR("nnttPress any key to enter menu:"); getch(); /*返回功能選擇界面*/ return; void sell() /*功能4:銷售商品信息*/ long temp; /*定義臨時變量temp表示剛銷售的商品編號*/ int j; PR("nt5請輸入剛銷售的商品編號:"); SC("%ld",&temp); PR("nt5請輸入剛銷售的商品數量:"); SC("%d",&j); for(i=0;i<

30、;n;i+) /*循環,找到剛銷售的商品信息*/ if(temp=goodsi.num) for(;j>goodsi.count;) /*如果銷售額大于庫存量,則出現錯誤提示*/ PR("nt售出數量大于商品原有數量,出現錯誤,請重新輸入:"); SC("%d",&j); goodsi.count=goodsi.count-j; /*完成自動更改商品數量的功能*/ PR("ntpress any key to contiue:"); getch(); system("cls"); /*清屏*/ PR(

31、"nn *銷售后商品信息:"); PR("nt商品類別 商品編號 商品名稱 商品數量 商品單價n"); for(i=0;i<n;i+) /*循環,輸出銷售后商品信息*/ PR("t %4s %4ld %4s %4ld %4ldn",goodsi.sort,goodsi.num,,goodsi.count,goodsi.price); PR("ntPress any key to enter menu:"); getch(); return; /*返回功能選擇界面*/ void edit(

32、) /*功能5:添加或刪除商品信息*/ void add(); /*聲明子函數*/void dele();PR("nt請選擇:1.添加商品信息; 2.刪除商品信息;");PR("t*請輸入 1或2 繼續:");SC("%d",&k);switch(k) /*用switch語句實現功能選擇*/ case 1: add();break; case 2: dele();break; getch(); return; /*返回主菜單*/ void add() /*添加商品信息*/ /*定義子函數*/ PR("t*請輸入所添加

33、商品的商品編號:"); SC("%ld",&goodsn.num); PR("nt請輸入所添加商品的名稱:"); SC("%s",); PR("nt請輸入所添加商品的類別:"); SC("%s",goodsn.sort); PR("nt請輸入所添加商品的數量:"); SC("%d",&goodsn.count); PR("nt請輸入所添加商品的價格:"); SC("%d"

34、;,&goodsn.price); n=n+1; PR("n"); void dele() /*刪除商品信息*/ /*定義子函數*/ int temp; /*定義局部變量*/ int j; for(i=0;i<n;i+) PR("nt商品編號 商品名 商品類別 商品數量 商品價格"); PR("nt %5ld %5s %5s %5ld %5ld",goodsi.num,,goodsi.sort,goodsi.count,goodsi.price); PR("n"); PR(&qu

35、ot;n"); PR("n*請輸入要刪除的商品編號:"); SC("%ld",&temp); PR("nn"); for(i=0;i<n;i+) if(temp=goodsi.num) for(j=i;j<n;j+) goodsj.num=goodsj+1.num; strcpy(,goodsj+1.name); strcpy(goodsj.sort,goodsj+1.sort); goodsj.count=goodsj+1.count; goodsj.price=goodsj+1.

36、price; n=n-1; /*商品總庫存量減少*/ for(i=0;i<n;i+) PR("nt商品編號 商品名 商品類別 商品數量 商品價格"); /*輸出刪除后的商品信息*/ PR("nt %5ld %5s %5s %5ld %5ld",goodsi.num,,goodsi.sort,goodsi.count,goodsi.price); PR("n"); PR("Please press any key to continue:"); getch(); return; /*返回主

37、界面*/ void correct() /*功能6:修改商品信息*/ long temp; /*定義局部變量*/PR("nt請輸入要修改的商品的編號:"); SC("%ld",&temp); /*輸入新的商品信息*/PR("n");for(i=0;i<n;i+) /*保存新的商品信息*/ if(temp=goodsi.num) PR("t請輸入一個新的的商品編號:"); SC("%ld",&goodsi.num); PR("nt請輸入新的商品的名稱:")

38、; SC("%s",); PR("nt請輸入新的商品的類別:"); SC("%s",goodsi.sort); PR("nt請輸入新的商品的數量:"); SC("%d",&goodsi.count); PR("nt請輸入新的商品價格:"); SC("%d",&goodsi.price); PR("n"); for(i=0;i<n;i+) PR("nt新的商品名稱 商品編號 商品類別

39、商品數量 商品單價n"); PR("t %4s %4ld %4s %4ld %4ld",,goodsi.num,goodsi.sort,goodsi.count,goodsi.price); PR("n"); PR("Please press any key to continue:"); /*返回功能選擇界面*/ getch(); return; /*返回主菜單*/ void search() /*功能7:查詢商品信息*/ int k; /*定義局部變量*/ long temp1; char temp

40、230,temp320; PR("nt5按商品編號查詢,請按1ttt5按商品名查詢,請按2nt5按商品類別查詢,請按3ttt5查需要進貨的商品,請按4n"); PR("nnnttt請輸入數字確定查詢方式:"); SC("%d",&k); PR("n"); PR("Press any key to continue:"); getch(); system("cls"); switch(k) /*實現查詢方式的選擇*/ case 1: PR("nnnnntt請輸

41、入要查詢的商品的編號:"); /*按商品編號查詢*/ SC("%ld",&temp1); system("cls"); /*清屏*/ for(i=0;i<n;i+) if(temp1=goodsi.num) PR("n"); PR("nt商品編號 商品名 商品類別 商品數量 商品價格"); PR("nt %5ld %5s %5s %5ld %5ld",goodsi.num,,goodsi.sort,goodsi.count,goodsi.price)

42、; break; /*跳出switch語句*/ case 2: PR("nnnnntt請輸入要查詢的商品名:"); /*按商品名查詢數據*/ SC("%s",temp2); system("cls"); for(i=0;i<n;i+) if(strcmp(temp2,)=0) PR("n"); PR("nt商品編號 商品名 商品類別 商品數量 商品價格"); PR("nt %5ld %5s %5s %5ld %5ld",goodsi.num,goo

43、,goodsi.sort,goodsi.count,goodsi.price); break; /*跳出switch語句*/ case 3: PR("nnnnntt請輸入要查詢的商品類別:"); /*按商品類別查詢數據*/ SC("%s",temp3); system("cls"); for(i=0;i<n;i+) if(strcmp(temp3,goodsi.sort)=0) PR("n"); PR("nt商品編號 商品名 商品類別 商品數量 商品價格"); PR(&qu

44、ot;nt %5ld %5s %5s %5ld %5ld",goodsi.num,,goodsi.sort,goodsi.count,goodsi.price); break; /*跳出switch語句*/ case 4: int a=50; for(i=0;i<n;i+) /*查詢需要進貨的商品名*/ if(goodsi.count<a) PR("ntt4需要進貨的商品名:%s 現有庫存量:%ldn",,goodsi.count); break; /*跳出switch語句*/ PR("nnttPr

45、ess any key to enter menu:"); getch(); return; /*返回主界面*/ void scan() /*功能8:瀏覽商品信息*/ PR("nt瀏覽輸入的商品信息,請按1nnt瀏覽查詢的商品信息,請按2nnt瀏覽排序后商品信息,請按3n");PR("請選擇:");SC("%d",&k); switch(k) case 1: PR("ttt瀏覽輸入的商品信息n"); PR("t商品編號 商品名 商品類別 商品數量 商品價格n");/*輸出瀏覽商

46、品信息*/ for(i=0;i<n;i+) PR("t%5ld %5s %5s %5ld %ld",goodsi.num,,goodsi.sort,goodsi.count,goodsi.price); PR("n"); PR("Press any key to enter menu:"); getch(); return; break; /*跳出switch語句*/ case 2: PR("ttt瀏覽查詢的商品信息n"); PR("t商品編號 商品名 商品類別 商品數量 商品價格n");/*輸出瀏覽商品信息*/ for(i=0;i<n;i+) PR("t%5ld %5s %5s %5ld %ld",goodsi.num,,goodsi.sort,goodsi.co

溫馨提示

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

評論

0/150

提交評論