




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第頁成績評定表學生姓名王金強班級學號14專業電子信息工程課程設計題目保安值班安排系統評語組長簽字:成績日期2013年1月課程設計任務書學院信息科學及工程學院專業電子信息工程學生姓名王金強班級學號1203030224課程設計題目保安值班安排系統實踐教學要求及任務:某公司有7名保安人員:趙、錢、孫、李、周、吳、陳。由于工作需要進行輪休制度,一星期中每人休息一天。預先讓每一個人選擇自己認為合適的休息日。請編制一程序,打印輪休的所有可能方案。當然使每個人都滿意,例如每人選擇的休息日如下:趙:星期二、星期四錢:星期一、星期六孫:星期三、星期日李:星期五周:星期一、星期四、星期六吳:星期二、星期五陳:星期三、星期六、星期日工作計劃及進度安排:本課程設計時間為19教學周。其中包含設計、代碼調試、課程設計論文撰寫幾個階段。第19周星期一:設計任務分析和總體設計星期五:軟件算法和流程設計、軟件編碼實現星期六:軟件總體調試、軟件運行分析、答辯、驗收程序、書寫課程設計報告,提交指導教師:201年月日專業負責人:201年月日學院教學副院長:201年月日
目錄1需求分析……………………..42概要設計…………………..…52.1題目概述……….………52.2算法流程圖……………….……….…..63詳細設計……………….….….83.1算法分析………………….….…83.2核心代碼………….….……..…94調試分析……………..…….135課設總結………………..…….176參考文獻………………..……..181需求分析該程序有多種功能,是一套保安值班安排系統。設計這個程序希望可以把保安輪休的所有可能方案打印出來,可以通過輸入保安姓名將對應保安的信息打印到屏幕上;整個過程在一個可操作的界面內實現,操作方便,菜單簡單易懂,能準確無誤的顯示需要的信息.該程序具有程序運行效率高的優點,數據類型豐富,結構化控制語句功能強等優點.2概要設計2.1題目概述程序實現的功能是對7個員工實現排班,7個員工每個員工有一天的休假日,但是這一天的休假日可由員工自行選擇,選擇他們想要休假的時間,可由多個選擇,也可只有一個選擇,7個員工依次輸入完畢后,程序會輸出滿足7個員工的多種排班方式。對于7個人選擇有沖突的,輸出相應的提示。具體題目:學校實驗樓有7名保安人員:趙,錢,孫,李,周,吳,陳。由于工作需求要進行輪休制度,一星期中每人休息一天。預先讓每一個人選擇自己認為合適的休息日。輸出輪休的所有可能方案。當然使每個人都滿意。例如每人選擇的休息日如下:趙:星期二,星期四錢:星期一,星期六孫:星期三,星期日李:星期五周:星期一,星期四,星期六吳:星期二,星期五陳:星期三,星期六,星期日2.2算法流程圖如圖2-2:圖2—2總流程圖2.3for循環的流程圖如圖2-3: 圖2-37個嵌套for循環的流程圖3詳細設計3.1算法分析該程序實現對7個員工進行排班的功能,輸出7個員工的休息日。該程序首先給出提示對員工們實現數據錄入,錄入7個人對于休假日的不同選擇,這個需求本程序通過7個獨立的for循環來實現,然后針對大家不同的選擇經過編譯后通過7個嵌套的for循環采取遍歷查找的方法輸出滿足要求的組合,對于7個人選擇有沖突,而未能輸出滿足要求組合的給予提示,讓他們重新選擇。該程序未通過定義和調用其他函數來實現,僅一個main()函數就可以了,在main()函數里實現數據錄入和比較得出結果的功能1.定義變量2.輸出歡迎界面;3.通過7個獨立的for循環,依次輸入7個人的選擇情況;4.通過7個嵌套的循環依次進行遍歷按要求組合。5.通過兩個for循環依次判斷組合里的任意兩個數不相等6.若任意兩個數不相等,輸出對應組合。此處函數通過7個嵌套的for()循環依次進行遍歷按要求排列出組合。每一次遍歷下來,就把a,b,c,d,e,f,g輸入的選擇情況分別賦給A[0],A[1],A[2],A[3],A[4],A[5],A[6].說明:因為每個人有多個選擇,本程序利用的思想是通過7個嵌套的for遍歷循環,找出符合條件的組合。從a的第一個選擇,b的第一個選擇,c的第一個選擇,d的第一個選擇,e的第一個選擇,f的第一個選擇,g的第一個選擇排出一個組合,再a的第一個選擇,b的第一個選擇,c的第一個選擇,d的第一個選擇,e的第一個選擇,f的第一個選擇,g的第二個選擇。直到結束g的選擇為止,前面不變,開始從f的第二個選擇開始。這樣依次遍歷下去,得到N個組合,但是,這樣遍歷下來得到的N個組合必有兩個人選擇相同的情況。這時候就得定義兩個變量。一個是一維數組A[7]和判斷變量flag。3.2核心代碼#include<stdio.h>intmain(void)intj,k,h,n=0,flag=1;//用于判斷的變量inta,b,c,d,e,f,g;intachoice,bchoice,cchoice,dchoice,echoice,fchoice,gchoice;//用于確定員工選擇個數的變量intq[7][7];//用于員工存儲所選擇的休假日的變量intA[7];printf("****************歡迎進入排班系統*****************\n");printf("#\t\t特別注意!\t\t\t#\n");printf("#\t請各位工作人員輸入自己想要輪休的日期\t#\n");printf("#\t請先選擇你要選擇的次數\t\t\t#\n");printf("#\t再選擇你要輪休的日期\t\t\t#\n");printf("#\t\t\t\t\t\t#\n");printf("#\t\t\t\t\t\t#\n");printf("#\t\t\t\t\t\t#\n");printf("****************歡迎進入排班系統*****************\n");//歡迎界面printf("請趙輸入你想選擇的次數\n");scanf("%d",&achoice);printf("請趙輸入輪休日期\n:");for(j=0;j<achoice;j++){ scanf("%d",&q[j][0]);//a錄入休假日printf("請錢輸入你想選擇的次數\n");scanf("%d",&bchoice);printf("請錢輸入輪休日期\n:");for(j=0;j<bchoice;j++){ scanf("%d",&q[j][1]);//b錄入休假日printf("請孫輸入你想選擇的次數\n");scanf("%d",&cchoice);printf("請孫輸入輪休日期\n:");for(j=0;j<cchoice;j++){ scanf("%d",&q[j][2]);//c錄入休假日printf("請李輸入你想選擇的次數\n");scanf("%d",&dchoice);printf("請李輸入輪休日期\n:");for(j=0;j<dchoice;j++){ scanf("%d",&q[j][3]);//d錄入休假日printf("請周輸入你想選擇的次數\n");scanf("%d",&echoice);printf("請周輸入輪休日期\n:");for(j=0;j<echoice;j++){ scanf("%d",&q[j][4]);}//e錄入休假日printf("請吳輸入你想選擇的次數\n");scanf("%d",&fchoice);printf("請吳輸入輪休日期\n:");for(j=0;j<fchoice;j++){ scanf("%d",&q[j][5]);}//f錄入休假日printf("請陳輸入你想選擇的次數\n");scanf("%d",&gchoice);printf("請陳輸入輪休日期\n:");for(j=0;j<gchoice;j++){ scanf("%d",&q[j][6]);}//g錄入休假日for(a=0;a<achoice&&q[a][0]!=0;a++){ for(b=0;b<bchoice&&q[b][1]!=0;b++){ for(c=0;c<cchoice&&q[c][2]!=0;c++){ for(d=0;d<dchoice&&q[d][3]!=0;d++){ for(e=0;e<echoice&&q[e][4]!=0;e++){ for(f=0;f<fchoice&&q[f][5]!=0;f++){ for(g=0;g<gchoice&&q[g][6]!=0;g++){//7個循環實現遍歷 A[0]=q[a][0]; A[1]=q[b][1]; A[2]=q[c][2]; A[3]=q[d][3]; A[4]=q[e][4]; A[5]=q[f][5]; A[6]=q[g][6]; flag=1; for(k=0;k<6;k++){ for(h=k+1;h<7;h++){if(A[k]==A[h])flag=0;//比較任意兩個數是否相等 if(flag==1){//如果不等則輸出結果 printf("得到以下組合:\n"); printf("趙:");printf("星期%d\n",A[0]); printf("錢:");printf("星期%d\n",A[1]); printf("孫:");printf("星期%d\n",A[2]); printf("李:");printf("星期%d\n",A[3]); printf("周:");printf("星期%d\n",A[4]); printf("吳:");printf("星期%d\n",A[5]); printf("陳:");printf("星期%d\n",A[6]); printf("\n"); n++;if(n==0){printf("對不起,你們的選擇不能實現排班,請重新選擇!!\n");}return0;}4調試分析進入程序后,如圖4-1所示:圖4-1歡迎界面只輸出一組如圖4-2:圖4-2輸出一種結果的排序輸入輸出結果如圖4-3:圖4-3輸出一種結果不能輸出結果的輸入如圖4-4:圖4-4無法輸出結果的排序輸入輸出結果如圖4-5:圖4-5輸出無法實現排班的結果輸出多組結果的輸入如圖4-6:圖4-6輸出多種結果的排序輸入輸出結果如圖4-7:圖4-7輸出多種組合5課程總結程序設計是一次讓我們綜合自己所學習的知識,把他應用到實際的一次機會,平常我們學的編程語言總顯得那么的不靈活,很多時候我們一本書學下來了,仍編不出一個簡單的程序,通過對一個小項目功能的實現,我們不僅重溫了平時所學的知識點,還增強了自己的動手能力。對于一個程序,在我看來,最重要的莫過于思路,同一個程序可以由多個思路來實現,然而我們所要做的就是通過多次的編碼調試找出最簡,最優思路。好的思路能無疑能使一個程序員實現事半功倍的效果。接著就要根據自己的思路為該程序設計算法,只有輪廓形成后才能開始編碼,編寫的過程中還應搜索記憶中的語言基礎,找到最簡便的表達方式,增加程序的可讀性,代碼編寫完成后,經過多次編譯后無錯誤了也不代表程序就完成了,運行程序時還應通過多組不同情況,看能否實現。通過這次課程設計使我懂得了理論及實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識及實踐相結合起來,從理論中得出結論,才能真正提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發現了
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025秋五年級語文上冊統編版-【21 古詩詞三首】交互課件
- 工地押金合同協議書范本
- 2025年藥用空心膠囊項目策劃方案報告
- 租用車合同協議書范本
- 網店潮牌創業計劃書
- 店面承租合同轉讓協議書
- 門頭店招合同協議書
- 2025年中國甲基硅樹脂項目投資計劃書
- 企業如何脫胎換骨長大成人完整文檔
- 物流公司轉讓合同協議書
- 危重癥患者護理
- 第五課 在和睦家庭中成長 說課稿-2024-2025學年高中政治統編版選擇性必修二法律與生活
- 治療性血小板去除術
- 2024版《糖尿病健康宣教》課件
- 2024年海南省高考化學試卷真題(含答案解析)
- 膿毒癥性凝血病診療中國專家共識解讀
- 奧數平均數應用題100題(專項訓練)-2024-2025學年四年級上冊數學人教版
- 二年級《道德與法治》下冊知識點
- Unit5Seasons(單元測試)譯林版英語四年級下冊
- 2024年四川省成都市中考歷史試卷真題(含答案解析)
- 2024屆四川省廣元市旺蒼縣小升初考試數學試卷含解析
評論
0/150
提交評論