版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、、商品銷售管理問題描述:已知一公司有10種產(chǎn)品(產(chǎn)品編號,產(chǎn)品名稱,產(chǎn)品價格,產(chǎn)品產(chǎn)地,庫存數(shù)量(最 開始為1000個),設(shè)計一程序,完成以下功能:1)1)銷售:從鍵盤輸入顧客姓名,銷售數(shù)量、銷售日期,實現(xiàn)銷售功能。需要判斷產(chǎn)品是否存在,銷售數(shù)量是否小于庫存數(shù)量,銷售日期格式是否合法(格式為:YYYY-MM-D如 2009-01-02 )2)2)能根據(jù)產(chǎn)品編號查詢產(chǎn)品的銷售歷史3)3)計算時間段內(nèi)各個產(chǎn)品的銷售總額4)4)能根據(jù)顧客姓名,查詢購買歷史5)5)能顯示所有顧客的姓名提示:定義一個日期結(jié)構(gòu)體保存日期,具體信息為:年、月、日判斷存款日期和取款日期的格式是否合法時,需要判斷長度是否為 1
2、0,第5位和第8位是否為-',字符,將1-4位表示的年份,6-7位表示的月份,9-10位表示 的日期分別轉(zhuǎn)換成整數(shù)。判斷是否滿足構(gòu)成日期的條件閏年月份只能是1-12之間的數(shù),如果是閏年,二月可以是 29天否則不能大于 28,1,3,5,乙8,10,12 月可以是31天,其余只能小于等于 30 (建議寫成函數(shù))。定義一個結(jié)構(gòu)體數(shù)組保存10種產(chǎn)品信息,具體信息為:產(chǎn)品編號,產(chǎn)品名稱,產(chǎn)品價格,產(chǎn)品產(chǎn)地,庫存數(shù)量(最開始為1000個)定義一個鏈表,保存銷售信息,具體為:顧客代碼,銷售數(shù)量、銷售日期。定義一個鏈表保存顧客信息,具體為:顧客代碼,顧客姓名當(dāng)輸入銷售信息時查詢顧客鏈表,如果在鏈表中
3、存在該姓名的顧客記錄,則將其代碼在該銷售鏈表中插入一條記錄,如果不存在,則在顧客鏈表中插入一條記錄,(顧客代碼需要自動生成)。#i nclude "stdio.h"/*l/0 函數(shù) */#include "stdlib.h" /*標(biāo)準(zhǔn)庫函數(shù)*/#include "string.h"/*字符串函數(shù)*/#include "ctype.h" /*字符操作函數(shù)*/#in clude "time.h" /*時鐘函數(shù)*/#i nclude "cstdlib"#i nclude "
4、;coni o.h"int x , k; /*定義全局變量用于保存當(dāng)前商品種類*/struct product /*定義商品數(shù)據(jù)結(jié)構(gòu)*/int num; /*商品編號*/char name20; /* 商品名稱 */float price ;/* 商品售價 */char place 10; /* 商品名稱 */int storage ;/* 商品庫存 */_product 10, product1 10; /定義主結(jié)構(gòu)體數(shù)組和備用結(jié)構(gòu)體數(shù)組 struct data /定義日期結(jié)構(gòu)體 int year , mon th, day;struct sell /*定義銷售數(shù)據(jù)結(jié)構(gòu)*/int
5、cus ; /*顧客代碼*/int num; /*商品編號*/float sells ; /* 銷售數(shù)量 */char datal 12; /* 日期 */struct sell * next;* head_s,* pp,* tail_s ;/定義頭指針操、作指針以及尾指針struct customer /*定義銷售數(shù)據(jù)結(jié)構(gòu)*/int cus ; /*顧客代碼*/char name 10; /* 顧客姓名 */struct customer * next;* head_c,* qq,* tail_c ; /定義頭指針操、作指針以及尾指針void load (); /讀取文件函數(shù) void ad
6、d (); /添加銷售信息函數(shù)int search_num(); /根據(jù)商品編號查詢商品的銷售歷史void cal (); /計算時間段內(nèi)各個商品的銷售總額int search_name(); /根據(jù)顧客姓名,查詢購買歷史void list_name (); /顯示所有顧客的姓名void main (); / 主函數(shù)int judge (); /主體判斷函數(shù)int judge_data (char *data1); /細(xì)節(jié)判斷函數(shù),用于判斷日期是否合法void download_s(); /寫入銷售信息(顧客代碼,銷售數(shù)量、銷售日期)文件void download_c(); /導(dǎo)出顧客購買記錄
7、void display (); /顯示現(xiàn)在的商品信息/主函數(shù)void main ()doprintf售管理系統(tǒng)!*、nn("* );歡迎使用商品銷int choice struct customer * head; / 定義結(jié)構(gòu)指針head=malloc (sizeof (struct customer); / 申請動態(tài)存儲空間head- >n ext =NULLprintf ("1. 導(dǎo)入商品信息n");printf ("2. 顯示商品信息n");printf ("3. 輸入銷售記錄記錄n");printf (&q
8、uot;4. 按編號查尋商品銷售歷史n");printf ("5. 計算時間段內(nèi)各個銷售總額n");printf ("6. 按顧客姓名查找購買歷史n");printf ("7. 顯示顧客姓名n");printf ("8. 導(dǎo)出銷售信息(顧客代碼,銷售數(shù)量、銷售日期)文件n");printf ("9. 導(dǎo)出顧客信息文件n");printf0.退出n");printf*n"printf輸入其它值會提前退出n");("("*);("
9、請選擇不同功能 輸入0-9的數(shù)字n若seanf ("%d",&choice );system ("els");switch (choice )case 1:load ();system ("cls");break;case 2:display ();break;case 3:add ();break;case 4:search _nu m();break;case 5:cal ();break;case 6:search_ name();break;case 7:list_name (head);break;case 8:do
10、wnload_s ();break;case 9:download_c ();break;case 0:printf ("nnnn");printf("*謝謝使用*nnnn");break;while (choice >0&choice <=9);void display ()int code , i =0;pp=(struct sell *) malloc (sizeof (struct sell ); / 申請動態(tài)存儲空間 并將指針轉(zhuǎn)變?yōu)榻Y(jié)構(gòu)類型qq=( struct customer *) malloc (sizeof (str
11、uct customer ); / 申請動態(tài) 存儲空間并將指針轉(zhuǎn)變?yōu)榻Y(jié)構(gòu)類型p»>next =NULL/*清屏*/qq->next =NULL system ("cis");printf("*商品信息*、nnn");printf (" 商品編號庫存數(shù)量n");商品名稱商品價格商品產(chǎn)while (i <10)/輸出商品記錄printf ("%8d%12s %12.2f%10s%14dn" _product i . num _product i . name_product i . pric
12、e ,_product i . place , _product i . sto rage);i +;printf ("nn查詢完畢,請按任意鍵繼續(xù) ");getch ();system ("cis");void load () /讀取文件函數(shù)int i =0, n=0, a, b, j ;FILE *fp ; /指向文件的指針doprintf ("請選擇導(dǎo)入商品信息的方法n1:通過鍵盤輸入n2:通 過文件導(dǎo)入n");sca nf ("%d",&a);if (a=2)if (fp =fopen("
13、商品信息.txt" , "rb" )= NULL/ 打開文件printf("不能打開文件,請檢查文件路徑n" );/不能打開exit (0);/ 退出 */pri ntf"*88商品信息88*n");printf ("編號名稱價格庫存數(shù)量n");while (! feof (fp)/讀入文件fscanf (fp , "%d%s%f%s%&_product i . num)_prod uct i . name&_product i . price , _product i . pl
14、ace,&_product i . storage ); 一 一printf ("%-10d%-10s %-10.2f%-12s%-12dn" , _prod uct i . num, _product i . name_product i . price,product i . place , _prod uct i . storage );i +;for (i =0; i <10; i +)product1 i = _product i ;/ 對備用結(jié)構(gòu)體數(shù)組賦值fclose (fp); / 關(guān)閉文件printf ("tt數(shù)據(jù)讀入成功!按任意鍵繼
15、續(xù)n");if (a=1) if (fp =fopen("商品信息 1.txt" , "w")= NULL/ 打開文件printf("不能打開文件,請檢查文件路徑n" );/不能打開exit (0);/ 退出 */printf ("請輸入商品種數(shù)");sea nf ("%d", &b);printf("*商品信息*n");printf ("編號 名稱 價格 產(chǎn)地 庫存數(shù)量n");for (j =1; j <=b; j +)seanf
16、 ("%d%s%f%s%&'_product i . num)_product i . name&_ product i . price,product i . place,&_product i . storage );fprintf (fp , "%-6d%-6s%-6.2f%-6s%-6dn",product i . num)_ product i . name_product i . price , _product i . place , _product i . stora ge);fclose (fp); / 關(guān)閉文件
17、printf ("tt數(shù)據(jù)讀入成功!按任意鍵繼續(xù)n");while (a!= 1&&a!=2);/細(xì)節(jié)判斷函數(shù),用于判斷日期是否合法int judge_data (char *data1)intn=1, m, year =(data1 0- 48)* 1000+( datal 1- 48)* 100+(datal 2- 48)* 10+( dat a13- 48),month=(data1 5- 48)* 10+(data1 6- 48), day=(dat a18- 48)* 10+(data1 9- 48);m=strlen (data1);if(m=1
18、0)n =0;if (data14!= '-' | data17!='-')n =0;if (year>10000| year<1000| month>12| month<1| day>31| day< 1) n =0;if ( year %4=0&&year %100!= 0)|( year %400=0)&&month=2)if (day>30) n =0;if (month=2&&day>=29) n =0;if (month=4| month=6| month
19、=9| month=11) if (day>30) n =0; return n;/判斷函數(shù)int judge () /判斷商品編號 數(shù)量 日期是否正確int i , j =0, k, temp;for (i =0; i <10; i +)if (pp-> num=_product i . nun) j +;x =k=i ;temp =_product k. storage ;if ( _product k. storage -( int ) pp->sells )>=0)_product k. storage -= (int ) pp->sells ;/判
20、斷計算剩余量break;if (j =0) return 3;/判斷是否存在輸入編號的商品else if (temp-( int ) pp->sells <0) return 2; / 判斷 輸入量是否大于剩余庫存量elseif (pp->sells -( int ) pp-> sells >=1e-6) return 4; / 商品量elseif (judge_data (pp->data1 )=0) return 0;/ 判斷日期else return 1;/完全正確/添加銷售信息函數(shù)void add ()int code , i =0, n, m;pp
21、=(struct sell *) malloc (sizeof (struct sell ); / 申請動態(tài)存儲空間 并將指針轉(zhuǎn)變?yōu)榻Y(jié)構(gòu)類型qq=( struct customer *) malloc (sizeof (struct customer ); / 申請動態(tài) 存儲空間并將指針轉(zhuǎn)變?yōu)榻Y(jié)構(gòu)類型sran d(time(0);code=ra nd ();p»>next =NULLqq->next =NULLsystem("cls" );/* 清屏 */printf ("請輸入銷售記錄nnn" ); /*提示輸入記錄*/print
22、f ("顧客姓名商品編號銷售數(shù)量銷售日期n");printf ("-n");scanf ("%s%d%f%s"qq-> name&pp-> num&pp->sells , pp->data1);/* 輸入記錄*/n=(int ) pp-> sellsif (n<=0)printf ("商品數(shù)量有誤!!!請從新輸入");scanf("%f",&pp->sells );while (1)m=judge (); /判斷商品編號數(shù)量日期是
23、否正確if (m=1)/ pp=(struct sell *)malloc(sizeof(struct sell);/申請動態(tài)存儲空間并將指針轉(zhuǎn)變?yōu)榻Y(jié)構(gòu)類型/ qq=(struct customer *)malloc(sizeof(structcustomer);pp -> cus=qq-> cus=code; / 隨機(jī)數(shù)if (head_s=NULLhead_c=qq;輸入成功!按任意鍵繼續(xù)head_s =pp;elsetail_s ->n ext =pp;tail_s =pp;if (head_c=NULLelse tail_c ->next =qq;tail_c
24、=qq;printf ("tt 銷售信息 n");getch ();system ("cls");break;else if (m=2)system ("cis");printf ("銷售數(shù)量已大于庫存數(shù)量,請重新輸入:nnn");printf ("請輸入銷售數(shù) 量nnn" ); /*提示輸入記錄*/printf ("銷售數(shù)量 n");scanf ("%f",&pp->sells);/*輸入記錄*/continue ;else if (m=3
25、)system ("cls");printf ("無此商品,請重新輸入:nnn");錄nnn" ); /*提示輸入記錄*/號 n");/*輸入記錄*/else if (m=4)錯誤,請重新輸入商品數(shù)量:nnn");錄nnn" ); /*提示輸入記錄*/量:n");printf("請輸入銷售記printf ("商品編 scanf ("%d",&pp-> nun); continue ;system ("cis");printf(&qu
26、ot;商品數(shù)量輸入printf("請輸入銷售記printf ("銷售數(shù) scanf ("%f",&pp->sellscontinue ;);/*輸入記錄*/else if (m=0)system ("cis");printf ("銷售日期不合法,請重新輸入銷售日期:nnn"); /*提示輸入記錄*/printf ("銷售日期 n");scanf ("%s", pp-> datal);/*輸入記錄*/continue ;k+;/根據(jù)商品編號查詢商品的銷售歷史
27、search _num()int i , num k=0, flag =1, n=0;struct sell * ptr ;system("cls");printf ("請輸入商品編號:n");sca nf ("%d",&n un);for (i =0; i <10; i +)if (num=_product i . nun) flag =0; break;if (flag =1) system ("cls");入!");printf ("無此商品,請查實商品編號后按任意鍵準(zhǔn)備重新
28、輸getch ();system("cls");return 0;for (ptr =head_s; ptr ; ptr =:ptr -> next)if (nun=ptr->nun)if (k=0)printf ("商品編號銷售數(shù)量銷售總額銷售日期n");printf ("-n");k +;printf ("%5d%20d%20.2f%15sn"ptr->num( int )ptr ->sells ,(int ) ptr -> sells *_pr oduct i . price ,
29、 ptr ->data1);if (k=0) printf ("該商品記錄為空!按任意鍵繼續(xù)");getch ();system ("cis");return 0;elseprintf ("nn查詢完畢,請按任意 鍵繼續(xù)");getch ();system("cls");return 0;/計算時間段內(nèi)各個商品的銷售總額void cal ()int i , n=0;struct sell si , s2,* p=&s1 ,* q=&s2,* ptr ;system ("cis&quo
30、t;);printf ("請輸入開始日期:");scanf ("%s", p->data1);system ("cis");if (judge_data (pp->data1 )!= 1)printf("輸入日期不合法,請重新輸入:");seanf ("%s", p->data1);system ("els");n =1;elsen =0; while (n=1);printf ("請輸入結(jié)束日期:");scanf ("%s&q
31、uot;, q->data1);system ("cls");doif (judge_data (q->data1 )!= 1)printf("輸入日期不合法,請重新輸入:");scanf ("%s", q->data1);system ("cis");n =1;elsen =0; while (n=1);printf ("銷售記錄如下:tt時間:%s至%sn", p-> data1 , q->data1);銷售總額n"););printf ("
32、nntt 商品編號printf ("ttnn"for (ptr =head_s; ptr ; ptr =ptr -> next)for (i =0; i <10; i +)if (productl i . nun=p tr->nun) break;productl i . storage -=( int ) ptr ->se Ils ;for (i =0; i <10; i +)printf ("tt%2dtt%.2fn", product1 i . nun,product1 i . price *( 1000- produ
33、ct1 i . storage );printf ("nn查詢完畢,請按任意鍵繼續(xù) ");getch ();system ("cls");/根據(jù)顧客姓名,查詢購買歷史int search_name()int i ,k=1;char n ame 10;struct customer * ptrl ;struct sell * ptr2 ;system("cls");printf ("請輸入顧客姓名:n");scanf ("%s", name;for (ptr1 =head_c; ptr1 ; pt
34、r1 =ptr1 -> next) for (ptr2 =head_s; ptr2 ; ptr2 =ptr2 -> next)break;if (ptr1 ->cus=ptr2 ->cus)for (i =0; i<10; i +)if (ptr2 ->num=_product i . nun) break;if (strcmp (name ptrl -> name= 0)/ if(k=0|k%8=0)printf ("顧客姓名顧客代碼商品編號購買數(shù)量購買總額購買日期n");printf ("-n");%1pri
35、ntf ("%2s%15d%15d%10d%15.2f5sn" , ptrl ->nameptrl ->cus, ptr2 ->num( int ) ptr2 ->sells ,( int ) ptr2 ->sel Is )* productl i . price , ptr2 ->data1);k+;k =0;if (k=0)續(xù)");printf("不存在此顧客!按任意鍵繼ls");else 鍵繼續(xù)");printf ("nn查詢完畢,getch ();system("cls&
36、quot;);return 0;getch ();system ("creturn 0;請按任意/顯示所有顧客的姓名 void list_name () int n=1;struct customer * ptr ;system ("cis");if (head_c!=NULL判斷鏈表是否為空printf ("顧客姓名如下:n" ); /用來顯示所有顧客 的姓名for (ptr =head_c; ptr ; ptr =ptr -> next)printf ("tt%sn", ptr -> name;n +;pri
37、ntf ("nn顧客姓名查詢完畢,請按任意鍵繼續(xù)");getch ();system ("cis");elseprintf("顧客鏈表為空!請按任意鍵繼續(xù)");getch ();system ("cis");void download_s ()/寫入銷售信息(顧客代碼,銷售數(shù)量、銷售日期)文件 int i =0;FILE *fp;struct customer *ptr1 ;struct sell *ptr2 ;system ("cis");if (fp =fopen("銷售信息文件.txt" ,"w")= NULLprintf("銷售信息文件無法生成!n");exit (0);if (qq!=NULLfprintf (fp,&q
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東理工學(xué)院《虛擬商業(yè)創(chuàng)新創(chuàng)業(yè)實訓(xùn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東江門中醫(yī)藥職業(yè)學(xué)院《地理空間分析與建?!?023-2024學(xué)年第一學(xué)期期末試卷
- 廣東環(huán)境保護(hù)工程職業(yè)學(xué)院《雕塑語言實踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東工貿(mào)職業(yè)技術(shù)學(xué)院《運籌學(xué)A》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東工程職業(yè)技術(shù)學(xué)院《社會體育指導(dǎo)與管理專業(yè)導(dǎo)論》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東第二師范學(xué)院《兼并與收購》2023-2024學(xué)年第一學(xué)期期末試卷
- 火災(zāi)安全課件
- 《計算機(jī)通信與實驗》課件
- 安全月學(xué)生培訓(xùn)課件
- 贛南科技學(xué)院《材料加工工藝和設(shè)備》2023-2024學(xué)年第一學(xué)期期末試卷
- YBT 6273-2024《蘭炭機(jī)械強(qiáng)度測定方法》
- 2024年新高考Ⅰ卷作文審題立意及寫作指導(dǎo)+課件
- 2024年山東臨沂市恒源熱力集團(tuán)限公司高校畢業(yè)生招聘9人重點基礎(chǔ)提升難、易點模擬試題(共500題)附帶答案詳解
- 2024年房屋頂賬協(xié)議模板(二篇)
- 美國史智慧樹知到期末考試答案章節(jié)答案2024年東北師范大學(xué)
- 售后服務(wù)方案及運維方案
- 機(jī)加工工作計劃安排
- 2024年巴西手游市場市場前景及投資研究報告
- 習(xí)慣性違章培訓(xùn)
- 2024年云南昆明市公安局直屬部門缺勤務(wù)輔警招聘筆試參考題庫附帶答案詳解
- 碼頭建設(shè)報批程序
評論
0/150
提交評論