C語言課程設(shè)計范例Word版_第1頁
C語言課程設(shè)計范例Word版_第2頁
C語言課程設(shè)計范例Word版_第3頁
C語言課程設(shè)計范例Word版_第4頁
C語言課程設(shè)計范例Word版_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

整理為word格式整理為word格式整理為word格式《XXXXXXXXXXXXXXXXXXX》課程設(shè)計報告題目:班級:學(xué)號:姓名:同組人員:指導(dǎo)教師:二0年月日整理為word格式整理為word格式整理為word格式目錄一設(shè)計題目………………1二總體設(shè)計………………2三程序流程………………3四函數(shù)流程圖………………8五實驗結(jié)果………………12六設(shè)計體會………………13七參考文獻………………14八源程序清單………………14整理為word格式整理為word格式整理為word格式銷售管理系統(tǒng)題目設(shè)計目標1.通過本課程設(shè)計,培養(yǎng)上機動手能力,使學(xué)生鞏固《C語言程序設(shè)計》課程學(xué)習(xí)的內(nèi)容,掌握工程軟件設(shè)計的基本方法,強化上機動手能力,闖過編程關(guān);2.為后續(xù)各門計算機課程的學(xué)習(xí)打下堅實基礎(chǔ)。課程設(shè)計內(nèi)容和要求:1.設(shè)計內(nèi)容:某公司有四個銷售員(編號:A,B,C,D),負責(zé)銷售五種產(chǎn)品(編號:1-5)。每個銷售員都將當天出售的產(chǎn)品寫一張便條交上來。每張便條包含內(nèi)容:1)銷售員的代號;2)每種產(chǎn)品的代號和銷售量;假設(shè),收集到了上個月的所有便條,編寫一個處理系統(tǒng),讀取上個月的銷售情況(自己設(shè)定),進行如下處理:1)計算上個月每個人每種產(chǎn)品的銷售量。2)按銷售量對銷售員進行排序,輸出排序結(jié)果(銷售員代號)3)統(tǒng)計每種產(chǎn)品的總銷售量,對這些產(chǎn)品按從高到底的順序,輸出排序結(jié)果(需輸出產(chǎn)品的代號和銷售量)4)輸出統(tǒng)計報表

銷售統(tǒng)計報表產(chǎn)品代號每人銷售產(chǎn)品總量銷售員代號12345ABCD每種產(chǎn)品銷售總量2.設(shè)計要求:1)源程序要有適當?shù)淖⑨?,使程序容易閱讀。2)必須使用結(jié)構(gòu)體和文件等數(shù)據(jù)結(jié)構(gòu)。3)程序的運行結(jié)果要求使用文件作備份。4)至少輸出一份報表,鼓勵自行增加新功能。提交資料:1.實驗報告(要求正規(guī)打印,A4幅面),內(nèi)容包括:1)題目;2)系統(tǒng)功能模塊結(jié)構(gòu)圖3)數(shù)據(jù)結(jié)構(gòu)設(shè)計及用法說明4)程序結(jié)構(gòu)(畫功能模塊圖或流程圖)5)各模塊的功能整理為word格式整理為word格式整理為word格式6)實驗結(jié)果(包括輸入數(shù)據(jù)和輸出結(jié)果)7)設(shè)計體會8)參考文獻2.程序清單及源程序軟盤參考資料本設(shè)計主要應(yīng)用C程序設(shè)計中的結(jié)構(gòu)體、鏈表、文件等知識點。可參考本教材或者包含上述內(nèi)容的任何教材。二、總體設(shè)計程序設(shè)計組成框圖銷售系統(tǒng)銷售系統(tǒng)1計算上個月每個人每種產(chǎn)品的銷售額3按產(chǎn)品銷額從高到底的順序排序5退出系統(tǒng)4輸出統(tǒng)計報表2按銷售額對銷售員進行排序程序流程圖`整理為word格式整理為word格式整理為word格式main()main()menu()if(choice==5)case1;f1();case2;f2();case3;f3();case4;f4();scanf("%d",&choice);switch(choice)for(i=0;;i++)break;break;結(jié)束三、程序流程功能函數(shù)f1() 函數(shù)的功能:計算上個月每個人每種產(chǎn)品的銷售額函數(shù)的入口:從main()的switch()開關(guān)結(jié)構(gòu)中進入,即choice的值為1時進入該函數(shù),打開.dat數(shù)據(jù)文件,然后提示用戶通過鍵盤對該月的員工銷售情況進行數(shù)據(jù)的讀入。整理為word格式整理為word格式整理為word格式函數(shù)調(diào)用關(guān)系:被主函數(shù)調(diào)用。由switch()開關(guān)結(jié)構(gòu)中進入,并在文中無返回值的空值void函數(shù)。函數(shù)的出口:當程序執(zhí)行提示語“printf("繼續(xù)輸入請按回車,結(jié)束輸入請按esc\n");”的時候,對用戶的操作進行提示,如果用戶選擇了按“ESC”鍵,則用戶選擇了結(jié)束數(shù)據(jù)的錄入,將結(jié)束該函數(shù),而執(zhí)行主函數(shù)main()中“break;”跳出switch()開關(guān)函數(shù),繼續(xù)執(zhí)行for循環(huán)結(jié)構(gòu)。功能函數(shù)f2()函數(shù)的功能:按銷售額對銷售員進行排序,輸出排序結(jié)果。函數(shù)的入口:程序從main()的switch()開關(guān)結(jié)構(gòu)中進入,即choice的值為2時,開始進入該函數(shù),進入函數(shù)后,首先用“fopen()”打開文件,然后利用“fread()”讀取二進制數(shù)據(jù),最終利用選擇排序法,按銷售員的所選產(chǎn)品的總銷售額對銷售員進行排序。函數(shù)調(diào)用關(guān)系:被主函數(shù)調(diào)用。由switch()開關(guān)結(jié)構(gòu)中進入,并在文中無返回值的空值void函數(shù)。函數(shù)的出口:當輸出排序結(jié)果用printf()標準輸出到屏幕上,然后結(jié)束該函數(shù),而執(zhí)行主函數(shù)main()中“break;”跳出switch()開關(guān)函數(shù),繼續(xù)執(zhí)行for循環(huán)結(jié)構(gòu)。功能函數(shù)f3()函數(shù)的功能:統(tǒng)計每種產(chǎn)品的總銷售額,輸出排序結(jié)果函數(shù)的入口:從main()的switch()開關(guān)結(jié)構(gòu)中進入,即choice的值為3的時侯,進入該函數(shù),開始讀取數(shù)據(jù)對用戶進行提示,然后統(tǒng)計每種產(chǎn)品的總銷售額。將計算后的總銷售額進行排序,最終把排序的結(jié)果用printf()標準輸出函數(shù),將結(jié)果輸出在屏幕上。整理為word格式整理為word格式整理為word格式函數(shù)調(diào)用關(guān)系:被主函數(shù)調(diào)用。由switch()開關(guān)結(jié)構(gòu)中進入,并在文中無返回值的空值void函數(shù)。函數(shù)的出口:當輸出排序結(jié)果用printf()標準輸出到屏幕上,然后結(jié)束該函數(shù),而執(zhí)行主函數(shù)main()中“break;”跳出switch()開關(guān)函數(shù),繼續(xù)執(zhí)行for循環(huán)結(jié)構(gòu)。圖-寫入銷售數(shù)據(jù)界面功能函數(shù)f4()函數(shù)的功能:輸出統(tǒng)計報表函數(shù)的入口:從main()的switch()開關(guān)結(jié)構(gòu)中進入,即choice的值為4時,進入該函數(shù),然后通過fopen()函數(shù)。即:“if((fp=fopen(fname,"rb"))==NULL)”打開文件。進入數(shù)據(jù)的處理。函數(shù)調(diào)用關(guān)系:被主函數(shù)調(diào)用。由switch()開關(guān)結(jié)構(gòu)中進入,并在文中無返回值的空值void函數(shù)。整理為word格式整理為word格式整理為word格式函數(shù)的出口:開始時讀取數(shù)據(jù)后,統(tǒng)計報表已經(jīng)輸出到屏幕上時,然后利用而執(zhí)行主函數(shù)main()中“break;”跳出switch()開關(guān)函數(shù),繼續(xù)執(zhí)行for循環(huán)結(jié)構(gòu)。5、功能函數(shù)主菜單menu() 圖-主菜單界面函數(shù)的功能:主要作用是提示用戶操作,體現(xiàn)模塊化思想,主要是顯示出菜單讓用戶選擇要進行的任務(wù)。函數(shù)的入口:從主函數(shù)main()中的system("cls");/*清屏命令*/menu();/*菜單函數(shù)提示用戶怎樣選擇*/進入函數(shù),這是直接被主函數(shù)main()調(diào)用的。函數(shù)調(diào)用關(guān)系:被主函數(shù)調(diào)用。并在文中無返回值的空值void函數(shù)。整理為word格式整理為word格式整理為word格式函數(shù)的出口:執(zhí)行完所有的printf()函數(shù)后自動退出該函數(shù)。功能函數(shù)主函數(shù)main() 軟件進入提示頁面函數(shù)的功能:用于聯(lián)系各個功能函數(shù)模塊,以及退出程序時的退出畫面提示。函數(shù)的入口:整個程序是從主函數(shù)開始的。函數(shù)的出口:當從main()的switch()開關(guān)結(jié)構(gòu)中進入,即choise的值為5時通過break;跳出for循環(huán),然后退出main()函數(shù),即:退出整個程序。函數(shù)調(diào)用關(guān)系:該函數(shù)不被其它函數(shù)調(diào)用流程圖整理為word格式整理為word格式整理為word格式進入進入if((fp=fopen(fname,"wb"))==NULL)printf("不能打開文件?。?!\n");scanf("%s",fname);exit(0);for(j=0;j<R;j++)for(t=0;t<Z;t++)(x+j)->shangpin[t]=0;for(j=0;hitkey!=27;j++)getch();scanf("%d%d%d",&i,&k,&s);……h(huán)itkey=getch();結(jié)束f1()的流程圖整理為word格式整理為word格式整理為word格式startstartif((fp=fopen(fname,"wb"))==NULL)printf("不能打開文件!?。n");scanf("%s",fname);exit(0);for(i=0;i<R;i++)printf("讀入信息出錯!");for(i=0;i<R;i++)fclose(fp);if(fread(x+i,sizeof(data),1,fp)!=1)……printf("讀入信息出錯!");endf2()的流程圖if(fread(x+i,sizeof(data),1,fp)!=1)整理為word格式整理為word格式整理為word格式入口入口if((fp=fopen(fname,"wb"))==NULL)printf("不能打開文件?。?!\n");scanf("%s",fname);exit(0);退出for(i=0;i<R;i++)if(fread(x+i,sizeof(data),1,fp)!=1))printf("讀入信息出錯!");for(i=0;i<Z;i++)fclose(fp);getch();for(j=0;j<R;j++)……sum[i]=sum[i]+(x+j)->shangpin[i];出口f3()的流程圖……整理為word格式整理為word格式整理為word格式進入進入if((fp=fopen(fname,"wb"))==NULL)printf("不能打開文件!?。n");scanf("%s",fname);exit(0);for(i=0;i<R;i++)printf("讀入信息出錯!");for(i=0;i<Z;i++)printf("\n\n\n\t\t\t按任意鍵返回主菜單!");for(i=0;i<Z;i++)……sum[Z]=sum[Z]+sum[i];Endf4()的流程圖if(fread(x+i,sizeof(data),1,fp)!=1)for(j=0;j<R;j++)sum[i]=sum[i]+(x+j)->shangpin[i];for(i=0;i<Z;i++)……整理為word格式整理為word格式整理為word格式實驗結(jié)果輸入一月份各個銷售員的銷售信息:產(chǎn)品代號銷售員123451468121027382536677441891211執(zhí)行程序結(jié)果,一月份按產(chǎn)品1銷售量對銷售員進行排序,輸出排序結(jié)果如下:統(tǒng)計每種產(chǎn)品的總銷售量,對這些產(chǎn)品按從高到底的順序,輸出排序結(jié)果如下:整理為word格式整理為word格式整理為word格式輸出統(tǒng)計報表如下:整理為word格式整理為word格式整理為word格式設(shè)計體會經(jīng)過C語言課程設(shè)計實踐學(xué)習(xí),使我對c語言有了更進一步的認識和了解,板通過實踐,我也發(fā)現(xiàn)我的好多不足之處,首先是在程序輸入上還不夠熟練,經(jīng)常按錯字母,通過學(xué)習(xí)也有所改進;再有對c語言的一些標準庫函數(shù)不太了解,還有對函數(shù)調(diào)用的正確使用不夠熟悉,還有對c語言中經(jīng)常出現(xiàn)的錯誤也不了解,通過實踐,使我在這幾個方面的認識有所提高。在本次試驗中掌握了C語言的基本知識:數(shù)據(jù)類型(整形、實型、字符型、指針、數(shù)組、結(jié)構(gòu)等);運算類型(算術(shù)運算、邏輯運算、自增自減運算、賦值運算等);程序結(jié)構(gòu)(順序結(jié)構(gòu)、判斷選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu));大程序的功能分解方法(即函數(shù)的使用)等。進一步掌握各種函數(shù)的應(yīng)用,以及文件的讀寫操作等。我認為要學(xué)好c語言程序這門課程,不僅要認真閱讀課本知識,更重要的是要通過上機實踐才能增強和鞏固我的知識。只有這樣我們才能成為合格的計算機人材。參考文獻1、《C語言程序設(shè)計.普措才仁版》2、《C語言程序設(shè)計.譚浩強版》3、《全國計算機等級考試——二級C語言.2008版》4、《C語言上機指導(dǎo)》5、《MicrosoftVisualC++6.0指南》6、C語言之家()7、C語言教室()源程序清單/*計算上個月每個人每種產(chǎn)品的銷售量。按銷售量對銷售員進行排序,輸出排序結(jié)果(銷售員代號)統(tǒng)計每種產(chǎn)品的總銷售量,按從高到底的順序,輸出排序結(jié)果(需輸出產(chǎn)品代號,銷售量)整理為word格式整理為word格式整理為word格式輸出統(tǒng)計報表*/#include<stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>#defineZ5#defineR4/*定義宏常量便于程序的一般化*//*R表示銷售員個數(shù)*/typedefstruct/*縮短結(jié)構(gòu)體變量名*/{intshangpin[Z];/*定義結(jié)構(gòu)體便于信息的存儲和讀寫,辨別*/}data; /*R是表示商品的種類,最后一個為該銷售員商品總和*/voidmenu(){ system("cls"); /*清屏命令*/printf("\n\n");printf("\t┏━━━━━━━━━━━━主菜單━━━━━━━━━━┓\n");printf("\t┃1.計算上個月每個人每種產(chǎn)品的銷售量┃\n");printf("\t┃2.按銷售量對銷售員進行排序,輸出排序結(jié)果┃\n");printf("\t┃3.統(tǒng)計每種產(chǎn)品的總銷售量,輸出排序結(jié)果┃\n");printf("\t┃4.輸出統(tǒng)計報表┃\n");printf("\t┃5.結(jié)束操作┃\n");printf("\t┗━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");整理為word格式整理為word格式整理為word格式}voidf1(data*x)/*計算上個月每個人每種產(chǎn)品的銷售量*/{ FILE*fp;charfname[10],hitkey;intj,t;/*用于控制循環(huán)*/inti,k,s;/*用于定義職工序號,產(chǎn)品序號,產(chǎn)品數(shù)量*/system("cls"); /*清屏命令*/printf("您想計算哪個月?\n");printf("請輸入月份:");/*輸入文件名,這樣可以進行各個月份信息寫入*/scanf("%s",fname);strcat(fname,".dat");if((fp=fopen(fname,"wb"))==NULL)/*打開文件*/{ printf("不能打開文件?。?!\n");exit(0); /*正常exit(0);結(jié)束程序*/}for(j=0;j<R;j++)/*對商品數(shù)量清零*/for(t=0;t<Z;t++)(x+j)->shangpin[t]=0;printf("請輸入:\n職工編號 產(chǎn)品編號 銷售數(shù)量\n");/*提示用戶寫入信息的格式*/for(j=0;hitkey!=27;j++){ scanf("%d%d%d",&i,&k,&s);if(i>R||i<0||k>Z||k<0){ printf("信息錯誤!\n");/*提示語,避免輸入信息出錯*/continue;}else(x+i-1)->shangpin[k-1]=(x+i-1)->shangpin[k-1]+s;/*統(tǒng)計各個人的各種產(chǎn)品的數(shù)量,-1為了和數(shù)組中的序號相匹配*/整理為word格式整理為word格式整理為word格式printf("繼續(xù)輸入請按回車,結(jié)束輸入請按esc\n");printf("━━━━━━━━━━━━━━━━━━━━━━\n");hitkey=getch();for(;hitkey!=13&&hitkey!=27;)hitkey=getch();}for(j=0;j<R;j++)if(fwrite((x+j),sizeof(data),1,fp)!=1)/*把信息寫入文件中便有以后調(diào)用*/printf("writeerror!\n");fclose(fp);/*關(guān)閉文件避免信息遺漏*/printf("\n\n\n\n\n\n\t\t\t保存成功,按任意鍵返回主菜單!");getch();}voidf2(data*x)/*按銷售量對銷售員進行排序,輸出排序結(jié)果*/{ FILE*fp;charfname[10];inti,k,j,t,bianhao[R]={0},z;system("cls"); /*清屏命令*/printf("你要哪個月的?\n");printf("請輸入月份:");/*輸入文件名,這樣可以進行各個月份信息讀入*/scanf("%s",fname);strcat(fname,".dat");if((fp=fopen(fname,"rb"))==NULL)/*打開文件*/{ printf("不能打開文件?。?!\n");exit(0);整理為word格式整理為word格式整理為word格式}for(i=0;i<R;i++)/*讀出信息*/if(fread(x+i,sizeof(data),1,fp)!=1)printf("讀入信息出錯!");/*讀入信息提示*/for(i=0;i<R;)/*用于存儲職工編號*/bianhao[i]=i++;printf("請輸入按何種產(chǎn)品排序\n");scanf("%d",&k);k=k-1;/*便于與結(jié)構(gòu)體中的數(shù)組值對應(yīng)*/for(i=0;i<R;i++)/*按K種產(chǎn)品對銷售員排序,選擇法排序*/{ t=i;for(j=i+1;j<R;j++)if((x+bianhao[t])->shangpin[k]<(x+bianhao[j])->shangpin[k])/*調(diào)用職工各自對應(yīng)的結(jié)構(gòu)體內(nèi)的產(chǎn)品數(shù)量*/t=j;if(t!=i){ z=bianhao[i];bianhao[i]=bianhao[t];bianhao[t]=z;}}printf("\t\t\t按%d產(chǎn)品對銷售員排序為:\n",k+1);printf("━━━━━━━━━━━━━━━━━━━━━\n");for(i=0;i<R;i++)printf("\t\t\t第%d名是:員工%d\n",i+1,bianhao[i]+1);printf("\n\n\n\t\t\t按任意鍵返回上一主菜單!");getch();fclose(fp); /*關(guān)閉讀入的文件*/}整理為word格式整理為word格式整理為word格式voidf3(data*x) /*統(tǒng)計每種產(chǎn)品的總銷售量,輸出排序結(jié)果*/{ FILE*fp;charfname[10];inti,j,sum[Z]={0},bianhao[Z]={0},z,t,k;system("cls"); /*清屏命令*/printf("您想計算哪個月的?\n");printf("請輸入月份:"); /*輸入文件名,這樣可以進行各個月份信息讀入*/scanf("%s",fname);strcat(fname,".dat");if((fp=fopen(fname,"rb"))==NULL)/*打開文件*/{ printf("不能打開文件?。。n");exit(0);}for(i=0;i<R;i++)/*讀出信息*/if(fread(x+i,sizeof(data),1,fp)!=1)printf("讀入信息出錯!");for(i=0;i<Z;i++)/*對各種商品求和*/for(j=0;j<R;j++)sum[i]=sum[i]+(x+j)->shangpin[i];for(i=0;i<Z;)/*用于存儲商品編號*/bianhao[i]=i++;for(i=0;i<Z;i++)printf("%3d",bianhao[i]);for(i=0;i<Z;i++)/*對產(chǎn)品從高到低排序,選擇法排序*/{ t=i;for(j=i+1;j<Z;j++)/*產(chǎn)品變化時,產(chǎn)品編號也隨之變化,便于輸出*/if(sum[t]<sum[j])t=j;整理為word格式整理為word格式整理為word格式if(t!=i){ k=sum[i];sum[i]=sum[t];sum[t]=k;z=bianhao[i];bianhao[i]=bianhao[t];bianhao[t]=z;}}printf("輸出產(chǎn)品排序\n");printf("產(chǎn)品編號數(shù)量\n");printf("━━━━━━━━━━━━━\n");for(i=0;i<Z;i++)printf("產(chǎn)品%-7d%-1d\n",bianhao[i]+1,sum[i]);printf("\n\n\n\t\t\t按任意鍵返回主菜單!");getch();fclose(fp); /*關(guān)閉讀入的文件*/}voidf4(data*x)/*輸出統(tǒng)計報表*/{ FILE*fp;charfname[10];inti,j,sum[Z+1]={0};system("cls"); /*清屏命令*/printf("您想計算哪個月?\n");printf("請輸入月份:");/*實為輸入一個文件名,這樣可以進行各個月份的信息讀入*/scanf("%s",fname);strcat(fname,".dat");if((fp=fopen(fname,"rb"))==NULL)/*打開文件*/{printf("不能打開文件!?。n");exit(0);整理為word格式整理為word格式整理為word格式}for(i=0;i<R;i++)/*讀出信息*/if(fread(x+i,sizeof(data),1,fp)!=1)printf("讀入信息出錯!");for(i=0;i<Z;i++)/*對各種商品求和*/for(j=0;j<R;j++)sum[i]=sum[i]+(x+j)->shangpin[i];for(i=0;i<Z;i++)/*求商品總和*/sum[Z]=sum[Z]+sum[i];printf("━━━━━━━━━━━━━━━━━━━━━━━━━━━\n");printf("輸出統(tǒng)計報表如下:\n");/*按要求輸出統(tǒng)計表*/printf("銷售員代號產(chǎn)品代號銷售之和\n");for(i=0;i<R;i++)for(j=0;j<Z;j++)printf("員工%-8d產(chǎn)品%-6d數(shù)量%-10d\n",i+1,j+1,(x+i)->shangpin[j]);printf("━━━━━━━━━━━━━━━━━━━━━━━━━━━\n");for(i=0;i<Z;i++){ if(i==0)printf("產(chǎn)品%d之和%-10d總和%-10d\n",i+1,sum[i],sum[Z]);else

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論