排班系統(tǒng)C語言課程設(shè)計_第1頁
排班系統(tǒng)C語言課程設(shè)計_第2頁
排班系統(tǒng)C語言課程設(shè)計_第3頁
排班系統(tǒng)C語言課程設(shè)計_第4頁
排班系統(tǒng)C語言課程設(shè)計_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、12C程序課程設(shè)計報告201 201 學(xué)年第 學(xué)期課程名稱 C語言課程設(shè)計 設(shè)計題目 排班系統(tǒng) 學(xué)生姓名 學(xué) 號 專業(yè)班級 指導(dǎo)教師 201 年 月 日目錄一、設(shè)計任務(wù)書31、題目與要求32、本程序涉及的知識點3二、程序流程圖4三、程序代碼設(shè)計5四、程序調(diào)試過程6五、程序運行過程6六、程序有待改進的地方9七、程序設(shè)計總結(jié)9八、致謝9參考文獻9附錄 10一、設(shè)計任務(wù)書1、題目與要求趙:星期二、星期四本程序?qū)崿F(xiàn)的功能是對7名保安人員進行排班,要求每個人在一星期中可以休息一天。每名保安可以自行選擇自己想要的休息日,而對于休息日的選擇既可以是某一天,也可以是某幾天中的其中一天。當(dāng)7名保安依次輸入自己想

2、要的休息日后,系統(tǒng)將會給出可能的值班安排。若系統(tǒng)給出的值班安排是0種,證明系統(tǒng)對7名保安的選擇無法作出排班,需要重新輸入。具體題目:學(xué)校實驗樓有7名保安人員:錢、趙、孫、李、周、吳、陳。由于工作需要進行輪休制度,一星期中每人休息一天。預(yù)先讓每一個人選擇自己認為合適的休息日。請編制程序,打印輪休的所有可能方案。當(dāng)然使每個人都滿意,例如每人選擇的休息日如下:錢:星期一、星期六孫:星期三、星期日李:星期五周:星期一、星期四、星期六吳:星期二、星期五陳:星期三、星期六、星期日2、本程序涉及的知識點輸入函數(shù)和輸出函數(shù)、變量的定義、for語句和switch-case語句的使用等二、程序流程圖開始輸出顯示歡

3、迎使用排班系統(tǒng)循環(huán)錄入每個保安選擇的休息日判斷輸入的休息日是否合理輸出滿足條件的值班安排結(jié)束三、程序代碼設(shè)計輸入函數(shù)和輸出函數(shù)、變量的定義、for語句和switch-case語句、ss字符串的使用等。輸入函數(shù):1)函數(shù)原形:自定義swap(int *a, int *b)函數(shù) 2) 功 能:swap()函數(shù)利用取地址符號&完成對程序中某個變量的賦值,進而程序中判斷交換的功能。3)函數(shù)原形:get char()4)功 能:向計算機輸入一個字符。5)變量及類型: int a,b,m,k: 整型形參變量,接收main()傳過來的隨機數(shù)字。 int i:循環(huán)控制變量,其中i 具有自加功能。 in

4、t j: 整型形參變量,其中j 具有自加功能。6)說 明:輸入字符后需要輸入-1,待系統(tǒng)做出判斷后往下執(zhí)行。選擇判斷結(jié)構(gòu) switch-case語句:從表達式值等于某個case語句后的值開始,它下方的所有語句都會一直運行,直到遇到一個break為止。隨后,switch語句將結(jié)束,程序從switch結(jié)束大括號之后的第一個語句繼續(xù)執(zhí)行,并忽略其他case;假如任何一個case語句的值都不等于表達式的值,就運行可選標簽default之下的語句。 假如表達式的值和任何一個case標簽都不匹配,同時沒有發(fā)現(xiàn)一個default標簽,程序會跳過整個switch語句,從它的結(jié)束大括號之后的第一個語句繼續(xù)執(zhí)行。

5、for語句:for(語句1 ; 語句2 ; 語句3 ) 循環(huán)體 執(zhí)行時,先執(zhí)行一次語句1(注意只執(zhí)行一次) 之后判斷語句2是否成立 1).如果成立執(zhí)行循環(huán)體,之后執(zhí)行語句3。再返回語句2判斷條件是否成立?成立執(zhí)行循環(huán)體后再執(zhí)行語句3,如此直到循環(huán)體不成立則跳出循環(huán) 2)如果語句2不成立,則不執(zhí)行循環(huán)體也不執(zhí)行語句3直接跳出循環(huán)。輸出函數(shù):1)函數(shù)原形:printf(“=”,*)2)功 能:輸出相關(guān)提示信息及最后結(jié)果。3)相關(guān)變量: int n:輸出正確結(jié)果。 int i,j:輸出計算正確,計算排班情況。4)說 明:輸出時要把要輸出的信息用雙引號括起來,輸出數(shù)字時要在其代表變量前加逗號。四、程序

6、調(diào)試過程由于對C語言知識儲備有限,且時間精力有限,我們在設(shè)計程序程序的過程中遇到了不少問題。首先遇到的問題是:使用何種數(shù)組以及如何使輸出變得簡潔易懂,易操作。在思考討論之后,我們決定盡量“使輸入數(shù)字化,輸出結(jié)果文字化”的做法,也就是再輸入星期幾的時候直接用數(shù)字代替,在輸出的時候,為了更加直觀,就需要把原先的數(shù)字輸出為星期幾這種文字的形式;在單個對象輸出結(jié)束之后,我們選擇了 -1這個不會與其他日期混淆的數(shù)字,以此表示可以對下一個對象進行輸出。這就需要重新定義一個二維數(shù)組,數(shù)組中存放“星期一,星期二”等文字形式的定義,這樣我們可以通過前面輸入的數(shù)字來引用對應(yīng)的文字。解決了最基本的問題之后,我們遇到

7、的問題是:程序使用過程還是不夠直觀,不能讓使用者直接觀察到每個保安可能選擇的休息日,在無法自行解決的情況下我們向老師求助。在解釋程序、說明目的之后,我們重新進行了一次討論,最后老師建議我們重新定義一個新的數(shù)組。為此我們找了很多相關(guān)資料,不斷地進行調(diào)試,修改,卻始終無法完全達到我們的預(yù)想;在老師的指導(dǎo)下,再次經(jīng)歷了數(shù)組選擇以及一系列的調(diào)試與修改之后,我們重新定義了 ss字符串,采用了 char ss數(shù)組。在選擇了char ss數(shù)組之后遇到的問題就是輸出語句繁瑣,每次都會顯示“請輸入下列人選擇休息的可能時間”,后來我們對“printf("請輸入下列人選選擇休息的可能時間:n")

8、;”這個語句進行修改與位置的調(diào)整,使得其變得簡潔。調(diào)試的過程比較繁瑣,除了跟版本有一定的關(guān)系外,有時候就因為一個小錯誤,程序調(diào)試了好久也出不來想要的結(jié)果,最后通過我們組員的一起討論、利用課本、網(wǎng)上的資源和老師的幫助,這些問題都被我們逐一解決了。五、程序運行過程1、輸出多種結(jié)果2、輸出0種結(jié)果(說明輸入有誤,需要重新輸入)3、只輸出一種結(jié)果(如題目要求)六、程序有待改進的地方本程序是根據(jù)保安可能選擇的休息日,給出滿足條件的值班安排這一功能,系統(tǒng)功能相對單一,不夠人性化。在對C語言有更深的了解后,可以考慮對程序進行修改,增加系統(tǒng)功能,例如:1、增設(shè)特殊情況顯示以及分析,根據(jù)況進行人性化排班,例如:

9、看病>辦證>旅游2、在系統(tǒng)無法排班時,判斷周幾沒有值班人員;3、當(dāng)有某個保安請假一周,也就是剩下的6名保安有一個人一周要值兩天時如何排班;4、增設(shè)投票功能:當(dāng)有多種值班安排時,通過投票隨機決定使用哪一種值班安排;5、可增設(shè)當(dāng)天值班保安的工號、電話、地址等信息的顯示;七、程序設(shè)計總結(jié)在完成本次課程設(shè)計的過程中,一方面讓我們在實際運用中更加深刻地理解了課堂學(xué)到的知識;另一方面,通過查詢資料、咨詢老師,培養(yǎng)了我們在有限時間內(nèi)搜集資料以及寫論文的能力;與此同時,在編寫程序時,也讓我們體會到想要學(xué)好一個程序,不僅要上課認真聽老師講,還要在課外多閱讀一些相關(guān)的資料和書籍。同時,相關(guān)的資料和老師

10、的指導(dǎo)對我們完成程序的編寫提供很大的幫助。除此之外,我們還認識到編寫程序時必須要耐心仔細,真可謂,細節(jié)決定成??;一個標點和字符或是中英文等輸入細節(jié)都要注意,否則就可能導(dǎo)致整個程序運行錯誤,這極大地培養(yǎng)了我們務(wù)實求真,發(fā)現(xiàn)問題的科學(xué)素養(yǎng)。此外,思考、討論、查找資料以及調(diào)試、修改的過程是非常繁瑣的,但是我們要盡量做到盡善盡美,只有這樣,才能設(shè)計出簡潔的、比較人性化的程序。八、致謝本次課程設(shè)計的完成,除了感謝百度文庫提供的資料以及網(wǎng)友的不吝賜教之外,還要特別感謝C語言課程李老師的耐心指導(dǎo),讓我們在繁瑣的調(diào)試中尋找到樂趣以及不斷改進的動力。參考文獻1譚浩強,C程序設(shè)計(第四版),北京:清華大學(xué)出版社,

11、2010.62 豆丁網(wǎng)-3- C語言論壇 - 編程論壇4-3億文庫-5附錄源程序:#include <stdio.h>int n = 0;int rest77;void swap(int *a, int *b) int m; m = *a; *a = *b; *b = m; void perm(int list, int k, int m) int i; int j; if(k > m) for (i=0; i<7; i+) for (j=0; j<7; j+) if (restij = -1) return; if (restij != listi) conti

12、nue; if (restij = listi) break; n+; printf("Solution: %dn", n); printf("趙 錢 孫 李 周 吳 陳n"); printf("=n"); for(i = 0; i <= m; i+) switch (listi) case 1: printf("星期一 "); break; case 2: printf("星期二 "); break; case 3: printf("星期三 "); break; ca

13、se 4: printf("星期四 "); break; case 5: printf("星期五 "); break; case 6: printf("星期六 "); break; case 7: printf("星期日 "); break; default: break; printf("nnn"); else for(i = k; i <= m; i+) swap(&listk, &listi); perm(list, k + 1, m); swap(&listk, &listi); int main() int list = 1, 2, 3, 4, 5, 6, 7; int i, j; char ss720="趙","錢","孫","李","周","吳","陳" printf("=歡迎使用排班系統(tǒng)=n");printf("請輸入下列人選選擇休息的可能時間:n"); for(i = 0; i < 7; i+) prin

溫馨提示

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

評論

0/150

提交評論