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