藥店藥品銷售統(tǒng)計系統(tǒng)_第1頁
藥店藥品銷售統(tǒng)計系統(tǒng)_第2頁
藥店藥品銷售統(tǒng)計系統(tǒng)_第3頁
藥店藥品銷售統(tǒng)計系統(tǒng)_第4頁
藥店藥品銷售統(tǒng)計系統(tǒng)_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告 項目名稱:藥店藥品銷售統(tǒng)計系統(tǒng)學號:班級:姓名:指導老師: 計算機科學與技術(shù) 2014年12月22日1. 問題描述:(1)設(shè)計一系統(tǒng),實現(xiàn)醫(yī)藥公司定期對銷售各藥品的記錄進行統(tǒng)計,可按藥品的編號、單價、銷售量或銷售額做出排名。(2)在本設(shè)計中,首先從數(shù)據(jù)文件中讀出各藥品的信息記錄,存儲在順序表中。各藥品的信息包括:藥品編號、藥名、藥品單價、銷出數(shù)量、銷售額。藥品編號共4位,采用字母和數(shù)字混合編號,如:A125,前一位為大寫字母,后三位為數(shù)字,按藥品編號進行排序時,可采用基數(shù)排序法。對各藥品的單價、銷售量或銷售額進行排序時,可采用多種排序方法,如直接插入排序、冒泡排序、快速排

2、序,直接選擇排序等方法。2. 設(shè)計思路:本次課程設(shè)計的任務(wù)是設(shè)計一個藥店藥品銷售統(tǒng)計系統(tǒng),實現(xiàn)對藥店內(nèi)藥品的信息進行記錄和對銷售情況進行整理排序,更直觀的了解藥店的藥品銷售情況。本次設(shè)計的系統(tǒng)主要采用C語言程序設(shè)計基本知識,通過文件來輸入、記錄、保存藥品的編碼、名稱、單價、銷售數(shù)量,運用乘法運算算出各類藥品的銷售總額,最后利用冒泡排序法(運用文件指針知識)將藥品信息按照藥品編碼、藥品名稱、藥品單價、藥品銷售數(shù)量、藥品銷售總額5個方面進行從大到小的排序。該系統(tǒng)主要由1.輸入記錄并保存藥品信息,2.在界面上顯示所輸入的藥品信息,3.將藥品信息根據(jù)5個方面進行排序并保存 這三大模塊所構(gòu)成。3. 數(shù)據(jù)

3、結(jié)構(gòu)定義:typedef struct node /藥品信息的存儲結(jié)構(gòu)類型定義 char num10; /藥品編號 char name30; float price; /單價 int count; /銷售量 float sale; /銷售額DataType;typedef struct /存儲藥品信息的順序表的定義 DataType rmaxsize; int length; int type;SqList;4. 系統(tǒng)功能模塊介紹:程序開始進入主函數(shù)定義最大輸入藥品種類輸入模塊:用于輸入藥品的編號、名稱、單價、銷售量、銷售額輸出模塊:通過while循環(huán)調(diào)用menu()子函數(shù),實現(xiàn)藥品的各種排序

4、數(shù)據(jù)保存模塊:medince.txt文件用于將輸入的所有藥品信息保存void number()按藥品編號排序void nam()按藥品名稱排序void pric()按藥品單價排序void coun()按藥品銷售量排序void sales()按藥品銷售額排序5. 運行與調(diào)試分析:程序的調(diào)試分析主要由兩大步驟組成。首先認真閱讀所編寫好的程序,進一步進行檢查。在過程中修改一些常識性簡單的錯誤,例如:符號“”“;”的缺失,對不必要的敘述進行修改刪減,使程序更簡潔美觀,增強程序的可讀性,區(qū)分函數(shù)與子函數(shù),分析變量含義的變更是否會導致錯誤,在關(guān)鍵程序后面給上相關(guān)的注釋,讓程序變得更易理解。其次在閱讀檢查程

5、序并修改后,進行初步的調(diào)試,根據(jù)程序設(shè)計思路查看各變量的含義是否符合設(shè)計初衷,并作適當?shù)男薷?,初步調(diào)試完成后運行程序針對所顯示的錯誤信息進行修改與優(yōu)化。例如:調(diào)試過程中發(fā)現(xiàn)scanf函數(shù)處報錯,則經(jīng)分析發(fā)現(xiàn)格式上缺少“&”符號。如果調(diào)試過程中忽而出現(xiàn)幾十上百條錯誤,則問題可能是頭文件或者某一兩處出現(xiàn)錯誤,此時應(yīng)根據(jù)程序流程圖仔細分析錯誤所在,同時可單步運行輸入實驗數(shù)據(jù)查看各變量含義是否出錯,進而合理的修改。輸入藥品種類數(shù)為3:以下為三種藥品信息輸入1:輸入2:輸入3:輸入4:輸入56. 體會:通過本次課程設(shè)計,培養(yǎng)了我關(guān)于系統(tǒng)的設(shè)計理念,掌握具體的編程方法,提高了個人的綜合實踐能力。學

6、會通過所學的知識和查閱相關(guān)資料,能夠根據(jù)實際問題設(shè)計出實用并可靠的系統(tǒng)程序。藥店藥品銷售統(tǒng)計系統(tǒng)是由C語言編寫而成的,該系統(tǒng)程序函數(shù)層次簡練分明,可讀性強。對于商店來講,一般銷售額的統(tǒng)計都比較繁瑣、容易出現(xiàn)錯誤。藥店藥品的銷售統(tǒng)計系統(tǒng)在這方面可以大大的減少人們對信息的處理,比較有實際意義。并且該系統(tǒng)操作起來簡單快捷,極大的降低了工作量。不過系統(tǒng)仍然存在著不足之處,需要后續(xù)的補充和修改完善。例如:無法對輸入的信息進行分類保存,無法再中途添加藥品信息,沒有一個完整的信息庫等等。完成本次課程設(shè)計,一方面對我的知識進行了鞏固,另一方面提前讓我養(yǎng)成了研發(fā)設(shè)計系統(tǒng)的思路和感受。對今后的學習和實驗相信有著積

7、極的意義。同時也認識到自己的不足和學習的永無止境,的確學如逆水行舟,不進則退!時代在發(fā)展,很多系統(tǒng)就得跟上人們的需求,所以我們今后的發(fā)展前景還是很大的。主程序#include<stdio.h>#include<stdlib.h>#include<string.h>#define maxsize 100 /該醫(yī)藥公司藥品最大種類typedef struct node /藥品信息的存儲結(jié)構(gòu)類型定義 char num10; /藥品編號 char name30; float price; /單價 int count; /銷售量 float sale; /銷售額Dat

8、aType;typedef struct /存儲藥品信息的順序表的定義 DataType rmaxsize; int length; int type;SqList;void number(SqList *L) /按藥品編號排序 int i,j; char num110,name130; float price1,sale1; int count1; for(i=0;i<L->type;i+) for(j=i+1;j<L->type;j+) if(strcmp(L->rj.num,L->ri.num)>0) strcpy(num1,L->rj.n

9、um); strcpy(L->rj.num,L->ri.num); strcpy(L->ri.num,num1); strcpy(name1,L->); strcpy(L->,L->); strcpy(L->,name1); price1=L->rj.price; L->rj.price=L->ri.price; L->ri.price=price1; count1=L->rj.count; L->rj.count=L->ri.count; L->r

10、i.count=count1; sale1=L->rj.sale; L->rj.sale=L->ri.sale; L->ri.sale=sale1; printf("t按藥品編號排序后:n"); printf("t藥品編號 藥品名稱 藥品單價 藥品銷售量 藥品銷售額n"); for(i=0;i<L->type;i+) printf("t %st %st %ft %dt %fn",L->ri.num,L->,L->ri.price,L->ri.count,L-&g

11、t;ri.sale);void nam(SqList *L) /按藥品名稱排序 int i,j; char num110,name130; float price1,sale1; int count1; for(i=0;i<L->type;i+) for(j=i+1;j<L->type;j+) if(strcmp(L->,L->)>0) strcpy(num1,L->rj.num); strcpy(L->rj.num,L->ri.num); strcpy(L->ri.num,num1); strcpy

12、(name1,L->); strcpy(L->,L->); strcpy(L->,name1); price1=L->rj.price; L->rj.price=L->ri.price; L->ri.price=price1; count1=L->rj.count; L->rj.count=L->ri.count; L->ri.count=count1; sale1=L->rj.sale; L->rj.sale=L->ri.sale; L->r

13、i.sale=sale1; printf("t按藥品名稱排序后:n"); printf("t藥品編號 藥品名稱 藥品單價 藥品銷售量 藥品銷售額n"); for(i=0;i<L->type;i+) printf("t %st %st %ft %dt %fn",L->ri.num,L->,L->ri.price,L->ri.count,L->ri.sale);void pric(SqList *L) int i=0,j; char num110,name130; float pri

14、ce1,sale1; int count1; for(i=0;i<L->type;i+) for(j=i+1;j<L->type;j+) if(L->rj.price>L->ri.price) strcpy(num1,L->rj.num); strcpy(L->rj.num,L->ri.num); strcpy(L->ri.num,num1); strcpy(name1,L->); strcpy(L->,L->); strcpy(L->,name1)

15、; price1=L->rj.price; L->rj.price=L->ri.price; L->ri.price=price1; count1=L->rj.count; L->rj.count=L->ri.count; L->ri.count=count1; sale1=L->rj.sale; L->rj.sale=L->ri.sale; L->ri.sale=sale1; printf("t按藥品單價排序后:n"); printf("t藥品編號 藥品名稱 藥品單價 藥品銷售量 藥品銷售額

16、n"); for(i=0;i<L->type;i+) printf("t %st %st %ft %dt %fn",L->ri.num,L->,L->ri.price,L->ri.count,L->ri.sale);void coun(SqList *L) int i=0,j; char num110,name130; float price1,sale1; int count1; for(i=0;i<L->type;i+) for(j=i+1;j<L->type;j+) if(L-&

17、gt;rj.count>L->ri.count) strcpy(num1,L->rj.num); strcpy(L->rj.num,L->ri.num); strcpy(L->ri.num,num1); strcpy(name1,L->); strcpy(L->,L->); strcpy(L->,name1); price1=L->rj.price; L->rj.price=L->ri.price; L->ri.price=price1; count1=L

18、->rj.count; L->rj.count=L->ri.count; L->ri.count=count1; sale1=L->rj.sale; L->rj.sale=L->ri.sale; L->ri.sale=sale1; printf("t按藥品銷售量排序后:n"); printf("t藥品編號 藥品名稱 藥品單價 藥品銷售量 藥品銷售額n"); for(i=0;i<L->type;i+) printf("t %st %st %ft %dt %fn",L->r

19、i.num,L->,L->ri.price,L->ri.count,L->ri.sale);void sales(SqList *L) int i=0,j; char num110,name130; float price1,sale1; int count1; for(i=0;i<L->type;i+) for(j=i+1;j<L->type;j+) if(L->rj.sale>L->ri.sale) strcpy(num1,L->rj.num); strcpy(L->rj.num,L->ri.

20、num); strcpy(L->ri.num,num1); strcpy(name1,L->); strcpy(L->,L->); strcpy(L->,name1); price1=L->rj.price; L->rj.price=L->ri.price; L->ri.price=price1; count1=L->rj.count; L->rj.count=L->ri.count; L->ri.count=count1; sale1=L->rj.sal

21、e; L->rj.sale=L->ri.sale; L->ri.sale=sale1; printf("t按藥品銷售額排序后:n"); printf("t藥品編號 藥品名稱 藥品單價 藥品銷售量 藥品銷售額n"); for(i=0;i<L->type;i+) printf("t %st %st %ft %dt %fn",L->ri.num,L->,L->ri.price,L->ri.count,L->ri.sale);void menu() printf(&qu

22、ot;ttt銷售記錄排序n"); printf("t-n"); printf("t| 1)按藥品編號 |n"); printf("t| 2)按藥品名稱 |n"); printf("t| 3)按藥品單價 |n"); printf("t| 4)按藥品銷售量 |n"); printf("t| 5)按藥品銷售額 |n"); printf("t| 0)退出系統(tǒng) |n"); printf("t-|n"); printf(" 請選

23、擇<05>");main() SqList *L; int n,i,m; char num110,name130; float price1,sale1; int count1; FILE *fp; L=(SqList*)malloc(sizeof(SqList); fp=fopen("medince.txt","w"); /創(chuàng)建文件 if(!fp) printf("Sorry! File open error!n");exit(0); printf("請輸入藥品種類數(shù)(<=100):"

24、); scanf("%d",&n); L->type=n; for(i=0;i<n;i+) printf("請輸入該藥品的編號(格式如:B12,前一位為大寫字母,后二位為數(shù)字):"); scanf("%s",num1); getchar(); printf("請輸入該藥品的名稱:"); scanf("%s",name1); getchar(); printf("請輸入該藥品的單價:"); scanf("%f",&price1); printf("請輸入該藥品的銷售量:"); scanf("%d",&count1); getchar(); sale1=price1*count1; fprintf(fp,"%st%st%ft%dt%

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論