第一篇:大連理工大學c語言大作業(yè)
程序設(shè)計大作業(yè)總結(jié)報告
——<東北大餡餃子館>的點餐/帳目信息管理系統(tǒng)
選題意義;
餐廳賬目繁多,通過本系統(tǒng)可以實現(xiàn)餐廳管理的自主化。更加適應(yīng)這個信息化的社會。通過對賬目、訂單的管理與排序。也能使餐廳管理者更加直觀地看出產(chǎn)品之間的優(yōu)劣與受眾。使其能夠更好的調(diào)動資源,達到餐廳的快速發(fā)展目的。
設(shè)計方案;
1)任務(wù)分析
該系統(tǒng)應(yīng)包括兩大界面—用戶界面和管理界面。用戶界面包括用戶點餐功能并將用戶點餐信息存入賬單文件中。管理界面包括記錄餃子的單價,庫存等信息并將這些信息按一定規(guī)律排列供管理者參考,還要記錄每天的收入與庫存消耗。2)系統(tǒng)組成框圖
系統(tǒng)組成如下圖所示,點餐/帳目信息管理系統(tǒng)中任務(wù)調(diào)度模塊是信息管理的指揮中心,所有的功能模塊均通過該模塊集中管理和調(diào)用。數(shù)據(jù)文件是用于將改變的記錄隨時保存起來,I/O交互模塊是指數(shù)據(jù)按鍵和控制按鍵的響應(yīng)操作。數(shù)據(jù)按鍵是窗口的輸入輸出。
系統(tǒng)平臺
I/O交互 任務(wù)調(diào)度 數(shù)據(jù)文件
添加賬目 查詢賬目 查詢原料 銷量排序 當天收入
功能模塊設(shè)計;
本管理系統(tǒng)開發(fā)的過程中成功地完成很多函數(shù)的編寫,而且全部通過程序調(diào)試。下面針對與該系統(tǒng)相關(guān)的主要功能函數(shù)的編寫思路和實現(xiàn)方法作總結(jié)。1)數(shù)據(jù)描述與數(shù)據(jù)文件(1)數(shù)據(jù)描述;
系統(tǒng)中共定義了三種結(jié)構(gòu)體分別是struct list(賬單信息)、struct dump(原材料信息)、struct system(管理信息)其中賬單信息成員定義如下; struct list/*賬單信息 */ { int num;/*編號*/ int month;/*月份*/ int date;/*日期*/ int table;/*桌號*/ int people;/*人數(shù)*/ int add;/*收款金額*/ };原材料信息;
struct dump/*原材料信息*/ { int num;/*編號*/ char a[40];/*名稱*/ int price;/*單價*/ int quantity;/*庫存*/ };管理信息; struct system { struct dump data;/*點餐*/ int cash;/*收款*/ int sale;/*銷量*/ int p;/*人數(shù)*/ };(2)數(shù)據(jù)文件;
共定義四個數(shù)據(jù)文件;記錄編號的文件count、記錄原料的文件dumplings、記錄賬單的文件customer、數(shù)據(jù)處理文件system。2)主要功能模塊的設(shè)計(1)主要功能模塊函數(shù)原型 本程序共編寫了8個自定義函數(shù),其中5個用于文件管理,3個用于文件的建立。系統(tǒng)管理函數(shù)原型如下; 點餐函數(shù)void customer(); 統(tǒng)計單日銷量函數(shù)void record(); 銷量排序函數(shù)void line(); 賬單查詢函數(shù)void list(); 編號歸零函數(shù)void countzero();(2)典型功能模塊函數(shù)設(shè)計 *點餐函數(shù)void customer(); 打開dumplings文件 打印菜單 用戶點餐 記錄數(shù)據(jù)
打開customer文件、system文件 將數(shù)據(jù)寫入文件;
*統(tǒng)計單日銷量函數(shù)void record(); 打開system文件; 將數(shù)據(jù)讀入內(nèi)存;
計算單日總收入、總?cè)藬?shù)、總銷量; *銷量排序函數(shù)void line(); 打開system文件; 對銷量進行排序;
運行效果:
設(shè)計體會;
可能是因為第一次編寫200行語句以上的程序,在程序設(shè)計中我經(jīng)常忘記給一些變量賦初值,有時也會將fread函數(shù)錯寫成fwrite函數(shù)導致程序運行失敗。除此之外我對結(jié)構(gòu)體的理解還不夠充分,對文件的操作也不夠熟練。這些因素都導致了我這次程序設(shè)計的一些不完美的地方。如結(jié)構(gòu)體定義過多。文件功能相互疊加等。影響了程序的易維護性與可讀性。這都是我不成熟的表現(xiàn)。但通過這次設(shè)計我對數(shù)據(jù)存儲的理解變得更加深刻了。今后我也將繼續(xù)提升我的編程能力,做出更完美的程序。
第二篇:C語言作業(yè)
Problem B: 算術(shù)基本運算 Description 計算兩整數(shù)x和y(0 printf(”x * y : %dn“,x*y); printf(”x / y quotient: %d, remainder: %dn“,x/y,x%y); printf(”x ^ 2 : %dn“,x*x); printf(”y ^ 3 : %dn“,y*y*y); return 0;} Problem C: 求圓的面積和周長 Description 從鍵盤輸入圓的半徑,求圓的面積和周長,圓周率取3.14。Input 輸入一個浮點型數(shù)據(jù),有效數(shù)字不會超過十進制的6位。Output 輸出為兩行。 第一行為圓的面積,第二行為圓的周長,格式見sample。Sample Input Sample Output Area: 28.260000 Perimeter: 18.840000 HINT 了解浮點類型的輸入、輸出和算術(shù)運算符 #include double Area,Perimeter,r,p=3.14; scanf(”%lf“,&r); Area=p*r*r,Perimeter=2*p*r; printf(”Area: %lfn“,Area); printf(”Perimeter: %lfn“,Perimeter); return 0;} Problem D:平均值 Description 求3個數(shù)的平均值。Input 輸入只有一行,為3個較小的整數(shù)。Output 輸出為這3個整數(shù)的平均值,保留3位小數(shù)。Sample Input 1 2 3 Sample Output 2.000 HINT 注意除法運算對整型數(shù)據(jù)和浮點型數(shù)據(jù)是不一樣的。#include int x,y,z; float ave; scanf(”%d %d %d“,&x,&y,&z); ave=(x+y+z)/3.0; printf(”%.3f“,ave); return 0;} Problem E: 貨幣兌換 Description 給出人民幣對美元、歐元、日元的當日匯率,求給定金額的人民幣能兌換成外幣的金額,求給定金額的外幣能兌換成人民幣的金額。要計算的外幣有三種:美元、歐元、日元。Input 輸入有三行。 第一行依次為美元、歐元、日元外幣匯率,用空格分開。匯率用100外幣為單位,精確到小數(shù)點后4位,如668.5200表示“100美元=668.5200人民幣”。匯率浮動范圍為(0,10000)。 第二行為外幣金額x,第三行為人民幣金額y。x,y均為整數(shù),且0 第一行為金額為x的美元、歐元、日元兌換成人民幣的金額,用空格分開。第二行為金額為y的人民幣兌換成美元、歐元、日元的金額,用空格分開。所有金額精確到小數(shù)點后兩位。Sample Input 668.5200 908.0685 7.9852 1500 1500 Sample Output 10027.80 13621.03 119.78 224.38 165.19 18784.75 HINT 了解浮點數(shù)據(jù)類型的精確度和輸出控制。 #include return 0; } Problem F: 求字符的值 Description 從鍵盤輸入3個字符(不含雙字節(jié)字符),分別輸出每個字符的十進制值(ASCII碼)、八進制值和十六進制值。Input 輸入為3個字符。Output 輸出為3行。 每一行為每個字符(對應(yīng)輸入順序)的十進制、八進制和十六進制值,用空格分隔開。每個輸出的值占3個字符,不足3個字符前面補0。Sample Input 0 A Sample Output 048 060 030 032 040 020 065 101 041 HINT 了解字符值的存儲和整型的關(guān)系。#include Problem G: 奇數(shù)還是偶數(shù)? Description 輸入一個整數(shù),判讀它是奇數(shù)還是偶數(shù)。Input 輸入只有一行,為一個100以內(nèi)的正整數(shù)。Output 輸出為一行。 若輸入為偶數(shù)則輸出“even”,奇數(shù)輸出“odd”。Sample Input 30 Sample Output even HINT 用整數(shù)運算可以解決,練習“?:”表達式。#include int x; scanf(”%d“,&x); if(x%2==0) printf(”even“); else printf(”odd“); return 0;} Problem H: 絕對值 Description 求整型數(shù)據(jù)和浮點型數(shù)據(jù)的絕對值。Input 輸入兩個數(shù),第一個是整數(shù),第二個是浮點數(shù)。Output 輸出為兩行,第一行為整數(shù)的絕對值,第二行為浮點數(shù)的絕對值,注意浮點數(shù)的絕對值不輸出無意義的0。Sample Input-1 1 Sample Output 1 1 HINT 求絕對值可以用標準庫函數(shù)來完成,也可以自己判斷。注意浮點數(shù)的輸出格式。求絕對值的函數(shù)在哪個頭文件?貌似很多人會搞錯,包括很多編書的人!#include int x; float y; scanf(”%d“,&x); scanf(”%f“,&y); printf(”%dn“,abs(x)); printf(”%gn“,fabs(y)); return 0;} Problem I: 簡單的打折計算 Description 商店規(guī)定:消費滿n元,可以打八八折。設(shè)某件商品標價m元,輸入購買的件數(shù)x,計算出需要支付的金額(單位:元),精確到分。Input 輸入只有一行,三個整數(shù)m、n和x,且0 300 4 Sample Output 334.40 HINT 了解浮點型的輸出控制,注意整型和浮點型混合運算過程中的數(shù)據(jù)類型轉(zhuǎn)換。#include int m,n,x; double y; scanf(”%d%d%d“,&m,&n,&x); y=m*x; if(y>n) y=y*0.88; else y=y; printf(”%.2lfn“,y); return 0;} Description 輸入一個正整數(shù)的年份,判斷是否為閏年。Input 輸入只有一行,為一個10000以內(nèi)的正整數(shù)。Output 輸出為一行。 若輸入為閏年偶數(shù)則輸出“Yes”,否則輸出“No”。Sample Input 2010 Sample Output No HINT 了解邏輯運算符和關(guān)系運算符。#include int a; scanf(”%d“,&a); if(a%4==0&&a%100!=0||a%400==0) printf(”Yes“); else printf(”No“); return 0;} Problem K: GHacker的解謎過關(guān)游戲 Description GHacker最近癡迷于一個新上市的解謎游戲,其中一關(guān)的過關(guān)是破解一個字符串S。經(jīng)過3天的冥思苦想,GHacker成功的搞明白了這其中的奧秘,把串S中的整數(shù)取出來求和,就可以過關(guān)了。但是GHacker的數(shù)學實在糟糕。他無法在短暫的時間內(nèi)算出來,只好求助Jackie。Jackie觀察到雖然每次出現(xiàn)的數(shù)字不同,但是其它的符號并不會變化。于是Jackie編寫了一個非常短的程序,幫助GHacker把這一關(guān)過了。Input 輸入為串S,只有一行。Output 串S中用非數(shù)字(0~9)分隔開的非負整數(shù)之和,不會超出int類型的數(shù)據(jù)范圍。Sample Input `13?:[7514],54.487==”(438922x159??392)%032n111cdef120$95;Sample Output 447899 HINT scanf()可以解決這個問題,注意轉(zhuǎn)義字符和格式控制字符。#include int i,sum,num; char str[1000]; while(scanf(“%s”,str)!=EOF) { num=sum=0; for(i=0;;i++) { if(str[i]>='0' && str[i]<='9') num=num*10+str[i]-'0'; else { sum=sum+num;num=0; if(str[i]=='