第一篇:C語言程序設計課程設計任務書
C語言程序設計課程設計任務書
項目4:
高校工資管理系統一、課程設計項目:
高校工資管理系統
二、目的與要求:
1、目的:
(1)要求學生達到熟練掌握C++語言的基本知識和技能;(2)基本掌握面向對象程序設計的基本思路和方法;
(3)能夠利用所學的基本知識和技能,解決簡單的面向對象程序設計問題。
2、基本要求:
(1)要求利用面向對象的方法以及C++的編程思想來完成系統的設計;
(2)要求在設計的過程中,建立清晰的類層次;
(3)在系統中至少要定義四個類,每個類中要有各自的屬性和方法;
(3)在系統的設計中,至少要用到面向對象的一種機制。
3、創新要求:
在基本要求達到后,可進行創新設計,如根據查找結果進行修改的功能。
4、寫出設計說明書
三、設計方法和基本原理:
1、功能要求
問題的描述(功能要求):
現一高校有五類職工:教師,實驗員,行政人員,教師兼職實驗員,行政人員兼職教師。為了實現工資發放的自動功能,現要求編寫程序來自動完成此功能。同時注意生成的相關數據結果以文件方式存放在硬盤中。程序應具備從鍵盤錄入,文件的可繼續錄入,任意職工的工資查詢(可由職工編號和職工姓名來實現),如若有職工由于工作調動,則可進行相對應的刪除動作。
相關信息: 每一學期將學校職工的本學期任職情況及上學期工作的相關情況輸入計算機,則本學期職工的月工資按程序處理后的結果發放,其中職工的工資計算方法如下:
其中工資的基本構成如下:
教師: 基本工資+課時費;
實驗員: 基本工資+實驗室補助;
行政人員: 基本工資+行政補貼;
教師兼職實驗員: 基本工資+課時費+實驗室補助;
行政人員兼職教師:基本工資+行政補貼+課時費;(其中:
1.課時費:教師每一學期的基本工作量為120,實驗員每學期基本工作量為70,行政人員沒有基本工作量,每節課時費為20元;課時費=(上學期工作量-基本工作量)*20;注意:如果上學期基本工作量沒完成,則其(上學期工作量-基本工作量)*20為負值。
2.基本工資:教師800元,實驗員650元,行政人員750元。
3.行政補貼:250元。4.實驗室補助:150元。
2、問題的解決方案:
根據系統功能要求,可以將問題解決分為以下步驟: a)寫出需求分析(該程序要實現什么什么樣的功能)b)分析系統中的各個實體之間的關系及其屬性和行為; c)根據問題描述,設計系統的類層次;
d)完成類層次中各個類的描述(包括屬性和方法); e)完成類中各個成員函數的定義; f)用戶界面的設計
g)分析系統功能模塊(系統流程圖)h)代碼編寫 i)功能調試;
j)完成系統總結報告以及系統使用說明書。
四、程序設計和調試:
五、答辯與評分標準:
1、完成基本功能:60分;
2、設計報告及使用說明書:10分;
3、設置錯誤或者按照要求改變結果:15分;
4、回答問題:15分。
六、報告:
包括系統設計要求,設計思路,系統功能模塊圖,系統流程圖,類的層次圖(包括類成員列表),調試過程,關鍵程序代碼,總結,參考書目等。
第二篇:《高級語言程序設計》課程設計任務書2
《高級語言程序設計》課程設計任務書
一、課程設計的目的
高級語言程序設計是本科工科類各專業的重要基礎課,課程以影響深遠的、傳統的、面向過程的優秀編程語言C語言為基礎,學習程序設計的基本概念和方法,通過本門課程學習,應使同學掌握高級語言的基本原理,熟練掌握程序設計的基礎知識、基本概念;掌握程序設計的思想和編程技巧。
課程設計是在學生已經具備了使用C語言編寫簡單的應用程序的能力,為使學生對C語言有更全面的理解,進一步提高運用C語言編程解決實際問題的能力,通過提出算法、指定輸入輸出來設計一個解決方案。經過該實踐環節,培養學生的探索精神和創新能力。通過答辯訓練學生的綜合表達能力。
二、課程設計教學的基本內容和要求
1、課程設計教學基本內容
高級語言課程設計不僅是對程序設計能力的綜合鍛煉,更是對團隊合作、軟件開發與項目管理過程的訓練。因此,課程設計根據題目的難度由小組合作完成,每個小組1-4人。整個課程設計分為以下幾個階段進行:選題與開題、系統設計、系統編碼實現、系統測試、撰寫課程設計報告、系統評價與驗收。
(1)選題與開題:題目可來自教師指定的參考題目,也可自由選題,特別是鼓勵有創新性的題目或是在已知題目的基礎上進行創新。
(2)系統設計:系統設計的任務是對所確定的題目從問題需求、數據結構、程序結構、難點及關鍵技術等方面進行分析,形成的系統設計方案,并進行詳細的分工。
(3)系統編碼實現:小組成員根據初步的系統設計方案,對系統編程實現。(4)系統測試:在各程序模塊編碼完成并集成后,就可以開始對整個系統進行測試。(5)撰寫課程設計報告:完成文檔整理,按照要求完成課程設計報告。(6)系統評價與驗收:通過小組答辯的形式對程序的功能進行評價與驗收。
2、課程設計教學的要求
參加本課程設計的學生,應當認真完成本課程設計的全部過程。并以最終課程設計成果來證明其獨立完成各種實際任務的能力。從而反映出理解和運用本課程知識的水平和能力。具體如下:
(1)數據組織方面盡量使用到:數組、鏈表、結構體、文件;(2)程序結構方面做到函數調用,盡量采用指針運算;(3)代碼編寫規范,形成良好的編程習慣;
(4)程序須有一定的健壯性和必要的提示信息,考慮問題的多種可能和邊界數據。(5)課設完成須進行答辯,提交課設報告電子稿、裝訂的打印稿。課設報告內容包括以下幾個方面:
? 程序的總體設計和算法分析。? 程序流程圖、函數說明 ? 源程序代碼清單 ? 測試數據和測試過程記錄 ? 遇到的問題及解決方法分析 ? 課程設計小結
三、課程設計的進度安排
系統整體設計和詳細設計
1天 系統編碼實現
1天 系統測試
1天 撰寫課程設計報告
1天 演示軟件和答辯
1天
四、課程設計的考核
評價是檢測學生理解問題和解決問題能力的一個重要手段,教師將根據學生提交的課程設計報告,嚴格檢查以下各項任務完成情況:
1、設計文檔中要求項目是否齊全。
2、程序中運行時的屏幕提示信息是否準確:
如果在程序執行期間有足夠的指導信息顯示在屏幕上顯示,這些用戶文檔可以是很簡要的,也許只限于解釋如何裝入并運行程序。
3、問題和或任務的陳述(描述問題,而且問題是合理原始的、應當包括輸入、輸出及其預期范圍)是否正確。
問題的解決方案采取由頂向下設計的形式,在適當的地方使用偽代碼,把整個解決方案劃分成若干模塊。
5、程序完成后的代碼應當加以注解。最少應清楚指出每一個模塊。
6、用于檢查程序的測試數據,或者對一個控制程序給出測試的例程。測試應考慮探索通過程序的幾條路徑,在合適的地方選擇打印輸出來。
7、程序的技術文檔:必須包含函數的原型說明和所用變量的全體清單
8、程序順利運行,結果正確;測試程序是否工作且滿足設計指標并評價其效率。
五、指導書、參考資料
《C程序設計》 譚浩強編 清華大學出版社
《C程序設計思想與方法》 尹寶林編著 機械工業出版社
六、其他
第三篇:課程設計《JAVA程序設計》任務書.
《 JA V A 程序設計》課程設計任務書 一.課程設計基本信息
課程名稱:《JAVA 程序設計》課程設計 學時:1周 學分:1學分
二.課程設計目的與要求
1.教學目的:本課程是學習《 Java 程序設計》后的綜合實踐課,使學生能夠比較深入的理解 Java 語言的特征及體系;熟練的掌握并會運用 Java 語言與面向對象程序設計的思想和方法設計應用程序解 決應用問題,積累程序設計的實踐經驗,為培養軟件技術高技能人才奠定基礎。
本課程是培養計劃中綜合性較強的實踐教學環節之一, 幫助學生掌握教學內容、培養學生運用知識 解決應用問題的實際動手能力、提高學生綜合素質有很重要的意義。
2.教學要求:本課程設計以設計一個或多個實際應用系統為目的,通過課程設計讓學生較全面的 掌握 Java 語法基礎知識、面向對象程序設計方法, 尤其是基于 Java 的應用程序設計的方法與技術, 能 夠運用 J2SE平臺,結合相應的數據庫系統開發應用程序,理論聯系實際,達到培養實踐操作技能的目 的。
學生要了解 Java 程序開發的一般過程,特別掌握系統分析與設計的基本方法,寫出系統分析與設 計報告,并能設計真實可用的應用系統。
三.課程設計內容與安排
根據老師提供的設計題目, 寫出系統分析與設計報告, 并建立原型系統。題目可以由教師與學生根 據實際情況商定,可參考的題目:圖書借閱管理系統、產品管理
系統、學生成績管理、學生信息管理、人事管理、人力資源管理系統、物流信息管理系統等。
1.主要設計內容如下:(1系統設計:包括系統需求分析、總體設計和功能設計,必要時使用圖表說明。(2數據庫設計與實現:包括數據庫的需求分析、數據庫的概念結構設計和數據庫的邏輯設計。
(3系統各模塊設計:包括用戶界面及相應功能算法等程序設計。2.教學安排
總課時 30課時,其中需求分析與系統設計、數據庫設計與實現、系統各模塊實現所以及系統集成 調試運行用時間建議各占 15%,15%,40%,20%的課時, 學生可根據具體情況調整, 利用 10%的時間完成課 程設計報告。
四.課程設計教學建議及要求
1.要求學生有一定的程序設計和數據庫基礎知識,由老師指定或學生自行組織形成項目小組,必 要時由多人開發一個項目, 其中需要指定負責項目的小組長控制項目進度。每個小組的項目開發過程應 該遵從項目管理規范。
2.嚴格要求每個學生按照規定時間進行設計,禁止無故遲到和曠課。3.要求學生有自我學習的能力,遇到問題要學會自我解決。
4.要求設計的界面美觀、合理、便于操作等,功能與實際應用系統緊密聯系,系統結構合理構思 巧妙、模塊化程度高等。
五.課程設計成績評定
課程設計成績由學生的出勤情況和程序設計情況各分別占 10%和 90%組成。程序的考核從界面、功 能實現、創新性、問題回答和課程設計報告等幾方面進行。
考核內容和比重表(參考
考核內容 出勤 界面 功能實現 創新 問題回答 設計報告 比重 10%15%30%15%10%20% 六.課程設計報告撰寫與提交
1.課程設計報告格式見本文后面所附 “課程設計報告模板” , 課程設計報告最終以電子稿形式提交, 如需打印另行通知。在課程設計正文中使用圖表時, 所有的圖必須有圖號和圖題, 所有的表必須有表的 名稱和編號。
2.對課程設計報告正文內容的提示說明如下:(1摘要(100-150個字: 主要包括設計內容、方法和結果,最后列出報告中用到關鍵字。(2課程設計介紹(要求 400-600個字: 對課程設計內容做綜述,介紹課程設計的目的和要求等內容。同時對課程設計小組成員構成 進行介紹,并說明自己在整個課程設計中將承擔的任務。
(3系統設計(要求 600-800個字: 主要介紹完成系統需求分析、總體設計和功能設計。必要時利用圖表說明。(4數據庫設計與實現: 主要介紹數據庫的需求分析、數據庫的概念結構設計和數據庫的邏輯設計。數據庫設計應利 用圖表說明。
(5系統各功能模塊設計(字數根據實際情況而定 : 主要介紹系統各功能模塊的界面設計及相應的功能程序設計。對于界面設計應的描述界面中所
使用的相應的組件列表,包括組件類別、組件 ID 值、組件作用等。同時應附相應界面設計狀 態的界面截圖和相應的運行界面截圖。如果涉及多個功能模塊,則應分別描
述。
(6課程設計總結和體會
主要對課程設計所做的工作進行總結, 同時描述課程設計后的體會, 包括專業技術方面的體會 和職業能力和職業意識方面的體會。另外對課程設計內容中存在的不足和改進意見進行闡述。(7致謝
在課程設計過程中,如果得到他人的幫助,則不要忘記致謝。(8參考文獻
要列出在課程設計過程中用到的主要參考文獻和站點。雖然看過, 但沒有用到的文獻或站點則 不必列出。參考文獻要與報告正文關聯,要不少于 4項。
(9附錄:帶注釋的程序清單
源程序清單只寫關鍵程序要有注釋。注釋是功能性的注釋,而不須要對語句或命令本身進行 注釋。
Java 課程設計參考題目
1、編寫一個記事本程序 要求:
用圖形用戶界面實現。
能實現編輯、保存、另存為、查找替換等功能。提示:使用文件輸入輸出流。
2、模擬龜兔賽跑 要求: 用圖形用戶界面實現。
能設置比賽時間,馬匹的數量等等。在任意時間段內馬匹的速度是隨機的。開始比賽之后以動畫顯示賽馬過程。提示:使用多線程
3、學生信息管理系統 要求: 使用圖形用戶界面
用數據庫建立 1或 2個學生信息表。(可以使用 txt 文件代替數據庫 能連接數據庫并實現查詢、增、刪、改等功能。
4、聊天小程序 要求: 使用圖形用戶界面。
能實現一個聊天室中多人聊天。
可以兩人私聊。提示:使用 socket 通信
5、ATM 柜員機模擬程序
要求:使用圖形用戶界面。當輸入給定的卡號和密碼(初始卡號和密碼為 123456 時, 系統能登錄 ATM 柜員機系統,用戶可以按照以下規則進行:
1、查詢余額:初始余額為 10000元
2、ATM 取款:每次取款金額為 100的倍數,總額不超過 5000元,支取金額不允許透支。
3、ATM 存款:不能出現負存款。
4、修改密碼:新密碼長度不小于 6位,不允許出現 6位完全相同的情況,只有舊密碼正確,新密碼符 合要求,且兩次輸入相同的情況下才可以成功修改密碼。
6、實現數據結構中二叉樹的遍歷演示過程 要求:使用圖形用戶界面
實現二叉樹的前序遍歷、中序遍歷、后續遍歷、按層遍歷的算法的演示過程。動畫演示盡量與程序執行 同步,人機交互、適于教學。
7、超市收銀系統 要求:使用圖形用戶界面。
由收銀員輸入顧客的會員卡卡號(若有卡、所購商品的貨號等。從數據庫中取出有關價格信息,再把
這些信息返回給收銀臺。同時把該收銀臺的銷售總量和有關種類商品的剩余量以及該持卡顧客的消費情 況交數據庫存儲以供查詢。
另外,對沒有卡的消費情況不記錄該顧客的消費情況等個人信息。如果一個未持卡顧客一次購物滿 200元,可為其發放一張會員卡,以后在該商場購物可向 9折優惠。
8、萬年歷
要求:使用圖形用戶界面。
實現日期與星期的查詢,其他功能自定義。
9、五子棋游戲 要求:使用圖形用戶界面 實現兩人游戲,能夠判斷輸贏
有 “ 開始 ” 按鈕,當選擇完棋盤大小后,按此按鈕進入對戰狀態。當有勝利者(垂直、水平、對角線連續 5子 ,顯示對話框,提示誰(黑還是白勝利了。若當棋盤滿了還無勝利者,顯示平局對話框。界面 上還要有 “ 復盤 ” 按鈕,可對完成的棋局進行復盤,例如每 3秒走一步。
10、日歷記事本
要求:帶有日程提醒功能的日歷。
1、顯示信息:用戶可以向前翻頁查詢前一個月的日期,也可以向后翻頁查詢下一個月的日期。
2、定時提醒:用戶可以針對某一天來添加,刪除和編輯這一天的日程提醒信息,當系統時間和提醒時 間相吻合時,給出具有提示信息的對話框。
3、查詢信息:用戶可以查詢到某個月的所有的提示信息。
11、電子英漢詞典
要求: 能夠編輯詞典庫中的信息
能夠實現英譯漢,漢譯英。(要考慮一詞多義
12、計算器小程序 要求:使用圖形用戶界面
能在鍵盤或鼠標上讀入數據,并完成加。減。乘。除計算。在屏幕上顯示一個主菜單。提示用戶輸入 相應的數字鍵,分辨執行加。減。乘。除計算功能和結束程序的功能。
13、圖的最小生成樹算法過程演示 要求:使用圖形用戶界面
使用菜單顯示普利姆和克魯斯卡爾最小生成樹的動畫實現過程, 動畫與算法的實現盡量同步實現, 便于 人機交互和教學。
14、加密與解密 要求:采用圖形用戶界面
1、給定任意一個文本文件,進行加密,生成另一個文件。
2、對加密后的文件還原。
15、小游戲 要求:。
程序隨機產生 20— 50根火柴,由人與計算機輪流拿,每次拿的數量不超過 3根,拿到最后一根為勝。(使用圖形界面
16、敏感詞匯分析 要求: 任意選擇一個文本文件,分析該文件,如果存在敏感詞匯(這些詞匯保存在 sentive.txt 文件中,每個詞 占一行 ,報告每個詞出現的次數。
17、基數排序過程動畫演示 要求:使用圖形用戶界面
基數排序算法的實現過程參照《數據結構》教材,動畫效果強。可以采用最高位優先算法實現,也可以 采用最低位優先算法實現,人機交互、便于教學。
課程設計時間安排 序 號
時 間 實習主要內容 實習地點 指導教師
1星期一 上午 概要設計:確定項目的實施方案、設 計程序模塊連接圖、完成模塊功能描 述
實訓室 劉延嶺
2星期一 下午 總體設計:設計程序流程圖,完成數 據庫設計、方法設計
實訓室 劉延嶺 3星期二 上午 詳細設計:實現系統功能 實訓室 劉延嶺 4星期二 下午 詳細設計:實現系統功能 實訓室 劉延嶺 5星期三 上午 詳細設計:實現系統功能
實訓室 劉延嶺 6星期三 下午 詳細設計:實現系統功能 實訓室 劉延嶺 7星期四 上午 系統功能完善,整合測試 實訓室 劉延嶺 8星期四 下午 撰寫設計文檔 實訓室 劉延嶺 9星期五 上午 撰寫設計文檔 實訓室 劉延嶺 10星期五 下午 檢查驗收 實訓室 劉延嶺
計算機與信息工程系
《 JAVA 程序設計》課程設計(字為黑體四號粗 課程設計題目(黑體二號粗 專業 計算機 班級 1001班 學號 02 姓名;劉騰帥 E-Mail 電話 *** 時間
(字為黑體四號粗 承德石油高等專科學校(字為楷體四號粗
(報告正文為宋體,多倍行間距:1.25倍 摘要:(四號粗
內容(小四號字
關鍵字:(小四號粗 內容(小四號字 1.課程設計介紹(四號粗
對課程設計內容做綜述,介紹課程設計的目的和要求等內容。同時對課程設計小組成 員構成進行介紹,并說明自己在整個課程設計中將承擔的任務。2.系統設計(四號粗 內容(小四 2.1需求分析 2.2總體設計 2.3功能設計
3.系統各功能模塊設計(四號粗(注:必要時應分模塊(頁面描述 內容(小四
4.1界面設計(必要時使用用戶組件 4.2功能實現
4.課程設計總結和體會(小四號粗 內容(小四 5.致謝(四號粗 參考文獻(四號粗
內容(小四內容如下例所示:
小四
([1]博彥科技.編程高手 J2EE.北京大學出版社,2000.94-97 [2]http://www.tmdps.cn/learning/lesson/xinxi/20030401/lesson.asp 附錄(注:另起一頁
1.xx 功能模塊(頁面相關事件或方法程序清單(1 xx 事件或方法(2 xxxxxxxxxxxx 2.xx 功能模塊(頁面相關事件或方法程序清單(1xx 事件或方法(2 xxxxxxxxxxxx 成績評定
出勤情況(10分 界面設計(15分 功能實現(30分 創新點(15分 答辯情況(10分 設計報告(20分 設計評語
指導教師
第四篇:語言程序設計課程設計指導書
匯編語言程序設計課程設計指導書
一、課程設計的目的
本課程設計是《匯編語言程序設計》課程的后繼教學環節,其宗旨是使學生通過對一個較大型的、綜合性的應用程序進行閱讀、修改、添加功能等工作,對匯編語言程序設計有更進一步的認識,提高編程技巧和閱讀理解復雜程序的能力。
二、課程設計的任務要求
根據所給的“Reader.asm”應用程序框架,在此基礎上修改和添加功能。1.基本任務: ?
? ? ? 認真閱讀“Reader.asm”源程序,理解程序每一條指令在程序中的作用; 用→、←鍵在窗口內左右移動文本;
用PgDn,PgUp鍵上下快速移動文本(每次移半幀); 設計專用鍵放大、縮小窗口,改變窗口位置。
2.擴展任務: ? ? 對文本內的Tab字符(ASCII碼09H)進行處理:遇到Tab鍵,下一個字符顯示在下一個表站開始處(每個6個字符一個表站);
設置狀態行,顯示當前文件名、文本位置(仿垂直滾動條)。
3.自行設計的其它任務:
三、課程設計報告的內容
1.課程設計題目名稱、班級號、學號、學生姓名和課程設計起止日期(封面);
2.上海應用技術學院課程設計任務書(下發)3.課程設計目的和要求;
4.課程設計任務內容; 5.詳細設計說明; 6.軟件使用說明; 7.課程設計總結;
8.附錄:1 參考文獻 2 程序清單(電子版)。
四、課程設計詳細設計說明及其它要求
1.2.3.4.5.6.分析原“Reader.asm”程序結構:每個模塊說明,較大模塊程序流程圖; 對你已經實現的功能做詳細的說明,并附上流程圖及部分程序清單; 自己對該“文件閱讀器”的進一步設想;
對于有設想但最終未實現的功能的大致編程思路的闡述; 論述在設計過程中遇到的并且對你具有啟發性的問題; 交課程設計報告手寫版,源程序交電子版。
五、評分標準
1.根據平時出勤情況和設計時的工作情況;
2.根據課程設計程序的完成情況,必須有可運行的軟件。3.根據課程設計報告的質量。課程設計報告不能抄襲,抄襲判為不及格。4.在題目要求之外附加具有實用性的功能。
六、課程設計工作進度計劃
星期一:課程設計介紹,源程序閱讀理解,功能設計,程序編寫。星期二:功能設計,程序編寫。
星期三:程序編寫與調試,課程設計報告撰寫。星期四:程序編寫與調試,課程設計報告撰寫。
星期五:程序最終修改,課程設計報告撰寫,提交報告并答辯。
七、主要參考資料
[1]楊文顯.匯編語言程序設計簡明教程.北京:電子工業出版社,2005
八、附錄
《文本閱讀器》匯編語言源程序清單
;Title: Assemble Program “Reader.asm”
;Read a file from disk, display it?s contents on screen;Move the content on screen by up/down arrow keys;========================== MYDAT SEGMENT MAXLEN DW 1000;最大行數 INDEX DW 1000 DUP(?);行索引 LENCT DW 0;實際行數 CURLINE DW 0;當前頁第一行行數 CCOUNT DW ?;文件總字符數
TOP DB 5;窗口左上角行數 LEFT DB 5;窗口左上角列數 WS DW 60;窗口寬度 HS DW 15;窗口高度 FG DB 17H;文字屬性 FGB DB 1FH;窗口邊框屬性
MSG1 DB 'File:$';輸入文件名提示 MSG2 DB 'File open error!$';打開文件出錯時提示 MSG3 DB 'File read error!$';讀文件出錯時提示 FILENA DB 80,?,80 DUP(?);輸入文件名緩沖區
;定義功能鍵和相應的處理程序
;每個功能定義兩個數據:掃描碼,處理程序入口地址;該數據由DOSUB子程序使用
KEYSUB DW 48H, SUB1 , 50H, SUB2, 0
MYDAT ENDS
;==========================
BUFFER SEGMENT PARA DB 65535 DUP(?);文件緩沖區,文件最大為64K BUFFER ENDS
;==========================
SSEG SEGMENT STACK ?STACK?;堆棧段
DW 100 DUP(?)SSEG ENDS
;==========================
;宏定義 DISPINIT: 設置顯示器顯示方式 DISPINIT MACRO MOV AX,0003H;文本方式 25x80 INT 10H ENDM;----------;宏定義 PROMPT: 顯示字符串 PROMPT MACRO OUTMSG LEA DX, OUTMSG MOV AH, 09H;INT 21H;ENDM;--------;宏定義KRYIN: 從鍵盤讀入一個字符 KEYIN MACRO MOV AH,0;讀鍵
INT 16H;AH中為掃描碼
ENDM;==========================;代碼段開始 CODE SEGMENT
ASSUME CS: CODE, DS: MYDAT, ES: BUFFER, SS: SSEG
START: MOV AX, MYDAT;裝載DS,ES MOV DS, AX MOV AX, BUFFER MOV ES, AX
DISPINIT;顯示方式初始化
CALL READFILE;讀入文件
JC DONE
CALL CLIST;初始化索引行
CALL CLSCREEN;清屏
CALL CREWIN;創建窗口
CALL SHOWCUR;顯示當前頁
NEXT: KEYIN;進入主程序: 讀鍵盤
CALL COMMAND;命令分析與處理
JNC NEXT;非x鍵繼續循環
DONE: CALL CLSCREEN;清屏
MOV AX, 4C00H INT 21H;退出
;-------;子程序READFILE: 提示并讀入文件名,將文件讀入緩沖區 READFILE PROC PROMPT MSG1;CALL SIN;讀入文件名
MOV AX, 3D00H MOV DX, OFFSET FILENA+2 INT 21H;打開文件(讀)JC GETERR1;打開文件出錯轉GETERR1 PUSH DS PUSH ES POP DS;將DS指向文件緩沖區段
MOV BX, AX;BX=文件號
MOV AH, 3FH;讀文件 MOV CX, 0FFFFH;讀入最多64K-1 MOV DX, 0;DS: DX指向文件緩沖區
INT 21H POP DS JC GETERR2;讀入文件出錯轉GETERR2 MOV CCOUNT, AX;實際讀入字符數存入CCOUNT中
CLC JMP GETFILEXIT
GETERR1: PROMPT MSG2;讀入文件出錯處理
KEYIN STC JMP GETFILEXIT;
GETERR2: PROMPT MSG3;打開文件出錯處理
KEYIN STC
GETFILEXIT: RET
READFILE ENDP;-------;輸入文件名子程序 SIN PROC MOV AH, 0AH MOV DX, OFFSET FILENA INT 21H;輸入文件名
XOR CH, CH MOV CL, FILENA+1;取文件名長度
LEA BX, FILENA+2 ADD BX, CX;計算字符串結尾地址
MOV BYTE PTR [BX], 0;在字符串尾部加0 RET SIN ENDP;-------;索引行初始化子程序 CLIST PROC MOV CX, CCOUNT JCXZ CSTX;文件為空結束
MOV SI,0;文件緩沖區字符指針
MOV DI,0;索引行指針
MOV DX,0;行數計數
MOV INDEX[DI], 0 INC DX;假設文件至少有一行 CST1: CMP WORD PTR ES:[SI], 0A0DH;判斷是否為回車換行符
JNZ CST2;不是行結束,轉CST2 INC DX;行數加一
ADD SI, 2;跳過回車換行符
ADD DI, 2;索引行指針加一
MOV INDEX[DI], SI;指向本行開始地址
CMP DX, MAXLEN JNC CST4;是否超過最大行,超過轉CST4,結束
JMP CST3;CST2: INC SI;文件緩沖區字符指針指向下一字符 CST3: LOOP CST1;CST4: MOV LENCT, DX;保存行數到LENCT中 CSTX: RET CLIST ENDP;-------;清屏子程序
CLSCREEN PROC MOV AX, 0600H;清屏
MOV CX, 0 MOV DH, 50 MOV DL, 79 MOV BH, 07H INT 10H RET CLSCREEN ENDP;------;顯示當前頁子程序 SHOWCUR PROC MOV DH, 0;窗口最頂行
MOV SI, CURLINE;取當前頁第一行行數
MOV CX, HS;窗口的第一行和最后一行為邊框,SUB CX, 2;所以能夠顯示內容的高度為窗口高度減二 SC1:
CALL SHOWLINE;顯示一行
INC DH;窗口下一行
INC SI;文件下一行
MOV AX, LENCT;CMP SI, AX;文件是否顯示完
JNC SC2;顯示完則轉SC2 LOOP SC1 JMP SC1X SC2: JCXZ SC1X;該頁顯示滿則結束
;該頁沒有顯示滿,則用空行填滿該頁 SC3: PUSH CX PUSH DX CALL SHOWSPLINE;顯示空行
POP DX POP CX INC DH LOOP SC3 SC1X: RET SHOWCUR ENDP;------;顯示一行子程序
;輸入:SI=顯示行行號;DH=窗口中的行號 SHOWLINE PROC PUSH CX PUSH SI PUSH DX PUSH AX
ADD DH, TOP;INC DH;實際行數=窗口左上角行數+DI+1 MOV DL, LEFT;INC DL;實際列數=窗口左上角列數+1 CALL VADD;
MOV CX, WS;窗口的第一列和最后一列是邊框,SUB CX, 2;所以能夠顯示內容的寬度為窗口寬度減二
SHL SI, 1;行索引為字類型,所以乘二
MOV SI, INDEX[SI];取該行第一個字符在文件緩沖區的地址
PUSH DS MOV AX, 0B800H MOV DS, AX;DS指向顯示緩沖區段地址 SL1: MOV AX, ES:[SI] CMP AX, 0A0DH JZ SL2;如果是回車換行,則該行結束
MOV DS: [DI], AL;顯示一個字符 ADD DI, 2;INC SI;取下一個字符
LOOP SL1;JCXZ SLX;該行正好顯示完,則結束,否則用空格填滿
SL2: MOV BYTE PTR DS:[DI], ' ';該行沒有顯示滿,則用空格填滿
ADD DI, 2 LOOP SL2
SLX: POP DS
POP AX POP DX POP SI POP CX
RET SHOWLINE ENDP;--------;顯示空行子程序
;輸入:DI=窗口中的行號 SHOWSPLINE PROC;
MOV AX, HS;SUB AX, 2;CMP DH, AL;顯示的空行是否超出最低行
JNC SSLX;如果是,則轉SSLX ADD DH, TOP;INC DH;實際行數=窗口左上角行數+DI+1 MOV DL, LEFT;INC DL;實際列數=窗口左上角列數+1 CALL VADD;
MOV CX, WS;窗口的第一列和最后一列是邊框,SUB CX, 2;所以能夠顯示內容的寬度為窗口寬度減二
PUSH DS MOV AX, 0B800H MOV DS, AX SSL1: MOV BYTE PTR DS:[DI], ' ' ADD DI, 2 LOOP SSL1 POP DS SSLX: RET SHOWSPLINE ENDP;-------;創建窗口子程序 CREWIN PROC PUSH ES MOV AX, 0B800H;顯示緩沖區地址為B800:0 MOV ES, AX;
MOV DH, TOP MOV DL, LEFT;窗口左上角行列數
MOV CX, HS;窗口高度(行數)CW1: PUSH DX;CALL VADD;計算地址
PUSH CX;MOV CX, WS;窗口寬度(列數)
MOV AL, FG;取屬性 CW2: MOV BYTE PTR ES:[DI], ' ';送空白字符
INC DI;MOV BYTE PTR ES:[DI], AL;送屬性
INC DI;LOOP CW2;
POP CX POP DX INC DH;行數加一
LOOP CW1
CALL DRAWB;畫邊框
POP ES RET CREWIN ENDP;-;畫邊框子程序 DRAWB PROC PUSH DX PUSH CX PUSH BX PUSH AX MOV BL, FGB MOV DH, TOP MOV DL, LEFT CALL VADD
;畫左上角角框
MOV BYTE PTR ES:[DI], 0C9H INC DI MOV BYTE PTR ES:[DI], BL INC DI
;畫第一行邊框
MOV CX, WS SUB CX,2 DB1: MOV BYTE PTR ES:[DI], 0CDH INC DI MOV BYTE PTR ES:[DI], BL INC DI LOOP DB1
;畫右上角角框
MOV BYTE PTR ES:[DI], 0BBH INC DI MOV BYTE PTR ES:[DI], BL
;畫第二行到倒數二行左右邊框
MOV DH, TOP MOV DL, LEFT INC DH MOV CX, HS SUB CX, 2 DB2: PUSH DX CALL VADD MOV BYTE PTR ES:[DI], 0BAH INC DI MOV BYTE PTR ES:[DI], BL DEC DI MOV AX, WS DEC AX SHL AX, 1 ADD DI, AX MOV BYTE PTR ES:[DI], 0BAH INC DI MOV BYTE PTR ES:[DI], BL POP DX INC DH LOOP DB2;取邊框屬性;窗口左上角行列數;計算地址;角框╔;因為去掉了左右角框,所以寬度減二;上下邊框═;角框╗;從第二行開始;第一行和最后一行沒有左右邊框,;所以高度減二;;計算左邊框地址;左右邊框║;;;;計算右邊框地址;;下一行;
;畫左下角角框
MOV DH, TOP;MOV DL, LEFT;MOV AX, HS;DEC AX;ADD DH, AL;左下角行數=右上角行數+窗口高度-1 CALL VADD MOV BYTE PTR ES:[DI], 0C8H;角框╚
INC DI MOV BYTE PTR ES:[DI], BL INC DI
;畫最低行邊框
MOV CX, WS;SUB CX, 2;因為去掉了左右角框,所以寬度減二 DB3: MOV BYTE PTR ES:[DI], 0CDH;上下邊框═
INC DI MOV BYTE PTR ES:[DI], BL INC DI LOOP DB3
;畫右下角角框
MOV BYTE PTR ES:[DI], 0BCH;角框╝
INC DI MOV BYTE PTR ES:[DI], BL
POP AX POP BX POP CX POP DX
RET DRAWB ENDP;------;計算窗口內某行列位置對應顯存地址;輸入:DH=行 DL=列;輸出:DI為顯存地址 VADD PROC MOV AL, 80;MUL DH;XOR DH, DH;ADD AX, DX;行數×80+列數
SHL AX, 1;乘2,因為每個字符占兩個字節
MOV DI, AX RET VADD ENDP;--------;命令分析子程序 COMMAND PROC CMP AH, 2DH;2DH為x鍵的掃描碼
JNZ COM1;不是x鍵,轉COM1 STC;值x鍵標志
RET COM1: CALL DOSUB;轉命令散轉子程序
CLC RET COMMAND ENDP;--;命令散轉子程序 DOSUB PROC MOV AL, AH MOV AH, 0;將鍵掃描碼放入AX中
MOV BX, OFFSET KEYSUB;BX指向KEYSUB DOSUB1: CMP WORD PTR [BX], 0 JZ DOSUBX;KEYSUB表查完,即沒有找到轉DOSUBX CMP AX, [BX] JZ DOSUB2;找到掃描碼轉DOSUB2 ADD BX, 4 JMP DOSUB1;DOSUB2: ADD BX, 2 MOV BX, [BX];取處理程序入口地址
JMP BX;轉處理程序 DOSUBX: RET
;SUB1和SUB2均為功能鍵處理程序;處理完后應使用JMP DOSSUBX結束
;上箭頭鍵處理程序 SUB1: CMP CURLINE, 0 JZ SUB1X;已到第一行,結束
DEC CURLINE;向上一行
CALL SHOWCUR;顯示當前頁 SUB1X: JMP DOSUBX
;下箭頭鍵處理程序 SUB2: MOV AX, LENCT DEC AX DEC AX;至少顯示一行
CMP AX, CURLINE;已到最后一行
JZ SUB2X INC CURLINE;向下一行
CALL SHOWCUR;顯示當前頁 SUB2X: JMP DOSUBX
DOSUB ENDP;--------
CODE ENDS
;========================= END START
第五篇:2012語言課程設計任務書
河南工程學院
《匯編語言》 課程設計任務書
適用專業:
計算機科學與技術
適用班級: 本科
2014年12月20日
《匯編語言》課程設計任務書
一、課程設計目的與任務
匯編語言課程設計是本科教學過程中重要環節。通過課程設計,培養計算機專業學生,運用所學知識,進一步提高學生匯編語言綜合編程能力和程序調試技能。并能夠使學生更加熟練運用匯編程序設計語言,來解決計算機應用領域實際問題的能力,以及為設計其它應用軟件提供幫助,進而提高學生的軟件設計能力。
二、課程設計環境要求
1、硬件配置:586以上電腦
2、操作系統:WINDOWS 98/XP/2000等
3、軟件需求:MASM 6.15
三、課程設計基本要求
要求通過查閱與設計課題相關的文獻資料,自學與其相關內容,掌握MASM 6.15集成開發環境的使用。根據題目要求,自由分組,自選一個題目完成,根據各小組每個學生的出勤情況、負責部分完成情況、最后答辯情況及報告撰寫是否規范,形成個人成績。具體要求如下:
1、在整個設計期間,無違紀現象(遲到、早退、逃課),態度認真;
2、整體架構正確合理、流程圖清晰無誤;
3、設計盡可能完成題目所要求的功能;
4、程序代碼清晰,便于閱讀;
5、報告書寫規范;
6、提供可運行的課程設計系統,并參加上機面試答辯;
7、在課程設計結束時,上交實習報告和程序清單。
四、課程設計內容
1、計算比賽成績。編制一個程序,要求完成以下功能:(1)9名評委,每個評委給分范圍為0~10(整數);
(2)9名評委給分中,去掉一個最高分和一個最低分,剩余7名評委的平均分
即為參賽者的得分(精確到小數點后1位);
(3)并將得分輸出顯示。
2、成績評定。編制一個程序,要求完成以下功能:(1)以十進制形式從鍵盤隨機輸入成績(不多于50個);
(2)顯示成績評定的等級(90-100為優,80-90為良,70-80為中,60-70為及格,60分以下為不及格);
(3)統計出各個等級的人數并以十進制形式顯示輸出;(4)當輸入Q時,退出程序。
3、成績排序。編制一個程序,要求完成以下功能:
(1)以十進制形式從鍵盤隨機輸入成績(不多于50個),并用逗號或空格分隔各學生成績;
(2)對該班的成績進行遞減排序,并以十進制形式顯示排序結果并用逗號或空格分隔;
(3)計算全班的平均分并以十進制形式顯示輸出;(4)當輸入Q時,退出程序。
4、代碼轉換程序設計。編制一個程序,要求完成以下功能:
完成一個字母或數制之間的轉化,主程序分別具有6種可選擇的子功能,按相應的字符可分別進入相應的子功能并在屏幕上顯示結果,按“Q”鍵退出。6種可選擇的子功能分別為:
(1)實現小寫字母向大寫字母的轉換;(2)實現大寫字母向小寫字母的轉換;(3)實現大寫字母與小寫字母的互換;(4)實現二進制數向十六進制數的轉換;(5)實現十六進制數向二進制數的轉換;(6)實現十六進制數向十進制數的轉換。
5、信息檢索。編制一個程序,要求完成以下功能:
(1)完成一個信息檢索系統,在數據區,有9個不同的信息,編號為0~8,每個信息包括50個字符;
(2)從鍵盤輸入0~8之間的一個編號,然后在屏幕上顯示相應編號的信息內容;(3)當輸入Q時,退出程序。、字符統計。編制一個程序,要求完成以下功能:(1)從鍵盤輸入一個字符串(串長不大于100);(2)以十進制輸出字符串中非字母字符的個數;
(3)輸出原字符串;
(4)找出字符串中ASCII 碼值最大的字符,在字符串中用紅色顯示;(5)字符串的輸入和結果的輸出都要有必要的提示,且提示獨占一行。
7、奇偶數判斷。編制一個程序,要求完成以下功能:(1)從鍵盤輸入兩個四位十六進制數;(2)將這兩個數以二進制形式輸出;
(3)找出這兩個數中的偶數,若有則以十進制輸出,若無,輸出“NO”;(4)計算這兩個數的平方和,并以十進制形式輸出;
(5)數據的輸入和結果的輸出都要有必要的提示,且提示獨占一行。
8、十進制數字串處理。編制一個程序,要求完成以下功能:(1)從鍵盤輸入一個以回車結束的十進制數字串(不超過20 個)。(2)按 ASCII 碼值降序顯示這個數字串中最大和最小的兩個數字。(3)以十進制形式顯示數字串中所有數字的和。
(4)以十進制形式顯示數字串中最大數與最小數的乘積。(5)對數字串進行處理,使每個字符在字符串中只出現一次。
(6)數據的輸入和結果的輸出都要有必要的提示,且提示獨占一行。
五、課程設計報告
課程設計報告主要包含以下內容:
1、課程設計的題目,本設計所實現的功能簡述;
2、主要的設計思想簡述;
3、主要程序的框圖;
4、源程序代碼(要求在關鍵的位置注釋,從而增加程序的可讀性);
5、程序調試結果及分析;
6、課程設計的總結,主要包括以下內容:(1)課程設計中所遇到的主要問題和解決方法。(2)創新和得意之處。
(3)課程設計中存在的不足,需要進一步改進的設想。(4)課程設計的感想和心得體會。
7、參考文獻(不少于5篇)。
六、課程設計時間、地點及輔導教師
1、時間:2014-2015學年第1學期第19周
2、班級:計算機科學與技術1241、1242
3、地點:計算機學院機房
4、輔導教師:王雪瑞
前4個題目,每組不超過兩個人;第5個題目一人,6、7、8三個題目每組不超過3人。