



版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、課程設計課程名稱C 語言高級程序設計學院xxx小組成員 1XXX小組成員 2XXX小組成員 3XXX任課教師XXX2016 2017 學年第1 學期一所選題目與要求自動售貨機問題情景:分析學校教學樓自動售貨機的功能,設計一個自動售貨系統。功能要求:1. 系統能提供所售商品的清單(編號 , 名稱,單價,數量)2. 客戶輸入商品編號及購買數量, 系統顯示應付的金額, 輸入客戶實付的錢數,系統計算應找的錢數系統如果沒有足夠的庫存或零錢時, 現實應返還客戶已付的金額。(不考慮用支付寶付款的情況)3. 可增加商品種類, 增加商品庫存, 查詢商品庫存, 查詢商品銷售量及銷售額。成果要求:通過網絡教學平臺中
2、的“研究型教學”建立分組,每組 2-3 人,通過小組討論,確定每人的分工,并確定系統設計方案。各小組成員在網絡教學平臺上進行討論、 并完成最終的報告, 整個過程作為小組及個人工作評價的重要依據。各小組成員根據系統設計方案分模塊進行編程, 在系統各模塊編碼完成后集成調試,并最終完成整個系統的測試。根據下面的報告模板完成綜合實驗總結報告, 并打印成紙質報告, 作為大作業課程結束時上交。附:綜合實驗總結報告應包含的內容:1. 系統功能說明2. 程序結構程序結構說明重要數據說明函數清單/*每個函數的書寫格式*/函數名:所在文件名函數功能參數說明算法描述或程序代碼3. 系統運行結果4. 系統設計難點及其
3、解決方法5. 不足之處6. 人員分工說明二問題分析及算法設計主函數void main()/主函數模塊dosystem("pause");show(); / loop1:printf(" input(); /顯示屏幕函數,商品清單現在你有 %.1f 元 n 你可以選擇商品序號開始選購或按輸入函數0退出 n",M);了nif(M-goodsn-1.price>v) t=0;printf("對不起,售貨機沒有足夠的零錢謝謝光臨 ! 退還 %.1f 元 n",M);break; /判斷售貨機是否有足夠的零錢,0 表無if(n=0) /確
4、認用戶是選擇離開還是買東西開始購買t=1;change(M); /找零函數else loop2:sell(n,M,1,1); /購買函數if(A=0)/input(); /貨沒有了怎么辦輸入函數.if(n=0) /沒貨離開change(M); /找錢函數else /繼續購買其它商品goto loop2;返回至購買函數 /else/ifelse if(B=0)/沒錢了怎么辦.if(m1=0) /離開change(M);返回至找零函數else/加錢.goto loop1;返回至再次購買 /else /else ifelse/有錢又有貨,繼續選goto loop1;返回至購買程序 /else whi
5、le(1); /main結構體定義struct goods/定義物品清單int number;char name10;float price;int quantity; goods9 =1,"可口可樂",4,5,5,"雪碧 ",2.5,5,",3,5,2,"拿鐵咖啡",4,5,3,"橙汁 ",3,5,4,"奶茶6,"礦泉水 ",2,5,7,"椰子汁",2.5,5,8,"格瓦斯 ",3,5;struct money/定義錢的種類,數量用于
6、記錄找零的某值張數float moneys;int mount; money2 =1,0,0.5,0;被調用的函數float show() /顯示模塊 - 屏幕int input() /輸入模塊.int sell(int n,float m,int a,int b) /出售模塊n為序號,m錢,if(goodsi.quantity>0) /表示有貨.elseA=0; /表示沒貨了elseB=0; /表示沒錢了if(M=0) B=0;/判斷出錢已用光return(a);return(b);void change(float m) / 找錢模塊switch(a)case 1 花光 .case
7、2: 找零 三程序源代碼#include<stdio.h>#include<conio.h>float M;/M為投入的錢數intA=1,B=1,t;/A為數量標記,B 為金錢標記,1 表示有,0 表示沒有,t用于標記售貨機是否能完成退款int i,n,v=100;/i用于循環顯示商品列表,n 用于記錄輸入的貨號,v 用于保存售貨機內可以找零的錢數,初設為v=100/ 結構體定義struct goods/定義物品清單int number;char name10;float price;int quantity;goods9=1,"奶茶 ",4,5,5
8、,"可口可樂 ",3,5,2,"雪碧 ",2.5,5,拿鐵咖啡 ",4,5,3,"橙汁 ",3,5,4,"6,"礦泉水 ",2,5,7,"椰子汁 ",2.5,5,8,"格瓦斯 ",3,5;struct money/定義錢的種類,數量用于記錄找零的某值張數float moneys;int mount;money2=1,0,0.5,0;float show() /顯示模塊 - 屏幕system("pause");putch('n
9、39;);for(i=0;i<8;i+)printf("|n");printf("|%d%8s%7.1f元 .剩余 %7d|n",goodsi.number,,goodsi.price,goodsi.quant ity);printf("n");printf(" 購買東西前,請投入 money!( 支持 1 元,5 元 ,10 元和 20 元)n 溫馨提示,投入 money過多可能無法完成退幣 n");scanf("%f",&M);return M;int i
10、nput() /輸入模塊for(;)scanf("%d",&n);if(n<0|n>8)printf(" 輸入錯誤,請重新輸入商品序號開始選購或按 0 退出 n"); else return n;break;int sell(int n,float m,int a,int b) /出售模塊n 為序號, m錢,int i=0;while(n!=goodsi.number) i+;if(m>=goodsi.price)if(goodsi.quantity>0)goodsi.quantity-;M=m-goodsi.price;
11、for(i=0;i<8;i+)printf("|n");printf("|%d%8s%7.1f元 .剩余 %7d|n",goodsi.number,,goodsi.price,goodsi.quant ity);printf(" n");printf("你的商品 %d %s 已經出貨了n",goodsn-1.number,);elseA=0; /表示沒貨了elseB=0; /表示錢了if(M=0) B=0;/判斷出錢已用光return(a);return(b);
12、void change(float m) /錢模塊int i,a;/用于輔助輸出if(m=0) a=1;if(m!=0.0&&t!=1) a=2;switch(a)case 1:printf("錢用光了哦 n 謝謝光臨 !");break;case 2:for(i=0;i<2;i+)if(moneyi.moneys<=m)m=m-moneyi.moneys;moneyi.mount+;i-;/繼續檢索當前的面額是否符合條件,才會有相同面值出現printf("謝謝光臨 !nfor(i=0;i<2;i+)if(moneyi.mount
13、>0)找零 n");printf("%d張%.1f元tn",moneyi.mount,moneyi.moneys);m=0;M=0;money0.mount=0;break;void main()/主函數模塊doint t=1;/用于標記售貨機是否能完成退款,1 表能float m1;/m1用于記錄用戶再次加的錢show(); /顯示 - 屏幕loop1:printf("現在你有 %.1f 元n 你可以選擇商品序號開始選購或按0退出n",M);input(); /輸入函數if(M-goodsn-1.price>v)t=0;print
14、f("對不起,售貨機沒有足夠的零錢了 n 謝謝光臨 ! 退還 %.1f 元n",M);break;/ 判斷售貨機是否有足夠的零錢,0 表無if(n=0) /確認用戶是選擇離開還是買東西開始購買t=1;change(M); /零函數else loop2:sell(n,M,1,1);if(A=0)/貨沒有了怎么辦printf("可惜了,商品 %d 已賣完了 n 你還有商品(直接輸入商品序號)或按0離開 n",n,M);input(); /輸入函數%.1f元n你可以買其它if(n=0)change(M); /錢函數elseA=1;B=1;/要將標記歸位goto
15、 loop2; /else/ifelse if(B=0)/沒錢了怎么辦printf("噢,沒錢了,你可以繼續投入scanf("%f",&m1);if(m1=0)change(M);money購買,或按0離開 n");elseM=M+m1;A=1;B=1;/標記要歸位goto loop1; /else /else ifelse/有錢又有貨,繼續選goto loop1; /else while(1); /main四系統功能及運行效果圖一,系統提供商品清單,并提示購買前投入money二, 如果用戶投入的 money過多,售貨機無足夠硬幣完成退幣, 自動
16、退還用戶已付金額三,用戶投入 money購買,確定購買商品后,系統顯示如下四,如果不想繼續購買,則按0 退出,系統自動完成找零五,想繼續購買,則直接輸入商品序號,當商品已售完時,系統自動提示如下六,七,若不想退出,則可以繼續購買其它商品,直到剩余錢不足時想繼續購買,則直接加錢后購買,錢全部花完時,系統提示如五研究總結1. 研究過程接到研究型學習任務后, 我們三個同學組成了小組進行探究。 首先我們先詳細分析討論了整個系統需要完成的功能細節, 并考慮了實現的方法。一開始我們的方法不夠優化, 我們通過查閱一些資料,得到了新的方法,拓寬了思路, 并且再次進行了討論。 討論完畢后進行了組員的分工, 大家在一周內進行了代碼的編寫和模塊化調試,最后所有模塊合在一起進行了總的調
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 站內志愿服務管理考核試卷
- 機床結構優化技術考核試卷
- 創業投資市場競爭優勢分析考核試卷
- 電氣設備光電子器件考核試卷
- 天體物理觀測與實踐考核試卷
- 復印技術在紙箱包裝印刷的重要性考核試卷
- 硅冶煉操作技能培訓考核試卷
- 紙板制造中的廢紙回收利用技術考核試卷
- 江西應用科技學院《工程師管理(全英文)》2023-2024學年第二學期期末試卷
- 吉林鐵道職業技術學院《大數據審計實務》2023-2024學年第二學期期末試卷
- 高分子化學8-開環聚合
- 給小學生講醫療知識
- ISO9001質量管理體系培訓課件
- 旅游行業導游勞動紀律規范
- 自然保護地名詞術語 知識培訓
- 2024年科技例會管理制度(4篇)
- 云肩完整版本
- 大別山游客集散中心建設工程項目可行性研究報告
- 汽車經紀人服務行業市場現狀分析及未來三至五年行業預測報告
- 《Python語言程序設計》課件-第四章(中英文課件)
- 影視劇拍攝與制作合同
評論
0/150
提交評論