雜貨店管理系統(tǒng)_第1頁
雜貨店管理系統(tǒng)_第2頁
雜貨店管理系統(tǒng)_第3頁
雜貨店管理系統(tǒng)_第4頁
雜貨店管理系統(tǒng)_第5頁
已閱讀5頁,還剩44頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 電子科技大學成都學院微電子技術系C語言課程設計實驗報告冊題 目:雜貨店庫存銷售管理系統(tǒng) 指導教師: 設 計 者(組長): 趙同學 設 計 者(組員1): 李同學 所屬院系:微電子技術系 微電子技術系制2016年 6月1日一、課程設計的目的1、進一步掌握和利用C語言進行程設計的能力;2、進一步理解和運用結(jié)構(gòu)化程序設計的思想和方法;3、初步掌握開發(fā)一個小型實用系統(tǒng)的基本方法;4、學會調(diào)試一個較長程序的基本方法;5、學會利用流程圖或N-S圖表示算法;6、掌握書寫程序設計開發(fā)文檔的能力。二、課程設計的任務內(nèi)容(一)系統(tǒng)需求分析1. 輸入記錄:將每一個商品的商品名稱、商品ID 號以及商品類型、商品單價

2、、商品數(shù)量的數(shù)據(jù)作為一個記錄。該軟件能建立一個新的數(shù)據(jù)文件或給已建立好的數(shù)據(jù)文件增加記錄。2. 顯示記錄:根據(jù)用戶提供的記錄或者根據(jù)商品名稱顯示一個或幾個商品的各項詳細記錄。3. 修改記錄:可以對數(shù)據(jù)文件的任意記錄的數(shù)據(jù)進行修改并在修改前后對記錄內(nèi)容進行顯示。4查找記錄:可以對數(shù)據(jù)文件的任意記錄的數(shù)據(jù)進行查找并在查找前后對記錄內(nèi)容進行顯示。5. 刪除記錄:可刪除數(shù)據(jù)文件中的任一記錄。6排序:按貨號排序。7. 統(tǒng)計: (A)統(tǒng)計有多少種商品類型,并計算各項商品類型下的商品數(shù)量和總金額,。(B) 統(tǒng)計符合指定條件(如商品單價在50元以下、50100 元、100元以上) 以內(nèi)的商品數(shù)量以及占總商品數(shù)

3、量的百分比。(C)按貨號或者單價排序形式打印全部商品信息表。8保存數(shù)據(jù)文件以及打開數(shù)據(jù)文件功能。經(jīng)過逐層逐塊、不斷細化、求精過程,編寫程序并進行測試、驗證,可以逐個模塊地分開調(diào)試,并通過文件包含或用工程文件的形式進行逐步聯(lián)合調(diào)試。三模塊設計分析(一)系統(tǒng)功能模塊圖歡迎畫面登陸界面主菜單保存與讀取按商品ID號查找修改商品ID號修改商品名稱修改商品數(shù)量修改商品價格修改商品類型找零查詢庫存查詢銷量排行名稱顧客消費排行統(tǒng)計某月生日顧客(二)各個模塊詳細功能描述1.歡迎界面:有背景音樂和配圖,配圖顏色會隨機變化。2.登陸界面:可以進行背景色的設置,瀏覽關于我們的技術支持信息,可以修改登陸密碼等。3.客戶

4、管理:實現(xiàn)客戶信息的增刪查改。4.商品管理:實現(xiàn)了商品基本信息錄入的增刪查改,還能查看庫存量,此處的庫存量會由于銷售系統(tǒng)部分售出商品而及時更改庫存信息。5.購物結(jié)算:可幫助售貨員進行銷售,具有結(jié)算功能,可實現(xiàn)收銀臺的作用。6.銷售結(jié)算:對銷售量,庫存量,客戶購買需求等進行統(tǒng)計排名,幫助店家進貨時能選擇熱銷商品,同時可以查詢各個月份生日的顧客。(三)功能函數(shù)的調(diào)用關系圖主函數(shù)歡迎程序登陸程序客戶管理退出程序購物結(jié)算銷售結(jié)算商品管理客戶貢獻排行程序修改客戶程序添加客戶程序刪除客戶程序查詢客戶程序查詢商品程序刪除商品程序修改商品程序添加商品程序查詢某月客戶生日程序銷量排行程序四系統(tǒng)詳細設計(請按照功

5、能模塊的劃分,抓圖并搭配相應的實現(xiàn)代碼來描述具體的實現(xiàn)。代碼中可以添加必要的注釋)1.歡迎界面:有背景輕音樂,有動態(tài)動畫展示,動畫顏色隨機變化。#ifndef _user_def_H /用戶自定義頭文件user-defined#define _user_def_H#include <windows.h> /支持Sleep函數(shù) #include <stdio.h> #include <time.h> /用于隨機函數(shù)初始化time()void color_back() /設置文本字符的顏色 int i; srand(unsigned)time(NULL); /初

6、始化時鐘 i=rand()%15; /隨機一個0到14的整數(shù) switch(i) case 0: system("color 07");break; case 1: system("color 08");break; case 2: system("color 09");break; case 3: system("color 0A");break; case 4: system("color 0B");break; case 5: system("color 0C");br

7、eak; case 6: system("color 0D");break; case 7: system("color 0E");break; case 8: system("color 0F");break; case 9: system("color 01");break; case 10:system("color 02");break; case 11:system("color 03");break; case 12:system("color 04&q

8、uot;);break; case 13:system("color 05");break; case 14:system("color 06");break; void display_picture() /顯示動畫程序 system("cls"); printf("nn"); color_back(); /隨機一個文本顏色 Sleep(300); /讓系統(tǒng)暫停300毫秒,1秒 = 1 000 毫秒 printf("tt -n"); color_back(); Sleep(300); prin

9、tf("tt |-|n"); color_back(); Sleep(600); printf("tt * * * * * * *n"); color_back(); Sleep(600); printf("tt * * * * *n"); color_back(); Sleep(900); printf("tt <= *= *=<<<<<<n"); color_back(); Sleep(900);printf("tt * * *n"); color_

10、back(); Sleep(1000);printf("tt * * * *n"); color_back(); Sleep(1000);printf("tt * *n"); color_back(); Sleep(1200); printf("tt - n"); color_back(); Sleep(1300);printf("tt 李&趙 雜貨商店 n"); color_back(); Sleep(1300); printf("tt - - n"); color_back(); S

11、leep(600); printf("tt * * * * n"); color_back(); Sleep(600); printf("tt * * n"); color_back(); Sleep(600); printf("tt * * * *n"); color_back(); Sleep(600); printf("tt * * * * n");#endif2.登陸界面:登陸賬號,改變背景色,修改密碼,查看關于我們的技術支持,退出系統(tǒng)void main() char choice='5'

12、/存儲判斷的選項 int i; PlaySound (TEXT("C:Users15878Desktopsupermarket洋蔥.wav"), NULL, SND_ASYNC | SND_NODEFAULT);/音樂播放 printf("雜貨店管理程序n"); system("pause"); for(i=0;i<1;i+) display_picture(); /打印動畫效果 printf("nttt 親,歡迎光臨本系統(tǒng)!(00)/n"); system("pause"); /暫停 d

13、o system("cls"); system("color EE"); printf("nn*歡迎進入趙&李超市管理系統(tǒng)*nn"); printf("n請您選擇操作選項:nn"); printf("tt 1.登錄賬號n"); printf("tt 2.修改密碼n"); printf("tt 3.更改系統(tǒng)顏色n"); printf("tt 4.關于我們n"); printf("tt 5.退出系統(tǒng)n"); pr

14、intf("nn*nn"); printf("n 請輸入您的選項(1,2,3,4,5):"); choice=getch(); switch(choice)case '1': if(userlogin()=1)showMymenue();break;case '2': changepw();break;case '3': Color();break;case '4': aboutUs();break;case '5': printf("nn系統(tǒng)安全退出nn"

15、;);exit(0);break; while(1);void Color()system("cls");printf("1.藍白色n");printf("2.紫白色n");printf("3.黑綠色n");switch(getch()case '1': system("color 1f");break;case '2': system("color 5f");break;case '3': system("color

16、 02");break;void aboutUs() system("cls"); printf("nn*歡迎進入趙&李超市管理系統(tǒng)*|nn"); printf("tttttttt|n"); printf("-|n"); printf("tt版權(quán)所有電子科技大學成都學院電科一班tt|nn"); printf("ttt趙&李專屬,翻版必究ttt|nn"); printf("*技術扶持*|n"); printf("tt趙先生

17、:TellQQ:1587810964t|n"); printf("-n"); printf("tt李先生:TellQQ:1297579452t|n"); printf("-n"); pcontinue();int userlogin()struct user info;char pw100=0, pw_confirm100=0;int wt = 0;memset(&info, 0, sizeof info);read_data(&info);system(&

18、quot;cls");printf("welcome! please loginn");while(1)printf("請輸入用戶名:");scanf("%s", pw);if(strcmp(pw,) != 0) printf("無用戶名n");continue;printf("請輸入密碼:");scanf("%s", pw);if(strcmp(pw, info.pw) != 0) printf("密碼錯誤*");printf

19、("您還有%d次輸入機會!nn",2-wt);elsebreak;wt +;if(wt >= 3)printf("3次密碼錯誤!n");printf("請稍后再次登錄nn");printf("請按任意鍵退出");getch();return -1;return 1;void changepw()struct user info;char pw100=0, pw_confirm100=0;read_data(&info);system("cls");while(1)int i;pri

20、ntf("按1改密碼n按0退出n");scanf("%d", &i);if(i = 0)break;if(i = 1)while(1)printf("請輸入原始密碼n");scanf("%s", pw);if(strcmp(pw, info.pw) != 0)printf("原始密碼錯誤n");continue;printf("請輸入新密碼n");scanf("%s", pw);printf("請再輸一次n");scanf(&q

21、uot;%s", pw_confirm);if(strcmp(pw, pw_confirm) != 0) int j;printf("兩次密碼不一致!n");while(1)printf("按1再一次改密碼n按2返回上一步n按0退出n");scanf("%d", &j);if(j = 0) return -2;if(j = 1 | j = 2) break;printf("unknown inputn");if(j = 2) break;continue;strcpy(info.pw, pw);w

22、rite_data(&info);break;elseprintf("unknown input, should be 0/1n");3.主菜單void showMymenue() char choice='5' while(1) system("cls"); BreakLine; printf("tt1. 商品管理n"); printf("tt2. 客戶管理n"); printf("tt3. 購物預算n"); printf("tt4. 銷售預算n")

23、; printf("tt5. 退出系統(tǒng)n"); BreakLine; printf("nn請輸入您的選擇(1,2,3,4,5):"); choice=getch(); switch (choice) case'1': showGoodsmenue(); break; case'2': showCustmenue(); break;case'3': showSell(); break;case'4': showSales(); break;case'5':printf(&quo

24、t;nn系統(tǒng)安全退出nn");exit(0);break;default: printf("n您的輸入有誤,請檢查后重新輸入n"); pcontinue(); 4.商品管理:包括添加商品,修改商品,刪除商品,查詢商品#include <stdio.h>#include <string.h> #include <conio.h>#include <stdlib.h>#include "MyParams.h"#include "common.h"#include "Mym

25、enu.h"#include "Goodsman.h"struct dateint year;int month;int day;struct goods int no; /編碼:char name20; /名稱:struct date scday; /生產(chǎn)期 struct date:表示結(jié)構(gòu)體類型date型 scday變量名 生日:-> struct datefloat expenda; /原價:float expendb; /單價:int save; /庫存量int sell; /出售量goods100000; /定義一個全局的結(jié)構(gòu)體數(shù)組 100000i

26、nt total;int read_Message()FILE *fp;int i=0;if(fp=fopen("goods.dat","rb")=NULL)printf("n*暫無任何可讀信息,按任意鍵繼續(xù)*");getch();return 0;while(feof(fp)!=1)fread(&goodsi,sizeof(struct goods),1,fp);if(goodsi.no=0)break;elsei+;fclose(fp);return i;void saveall() FILE*fp; int i; if(

27、fp=fopen("goods.dat","wb")=NULL) printf("n無法打開文件n"); return; for(i=0;i<total;i+) fwrite(&goodsi,sizeof(struct goods),1,fp); fclose(fp);void addgoods()struct goods newgoods; /新加入的結(jié)構(gòu)體數(shù)組char choice='y' /是否繼續(xù)錄入信息FILE *fp; /文件指針,用它指向一個文件int i=0; /i是一個計數(shù)器,因為文件中

28、最多存1000個數(shù)據(jù) dosystem("cls");printf("n*添加商品信息*n");printf("請輸入商品編碼:");scanf("%d",&newgoods.no); /取地址因為它是一個基本類型的數(shù)據(jù)BreakLine;printf("請輸入商品名稱:");scanf("%s",&); BreakLine;printf("請輸入商品生產(chǎn)期:(格式如下:1999-9-9):");scanf(&qu

29、ot;%d-%d-%d",&newgoods.scday.year,&newgoods.scday.month,&newgoods.scday.day);printf("請輸入商品原價:");scanf("%f",&newgoods.expenda); printf("請輸入商品單價:");scanf("%f",&newgoods.expendb);printf("請輸入商品出售量:");scanf("%d",&new

30、goods.sell);printf("請輸入商品庫存量:");scanf("%d",&newgoods.save);/以上完成了輸入客戶信息的操作; /將newcust結(jié)構(gòu)體中的數(shù)據(jù)保存到一個磁盤文件中if(fp=fopen("goods.dat","ab")=NULL)printf("無法打開文件"); return; /如果打得開文件 /要保存數(shù)據(jù)的地址 這個數(shù)據(jù)類型的長度 幾個數(shù)組文件指針fwrite(&newgoods,sizeof(struct goods),1,fp

31、);fclose(fp); /重新確認是否繼續(xù)錄入printf("n還要繼續(xù);錄入商品信息嗎?(y/n)");choice=getch();while(choice='y');void delgoods()int i,j;int todelno;char choice='n'system("cls");total=read_Message();printf("n請輸入你要刪除的商品的編碼:");scanf("%d",&todelno);for(i=0;i<total;i

32、+)if(todelno=goodsi.no)break; /如果,沒有找到要刪除的商品if(i=total)printf("n沒有找到您想刪除的商品n");printf("n按任意鍵繼續(xù)n");getch();return; printf("親愛的管理員,刪除后無法恢復,您確定要刪除嗎?(y/n)");choice=getch();if(choice='n')printf("n放棄刪除,返回上一級n");printf("n按任意鍵繼續(xù)n");getch();return;for

33、(j=i;j<total;j+)goodsj=goodsj+1;total-=1;saveall();printf("n刪除商品數(shù)據(jù)成功n");pcontinue();getch();void updategoods()int i,r;int todelno;/struct goods gx; char choice='n'system("cls");total=read_Message();printf("n請輸入你要更新的商品的編號:");scanf("%d",&todelno);

34、for(i=0;i<total;i+)if(todelno=goodsi.no)break;/如果,沒有找到要刪除的商品if(i=total)printf("n沒有找到您想更新的商品n");pcontinue();getch();return; printf("n*更新商品信息*n"); printf("n*請選擇更新項目*n"); printf(" 1.商品編碼n"); printf(" 2.商品名稱n"); printf(" 3.商品生產(chǎn)期n"); printf(&

35、quot; 4.商品原價n"); printf(" 5.商品單價n"); /printf(" 6.商品出售量n"); printf(" 6.商品庫存量n"); printf(" 7.返回上級n"); BreakLine; while(1) printf("請輸入選擇項目:"); scanf("%d",&r); switch(r) case 1:printf("n請輸入商品編碼:");scanf("%d",&go

36、odsi.no);break; case 2:printf("n請輸入商品名稱:");scanf("%s",&);break; case 3:printf("n請輸入商品生產(chǎn)期:(格式如下:1999-9-9):");scanf("%d-%d-%d",&goodsi.scday.year,&goodsi.scday.month,&goodsi.scday.day); break; case 4:printf("n請輸入商品原價:");scanf

37、("%f",&goodsi.expenda);break; case 5:printf("n請輸入商品單價:");scanf("%f",&goodsi.expendb);break;/ case 6:printf("n請輸入商品出售量:");/scanf("%d",&goodsi.sell);/break; case 6:printf("n請輸入商品庫存量:");scanf("%d",&goodsi.save);break;

38、 default:showGoodsmenue();BreakLine; printf("親愛的管理員,您確定要修改嗎?(y/n)"); choice=getch(); if(choice='n') printf("n放棄修改,返回上一級n"); printf("n按任意鍵繼續(xù)n"); getch(); return; / goodsi=gx; total-=1; saveall(); printf("n修改商品數(shù)據(jù)成功n"); pcontinue(); getch(); void findgood

39、s()int i;struct goods c;total=read_Message();system("cls");printf("n*商品信息*n");printf("n商品總數(shù):%d",total);if(total>0)printf("n*顯示所有商品信息*n");printf("n編號t名稱t生產(chǎn)期tt原價t單價t出售量t庫存量n");for(i=0;i<total;i+)c=goodsi;printf("n%dt%st%d-%d-%dt%.2ft%.2ft%dt

40、%dtn",c.no,,c.scday.year,c.scday.month,c.scday.day,c.expenda,c.expendb,c.sell,c.save);BreakLine;else printf("n*系統(tǒng)中暫無任何商品信息*n");printf("n按任意鍵繼續(xù)n");getch();5.客戶管理:包括客戶信息的增添,刪除,修改,與查詢#include <stdio.h>#include <string.h> #include <conio.h>#include <st

41、dlib.h>#include "MyParams.h"#include "common.h"#include "Mymenu.h"#include "CustMan.h"int read_message(); struct dataint year;int month;int day; ;struct custint no; /編號char name20; /名字double expenditure; /總花費char tel20; /電話號碼struct data birthday; /生日cust100

42、0; /最多存1000個客戶信息int total; /現(xiàn)在cust.dat文件中總的紀錄條數(shù)void saveAll() FILE*fp;int i;if(fp=fopen("cust.dat","wb")=NULL)printf("n無法打開文件n");return;for(i=0;i<total;i+)fwrite(&custi,sizeof(struct cust),1,fp);fclose(fp);/ 獲取現(xiàn)有文件中客戶的總?cè)藬?shù)int read_message()FILE*fp;int i=0;/記數(shù) /打開文

43、件if(fp=fopen("cust.dat","rb")=NULL)printf("n*暫無任何可讀消息,按任意鍵繼續(xù)*n");getch();return 0; while(!feof(fp) fread(&custi,sizeof(struct cust), 1, fp); if(custi.no=0) break; else i+; /循環(huán)讀取文件中的每一條記錄 fclose(fp); return i; /存到cust結(jié)構(gòu)中void addcust() /定義增加的struct cust newcust;char c

44、hoice='y'FILE *fp;int i=0;dosystem("cls");BreakLine;printf("請輸入客戶的編號:");scanf("%d",&newcust.no);printf("n");printf("請輸入客戶的名字:");scanf("%s",);printf("n");printf("請輸入客戶消費:"); scanf("%lf",&

45、amp;newcust.expenditure);printf("n");printf("請輸入客戶的電話號碼:");scanf("%s",newcust.tel);printf("n");printf("請輸入客戶的生日:(格式:1999-9-9)");scanf("%d-%d-%d",&newcust.birthday.year,&newcust.birthday.month,&newcust.birthday.day);printf("

46、n");BreakLine;if(fp=fopen("cust.dat","ab")=NULL)printf("n對不起,不能打開指定的文件n");return ;fwrite(&newcust,sizeof(struct cust),1,fp);fclose(fp);printf("您還要繼續(xù)輸入新客戶信息嗎?(y/n)");choice=getch();while(choice='y');void findall() /定義查詢所有的 int i; struct cust c;

47、 total= read_message(); system("cls"); printf("n*客戶信息*n"); printf("n客戶總數(shù):%dn",total); if(total>0) printf("n*顯示所有客戶信息*n"); printf("n 編號 tt 姓名 tt消費 tt 電話 ttt 生日"); for(i=0;i<total;i+) c=custi; printf("n%dtt%stt%.2ftt%stt%d-%d-%dttn",c.n

48、o,,c.expenditure,c.tel,c.birthday); printf("n"); else printf("n*系統(tǒng)中暫無任何客戶信息*"); pcontinue();void updatecust() int i,q; int toupdateno; /要更新的編號 int j; system("cls"); total=read_message(); / 讀出信息 printf("n請輸入您要更新的客戶編號:"); scanf("%d",&toupdate

49、no); /查找 for(i=0;i<total;i+) if(toupdateno=custi.no) break; /i里面記錄了要更新的客戶的索引 if(i=total) printf("n沒有找到要更新的客戶n");printf("按任意鍵繼續(xù)n");getch();return; printf("n*請更新用戶信息*n"); printf("n*請選擇更新項目*n"); printf(" 1.客戶姓名n"); printf(" 2.客戶電話n"); printf(" 3.客戶生日n"); printf("

溫馨提示

  • 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

提交評論