C語言程序設(shè)計-銷售管理系統(tǒng)和c語言程序設(shè)計-企業(yè)員工管理系統(tǒng)_第1頁
C語言程序設(shè)計-銷售管理系統(tǒng)和c語言程序設(shè)計-企業(yè)員工管理系統(tǒng)_第2頁
C語言程序設(shè)計-銷售管理系統(tǒng)和c語言程序設(shè)計-企業(yè)員工管理系統(tǒng)_第3頁
C語言程序設(shè)計-銷售管理系統(tǒng)和c語言程序設(shè)計-企業(yè)員工管理系統(tǒng)_第4頁
C語言程序設(shè)計-銷售管理系統(tǒng)和c語言程序設(shè)計-企業(yè)員工管理系統(tǒng)_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

銷售信息管理系統(tǒng)設(shè)計文檔組號:第二組成員:目錄題目與要求功能實現(xiàn)設(shè)計(模塊化設(shè)計)運行結(jié)果(附帶抓圖)源程序報告正文題目與要求:某公司有四個銷售員(編號:1-4),負(fù)責(zé)銷售五種產(chǎn)品(編號:1-5)。每個銷售員匯總當(dāng)天出售的每種產(chǎn)品的銷售情況。2每天銷售情況包括(銷售員的代號、產(chǎn)品的代號、這種產(chǎn)品當(dāng)天的銷售額)編寫一個銷售信息管理系統(tǒng),讀取上個月的銷售情況計算上個月沒人每種產(chǎn)品的銷售額按銷售額對銷售員進(jìn)行排序,輸出排序結(jié)果(銷售員代號)統(tǒng)計每種產(chǎn)品的總銷售額,對這些產(chǎn)品從高到低的順序輸出結(jié)果(須輸出產(chǎn)品的代號和銷售額)輸出統(tǒng)計報表2、需求分析本程序?qū)⒂玫轿募到y(tǒng)E://54321.doc文件內(nèi)容作為數(shù)據(jù)源,其中單行內(nèi)容代表一張紙條。程序運行后首先將文件系統(tǒng)的原始數(shù)據(jù)讀取并保存到程序的結(jié)構(gòu)體數(shù)組當(dāng)中,所以應(yīng)提供文件輸入的操作;由于紙條數(shù)據(jù)零散,所以要對原始數(shù)據(jù)進(jìn)行分類操作并提供一個數(shù)組用于保存分類信息;在程序中要進(jìn)行統(tǒng)計工作,所以要提供顯示、排序等操作;另外應(yīng)提供鍵盤式選擇菜單實現(xiàn)功能選擇。3、功能實現(xiàn)設(shè)計3.1總體設(shè)計根據(jù)上面的分析,可以將這個系統(tǒng)分為如下五大模塊:查看每人每種產(chǎn)品的銷售額、按銷售額對銷售員排序、對每種產(chǎn)品總銷售額從高到低排序、輸出統(tǒng)計報表和退出。其中主要模塊是前四個模塊。開始3.2流程圖開始 推出系統(tǒng)推出系統(tǒng)讀取便條上的信息 讀取便條上的信息3.3詳細(xì)設(shè)計:3.3.1【頭文件和預(yù)定義】#include<stdio.h>#include<conio.h>主菜單#include<stdlib.h>主菜單#include<string.h>#defineM3.3.2【功能函數(shù)聲明】vvoiddetail();voidforeach();輸出統(tǒng)計表統(tǒng)計總銷售額并排序銷售員銷售業(yè)績排序每個人每種產(chǎn)品銷售額voidmenu();輸出統(tǒng)計表統(tǒng)計總銷售額并排序銷售員銷售業(yè)績排序每個人每種產(chǎn)品銷售額voidproduct();voidreaddata();voidseller();voidtotal();選擇voidchoice();選擇退出系統(tǒng)返回主菜單退出系統(tǒng)返回主菜單3.3.3【數(shù)據(jù)結(jié)構(gòu)】原始數(shù)據(jù)有銷售員代號、產(chǎn)品代號和銷售額,所以定義一個全局結(jié)構(gòu)體數(shù)組scrip用于保存原始數(shù)據(jù)。然后定義全局變量n保存紙條數(shù)目,定義數(shù)組s用于保存分類后的信息。structss{ intsid;//銷售員代號 intpid;//產(chǎn)品代號 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)品信息3.3.4【主函數(shù)】顯示程序設(shè)計者相關(guān)信息和調(diào)用文件讀取函數(shù)、數(shù)據(jù)初始化函數(shù)和主菜單函數(shù)voidmain()//入口函數(shù),即主函數(shù){readdata();//讀取文件數(shù)據(jù)foreach();//根據(jù)文件初始數(shù)據(jù)初始化便于操作的數(shù)組menu();//顯示主菜單}3.3.4-1【文件讀取函數(shù)】readdata()讀出便條中的內(nèi)容,并保存到文件結(jié)構(gòu)體中voidreaddata()//從文件讀取數(shù)據(jù){ FILE*fp;//定義文件指針 if((fp=fopen("list.txt","r"))==NULL) { printf("Can'topenthefile!\n"); exit(0); } else 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);}3.3.4-2【文件讀取函數(shù)】foreach()將保存到結(jié)構(gòu)體中的信息按產(chǎn)品分類,再根據(jù)銷售員進(jìn)行分類,將信息存到數(shù)組當(dāng)中。voidforeach()//從紙條讀取數(shù)據(jù)并分類整理{ inti; for(i=0;i<n;i++)//遍歷所有紙條 { switch(ss[i].pid) //按產(chǎn)品分大類(例如就是case1--5),根據(jù)大類分銷售員小類,累加各人各產(chǎn)品銷售數(shù)量 { case1: switch(ss[i].sid) { case1:s[0][0]+=ss[i].sn;break; case2:s[1][0]+=ss[i].sn;break; case3:s[2][0]+=ss[i].sn;break; 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;} }}3.3.4-3【主菜單函數(shù)】menu()顯示系統(tǒng)功能菜單以供用戶選擇相關(guān)功能使用,根據(jù)用戶選擇分別可調(diào)用detail():計算上個月每個人每種產(chǎn)品的銷售額seller():按銷售額對銷售員進(jìn)行排序,輸出排序結(jié)果(銷售員代號)product():統(tǒng)計每種產(chǎn)品的總銷售額,對這些產(chǎn)品按從高到低的順序輸出排序結(jié)果(需輸出產(chǎn)品代號和銷售額)exit(0):退出系統(tǒng)voidmenu(){ intw,c; do{puts("\t\t*********菜單*********************\n\n");puts("\t\t1.查看每人每種產(chǎn)品的銷售額\n");puts("\t\t2.按銷售額對銷售員排序(銷售員代號)\n");puts("\t\t3.對每種產(chǎn)品總銷售額從高到低排序(產(chǎn)品代號和銷售額)\n");puts("\t\t4.輸出統(tǒng)計報表\n");puts("\t\t5.退出\n");puts("\n\n\t\t*********************************************\n");printf("請選擇(1-5):[]\b\b");scanf("%d",&c);if(c<1||c>5)//錯誤輸入則重新獲取輸入 {w=1 }elsew=0; }while(w==1);switch(c)//根據(jù)輸入實現(xiàn)相應(yīng)函數(shù)調(diào)用{case1:detail();break;//每個銷售員每種產(chǎn)品的銷售額統(tǒng)計case2:seller();break;case3:product();break;case4:total();break;case5:exit(0);}}3.3.5【功能函數(shù)】5-1【每人每種產(chǎn)品銷售額統(tǒng)計函數(shù)】detail()計算上個月每個人每種產(chǎn)品的銷售額voiddetail()//顯示銷售情況{ inti,j;for(i=0;i<4;i++)//遍歷銷售員 { printf("\n\t\t%d號銷售員銷售情況:\n",i+1); for(j=0;j<5;j++) //按銷售員分類遍歷所有產(chǎn)品并顯示信息 printf("\t\t%d號產(chǎn)品銷售數(shù)量:%d\n",j+1,s[i][j]); } choice();}3.3.5-1【銷售員銷售業(yè)績排序函數(shù)】seller()按銷售額對銷售員進(jìn)行排序,輸出排序結(jié)果(銷售員代號)voidseller(){ inti,j,k; intsp[4]={0,0,0,0}; for(i=0;i<4;i++) for(j=0;j<5;j++) sp[i]+=s[i][j]; //計算每單個銷售員所有產(chǎn)品銷售數(shù)量 for(i=0;i<4;i++)//比較四次,每次選出最大數(shù) {k=0;//用于標(biāo)記單輪最大數(shù) for(j=0;j<4;j++) if(sp[k]<sp[j])k=j;//獲取最大數(shù)標(biāo)號 printf("\t\t第%d名是%d號銷售員!\n",i+1,k+1);sp[k]=-1; //輸出最大數(shù)和排名,將最大數(shù)標(biāo)記為負(fù) } choice();}3.3.5-2【總銷售額統(tǒng)計函數(shù)】voidproduct()統(tǒng)計每種產(chǎn)品的總銷售額,對這些產(chǎn)品按從高到低的順序輸出排序voidproduct()//與seller()原理一樣,用于對產(chǎn)品進(jìn)行統(tǒng)計{ inti,j,k; intp[5]={0,0,0,0,0}; for(j=0;j<5;j++) for(i=0;i<4;i++) p[j]+=s[i][j]; for(j=0;j<5;j++) { k=0; for(i=0;i<5;i++) if(p[k]<p[i])k=i; printf("\t\t第%d名是%d號產(chǎn)品!\t銷量為%d!\n",j+1,k+1,p[k]);p[k]=-1; } choice();}3.3.5-3【統(tǒng)計報表輸出函數(shù)】total()統(tǒng)計每種產(chǎn)品的總銷售額,對這些產(chǎn)品按從高到低的順序輸出排序結(jié)果(需輸出產(chǎn)品代號和銷售額)voidtotal()//輸出報表{inti,j; printf("\n\t銷售員\t產(chǎn)品\t銷量\n"); for(i=0;i<4;i++) for(j=0;j<5;j++) printf("\t%d\t%d\t%d\n",i+1,j+1,s[i][j]); choice();}3.3.6【公共函數(shù)】【選擇函數(shù)】choice()選擇退出系統(tǒng)或則返回主菜單voidchoice()//用于輸出信息功能選擇{intc;printf("請選擇接下來想做什么\t1>返回菜單\t2>退出系統(tǒng)[]\b\b");scanf("%d",&c);if(c==1)menu();elseexit(0);puts('\n');}4、運行結(jié)果(附帶抓圖)List.txt(便條)文件中數(shù)據(jù)如下:(提前建立文件或就將便條保存在文件中?。。。。?111122133148159213223234245256311321(這是個例子)334345356412423434445456運行結(jié)果顯示主菜單:查看每人每種產(chǎn)品的銷售額運行結(jié)果:按銷售額對銷售員按順序排序(銷售員代號)運行結(jié)果對每種產(chǎn)品銷售額從高到低排序運行結(jié)果:統(tǒng)計報表運行結(jié)果:6、源程序#include<stdio.h>#include<conio.h>#include<stdlib.h>/*調(diào)用exit函數(shù)*/#include<string.h>#defineM155/*宏定義*/voiddetail();voidforeach();voidmenu();voidproduct();voidreaddata();voidseller();voidtotal();voidchoice();structss{ intsid;//銷售員代號 intpid;//產(chǎn)品代號 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)品信息voidmain()//入口函數(shù),即主函數(shù){preaddata();//讀取文件數(shù)據(jù)foreach();//根據(jù)文件初始數(shù)據(jù)初始化便于操作的數(shù)組menu();//顯示主菜單}voidreaddata()//從文件讀取數(shù)據(jù){ FILE*fp; if((fp=fopen("list.txt","r"))==NULL) { printf("Can'topenthefile!\n"); exit(0); } else 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);}voidforeach()//從紙條讀取數(shù)據(jù)并分類整理{ inti; for(i=0;i<n;i++)//遍歷所有紙條 { switch(ss[i].pid) //按產(chǎn)品分大類,根據(jù)大類分銷售員小類,累加個人各產(chǎn)品銷售數(shù)量 { case1: switch(ss[i].sid) { case1:s[0][0]+=ss[i].sn;break; case2:s[1][0]+=ss[i].sn;break; case3:s[2][0]+=ss[i].sn;break; 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; } }}voidmenu(){ intw,c; do{puts("\t\t********************菜單*********************\n\n");puts("\t\t1.查看每人每種產(chǎn)品的銷售額\n");puts("\t\t2.按銷售額對銷售員排序(銷售員代號)\n");puts("\t\t3.對每種產(chǎn)品總銷售額從高到低排序(產(chǎn)品代號和銷售額)\n");puts("\t\t4.輸出統(tǒng)計報表\n");puts("\t\t5.退出\n");puts("\n\n\t\t*********************************************\n");printf("請選擇(1-5):[]\b\b");scanf("%d",&c);if(c<1||c>5)//錯誤輸入則重新獲取輸入 {w=1;getchar(); }elsew=0; }while(w==1);switch(c)//根據(jù)輸入實現(xiàn)相應(yīng)函數(shù)調(diào)用{case1:detail();break;//每個銷售員每種產(chǎn)品的銷售額統(tǒng)計case2:seller();break;case3:product();break;case4:total();break;case5:exit(0);}}voiddetail()//顯示銷售情況{ inti,j;for(i=0;i<4;i++)//遍歷銷售員 { printf("\n\t\t%d號銷售員銷售情況:\n",i+1); for(j=0;j<5;j++) //按銷售員分類遍歷所有產(chǎn)品并顯示信息 printf("\t\t%d號產(chǎn)品銷售數(shù)量:%d\n",j+1,s[i][j]); } choice();}voidseller(){ inti,j,k; intsp[4]={0,0,0,0}; for(i=0;i<4;i++) for(j=0;j<5;j++) sp[i]+=s[i][j]; //計算每單個銷售員所有產(chǎn)品銷售數(shù)量 for(i=0;i<4;i++)//比較四次,每次選出最大數(shù) {k=0;//用于標(biāo)記單輪最大數(shù) for(j=0;j<4;j++) if(sp[k]<sp[j])k=j;//獲取最大數(shù)標(biāo)號 printf("\t\t第%d名是%d號銷售員!\n",i+1,k+1);sp[k]=-1; //輸出最大數(shù)和排名,將最大數(shù)標(biāo)記為負(fù) } choice();}voidproduct()//與seller()原理一樣,用于對產(chǎn)品進(jìn)行統(tǒng)計{inti,j,k; intp[5]={0,0,0,0,0}; for(j=0;j<5;j++) for(i=0;i<4;i++) p[j]+=s[i][j]; for(j=0;j<5;j++) {k=0; for(i=0;i<5;i++) if(p[k]<p[i])k=i; printf("\t\t第%d名是%d號產(chǎn)品!\t銷量為%d!\n",j+1,k+1,p[k]);p[k]=-1;} choice();}voidtotal()//輸出報表{inti,j; printf("\n\t銷售員\t產(chǎn)品\t銷量\n"); for(i=0;i<4;i++) for(j=0;j<5;j++) printf("\t%d\t%d\t%d\n",i+1,j+1,s[i][j]); choice();}voidchoice()//用于輸出信息功能選擇{intc;printf("請選擇接下來想做什么\t1>返回菜單\t2>退出系統(tǒng)[]\b\b");scanf("%d",&c);if(c==1)menu();elseexit(0);puts('\n');}課程設(shè)計目的通過本課程設(shè)計,強化上機動手能力,使學(xué)生在理論和實踐的基礎(chǔ)上進(jìn)一步鞏固《C語言程序設(shè)計》課程學(xué)習(xí)的內(nèi)容,掌握工程軟件設(shè)計的基本方法。學(xué)會將知識應(yīng)用于實際的方法,提高分析和解決問題的能力,增加綜合能力。為后續(xù)各門計算機課程的學(xué)習(xí)打下堅實基礎(chǔ)。為畢業(yè)設(shè)計和以后工作打下必要基礎(chǔ)。二、課程設(shè)計內(nèi)容 針對某企業(yè)的員工,對其信息進(jìn)行系統(tǒng)的管理。三、需求分析對所開發(fā)系統(tǒng)功能、性能的描述,想要實現(xiàn)的目標(biāo)。此系統(tǒng)可對該廠員工進(jìn)行信息的錄入,修改,刪除,添加,查詢,排序,統(tǒng)計,打印等功能。用戶可通過提示選擇進(jìn)入某一功能界面,然后進(jìn)行對員工的信息管理。每一功能模塊都充分為用戶考慮,編排詳細(xì)。使用戶可以方便快捷的了解員工信息,及時有效的對員工進(jìn)行信息的管理。四、概要設(shè)計 1.系統(tǒng)結(jié)構(gòu)圖(功能模塊圖)對系統(tǒng)進(jìn)行分析,給出系統(tǒng)結(jié)構(gòu)圖;分析:此系統(tǒng),為方便客戶輸入,以及使程序清晰化,因而本人采用模塊法,將每一功能模塊化,使程序中各函數(shù)間調(diào)用更加明了。以下為系統(tǒng)模塊圖。2.功能模塊說明對各個模塊進(jìn)行功能的描述。錄入模塊:輸入該廠現(xiàn)有員工信息并保存與文件中,方便日后進(jìn)行排序,更新,統(tǒng)計,打印等操作。輸出模塊:將所有員工信息,或所需員工信息輸出于屏幕上,用于打印或查詢員工信息。更新模塊:此模塊又分為刪除,添加,修改三個模塊。刪除模塊:對已退休或離開該廠的員工進(jìn)行刪除操作。添加模塊:添加新入廠的員工信息并保存起來。修改模塊:找到該員工并,選擇所要修改的選項。排序模塊:本程序只對員工年齡進(jìn)行從小到大排序。查詢模塊:此模塊分為按姓名,年齡,工作查詢。姓名查詢模塊:輸入要查找的姓名,找到就輸出其信息。找不到則輸出無此人。年齡查詢模塊:輸入要查找的年齡,找到就輸出其信息。找不到則輸出無此人。工作查詢模塊:輸入要查找的工作,找到就輸出其信息。找不到則輸出無此人。統(tǒng)計模塊:此模塊分為,統(tǒng)計年齡,性別和工作。統(tǒng)計年齡:輸入要統(tǒng)計的年齡,查找并輸出,若無此年齡則輸出暫無此年齡員工。統(tǒng)計性別:輸入要統(tǒng)計的性別,查找并輸出,若無此性別則輸出暫無此性別員工。統(tǒng)計工作:輸入要統(tǒng)計的工作,查找并輸出,若無此工作則輸出暫無此工作員工。保存模塊:將現(xiàn)有信息保存于文件中,以防丟失。系統(tǒng)模塊圖王氏企業(yè)員工王氏企業(yè)員工信息管理系統(tǒng) 輸入i的值,進(jìn)入相應(yīng)模塊輸入i的值,進(jìn)入相應(yīng)模塊保存模塊退出系統(tǒng)統(tǒng)計模塊排序模塊查詢模塊更新模塊保存模塊退出系統(tǒng)統(tǒng)計模塊排序模塊查詢模塊更新模塊輸出模塊錄入模塊輸出模塊錄入模塊 按年齡統(tǒng)計修改員工信息添加員工信息按工作統(tǒng)計按性別統(tǒng)計按年齡排序按工作查詢按年齡查尋按姓名查詢刪除員工信息按年齡統(tǒng)計修改員工信息添加員工信息按工作統(tǒng)計按性別統(tǒng)計按年齡排序按工作查詢按年齡查尋按姓名查詢刪除員工信息按任意鍵返回主界面按任意鍵返回主界面五、詳細(xì)設(shè)計及運行結(jié)果流程圖,函數(shù)之間相互調(diào)用的圖示,程序設(shè)計及編碼,運行結(jié)果。結(jié)束保存模塊輸入i開始統(tǒng)計模塊排序模塊查詢模塊更新模塊輸出模塊錄入模塊判斷i值主函數(shù):結(jié)束保存模塊輸入i開始統(tǒng)計模塊排序模塊查詢模塊更新模塊輸出模塊錄入模塊判斷i值i=1i=6i=2i=3i=4i=5i=0退出系統(tǒng)退出系統(tǒng)結(jié)束打開文件關(guān)閉文件i++輸出員工信息i<ni=0結(jié)束打開文件關(guān)閉文件i++輸出員工信息i<ni=0輸出模塊:開始i=0開始i=0否開始開始錄入模塊:是結(jié)束打開文件關(guān)閉文件i++輸入員工信息i<ni=0結(jié)束打開文件關(guān)閉文件i++輸入員工信息i<ni=0否是否是排序模塊:更新模塊:輸入i開始結(jié)束返回主界面i=0退出系統(tǒng)修改模塊添加模塊刪除模塊判斷i值i>n-1j>ni=i+1j=j+1交換i與j的信息i的年齡大于j的年齡j=i+1i=0開始輸入i開始結(jié)束返回主界面i=0退出系統(tǒng)修改模塊添加模塊刪除模塊判斷i值i>n-1j>ni=i+1j=j+1交換i與j的信息i的年齡大于j的年齡j=i+1i=0開始否i=3i=1i=2i=0是否否是是否是輸出信息輸出信息結(jié)束結(jié)束輸入i開始結(jié)束返回主界面i=0退出系統(tǒng)統(tǒng)計性別統(tǒng)計年齡統(tǒng)計工作判斷i值輸入i開始結(jié)束返回主界面i=0退出系統(tǒng)工作查詢姓名查詢年齡查詢判斷i值查詢模塊:統(tǒng)計模塊:輸入i開始結(jié)束返回主界面i=0退出系統(tǒng)統(tǒng)計性別統(tǒng)計年齡統(tǒng)計工作判斷i值輸入i開始結(jié)束返回主界面i=0退出系統(tǒng)工作查詢姓名查詢年齡查詢判斷i值i=1i=3i=2i=0i=1i=2i=3i=0否否是是六、調(diào)試情況,設(shè)計技巧及體會1、對自己設(shè)計進(jìn)行評價,指出合理和不足之處,提出改進(jìn)的方案。自我評價:本人自我覺得此系統(tǒng)還不錯,程序簡潔明了,功能齊全,而且充分從用戶的角度進(jìn)行編排,易于執(zhí)行。經(jīng)本人多次調(diào)試終于出現(xiàn)0個錯誤與警告,而且從未有過死循環(huán),用戶一旦輸錯,立即會有提示,此程序相當(dāng)?shù)慕?。因本人定義了全局變量,使操作更加簡單易行,使用了結(jié)構(gòu)體數(shù)組,避開鏈表那樣的復(fù)雜操作。但不足之處便是沒有鏈表那樣節(jié)省內(nèi)存。如有機會下次可能會用鏈表。2、在設(shè)計過程中的感受。在把字符一個個敲上屏幕時,坐在那一動不動相當(dāng)?shù)目菰铮幌氲竭^會兒就能看到自己親自編的程序,就只能忍吧。當(dāng)看到模塊一個個運行后與預(yù)料中的完全一樣時,郁悶的心情立馬被一種成就感替代。就想趕緊編完看看自己的杰作。然而也會遇到自己解決不了的問題,就只能去求老師了。這次最大的感受就是當(dāng)你竭盡全力的干一件事時,就沒有能擋住你的困難。七、參考文獻(xiàn)C語言課本。八、附錄:源代碼#include<stdio.h>#include<string.h>#defineMAX100charfilename[20];/*文件名*/FILE*fp;intn;/*當(dāng)前該廠人數(shù)*/structdate/*時間結(jié)構(gòu)體*/{intyear;intmouth;intday;};structperson/*員工信息結(jié)構(gòu)體*/{charname[10];/*姓名*/intage;/*年齡*/charjob[10];/*工作*/charsex[10];/*性別*/charaddress[20];/*地址*/charphone[10];/*電話*/structdatein_time;/*入廠時間*/}t,worker[MAX];/*錄入模塊*/voidinput(){inti;clrscr();printf("\n\n請輸入文件名\n");scanf("%s",filename);printf("開始輸入員工的信息\n");printf("\n請輸入現(xiàn)有員工人數(shù)\n");scanf("%d",&n);if((fp=fopen(filename,"w"))==NULL){printf("不能建立!\n");exit();}for(i=0;i<n;i++){printf("第%d個人的信息:\n",i+1);printf("姓名\n");scanf("%s",worker[i].name);printf("年齡\n");scanf("%d",&worker[i].age);printf("工作\n");scanf("%s",worker[i].job);printf("性別\n");scanf("%s",worker[i].sex);printf("地址\n");scanf("%s",worker[i].address);printf("電話\n");scanf("%s",worker[i].phone);printf("入廠年\n");scanf("%d",&worker[i].in_time.year);printf("入廠月\n");scanf("%d",&worker[i].in_time.mouth);printf("入廠日\n");scanf("%d",&worker[i].in_time.day);}printf("錄入完畢,按任意鍵返回主菜單\n");getch();for(i=0;i<n;i++)fprintf(fp,"%s%d%s%s%s%s%d-%d-%d\n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].phone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day);fclose(fp);}/*輸出模塊*/voidoutput(){inti;if((fp=fopen(filename,"r"))==NULL){printf("暫時未有任何信息,請按任意鍵返回主菜單進(jìn)行信息錄入\n");getch();exit();}clrscr();printf("該廠的員工信息:\n");printf("姓名\t年齡\t工作\t性別\t地址\t電話\t入廠時間\n");for(i=0;i<n;i++){fscanf(fp,"%s%d%s%s%s%s%d-%d-%d",worker[i].name,&worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].phone,&worker[i].in_time.year,&worker[i].in_time.mouth,&worker[i].in_time.day);printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d\n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].phone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day);}fclose(fp);printf("輸出完畢,按任意鍵返回主菜單\n");getch();}/*保存模塊*/voidsave(){inti;if((fp=fopen(filename,"w"))==NULL)/*打開文件*/{printf("\n不能打開該文件!");exit();}for(i=0;i<n;i++)fprintf(fp,"%s%d%s%s%s%s%d-%d-%d\n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].phone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day);fclose(fp);}/*讀取信息*/voidread_message(){inti;printf("輸入文件名\n");scanf("%s",filename);printf("\n請輸入現(xiàn)有員工人數(shù)\n");scanf("%d",&n);if((fp=fopen(filename,"r"))==NULL){printf("暫時未有任何信息,請按任意鍵返回主菜單進(jìn)行信息錄入\n");getch();}for(i=0;i<n;i++)fscanf(fp,"%s%d%s%s%s%s%d-%d-%d",worker[i].name,&worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].phone,&worker[i].in_time.year,&worker[i].in_time.mouth,&worker[i].in_time.day);fclose(fp);}/*修改模塊*/voidmodify(){inti,flag,choice;charch,namekey[10];flag=0;clrscr();printf("開始修改\n");do{printf("請輸入要修改的員工姓名\n");scanf("%s",namekey);for(i=0;i<n;i++){if(strcmp(worker[i].name,namekey)==0){printf("是否修改此人(y/n)\n");printf("姓名\t年齡\t工作\t性別\t地址\t電話\t入廠時間\n");printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d\n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].phone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day);getchar();/*接收回車*/ch=getchar();if(ch=='y'){printf("****您要修改那一項?***\n\n");printf("***1,姓名***\n\n");printf("***2,年齡***\n\n");printf("***3,工作***\n\n");printf("***4,性別***\n\n");printf("***5,地址***\n\n");printf("***6,電話***\n\n");printf("***7,入廠年***\n\n");printf("***8,入廠月***\n\n");printf("***9,入廠日***\n\n");printf("請選擇(1-9)\n");scanf("%d",&choice);switch(choice){case1:printf("輸入修改后的姓名\n");scanf("%s",worker[i].name);break;case2:printf("輸入修改后的年齡\n");scanf("%d",&worker[i].age);break;case3:printf("輸入修改后的工作\n");scanf("%s",worker[i].job);break;case4:printf("輸入修改后的性別\n");scanf("%s",worker[i].sex);break;case5:printf("輸入修改后的地址\n");scanf("%s",worker[i].address);break;case6:printf("輸入修改后的電話\n");scanf("%s",worker[i].phone);break;case7:printf("輸入修改后的入廠年\n");scanf("%d",&worker[i].in_time.year);break;case8:printf("輸入修改后的入廠月\n");scanf("%d",&worker[i].in_time.mouth);break;case9:printf("輸入修改后的入廠日\n");scanf("%d",&worker[i].in_time.day);break;}printf("修改后的信息\n");printf("姓名\t年齡\t工作\t性別\t地址\t電話\t入廠時間\n");printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d\n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].phone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day);}elsebreak;}elseif(i==n)printf("此人不存在\n");}printf("\n是否繼續(xù)輸入(y/n)\n");getchar();/*接收回車*/ch=getchar();if(ch=='y'){printf("繼續(xù)\n");flag=1;}elseflag=0;}while(flag==1);printf("修改完畢,按任意鍵返回主菜單\n");getch();}/*添加模塊*/voidadd(){inti,flag=0;charch;clrscr();printf("\n開始添加新員工\n");printf("*----------------------------------*\n\n");do{i=n;printf("\n請輸入添加職工的信息(姓名,年齡,工作,性別,地址,電話,入廠時間)\n");printf("姓名\n");scanf("%s",worker[i].name);printf("年齡\n");scanf("%d",&worker[i].age);printf("工作\n");scanf("%s",worker[i].job);printf("性別\n");scanf("%s",worker[i].sex);printf("地址\n");scanf("%s",worker[i].address);printf("電話\n");scanf("%s",worker[i].phone);printf("入廠年\n");scanf("%d",&worker[i].in_time.year);printf("入廠月\n");scanf("%d",&worker[i].in_time.mouth);printf("入廠日\n");scanf("%d",&worker[i].in_time.day);n++;printf("\n添加成功!是否繼續(xù)輸入(y/n)\n");getchar();/*接收回車*/ch=getchar();if(ch=='y'){printf("繼續(xù)\n");flag=1;}elseflag=0;}while(flag==1);printf("添加完畢,按任意鍵返回主菜單\n");getch();}/*刪除模塊*/voiddel(){inti,flag;charch,namekey[10];flag=0;clrscr();printf("開始刪除\n");do{printf("請輸入要刪除員工的名字\n");scanf("%s",namekey);for(i=0;i<n;i++)if(strcmp(worker[i].name,namekey)==0)/*查找此人*/{printf("是否刪除此人(y/n)\n");printf("姓名\t年齡\t工作\t性別\t地址\t電話\t入廠時間\n");printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d\n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].phone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day);getchar();/*接收回車*/ch=getchar();if(ch=='y'){for(;i<n;i++)worker[i]=worker[i+1];n--;}elsebreak;}elseif(i==n)printf("此人不存在\n");printf("\n是否繼續(xù)輸入(y/n)\n");getchar();/*接收回車*/ch=getchar();if(ch=='y'){printf("繼續(xù)\n");flag=1;}elseflag=0;}while(flag==1);printf("操作完畢,按任意鍵返回主菜單\n");getch();}/*更新模塊*/voidrenew(){inti;do{clrscr();printf("\n\n\n****更新員工信息****\n\n");printf("按1,添加員工信息\n\n");printf("按2,刪除員工信息\n\n");printf("按3,修改員工信息\n\n");printf("按0,返回主菜單\n");printf("請選擇(0-3)\n");scanf("%d",&i);switch(i){case1:add();break;case2:del();break;case3:modify();break;case0:break;}}while(i!=0);save();}/*按姓名查找*/voidname_cha(){inti,j;charnamekey[10];j=0;clrscr();printf("輸入要查詢的員工姓名\n");scanf("%s",namekey);for(i=0;i<n;i++)if(strcmp(worker[i].name,namekey)==0)/*查找此人*/{printf("---------員工信息------\n");printf("姓名\t年齡\t工作\t性別\t地址\t電話\t入廠時間\n");printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d\n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].phone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day);}elsej++;if(j==n)printf("此人不存在\n");printf("按任意鍵返回主菜單\n");getch();}/*按年齡查找*/voidage_cha(){inti,j;intagekey;j=0;clrscr();printf("輸入要查詢員工的年齡\n");scanf("%d",&agekey);for(i=0;i<n;i++)if(worker[i].age==agekey){printf("-------員工信息------\n");printf("姓名\t年齡\t工作\t性別\t地址\t電話\t入廠時間\n");printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d\n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].phone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day);}elsej++;if(j==n)printf("此人不存在\n");printf("按任意鍵返回主菜單\n");getch();}/*按工作查找*/voidjob_cha(){inti,j;charjobkey[10];j=0;clrscr();printf("輸入要查詢的員工職務(wù)\n");scanf("%s",jobkey);for(i=0;i<n;i++)if(strcmp(worker[i].job,jobkey)==0){printf("-------員工信息------\n");printf("姓名\t年齡\t工作\t性別\t地址\t電話\t入廠時間\n");printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d\n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].phone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day);}elsej++;if(j==n)printf("此人不存在\n");printf("按任意鍵返回主菜單\n");getch();}/*查詢模塊*/voidinquire(){inti;do{clrscr();printf("\n\n\n****查詢員工信息*****\n\n");printf("****1,按姓名查詢*****\n\n");printf("****2,按年齡查詢*****\n\n");printf("****3,按工作查詢*****\n\n");printf("****0,返回主菜單\n");printf("請選擇(0-3)\n");scanf("%d",&i);switch(i){case1:name_cha();break;case2:age_cha();break;case3:job_cha();break;case0:break;}}while(i!=0);}/*排列模塊*/voidline(){inti,j;clrscr();printf("-------按年齡排序-------\n\n");for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(worker[i].age>worker[j].age){t=worker[i];worker[i]=worker[j];worker[j]=t;}printf("姓名\t年齡\t工作\t性別\t地址\t電話\t入廠時間\n");for(i=0;i<n;i++)printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d\n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].phone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day);printf("按任意鍵返回主菜單\n");getch();}/*按年齡統(tǒng)計*/voidcount_age(){inti,j;intagekey;j=0;clrscr();printf("輸入要統(tǒng)計員工的年齡\n");scanf("%d",&agekey);for(i=0;i<n;i++)if(worker[i].age==agekey){printf("-------員工信息------\n");printf("姓名\t年齡\t工作\t性別\t地址\t電話\t入廠時間\n");printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d\n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].phone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day);}elsej++;if(j==n)printf("暫無該年齡段員工\n");printf("按任意鍵返回主菜單\n");getch();}/*按職務(wù)統(tǒng)計*/voidcount_job(){inti,j;charjobkey[10];j=0;clrscr();printf("輸入要統(tǒng)計的員工職務(wù)\n");scanf("%s",jobkey);for(i=0;i<n;i++)if(strcmp(worker[i].job,jobkey)==0){printf("-------員工信息------\n");printf("姓名\t年齡\t工作\t性別\t地址\t電話\t入廠時間\n");printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d\n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].phone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day);}elsej++;if(j==n)printf("暫無該職務(wù)或該職務(wù)暫時無人\n");printf("按任意鍵返回主菜單\n");getch();}/*按性別統(tǒng)計*/voidcount_sex(){inti,j;charsexkey[10];j=0;clrscr();printf("輸入要統(tǒng)計的員工性別\n");scanf("%s",sexkey);for(i=0;i<n;i++)if(strcmp(worker[i].sex,sexkey)==0){printf("-------員工信息------\n");printf("姓名\t年齡\t工作\t性別\t地址\t電話\t入廠時間\n");printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d\n",worker[i].name,worker[i].

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論