綜合程序課程設計說明書
課程設計名稱: 軟件綜合課程設計
課程設計題目: 商品銷售統計系統
學 院 名 稱: 信息工程學院
專業:電子信息工程 班級: 150411
學號: 15041113 姓名: 高*
評分: 教師: 鄒*
綜合程序 課程設計任務書
20 17 -20 18學年 第 2 學期 第 1 周- 2周
| |
內容及要求 編寫商品銷售統計程序,商品的信息有:商品的名稱,計量單位(重量或件),單價。所有商品的信息事先已存入計算機,屏幕上顯示所有商品的名稱,選擇商品名,輸入商品計量單位(如重量,件數等),根據單價算出總價。客戶一次購物可能購買多種商品,程序應計算出客戶應付的錢款數。 要求: 程序分為兩個部分:第一部分用于輸入商品的信息并允許修改和刪除;第二部分實現銷售統計。程序運行時由用戶選擇進入哪一部分功能,并能在運行時在兩部分之間切換。第二部分運行時,首先顯示所有商品名稱及代碼(商品數目較多時,應考慮分屏顯示),用戶輸入商品代碼及商品重量或件數,用戶一次操作可輸入若干商品的購買信息,然后輸入一個特殊的代碼表示本次購物結束。此時。程序計算出應付錢款數并顯示。 |
進度安排 第1周周一至第1周周二:查資料; 第1周周三至第2周周四:程序編寫與調試; 第2周周五:設計結果檢查。 |
學生姓名: 15041106鄭文婷 15041113高志華 |
| |
| | | |
| 1.評閱 2.答辯 3.實際操作 4.其它□ |
| | | |
注:1、此表一組一表二份,課程設計小組組長一份;任課教師授課時自帶一份備查。
2、課程設計結束后與“課程設計小結”、“學生成績單”一并交院教務存檔。
摘要
銷售統計系統是銷售統計軟件的通俗化名稱,銷售統計系統是管理銷售線索、銷售活動、業務報告、統計銷售業績的先進工具,適合企業銷售部門辦公和管理使用,協助銷售經理和銷售人員快速管理客戶、銷售和業務的重要數據。
由于經濟的飛速發展,銷售人員付出大量的時間,得到的效率很低。因此為了提高工作效率,減輕銷售人員查找等繁雜的工作,設計出一個功能完善、合理的銷售管理系統。本課題設計出此系統以供操作者進行商品銷售管理,方便操作者隨時添加、查詢和修改商品信息。
關鍵字:c語言;查找;刪除;修改;保存。
目錄
第一章需求分析·························1
第二章系統組成及設計原理····················2
2.1 系統組成·····················2
2.2 設計原理·····················2
第三章概要設計························3
3.1 系統層次圖·····················3
3.2 方案對比······················4
第四章詳細設計························5
4.1商品錄入·····················5
4.2 商品查詢······················6
4.3 顯示商品······················7
4.4 購買商品······················8
4.5 保存信息······················9
4. 6 修改商品·····························10
4. 7 主函數模塊······ ·····················11
第五章調試及測試及結果與分析···················12
5.1 調試過程 ···························12
5.2 調試結果 ···························14
結論······························18
參考文獻····························19
附錄A·······························20
分析此課題題目的要求,本系統需要具備以下功能:能夠統計所銷售商品的代碼、名稱、價格、數量等信息;能夠通過輸入選擇鍵調出倉庫中所有商品的所有信息;實現通過代碼來查詢某個商品,并且輸出該商品的所有信息;能夠在用戶購買商品時,根據情況給予用戶反饋信息,其中包括購買商品名稱、代碼、單價、所買數量,并對該商品進行一次小結,告知用戶消費情況;購買結束后,統計用戶所消費的總金額,記錄其所付金額以及找零金額。
2.1系統的組成
系統的組成包括以下幾個模塊
1.錄入商品
2.商品查詢
3.顯示數據
4.購買商品
5.保存信息
6.修改信息
7.退出系統
2.2 設計原理
實現這些功能,需要聲明構造函數Sale(),此函數中包含數據成員商品代碼、名字、價格、數量。另外,創建鏈表,用于儲存商品錄入信息,購買情況,以及所有商品的信息。利用switch語句來實現根據需要選擇不同的功能。
創建鏈表,對頭結點進行初始化,對數據域分配內存大小,通過指針域訪問結點,來實現元素的儲存調用等。
定義子函數,來實現商品的錄入、查詢、顯示、購買等功能。錄入功能需要包含商品的一些信息,如:代碼、名稱、價格等;查詢功能則是為了方便用戶獲得所需購買物品的一些信息;顯示功能可以使用戶對倉庫的儲存情況一目了然;購買功能主要是進行商品的結算。
編寫過程中,代碼和名字需應用字符串,數量以整型輸出,考慮到上平的數量可能會很多,故定義為unsigned int quality,價格以浮點型輸出。
第三章概要設計
3.1 系統結構層次圖
本銷售系統使用設置主菜單,從主菜單進入分應用的模式。一方面使人機交互界面人性化,便于操作者的操作,另一方面使系統模塊化,以便在日后調試檢測時較為方便。系統結構層次圖如圖3.1所示
圖3.1 結構層次圖
圖3.2 對比結構層次圖
圖3.2為備選設計方案,菜單選項分兩級,實際操作過程中從每級子程序退出時需要進入第一級人機界面,所以操作過于繁瑣,再與方案一對比過后選擇更為簡便的第一種方案。
4.1 商品錄入
商品錄入功能用鏈表保存輸入的商品信息,執行順序流程,輸入商品代碼、名稱、數量、單價。將數據保存在鏈表中。流程圖如圖4.1所示。
圖4.1 商品錄入流程圖
4.2 商品查詢
按商品名稱查詢通過Link Search(Link Head,string&num)函數實現,用到while循環語句和if-else語句。輸入要查詢商品的名稱,在文件中讀取,若該商品存在,則從文件中獲取該商品信息,并顯示到輸出界面,若不存在,則輸出界面顯示“商品信息不存在”。
圖4.2 商品查詢流程圖
4.3 顯示商品
商品顯示功能通過定義Display函數實現,在此函數中要調用查詢子函數Search,通過查找按順序輸出商品信息。
圖4.3 顯示商品流程圖
4.4 商品購買
商品購買功能子程序需要調用Total、Display、ChechOut三個函數,用while循環語句實現是否繼續購買。使用if-else語句,另外使用sum=sum+=CheckOut語句實現多次小計累加求和。
圖4.4 商品購買流程圖
4.5 保存信息
此模塊中運用到c語言中文件讀寫的相關知識,定義指針fq,若未按照正常格式寫入,則輸出文件寫入錯誤,具體流程圖如圖4.5所示
圖4.5 保存信息流程圖
4.6 商品修改
修改商品信息用到了Alter()函數實現,調用Search()函數,通過輸入商品名稱確定所要修改商品的信息,除了用到switch語句,還用到if-else語句,判斷所要修改的商品信息是否存在,若不存在,則輸出“該商品不存在”;若存在,即可對商品信息進行相應的修改。流程圖如圖4.6所示。
圖4.6 商品修改流程圖
4.7 主函數模塊
主函數主要運用switch-case選擇判斷語句來調用相關函數功能模塊,系統的運行是循環里進行的,只有在主界面選擇“退出時”,才會跳出循環,并退出程序。主函數中分別定義了各個模塊所要調用的功能函數,整個程序從主函數開始執行。
圖4.7 主函數流程圖
第五章 調試及測試結果與分析
5.1調試過程
程序錯誤之處:
1、代碼和名字分別定義為整型和字符型。
2、未對鏈表頭結點進行初始化。
3、數據域中沒有分配內存。
4、在do-while語句結束時沒有返回頭結點。
5、顯示程序不能實現,賣出商品后沒有辦法在原有的數據上減去賣出的部分,顯示的仍舊是錄入商品的全部數量。
導致的后果:
第一個錯誤導致訪問結點無法進行;與后面的不匹配。第二個錯誤,在運行程序時,無論是錄入商品信息還是購買商品均不能進行第二步操作;第三個錯誤引發的后果與錯誤2一樣;錯誤4則導致函數creat沒有返回值。最后的一個錯誤不符合任務書上的要求。
改正方法:
1、定義代碼和名字改用string;
2、對頭結點進行初始化并動態分配一個內存大小:
Head=(Link)new Node;//每次動態分配一個Node內存大小。
Head->num="";
Head->name="";
Head->jiage=0.0;
Head->shuliang=0;
Head->next=NULL;
3、返回頭結點:return Head;。
在編寫此程序時,定義變量num、name時沒有注意其類型,無法與后面Head->num="";Head->name="";if(p->num==num)相匹配,程序出現錯誤。用以儲存更多的元素內容,否則的話在運行的過程中,錄入一種商品的信息完成后,程序會自動結束。
首先定義一個子函數:
Link Search(Link Head,string& num)
{
Link p;
p=Head;
while(p!=NULL)
{
if(p->num==num)
return p;
else
p=p->next;
}
cout<<"無此商品!"<<endl;
return p;。
}
通過輸入商品代碼,來查詢倉庫中是否有該商品。
另外在運行程序是發現,當選擇查看所有商品信息時輸出結果太亂,信息無法與提示對齊,我們可以在頭文件中加入#include <iomanip>,后面的輸出程序可以改成:
cout<<setw(15)<<left<<ptr->m_code
<<setw(15)<<left<<ptr->m_name
<<setw(15)<<left<<ptr->m_price
<<setw(15)<<left<<ptr->m_quantity<<endl;
改進設想:
本程序最大的缺點就是沒有在程序中預先儲存商品信息,因此在運行程序過程中需要首先錄入一部分商品。為了方便操作,可以針對此問題來進行修改,在容器中儲存一些比較常用的商品(不少于二十種)。
運行程序過程中,如果選擇了2,購買商品,首先會顯示:結束買入請按‘N’,其他任意鍵表示繼續買入!這里的任意鍵不為空格和輸入鍵,并且輸入數字的情況下只能為一位,否則無法輸入代碼,程序無法繼續進行。
5.2調試結果
進入菜單界面,調試錄入信息功能。根據提示輸入數字1,然后顯示出“商品信息”接著輸入代碼、名稱、價格和數量,最后顯示“數據輸入成功!繼續?(Y/N)”。接著輸入下一個商品信息選擇“Y”,否則鍵入“N”。此課題調試輸入兩種商品信息,實際操作如圖5.1所示。
圖5.1 錄入信息調試圖
查詢功能調試結果:在兩種商品信息錄入成功之后,回到主菜單欄。輸入所要查詢的商品代碼,回車。輸出所查找商品的所有信息。例如輸入代碼01,回車,顯示出商品電腦的所有信息。實際操作效果如圖5.2所示。
圖5.2 查詢功能調試
顯示功能調試,如圖5.3所示,回到主界面選擇“3 顯示數據”進入顯示功能程序,所有商品信息逐行顯示。
圖5.3 顯示功能調試圖
進入系統另外一部分,實際購買商品流程。輸入購買商品代碼02,輸入購買數量10臺,顯示出單個商品小結3000元。選擇”Y”繼續購買第二件商品,輸入購買的第二件商品代碼01,輸入購買數量2臺,顯示出第二件商品小結。選擇“N”結束商品購買。顯示該支付34000元,實際支付40000元自動計算找零,如圖5.4所示。
圖5.4 顯示功能調試圖
商品信息保存功能測試結果:在完成兩種商品錄入后回到主菜單,輸入數字5,將所有商品信息以文件形式保存到計算機磁盤中。結果如圖5.5所示
圖5.5 保存功能調試圖
修改功能調試:從主界面進入修改功能,輸入所要修改商品的名稱,選擇單價修改,輸入正確信息4000.顯示信息如圖5.6所示,
圖5.6 修改功能調試圖
結論
本次軟件課程設計用c++實現了題目所有的要求,達到了商品銷售系統所實現的功能。將整個程序分成了多個模塊,每個模塊相互獨立而又彼此聯系,通過主函數調用來實現各個模塊的功能。模塊化設計在實際中應用廣泛,本課題提高了學生對軟件設計的興趣,不僅鞏固了所學知識,在編程過程中學到了很多課堂之外的知識,實際應用了模塊化設計實例。