版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第C語言實(shí)現(xiàn)銷售管理系統(tǒng)設(shè)計(jì)本文實(shí)例為大家分享了C語言實(shí)現(xiàn)銷售管理系統(tǒng)設(shè)計(jì)的具體代碼,供大家參考,具體內(nèi)容如下
某公司有四個(gè)銷售員(編號(hào):1-4),負(fù)責(zé)銷售五種產(chǎn)品(編號(hào):1-5)。每個(gè)銷售員都將當(dāng)天出售的每種產(chǎn)品各寫一張便條交上來。每張便條包含內(nèi)容:銷售員的代號(hào)、產(chǎn)品的代號(hào)、這種產(chǎn)品的當(dāng)天的銷售額。每位銷售員每天上繳1張便條。
試設(shè)計(jì)一個(gè)便條管理系統(tǒng),使之能提供以下功能:
1、系統(tǒng)以菜單方式工作
2、便條信息錄入功能輸入(支持便條信息文件導(dǎo)入)
3、便條信息修改功能
4、便條信息刪除功能
5、收集到了上個(gè)月的所有便條后,讀取銷售情況
1)計(jì)算每個(gè)人每種產(chǎn)品的銷售額。
2)按銷售額對(duì)銷售員進(jìn)行排序,輸出排序結(jié)果(銷售員代號(hào))
3)統(tǒng)計(jì)每種產(chǎn)品的總銷售額,對(duì)這些產(chǎn)品按從高到底的順序,輸出排序結(jié)果(需輸出產(chǎn)品的代號(hào)和銷售額)
詳情請(qǐng)參考代碼,注釋寫的很詳細(xì),希望能給你幫助.
最后的最后有截圖展示效果.
#includestdio.h
#includeconio.h
#includestring.h
#includestdlib.h
#defineM155
///這些函數(shù)下面會(huì)詳細(xì)的介紹的滴!
voiddetail();
voidforeach();
voidmenu();
voidproduct();
voidreaddata();
voidseller();
voidtotal();
voidchoice();
voidadd();
voiddeleteing();
voidupdate();
voidclearing();
structss{
intsid;///銷售代碼
intpid;///產(chǎn)品代號(hào)
intsn;///銷售額
}ss[M];
intn;///便條數(shù)目
ints[4][5]={{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}};///用戶保存員工和產(chǎn)品信息
///從文件讀取數(shù)據(jù)
voidreaddata()
FILE*fp;///定義文件指針
///調(diào)用fopen函數(shù),以只讀模式打開d:\list.txt文件,并驗(yàn)證返回值是否為空
if((fp=fopen("d:\\list.txt","r"))==NULL)
{
printf("文件打開失敗!\n");
exit(0);///表示正常的退出
}
else
/**feof是輸入輸出函數(shù),檢查文件是否結(jié)束,如結(jié)束,則返回非零值,
否則返回0.函數(shù)原型為:intfeof(FILE*fp)**/
for(n=0;!feof(fp);n++)
{
fscanf(fp,"%d%d%d\n",ss[n].sid,ss[n].pid,ss[n].sn);
}///保存文件數(shù)據(jù)到結(jié)構(gòu)體
fclose(fp);///關(guān)閉文件
///從便條讀到的數(shù)據(jù)分類整理統(tǒng)計(jì)
voidforeach()
inti;
for(i=0;ii++)///遍歷所有紙條
{
switch(ss[i].pid)///按產(chǎn)品分類,再按銷售員分類,累加各人各產(chǎn)品銷售額
{
case1:///當(dāng)ss[i].pid為1的時(shí)候,也就是當(dāng)產(chǎn)品代號(hào)為1的時(shí)候
switch(ss[i].sid)///查看銷售代碼
{
///當(dāng)銷售代碼為1的時(shí)候,累加1號(hào)銷售員編號(hào)為1的產(chǎn)品的銷售額
case1:s[0][0]+=ss[i].sn;break;
///當(dāng)銷售代碼為2的時(shí)候,累加2號(hào)銷售員編號(hào)為1的產(chǎn)品的銷售額
case2:s[1][0]+=ss[i].sn;break;
///當(dāng)銷售代碼為3的時(shí)候,累加3號(hào)銷售員編號(hào)為1的產(chǎn)品的銷售額
case3:s[2][0]+=ss[i].sn;break;
///當(dāng)銷售代碼為4的時(shí)候,累加4號(hào)銷售員編號(hào)為1的產(chǎn)品的銷售額
case4:s[3][0]+=ss[i].sn;break;
}
break;
///以下代碼同理可得
case2:
switch(ss[i].sid)
{
case1:s[0][1]+=ss[i].sn;break;
case2:s[1][1]+=ss[i].sn;break;
case3:s[2][1]+=ss[i].sn;break;
case4:s[3][1]+=ss[i].sn;break;
}
break;
case3:
switch(ss[i].sid)
{
case1:s[0][2]+=ss[i].sn;break;
case2:s[1][2]+=ss[i].sn;break;
case3:s[2][2]+=ss[i].sn;break;
case4:s[3][2]+=ss[i].sn;break;
}
break;
case4:
switch(ss[i].sid)
{
case1:s[0][3]+=ss[i].sn;break;
case2:s[1][3]+=ss[i].sn;break;
case3:s[2][3]+=ss[i].sn;break;
case4:s[3][3]+=ss[i].sn;break;
}
break;
case5:
switch(ss[i].sid)
{
case1:s[0][4]+=ss[i].sn;break;
case2:s[1][4]+=ss[i].sn;break;
case3:s[2][4]+=ss[i].sn;break;
case4:s[3][4]+=ss[i].sn;break;
};
break;
}
}
///菜單選項(xiàng)
voidmenu()
intc;
puts("\t\t*********菜單*********************\n\n");
puts("\t\t1.查看每人每種產(chǎn)品的銷售額\n");
puts("\t\t2.按銷售額對(duì)銷售員排序(銷售員代號(hào))\n");
puts("\t\t3.對(duì)每種產(chǎn)品總銷售額從高到低排序(產(chǎn)品代號(hào)和銷售額)\n");
puts("\t\t4.輸出統(tǒng)計(jì)報(bào)表\n");
puts("\t\t5.錄入一條便條信息\n");
puts("\t\t6.修改一條便條信息\n");
puts("\t\t7.刪除一條便條信息\n");
puts("\t\t8.退出\n");
puts("\n\n\t\t*********************************************\n");
printf("請(qǐng)選擇(1-8):[]\b\b");
scanf("%d",
if(c1||c8)///錯(cuò)誤輸入,重新獲取輸入
{
printf("您輸入的選項(xiàng)不在我們服務(wù)范圍之內(nèi)\請(qǐng)確定好您要選擇的服務(wù),重新輸入?。?!\n");
menu();
}
else///正確輸入
switch(c)///根據(jù)輸入實(shí)現(xiàn)相應(yīng)函數(shù)調(diào)用
{
case1:detail();
break;
case2:seller();
break;
case3:product();
break;
case4:total();
break;
case5:add();
break;
case6:update();
break;
case7:deleteing();
break;
case8:exit(0);
}
///計(jì)算上個(gè)月每個(gè)人每種產(chǎn)品的銷售額
voiddetail()
inti,j;
for(i=0;ii++)
{
printf("\n\t\t%d號(hào)銷售員銷售情況:\n",i+1);
for(j=0;jj++)
printf("\t\t%d號(hào)產(chǎn)品銷售額:%d\n",j+1,s[i][j]);
}
choice();
///按銷售額對(duì)銷售員進(jìn)行排序,輸出排序結(jié)果(銷售員代號(hào))
voidseller()
inti,j,k;
intsp[4]={0,0,0,0};///存銷售員的銷售額
for(i=0;ii++)///統(tǒng)計(jì)銷售員的銷售額
for(j=0;jj++)
sp[i]+=s[i][j];
for(i=0;ii++)///排序
{
k=0;
for(j=0;jj++)
{
if(sp[k]sp[j])
k=j;
}
printf("\t\t第%d名是%d號(hào)銷售員!\n",i+1,k+1);
sp[k]=-1;
}
choice();
///對(duì)每種產(chǎn)品總銷售額從高到低排序(產(chǎn)品代號(hào)和銷售額)
voidproduct()
inti,j,k;
intp[5]={0,0,0,0,0};///存每種產(chǎn)品的銷售額
for(i=0;ii++)///統(tǒng)計(jì)每種產(chǎn)品的銷售額
for(j=0;jj++)
p[i]+=s[j][i];
for(i=0;ii++)///將產(chǎn)品的銷售額進(jìn)行排序
{
k=0;
for(j=0;jj++)
{
if(p[k]p[j])
k=j;
}
printf("\t\t第%d名是%d號(hào)產(chǎn)品!\銷售額為%d!\n",i+1,k+1,p[k]);
p[k]=-1;
}
choice();
///輸出統(tǒng)計(jì)報(bào)表(輸出銷售代號(hào),產(chǎn)品代號(hào)和銷售額)
voidtotal()
inti,j;
printf("\n\t銷售員\t產(chǎn)品\t銷售額\n");
for(i=0;ii++)
for(j=0;jj++)
printf("\t%d\t%d\t%d\n",i+1,j+1,s[i][j]);
choice();
///選擇退出系統(tǒng)或返回主菜單
voidchoice()
intc;
printf("請(qǐng)選擇接下來想做什么:\n1.返回菜單\n2.退出系統(tǒng)\n");
scanf("%d",
if(c==1)
menu();
else
exit(0);
///錄入一條便條信息
voidadd()
printf("請(qǐng)?zhí)顚懩浫氲谋銞l的信息:銷售代碼,產(chǎn)品代碼,銷售額\n");
/**接著readdata()統(tǒng)計(jì)的文本中便條的信息到結(jié)構(gòu)體數(shù)組里,
將添加的信息首先保存在那些信息的后面**/
scanf("%d%d%d",ss[n].sid,ss[n].pid,ss[n].sn);
FILE*fp;///定義文件指針
char*str="d:\\list.txt";
printf("該條記錄正在寫入文件list.txt~~~~\n");
fp=fopen(str,"a");///參數(shù)"a"意思是說將新添加的數(shù)據(jù)接著文本里的數(shù)據(jù)寫,不會(huì)覆蓋文本里的內(nèi)容
fprintf(fp,"\n%d\t%d\t%d",ss[n].sid,ss[n].pid,ss[n].sn);///將結(jié)構(gòu)體里的信息寫入文本
fclose(fp);///關(guān)閉文件
printf("\n該條記錄已經(jīng)寫入文件list.txt,請(qǐng)前往查看!\n");
switch(ss[n].pid)///借用foreach()函數(shù)里的代碼,詳情請(qǐng)參考foreach()函數(shù)
{
case1:///當(dāng)ss[i].pid為1的時(shí)候,也就是當(dāng)產(chǎn)品代號(hào)為1的時(shí)候
switch(ss[n].sid)///查看銷售代碼
{
///當(dāng)銷售代碼為1的時(shí)候,累加1號(hào)銷售員編號(hào)為1的產(chǎn)品的銷售額
case1:s[0][0]+=ss[n].sn;break;
///當(dāng)銷售代碼為2的時(shí)候,累加2號(hào)銷售員編號(hào)為1的產(chǎn)品的銷售額
case2:s[1][0]+=ss[n].sn;break;
///當(dāng)銷售代碼為3的時(shí)候,累加3號(hào)銷售員編號(hào)為1的產(chǎn)品的銷售額
case3:s[2][0]+=ss[n].sn;break;
///當(dāng)銷售代碼為4的時(shí)候,累加4號(hào)銷售員編號(hào)為1的產(chǎn)品的銷售額
case4:s[3][0]+=ss[n].sn;break;
}
break;
///以下代碼同理可得
case2:
switch(ss[n].sid)
{
case1:s[0][1]+=ss[n].sn;break;
case2:s[1][1]+=ss[n].sn;break;
case3:s[2][1]+=ss[n].sn;break;
case4:s[3][1]+=ss[n].sn;break;
}
break;
case3:
switch(ss[n].sid)
{
case1:s[0][2]+=ss[n].sn;break;
case2:s[1][2]+=ss[n].sn;break;
case3:s[2][2]+=ss[n].sn;break;
case4:s[3][2]+=ss[n].sn;break;
}
break;
case4:
switch(ss[n].sid)
{
case1:s[0][3]+=ss[n].sn;break;
case2:s[1][3]+=ss[n].sn;break;
case3:s[2][3]+=ss[n].sn;break;
case4:s[3][3]+=ss[n].sn;break;
}
break;
case5:
switch(ss[n].sid)
{
case1:s[0][4]+=ss[n].sn;break;
case2:s[1][4]+=ss[n].sn;break;
case3:s[2][4]+=ss[n].sn;break;
case4:s[3][4]+=ss[n].sn;break;
};
break;
}
n++;
choice();
/**刪除便條信息流程:新建一個(gè)臨時(shí)文件,將不被刪除的便條信息存到臨時(shí)文件里,
然后刪除原文件,再將臨時(shí)文件改名為原文件的文件名**/
voiddeleteing()
printf("請(qǐng)輸入您要?jiǎng)h除的便條的信息:銷售代碼,產(chǎn)品代碼,銷售額\n");
inta,b,c;///存用戶需要?jiǎng)h除的便條的信息
scanf("%d%d%d",a,b,
printf("請(qǐng)稍等,您選擇的便條正在刪除~~~\n");
FILE*fin,*ftp;
intx,y,z;
fin=fopen("d:\\list.txt","r");///讀打開原文件list.txt
ftp=fopen("d:\\tmp.txt","w");///寫打開臨時(shí)文件tmp.txt
if(fin==NULL||ftp==NULL){
printf("文件打開失??!\n");
exit(0);
}
intm=0;///該變量是控制寫入文本是首行不自動(dòng)換行
for(inti=0;!feof(fin);i++)
{
fscanf(fin,"%d%d%d\n",x,y,///從原文件讀取到的一行數(shù)據(jù)放到x,y,z三個(gè)變量中
if(x==ay==bz==c)///所有的數(shù)據(jù)相等,說明是要?jiǎng)h除的便條,則不寫入臨時(shí)文件
continue;
else///將不是要?jiǎng)h除的其他便條信息寫入臨時(shí)文件
{
if(m==0)
{
fprintf(ftp,"%d\t%d\t%d",x,y,z);///不是則將這一行寫入臨時(shí)文件tmp.txt
m++;
}
else
fprintf(ftp,"\n%d\t%d\t%d",x,y,z);///不是則將這一行寫入臨時(shí)文件tmp.txt
}
}
fclose(fin);
fclose(ftp);
system("DEL/fd:\\list.txt");///刪除原文件,如果刪除錯(cuò)誤,會(huì)報(bào)原因
///unlink("d:\\list.txt");///刪除原文件
rename("d:\\tmp.txt","d:\\list.txt");///將臨時(shí)文件名改為原文件名
printf("您選擇的便條已經(jīng)刪除,請(qǐng)打開文件查看!\n");
clearing();
readdata();
foreach();
choice();
///清空之前所統(tǒng)計(jì)的原文件里的銷售員和銷售產(chǎn)品所對(duì)應(yīng)的銷售額
voidclearing()
for(inti=0;ii++)
{
for(intj=0;jj++)
s[i][j]=0;
}
/**更新便條信息流程:新建一個(gè)臨時(shí)文件,將原文件里的東西復(fù)制到臨時(shí)文件中,在復(fù)制的過程中,
需要修改的東西修改之后再放入臨時(shí)文件,然后刪除原文件,將臨時(shí)文件改名為原文件的名字**/
voidupdate()
printf("請(qǐng)輸入您要修改的便條的信息:銷售代碼,產(chǎn)品代碼,銷售額\n");
inta,b,c,d,e,x,y,z;
scanf("%d%d%d",a,b,
printf("請(qǐng)問您要修改該便條中那一項(xiàng)信息:\n(1)銷售代碼\n(2)產(chǎn)品代碼\n(3)銷售額\n");
scanf("%d",
printf("請(qǐng)問您要將該項(xiàng)信息修改成什么(請(qǐng)輸入數(shù)字):\n");
scanf("%d",
printf("您選擇的便條正在修改中~~~~~\n");
FILE*fin=fopen("d:\\list.txt","r");
FILE*ftp=fopen("d:\\tmp.txt","w");
///是充當(dāng)臨時(shí)文件作用
if(!fin)
{
printf("不能打開list.txt文件\n");
exit(1);
}
if(!ftp)
{
printf("不能打開tmp.txt文件\n");
exit(1);
}
intm=0;///該變量是控制寫入文本時(shí)首行不自動(dòng)換行
///開始復(fù)制
switch(d)///根據(jù)選項(xiàng)修改(1)銷售代碼(2)產(chǎn)品代碼(3)銷售額
{
case1:///(1)銷售代碼
{
for(inti=0;!feof(fin);i++)
{
fscanf(fin,"%d%d%d\n",x,y,
if(x==ay==bz==c)///檢驗(yàn)是要修改的行嗎
{
x=e;
if(m==0)
{
fprintf(ftp,"%d\t%d\t%d",x,y,z);///將修改過的數(shù)據(jù)寫入臨時(shí)文件
m++;
}
else
fprintf(ftp,"\n%d\t%d\t%d",x,y,z);///將修改過的數(shù)據(jù)寫入臨時(shí)文件
}
else
{
if(m==0)
{
fprintf(ftp,"%d\t%d\t%d",x,y,z);///將原本的數(shù)據(jù)寫入臨時(shí)文件
m++;
}
else
fprintf(ftp,"\n%d\t%d\t%d",x,y,z);///將原本過的數(shù)據(jù)寫入臨時(shí)文件
}
}
}
break;
///以下代碼同理可得
case2:
{
for(inti=0;!feof(fin);i++)
{
fscanf(fin,"%d%d%d\n",x,y,
if(x==ay==bz==c)///檢驗(yàn)是要修改的行嗎
{
y=e;
if(m==0)
{
fprintf(ftp,"%d\t%d\t%d",x,y,z);///將修改過的數(shù)據(jù)寫入臨時(shí)文件
m++;
}
else
fprintf(ftp,"\n%d\t%d\t%d",x,y,z);///將修改過的數(shù)據(jù)寫入臨時(shí)文件
}
else
{
if(m==0)
{
fprintf(ftp,"%d\t%d\t%d",x,y,z);///將原本的數(shù)據(jù)寫入臨時(shí)文件
m++;
}
else
fprintf(ftp,"\n%d\t%d\t%d",x,y,z);///將原本過的數(shù)據(jù)寫入臨時(shí)文件
}
}
}
break;
case3:
{
for(inti=0;!feof(fin);i++)
{
fscanf(fin,"%d%d%d\n",x,y,
if(x==ay==bz==c)///檢驗(yàn)是要修改的行嗎
{
z=e;
if(m==0)
{
fprintf(ftp,"%d\t%d\t%d",x,y,z);///將修改過的數(shù)據(jù)寫入臨時(shí)文件
m++;
}
else
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 傳統(tǒng)雕塑數(shù)字化轉(zhuǎn)化-洞察與解讀
- 數(shù)字媒體城市時(shí)尚創(chuàng)新-洞察與解讀
- 多感官交互界面設(shè)計(jì)-洞察與解讀
- 2025義烏市自然資源和規(guī)劃局下屬事業(yè)單位公開選調(diào)工作人員3人考試備考題庫(kù)附答案
- 2025中華人民共和國(guó)滄源海關(guān)招聘2人(云南)考試參考題庫(kù)附答案解析
- 2025年松原職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性考試題庫(kù)附答案解析
- Windows系統(tǒng)數(shù)據(jù)如何遷移到信創(chuàng)操作系統(tǒng)
- 2026年超星爾雅學(xué)習(xí)通《思想道德修養(yǎng)與法律基礎(chǔ)》章節(jié)測(cè)試及答案【有一套】
- 2026年陜西省選調(diào)生招錄(面向北京師范大學(xué))考試備考題庫(kù)必考題
- 2026年黑龍江省黑河市單招職業(yè)適應(yīng)性考試題庫(kù)及答案一套
- 骨密度檢測(cè)的臨床意義
- 鉆探原始班報(bào)表試行版
- 腸菌移植治療炎癥性腸病專家共識(shí)(2025)解讀
- T/CPPC 1032-2021建筑生產(chǎn)資源分供商評(píng)價(jià)規(guī)范
- 機(jī)耕合同協(xié)議書范本簡(jiǎn)單
- 送車免責(zé)合同協(xié)議書模板
- 外科學(xué)重癥監(jiān)測(cè)治療與復(fù)蘇
- 瓊脂糖-纖維素復(fù)合分離介質(zhì)
- 早產(chǎn)兒家庭參與式護(hù)理
- 2025年招商引資項(xiàng)目可行性研究報(bào)告范文
- 常見的鹽(第1課時(shí))-九年級(jí)化學(xué)人教版(2024)下冊(cè)
評(píng)論
0/150
提交評(píng)論