




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)訓(xùn)報(bào)告題 目: 超市商品管理院 系: 信息科技學(xué)院專 業(yè): 通信工程姓 名: XXX學(xué) 號(hào): 1251100XXX 指導(dǎo)教師: 楊永清日 期: 2013年9月15日 桂林電子科技大學(xué)信息科技學(xué)院超市商品管理本題目設(shè)計(jì)目的是訓(xùn)練學(xué)生的基本編程能力,了解管理信息系統(tǒng)的開(kāi)發(fā)流程,熟悉C語(yǔ)言的文件和單鏈表的各種基本操作。本程序中涉及結(jié)構(gòu)體、單鏈表、文件等方面的知識(shí)。通過(guò)本程序的訓(xùn)練,使學(xué)生能對(duì)C語(yǔ)言的文件操作有一個(gè)更深刻的了解,掌握利用單鏈表存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)對(duì)學(xué)生成績(jī)管理的原理,為進(jìn)一步開(kāi)發(fā)出高質(zhì)量的管理信息系統(tǒng)打下堅(jiān)實(shí)的基礎(chǔ)。1、 程序簡(jiǎn)介本程序用VC+6.0編譯,運(yùn)行于windows系統(tǒng)下。1.1、
2、本程序應(yīng)具有以下功能:1、 文件操作功能文件操作:可建立、打開(kāi)、保存、關(guān)閉數(shù)據(jù)文件。如果是新建的文件,可輸入商品信息數(shù)據(jù):數(shù)據(jù)包括商品編號(hào)、商品名、商品類別、商品數(shù)量、商品價(jià)格等。2、數(shù)據(jù)輸入功能輸入信息:輸入商品編號(hào)、數(shù)量完成進(jìn)貨操作。3、 數(shù)據(jù)添加、修改、刪除功能添加:添加一種或多種新商品,并能輸入其商品信息。修改:修改商品信息,可包括商品編號(hào)、名稱、種類、數(shù)量和單價(jià)。刪除:刪除一類或多類商品的所有信息。4、 計(jì)算功能可通過(guò)查詢商品信息功能,自動(dòng)計(jì)算并輸出需要進(jìn)貨的商品信息。通過(guò)商品數(shù)量及單價(jià),自動(dòng)計(jì)算出商品總價(jià)。5、 查詢功能可分別按商品編號(hào)和需要進(jìn)貨的商品進(jìn)行查詢。6、 排序功能可分別
3、按商品編號(hào)、金額等進(jìn)行排序。7、 數(shù)據(jù)顯示功能 可分別瀏覽輸入、查詢和排序后的商品信息。2、總體設(shè)計(jì)圖超 市 商 品 管 理 系 統(tǒng)采用模塊化程序設(shè)計(jì)方法,將較大任務(wù)按一定規(guī)則分成一些較小任務(wù),各個(gè)模塊之間既獨(dú)立又相關(guān)。輸入記錄排序記錄更新記錄查詢刪除記錄修改記錄按總金額排序按庫(kù)存排序顯示所有記錄按編號(hào)查詢按是否缺貨查詢文件寫(xiě)入文件讀取商 品 超 市 管 理 模 塊 圖2.1界面設(shè)計(jì)主菜單輸入界面:信息顯示界面:2.2詳細(xì)設(shè)計(jì):(以下為部分代碼)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)struct goodsint num;/編號(hào)char name15;/名稱double price;/單價(jià)double count;/數(shù)
4、量double total;/總金額;struct goods comm50;/定義結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體struct goods將用于存儲(chǔ)商品的基本信息1、 主函數(shù)main()定義主函數(shù)為空類型(void);利用選擇結(jié)構(gòu)(switch)實(shí)現(xiàn)在在主函數(shù)中的調(diào)用各個(gè)子函數(shù)。main()函數(shù)執(zhí)行流程system("color f3");改變顏色system("title 超市商品信息管理系統(tǒng)");修改窗口名稱輸出菜單switch1輸入商品信息2查找商品信息3刪除商品信息4修改商品信息5按總金額排序商品信息6按庫(kù)存商品信息7查詢?nèi)必浬唐?瀏覽商品信息0退出清屏幕in
5、t main(void)int n;system("color f3");/改變顏色system("title 超市商品信息管理系統(tǒng)");/修改窗口名稱menu();/顯示主菜單scanf("%d",&n);/輸入選擇功能的編號(hào)while(n)switch(n) case 1 : in(); break;/輸入商品信息case 2 : find(); break;/查找商品信息 case 3 : del(); break;/刪除記錄case 4 : modify(); break;/修改記錄case 5 : order();
6、break;/按總金額排序case 6 : orderstock(); break;/按庫(kù)存排序case 7 : findOOS(); break;/out of Stock,查找無(wú)庫(kù)存商品case 8 : show(); break;/顯示商品信息default: break;getch();menu();/執(zhí)行完功能再次顯示主菜單scanf("%d",&n);return 0;2、子函數(shù)(1)void in();錄入商品信息用while語(yǔ)句循環(huán),直到用戶輸入n結(jié)束錄入;void in()int i,a,m=0;/m記錄的條數(shù)char c,h;FILE *fp;/
7、定義文件指針if(fp=fopen("data.txt","a+")=NULL)/打開(kāi)文件printf("不能打開(kāi)n");return;while(!feof(fp)if(fread(&commm,len,1,fp)=1)m+;fclose(fp);if(m=0)printf("沒(méi)有找到n");elsesystem("cls");if(fp=fopen("data.txt","wb")=NULL)printf("不能打開(kāi)");r
8、eturn;for(i=0;i<m;i+)fwrite (&commi,len,1,fp);/向指定磁盤文件寫(xiě)入信息while(1)a=0;printf("請(qǐng)輸入n");printf("編號(hào):");scanf("%d",&commm.num);/商品編號(hào)for(i=0;i<m;i+)if(commi.num=commm.num)a=1;printf("該記錄已存在,按q返回主菜單,按任意鍵重新輸入");scanf("%s",&c);break;if(a=1&a
9、mp;&(c=113|c=81)/判斷q是否被按下break;elseif(a=1&&(c!=113|c!=81)system("cls");continue;printf("商品名:");scanf("%s",);/輸入商品名稱printf("單價(jià):");scanf("%lf",&commm.price);/輸入商品單價(jià)printf("數(shù)量:");scanf("%lf",&commm.count
10、);/輸入商品數(shù)量commm.total=commm.price*commm.count;/計(jì)算出總金額if(fwrite(&commm,len,1,fp)!=1)/將新錄入的信息寫(xiě)入指定的磁盤文件printf("不能保存!");getch();elseprintf("%s 已經(jīng)保存!n",);m+;printf("是否繼續(xù)?(y/n):"); /詢問(wèn)是否繼續(xù)scanf("%s",&h);if(h=121|h=89)continue;elsebreak;fclose(fp);pr
11、intf("OK!n");(2)void find()用戶輸入商品編號(hào)進(jìn)行查找,找到則顯示,找不到則返回主菜單; FILE *fp;int snum,i,m=0;char c;if(fp=fopen("data.txt","rb")=NULL) printf("不能打開(kāi)文件n");return;while(!feof(fp) if(fread(&commm,len,1,fp)=1) m+;fclose(fp);if(m=0) printf("沒(méi)有記錄,請(qǐng)使用“輸入記錄”功能添加記錄n")
12、;return;printf("請(qǐng)輸入編號(hào):");scanf("%d",&snum);for(i=0;i<m;i+)if(snum=commi.num)/查找輸入的編號(hào)是否在記錄中 printf("已經(jīng)找到該記錄,是否顯示?(y/n)");scanf("%s",&c);if(c=121|c=89)/判斷y是否被按下printf("編號(hào) 商品名稱 單價(jià) 數(shù)量 總金額 tn");printf(form,data);/將查找出的結(jié)果按指定格式輸出break;elsereturn;
13、if(i=m) printf("沒(méi)有找到相應(yīng)的記錄!n");/未找到要查找的信息(3)void del()刪除函數(shù),輸入商品編號(hào)刪除相關(guān)商品;void del()FILE *fp;int snum,i,j,m=0;char a;if( (fp=fopen("data.txt","r+") )=NULL)/打開(kāi)文件 printf("不能打開(kāi)文件n");return;while(!feof(fp) if(fread(&commm,len,1,fp)=1) m+;fclose(fp);if(m=0) printf
14、("沒(méi)有記錄!n");return;printf("請(qǐng)輸入編號(hào):");scanf("%d",&snum);for(i=0;i<m;i+)if(snum=commi.num)break;if(i=m)printf("沒(méi)有找到!");getchar();return;printf("已經(jīng)找到該記錄,是否刪除?(y/n)");scanf("%s",&a);if(a=121|a=89)/判斷是否要進(jìn)行刪除for(j=i;j<m;j+)commj=commj
15、+1;/將后一個(gè)記錄移到前一個(gè)記錄的位置m-;/記錄的總個(gè)數(shù)減1printf("成功刪除!");if( (fp=fopen("data.txt","wb") )=NULL) printf("不能打開(kāi)!n");return;for(j=0;j<m;j+)/將更改后的記錄重新寫(xiě)入指定的磁盤文件中if(fwrite(&commj ,len,1,fp)!=1) printf("不能保存!n");getch();fclose(fp);(4) void modify()修改函數(shù),輸入商品編號(hào)用
16、for循環(huán)與if語(yǔ)句找到該商品信息并進(jìn)行修改; FILE *fp;int i,j,m=0,snum;if( (fp=fopen("data.txt","r+") )=NULL)/打開(kāi)文件 printf("不能打開(kāi)文件!n");return;while(!feof(fp) if(fread(&commm,len,1,fp)=1) m+;if(m=0) printf("沒(méi)有記錄!n");fclose(fp);return;printf("請(qǐng)輸入要修改的記錄信息的編號(hào)n編號(hào):");scanf(
17、"%d",&snum);for(i=0;i<m;i+)/檢索記錄中是否有要修改的信息if(snum=commi.num)break;if(snum!=commi.num)/判斷是否有記錄printf("沒(méi)有找到記錄,請(qǐng)重試n");return;printf("已經(jīng)找到該記錄,可以進(jìn)行修改!n"); printf("商品名:");scanf("%s",);/輸入名字printf("單價(jià):");scanf("%lf",&
18、;commi.price);/輸入商品單價(jià)printf("數(shù)量:");scanf("%lf",&commi.count);/輸入商品數(shù)量printf("修改成功!");commi.total=commi.price*commi.count;if( (fp=fopen("data.txt","wb") )=NULL) printf("不能打開(kāi)文件n");return;for(j=0;j<m;j+)/將新修改的信息寫(xiě)入指定的磁盤文件中if(fwrite(&c
19、ommj ,len,1,fp)!=1) printf("不能保存!"); getch(); fclose(fp);(5)void findOOS()查找無(wú)貨商品,用for循環(huán)與if語(yǔ)句找到該商品信息,并顯示; FILE *fp;int i,m=0;if ( (fp=fopen("data.txt","rb") )=NULL)/打開(kāi)文件 printf("不能打開(kāi)文件n");return;while(!feof(fp) if(fread (&commm,len,1,fp) =1) m+;fclose(fp);i
20、f(m=0) printf("沒(méi)有記錄,請(qǐng)使用“輸入記錄”功能添加記錄n");return;printf(" 以下商品缺貨:nn編號(hào) 商品名稱 單價(jià) 數(shù)量 總金額 tn");for(i=0;i<m;i+)if (0.0=commi.count)/查找是否有誤庫(kù)存商品printf(form,data);/將查找出的結(jié)果按指定格式輸出 if (i=m) printf("查找完畢n");/完成查找(6) void order()按金額對(duì)商品進(jìn)行由多到少排序 FILE *fp;struct goods t;int i=0,j=0,m=0
21、;if ( (fp=fopen("data.txt","r+") )=NULL)/打開(kāi)文件 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");return;if( (fp=fopen("data.txt","wb") )= NULL) printf("can n
22、ot openn");return;for(i=0;i<m-1;i+)for(j=i+1;j<m;j+)/雙重循環(huán)實(shí)現(xiàn)比較并交換if(commi.total<commj.total) t=commi;commi=commj;commj=t;if( (fp=fopen("data.txt","wb") )= NULL) printf("can not openn");return;for(i=0;i<m;i+)/將重新排好序的內(nèi)容重新寫(xiě)入指定的磁盤文件中if(fwrite(&commi ,len
23、,1,fp)!=1) printf("%s can not save!n"); getch();fclose(fp);printf("保存成功!n");(7) void orderstock()按商品數(shù)量對(duì)商品進(jìn)行由多到少排序 FILE *fp;/定義文件指針struct goods t;int i=0,j=0,m=0;if( (fp=fopen("data.txt","r+") )= NULL)/打開(kāi)文件 printf("無(wú)法打開(kāi)n"); return;while(!feof(fp) if(f
24、read(&commm ,len,1,fp)=1) m+;fclose(fp);if(m=0) printf("no record!n");return;if( (fp=fopen("data.txt","wb") )=NULL) printf("無(wú)法打開(kāi)n");return;for(i=0;i<m-1;i+)for(j=i+1;j<m;j+)/雙重循環(huán)實(shí)現(xiàn)比較并交換if(commi.count<commj.count) t=commi;commi=commj;commj=t;if( (f
25、p=fopen ("data.txt","wb") )= NULL) printf("無(wú)法打開(kāi)n");return;for(i=0;i<m;i+)/將重新排好序的內(nèi)容重新寫(xiě)入指定的磁盤文件中if(fwrite (&commi ,len,1,fp) !=1) printf("%s 無(wú)法保存n"); getch();fclose(fp);printf("保存成功!n"); (8) void show()顯示商品信息 FILE *fp;int i,m=0;if( (fp=fopen(&q
26、uot;data.txt","rb") )= NULL )/打開(kāi)文件 printf("不能打開(kāi)文件n");return;while(!feof(fp) if (fread(&commm,len,1,fp)=1) m+;fclose(fp);if(m=0) printf("沒(méi)有記錄,請(qǐng)使用“輸入記錄”功能添加記錄n");return;printf(" 商品信息:nn編號(hào) 商品名稱 單價(jià) 數(shù)量 總金額 tn");for ( i=0 ; i<m ; i+ )printf(form,data);/將商品信息按指定格式輸出printf("n");printf("顯示完畢,按任意鍵返回主菜單n");/完成查找3、 程序測(cè)試l 在主菜單中選擇1當(dāng)用戶輸入1并按回車鍵后,即可進(jìn)入數(shù)據(jù)輸入界面。若是第一次運(yùn)行該程序,應(yīng)能實(shí)現(xiàn)從鍵盤輸入學(xué)生信息到文件中,當(dāng)輸入的編號(hào)重復(fù)時(shí),應(yīng)能不予接收,當(dāng)輸入完時(shí)提示是否繼續(xù),按y繼續(xù),按n結(jié)束輸入,返回主菜單界面。若非第一次運(yùn)行該程序,應(yīng)能實(shí)現(xiàn)從文件中讀入商品信
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 云南省昭通一中教研聯(lián)盟2024-2025學(xué)年高一上學(xué)期期中質(zhì)量檢測(cè)地理試題(A卷)(含答案)
- 江蘇省連云港市海州區(qū)2024-2025學(xué)年七年級(jí)上學(xué)期期末生物學(xué)試題(含答案)
- 水處理技術(shù)開(kāi)發(fā)合同
- 人工智能金融風(fēng)險(xiǎn)評(píng)估與控制手冊(cè)
- 生物學(xué)基因工程研究熱點(diǎn)練習(xí)題集編選
- 股份制公司運(yùn)營(yíng)指南
- 航空模型制造安全責(zé)任協(xié)議
- 高分子化學(xué)材料性質(zhì)題庫(kù)
- 語(yǔ)言學(xué)語(yǔ)言應(yīng)用知識(shí)問(wèn)答
- 高中英語(yǔ)閱讀技巧課:如何快速找到文章主旨與細(xì)節(jié)教案
- 2024年大慶醫(yī)學(xué)高等??茖W(xué)校高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 四川省綿陽(yáng)市2025屆高三上學(xué)期第二次診斷性考試語(yǔ)文試題(含答案)
- 2025年1月 浙江首考英語(yǔ)試卷
- 2024年07月威海市商業(yè)銀行校園招考大學(xué)生報(bào)到筆試歷年參考題庫(kù)附帶答案詳解
- 房屋修繕工程難點(diǎn)、重點(diǎn)分析及應(yīng)對(duì)措施
- 《汽豐田服務(wù)流程》課件
- 財(cái)務(wù)管理(山東聯(lián)盟-青島科技大學(xué))知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋青島科技大學(xué)
- 2024初中語(yǔ)文新教材培訓(xùn):閱讀綜合實(shí)踐欄目的設(shè)計(jì)與使用解讀
- 《高壓直流輸電換流閥用金屬管狀電阻器技術(shù)規(guī)范(征求意見(jiàn)稿)》
- GJB9001C-2017版標(biāo)準(zhǔn)培訓(xùn)課件
- 天津市南開(kāi)區(qū)2025屆高三下學(xué)期一??荚囉⒄Z(yǔ)試題含解析
評(píng)論
0/150
提交評(píng)論