<noframes id="ixm7d"><noframes id="ixm7d"><rt id="ixm7d"><delect id="ixm7d"></delect></rt><noframes id="ixm7d"><rt id="ixm7d"><rt id="ixm7d"></rt></rt><rt id="ixm7d"></rt> <noframes id="ixm7d"><rt id="ixm7d"><delect id="ixm7d"></delect></rt><delect id="ixm7d"></delect><bdo id="ixm7d"></bdo><rt id="ixm7d"></rt><bdo id="ixm7d"></bdo><noframes id="ixm7d"><rt id="ixm7d"><rt id="ixm7d"></rt></rt><rt id="ixm7d"><rt id="ixm7d"></rt></rt><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><rt id="ixm7d"></rt> <noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><noframes id="ixm7d"><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><noframes id="ixm7d"><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d">

軟件課程設計總結報告范文

2023-09-15

軟件課程設計總結報告范文第1篇

本項目是將翻轉課堂教學理念融入項目式教學, 使學生通過課前對網絡課件的自主學習來減少教師課堂講授時間, 增加學生課堂參與項目實踐的時間, 以彌補項目式教學中課堂教學時間緊張的缺陷[1]。學生通過課前觀看制作好的課程視頻, 初步了解下次課要學的主要內容, 然后帶著問題或疑難進入課堂, 變被動聽課為主動學習, 這將收到處更好的學習效果。本項目的實施具有較強的理論及實踐意義及價值[2]。

(1) 從理論方面, 可以開拓新的視野, 拓展教學模式, 豐富教學方法, 使教學及學習理論更好完善。

(2) 在實踐方面, 通過對傳統教學方法、教學理念、教學模式、師生主體關系等多方面的改進, 彌補以前課堂教學的單一性、呆板性。同時通過更加活躍的課堂教學方式, 激發學生的創新性、個性化思維, 為培養創新性、應用型人才打下基礎。

二、現狀分析

《軟件工程》是計算機科學與技術專業的一門專業基礎課。通過該課程的學習, 強調用工程的思想、概念、原理、技術和方法來開發和維護軟件;要求學生了解結構化思想、掌握面向對象方法等軟件開發技術, 掌握面向對象的軟件需求分析、設計及實現的一般方法, 為今后更深入地學習和從事軟件工程實踐打下良好的基礎?!盾浖こ獭肥且婚T理論性極強的課程, 在本專業內已進行了五年的多輪教學。在2008年首輪課程教學中, 由于授課教師大都只注重知識的傳授, 而不重視學生對知識的內化, 出現教學內容枯燥、學生學習積極性差, 教師效果不好, 教師厭煩上該課的情況。后來自2009年開始, 經過本課程組多方改進, 通過多方式、多方法、多手段的教學改革, 如項目式、案例式、引導式教學法, 教學效果有了較大的提升, 但仍存在一些問題。 (1) 講課內容過于理論化。目前該課程大部分時間仍然是老師講授理論, 學生被動聽課。事實上, 軟件工程的理論并不是空洞的理論, 它的許多理論及規范均來自于實際需要和前人的經驗總結。但老師往往理論講得過多, 擔心學生沒有學夠, 結果老師累死了, 學生還不愿意聽。 (2) 理論與實踐聯系不夠。教學中存在理論與實踐脫節的現象, 沒有一個具體的項目串聯軟件開發的全過程。雖然在講述一些知識點中, 老師也有對應的項目及案例, 但不系統, 太零散。若能選擇一個較為完整的軟件開發項目, 圍繞該項目講述軟件開發的全過程, 效果將會更好。 (3) 課時壓縮嚴重?!盾浖こ獭吩瓕W時數為64學時, 但由于新的培養計劃要求, 將其壓縮為32學時。太少的學時數, 單靠傳統的課堂講授在時間安排上明顯不夠。 (4) 學生對所學知識沒有完全理解。學生對于老師所講的理論知識, 由于沒有實際項目支持, 掌握得不好, 往往剛剛講過的內容, 然后提問仍然沒有印象, 這說明學生對所學內容沒有內化。針對這種現狀, 本課程組現擬采取翻轉課堂理念, 將所學知識融為一個集中型項目 (圖書館管理的設計與開發) 中, 通過學習該軟件開發的全過程, 來完成自己的一個項目開發。在教學設計中, 將此項目開發的全過程錄成視頻, 讓學生先看視頻, 然后在其基礎上通過教師輔導、引導來完成教學。

三、項目實施方案及實施計劃

(一) 內容

(1) 選擇開發一個合適的項目案例——圖書館管理系統的設計與開發。本改革項目是基于翻轉課堂的項目式教學, 首先得選擇好一個集理論、實踐于一體的軟件開發項目, 通過對該項目的規劃、需求分析、項目設計、項目實現、項目測試及運行實施, 讓學生真實體驗軟件開發的全過程。 (2) 基于翻轉課堂的項目式教學模式的實踐及實施。將教學改革方案落實在課堂教學過程當中才是真正的教學改革。教學改革實施貫穿整個過程。通過兩輪的教學實踐, 實施改革的教學設計過程。 (3) 改革實施后的教學效果及教學方式、手段的評價。通過實踐之后, 一定要對教學效果進行評價。制定評價方案, 包括定性與定量、形成性評價和總結性評價, 對個人的評價和對小組的評價、自我評價和他人評價之間的良好結合。

(二) 改革目標

(1) 制定出符合個性化學習的《軟件工程》教學大綱; (2) 探索翻轉課堂下的項目式教學模式的教學過程及體系; (3) 構建基于翻轉課堂的項目式教學模式的評價體系; (4) 將改革成果應用到實際教學活動中, 全面推行個性化學習方法。

(三) 擬解決的關鍵問題

(1) 軟件系統開發項目及其子項目的選擇; (2) 新的教學方案的視頻資料的錄入; (3) 新的教學方案中, 教師的角色定位及教學方法的運用。實施方案、實施方法、具體實施計劃 (含年度進展情況) 及可行性分析。

四、實施方法

(一) 教學內容“項目化”

通過一個完整的項目 (圖書管理系統的設計與開發) , 將所學知識全部融入該項目中。通過對該項目開發的全過程, 讓學生有一種軟件開發身臨其境的感覺。

(二) 教學模式“翻轉化”

傳統教學過程通常包括知識傳授和知識內化兩個階段, 知識傳授是通過教師在課堂中的講授來完成, 知識內化則需要學生在課后通過作業+操作或者實踐來完成。在翻轉課堂上, 這種形式受到了顛覆, 知識傳授通過信息技術的輔助在課后完成, 知識內化則在課堂中經老師的幫助與同學的協助而完成。隨著教學過程的顛倒, 課堂學習過程中的各個環節也隨之發生了變化。

(三) 教學過程“階段化”

利用課內課外相結合的方式, 將教學過程分為課前預習階段、課堂討論階段和課后復習拓展階段, 達到培養學生理論聯系實際、提高實踐動手能力的目的。

(四) 教學考核“過程化”

將原來開卷筆試的考核改為基于過程、成果式的考核。對各個同學采取分組完成項目的方式, 在完成項目開發的過程中, 對各個階段形成的報告、文檔進行過程化考核, 達到全程跟蹤完成。

摘要:針對《軟件工程》課程理論性強, 課時少的情況, 用傳統的講授法難以達到預期的教學效果。本改革擬采取翻轉課堂下的項目化教學。選擇一個項目先進行課前設計, 讓學生帶著問題進入課堂。然后由教師引導開展課堂教學活動, 開展課堂活動包括任務分發、獨立探索、團隊協作、問題解答等。最后通過兩輪的教學實踐, 對課堂改革的教學效果進行評價。

關鍵詞:項目式,翻轉課程,軟件工程

參考文獻

[1] 鄧娜, 葉志偉, 阮鷗等.“721”人才培養模式下軟件工程翻轉課堂教學模式初探[J].教育教學論壇, 2016 (42) :184-185.

軟件課程設計總結報告范文第2篇

“工程基礎軟件與應用”是一門實用性很強的專業必修課, 通過網絡多媒體交互教學的形式介紹工程基礎軟件的基本原理、操作、以及豐富的案例教學, 充分利用現代化的教學手段和多種教學資源, 可以為學生提供良好的自主學習環境, 使學生更好地熟悉和掌握工程基礎軟件的使用, 為今后從事機電工程項目設計和科學研究打下良好的基礎。

本文采用J2EE技術設計實現了一套“工程基礎軟件與應用”交互式的網絡教學系統, 并對該平臺的設計思路、實現的關鍵技術等進行了詳細闡述。該系統提供了完整的網絡教學環境, 功能豐富、結構合理, 支持用戶規模大、具有高度的穩定性。為學生提供良好的自主學習環境, 使教學效果和教學效率得到了很大的提高, 具有較大的實用。

1 網絡教學系統的體系結構

J2EE所定義的開放式多層體系結構和對EJB、Servlet、JSP以及XML等技術的全面支持, 使軟件開發商們和企業在開發和配置企業內部網應用程序時能夠有效地利用J2EE結構。因此, 本文基于J2EE規范的體系結構, 將網絡教學平臺的體系結構分為四層, 分別是客戶層、Web層、應用服務層和數據資源層。J2EE四層結構包括:客戶層, 為教師、學生以及系統管理員提供方便直觀的可視化圖形接口;Web層, 響應客戶請求, 為客戶提供所請求的資料;業務層, 運行應用邏輯完成客戶請求的計算和資料操作;數據層, 存儲、管理資料信息。采用多層結構的方式, 將業務邏輯與其他分層分開, 大大減輕了Web層的負擔, 使系統具有很強的伸縮性、通用性、兼容性和可操作性, 每一層都能專注于特定的角色和功能。

2 網絡教學系統的功能設計

網絡教學平臺的主要功能是使教師可以利用多媒體、網絡技術實現高質量教學資源、信息資源和智力資源的共享與傳播;促進高水平的師生互動, 促進主動式、協作式、研究型的學習方式, 從而形成開放、高效的教學模式, 更好地培養學生的信息素養以及問題解決能力和創新能力;同時還能夠對學生的學習行為進行監控和了解, 提高教學資源的利用水平和管理水平。對學生而言, 通過該系統可以充分利用學校的網絡資源和知識資源, 促進自主學習和協作學習, 促進學習效果, 提高學習效率。

網絡教學系統的功能設計框圖如圖1所示。教學系統首頁提供所有通向系統內部頻道的豐富和多樣性的鏈接方式及通道。

(1) 信息中心:教師可以在此發布教學安排信息, 主要是有關上課、上機、考試時間安排及教學計劃等信息。學生可以及時查看發布的課程通知。還包括教師對作業的布置與分發, 學生作業的遞交, 作業批改和反饋。

(2) 在線學習:學生可以瀏覽教學大綱, 教學計劃, 教學課件等內容;教師可以在此完成課件的上傳、修改和刪除。為了使學生能夠系統地學習有關課程, 教學課件的基本內容以章節目錄編組, 不同章節的相關內容進行鏈接設計, 使各部分內容互相交叉, 融為一體。同時實現了教材的電子化和多媒體化, 課件在知識組織方面進行了全新的設計, 實現了人、機之間直觀、自然的交互, 極大的提高了學生的學習興趣。

學生在學習過程遇到問題時, 可隨時訪問該系統中的自動答疑子系統, 系統將根據學生提交的問題描述對知識庫進行搜索, 將對該問題的解答呈現給學生。

(3) 在線考試:本文針對“工程基礎軟件與應用”課程的特點完成了該模塊的開發。

教師的在這里可以管理題庫, 自動或人工試卷, 分配考生考試權限, 考場監控, 批閱試卷, 統計科目考試成績。

學生將教師生成的試卷以word形式的下載后, 利用計算機上的工程基礎軟件, 如Matlab、EWB等, 開始答題, 最后將解題步驟及運行結果保存到word文件中??忌枰獙⒃搘ord文件和程序源文件分別上傳到服務器。每個學生提交的文件都將被保存以備閱卷。

考試結束后, 教師能在線進行閱卷, 并能對所有成績記錄進行查詢和修改、刪除。另外, 還有成績統計、分析的功能。

(4) 師生交流:在這里, 可以完成類似于BBS討論區的功能??梢园粗黝}分為幾個板塊, 可以進行動態的管理。教師可以把問題放在BBS論壇上, 使每位學生都能對問題發表意見, 予以回復, 同學間彼此看到自己對這些問題的理解, 真正做到了師生互動、生生互動。教師通過查看網上的回答, 能及時全面地掌握每個學生的情況, 并針對出現的問題, 及時調整策略, 從而提高課堂教學效率。

另外, 還可以通過聊天室和實時通信工具, 如MSN、QQ等, 來進行面對面的視頻與語音的實時答疑交流。

(5) 資源中心:資源中心模塊將有關課程內容、相關資料壓縮成文件, 方便學生下載及下載后的仔細研究。

(6) 帳戶管理:包括系統管理員、教師和學生管理。其中管理員可以對所有人員進行添加、修改、刪除和查詢, 同時還可以對教師的所有權限進行分配。

3 系統實現的關鍵技術

基于J2EE的網絡教學系統主要的開發工具可以采用Dreamweave r+JBuilder+Weblogic+SQL Server 2000。SQL Server2000作為后臺數據庫來構架一個實用的應用程序。教學系統的體系結構采用Browser/Server模式, 將內容的生成和顯示進行分離;并利用可重用的組件 (Java BeansEJB) , 降低了開發組件的復雜程度, 加快了總體開發速度, 提高了系統質量。

JDBC技術在J2EE結構的中間層與數據層的數據源之間提供了數據庫獨立的開放性連接, 使應用程序不僅可以對基于SQL標準的關系數據庫系統進行訪問, 而且還可以對其他類型的數據源進行訪問。程序開發人員使用它可以連接任何提供了驅動程序的數據庫系統, 這樣就使程序員無需對特定的數據庫系統的特點和細節有過多的了解, 從而簡化和加快了開發過程。

4 結語

本系統采用了符合J2EE規范的體系結構, 具有良好的跨平臺性、安全性、可擴展性。測試結果表明, 本系統界面友好、使用簡單;課程導航設計明確、簡單;教學設計以學生為中心;提供在線答疑、考試等各種功能模塊和交流環境;具有優異的跨平臺性和良好的安全性。該教學系統的設計, 立足于實際課程教學和教學改革的需要, 可極大激發學生的學習興趣, 擴展學生掌握相關工程應用軟件的實際能力, 促進教學質量的提高。

摘要:為了改變傳統的教學方式, 提高教學的交互性和主動性, 利用J2EE技術架構了一個優良的“工程基礎軟件與應用”網絡教學系統, 并討論了系統設計的思想和實現的關鍵技術。測試結果表明, 該系統使用效果良好, 是一個較為完善的、穩定的、靈活的網絡教學系統, 能夠很好的提高教學效率和教學效果, 具有良好的應用前景。

關鍵詞:網絡教學系統,J2EE,B/S模式

參考文獻

[1] 董宛, 武強.基于J2EE結構的教學系統的設計與實現[J].計算機工程與應用, 2003, 39 (25) :229~232.

[2] 成科揚.基于J2EE體系結構的高校畢業生就業信息系統的設計研究[J].計算機應用研究, 2005, 22 (5) :214~216.

[3] 胡安韓, 余凌凡.基于J2EE架構的辦公自動化系統的研究與應用[J].計算機應用研究, 2005, 22 (9) :211~213.

[4] 郭春燕, 楊波.基于網絡的教學支撐平臺的設計與研究[J].濟南大學學報 (自然科學版) , 2004, 18 (1) :72~75.

[5] 黃曉平, 吳杰, 張世永.網絡教育管理系統架構設計[J].計算機工程與應用, 2003 (12) :18~22.

軟件課程設計總結報告范文第3篇

目前許多高職院校在該課程的教學方式上, 一直都是教師教、學生學, 學完之后再上機, 教師輔導這種傳統教學模式。其中以教師講授和演示操作為主, 學生被動學習, 課堂缺乏互動性, 教學與實踐相脫節達不到指定的教學目標。為此, 通過多年對該課程的教學嘗試, 完成以企業任務為主線的模塊化教學模式設計。

1 模塊化教學模式的設計原則

模塊化教學法是以現場教學為主、以技能培訓為核心的一種教學模式。模塊化教學就是先確定課程的職業崗位能力培養目標, 根據該目標將課程教學分解為若干模塊, 在各個模塊中以實際工作項目為導向, 設置典型工作任務, 學生在完成工作任務的同時學會和掌握本課程的基本知識和基本技能。從而達到預定的課程教學目標, 實現教學組織的靈活性。

為培養“實用型”和“操作型”技術人才的需要, 造就大批的復合型辦公應用人才, 設置模塊教學應遵循以下原則。

1.1 遵循實用性和系統性的原則

從現代辦公實際業務出發, 遵循實用和系統的原則, 科學合理地劃分教學內容模塊。通過對職業崗位分析選擇有代表性的典型工作項目, 將職業能力培養所需的理論知識和操作技能融于一個個工作任務中, 在強調知識的實用性同時, 也要注重內容的系統性。

1.2 設置模塊要遵循復合型原則, 培養復合型人才

現階段人才市場對高職畢業生的要求趨向于多元化的復合型人才。為了拓寬學生的就業渠道, 根據人才市場及經濟發展的需要, 本課程的模塊設置也要遵循復合型原則, 促使學生朝一專多能的方向發展。

1.3 設置模塊應遵循發展性原則, 注重知識更新

計算機技術日新月異, 隨著時代發展, 現代辦公事務復雜多樣。要滿足現代辦公需要就要隨時淘汰一些陳舊的知識和模塊, 不斷創建具有時代特色的模塊。

1.4 遵循模塊設置與技能考核掛鉤的原則

《辦公軟件應用》課程可以考取多種操作等級證書, 如有可能, 力爭使模塊內容與考核內容盡量一致。這樣在模塊教學結束后, 通過參加技能考核, 學生可以多取得一些證書, 為學生就業時提供方便。

2 模塊化教學模式的內容設計

2.1 按職業崗位能力培養需要劃分課程教學內容模塊

從現代辦公應用中所遇到實際問題出發, 以現代辦公應用常用的文字編輯排版、數據分析處理、演示文稿的綜合應用為主線, 科學合理地將課程教學內容劃分為windows操作系統技術模塊、word文字處理技術模塊、excel電子表格處理技術模塊、Power Point演示文稿技術模塊、計算機網絡技術模塊等五個模塊。

2.2 針對實際工作崗位設置工作項目, 注重應用能力的培養

本著既注重培養學生自主學習能力、創新意識, 又注意為今后的學習打下更好的基礎的原則, 精心選擇設置針對性、實用性極強的工作項目。學生每完成一個項目的學習, 就可以立即應用到實際中, 并具備觸類旁通地解決以后工作中遇到的問題的能力。

2.3 以工作任務為主線, 構建完整的教學設計布局

遵循由淺入深、循序漸進、可操作性強的原則進行組織, 并將知識點融匯于各個工作任務中。以若干個工作任務為載體, 形成一個種類多樣的任務群, 構建一個完整的教學設計布局, 并注意突出任務的趣味性、實用性和完整性。在引導學生完成每個工作任務后, 要進行相關的綜合實訓, 對于既是重點又是難點的知識, 還會在不同的工作任務中反復使用, 使學生能夠舉一反三, 靈活應用。學生在完成各項工作任務的同時, 就逐步掌握了辦公軟件的各項功能的應用。

2.4 交互式的技能訓練

這是本課程課堂教學改革的主體環節。在這一環節中, 教師要把課程的職業能力培養目標分解成為對應于知識點或技能要點的若干子目標。教師根據各個子目標來設計工作任務, 教授學生的掌握獨立操作技能。在交互式技能訓練中, 體現學生主體地位, 教師只起到主導作用, 學生學習以人機之間的交互式技能訓練為主要方式。在這個階段, 教師除了依據模塊中規定的教學目標進行必要的課堂講授和演示外, 學生絕大部分時間是在教師的指導下進行上機學習訓練, 重點培養學生自主學習能力, 以完全自然的、無拘束的方式學習特定的技能。通過上機實踐和作業設計等一系列有針對性的技能訓練和應用能力的培養, 使學生能將所學的知識和技能綜合運用, 并加以發揮, 直至應用到其它執行同樣任務的軟件上。整個教學過程注重能力培養, 學習任務作業化。這種教學方法大大提高了學生獨立操作的能力, 同時也為教師的因材施教、進行個性化指導提供了條件。

2.5 考核評價方法

這一環節是課堂教學改革的重點部分, 應建立一整套教學實施過程質量評估體系, 對模塊化教學實施過程中“教”與“學”雙方進行及時評價。教學評價可以分為過程評價、單元模塊評價、期末課程評價三個層次。過程評價在教學過程中進行, 以學生在工作任務實施的過程中表現為評價依據來評價學習情況;單元模塊評價在一個模塊學習結束時進行, 主要以模塊學習中學生完成的成果情況作為評價的依據。期末課程評價是對該課程教學實施過程的總體評價??赏ㄟ^綜合知識、技能測試或課程設計來完成。

3 模塊化教學模式的優越性

3.1 改革了傳統教學模式

跳出了依據教材而制訂教學計劃、實施教學進度的束縛, 走向了依據職業需求和產品生產過程來設計教學方案。

3.2 轉變了辦學理念

打破了以學科體系標準為主導來實施教學的框架, 走向了按職業資格技能標準為主導的教學實踐, 實現了基礎理論知識服務于專業技能需要的轉變。

3.3 在教學方法上實現了重大突破

打破了學校本位、課堂本位, 走出校門進入企業, 部分項目在車間開展現場教學, 實行教室、實驗室、實訓基地三位一體的立體教學。轉變教師角色, 充分發揮了學生的自主性、積極性和創造性。

3.4 有利于教師隊伍整體素質的提高

實踐性教學定位的重要性, 決定了教師隊伍必須做到“雙師型”的配置, 讓學校的教師走向工廠具有教師和技術工人雙重身份, 又要下大力引進工廠的專業技術人員走進教師隊伍。讓技術專家型教師隊伍參加技術性人才培養目標的制定與人才培養過程, 提高人才培養的實用性與教育水平。

總而言之, 模塊化教學模式具有較強的靈活性、針對性、現實性和經濟性, 適用于模塊性、操作技能性較強的課程教學, 對落實高職“以就業為導向, 以能力為本位”辦學指導思想以及教學改革、課程開發具有深刻的意義。

摘要:本文闡述了高職《辦公軟件應用》課程的模塊化教學模式設計以及實施模塊化教學改革的優越性。

軟件課程設計總結報告范文第4篇

20世紀30年代, 美國人柯利爾覺得工作在第一線的人員, 會根據實際情況, 做出分析和研究, 或許比等到專家研究后再實踐來的更快, 更理想。他認為這種行為就叫行動研究法。實際上, 我們從事一線工作的人們往往是自己解決問題, 而不是等到專家們研究出成果才取解決問題。那些急需解決的問題, 很難等到全面研究結果。工作人員一般出現問題時, 就會馬上提出解決方案, 邊試邊看效果, 不行再改, 再試, 直到解決問題。

教育行動研究是在20世紀50年代開始興起的。教育行動研究就是指有計劃有步驟的對教學實踐中產生的問題由教師或研究人員共同合作邊研究邊行動以解決實際問題為目的的一種科學研究方法。

二、第一輪

筆者任教的高校環境藝術專業開設兩個學期的計算機三維輔助設計課, 安排在二年級上學期和下學期。二年級上學期計算機三維輔助設計課的教學重點是3dsmax軟件基礎建模、材質、燈光、攝像機、渲染和室內效果圖;二年級下學期為學習vray插件, 包括vray材質、vray燈光、vray攝像機和vray室內效果圖制作及渲染。

筆者在第一輪行動研究前沒有教授過該年級的學生, 因此開課前對所教學生一年級軟件課程和相關專業課程的試卷和作業進行了分析, 并向一年級photoshop課程的兩位教師請教, 而且做了興趣調查問卷

調查問卷分析:

學情分析:在校大學生學過3dsmax軟件的占13%, 未學過的占87%。在教課時以大部分未學過的為主, 將練結合速度放慢些, 以求調動這些學生的積極性和適應期理解能力。適當提高難度滿足有些基礎的學生需求。

在教法上:100%的學生選擇結合實例的教學方式, 說明學生意識到軟件課程進行實例教學的好處;62%的學生傾向于局部到整體的教學方法;38%學生喜歡從整體到局部的教學方式。因此, 教學中以室內效果圖制作為主線, 以實例單體建模的方式, 把建模、材質、燈光、攝像機、渲染等等知識點貫穿進去。最后, 從整體出發進行室內效果圖制作教學。

在學法上:65%的學生喜歡分組教學, 有35%的學生不喜歡分組教學。在第一周基礎教學不分組, 學生可以充分的學習各個知識點。第二周開始分組后進行教學, 組間產生競爭, 組內進行協作, 發揮學生的互助能力, 培養他們的團隊精神。

所以這次目的是提高學生學習軟件的興趣和, 解決方法為通過從學生感興趣的熱點問題中選擇事物和身邊事物作為模型實例, 邊學例子邊學基礎知識, 用例子的形式把知識點串起來。

三、第二輪

分析小測驗:全體學生都能夠跟著學, 大家興趣比較好的, 沒有不學的。但有10%學生做的比較好, 10%學生做的很不理想, 大部分學生做的一般。

調查問卷分析:

從老師的知識面、專業知識、教學方法、課堂準備、內容設計、指導學生等方面來分析, 學生的滿意程度超過了85%。

掌握課堂所學內容80%的學生達到了55%, 另有一半的學生只掌握了課堂所學內容的50%。只就要求從學生實際出發, 降低教學速度和改變教學策略, 因材施教, 學的比較快的學生適當加大練習難度和數量, 對于掌握知識比較慢的學生適當的降低作業要求, 以提高課堂效率。

從課堂學到什么的來看, 實際應用技巧68%、理論知識45%、學習方法26%、思考方式21%, 依次成遞減。學生在課堂所掌握的知識成多元化發展, 然而學習方式、思考方式偏低, 在課堂教學和指導中加強學習方式、思考方式等方面的引導, 以此培養學生自學的能力。

說明學生掌握基礎知識比較好, 這輪目的主要是解決課堂知識掌握程度提高問題和個別學生理解緩慢問題, 并講授室內效果圖制作。

解決方法:

因為環境藝術專業特點, 大的案例講解一般持續時間比較長 (8個學時或更長) , 另外學生理解能力有快慢之分, 掌握技術速度也有不同, 為了解決這個問題, 對課程知識點采用案例的方式進行了系統的編寫, 歷時一年多現有小樣, 在學生中和課堂上應用, 發現問題和錯誤, 進行調整和改正, 然后形成word格式的電子講義的使用。學生可以在電腦或者手機上隨時隨地的對知識點進行溫習, 具有查字典一樣的功能, 學生反映良好, 并一直在提出要求和問題, 我們也在不停的修改和更新內容。

四、第三輪

作業分析:大部分學生做出墻體、門窗、頂、家具, 只有少部分同學速度比較慢和理解上有些問題。

調查問卷分析:

1) 調查結果顯示:認為教師對學生的要求嚴格的學生達到90%以上, 認為備課充分、教學內容熟悉、知識點講解清楚、教學方法靈活、教師知識廣博和信息量大、專業指導認真負責等等分別達到90%以上。

2) 調查結果顯示:通過這門課程的學習得到提高、基本掌握室內效果圖制作流程達到90%以上。

3) 授課的深淺度和內容量:非常適合15%、很適合44%、適合41;這門課程有非常大的收獲19%、很有收獲58%、有收獲23%。調查結果服從正態分布。大部分學生能夠理解效果圖制作過程, 并能掌握, 一小部分學生對效果圖制作的重點節點掌握不清, 如材質參數設置等等。

針對課堂上出現的狀況, 如學生記憶困難、易出錯、高頻率提問的一些典型知識點和案例, 采用翻轉課堂的方法, 也就是提前錄制好相關案例和知識點的視頻, 進行剪輯, 生成4到8分鐘的短片, 傳到app上, 讓學生自由下載和觀看。這樣學生可以更好的自學, 并把握住課上時間和老師進行探討問題。

通過幾輪的行動研究, 提出問題、分析問題、解決問題, 發現學生和老師的互動性更加頻繁, 問題往往能及時發現及時解決, 滿足了學生的學習熱情, 掌握了知識, 也成功的完成了教與學的任務。當然, 這里的教與學是師生互動的。

摘要:這以高校環境藝術專業學生為對象, 對計算機三維輔助設計課程教與學的行動研究。行動研究具有一線教師參與、強調合作、教與學的實踐三大特點。行動研究是側重一線老師參加、團結協作、教和學的實踐行動。該行動研究有效提高了軟件課程的教學效果和教師專業研究素養, 成效明顯。

關鍵詞:環境藝術,計算機三位輔助設計,行動研究,教和學的實踐

參考文獻

[1] http://baike.baidu.com/link?url=cJSXEMFJAcdGA_1LQvQY_csktrJbKrAFQk-1NmHz6gTLyMW2qm0pxJSsRSA9aI9D_0bF6qyiJa8xBj_GAv_HtJnEkpWX_d1LnKfs-osTDa_DkfbBDwEf0Q0-9C24tqoA.

[2] .王艷艷.王勇.循環模式視角下的大學英語聽力教學行動研究探析[J].外語教學理論與實踐 (FLLTP) .2013年第1期:49-54.

軟件課程設計總結報告范文第5篇

十、項目開發總結報告

1.引言............................. 1

1.1編寫目的 .......................... 1

1.2項目背景 .......................... 1

1.3定義 ........................... 1

1.4參考資料 .......................... 2

2.開發結果 ............................ 2

2.1產品 ........................... 2

2.2主要功能及性能 ..................... 2

2.3所用工時 .......................... 2

2.4所用機時 .......................... 2

2.5進度 ........................... 2

2.6費用 ........................... 3

3.評價............................. 3

3.1生產率評價 ...................... 3

3.2技術方案評價 ......................... 3

3.3產品質量評價 ......................... 3

4.經驗與教訓 ...............................

31.引言

1.1編寫目的

【闡明編寫總結報告的目的,指明讀者對象?!?/p>

1.2項目背景

【說明項目來源、委托單位、開發單位及主管部門?!?/p>

1.3定義

【列出報告用到的專門術語的定義和縮寫詞的原文?!?/p>

1.4參考資料

【列出有關資料的作者、標題、編號、發表日期、出版單位或資料來源,可包括:a. 項目經核準的計劃任務書、合同或上級機關的批文;

b. 項目開發計劃;

c. 需求規格說明書;

d. 概要設計說明書;

e. 詳細設計說明書;

f. 用戶操作手冊;

g. 測試計劃;

h. 測試分析報告;

i. 本報告引用的其他資料、采用的開發標準或開發規范?!?/p>

2.開發結果

2.1產品

【可包括:

a. 列出各部分的程序名稱、源程序行數(包括注釋行)或目標程序字節數及程序總計數量、

存儲形式;

b. 產品文檔名稱等?!?/p>

2.2主要功能及性能

2.3所用工時

【按人員的不同層次分別計時?!?/p>

2.4所用機時

【按所用計算機機型分別計時?!?/p>

2.5進度

【給出計劃進度與實際進度的對比?!?/p>

2.6費用

3.評價

3.1生產率評價

【如平均每人每月生產的源程序行數、文檔的字數等?!?/p>

3.2技術方案評價

3.3產品質量評價

軟件課程設計總結報告范文第6篇

2014—2015學年第1學期

學 院: 計算機學院 專業班級: 軟件工程5班 學 號: 130202051006 學生姓名: 陳洪陽 指導教師: 戴俊雅

成 績:

時 間:

2015年 1月5日

實踐1.猜數游戲 題目概述:

編程先由計算機“想”一個1~100 之間的數請人猜,如果人猜對了,在屏幕上輸出人猜了多少次才猜對此數,以此來反映猜數者“猜”的水平,則結束游戲;否則計算機給出提示,告訴人所猜的數是太大還是太小,最多可以猜10 次,如果猜了10 次仍未猜中的話,則停止本次猜數,然后繼續猜下一個數。每次運行程序可以反復猜多個數,直到操作者想停止時才結束。

程序設計概要與分析:

在源程序的開頭中包含stdlib和time庫函數,這樣我們就可以調用srand()和rand()函數,其中調用srand()提供一個種子,它是一個unsigned int類型,取值范圍是0~65535,然后調用rand(),根據提供給srand()的種子值返回一個隨機數,我們用rand()%100就把隨機決定的數值范圍確定在1~100之間,然后定義一個num,記錄這個隨機產生的隨機數,定義input,來儲存用戶輸入的猜數值,用times來記錄猜的次數,用do while循環來執行用戶猜的次數有10次,用if else條件語句來判斷用戶是否猜中,或猜得太大、太小,用一個while循環來做總嵌套,設置n的值一開始不為零,while循環的條件是當n的值不等于0,最后用戶就可以修改n的值來決定是否退出。

程序代碼:

#include #include #include

int main() {

int n=1; while(n!=0) {

srand((unsigned)time(NULL)); int num,input; int times=0; num=(rand()%100)+1; printf("在1~100間猜一個數 "); scanf("%d",&input); do{

if(input==num){

} else if(input>num){

} else if(input

}

}

} printf("你猜的數太小了,請再猜一個 "); scanf("%d",&input); times++; }while(times<9); if(times>=9)printf("你已經猜了10次都猜不中,你輸了 "); printf("繼續下一輪新的猜數請按1,退出請按0 "); scanf("%d",&n); return 0; 運行結果示例:

選擇繼續下一輪新的猜數,猜了10次都沒猜中

心得體會:

要懂得如何生成一個隨機數,并且要確定它的范圍在1~100之間,同時我們還要用do while循環體把猜數的次數控制在10次,每當我們輸入猜想的數時就要做出判斷,看看是否猜中,或者猜得太大或太小,輸出提示信息。也懂得了通過修改while判斷循環里面的條件,使得循環體里面的程序受我們修改的條件控制,可以繼續循環執行或者不再繼續執行。

實踐2.成績排名次 題目概述:

某班期末考試科目為數學(MT)、英語(EN)和物理(PH),有最多不超過30 人參加考 試,學號可以用輸入的序號代替??荚嚭笠螅?(1)計算每個學生的總分和平均分;

(2)按總分成績由高到低排出成績的名次;

(3)打印出名次表,表格內包括學生編號、各科分數、總分和平均分; (4)任意輸入一個學號,能夠查找出該學生在班級中的排名及其考試分數。

程序設計與概要:

定義存儲學生信息的結構體,包括學生編號,姓名,各科成績,總分,平均分還有名次。該結構體命名為student,然后定義結構體數組student s[],首先輸入準備錄入學生信息的人數,用amount來記錄人數,用一個for循環,從0~amount-1,依次輸入每個學生的各種信息,如學號,姓名,數學、英語和物理成績。用grade[]數組來存這三科的成績,如grade[0]存儲數學成績,grade[1]存儲英語成績。輸入之后,再用一個for循環把每個同學的總分求出來,總分再除去3求出該名同學的平均分。按總分成績由高到低排出名次,用兩個for循環嵌套,第一個循環從0~amount,表示從第一個同學開始拿出來比較,第二個循環從1~amount,表示除了之前取出的同學以外的每一個同學,如果前一位同學的總分小于后一個同學的話,就交換兩人的信息,第二個循環比較之后,便會把總分最高的同學的信息儲存在第一個,然后我們設置排名rank的值為1,rank++,進行篩選第二名的,之后對應地把rank的值設給學生的總分排名

打印學生信息,輸出表格的基本框架后,用一個for循環,依次輸出每個學生的信息,最后還有根據學號查詢學生信息,用戶輸入要查詢的學生學號,在for循環里面依次比較,如果找到學號與用戶輸入相同的,便輸出該名學生的信息。

程序代碼:

#include #include #include #define M 30 struct student { unsigned int num; char name[10]; int grade[3]; int sum; float ave; int rank; }; student s[M]; int amount;

void input(student s[]); void title();

void list(student s[]); int main() { input(s); int i=0; for(i=0;i

//要求1 計算總分 平均分

s[i].sum=s[i].grade[0]+s[i].grade[1]+s[i].grade[2];

s[i].ave=(float)s[i].sum/3; } //要求2 按總成績排序

int rank=1; student t; for(i=0;i

for(int j=i+1;j

{

if(s[i].sum

{

{t=s[i];

s[i]=s[j];

s[j]=t;

}

}

}

s[i].rank=rank;

rank++; } //要求3 打印名次表

title(); list(s); //要求4 查詢

int number; printf("請輸入你要查詢學生的學號: "); scanf("%d",&number); for(int i=0;i

if(number==s[i].num)

{

printf("學號 姓名 數學 英語 物理 總分 平均分 排名 ");

printf("%u %s %d %d %d %d %5.2f %d ",s[i].num,s[i].name,s[i].grade[0],s[i].grade[1],s[i].grade[2],s[i].sum,s[i].ave,s[i].rank);

} } system("pause"); return 0; }

void input(student s[]) { printf("輸入班上參加期末考試的人數(不大于30人)"); scanf("%d",&amount); printf("請依次輸入他們的學號,姓名,數學成績,英語成績和物理成績 "); for(int i=0;i

printf("第%d位同學的學號,姓名,數學成績,英語成績和物理成績 ",i+1);

scanf("%u%s%d%d%d",&s[i].num,s[i].name,&s[i].grade[0],&s[i].grade[1],&s[i].grade[2]); } }

void title() {

printf(" 學生成績表 ");

printf("----------------------------- ");

printf("學號 姓名 數學 英語 物理 總分 平均分 排名 ");

printf("----------------------------- "); }

void list(student s[]) { //n表示人數

int i;//rank=1; for(i=0;i

printf("%u %s %d %d %d %d %5.2f %d ",s[i].num,s[i].name,s[i].grade[0],s[i].grade[1],s[i].grade[2],s[i].sum,s[i].ave,s[i].rank);

printf("----------------------------- "); } }

運行結果示例:

確定錄入人數之后,依次輸入每個學生的信息

打印出名次表:

輸入學生的學號,查詢學生信息:

心得體會:

懂得了用結構體將不同的數據類型結合在一起,然后定義結構體數組,使得每個數組中的成員都具有不同的數據類型變量。而且同屬于一個數據類型,也可以定義數組來表示相同的類型但是有多個不同值,比如成績這個變量。也懂得了用for循環語句求總分,用for循環語句將數組從頭到尾輸出。

實踐3.單科成績統計 題目概述:

學生成績統計(一維數組)從鍵盤輸入一個班(全班最多不超過 30人)學生某門課的成績,當輸入成績為負值時,輸入結束,分別實

現下列功能:(1)統計不及格人數并打印不及格學生名單;

(2)統計成績在全班平均分及平均分之上的學生人數,并打印這些學生的名單; (3)以直方圖方式統計各分數段的學生人數及所占的百分比。形式如下: 分段 人數 圖形 <60 3(10%)*** 60‐69 8(…) ******** 70‐79 7(…) ******* 80‐89 8(…) ******** >=90 4(…) ****

程序設計與概要:

定義一個結構體stu,里面有學生的姓名和成績,然后定義一個s[]數組存放每個學生的姓名和成績,輸入函數中用一個for循環來依次輸入每個學生的姓名,還有輸入成績,用if條件語句判斷輸入的成績是否為負數,如果是就退出整個輸入函數,同時,我們還用if條件語句來判斷輸入的成績處于哪個分數階段,定義n

1、n

2、等整形變量來存儲各個分數段的總人數,變量num來存放輸入的學生共有多少人,變量sum是將每個學生的成績都加在一起,最后用sum/num就等于全班該門成績的平均分,我們用一個for循環語句,判斷每個學生的成績是否小于60分,如果是就輸出他的姓名,這樣就可以打印出不及格學生的名單了。同樣的,用一個for循環語句,判斷每個學生的成績是否大于等于平均分,如果是就變量count+1,用來記錄成績大于或等于平均分的學生人數,同時可將成績大于平均分的同學姓名輸出,這樣就打印出了成績在大于等于平均分的學生名單了。最后是輸出分數段,用前面記錄各個分數段人數的n值除以總人數再乘以100%就得出比例,每一個分數段都用一句for循環語句,根據n值的大小輸入對應數目的*。

程序代碼:

#include #include #define M 30 struct stu { char name[20]; int score; }; stu s[M]; int i=0,num=0; int n1=0,n2=0,n3=0,n4=0,n5=0; float sum=0,ave=0; int count=0; void input(stu s[]); void getnotpass(stu s[]);

void getavg(stu s[]); void percent(stu s[]); int main() { /*stu s[M]; int i=0,num=0; int n1=0,n2=0,n3=0,n4=0,n5=0; float sum=0,ave=0;*/ input(s); getnotpass(s); getavg(s); percent(s); return 0; } void input(stu s[]) { for(i=0;i

printf("請輸入第%d個學生的姓名和成績 ",i+1);

scanf("%s%d",&s[i].name,&s[i].score);

if(s[i].score<0)

break;

if(s[i].score>=0&&s[i].score<60)

n1++;

if(s[i].score>=60&&s[i].score<70)

n2++;

if(s[i].score>=70&&s[i].score<80)

n3++;

if(s[i].score>=80&&s[i].score<90)

n4++;

if(s[i].score>90)

n5++;

num++;

sum+=s[i].score; } printf("學生信息錄入完畢 "); } void getnotpass(stu s[]) { printf("不及格人數為:%d ",n1); printf("不及格人員名單如下: "); for(i=0;i

if(s[i].score>=0&&s[i].score<60)

printf("%s ",s[i].name); } printf(" "); ave=sum/num; } void getavg(stu s[]) { for(i=0;i

if(s[i].score>=ave)count++; } printf("成績在全班平均分及平均分之上的學生人數為:%d ",count); printf("成績在全班平均分及平均分之上的學生名單如下: "); for(i=0;i

if(s[i].score>=ave)

printf("%s ",s[i].name); } printf(" "); } void percent(stu s[]) { printf("各分數段的學生人數及所占的百分比如下: "); printf("分段 人數 圖形 "); printf("<60 %d(%.0f%%) ",n1,(float)n1/(float)num*100); for(i=0;i=90 %d(%.0f%%) ",n5,(float)n5/(float)num*100); for(i=0;i

運行結果示例:

依次輸入每個學生的姓名和成績,當輸入成績為負時,便退出整個輸入:

統計不及格人數還有打印不及格學生名單:

統計成績在全班平均分及平均分之上的學生人數,并打印這些學生的名單:

以直方圖方式統計各分數段的學生人數及所占的百分比:

心得體會:

懂得了在for循環體內用if條件判斷語句判斷輸入的值為負值時退出循環體。用變量計數器把符合要求的計數起來,最后可以得出符合要求的值共有多少個,也懂得了用for循環從所有值里進行篩選符合條件的值出來,更懂得了在求百分比時候要強制類型轉換,把int類型的計算結果給轉換為float單精度類型。

實踐4.函數與文件訓練 題目概述:

將實踐練習2 中的第2題利用函數的思想進行修改,并將學生的成績等信息輸出到文件中。要求函數參數中

包含結構體數組或指針。輸出到ASCII 文件的信息包括每個學生的學號、三門成績和名次,每人一行。

程序設計與概要:由于我的實踐2中就已經用了函數,所以我只需要把學生的成績等信息輸出到文件中。用FILE *fp,fp就代表我們要對其操作的文件,用open函數,根據文件的所在位置還有文件名,打開文件,并對應要求進行只寫的操作,如源代碼中fp=fopen("f: st udent.txt","w"),w代表寫入操作,char一個c[]數組,存放對應項的名稱,用fputs函數把數組里面的字符串寫入到文件里面去,用一個for循環,循環調用fprintf函數,把每個學生的學號,各科成績和排名都寫入到文件當中去,最后關閉文件即可。

程序代碼:

#include #include #include #define M 30 struct student { unsigned int num; char name[10]; int grade[3]; int sum; float ave; int rank; }; student s[M]; int amount;

void input(student s[]); void title(); void list(student s[]); int save();//輸出到文件中 int main() { input(s); int i=0; for(i=0;i

//要求1 計算總分 平均分

s[i].sum=s[i].grade[0]+s[i].grade[1]+s[i].grade[2];

s[i].ave=(float)s[i].sum/3; }

//要求2 按總成績排序

int rank=1; student t; for(i=0;i

for(int j=i+1;j

{

if(s[i].sum

{

{t=s[i];

s[i]=s[j];

s[j]=t;

}

}

}

s[i].rank=rank;

rank++; } save(); //要求3 打印名次表

title(); list(s); //要求4 查詢

int number; printf("請輸入你要查詢學生的學號: "); scanf("%d",&number); for(int i=0;i

if(number==s[i].num)

{

printf("學號 姓名 數學 英語 C語言 總分 平均分 排名 ");

printf("%u %s %d %d %d %d %5.2f %d ",s[i].num,s[i].name,s[i].grade[0],s[i].grade[1],s[i].grade[2],s[i].sum,s[i].ave,s[i].rank);

} } system("pause"); return 0; } void input(student s[]) { printf("輸入班上參加期末考試的人數(不大于30人)"); scanf("%d",&amount); printf("請依次輸入他們的學號,姓名,數學成績,英語成績和物理成績 ");

for(int i=0;i

printf("第%d位同學的學號,姓名,數學成績,英語成績和物理成績 ",i+1);

scanf("%u%s%d%d%d",&s[i].num,s[i].name,&s[i].grade[0],&s[i].grade[1],&s[i].grade[2]); } } int save() {

FILE *fp; fp=fopen("f:student.txt","w"); if(!fp) {

printf("can not open file! ");

exit(1); } char c[]="學號 數學 物理 英語 排名 "; fputs(c,fp); for(int i=0;i

fprintf(fp,"%u %d %d %d %d ",s[i].num,s[i].grade[0],s[i].grade[1],s[i].grade[2],s[i].rank); } fclose(fp); } void title() {

printf(" 學生成績表 ");

printf("----------------------------- ");

printf("學號 姓名 數學 英語 物理 總分 平均分 排名 ");

printf("----------------------------- "); }

void list(student s[]) { int i; for(i=0;i

printf("%u %s %d %d %d %d %5.2f %d ",s[i].num,s[i].name,s[i].grade[0],s[i].grade[1],s[i].grade[2],s[i].sum,s[i].ave,s[i].rank);

printf("----------------------------- "); } }

運行結果示例:

首先輸入準備錄入的學生人數,然后依次輸入每個學生的信息:

打印出按總成績排序后的學生信息表,以及根據學號查詢:

在f盤中找到文件并打開:

心得體會:

懂得了用如何運用文件,把向程序中輸入的數據全部輸出到文件中去。用FILE *fp,fp就代表我們要對其操作的文件,用open函數,根據文件的所在位置還有文件名,打開文件,并對應要求進行只寫的操作,如源代碼中fp=fopen("f: st udent.txt","w"),w代表寫入操作,char一個c[]數組,存放對應項的名稱,用fputs函數把數組里面的字符串寫入到文件里面去,用一個for循環,循環調用fprintf函數,把每個學生的學號,各科成績和排名都寫入到文件當中去,最后關閉文件即可。

實踐5. 實踐4(1)(2) 題目概述:

每位學生信息包括:學號、姓名、性別、學院、10 門成績。共有不超過100 位同學的信息存放在ASCII 文件StudentInfo.txt 中;不超過10 個學院的信息存放在CodeInfo.txt 中,性別代碼存放在SexInfo.txt 中,均為代碼和其對應的名稱。要求:

1. 定義至少包含以上學生信息和學院代碼的結構體類型和指針(或數組)變量。 2. 函數實現從文件中輸入信息到定義的數據中。

程序設計與概要:

定義一個結構體,名為student,里面的內容有學生的學號,姓名,性別,還有那個學院,以及10門成績,構造結構體數組,student stu[100],用于存儲100名學生的信息。定義讀取文件中內容的函數,FILE *fp代表文件,調用fopen函數,通過文件所在位置以及文件名打開特定的文件,r表示只對文件進行讀取,接著調用fscanf函數,把第一個位置的數據賦給學生的學號,用while循環體,循環的條件是調用feof判斷文件是否讀取結束,如果沒有則返回0,用!feof()來讓沒讀取結束的文件繼續讀取,接著再把同一行后面的數據分別賦給學生的姓名,性別代碼和所屬學院代碼,再用一個for循環,把同一行后面10個數據分別賦給學生的10門成績。一行讀取完畢后,意味著已經讀取完一個學生的所有個人信息,定義一個I值來存儲已經讀取學生的人數,每讀完一人就i+1,再讀取下一行的第一個數據賦給下一個學生作為他的學號。通過while循環把文件中的全部信息讀取出來賦給所有學生,函數最后返回的是讀取學生的人數i。定義結構體名為sxy,用于存儲性別代碼和代碼對應的性別,可以在后面輸出的時候,把對應的性別代碼轉變為用中文表示性別。定義一個結構體名為scode,用于存儲學院代碼和代碼對應的學院名稱,可以在最后輸出的時候,把學院代碼對應的學院名稱輸出。再定義一個輸出函數,通過for循環,從0~i-1,把i個學生的全部信息輸出,所以我們在主函數里面先調用讀取文件中內容的函數之后再調用輸出函數即可。

程序代碼:

#include #include #include int readData(char *filename,struct student *stu); int readDataxy(char *filename,struct sxy *s1); int readDataco(char *filename,struct scode *s2); void printStudent(struct student *stu,struct sxy *s1,struct scode *s2,int n,int m,int k); struct student { int id; char name[10]; int sexno; char sex[4]; int deptno; char dept[20]; int scores[10]; float ave;

}; struct sxy { int id; char sex[4]; }; struct scode { int id; char dept[20]; }; int main() { struct student stu[100]; struct sxy s1[2]; struct scode s2[10]; int n,m,k; n=readData("f:StudentInfo.txt",stu); m=readDataxy("f:SexInfo.txt",s1); k=readDataco("f:CodeInfo.txt",s2); if(n==-1||n==0)

return 0; if(m==-1||m==0)

return 0; if(k==-1||k==0)

return 0; printStudent(stu,s1,s2,n,m,k);

system("pause"); return 0; } int readData(char *filename,struct student *stu) { FILE *fp; int i=0,j; fp=fopen(filename,"r"); if(!fp) {

printf("error1");

return -1; } fscanf(fp,"%d",&stu[i].id); while(!feof(fp))//feof返回0 表示文件還沒結束 返回1表示結束

{

fscanf(fp,"%s%d%d",stu[i].name,&stu[i].sexno,&stu[i].deptno);

for(j=0;j<10;++j)

fscanf(fp,"%d",&stu[i].scores[j]);

++i;

fscanf(fp,"%d",&stu[i].id); } return i; } int readDataxy(char *filename,struct sxy *s1) { FILE *fp; int i=0; fp=fopen(filename,"r"); if(!fp) {

printf("error2");

return -1; } fscanf(fp,"%d",&s1[i].id); while(!feof(fp)) {

fscanf(fp,"%s",s1[i].sex);

++i;

fscanf(fp,"%d",&s1[i].id); } return i; } int readDataco(char *filename,struct scode *s2) { FILE *fp; int i=0; fp=fopen(filename,"r"); if(!fp) {

printf("error3");

return -1; } fscanf(fp,"%d",&s2[i].id); while(!feof(fp)) {

fscanf(fp,"%s",s2[i].dept);

++i;

fscanf(fp,"%d",&s2[i].id); }

return i; } void printStudent(struct student *stu,struct sxy *s1,struct scode *s2,int n,int m,int k) { int i,j; printf(" 學生信息統計 "); for(i=0;i

for(j=0;j

{

if(stu[i].sexno==s1[j].id)

{

strcpy(stu[i].sex,s1[j].sex);

}

} } for(i=0;i

for(j=0;j

{

if(stu[i].deptno==s2[j].id)

{

strcpy(stu[i].dept,s2[j].dept);

}

} } for(i=0;i

printf("%d%8s%4s%12s",stu[i].id,stu[i].name,stu[i].sex,stu[i].dept);

for(j=0;j<10;++j)

printf("%4d",stu[i].scores[j]);

printf(" "); } }

運行結果示例:

心得體會:

懂得了從文件中輸入信息到定義的數據中。就是要先構造與文件信息中相對應的結構體數組,然后用打開文件,需要知道文件的具體位置還有文件名,”r”就是表示只采取讀取操作,用while循環,循環條件的判斷標準就是用feof來判斷文件是否讀取到文件尾部,用fscanf把每個數據賦給對應的變量。其中最難解決的就是一開始學生文件里面的信息,學生性別用代號表示,學生所在學院也用代碼顯示,這樣一來我們把文件中的信息賦給定義好的結構體

數組之后,用for循環把結構體數組一個一個輸出后,顯示的是性別代碼和學院代碼,我們要把代碼都改為相對應的值,所以我們同樣定義性別的結構體數組,學院的結構體數據,之后用for循環把性別數組里面的代號和學生數組中的性別代碼想比較,用strcpy函數,相同的就把代碼對應的性別賦給學生數組里面定義好的性別字符數組。同理的,學院代碼相對同的就把代碼對應的學院名稱賦給學生數組里面定義好的學院字符數組。

實踐6.實踐4(3)(4)(5) 題目概述:

每位學生信息包括:學號、姓名、性別、學院、10 門成績。共有不超過100 位同學的信息存放在ASCII 文件StudentInfo.txt 中;不超過10 個學院的信息存放在CodeInfo.txt 中,性別代碼存放在SexInfo.txt 中,均為代碼和其對應的名稱。要求:

3. 函數實現排序(1):學生平均成績的降序排序,并輸出所有信息到顯示屏。 4. 函數實現排序(2):學生姓名的升序排序,并輸出所有信息到顯示器。

5. 函數實現查詢(1):根據學號查詢學生信息,并輸出該生信息,并輸出所有信息到顯示器。

程序設計與概要:

同上個實踐一樣構造結構體名為student,用來存儲學生的信息,如學生姓名,性別代號,學號,學院代號和成績等。構造結構體名為sxy用來存儲性別代號和性別名稱,構造結構體名為scode用來存儲學院代號和學院名稱。用三個不同的函數來實現讀取三個不同文件中的內容,把文件里面的內容放到以上構造的三個結構體里面去,定義輸出函數,用for循環把每個學生的性別代號同sxy結構體數組中的代號對應,把代號對應的性別名稱賦給每個學生的性別sex屬性值中,把每個學生的學院代號同scode結構體數組中的代號對應,把代號對應的學院名稱賦給每個學生的學院sdept屬性值中,最后再用一個for循環把從第一個學生到最后一個學生的全部信息輸出。實現要求3中的根據學生平均成績的降序排序,要求在從文件中讀取成績之后要計算出總分然后再除以10門成績得出平均分,然后定義一個函數,用雙重for循環,把第一個學生同其他學生比較平均分,如果比下一個同學的平均分低就交換兩個的位置,否則就繼續與下一個同學比較,直到第一層的for循環結束退出為止。再用for循環把排序后的學生信息從第一位到最后一位輸出即可。實現要求4中的根據學生姓名的升序排序,要求也是用雙重for循環,用函數strcmp比較兩個學生的姓名,把第一個學生的姓名同下一個同學比較,如何比下一個同學大,就交兩個學生的位置,否則就繼續與下一個同學比較,直到第二層的for循環結束,意味一個同學的位置確定,繼續第一層for循環的下一個同學,直到第一個層的for循環結束,就意味所有同學比較完畢,再用for循環語句把從第一個位置的同學到最后一個位置的同學,把他們的信息輸出。實現要求5的查詢要求,需要我們從鍵盤上輸入要查詢的學生的學號,然后用for循環從我們的學生結構體數組中遍歷一遍,如果有找到學號同輸入的學號相同的學生,便把他的所有信息輸出,否則則輸出不存在該名學生。

程序代碼:

#include #include #include int readData(char *filename,struct student *stu); int readDataxy(char *filename,struct sxy *s1); int readDataco(char *filename,struct scode *s2); void printStudent(struct student *stu,struct sxy *s1,struct scode *s2,int n,int m,int k); void search(struct student *stu,int n); void sortbyname(struct student *stu,int n); void sortbyave(struct student *stu,int n); struct student

{ int id; char name[10]; int sexno; char sex[4]; int deptno; char dept[20]; int scores[10]; double ave; }; struct sxy { int id; char sex[4]; }; struct scode { int id; char dept[20]; }; int main() { struct student stu[100]; struct sxy s1[2]; struct scode s2[10]; int n,m,k,b; while(1) {

system("cls");

printf("1.顯示學生信息 ");

printf("2.姓名升序排序 ");

printf("3.平均成績降序 ");

printf("4.學號查詢學生信息 ");

printf("0.退出 ");

printf(" 輸入需要查詢的序號:");

scanf_s("%d",&b);

switch(b)

{

case 1:

n=readData("f:StudentInfo.txt",stu);

m=readDataxy("f:SexInfo.txt",s1);

k=readDataco("f:CodeInfo.txt",s2);

if(n==-1||n==0)

return 0;

if(m==-1||m==0)

return 0;

if(k==-1||k==0)

return 0;

printStudent(stu,s1,s2,n,m,k);

break;

case 2:

sortbyname(stu,n);

break;

case 3:

printf("按平均成績降序排序如下:");

sortbyave(stu,n);

printStudent(stu,s1,s2,n,m,k);

break;

case 4:

search(stu,n);

break;

case 0:

return 0;

} system("pause"); } system("pause"); return 0; } int readData(char *filename,struct student *stu) { FILE *fp; int i=0,j; double sum; fp=fopen(filename,"r"); if(!fp) {

printf("error");

return -1; } fscanf(fp,"%d",&stu[i].id); while(!feof(fp))//feof返回0 表示文件還沒結束 返回1表示結束

{

fscanf(fp,"%s%d%d",stu[i].name,&stu[i].sexno,&stu[i].deptno);

for(j=0;j<10;++j)

{

fscanf(fp,"%d",&stu[i].scores[j]);

sum=stu[i].scores[j];

}

stu[i].ave=sum/10;

++i;

fscanf(fp,"%d",&stu[i].id); } return i; } int readDataxy(char *filename,struct sxy *s1) { FILE *fp; int i=0; fp=fopen(filename,"r"); if(!fp) {

printf("error2");

return -1; } fscanf(fp,"%d",&s1[i].id); while(!feof(fp)) {

fscanf(fp,"%s",s1[i].sex);

++i;

fscanf(fp,"%d",&s1[i].id); } return i; } int readDataco(char *filename,struct scode *s2) { FILE *fp; int i=0; fp=fopen(filename,"r"); if(!fp) {

printf("error3");

return -1; } fscanf(fp,"%d",&s2[i].id); while(!feof(fp)) {

fscanf(fp,"%s",s2[i].dept);

++i;

fscanf(fp,"%d",&s2[i].id); } return i;

} void printStudent(struct student *stu,struct sxy *s1,struct scode *s2,int n,int m,int k) { int i,j; printf(" 學生信息統計 "); for(i=0;i

for(j=0;j

{

if(stu[i].sexno==s1[j].id)

{

strcpy(stu[i].sex,s1[j].sex);

}

} } for(i=0;i

for(j=0;j

{

if(stu[i].deptno==s2[j].id)

{

strcpy(stu[i].dept,s2[j].dept);

}

} } for(i=0;i

printf("%d%8s%4s%12s",stu[i].id,stu[i].name,stu[i].sex,stu[i].dept);

for(j=0;j<10;++j)

printf("%4d",stu[i].scores[j]);

printf(" "); } } void search(struct student *stu,int n) { int m,col=0; printf("請輸入你要查詢學生的學號: "); scanf("%d",&m); for(int i=0;i

if(stu[i].id==m)

{

col=1;

printf("%d%8s%4s%12s",stu[i].id,stu[i].name,stu[i].sex,stu[i].dept);

for(int j=0;j<10;++j)

{

printf("%4d",stu[i].scores[j]);

}

} } if(col==0) printf("不存在該名學生信息 "); } void sortbyname(struct student *stu,int n) { student temp; for(int i=0;i

for(int j=0;j

{

if(strcmp(stu[i].name,stu[j].name)>0)

{

temp=stu[i];

stu[i]=stu[j];

stu[j]=temp;

}

} } printf("按姓名的升序排序如下! "); for(int i=0;i

printf("%8d%8s%4s%12s",stu[i].id,stu[i].name,stu[i].sex,stu[i].dept);

for(int j=0;j<10;++j)

{

printf("%4d",stu[i].scores[j]);

}

printf(" "); } } void sortbyave(struct student *stu,int n) { int i,j,flag; student s; for (j=0;j

flag=0;

for (i=0;i

{

if (stu[i].ave

{

s=stu[i];

stu[i]=stu[i+1];

stu[i+1]=s;

flag=1;

}

}

if(flag==0) break; } }

運行結果示例: 開始的菜單界面:

輸入1便會顯示文件中所有學生的信息:

輸入2便會實現學生姓名升序排序,且把排序后的學生所有信息輸出:

輸入3便會實現學生平均成績降序排序,且把排序后的學生所有信息輸出:

輸入4便會實現根據學號查詢學生信息:

心得體會:

懂得了運用雙重for循環比較全體成員,如題目中所要求的姓名升序排序還有平均成績降序,比較平均成績可以用值的大小進行比較,但是比較姓名的大小就要用strcmp函數進行比較,如果有需要交換位置的,就定義一個同類型的中間值,作為交換的協助者,幫助完成兩個值的交換,完成整個過程之后,把交換完成后的全體成員從頭到尾用for循環輸出即可。

參考文獻:

上一篇:如何提高培訓的實效性范文下一篇:讓奇跡在你生命中發生范文

91尤物免费视频-97这里有精品视频-99久久婷婷国产综合亚洲-国产91精品老熟女泄火