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

下載本文檔

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

文檔簡介

C語言課程設(shè)計(jì)基本方法講解軟件開發(fā)成功的重要前提2規(guī)劃(對系統(tǒng)進(jìn)行分析)(一)準(zhǔn)確理解題目要求3要做什么?實(shí)現(xiàn)什么功能?理解題目要求,系統(tǒng)應(yīng)該有什么樣的運(yùn)行過程用文字(輔以圖形)描述清楚基本功能處理什么數(shù)據(jù)?各種數(shù)據(jù)分類描述清楚文字(輔以圖形)寫清楚有什么信息要處理標(biāo)出哪些數(shù)據(jù)是需要輸入的標(biāo)出哪些數(shù)據(jù)是需要輸出的有哪些關(guān)鍵處理?如果需要計(jì)算,計(jì)算方法(或公式)是什么如果需要排序、檢索,依據(jù)是什么(二)表示和定義數(shù)據(jù)4采用C語言基本數(shù)據(jù)結(jié)構(gòu)

結(jié)構(gòu):用以表示具有關(guān)聯(lián)的一組數(shù)據(jù),比如一個(gè)企業(yè)員工,他的姓名、年齡、電子郵件等信息;

數(shù)組:存儲多個(gè)對象、實(shí)體,比如結(jié)構(gòu)數(shù)組,每個(gè)數(shù)組元素表示一個(gè)企業(yè)員工;

鏈表:和數(shù)組作用類似,存儲多個(gè)對象,添加、刪除對象等操作比較靈活;

文件:把對象數(shù)據(jù)保存到磁盤上,比如企業(yè)所有員工的個(gè)人信息存成一個(gè)數(shù)據(jù)文件。輔助用的數(shù)據(jù)結(jié)構(gòu)比如排序,可能要用到輔助鏈表或數(shù)組(三)結(jié)構(gòu)化設(shè)計(jì)5確定功能模塊和調(diào)用關(guān)系

可按照調(diào)用的層次組織,主程序調(diào)用大的模塊,大的模塊又調(diào)用小的模塊,形成一種清晰的功能拆分關(guān)系;

畫出功能模塊層次圖,并對每個(gè)模塊實(shí)現(xiàn)的功能和方法給出文字描述。自頂向下逐個(gè)模塊編碼主程序/主界面功能模塊子功能模塊更小的子功能模塊直到實(shí)現(xiàn)到最末端的細(xì)節(jié)功能為止自頂向下設(shè)計(jì)的形式主程序功能1功能2功能3功能4功能5子功能3.1子功能3.2子功能3.1.1子功能3.1.2子功能3.1.36自頂向下設(shè)計(jì)的代碼示例int

main(int

argc,

char**argv){/*主函數(shù)*/while(true){DisplayMenu();/*菜單*/ReadChoice();switch(choice);{case

0:FunctionA();break;case

1:FunctionB();break;……}}}/*再來設(shè)計(jì)子功能函數(shù)*/FunctionA(){……FunctionA-1();/*調(diào)用子功能*/……FunctionA-2();/*調(diào)用子功能*/……}/*細(xì)化子功能*/FunctionA-1(){……FunctionA-1-1();/*下一級*/……}(四)編碼的要求8鋸齒型程序書寫格式子代碼塊相對于上一級代碼塊,要有正確的縮進(jìn),美觀,易讀性好要有注釋代碼語句實(shí)現(xiàn)的功能或者采取的方法要有注釋函數(shù)要說明函數(shù)實(shí)現(xiàn)的功能;每個(gè)函數(shù)參數(shù)表示的意義;返回?cái)?shù)據(jù)的類型和意義實(shí)例講解9題目二十二:校際運(yùn)動會管理系統(tǒng)(一)理解題目10題目二十二:校際運(yùn)動會管理系統(tǒng)問題描述:初始化輸入:N-參賽學(xué)校總數(shù),M-男子競賽項(xiàng)目數(shù),

W-女子競賽項(xiàng)目數(shù)各項(xiàng)目名次取法有如下幾種:取前5名:第1名得分7,第2名得分5,第3名得分3,第4名得分2,第5名得分1;取前3名:第1名得分5,第2名得分3,第3名得分2;用戶自定義:各名次權(quán)值由用戶指定。由程序提醒用戶填寫比賽結(jié)果,輸入各項(xiàng)目獲獎運(yùn)動員的信息。所有信息記錄完畢后,用戶可以查詢各個(gè)學(xué)校的比賽成績,生成團(tuán)體總分報(bào)表,查看參賽學(xué)校信息和比賽項(xiàng)目信息等。從題目描述可得系統(tǒng)運(yùn)行過程參賽學(xué)校女子項(xiàng)目男子項(xiàng)目初始化輸入成績輸入項(xiàng)目名次名次策略成績統(tǒng)計(jì)系統(tǒng)數(shù)據(jù)(項(xiàng)目-學(xué)校-名次)名次數(shù)據(jù)(名次-對應(yīng)分?jǐn)?shù))(按學(xué)校統(tǒng)計(jì))團(tuán)體總分(男子總分+女子總分)查詢學(xué)校信息比賽項(xiàng)目信息總分?jǐn)?shù)據(jù)11從運(yùn)行過程可得系統(tǒng)主要功能12系統(tǒng)運(yùn)行時(shí)輸入初始化參數(shù),包括參賽學(xué)校、男子項(xiàng)目、女子項(xiàng)目的數(shù)目和信息;設(shè)定名次分值方案;初始化完成后,提供菜單選項(xiàng):錄入各比賽項(xiàng)目的名次;查詢各校的團(tuán)體總分;查詢學(xué)校信息;查詢比賽項(xiàng)目信息;其中,錄入比賽名次,要求每一個(gè)比賽項(xiàng)目,都能錄入其前N名每一名次由哪家學(xué)校獲得;查詢學(xué)校信息,要求輸出該學(xué)?;拘畔⑼?,還輸出它的團(tuán)體總分;查詢比賽項(xiàng)目,要求輸出該項(xiàng)目基本信息外,還輸出該項(xiàng)目前N名分屬什么學(xué)校;自動統(tǒng)計(jì)功能:要求錄入各個(gè)比賽項(xiàng)目的各名次獲得者后,根據(jù)名次和分值的對應(yīng)關(guān)系,自動統(tǒng)計(jì)每個(gè)學(xué)校的團(tuán)體總分。從運(yùn)行過程可得系統(tǒng)主要數(shù)據(jù)13參賽學(xué)校信息:學(xué)校數(shù)量,各校名稱等;男子項(xiàng)目信息:項(xiàng)目數(shù)量,各項(xiàng)目名稱等;女子項(xiàng)目信息;項(xiàng)目數(shù)量,各項(xiàng)目名稱等;名次和分值的對應(yīng)信息:前多少名可得分,各次得多少分;名次信息:某個(gè)項(xiàng)目的前N名分別是哪個(gè)學(xué)校;團(tuán)體總分信息:假設(shè)按學(xué)校統(tǒng)計(jì),并且男隊(duì)和女隊(duì)一起組成團(tuán)體總分,則計(jì)算方法為該學(xué)校的男隊(duì)和女隊(duì)分別在各項(xiàng)目中獲得的名次折算(對應(yīng))成分?jǐn)?shù),然后求和。確定數(shù)據(jù)的來源14直接輸入的數(shù)據(jù):參賽學(xué)校信息;男子項(xiàng)目信息;女子項(xiàng)目信息;名次和分值的對應(yīng)信息;名次信息。系統(tǒng)自動計(jì)算所得數(shù)據(jù):團(tuán)體總分。后續(xù)設(shè)計(jì)可據(jù)此規(guī)劃,凡是需要用戶輸入的數(shù)據(jù),都需要提供功能菜單和相應(yīng)輸入界面;自動計(jì)算的數(shù)據(jù),則需要提供獨(dú)立的功能模塊或者函數(shù)進(jìn)行計(jì)算。關(guān)鍵的計(jì)算方法(公式)15主要是統(tǒng)計(jì)學(xué)校的團(tuán)體總分

每個(gè)比賽項(xiàng)目,不管是男子項(xiàng)目還是女子項(xiàng)目,都有個(gè)名次表,比如第一名是哪個(gè)學(xué)校,第二名是哪個(gè)學(xué)校;

每個(gè)名次都對應(yīng)一個(gè)分值,比如第一名得5分,第二名得3分等,分值和名次對應(yīng)關(guān)系初始化時(shí)由用戶確定;

某校在所有比賽項(xiàng)目中取得的有效名次對應(yīng)的分?jǐn)?shù)總和,即為團(tuán)體總分。

例,某校男子標(biāo)槍得第一名(5分),女子鐵餅得第二名(3分),女子跳遠(yuǎn)得第一名(5分),其它各比賽項(xiàng)目均未獲得有效名次,則該校團(tuán)體總分5+3+5=13(二)表示和定義主要數(shù)據(jù)編號學(xué)校校名多個(gè)學(xué)校如何表示?通過數(shù)組int

school_num;/*全局變量,學(xué)校數(shù),由初始化決定*/stird,uncamtehead24個(gè)學(xué)ne校x校t

*/school

isd,cnhahmeools[24]id;,n/am*e

最多通過鏈表學(xué)校1next

next學(xué)校2

學(xué)校3①16編號女子項(xiàng)目名稱多個(gè)項(xiàng)目如何表示?通過數(shù)組int

women_item_num;/*全局變量,女子項(xiàng)目數(shù),由初始化決定*/struct

women_itemwomen_items[24];/*最多24個(gè)女子比項(xiàng)目*/②17編號男子項(xiàng)目名稱多個(gè)項(xiàng)目如何表示?通過數(shù)組與前類似,略。通過鏈表與前類似,略。③18名次名次分值分值④多個(gè)名次分值如何表示?通過數(shù)組int

rank_score_num;/*全局變量,前

N名可以獲得分?jǐn)?shù),由初始化決定*/struct

rank_scorerank_scores[24];/*比 項(xiàng)目最多允許前24名獲得分?jǐn)?shù)*/初始化時(shí),選擇方案1或方案2,程序內(nèi)定19項(xiàng)目編號比名次項(xiàng)目類型名次表⑤結(jié)構(gòu)中,rank_table為整型指針,指向一個(gè)動態(tài)分配的整型數(shù)組,數(shù)組的長度為

rank_score_num,即如果前N名可以得分,此數(shù)組長度就是N,數(shù)組元素存儲學(xué)校的編號,表示第幾名被哪個(gè)學(xué)校獲得。上述為單個(gè)比 項(xiàng)目的名次結(jié)構(gòu),各個(gè)比20名次鏈表示意圖項(xiàng)目編號;項(xiàng)目類型(男/女);名次表(數(shù)組):headnext比賽項(xiàng)目1第一名學(xué)校編號第二名學(xué)校編號第三名學(xué)校編號……項(xiàng)目編號;項(xiàng)目類型(男/女);名次表(數(shù)組):next第一名學(xué)校編號第二名學(xué)校編號第三名學(xué)校編號……注意:名次輸入以選擇為主,如列出所有比賽項(xiàng)目供選擇,選擇一個(gè)項(xiàng)目后,程序內(nèi)部自然知道他的編號和類型,然后允許用戶依次選擇第一名是哪個(gè)學(xué)校,第二名是哪個(gè)學(xué)校,以此類推。比賽項(xiàng)目221學(xué)校編號團(tuán)體總分團(tuán)體總分⑥團(tuán)體總分由系統(tǒng)自動統(tǒng)計(jì)獲得,不是直接輸入的數(shù)據(jù)。多個(gè)學(xué)校如何表示表示?通過數(shù)組int

school_num;/*在學(xué)校初始化時(shí)已定義*/struct

team_score

team_scores[24];22(三)結(jié)構(gòu)化設(shè)計(jì)主程序初始化成績錄入成績統(tǒng)計(jì)查詢計(jì)算每個(gè)學(xué)校在每個(gè)項(xiàng)目上得分,得分依據(jù)是名次方案,求和得團(tuán)體總分添加男子項(xiàng)目添加女子項(xiàng)目設(shè)定名次方案選擇名次方案自定義方案選擇比賽項(xiàng)目分別輸入該項(xiàng)目第1,2,…N名是哪個(gè)學(xué)校,這前N名學(xué)??梢垣@得分?jǐn)?shù)查詢某校團(tuán)體總分查詢學(xué)校信息;比賽項(xiàng)目信息功能拆分和調(diào)用關(guān)系添加參賽學(xué)校23結(jié)果-各比項(xiàng)目的名次*/int

main(int

argc,

char**argv){/*主函數(shù)*/Initial();/*初始化*/while(true){DisplayMenu();/*菜單*/choice=ReadChoice();switch(choice);{case

0:ReadRank();/*輸入比break;case

1:SearchTeamScore();/*查詢團(tuán)體總分*/……}}}24Initial(){/*初始化*/……ReadSchools();/*錄入?yún)W(xué)校信息*/項(xiàng)目信息*/ReadManItems();/*錄入男子比ReadWomenItems();ReadRankScores();……}DisplayMenu(){/*顯示菜單*/……}……25ReadSchools(){while(1){/*輸出提示信息*//*自動生成學(xué)校編號*//*讀入學(xué)校名字*//*將新學(xué)校添加到學(xué)校數(shù)組或鏈表中*//*按ESC返回*/}/*自動統(tǒng)計(jì)輸入的參賽學(xué)校數(shù)目*//*返回*/}……26(四)界面問題27

如果用字符界面,要提供按鍵菜單,如果設(shè)計(jì)成圖形界面菜單更好;

輸入的數(shù)據(jù),盡量用提供選項(xiàng)的方式,減少擊鍵量,提高界面友好度,比如,輸入比賽結(jié)果時(shí),先列出所有比賽項(xiàng)目,讓用戶選一個(gè);然后打印信息,指示當(dāng)前輸入哪一名次的學(xué)校,然后列出所有參賽學(xué)校,讓用戶選出獲得該名次的學(xué)校,而不是直接輸入學(xué)校名或者學(xué)校編號;

查詢輸出界面,輸出查詢結(jié)果到屏幕后,程序應(yīng)暫停,并等候鍵盤按鍵,用戶按任意鍵后,才返回上層菜單,這樣用戶才有機(jī)會看清楚查詢的結(jié)果。(五)數(shù)據(jù)存儲的問題(提高)

文件類型:數(shù)據(jù)對象一般都對應(yīng)為一個(gè)結(jié)構(gòu),因此用二進(jìn)制方式創(chuàng)建文件,逐個(gè)結(jié)構(gòu)寫到文件內(nèi)即可,例,每個(gè)參賽學(xué)校都是一個(gè)結(jié)構(gòu)體,可把該結(jié)構(gòu)整體寫入文件中,各個(gè)學(xué)校順序?qū)懙酱疟P文件;

項(xiàng)目的比賽結(jié)果,因?yàn)轫?xiàng)目的有效名次數(shù)目在初始化的時(shí)候決定,比賽結(jié)果的結(jié)構(gòu)體中,有效名次表只是一個(gè)指針,要把項(xiàng)目連同該項(xiàng)目的名次表正確寫入磁盤,需要做些額外處理。比如在文件中同時(shí)記錄結(jié)構(gòu)體大小,否則下次讀數(shù)據(jù)無法正確區(qū)分不同的結(jié)構(gòu)體。28系統(tǒng)分析總結(jié)29

1.理解題目,整理出系統(tǒng)大概運(yùn)行過程(文字描述或配圖);2.整理出需要的基本功能(文字描述);

3.整理出要處

溫馨提示

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

評論

0/150

提交評論